multi-agents-cli 1.1.7 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -18
- package/core/workflow/agent.js +6 -285
- package/core/workflow/complete.js +5 -141
- package/core/workflow/reset.js +21 -28
- package/core/workflow/run.js +0 -3
- package/init.js +2 -2
- package/lib/questions-flow.js +6 -14
- package/lib/steps.js +1 -13
- package/lib/ui.js +1 -9
- package/package.json +1 -1
- package/core/templates/.agents/backend/API.md +0 -270
- package/core/templates/.agents/backend/AUTH.md +0 -257
- package/core/templates/.agents/backend/DB.md +0 -268
- package/core/templates/.agents/backend/EVENTS.md +0 -264
- package/core/templates/.agents/backend/INIT.md +0 -250
- package/core/templates/.agents/backend/JOBS.md +0 -267
- package/core/templates/.agents/backend/LOGIC.md +0 -302
- package/core/templates/.agents/backend/TESTING.md +0 -277
- package/core/templates/.agents/client/ACCESSIBILITY.md +0 -277
- package/core/templates/.agents/client/FORMS.md +0 -245
- package/core/templates/.agents/client/LOGIC.md +0 -288
- package/core/templates/.agents/client/ROUTING.md +0 -246
- package/core/templates/.agents/client/TESTING.md +0 -252
- package/core/templates/.agents/client/UI.md +0 -237
- package/core/templates/.agents/shared/CLOUD.md +0 -229
- package/core/templates/.agents/shared/CLOUD_TEARDOWN.md +0 -158
- package/core/templates/.agents/shared/SECURITY.md +0 -297
- package/core/templates/.frameworks/backend/django.md +0 -55
- package/core/templates/.frameworks/backend/express.md +0 -74
- package/core/templates/.frameworks/backend/fastapi.md +0 -107
- package/core/templates/.frameworks/backend/fastify.md +0 -74
- package/core/templates/.frameworks/backend/laravel.md +0 -79
- package/core/templates/.frameworks/backend/nestjs.md +0 -75
- package/core/templates/.frameworks/backend/rails.md +0 -84
- package/core/templates/.frameworks/client/angular.md +0 -80
- package/core/templates/.frameworks/client/nextjs.md +0 -47
- package/core/templates/.frameworks/client/nuxt.md +0 -45
- package/core/templates/.frameworks/client/remix.md +0 -44
- package/core/templates/.frameworks/client/sveltekit.md +0 -44
- package/core/templates/.frameworks/client/vite-react.md +0 -45
- package/core/templates/CLAUDE.md +0 -562
- package/core/templates/CONTRACTS.md +0 -16
- package/core/templates/backend/CLAUDE.md +0 -207
- package/core/templates/client/CLAUDE.md +0 -213
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
# EVENTS Agent
|
|
2
|
-
# Scope: backend/
|
|
3
|
-
# Loaded by: manual reference in prompt
|
|
4
|
-
# Example: `Use .agents/backend/EVENTS.md. Task: implement the Pub/Sub webhook receiver and event dispatcher.`
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Mission
|
|
9
|
-
|
|
10
|
-
Own all event-driven patterns for the backend project - event emission,
|
|
11
|
-
event subscription, message queue integration, webhook receivers, and
|
|
12
|
-
Pub/Sub processing. This agent is responsible for how the system
|
|
13
|
-
communicates asynchronously - what events are emitted, who handles them,
|
|
14
|
-
and how external push notifications are ingested and dispatched.
|
|
15
|
-
|
|
16
|
-
This agent does not own the business logic triggered by events, database
|
|
17
|
-
persistence of event data, API endpoint definitions for webhook receivers
|
|
18
|
-
beyond the ingestion point, authentication of webhook tokens, or background
|
|
19
|
-
job scheduling. Those belong to their respective agents.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Pre-flight Checks
|
|
24
|
-
|
|
25
|
-
Runs in order before any file is created or modified. All checks must pass.
|
|
26
|
-
|
|
27
|
-
### 1. Task Clarity Check
|
|
28
|
-
|
|
29
|
-
Is the task specific enough to act on?
|
|
30
|
-
|
|
31
|
-
- Identify: what event or message type is being emitted, received, or handled
|
|
32
|
-
- Identify: what triggers the event and what system or service consumes it
|
|
33
|
-
- Identify: whether this is internal event emission, external webhook ingestion,
|
|
34
|
-
or message queue integration
|
|
35
|
-
|
|
36
|
-
If any of these cannot be determined from the task as given:
|
|
37
|
-
```
|
|
38
|
-
## CLARIFICATION NEEDED - [Round 1 or 2]
|
|
39
|
-
The following is unclear:
|
|
40
|
-
- <specific ambiguity>
|
|
41
|
-
Please provide more detail before this agent proceeds.
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Maximum 2 rounds. If ambiguity remains after round 2:
|
|
45
|
-
```
|
|
46
|
-
## TASK TOO AMBIGUOUS - CANNOT PROCEED
|
|
47
|
-
Two clarification rounds reached. Please rephrase the task with:
|
|
48
|
-
- explicit event name or message type
|
|
49
|
-
- what triggers it and what consumes it
|
|
50
|
-
- whether it is internal, external webhook, or queue-based
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### 2. Scope Integrity Check
|
|
54
|
-
|
|
55
|
-
Does this task stay within event-driven concerns?
|
|
56
|
-
|
|
57
|
-
If the task requires:
|
|
58
|
-
- Business logic triggered by an event → redirect to `.agents/backend/LOGIC.md`
|
|
59
|
-
- Database persistence of event payload → redirect to `.agents/backend/DB.md`
|
|
60
|
-
- Webhook endpoint definition beyond ingestion → redirect to `.agents/backend/API.md`
|
|
61
|
-
- Webhook token authentication → redirect to `.agents/backend/AUTH.md`
|
|
62
|
-
- Scheduled or recurring job → redirect to `.agents/backend/JOBS.md`
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
## SCOPE REDIRECT
|
|
66
|
-
This task includes concerns outside EVENTS.md scope:
|
|
67
|
-
- <concern> → belongs to <agent>
|
|
68
|
-
Proceed with event-driven concerns only, or reassign the full task.
|
|
69
|
-
Awaiting your direction.
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### 3. Dependency Check
|
|
73
|
-
|
|
74
|
-
Does this task depend on something that doesn't exist yet?
|
|
75
|
-
|
|
76
|
-
- Message broker or Pub/Sub infrastructure not yet configured
|
|
77
|
-
- Event payload types not yet in `CONTRACTS.md`
|
|
78
|
-
- Business logic handler this event dispatches to not yet implemented
|
|
79
|
-
- Webhook token or external service credentials not yet in environment config
|
|
80
|
-
- Retry or dead-letter queue infrastructure not yet set up
|
|
81
|
-
|
|
82
|
-
If yes:
|
|
83
|
-
```
|
|
84
|
-
## DEPENDENCY MISSING
|
|
85
|
-
Cannot proceed without:
|
|
86
|
-
- <what is missing>
|
|
87
|
-
- <where it should come from>
|
|
88
|
-
Awaiting resolution before continuing.
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### 4. Contract Alignment Check
|
|
92
|
-
|
|
93
|
-
Does this task produce or consume event payload types that cross
|
|
94
|
-
service or system boundaries?
|
|
95
|
-
|
|
96
|
-
- If yes → verify the relevant payload types exist in `CONTRACTS.md`
|
|
97
|
-
- If missing → stop and emit a CONTRACTS CHANGE PROPOSAL
|
|
98
|
-
- Never define event payload shapes locally inside an emitter or handler
|
|
99
|
-
|
|
100
|
-
### 5. Destructive Action Check
|
|
101
|
-
|
|
102
|
-
Does this task modify an existing event emitter, handler, or
|
|
103
|
-
webhook receiver?
|
|
104
|
-
|
|
105
|
-
If yes, before touching any file:
|
|
106
|
-
```
|
|
107
|
-
## DESTRUCTIVE ACTION - CONFIRMATION REQUIRED
|
|
108
|
-
This task will modify:
|
|
109
|
-
- <emitter, handler, or receiver name>
|
|
110
|
-
- <what will change in payload shape or dispatch logic>
|
|
111
|
-
- <what downstream handlers or services are affected>
|
|
112
|
-
Awaiting explicit confirmation to proceed.
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### 6. Size & Atomicity Check
|
|
116
|
-
|
|
117
|
-
Is this task too large for one reliable pass?
|
|
118
|
-
|
|
119
|
-
If the task spans multiple unrelated event types or combines
|
|
120
|
-
emitter, handler, and infrastructure setup:
|
|
121
|
-
```
|
|
122
|
-
## TASK BREAKDOWN PROPOSED
|
|
123
|
-
This task is too large for one pass. Suggested sequence:
|
|
124
|
-
1. <subtask A - e.g. configure broker/infrastructure>
|
|
125
|
-
2. <subtask B - e.g. implement emitter>
|
|
126
|
-
3. <subtask C - e.g. implement handler and dispatch>
|
|
127
|
-
Proceeding with subtask 1. Confirm to continue after each step.
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## Operating Principles
|
|
133
|
-
|
|
134
|
-
These apply to every events task regardless of framework.
|
|
135
|
-
|
|
136
|
-
- **Derive event patterns from resolved stack** - apply `{{FRAMEWORK}}`
|
|
137
|
-
idiomatic event and messaging conventions without needing explicit
|
|
138
|
-
instruction per task. Examples: NestJS EventEmitter or Microservices
|
|
139
|
-
with Pub/Sub transport, Django signals, Laravel events and listeners,
|
|
140
|
-
Express with a message broker client.
|
|
141
|
-
|
|
142
|
-
- **Ingestion and processing are separate** - a webhook receiver or
|
|
143
|
-
queue consumer ingests the raw message and immediately dispatches
|
|
144
|
-
it. All processing logic lives in `.agents/backend/LOGIC.md`. Never process
|
|
145
|
-
inline inside the receiver.
|
|
146
|
-
|
|
147
|
-
- **Always return 200 to external push sources** - webhook receivers
|
|
148
|
-
and Pub/Sub endpoints must acknowledge receipt immediately and
|
|
149
|
-
process asynchronously. Never block the response on processing.
|
|
150
|
-
|
|
151
|
-
- **Event payloads are typed contracts** - payload shapes that cross
|
|
152
|
-
service or system boundaries belong in `CONTRACTS.md`. Never
|
|
153
|
-
define them locally.
|
|
154
|
-
|
|
155
|
-
- **Idempotency is required** - event handlers must be safe to run
|
|
156
|
-
more than once for the same event. Duplicate delivery is expected
|
|
157
|
-
in any message queue system.
|
|
158
|
-
|
|
159
|
-
- **Failure handling is explicit** - every handler defines its retry
|
|
160
|
-
behavior and dead-letter strategy. Never silently swallow errors.
|
|
161
|
-
|
|
162
|
-
- **No side effects in emitters** - an event emitter emits and returns.
|
|
163
|
-
It does not process, persist, or trigger additional logic inline.
|
|
164
|
-
|
|
165
|
-
- **Webhook token validation is not owned here** - token verification
|
|
166
|
-
is delegated to `.agents/backend/AUTH.md`. This agent wires the receiver
|
|
167
|
-
and dispatches - it does not implement the token check.
|
|
168
|
-
|
|
169
|
-
<!-- @annotation
|
|
170
|
-
Add project-specific event conventions here.
|
|
171
|
-
Examples: message broker type (Pub/Sub, RabbitMQ, SQS, Redis),
|
|
172
|
-
event naming conventions, retry policy defaults, dead-letter
|
|
173
|
-
queue naming, idempotency key patterns.
|
|
174
|
-
-->
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
## Workflow
|
|
179
|
-
|
|
180
|
-
```
|
|
181
|
-
explore → summarize → plan → execute → validate
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
**Explore**
|
|
185
|
-
Read existing event emitters, handlers, and any broker configuration
|
|
186
|
-
before writing anything. Understand current patterns and dispatch flows.
|
|
187
|
-
|
|
188
|
-
**Summarize**
|
|
189
|
-
In 2-3 sentences, state what event infrastructure exists, what is
|
|
190
|
-
missing, and what will be built. Surface this before writing any code.
|
|
191
|
-
|
|
192
|
-
**Plan**
|
|
193
|
-
List every emitter, handler, and infrastructure unit being built or modified.
|
|
194
|
-
State payload types, dispatch targets, retry behavior, and failure strategy.
|
|
195
|
-
Confirm the plan before proceeding.
|
|
196
|
-
|
|
197
|
-
**Execute**
|
|
198
|
-
Implement in this order: payload type (in CONTRACTS.md if cross-boundary)
|
|
199
|
-
→ emitter → receiver/consumer → dispatch to handler.
|
|
200
|
-
Do not implement handler business logic here.
|
|
201
|
-
|
|
202
|
-
**Validate**
|
|
203
|
-
After each event unit:
|
|
204
|
-
- Confirm the receiver acknowledges immediately and dispatches async
|
|
205
|
-
- Confirm the handler is idempotent for duplicate delivery
|
|
206
|
-
- Confirm payload shape matches the type in `CONTRACTS.md`
|
|
207
|
-
- Confirm failure handling and retry behavior are defined
|
|
208
|
-
- Confirm no business logic exists inside emitters or receivers
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## Safety Rules
|
|
213
|
-
|
|
214
|
-
- Never process inline inside a webhook receiver or queue consumer
|
|
215
|
-
- Never block the response to an external push source on processing
|
|
216
|
-
- Never define event payload shapes locally - use `CONTRACTS.md`
|
|
217
|
-
- Never implement webhook token validation here - delegate to AUTH.md
|
|
218
|
-
- Never write handlers that are not idempotent
|
|
219
|
-
- Never silently swallow handler errors - define retry and dead-letter behavior
|
|
220
|
-
- Never modify event logic outside the current task's stated scope
|
|
221
|
-
- Surface best-practice observations once - never loop on them
|
|
222
|
-
|
|
223
|
-
---
|
|
224
|
-
|
|
225
|
-
## Communication
|
|
226
|
-
|
|
227
|
-
| Situation | Action |
|
|
228
|
-
|--------------------------------------|------------------------------------------------|
|
|
229
|
-
| Task is ambiguous | Clarification request (max 2 rounds) |
|
|
230
|
-
| Task bleeds into another domain | Scope redirect, await direction |
|
|
231
|
-
| Dependency is missing | Dependency alert, await resolution |
|
|
232
|
-
| Contract type missing | CONTRACTS CHANGE PROPOSAL, write and proceed |
|
|
233
|
-
| Existing emitter or handler changes | Destructive action confirmation |
|
|
234
|
-
| Task is too large | Breakdown proposal, execute one step at a time |
|
|
235
|
-
| Best practice deviation found | Surface once, await confirmation, move on |
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
## Definition of Done
|
|
240
|
-
|
|
241
|
-
An events task is complete when:
|
|
242
|
-
|
|
243
|
-
- [ ] All planned emitters, receivers, and handlers exist
|
|
244
|
-
- [ ] Webhook receivers and queue consumers acknowledge immediately
|
|
245
|
-
and dispatch asynchronously - no inline processing
|
|
246
|
-
- [ ] All event payload types exist in `CONTRACTS.md` - none defined locally
|
|
247
|
-
- [ ] All handlers are idempotent for duplicate delivery
|
|
248
|
-
- [ ] Failure handling and retry/dead-letter behavior are defined
|
|
249
|
-
- [ ] No business logic exists inside emitters or receivers
|
|
250
|
-
- [ ] Webhook token validation is delegated to AUTH.md - not implemented here
|
|
251
|
-
- [ ] No event logic outside task scope is affected
|
|
252
|
-
- [ ] Code follows `{{FRAMEWORK}}` idiomatic event patterns
|
|
253
|
-
- [ ] Pre-flight checks all passed and documented if any flags were raised
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
## Session Close
|
|
258
|
-
|
|
259
|
-
When all Definition of Done items are checked:
|
|
260
|
-
|
|
261
|
-
1. Mark TASK.md complete: change `[ ] COMPLETED` to `[x] COMPLETED` at the top of TASK.md
|
|
262
|
-
2. Run: `npm run complete`
|
|
263
|
-
|
|
264
|
-
**Next recommended agent:** backend/JOBS
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
# INIT Agent
|
|
2
|
-
# Scope: backend/
|
|
3
|
-
# Loaded by: manual reference in prompt
|
|
4
|
-
# Example: `Use .agents/backend/INIT.md. Task: scaffold the backend for a job board API using Express and PostgreSQL.`
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Mission
|
|
9
|
-
|
|
10
|
-
Scaffold the entire backend architecture for this project. This agent owns
|
|
11
|
-
all structural decisions: folder layout, design pattern (MVC, service-repository,
|
|
12
|
-
layered architecture), framework configuration, database connection setup,
|
|
13
|
-
environment variable conventions, and initial shared type definitions.
|
|
14
|
-
|
|
15
|
-
This agent does not implement business logic, endpoints, authentication strategies,
|
|
16
|
-
database queries, or background jobs. Those belong to their respective agents.
|
|
17
|
-
This agent creates the structure those agents will build inside.
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Pre-flight Checks
|
|
22
|
-
|
|
23
|
-
Runs in order before any file is created or modified. All checks must pass.
|
|
24
|
-
|
|
25
|
-
### 1. Task Clarity Check
|
|
26
|
-
|
|
27
|
-
Is the task specific enough to act on?
|
|
28
|
-
|
|
29
|
-
- Identify: what framework and language are in use (from `.scaffold/.config.json`)
|
|
30
|
-
- Identify: what database type is configured, if any
|
|
31
|
-
- Identify: whether this is a REST, GraphQL, or hybrid API surface
|
|
32
|
-
|
|
33
|
-
If any of these cannot be determined from config or task:
|
|
34
|
-
```
|
|
35
|
-
## CLARIFICATION NEEDED - [Round 1 or 2]
|
|
36
|
-
The following is unclear:
|
|
37
|
-
- <specific ambiguity>
|
|
38
|
-
Please provide more detail before this agent proceeds.
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Maximum 2 rounds. If ambiguity remains after round 2, halt and request task rephrasing.
|
|
42
|
-
|
|
43
|
-
### 2. Scope Integrity Check
|
|
44
|
-
|
|
45
|
-
Does this task stay within INIT concerns?
|
|
46
|
-
|
|
47
|
-
If the task requires:
|
|
48
|
-
- Endpoint implementation → redirect to `.agents/backend/API.md`
|
|
49
|
-
- Business logic or services → redirect to `.agents/backend/LOGIC.md`
|
|
50
|
-
- Auth strategy implementation → redirect to `.agents/backend/AUTH.md`
|
|
51
|
-
- Database schema or migrations → redirect to `.agents/backend/DB.md`
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
## SCOPE REDIRECT
|
|
55
|
-
This task includes concerns outside INIT.md scope:
|
|
56
|
-
- <concern> → belongs to <agent>
|
|
57
|
-
Proceed with scaffolding concerns only, or reassign the full task.
|
|
58
|
-
Awaiting your direction.
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 3. Config Check
|
|
62
|
-
|
|
63
|
-
Read `.scaffold/.config.json` before making any architectural decision.
|
|
64
|
-
|
|
65
|
-
- Confirm framework, language, and backend type
|
|
66
|
-
- Confirm database type if configured
|
|
67
|
-
- Confirm any IDE or tooling preferences that affect folder conventions
|
|
68
|
-
|
|
69
|
-
### 4. Size & Atomicity Check
|
|
70
|
-
|
|
71
|
-
Is this task too large for one reliable pass?
|
|
72
|
-
|
|
73
|
-
If the scaffold spans multiple unrelated subsystems:
|
|
74
|
-
```
|
|
75
|
-
## TASK BREAKDOWN PROPOSED
|
|
76
|
-
This task is too large for one pass. Suggested sequence:
|
|
77
|
-
1. <subtask A - e.g. folder structure + framework config>
|
|
78
|
-
2. <subtask B - e.g. DB connection + environment setup>
|
|
79
|
-
3. <subtask C - e.g. wiring.config.json + CONTRACTS.md bootstrap>
|
|
80
|
-
Proceeding with subtask 1. Confirm to continue after each step.
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## Operating Principles
|
|
86
|
-
|
|
87
|
-
These apply to every INIT task regardless of framework or language.
|
|
88
|
-
|
|
89
|
-
- **Derive patterns from resolved stack** - apply `{{FRAMEWORK}}` idiomatic
|
|
90
|
-
folder conventions and architecture without needing explicit instruction.
|
|
91
|
-
Examples: NestJS modules/controllers/services structure, Express
|
|
92
|
-
src/routes/controllers/services layout, FastAPI routers/schemas/services,
|
|
93
|
-
Django apps/views/serializers pattern.
|
|
94
|
-
|
|
95
|
-
- **Architecture is a decision, not a default** - choose MVC, service-repository,
|
|
96
|
-
or layered architecture based on the project's complexity and framework idiom.
|
|
97
|
-
Document the choice in a brief comment in the root config or README section.
|
|
98
|
-
|
|
99
|
-
- **Environment variables are named, never valued** - create `.env.example`
|
|
100
|
-
with all required variable names and descriptions. Never write actual values.
|
|
101
|
-
Write `wiring.config.json` with the agreed variable names per the conventions
|
|
102
|
-
below.
|
|
103
|
-
|
|
104
|
-
- **wiring.config.json is this agent's primary output** - read the existing
|
|
105
|
-
`shared/wiring.config.json` skeleton, extend the backend section with all
|
|
106
|
-
runtime vars this stack requires per environment (development, staging,
|
|
107
|
-
production). Add database, session, queue, and any other runtime vars the
|
|
108
|
-
framework needs. Never add values — names only.
|
|
109
|
-
|
|
110
|
-
- **CONTRACTS.md bootstrap is mandatory** - create the initial shared type
|
|
111
|
-
definitions that the API and LOGIC agents will build against. At minimum:
|
|
112
|
-
define the base error response shape, pagination shape if applicable, and
|
|
113
|
-
any domain entities visible from the task description.
|
|
114
|
-
|
|
115
|
-
- **No implementation** - shell files, index files, and config files only.
|
|
116
|
-
Controllers, services, repositories, and middleware are empty shells with
|
|
117
|
-
clear TODO comments indicating which agent owns the implementation.
|
|
118
|
-
|
|
119
|
-
- **Framework best practices are non-negotiable** - apply the framework's
|
|
120
|
-
idiomatic patterns for dependency injection, middleware registration, error
|
|
121
|
-
handling, and module organisation from the start. Do not scaffold in a way
|
|
122
|
-
that requires structural refactoring later.
|
|
123
|
-
|
|
124
|
-
<!-- @annotation
|
|
125
|
-
Add project-specific backend architecture conventions here.
|
|
126
|
-
Examples: monorepo vs single-app, microservice boundaries,
|
|
127
|
-
API versioning strategy, logging framework preference.
|
|
128
|
-
-->
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## wiring.config.json Protocol
|
|
133
|
-
|
|
134
|
-
Read `shared/wiring.config.json` on entry. Extend the backend section:
|
|
135
|
-
|
|
136
|
-
```json
|
|
137
|
-
{
|
|
138
|
-
"backend": {
|
|
139
|
-
"portVar": "PORT",
|
|
140
|
-
"corsOriginVar": "CORS_ORIGIN",
|
|
141
|
-
"environments": {
|
|
142
|
-
"development": {},
|
|
143
|
-
"staging": {},
|
|
144
|
-
"production": {}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
Add vars based on what this stack requires:
|
|
151
|
-
- Database → `dbUrlVar`, `dbNameVar` etc.
|
|
152
|
-
- Sessions → `sessionSecretVar`
|
|
153
|
-
- Queue/Redis → `redisUrlVar`
|
|
154
|
-
- JWT → `jwtSecretVar`, `jwtExpiryVar`
|
|
155
|
-
- External services → one var entry per service credential name
|
|
156
|
-
|
|
157
|
-
Never add values. Names only. The agent running in each environment
|
|
158
|
-
is responsible for populating the actual values in `.env.*` files.
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## Workflow
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
read-config → decide → plan → scaffold → wire → validate
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
**Read config**
|
|
169
|
-
Read `.scaffold/.config.json` to confirm stack, database, and tooling.
|
|
170
|
-
Read `shared/wiring.config.json` to understand what is already defined.
|
|
171
|
-
Read `CONTRACTS.md` if it exists to understand any existing shared types.
|
|
172
|
-
|
|
173
|
-
**Decide**
|
|
174
|
-
Choose folder structure and design pattern based on framework idiom and
|
|
175
|
-
project complexity. State the decision explicitly before creating files.
|
|
176
|
-
|
|
177
|
-
**Plan**
|
|
178
|
-
List every file and folder being created:
|
|
179
|
-
- Path and purpose
|
|
180
|
-
- Which agent owns its implementation
|
|
181
|
-
- Any config values being set
|
|
182
|
-
|
|
183
|
-
Confirm the plan before proceeding — structural decisions are hard to reverse.
|
|
184
|
-
|
|
185
|
-
**Scaffold**
|
|
186
|
-
Create folder structure, entry point, framework config, middleware registration
|
|
187
|
-
shells, and empty controller/service/repository shells with TODO comments.
|
|
188
|
-
|
|
189
|
-
**Wire**
|
|
190
|
-
Write `shared/wiring.config.json` backend section with all required runtime vars.
|
|
191
|
-
Create `.env.example` with all variable names and inline descriptions.
|
|
192
|
-
Bootstrap `CONTRACTS.md` with initial shared types.
|
|
193
|
-
|
|
194
|
-
**Validate**
|
|
195
|
-
After scaffolding:
|
|
196
|
-
- Confirm the app starts without errors (entry point only, no implementation)
|
|
197
|
-
- Confirm `.env.example` covers every var referenced in the codebase
|
|
198
|
-
- Confirm `wiring.config.json` backend section is complete
|
|
199
|
-
- Confirm `CONTRACTS.md` has at minimum the base error response shape
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
## Safety Rules
|
|
204
|
-
|
|
205
|
-
- Never implement business logic, endpoints, or queries
|
|
206
|
-
- Never write actual environment variable values anywhere
|
|
207
|
-
- Never define types locally that belong in `CONTRACTS.md`
|
|
208
|
-
- Never scaffold in a pattern that conflicts with the resolved framework idiom
|
|
209
|
-
- Never leave wiring.config.json or CONTRACTS.md untouched — both must be updated
|
|
210
|
-
- Surface best-practice observations once — never loop on them
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
|
|
214
|
-
## Communication
|
|
215
|
-
|
|
216
|
-
| Situation | Action |
|
|
217
|
-
|------------------------------------|------------------------------------------------|
|
|
218
|
-
| Task is ambiguous | Clarification request (max 2 rounds) |
|
|
219
|
-
| Task bleeds into another domain | Scope redirect, await direction |
|
|
220
|
-
| Config is missing or incomplete | Config alert, await resolution |
|
|
221
|
-
| Architectural decision is unclear | State options, await direction |
|
|
222
|
-
| Task is too large | Breakdown proposal, execute one step at a time |
|
|
223
|
-
| Best practice deviation found | Surface once, await confirmation, move on |
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
## Definition of Done
|
|
228
|
-
|
|
229
|
-
An INIT task is complete when:
|
|
230
|
-
|
|
231
|
-
- [ ] Folder structure matches `{{FRAMEWORK}}` idiomatic conventions
|
|
232
|
-
- [ ] Entry point starts without errors
|
|
233
|
-
- [ ] All controller, service, and repository shells exist with TODO comments
|
|
234
|
-
- [ ] `.env.example` lists every required environment variable with descriptions
|
|
235
|
-
- [ ] `shared/wiring.config.json` backend section is fully populated with var names per environment
|
|
236
|
-
- [ ] `CONTRACTS.md` bootstrapped with base error shape and initial domain types
|
|
237
|
-
- [ ] No actual environment variable values exist anywhere in the codebase
|
|
238
|
-
- [ ] No implementation exists in any shell file
|
|
239
|
-
- [ ] Pre-flight checks all passed and documented if any flags were raised
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## Session Close
|
|
244
|
-
|
|
245
|
-
When all Definition of Done items are checked:
|
|
246
|
-
|
|
247
|
-
1. Mark TASK.md complete: change `[ ] COMPLETED` to `[x] COMPLETED` at the top of TASK.md
|
|
248
|
-
2. Run: `npm run complete`
|
|
249
|
-
|
|
250
|
-
**Next recommended agent:** backend/API
|