guild-agents 1.4.0 → 2.0.0
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 +69 -68
- package/bin/guild.js +4 -85
- package/package.json +2 -2
- package/src/commands/doctor.js +11 -33
- package/src/commands/init.js +1 -1
- package/src/templates/agents/advisor.md +0 -1
- package/src/templates/agents/developer.md +2 -2
- package/src/templates/agents/qa.md +1 -1
- package/src/templates/agents/tech-lead.md +2 -2
- package/src/templates/skills/build-feature/SKILL.md +59 -117
- package/src/templates/skills/build-feature/evals/evals.json +3 -4
- package/src/templates/skills/council/SKILL.md +6 -16
- package/src/templates/skills/council/evals/evals.json +3 -13
- package/src/templates/skills/create-pr/SKILL.md +2 -5
- package/src/templates/skills/guild-specialize/SKILL.md +2 -9
- package/src/templates/skills/qa-cycle/SKILL.md +0 -7
- package/src/templates/skills/re-specialize/SKILL.md +0 -3
- package/src/templates/skills/session-end/SKILL.md +77 -30
- package/src/templates/skills/session-start/SKILL.md +51 -20
- package/src/utils/eval-runner.js +2 -8
- package/src/utils/generators.js +3 -4
- package/src/utils/skill-parser.js +83 -0
- package/src/utils/trigger-runner.js +1 -1
- package/src/commands/logs.js +0 -63
- package/src/commands/reset-learnings.js +0 -44
- package/src/commands/run.js +0 -105
- package/src/commands/stats.js +0 -147
- package/src/templates/agents/db-migration.md +0 -51
- package/src/templates/agents/learnings-extractor.md +0 -49
- package/src/templates/agents/platform-expert.md +0 -92
- package/src/templates/agents/product-owner.md +0 -52
- package/src/templates/skills/dev-flow/SKILL.md +0 -83
- package/src/templates/skills/dev-flow/evals/evals.json +0 -36
- package/src/templates/skills/dev-flow/evals/triggers.json +0 -16
- package/src/templates/skills/new-feature/SKILL.md +0 -119
- package/src/templates/skills/new-feature/evals/evals.json +0 -41
- package/src/templates/skills/new-feature/evals/triggers.json +0 -16
- package/src/templates/skills/review/SKILL.md +0 -97
- package/src/templates/skills/review/evals/evals.json +0 -43
- package/src/templates/skills/review/evals/triggers.json +0 -16
- package/src/templates/skills/status/SKILL.md +0 -100
- package/src/templates/skills/status/evals/evals.json +0 -40
- package/src/templates/skills/status/evals/triggers.json +0 -16
- package/src/templates/skills/verify/SKILL.md +0 -114
- package/src/templates/skills/verify/evals/triggers.json +0 -16
- package/src/utils/accounting.js +0 -139
- package/src/utils/dispatch-protocol.js +0 -74
- package/src/utils/dispatch.js +0 -172
- package/src/utils/executor.js +0 -183
- package/src/utils/learnings-io.js +0 -76
- package/src/utils/learnings.js +0 -204
- package/src/utils/orchestrator-io.js +0 -356
- package/src/utils/orchestrator.js +0 -590
- package/src/utils/pricing.js +0 -28
- package/src/utils/providers/claude-code.js +0 -43
- package/src/utils/skill-loader.js +0 -83
- package/src/utils/trace.js +0 -400
- package/src/utils/workflow-parser.js +0 -225
|
@@ -11,19 +11,11 @@ workflow:
|
|
|
11
11
|
requires: [feature-description]
|
|
12
12
|
produces: [evaluation-report, verdict]
|
|
13
13
|
model-tier: reasoning
|
|
14
|
-
on-failure: abort
|
|
15
|
-
- id: specify
|
|
16
|
-
role: product-owner
|
|
17
|
-
intent: "Break the feature into concrete tasks with verifiable acceptance criteria. Estimate effort and suggest implementation order."
|
|
18
|
-
requires: [feature-description, evaluation-report]
|
|
19
|
-
produces: [task-list, acceptance-criteria]
|
|
20
|
-
model-tier: reasoning
|
|
21
|
-
condition: step.evaluate.verdict != rejected
|
|
22
14
|
- id: design
|
|
23
15
|
role: tech-lead
|
|
24
|
-
intent: "Define implementation approach: files to modify, patterns to follow, interfaces, and technical risks."
|
|
25
|
-
requires: [
|
|
26
|
-
produces: [technical-plan]
|
|
16
|
+
intent: "Break the feature into concrete tasks with acceptance criteria. Define implementation approach: files to modify, patterns to follow, interfaces, and technical risks."
|
|
17
|
+
requires: [feature-description, evaluation-report]
|
|
18
|
+
produces: [task-list, acceptance-criteria, technical-plan]
|
|
27
19
|
model-tier: reasoning
|
|
28
20
|
- id: implement
|
|
29
21
|
role: developer
|
|
@@ -34,13 +26,11 @@ workflow:
|
|
|
34
26
|
- id: gate-pre-review
|
|
35
27
|
role: system
|
|
36
28
|
intent: "Run project tests and lint. Both must pass before review."
|
|
37
|
-
commands: [npm test, npm run lint]
|
|
38
29
|
gate: true
|
|
39
30
|
produces: [gate-pre-review-result]
|
|
40
|
-
|
|
41
|
-
- id: checkpoint-phase4
|
|
31
|
+
- id: checkpoint
|
|
42
32
|
role: system
|
|
43
|
-
intent: "Create checkpoint commit and write partial pipeline trace
|
|
33
|
+
intent: "Create checkpoint commit and write partial pipeline trace to spec file."
|
|
44
34
|
requires: [implementation, gate-pre-review-result]
|
|
45
35
|
produces: [checkpoint-commit]
|
|
46
36
|
gate: true
|
|
@@ -50,56 +40,29 @@ workflow:
|
|
|
50
40
|
requires: [implementation, gate-pre-review-result]
|
|
51
41
|
produces: [review-report]
|
|
52
42
|
model-tier: reasoning
|
|
53
|
-
retry:
|
|
54
|
-
max: 2
|
|
55
|
-
on: has-blockers
|
|
56
43
|
- id: fix-review-blockers
|
|
57
44
|
role: developer
|
|
58
45
|
intent: "Fix blocker findings from code review. Run tests after fixing."
|
|
59
46
|
requires: [review-report]
|
|
60
47
|
produces: [implementation]
|
|
61
48
|
model-tier: execution
|
|
62
|
-
condition: step.review.has-blockers
|
|
63
|
-
on-failure: goto:review
|
|
64
49
|
- id: qa-phase
|
|
65
|
-
role:
|
|
66
|
-
intent: "
|
|
67
|
-
delegates-to: qa-cycle
|
|
50
|
+
role: qa
|
|
51
|
+
intent: "Validate acceptance criteria, test edge cases, run bugfix cycles if needed."
|
|
68
52
|
requires: [acceptance-criteria, implementation]
|
|
69
53
|
produces: [qa-report]
|
|
70
|
-
|
|
71
|
-
max: 2
|
|
72
|
-
on: has-bugs
|
|
73
|
-
- id: post-qa-review
|
|
74
|
-
role: code-reviewer
|
|
75
|
-
intent: "Review changes introduced during QA bugfix cycles."
|
|
76
|
-
requires: [qa-report, implementation]
|
|
77
|
-
produces: [post-qa-review-report]
|
|
78
|
-
model-tier: reasoning
|
|
79
|
-
condition: step.qa-phase.had-significant-changes
|
|
80
|
-
retry:
|
|
81
|
-
max: 2
|
|
82
|
-
on: has-blockers
|
|
54
|
+
model-tier: execution
|
|
83
55
|
- id: gate-final
|
|
84
56
|
role: system
|
|
85
57
|
intent: "Run project tests and lint as final verification. Both must pass."
|
|
86
|
-
commands: [npm test, npm run lint]
|
|
87
58
|
gate: true
|
|
88
59
|
produces: [final-gate-result]
|
|
89
|
-
on-failure: goto:qa-phase
|
|
90
60
|
- id: completion
|
|
91
61
|
role: system
|
|
92
|
-
intent: "
|
|
62
|
+
intent: "Update SESSION.md. Present summary to user."
|
|
93
63
|
requires: [final-gate-result, review-report, qa-report]
|
|
94
|
-
produces: [
|
|
64
|
+
produces: [session-update]
|
|
95
65
|
gate: true
|
|
96
|
-
- id: extract-learnings
|
|
97
|
-
role: learnings-extractor
|
|
98
|
-
intent: "Extract compound learnings from this pipeline execution."
|
|
99
|
-
requires: [pipeline-trace]
|
|
100
|
-
produces: [updated-learnings]
|
|
101
|
-
model-tier: routine
|
|
102
|
-
blocking: false
|
|
103
66
|
---
|
|
104
67
|
|
|
105
68
|
# Build Feature
|
|
@@ -131,19 +94,18 @@ git worktree remove .claude/worktrees/[branch-name]
|
|
|
131
94
|
|
|
132
95
|
When running a single build-feature, a simple `git checkout -b` is sufficient.
|
|
133
96
|
|
|
134
|
-
##
|
|
97
|
+
## 5-Phase Pipeline
|
|
135
98
|
|
|
136
99
|
### Progress Display
|
|
137
100
|
|
|
138
101
|
At the start of each phase, display a progress indicator to the user before any agent output:
|
|
139
102
|
|
|
140
103
|
```text
|
|
141
|
-
[1/
|
|
142
|
-
[2/
|
|
143
|
-
[3/
|
|
144
|
-
[4/
|
|
145
|
-
[5/
|
|
146
|
-
[6/6] QA (sonnet) — Validating acceptance criteria...
|
|
104
|
+
[1/5] Advisor (opus) — Evaluating feature...
|
|
105
|
+
[2/5] Tech Lead (opus) — Defining spec and technical approach...
|
|
106
|
+
[3/5] Developer (sonnet) — Implementing...
|
|
107
|
+
[4/5] Code Reviewer (opus) — Reviewing changes...
|
|
108
|
+
[5/5] QA (sonnet) — Validating acceptance criteria...
|
|
147
109
|
```
|
|
148
110
|
|
|
149
111
|
Model names are resolved from the step's `model-tier` using the `max` profile: reasoning=opus, execution=sonnet, routine=haiku. System/gate steps do not show a model name.
|
|
@@ -151,15 +113,15 @@ Model names are resolved from the step's `model-tier` using the `max` profile: r
|
|
|
151
113
|
When a phase loops (review-fix or QA-review cycles), show the iteration:
|
|
152
114
|
|
|
153
115
|
```text
|
|
154
|
-
[5
|
|
155
|
-
[
|
|
116
|
+
[4/5 · round 2] Code Reviewer (opus) — Re-reviewing after fixes...
|
|
117
|
+
[3/5 · round 2] Developer (sonnet) — Fixing review blockers...
|
|
156
118
|
```
|
|
157
119
|
|
|
158
120
|
This indicator MUST be displayed before spawning the agent for that phase.
|
|
159
121
|
|
|
160
122
|
### Phase 1 — Evaluation (Advisor)
|
|
161
123
|
|
|
162
|
-
**Progress:** `[1/
|
|
124
|
+
**Progress:** `[1/5] Advisor (opus) — Evaluating feature...`
|
|
163
125
|
**Agent:** Reads `.claude/agents/advisor.md` via Task tool with `model: "opus"`
|
|
164
126
|
**Input:** The feature description provided by the user
|
|
165
127
|
**Process:**
|
|
@@ -172,39 +134,26 @@ This indicator MUST be displayed before spawning the agent for that phase.
|
|
|
172
134
|
**Trace data:** Verdict (Approved/Rejected/Approved with conditions), risks identified, conditions if any
|
|
173
135
|
**Exit condition:** If the Advisor rejects the feature, the pipeline stops here. Inform the user of the reason and suggest adjustments if any.
|
|
174
136
|
|
|
175
|
-
### Phase 2 — Specification (
|
|
176
|
-
|
|
177
|
-
**Progress:** `[2/6] Product Owner (opus) — Defining spec...`
|
|
178
|
-
**Agent:** Reads `.claude/agents/product-owner.md` via Task tool with `model: "opus"`
|
|
179
|
-
**Input:** The feature approved by the Advisor + their observations
|
|
180
|
-
**Process:**
|
|
137
|
+
### Phase 2 — Specification & Technical Approach (Tech Lead)
|
|
181
138
|
|
|
182
|
-
|
|
183
|
-
2. Defines verifiable acceptance criteria for each task
|
|
184
|
-
3. Estimates effort and suggests implementation order
|
|
185
|
-
|
|
186
|
-
**Output:** Task list with acceptance criteria, estimation, and order
|
|
187
|
-
**Trace data:** Tasks defined count, acceptance criteria count, estimated effort
|
|
188
|
-
|
|
189
|
-
### Phase 3 — Technical Approach (Tech Lead)
|
|
190
|
-
|
|
191
|
-
**Progress:** `[3/6] Tech Lead (opus) — Defining technical approach...`
|
|
139
|
+
**Progress:** `[2/5] Tech Lead (opus) — Defining spec and technical approach...`
|
|
192
140
|
**Agent:** Reads `.claude/agents/tech-lead.md` via Task tool with `model: "opus"`
|
|
193
|
-
**Input:**
|
|
141
|
+
**Input:** The feature approved by the Advisor + their observations
|
|
194
142
|
**Process:**
|
|
195
143
|
|
|
196
|
-
1. The Tech Lead
|
|
197
|
-
2.
|
|
144
|
+
1. The Tech Lead breaks the feature into concrete tasks with verifiable acceptance criteria
|
|
145
|
+
2. Defines the implementation approach: files to modify, patterns to follow, interfaces
|
|
198
146
|
3. Anticipates technical risks and proposes mitigations
|
|
147
|
+
4. Estimates effort and suggests implementation order
|
|
199
148
|
|
|
200
|
-
**Output:**
|
|
201
|
-
**Trace data:**
|
|
149
|
+
**Output:** Task list with acceptance criteria + technical plan with files, patterns, interfaces, and risks
|
|
150
|
+
**Trace data:** Tasks defined count, acceptance criteria count, key patterns identified, files to modify, technical risks
|
|
202
151
|
|
|
203
|
-
### Phase
|
|
152
|
+
### Phase 3 — Implementation (Developer)
|
|
204
153
|
|
|
205
|
-
**Progress:** `[
|
|
154
|
+
**Progress:** `[3/5] Developer (sonnet) — Implementing...`
|
|
206
155
|
**Agent:** Reads `.claude/agents/developer.md` via Task tool with `model: "sonnet"`
|
|
207
|
-
**Input:** Tech Lead technical plan +
|
|
156
|
+
**Input:** Tech Lead technical plan + acceptance criteria
|
|
208
157
|
**Process:**
|
|
209
158
|
|
|
210
159
|
1. The Developer implements following the technical plan
|
|
@@ -217,7 +166,7 @@ This indicator MUST be displayed before spawning the agent for that phase.
|
|
|
217
166
|
|
|
218
167
|
### Pre-Review Gate (mandatory)
|
|
219
168
|
|
|
220
|
-
Before advancing to Phase
|
|
169
|
+
Before advancing to Phase 4, run automated verification:
|
|
221
170
|
|
|
222
171
|
1. Run the project test commands (e.g., `npm test`) — if it fails, the Developer must fix before advancing
|
|
223
172
|
2. Run the project lint commands (e.g., `npm run lint`) — if it fails, the Developer must fix before advancing
|
|
@@ -227,9 +176,9 @@ This gate CANNOT be skipped, even if the user requested phase skipping. The spec
|
|
|
227
176
|
|
|
228
177
|
**Trace data:** Tests pass/fail, lint pass/fail
|
|
229
178
|
|
|
230
|
-
### Phase
|
|
179
|
+
### Phase 4 — Review (Code Reviewer)
|
|
231
180
|
|
|
232
|
-
**Progress:** `[5
|
|
181
|
+
**Progress:** `[4/5] Code Reviewer (opus) — Reviewing changes...`
|
|
233
182
|
**Agent:** Reads `.claude/agents/code-reviewer.md` via Task tool with `model: "opus"`
|
|
234
183
|
**Input:** The implemented changes (git diff)
|
|
235
184
|
**Process:**
|
|
@@ -239,13 +188,13 @@ This gate CANNOT be skipped, even if the user requested phase skipping. The spec
|
|
|
239
188
|
|
|
240
189
|
**Output:** Review report with classified findings
|
|
241
190
|
**Trace data:** Blockers count, warnings count, suggestions count, review-fix loops
|
|
242
|
-
**Loop condition:** If there are Blocker findings, return to **Phase
|
|
191
|
+
**Loop condition:** If there are Blocker findings, return to **Phase 3** for the Developer to fix them. Maximum 2 review-fix iterations.
|
|
243
192
|
|
|
244
|
-
### Phase
|
|
193
|
+
### Phase 5 — QA (delegates to /qa-cycle)
|
|
245
194
|
|
|
246
|
-
**Progress:** `[
|
|
195
|
+
**Progress:** `[5/5] QA (sonnet) — Validating acceptance criteria...`
|
|
247
196
|
|
|
248
|
-
Runs the `/qa-cycle` skill passing the
|
|
197
|
+
Runs the `/qa-cycle` skill passing the acceptance criteria as context. The qa-cycle handles:
|
|
249
198
|
|
|
250
199
|
1. Running project tests and lint
|
|
251
200
|
2. Validating acceptance criteria
|
|
@@ -253,7 +202,7 @@ Runs the `/qa-cycle` skill passing the PO acceptance criteria as context. The qa
|
|
|
253
202
|
4. Bugfix cycle if issues arise (maximum 3 cycles)
|
|
254
203
|
|
|
255
204
|
**Trace data:** Acceptance criteria verified count, bugs found, QA cycles
|
|
256
|
-
**Additional loop condition:** If the qa-cycle bugfix introduces significant changes, return to **Phase
|
|
205
|
+
**Additional loop condition:** If the qa-cycle bugfix introduces significant changes, return to **Phase 4** (Review) for verification. Maximum 2 review-QA cycles.
|
|
257
206
|
|
|
258
207
|
## Checkpoint Commits
|
|
259
208
|
|
|
@@ -267,11 +216,10 @@ git commit -m "wip: [feature-name] phase N complete — [phase-name]"
|
|
|
267
216
|
Pattern for each phase:
|
|
268
217
|
|
|
269
218
|
- After Phase 1: `wip: [feature] phase 1 — advisor approved`
|
|
270
|
-
- After Phase 2: `wip: [feature] phase 2 —
|
|
271
|
-
- After Phase 3: `wip: [feature] phase 3 —
|
|
272
|
-
- After Phase 4: `wip: [feature] phase 4 —
|
|
273
|
-
- After Phase 5: `wip: [feature] phase 5 —
|
|
274
|
-
- After Phase 6: `wip: [feature] phase 6 — QA passed`
|
|
219
|
+
- After Phase 2: `wip: [feature] phase 2 — spec and tech approach defined`
|
|
220
|
+
- After Phase 3: `wip: [feature] phase 3 — implementation done` -- also write partial trace (phases 1-3) to spec and update status to `implementing`
|
|
221
|
+
- After Phase 4: `wip: [feature] phase 4 — review passed`
|
|
222
|
+
- After Phase 5: `wip: [feature] phase 5 — QA passed`
|
|
275
223
|
|
|
276
224
|
Also update SESSION.md at each phase transition:
|
|
277
225
|
|
|
@@ -325,7 +273,7 @@ Append this section to the spec file:
|
|
|
325
273
|
|
|
326
274
|
pipeline-start: [YYYY-MM-DD]
|
|
327
275
|
pipeline-end: [YYYY-MM-DD]
|
|
328
|
-
phases-completed: [N]/
|
|
276
|
+
phases-completed: [N]/5
|
|
329
277
|
review-fix-loops: [N]
|
|
330
278
|
qa-cycles: [N]
|
|
331
279
|
final-gate: pass | fail
|
|
@@ -335,19 +283,16 @@ final-gate: pass | fail
|
|
|
335
283
|
- **Verdict**: [Approved/Rejected/Approved with conditions]
|
|
336
284
|
- **Risks identified**: [list or "None"]
|
|
337
285
|
|
|
338
|
-
### Phase 2 — Specification
|
|
286
|
+
### Phase 2 — Specification & Technical Approach
|
|
339
287
|
|
|
340
288
|
- **Tasks defined**: [N]
|
|
341
289
|
- **Acceptance criteria**: [N]
|
|
342
|
-
- **Estimated effort**: [summary]
|
|
343
|
-
|
|
344
|
-
### Phase 3 — Technical Approach
|
|
345
|
-
|
|
346
290
|
- **Key patterns**: [list]
|
|
347
291
|
- **Files to modify**: [list]
|
|
348
292
|
- **Technical risks**: [list or "None"]
|
|
293
|
+
- **Estimated effort**: [summary]
|
|
349
294
|
|
|
350
|
-
### Phase
|
|
295
|
+
### Phase 3 — Implementation
|
|
351
296
|
|
|
352
297
|
- **Files created/modified**: [list]
|
|
353
298
|
- **Tests added**: [N]
|
|
@@ -358,14 +303,14 @@ final-gate: pass | fail
|
|
|
358
303
|
- **Tests**: pass | fail
|
|
359
304
|
- **Lint**: pass | fail
|
|
360
305
|
|
|
361
|
-
### Phase
|
|
306
|
+
### Phase 4 — Review
|
|
362
307
|
|
|
363
308
|
- **Blockers**: [N]
|
|
364
309
|
- **Warnings**: [N]
|
|
365
310
|
- **Suggestions**: [N]
|
|
366
311
|
- **Review-fix loops**: [N]
|
|
367
312
|
|
|
368
|
-
### Phase
|
|
313
|
+
### Phase 5 — QA
|
|
369
314
|
|
|
370
315
|
- **Acceptance criteria verified**: [N]/[total]
|
|
371
316
|
- **Bugs found**: [N]
|
|
@@ -380,15 +325,15 @@ final-gate: pass | fail
|
|
|
380
325
|
|
|
381
326
|
### When to write the trace
|
|
382
327
|
|
|
383
|
-
- **Phase
|
|
328
|
+
- **Phase 3 checkpoint:** Write a partial trace covering phases 1-3 to the spec file. Set status to `implementing`. Include the spec file in the checkpoint commit.
|
|
384
329
|
- **Pipeline completion:** Write the complete trace (all phases) to the spec file. Set status to `implemented`. Include the spec file in the final checkpoint commit.
|
|
385
330
|
|
|
386
331
|
## Final Gate (mandatory before Completion)
|
|
387
332
|
|
|
388
333
|
Before declaring the pipeline as complete, run final verification:
|
|
389
334
|
|
|
390
|
-
1. Run project tests — if it fails, return to Phase
|
|
391
|
-
2. Run project lint — if it fails, return to Phase
|
|
335
|
+
1. Run project tests — if it fails, return to Phase 5 (QA/Bugfix)
|
|
336
|
+
2. Run project lint — if it fails, return to Phase 3 (Developer)
|
|
392
337
|
3. Both must pass with exit code 0
|
|
393
338
|
|
|
394
339
|
This gate is the last safety net. It CANNOT be skipped under any circumstances.
|
|
@@ -423,7 +368,7 @@ When spawning agents via the Task tool, use these `subagent_type` values:
|
|
|
423
368
|
|
|
424
369
|
| Guild Agent Role | subagent_type to use |
|
|
425
370
|
| --- | --- |
|
|
426
|
-
| advisor,
|
|
371
|
+
| advisor, tech-lead | `"general-purpose"` |
|
|
427
372
|
| developer, bugfix | `"general-purpose"` |
|
|
428
373
|
| code-reviewer, qa | `"general-purpose"` |
|
|
429
374
|
|
|
@@ -445,22 +390,19 @@ The `model` parameter is resolved from the step's `model-tier`: reasoning→`"op
|
|
|
445
390
|
```text
|
|
446
391
|
User: /build-feature add dark mode toggle to settings page
|
|
447
392
|
|
|
448
|
-
[1/
|
|
393
|
+
[1/5] Advisor (opus) — Evaluating feature...
|
|
449
394
|
Approved. Low risk, aligns with UX roadmap.
|
|
450
395
|
|
|
451
|
-
[2/
|
|
452
|
-
3 tasks defined
|
|
453
|
-
|
|
454
|
-
[3/6] Tech Lead (opus) — Defining technical approach...
|
|
455
|
-
Use CSS variables + context provider pattern.
|
|
396
|
+
[2/5] Tech Lead (opus) — Defining spec and technical approach...
|
|
397
|
+
3 tasks defined. Use CSS variables + context provider pattern.
|
|
456
398
|
|
|
457
|
-
[
|
|
399
|
+
[3/5] Developer (sonnet) — Implementing...
|
|
458
400
|
Implemented ThemeContext, toggle component, CSS vars.
|
|
459
401
|
|
|
460
|
-
[5
|
|
402
|
+
[4/5] Code Reviewer (opus) — Reviewing changes...
|
|
461
403
|
Passed. 1 suggestion (memoize context value).
|
|
462
404
|
|
|
463
|
-
[
|
|
405
|
+
[5/5] QA (sonnet) — Validating acceptance criteria...
|
|
464
406
|
All 3 acceptance criteria verified. 0 bugs.
|
|
465
407
|
|
|
466
408
|
Feature complete. PR ready for merge.
|
|
@@ -468,7 +410,7 @@ Feature complete. PR ready for merge.
|
|
|
468
410
|
|
|
469
411
|
## Notes
|
|
470
412
|
|
|
471
|
-
- If the user wants to skip phases (e.g., "already evaluated, implement directly"), allow skipping to Phase
|
|
413
|
+
- If the user wants to skip phases (e.g., "already evaluated, implement directly"), allow skipping to Phase 3 but warn that validation is lost. Verification gates (pre-Review and final) are NEVER skipped
|
|
472
414
|
- The pipeline is sequential: each phase depends on the output of the previous one
|
|
473
415
|
- Review/QA loops have limits to prevent infinite cycles
|
|
474
416
|
- In v1.x, parallel pipeline execution (multiple build-features via worktrees) is best-effort and depends on the host environment supporting concurrent agents
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
"evals": [
|
|
4
4
|
{
|
|
5
5
|
"id": "bf-has-core-phases",
|
|
6
|
-
"description": "Plan contains evaluate,
|
|
6
|
+
"description": "Plan contains evaluate, design, implement phases",
|
|
7
7
|
"expectations": [
|
|
8
8
|
{ "text": "Has evaluate step", "assertion": "step-exists:evaluate" },
|
|
9
|
-
{ "text": "Has specify step", "assertion": "step-exists:specify" },
|
|
10
9
|
{ "text": "Has design step", "assertion": "step-exists:design" },
|
|
11
10
|
{ "text": "Has implement step", "assertion": "step-exists:implement" }
|
|
12
11
|
]
|
|
@@ -44,9 +43,9 @@
|
|
|
44
43
|
},
|
|
45
44
|
{
|
|
46
45
|
"id": "bf-minimum-steps",
|
|
47
|
-
"description": "Plan has at least
|
|
46
|
+
"description": "Plan has at least 8 steps",
|
|
48
47
|
"expectations": [
|
|
49
|
-
{ "text": "At least
|
|
48
|
+
{ "text": "At least 8 steps", "assertion": "step-count:8" }
|
|
50
49
|
]
|
|
51
50
|
}
|
|
52
51
|
]
|
|
@@ -11,33 +11,24 @@ workflow:
|
|
|
11
11
|
requires: [user-question]
|
|
12
12
|
produces: [council-type, participant-roles]
|
|
13
13
|
gate: true
|
|
14
|
-
- id: workspace-context
|
|
15
|
-
role: system
|
|
16
|
-
intent: "Detect workspace membership. If in a workspace, collect context from sibling repos (CLAUDE.md, PROJECT.md, SESSION.md) and build workspace context block."
|
|
17
|
-
requires: [council-type]
|
|
18
|
-
produces: [workspace-context]
|
|
19
|
-
condition: in-workspace
|
|
20
14
|
- id: agent-1
|
|
21
15
|
role: dynamic
|
|
22
|
-
intent: "Analyze the question from specialized perspective. State position with concrete arguments."
|
|
23
|
-
requires: [user-question, council-type
|
|
16
|
+
intent: "Analyze the question from specialized perspective. State position with concrete arguments. Spawn via Agent tool IN PARALLEL with agent-2 and agent-3."
|
|
17
|
+
requires: [user-question, council-type]
|
|
24
18
|
produces: [perspective-1]
|
|
25
19
|
model-tier: reasoning
|
|
26
|
-
parallel: [agent-2, agent-3]
|
|
27
20
|
- id: agent-2
|
|
28
21
|
role: dynamic
|
|
29
22
|
intent: "Analyze the question from specialized perspective. State position with concrete arguments."
|
|
30
|
-
requires: [user-question, council-type
|
|
23
|
+
requires: [user-question, council-type]
|
|
31
24
|
produces: [perspective-2]
|
|
32
25
|
model-tier: reasoning
|
|
33
|
-
parallel: [agent-1, agent-3]
|
|
34
26
|
- id: agent-3
|
|
35
27
|
role: dynamic
|
|
36
28
|
intent: "Analyze the question from specialized perspective. State position with concrete arguments."
|
|
37
|
-
requires: [user-question, council-type
|
|
29
|
+
requires: [user-question, council-type]
|
|
38
30
|
produces: [perspective-3]
|
|
39
31
|
model-tier: reasoning
|
|
40
|
-
parallel: [agent-1, agent-2]
|
|
41
32
|
- id: synthesize
|
|
42
33
|
role: system
|
|
43
34
|
intent: "Synthesize debate: points of agreement, disagreement, risks. Present options to user."
|
|
@@ -49,7 +40,6 @@ workflow:
|
|
|
49
40
|
intent: "After user decides, write spec document to docs/specs/."
|
|
50
41
|
requires: [synthesis, user-decision]
|
|
51
42
|
produces: [spec-document]
|
|
52
|
-
condition: user-wants-spec
|
|
53
43
|
gate: true
|
|
54
44
|
---
|
|
55
45
|
|
|
@@ -87,13 +77,13 @@ Invokes all 3 agents IN PARALLEL using Task tool:
|
|
|
87
77
|
|
|
88
78
|
### 2. Council Feature-Scope
|
|
89
79
|
|
|
90
|
-
**Participants:** Advisor +
|
|
80
|
+
**Participants:** Advisor + Developer + Tech Lead
|
|
91
81
|
**When it applies:** Defining feature scope, prioritizing functionality, evaluating product proposals
|
|
92
82
|
|
|
93
83
|
Invokes all 3 agents IN PARALLEL using Task tool:
|
|
94
84
|
|
|
95
85
|
- Task 1: Reads `.claude/agents/advisor.md` — domain and strategic vision perspective
|
|
96
|
-
- Task 2: Reads `.claude/agents/
|
|
86
|
+
- Task 2: Reads `.claude/agents/developer.md` — implementability and pragmatism perspective
|
|
97
87
|
- Task 3: Reads `.claude/agents/tech-lead.md` — technical feasibility and effort perspective
|
|
98
88
|
|
|
99
89
|
### 3. Council Tech-Debt
|
|
@@ -2,15 +2,12 @@
|
|
|
2
2
|
"skill": "council",
|
|
3
3
|
"evals": [
|
|
4
4
|
{
|
|
5
|
-
"id": "council-three-
|
|
6
|
-
"description": "Council has 3 agent steps
|
|
5
|
+
"id": "council-three-agents",
|
|
6
|
+
"description": "Council has 3 agent steps",
|
|
7
7
|
"expectations": [
|
|
8
8
|
{ "text": "Agent-1 exists", "assertion": "step-exists:agent-1" },
|
|
9
9
|
{ "text": "Agent-2 exists", "assertion": "step-exists:agent-2" },
|
|
10
|
-
{ "text": "Agent-3 exists", "assertion": "step-exists:agent-3" }
|
|
11
|
-
{ "text": "Agent-1 is parallel", "assertion": "step-parallel:agent-1" },
|
|
12
|
-
{ "text": "Agent-2 is parallel", "assertion": "step-parallel:agent-2" },
|
|
13
|
-
{ "text": "Agent-3 is parallel", "assertion": "step-parallel:agent-3" }
|
|
10
|
+
{ "text": "Agent-3 exists", "assertion": "step-exists:agent-3" }
|
|
14
11
|
]
|
|
15
12
|
},
|
|
16
13
|
{
|
|
@@ -29,13 +26,6 @@
|
|
|
29
26
|
{ "text": "Synthesize step exists", "assertion": "step-exists:synthesize" },
|
|
30
27
|
{ "text": "Synthesize has gate", "assertion": "gate-exists:synthesize" }
|
|
31
28
|
]
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"id": "council-workspace-context",
|
|
35
|
-
"description": "Workspace context step exists with condition",
|
|
36
|
-
"expectations": [
|
|
37
|
-
{ "text": "Workspace-context step exists", "assertion": "step-exists:workspace-context" }
|
|
38
|
-
]
|
|
39
29
|
}
|
|
40
30
|
]
|
|
41
31
|
}
|
|
@@ -8,12 +8,10 @@ workflow:
|
|
|
8
8
|
- id: verify-branch
|
|
9
9
|
role: system
|
|
10
10
|
intent: "Verify not on main/develop, check for uncommitted changes, get commits ahead of main."
|
|
11
|
-
commands: [git branch --show-current, git status, git log main..HEAD --oneline]
|
|
12
11
|
produces: [branch-name, branch-state, commit-list]
|
|
13
12
|
- id: gather-context
|
|
14
13
|
role: system
|
|
15
14
|
intent: "Collect diff stats, run tests and lint for PR description context."
|
|
16
|
-
commands: [git diff main..HEAD --stat, npm test, npm run lint]
|
|
17
15
|
requires: [branch-state]
|
|
18
16
|
produces: [diff-summary, test-result, lint-result]
|
|
19
17
|
- id: generate-description
|
|
@@ -25,7 +23,6 @@ workflow:
|
|
|
25
23
|
- id: create-pr
|
|
26
24
|
role: system
|
|
27
25
|
intent: "Push branch to origin and create PR via gh CLI."
|
|
28
|
-
commands: [git push -u origin, gh pr create]
|
|
29
26
|
requires: [pr-description, pr-title, branch-name]
|
|
30
27
|
produces: [pr-url]
|
|
31
28
|
- id: post-creation
|
|
@@ -102,7 +99,7 @@ Build a structured PR description:
|
|
|
102
99
|
1. Display the PR URL
|
|
103
100
|
2. Suggest next steps:
|
|
104
101
|
- "Request review from a teammate"
|
|
105
|
-
- "Run `/review` for an AI code review"
|
|
102
|
+
- "Run `/code-review` for an AI code review"
|
|
106
103
|
- "Merge when ready with `gh pr merge [number]`"
|
|
107
104
|
|
|
108
105
|
## Example Session
|
|
@@ -121,7 +118,7 @@ https://github.com/org/repo/pull/42
|
|
|
121
118
|
|
|
122
119
|
Next steps:
|
|
123
120
|
- Request review from a teammate
|
|
124
|
-
- Run /review for AI code review
|
|
121
|
+
- Run /code-review for AI code review
|
|
125
122
|
- Merge when ready
|
|
126
123
|
```
|
|
127
124
|
|
|
@@ -8,12 +8,10 @@ workflow:
|
|
|
8
8
|
- id: read-base
|
|
9
9
|
role: system
|
|
10
10
|
intent: "Read CLAUDE.md, PROJECT.md, and SESSION.md for current Guild configuration."
|
|
11
|
-
commands: [cat CLAUDE.md, cat PROJECT.md, cat SESSION.md]
|
|
12
11
|
produces: [claude-md, project-md, session-md]
|
|
13
12
|
- id: explore-project
|
|
14
13
|
role: system
|
|
15
14
|
intent: "Scan project structure, dependency files, configs, CI, and documentation to detect stack and architecture."
|
|
16
|
-
commands: [ls -R src/, cat package.json]
|
|
17
15
|
produces: [detected-stack, detected-architecture, detected-conventions]
|
|
18
16
|
gate: true
|
|
19
17
|
- id: enrich-claude-md
|
|
@@ -37,7 +35,6 @@ workflow:
|
|
|
37
35
|
- id: commit-enrichment
|
|
38
36
|
role: system
|
|
39
37
|
intent: "Commit enriched CLAUDE.md and agent files as an atomic commit."
|
|
40
|
-
commands: [git add CLAUDE.md .claude/agents/*.md, git commit]
|
|
41
38
|
requires: [enriched-claude-md, specialized-agents]
|
|
42
39
|
produces: [enrichment-commit]
|
|
43
40
|
---
|
|
@@ -126,13 +123,10 @@ Invoke the Tech Lead agent using Task tool with `model: "sonnet"` (execution tie
|
|
|
126
123
|
|
|
127
124
|
- **advisor.md**: real project domain, target users
|
|
128
125
|
- **tech-lead.md**: specific stack, detected patterns, architecture decisions
|
|
129
|
-
- **product-owner.md**: existing functionality, visible backlog
|
|
130
126
|
- **developer.md**: code conventions, main framework, file structure
|
|
131
127
|
- **code-reviewer.md**: lint rules, project patterns, anti-patterns to watch
|
|
132
128
|
- **qa.md**: testing framework, commands to run tests, current coverage
|
|
133
129
|
- **bugfix.md**: debugging stack, logs, available tools
|
|
134
|
-
- **db-migration.md**: ORM, migration tool, current schema (if applicable)
|
|
135
|
-
- **platform-expert.md**: Claude Code version, known permission bugs, hook configuration
|
|
136
130
|
|
|
137
131
|
When specializing agents, append a zone at the bottom of each agent file:
|
|
138
132
|
|
|
@@ -168,7 +162,7 @@ Architecture:
|
|
|
168
162
|
Updated agents:
|
|
169
163
|
- [list of agents with their applied specialization]
|
|
170
164
|
|
|
171
|
-
Run /
|
|
165
|
+
Run /session-start to see the full state.
|
|
172
166
|
```
|
|
173
167
|
|
|
174
168
|
### Step 6 — Commit enrichment immediately
|
|
@@ -204,9 +198,8 @@ Tech Lead (sonnet) — Specializing agents...
|
|
|
204
198
|
Agents updated:
|
|
205
199
|
- developer.md: Specialized for Next.js + TypeScript
|
|
206
200
|
- qa.md: Configured for Vitest + Playwright
|
|
207
|
-
- db-migration.md: Configured for Prisma
|
|
208
201
|
|
|
209
|
-
Run /
|
|
202
|
+
Run /session-start to see the full state.
|
|
210
203
|
```
|
|
211
204
|
|
|
212
205
|
## Important Notes
|
|
@@ -8,7 +8,6 @@ workflow:
|
|
|
8
8
|
- id: gate-pre-qa
|
|
9
9
|
role: system
|
|
10
10
|
intent: "Run project tests and lint before QA validation."
|
|
11
|
-
commands: [npm test, npm run lint]
|
|
12
11
|
gate: true
|
|
13
12
|
produces: [test-result, lint-result]
|
|
14
13
|
- id: qa-validate
|
|
@@ -17,21 +16,15 @@ workflow:
|
|
|
17
16
|
requires: [acceptance-criteria, test-result, lint-result]
|
|
18
17
|
produces: [qa-report]
|
|
19
18
|
model-tier: execution
|
|
20
|
-
retry:
|
|
21
|
-
max: 3
|
|
22
|
-
on: has-bugs
|
|
23
19
|
- id: bugfix
|
|
24
20
|
role: bugfix
|
|
25
21
|
intent: "Diagnose and fix bugs reported by QA. Run tests after fixing."
|
|
26
22
|
requires: [qa-report]
|
|
27
23
|
produces: [bugfix-result]
|
|
28
24
|
model-tier: execution
|
|
29
|
-
condition: step.qa-validate.has-bugs
|
|
30
|
-
on-failure: goto:qa-validate
|
|
31
25
|
- id: gate-post-qa
|
|
32
26
|
role: system
|
|
33
27
|
intent: "Run project tests and lint after QA cycle completes."
|
|
34
|
-
commands: [npm test, npm run lint]
|
|
35
28
|
gate: true
|
|
36
29
|
produces: [final-test-result, final-lint-result]
|
|
37
30
|
---
|
|
@@ -8,12 +8,10 @@ workflow:
|
|
|
8
8
|
- id: read-current
|
|
9
9
|
role: system
|
|
10
10
|
intent: "Read current CLAUDE.md and agent files to identify existing zones."
|
|
11
|
-
commands: [cat CLAUDE.md]
|
|
12
11
|
produces: [current-claude-md, current-agents]
|
|
13
12
|
- id: explore-project
|
|
14
13
|
role: system
|
|
15
14
|
intent: "Scan project for current stack, dependencies, architecture, conventions."
|
|
16
|
-
commands: [ls -R src/, cat package.json]
|
|
17
15
|
produces: [detected-stack, detected-architecture, detected-conventions]
|
|
18
16
|
gate: true
|
|
19
17
|
- id: check-zones
|
|
@@ -43,7 +41,6 @@ workflow:
|
|
|
43
41
|
- id: commit
|
|
44
42
|
role: system
|
|
45
43
|
intent: "Commit re-specialized files."
|
|
46
|
-
commands: [git add CLAUDE.md .claude/agents/*.md, git commit -m "chore: re-specialize via guild-re-specialize"]
|
|
47
44
|
requires: [updated-claude-md, updated-agents, confirmation]
|
|
48
45
|
produces: [re-specialize-commit]
|
|
49
46
|
---
|