create-kuckit-app 2.0.2 → 2.1.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 +24 -14
- package/package.json +1 -1
- package/templates/base/.claude/skills/beads/CLAUDE.md +87 -0
- package/templates/base/.claude/skills/beads/README.md +123 -0
- package/templates/base/.claude/skills/beads/SKILL.md +77 -715
- package/templates/base/.claude/skills/beads/adr/0001-bd-prime-as-source-of-truth.md +61 -0
- package/templates/base/.claude/skills/beads/resources/AGENTS.md +62 -0
- package/templates/base/.claude/skills/beads/resources/ASYNC_GATES.md +175 -0
- package/templates/base/.claude/skills/beads/resources/BOUNDARIES.md +520 -0
- package/templates/base/.claude/skills/beads/resources/CHEMISTRY_PATTERNS.md +197 -0
- package/templates/base/.claude/skills/beads/resources/CLI_REFERENCE.md +561 -0
- package/templates/base/.claude/skills/beads/resources/DEPENDENCIES.md +754 -0
- package/templates/base/.claude/skills/beads/resources/INTEGRATION_PATTERNS.md +438 -0
- package/templates/base/.claude/skills/beads/resources/ISSUE_CREATION.md +150 -0
- package/templates/base/.claude/skills/beads/resources/MOLECULES.md +370 -0
- package/templates/base/.claude/skills/beads/resources/PATTERNS.md +363 -0
- package/templates/base/.claude/skills/beads/resources/RESUMABILITY.md +239 -0
- package/templates/base/.claude/skills/beads/resources/STATIC_DATA.md +61 -0
- package/templates/base/.claude/skills/beads/resources/TROUBLESHOOTING.md +537 -0
- package/templates/base/.claude/skills/beads/resources/WORKFLOWS.md +638 -0
- package/templates/base/.claude/skills/beads/resources/WORKTREES.md +95 -0
- package/templates/base/.claude/skills/browser-skill/SKILL.md +72 -0
- package/templates/base/.claude/skills/knowledge/SKILL.md +155 -205
- package/templates/base/.claude/skills/knowledge/reference/doc-mapping.md +49 -0
- package/templates/base/.claude/skills/knowledge/reference/extraction-prompts.md +102 -0
- package/templates/base/.claude/skills/kuckit/SKILL.md +15 -9
- package/templates/base/.claude/skills/kuckit/references/MODULE-DEVELOPMENT.md +142 -0
- package/templates/base/.claude/skills/kuckit/references/PACKAGES.md +22 -17
- package/templates/base/.claude/skills/kuckit/references/PUBLISHING.md +92 -0
- package/templates/base/.claude/skills/module-testing/SKILL.md +1 -1
- package/templates/base/.claude/skills/planning/SKILL.md +26 -1
- package/templates/base/.env.example +1 -1
- package/templates/base/AGENTS.md +155 -418
- package/templates/base/apps/server/src/modules.ts +14 -1
- package/templates/base/apps/web/.env.example +1 -1
- package/templates/base/apps/web/src/routes/$.tsx +0 -1
- package/templates/base/apps/web/src/routes/dashboard.tsx +3 -1
- package/templates/base/docs/ARCHITECTURE.md +689 -0
- package/templates/base/docs/DEPENDENCY-INJECTION.md +871 -0
- package/templates/base/docs/DEPLOYMENT.md +573 -0
- package/templates/base/docs/INDEX.md +135 -0
- package/templates/base/docs/MIGRATION.md +989 -0
- package/templates/base/docs/MODULE_CSS.md +343 -0
- package/templates/base/docs/MODULE_TESTING.md +368 -0
- package/templates/base/docs/MULTI_AGENT_WORKFLOW.md +909 -0
- package/templates/base/docs/TESTING.md +579 -0
- package/templates/base/docs/TROUBLESHOOTING.md +360 -0
- package/templates/base/package.json +2 -0
- package/templates/base/packages/items-module/AGENTS.md +3 -1
- package/templates/base/packages/items-module/src/server/adapters/{item.drizzle.ts → item.repository.ts} +1 -13
- package/templates/base/packages/items-module/src/server/module.ts +2 -1
- package/templates/base/packages/items-module/src/server/schema/item.ts +13 -0
|
@@ -0,0 +1,909 @@
|
|
|
1
|
+
# Comprehensive Multi-Agent Beads Workflow
|
|
2
|
+
|
|
3
|
+
> A complete guide to autonomous multi-agent execution using bd, bv, Agent Mail, and specialized skills.
|
|
4
|
+
|
|
5
|
+
## Master Flow Diagram
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
╔═════════════════════════════════════════════════════════════════════════════════════════╗
|
|
9
|
+
║ ║
|
|
10
|
+
║ COMPREHENSIVE MULTI-AGENT BEADS WORKFLOW ║
|
|
11
|
+
║ ║
|
|
12
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
13
|
+
║ ║
|
|
14
|
+
║ ┌───────────────────────────────────────────────────────────────────────────────────┐ ║
|
|
15
|
+
║ │ PHASE 1: CREATE │ ║
|
|
16
|
+
║ │ Tool: file-beads skill + bd │ ║
|
|
17
|
+
║ ├───────────────────────────────────────────────────────────────────────────────────┤ ║
|
|
18
|
+
║ │ │ ║
|
|
19
|
+
║ │ Plan/Spec ──────► file-beads skill ──────► Raw beads with initial deps │ ║
|
|
20
|
+
║ │ │ ║
|
|
21
|
+
║ │ bd create "Epic: Feature X" -t epic -p 0 │ ║
|
|
22
|
+
║ │ bd create "Task A" -t task --blocks <epic> │ ║
|
|
23
|
+
║ │ bd create "Task B" -t task --blocks <epic> │ ║
|
|
24
|
+
║ │ ... │ ║
|
|
25
|
+
║ │ │ ║
|
|
26
|
+
║ │ Output: .beads/*.md files with dependency structure │ ║
|
|
27
|
+
║ │ │ ║
|
|
28
|
+
║ └───────────────────────────────────────────────────────────────────────────────────┘ ║
|
|
29
|
+
║ │ ║
|
|
30
|
+
║ ▼ ║
|
|
31
|
+
║ ┌───────────────────────────────────────────────────────────────────────────────────┐ ║
|
|
32
|
+
║ │ PHASE 2: REVIEW │ ║
|
|
33
|
+
║ │ Tool: bv + review-beads skill │ ║
|
|
34
|
+
║ ├───────────────────────────────────────────────────────────────────────────────────┤ ║
|
|
35
|
+
║ │ │ ║
|
|
36
|
+
║ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ ║
|
|
37
|
+
║ │ │ bv Analysis (Automated) │ │ ║
|
|
38
|
+
║ │ ├─────────────────────────────────────────────────────────────────────────┤ │ ║
|
|
39
|
+
║ │ │ bv --robot-suggest → Find missing dependencies │ │ ║
|
|
40
|
+
║ │ │ bv --robot-insights → Detect cycles, bottlenecks │ │ ║
|
|
41
|
+
║ │ │ bv --robot-priority → Validate priorities via graph analysis │ │ ║
|
|
42
|
+
║ │ └─────────────────────────────────────────────────────────────────────────┘ │ ║
|
|
43
|
+
║ │ │ │ ║
|
|
44
|
+
║ │ ▼ │ ║
|
|
45
|
+
║ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ ║
|
|
46
|
+
║ │ │ Apply Fixes │ │ ║
|
|
47
|
+
║ │ ├─────────────────────────────────────────────────────────────────────────┤ │ ║
|
|
48
|
+
║ │ │ bd dep add <from> <to> → Add missing deps │ │ ║
|
|
49
|
+
║ │ │ bd dep remove <from> <to> → Break cycles │ │ ║
|
|
50
|
+
║ │ │ bd update <id> --priority X → Adjust priorities │ │ ║
|
|
51
|
+
║ │ └─────────────────────────────────────────────────────────────────────────┘ │ ║
|
|
52
|
+
║ │ │ │ ║
|
|
53
|
+
║ │ ▼ │ ║
|
|
54
|
+
║ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ ║
|
|
55
|
+
║ │ │ Content Review (Human/AI) │ │ ║
|
|
56
|
+
║ │ ├─────────────────────────────────────────────────────────────────────────┤ │ ║
|
|
57
|
+
║ │ │ • Clarity: Titles action-oriented, descriptions clear │ │ ║
|
|
58
|
+
║ │ │ • Completeness: Acceptance criteria defined │ │ ║
|
|
59
|
+
║ │ │ • Scope: Issues appropriately sized │ │ ║
|
|
60
|
+
║ │ └─────────────────────────────────────────────────────────────────────────┘ │ ║
|
|
61
|
+
║ │ │ ║
|
|
62
|
+
║ │ Output: Healthy graph, polished issues ready for execution │ ║
|
|
63
|
+
║ │ │ ║
|
|
64
|
+
║ └───────────────────────────────────────────────────────────────────────────────────┘ ║
|
|
65
|
+
║ │ ║
|
|
66
|
+
║ ▼ ║
|
|
67
|
+
║ ┌───────────────────────────────────────────────────────────────────────────────────┐ ║
|
|
68
|
+
║ │ PHASE 3: PLAN │ ║
|
|
69
|
+
║ │ Tool: bv │ ║
|
|
70
|
+
║ ├───────────────────────────────────────────────────────────────────────────────────┤ ║
|
|
71
|
+
║ │ │ ║
|
|
72
|
+
║ │ bv --robot-plan ─────────────────────────────────────────────────────────────► │ ║
|
|
73
|
+
║ │ │ ║
|
|
74
|
+
║ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ ║
|
|
75
|
+
║ │ │ Track 1 │ │ Track 2 │ │ Track 3 │ │ ║
|
|
76
|
+
║ │ │ ──────── │ │ ──────── │ │ ──────── │ │ ║
|
|
77
|
+
║ │ │ [a → b → c] │ │ [x → y] │ │ [m → n → o] │ │ ║
|
|
78
|
+
║ │ │ │ │ │ │ │ │ ║
|
|
79
|
+
║ │ │ Scope: │ │ Scope: │ │ Scope: │ │ ║
|
|
80
|
+
║ │ │ packages/sdk/**│ │ packages/cli/**│ │ apps/server/** │ │ ║
|
|
81
|
+
║ │ │ │ │ │ │ │ │ ║
|
|
82
|
+
║ │ │ Agent: │ │ Agent: │ │ Agent: │ │ ║
|
|
83
|
+
║ │ │ BlueLake │ │ GreenCastle │ │ RedStone │ │ ║
|
|
84
|
+
║ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ ║
|
|
85
|
+
║ │ │ ║
|
|
86
|
+
║ │ Output: Parallel execution tracks with non-overlapping file scopes │ ║
|
|
87
|
+
║ │ │ ║
|
|
88
|
+
║ └───────────────────────────────────────────────────────────────────────────────────┘ ║
|
|
89
|
+
║ │ ║
|
|
90
|
+
║ ▼ ║
|
|
91
|
+
║ ┌───────────────────────────────────────────────────────────────────────────────────┐ ║
|
|
92
|
+
║ │ PHASE 4: ORCHESTRATE │ ║
|
|
93
|
+
║ │ Tool: orchestrator skill + Agent Mail │ ║
|
|
94
|
+
║ ├───────────────────────────────────────────────────────────────────────────────────┤ ║
|
|
95
|
+
║ │ │ ║
|
|
96
|
+
║ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ ║
|
|
97
|
+
║ │ │ ORCHESTRATOR │ │ ║
|
|
98
|
+
║ │ │ ───────────── │ │ ║
|
|
99
|
+
║ │ │ 1. ensure_project(human_key="<project-path>") │ │ ║
|
|
100
|
+
║ │ │ 2. register_agent(name="Orchestrator", ...) │ │ ║
|
|
101
|
+
║ │ │ 3. send_message(thread_id=<epic>, "Kickoff: Track assignments") │ │ ║
|
|
102
|
+
║ │ │ 4. Task() × 3 → Spawn parallel workers │ │ ║
|
|
103
|
+
║ │ └─────────────────────────────────────────────────────────────────────────┘ │ ║
|
|
104
|
+
║ │ │ │ ║
|
|
105
|
+
║ │ ┌────────────────┼────────────────┐ │ ║
|
|
106
|
+
║ │ ▼ ▼ ▼ │ ║
|
|
107
|
+
║ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ ║
|
|
108
|
+
║ │ │ Task() │ │ Task() │ │ Task() │ │ ║
|
|
109
|
+
║ │ │ BlueLake │ │ GreenCastle│ │ RedStone │ │ ║
|
|
110
|
+
║ │ │ Track 1 │ │ Track 2 │ │ Track 3 │ │ ║
|
|
111
|
+
║ │ └────────────┘ └────────────┘ └────────────┘ │ ║
|
|
112
|
+
║ │ │ ║
|
|
113
|
+
║ └───────────────────────────────────────────────────────────────────────────────────┘ ║
|
|
114
|
+
║ │ ║
|
|
115
|
+
║ ▼ ║
|
|
116
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
117
|
+
║ PHASE 5: EXECUTE (Parallel Workers) ║
|
|
118
|
+
║ Tool: worker skill + All AGENTS.md tools ║
|
|
119
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
120
|
+
║ ║
|
|
121
|
+
║ ┌──────────────────────────────────────────────────────────────────────────────────┐ ║
|
|
122
|
+
║ │ │ ║
|
|
123
|
+
║ │ Each worker executes beads in their track, using this loop: │ ║
|
|
124
|
+
║ │ │ ║
|
|
125
|
+
║ │ ╔════════════════════════════════════════════════════════════════════════════╗ │ ║
|
|
126
|
+
║ │ ║ BEAD EXECUTION LOOP ║ │ ║
|
|
127
|
+
║ │ ║ (Repeat for each bead in track) ║ │ ║
|
|
128
|
+
║ │ ╠════════════════════════════════════════════════════════════════════════════╣ │ ║
|
|
129
|
+
║ │ ║ ║ │ ║
|
|
130
|
+
║ │ ║ ┌────────────────────────────────────────────────────────────────────┐ ║ │ ║
|
|
131
|
+
║ │ ║ │ 1. START BEAD │ ║ │ ║
|
|
132
|
+
║ │ ║ ├────────────────────────────────────────────────────────────────────┤ ║ │ ║
|
|
133
|
+
║ │ ║ │ │ ║ │ ║
|
|
134
|
+
║ │ ║ │ register_agent(name="BlueLake", task="<bead-id>") │ ║ │ ║
|
|
135
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
136
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
137
|
+
║ │ ║ │ summarize_thread(thread_id="track:BlueLake:<epic>") │ ║ │ ║
|
|
138
|
+
║ │ ║ │ ┌──────────────────────────────────────────────────────────┐ │ ║ │ ║
|
|
139
|
+
║ │ ║ │ │ Returns context from previous bead: │ │ ║ │ ║
|
|
140
|
+
║ │ ║ │ │ • What was done │ │ ║ │ ║
|
|
141
|
+
║ │ ║ │ │ • Learnings & gotchas │ │ ║ │ ║
|
|
142
|
+
║ │ ║ │ │ • Recommendations for current bead │ │ ║ │ ║
|
|
143
|
+
║ │ ║ │ └──────────────────────────────────────────────────────────┘ │ ║ │ ║
|
|
144
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
145
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
146
|
+
║ │ ║ │ fetch_inbox(agent_name="BlueLake") │ ║ │ ║
|
|
147
|
+
║ │ ║ │ → Check for messages from orchestrator or other workers │ ║ │ ║
|
|
148
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
149
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
150
|
+
║ │ ║ │ file_reservation_paths(paths=["packages/sdk/**"], │ ║ │ ║
|
|
151
|
+
║ │ ║ │ reason="<bead-id>", exclusive=true) │ ║ │ ║
|
|
152
|
+
║ │ ║ │ → Prevent conflicts with other workers │ ║ │ ║
|
|
153
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
154
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
155
|
+
║ │ ║ │ bd update <bead-id> --status in_progress │ ║ │ ║
|
|
156
|
+
║ │ ║ │ bd show <bead-id> → Read requirements │ ║ │ ║
|
|
157
|
+
║ │ ║ │ │ ║ │ ║
|
|
158
|
+
║ │ ║ └────────────────────────────────────────────────────────────────────┘ ║ │ ║
|
|
159
|
+
║ │ ║ │ ║ │ ║
|
|
160
|
+
║ │ ║ ▼ ║ │ ║
|
|
161
|
+
║ │ ║ ┌────────────────────────────────────────────────────────────────────┐ ║ │ ║
|
|
162
|
+
║ │ ║ │ 2. WORK ON BEAD │ ║ │ ║
|
|
163
|
+
║ │ ║ ├────────────────────────────────────────────────────────────────────┤ ║ │ ║
|
|
164
|
+
║ │ ║ │ │ ║ │ ║
|
|
165
|
+
║ │ ║ │ Tools from AGENTS.md: │ ║ │ ║
|
|
166
|
+
║ │ ║ │ │ ║ │ ║
|
|
167
|
+
║ │ ║ │ ┌──────────────────────────────────────────────────────────────┐ │ ║ │ ║
|
|
168
|
+
║ │ ║ │ │ EXPLORE (gkg MCP) │ │ ║ │ ║
|
|
169
|
+
║ │ ║ │ │ • mcp__gkg__search_codebase_definitions → Find code │ │ ║ │ ║
|
|
170
|
+
║ │ ║ │ │ • mcp__gkg__get_definition → Jump to definition │ │ ║ │ ║
|
|
171
|
+
║ │ ║ │ │ • mcp__gkg__get_references → Find all usages │ │ ║ │ ║
|
|
172
|
+
║ │ ║ │ └──────────────────────────────────────────────────────────────┘ │ ║ │ ║
|
|
173
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
174
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
175
|
+
║ │ ║ │ ┌──────────────────────────────────────────────────────────────┐ │ ║ │ ║
|
|
176
|
+
║ │ ║ │ │ EDIT (morph MCP) │ │ ║ │ ║
|
|
177
|
+
║ │ ║ │ │ • mcp__morph_mcp__edit_file → Fast, accurate edits │ │ ║ │ ║
|
|
178
|
+
║ │ ║ │ │ Uses "// ... existing code ..." placeholders │ │ ║ │ ║
|
|
179
|
+
║ │ ║ │ └──────────────────────────────────────────────────────────────┘ │ ║ │ ║
|
|
180
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
181
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
182
|
+
║ │ ║ │ ┌──────────────────────────────────────────────────────────────┐ │ ║ │ ║
|
|
183
|
+
║ │ ║ │ │ SEARCH (MCP Docker Toolkit) │ │ ║ │ ║
|
|
184
|
+
║ │ ║ │ │ • mcp__MCP_DOCKER__resolve-library-id → Get library ID first │ │ ║ │ ║
|
|
185
|
+
║ │ ║ │ │ • mcp__MCP_DOCKER__get-library-docs → Library documentation │ │ ║ │ ║
|
|
186
|
+
║ │ ║ │ │ • mcp__MCP_DOCKER__web_search_exa → Real-time web search │ │ ║ │ ║
|
|
187
|
+
║ │ ║ │ └──────────────────────────────────────────────────────────────┘ │ ║ │ ║
|
|
188
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
189
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
190
|
+
║ │ ║ │ ┌──────────────────────────────────────────────────────────────┐ │ ║ │ ║
|
|
191
|
+
║ │ ║ │ │ UI (shadcn MCP + frontend-design skill) │ │ ║ │ ║
|
|
192
|
+
║ │ ║ │ │ • mcp__shadcn__search_items_in_registries │ │ ║ │ ║
|
|
193
|
+
║ │ ║ │ │ • mcp__shadcn__get_item_examples_from_registries │ │ ║ │ ║
|
|
194
|
+
║ │ ║ │ └──────────────────────────────────────────────────────────────┘ │ ║ │ ║
|
|
195
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
196
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
197
|
+
║ │ ║ │ Periodically: │ ║ │ ║
|
|
198
|
+
║ │ ║ │ • fetch_inbox() → Check for messages │ ║ │ ║
|
|
199
|
+
║ │ ║ │ • If blocked → send_message(importance="high") to orchestrator │ ║ │ ║
|
|
200
|
+
║ │ ║ │ • If interface changed → notify other workers │ ║ │ ║
|
|
201
|
+
║ │ ║ │ │ ║ │ ║
|
|
202
|
+
║ │ ║ └────────────────────────────────────────────────────────────────────┘ ║ │ ║
|
|
203
|
+
║ │ ║ │ ║ │ ║
|
|
204
|
+
║ │ ║ ▼ ║ │ ║
|
|
205
|
+
║ │ ║ ┌────────────────────────────────────────────────────────────────────┐ ║ │ ║
|
|
206
|
+
║ │ ║ │ 3. COMPLETE BEAD │ ║ │ ║
|
|
207
|
+
║ │ ║ ├────────────────────────────────────────────────────────────────────┤ ║ │ ║
|
|
208
|
+
║ │ ║ │ │ ║ │ ║
|
|
209
|
+
║ │ ║ │ Verify & Close: │ ║ │ ║
|
|
210
|
+
║ │ ║ │ • bun run check-types && bun run build │ ║ │ ║
|
|
211
|
+
║ │ ║ │ • bd close <bead-id> --reason "Summary" │ ║ │ ║
|
|
212
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
213
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
214
|
+
║ │ ║ │ Report to Orchestrator: │ ║ │ ║
|
|
215
|
+
║ │ ║ │ send_message( │ ║ │ ║
|
|
216
|
+
║ │ ║ │ to=["Orchestrator"], │ ║ │ ║
|
|
217
|
+
║ │ ║ │ thread_id="<epic-id>", │ ║ │ ║
|
|
218
|
+
║ │ ║ │ subject="[<bead-id>] COMPLETE", │ ║ │ ║
|
|
219
|
+
║ │ ║ │ body_md="Done: ... Next: <next-bead>" │ ║ │ ║
|
|
220
|
+
║ │ ║ │ ) │ ║ │ ║
|
|
221
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
222
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
223
|
+
║ │ ║ │ Save Context for Next Bead: │ ║ │ ║
|
|
224
|
+
║ │ ║ │ send_message( │ ║ │ ║
|
|
225
|
+
║ │ ║ │ to=["BlueLake"], ◄─────── SELF-ADDRESSED! │ ║ │ ║
|
|
226
|
+
║ │ ║ │ thread_id="track:BlueLake:<epic>", │ ║ │ ║
|
|
227
|
+
║ │ ║ │ body_md=""" │ ║ │ ║
|
|
228
|
+
║ │ ║ │ ## Learnings │ ║ │ ║
|
|
229
|
+
║ │ ║ │ - Pattern discovered: ... │ ║ │ ║
|
|
230
|
+
║ │ ║ │ ## Gotchas │ ║ │ ║
|
|
231
|
+
║ │ ║ │ - Watch out for: ... │ ║ │ ║
|
|
232
|
+
║ │ ║ │ ## For Next Bead │ ║ │ ║
|
|
233
|
+
║ │ ║ │ - Recommendation: ... │ ║ │ ║
|
|
234
|
+
║ │ ║ │ """ │ ║ │ ║
|
|
235
|
+
║ │ ║ │ ) │ ║ │ ║
|
|
236
|
+
║ │ ║ │ │ │ ║ │ ║
|
|
237
|
+
║ │ ║ │ ▼ │ ║ │ ║
|
|
238
|
+
║ │ ║ │ release_file_reservations(agent_name="BlueLake") │ ║ │ ║
|
|
239
|
+
║ │ ║ │ │ ║ │ ║
|
|
240
|
+
║ │ ║ └────────────────────────────────────────────────────────────────────┘ ║ │ ║
|
|
241
|
+
║ │ ║ │ ║ │ ║
|
|
242
|
+
║ │ ║ ▼ ║ │ ║
|
|
243
|
+
║ │ ║ ┌────────────────────────────────────────────────────────────────────┐ ║ │ ║
|
|
244
|
+
║ │ ║ │ 4. NEXT BEAD │ ║ │ ║
|
|
245
|
+
║ │ ║ ├────────────────────────────────────────────────────────────────────┤ ║ │ ║
|
|
246
|
+
║ │ ║ │ │ ║ │ ║
|
|
247
|
+
║ │ ║ │ ┌─────────────────────┐ │ ║ │ ║
|
|
248
|
+
║ │ ║ │ │ More beads in track?│ │ ║ │ ║
|
|
249
|
+
║ │ ║ │ └──────────┬──────────┘ │ ║ │ ║
|
|
250
|
+
║ │ ║ │ YES │ │ NO │ ║ │ ║
|
|
251
|
+
║ │ ║ │ ▼ ▼ │ ║ │ ║
|
|
252
|
+
║ │ ║ │ ┌──────────────┐ ┌──────────────────────┐ │ ║ │ ║
|
|
253
|
+
║ │ ║ │ │ Loop back to │ │ Track Complete! │ │ ║ │ ║
|
|
254
|
+
║ │ ║ │ │ START BEAD │ │ Report to orchestrator│ │ ║ │ ║
|
|
255
|
+
║ │ ║ │ │ with context │ │ Return summary │ │ ║ │ ║
|
|
256
|
+
║ │ ║ │ │ from mail │ └──────────────────────┘ │ ║ │ ║
|
|
257
|
+
║ │ ║ │ └──────────────┘ │ ║ │ ║
|
|
258
|
+
║ │ ║ │ │ ║ │ ║
|
|
259
|
+
║ │ ║ └────────────────────────────────────────────────────────────────────┘ ║ │ ║
|
|
260
|
+
║ │ ║ ║ │ ║
|
|
261
|
+
║ │ ╚════════════════════════════════════════════════════════════════════════════╝ │ ║
|
|
262
|
+
║ │ │ ║
|
|
263
|
+
║ └──────────────────────────────────────────────────────────────────────────────────┘ ║
|
|
264
|
+
║ │ ║
|
|
265
|
+
║ ▼ ║
|
|
266
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
267
|
+
║ PHASE 6: MONITOR & RESOLVE ║
|
|
268
|
+
║ Tool: orchestrator + Agent Mail ║
|
|
269
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
270
|
+
║ ║
|
|
271
|
+
║ ┌───────────────────────────────────────────────────────────────────────────────────┐ ║
|
|
272
|
+
║ │ ORCHESTRATOR (while workers execute) │ ║
|
|
273
|
+
║ ├───────────────────────────────────────────────────────────────────────────────────┤ ║
|
|
274
|
+
║ │ │ ║
|
|
275
|
+
║ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ ║
|
|
276
|
+
║ │ │ Monitor Progress │ │ ║
|
|
277
|
+
║ │ │ ───────────────── │ │ ║
|
|
278
|
+
║ │ │ fetch_inbox(urgent_only=true) → Check for blockers │ │ ║
|
|
279
|
+
║ │ │ search_messages(query="<epic>") → View all updates │ │ ║
|
|
280
|
+
║ │ │ bv --robot-triage --graph-root <epic> → Check completion status │ │ ║
|
|
281
|
+
║ │ └─────────────────────────────────────────────────────────────────────────┘ │ ║
|
|
282
|
+
║ │ │ │ ║
|
|
283
|
+
║ │ ▼ │ ║
|
|
284
|
+
║ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ ║
|
|
285
|
+
║ │ │ Handle Issues │ │ ║
|
|
286
|
+
║ │ │ ───────────── │ │ ║
|
|
287
|
+
║ │ │ If blocker → reply_message() with resolution │ │ ║
|
|
288
|
+
║ │ │ If file conflict → coordinate between workers │ │ ║
|
|
289
|
+
║ │ │ If cross-track dependency → notify waiting worker │ │ ║
|
|
290
|
+
║ │ └─────────────────────────────────────────────────────────────────────────┘ │ ║
|
|
291
|
+
║ │ │ ║
|
|
292
|
+
║ └───────────────────────────────────────────────────────────────────────────────────┘ ║
|
|
293
|
+
║ │ ║
|
|
294
|
+
║ ▼ ║
|
|
295
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
296
|
+
║ PHASE 7: COMPLETE ║
|
|
297
|
+
║ Tool: bd + Agent Mail ║
|
|
298
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
299
|
+
║ ║
|
|
300
|
+
║ ┌───────────────────────────────────────────────────────────────────────────────────┐ ║
|
|
301
|
+
║ │ │ ║
|
|
302
|
+
║ │ When all workers report track complete: │ ║
|
|
303
|
+
║ │ │ ║
|
|
304
|
+
║ │ 1. Verify: bv --robot-triage | jq '.quick_ref.open_count' → Should be 0 │ ║
|
|
305
|
+
║ │ │ ║
|
|
306
|
+
║ │ 2. Announce: │ ║
|
|
307
|
+
║ │ send_message( │ ║
|
|
308
|
+
║ │ to=["BlueLake", "GreenCastle", "RedStone"], │ ║
|
|
309
|
+
║ │ thread_id="<epic-id>", │ ║
|
|
310
|
+
║ │ subject="[<epic-id>] EPIC COMPLETE 🎉", │ ║
|
|
311
|
+
║ │ body_md="Track summaries, deliverables, learnings..." │ ║
|
|
312
|
+
║ │ ) │ ║
|
|
313
|
+
║ │ │ ║
|
|
314
|
+
║ │ 3. Close: bd close <epic-id> --reason "All tracks complete" │ ║
|
|
315
|
+
║ │ │ ║
|
|
316
|
+
║ └───────────────────────────────────────────────────────────────────────────────────┘ ║
|
|
317
|
+
║ ║
|
|
318
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
319
|
+
║ THREAD HIERARCHY ║
|
|
320
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
321
|
+
║ ║
|
|
322
|
+
║ Epic Thread: <epic-id> ║
|
|
323
|
+
║ ├── Kickoff message (orchestrator) ║
|
|
324
|
+
║ ├── [bead-a] COMPLETE (BlueLake) ║
|
|
325
|
+
║ ├── [bead-x] COMPLETE (GreenCastle) ║
|
|
326
|
+
║ ├── [bead-b] BLOCKED (BlueLake) ←→ Resolution (Orchestrator) ║
|
|
327
|
+
║ ├── Interface change notification ║
|
|
328
|
+
║ ├── [Track 1] COMPLETE (BlueLake) ║
|
|
329
|
+
║ ├── [Track 2] COMPLETE (GreenCastle) ║
|
|
330
|
+
║ ├── [Track 3] COMPLETE (RedStone) ║
|
|
331
|
+
║ └── EPIC COMPLETE (Orchestrator) ║
|
|
332
|
+
║ ║
|
|
333
|
+
║ Track Thread: track:BlueLake:<epic> (BlueLake's context) ║
|
|
334
|
+
║ ├── bead-a Complete - Context for bead-b ║
|
|
335
|
+
║ ├── bead-b Complete - Context for bead-c ║
|
|
336
|
+
║ └── bead-c Complete - Track summary ║
|
|
337
|
+
║ ║
|
|
338
|
+
║ Track Thread: track:GreenCastle:<epic> (GreenCastle's context) ║
|
|
339
|
+
║ └── ... ║
|
|
340
|
+
║ ║
|
|
341
|
+
║ Track Thread: track:RedStone:<epic> (RedStone's context) ║
|
|
342
|
+
║ └── ... ║
|
|
343
|
+
║ ║
|
|
344
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
345
|
+
║ TOOL SUMMARY ║
|
|
346
|
+
╠═════════════════════════════════════════════════════════════════════════════════════════╣
|
|
347
|
+
║ ║
|
|
348
|
+
║ ┌──────────────────┬────────────────────────────────────────────────────────────┐ ║
|
|
349
|
+
║ │ Phase │ Tools │ ║
|
|
350
|
+
║ ├──────────────────┼────────────────────────────────────────────────────────────┤ ║
|
|
351
|
+
║ │ CREATE │ file-beads skill, bd create │ ║
|
|
352
|
+
║ │ REVIEW │ bv --robot-suggest/insights/priority, review-beads skill │ ║
|
|
353
|
+
║ │ PLAN │ bv --robot-plan │ ║
|
|
354
|
+
║ │ ORCHESTRATE │ orchestrator skill, Agent Mail, Task() │ ║
|
|
355
|
+
║ │ EXECUTE │ worker skill, gkg, morph, exa, shadcn, Agent Mail │ ║
|
|
356
|
+
║ │ MONITOR │ Agent Mail (fetch_inbox, search_messages), bv --robot-triage│ ║
|
|
357
|
+
║ │ COMPLETE │ bd close, Agent Mail (send_message) │ ║
|
|
358
|
+
║ └──────────────────┴────────────────────────────────────────────────────────────┘ ║
|
|
359
|
+
║ ║
|
|
360
|
+
╚═════════════════════════════════════════════════════════════════════════════════════════╝
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## Architecture Overview
|
|
366
|
+
|
|
367
|
+
```
|
|
368
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
369
|
+
│ ORCHESTRATOR │
|
|
370
|
+
│ (Main Agent) │
|
|
371
|
+
├─────────────────────────────────────────────────────────────────────────────┤
|
|
372
|
+
│ 1. Analyze epic with bv │
|
|
373
|
+
│ 2. Plan parallel tracks │
|
|
374
|
+
│ 3. Spawn worker subagents via Task() │
|
|
375
|
+
│ 4. Monitor progress via Agent Mail │
|
|
376
|
+
│ 5. Handle cross-track blockers │
|
|
377
|
+
│ 6. Announce completion │
|
|
378
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
379
|
+
│
|
|
380
|
+
│ Task() spawns parallel workers
|
|
381
|
+
▼
|
|
382
|
+
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
|
|
383
|
+
│ BlueLake │ │ GreenCastle │ │ RedStone │
|
|
384
|
+
│ Track 1 │ │ Track 2 │ │ Track 3 │
|
|
385
|
+
│ [a → b → c] │ │ [x → y] │ │ [m → n → o] │
|
|
386
|
+
├──────────────────┤ ├──────────────────┤ ├──────────────────┤
|
|
387
|
+
│ For each bead: │ │ For each bead: │ │ For each bead: │
|
|
388
|
+
│ • Read context │ │ • Read context │ │ • Read context │
|
|
389
|
+
│ • Reserve files │ │ • Reserve files │ │ • Reserve files │
|
|
390
|
+
│ • Do work │ │ • Do work │ │ • Do work │
|
|
391
|
+
│ • Report mail │ │ • Report mail │ │ • Report mail │
|
|
392
|
+
│ • Save context │ │ • Save context │ │ • Save context │
|
|
393
|
+
│ • Next bead │ │ • Next bead │ │ • Next bead │
|
|
394
|
+
└──────────────────┘ └──────────────────┘ └──────────────────┘
|
|
395
|
+
│ │ │
|
|
396
|
+
└───────────────────┼───────────────────┘
|
|
397
|
+
▼
|
|
398
|
+
┌─────────────────────┐
|
|
399
|
+
│ Agent Mail │
|
|
400
|
+
│ ───────────────── │
|
|
401
|
+
│ Epic Thread: │
|
|
402
|
+
│ • Progress reports │
|
|
403
|
+
│ • Bead completions │
|
|
404
|
+
│ • Blockers │
|
|
405
|
+
│ │
|
|
406
|
+
│ Track Threads: │
|
|
407
|
+
│ • Bead context │
|
|
408
|
+
│ • Learnings │
|
|
409
|
+
└─────────────────────┘
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## Phase 1: CREATE
|
|
415
|
+
|
|
416
|
+
**Tools:** `file-beads` skill + `bd`
|
|
417
|
+
|
|
418
|
+
### Purpose
|
|
419
|
+
|
|
420
|
+
Transform a plan or specification into structured beads with initial dependencies.
|
|
421
|
+
|
|
422
|
+
### Commands
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
# Create epic
|
|
426
|
+
bd create "Epic: Feature X" -t epic -p 0
|
|
427
|
+
|
|
428
|
+
# Create child tasks
|
|
429
|
+
bd create "Task A" -t task --blocks <epic-id>
|
|
430
|
+
bd create "Task B" -t task --blocks <epic-id>
|
|
431
|
+
bd create "Task C" -t task --deps <task-a-id>
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
### Alternative: Batch Creation
|
|
435
|
+
|
|
436
|
+
Use the `file-beads` skill for batch creation from a plan document.
|
|
437
|
+
|
|
438
|
+
### Output
|
|
439
|
+
|
|
440
|
+
- `.beads/*.md` files with dependency structure
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## Phase 2: REVIEW
|
|
445
|
+
|
|
446
|
+
**Tools:** `bv` + `review-beads` skill
|
|
447
|
+
|
|
448
|
+
### Purpose
|
|
449
|
+
|
|
450
|
+
Validate and polish the dependency graph before execution.
|
|
451
|
+
|
|
452
|
+
### Step 1: Automated Analysis (bv)
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
# Find missing dependencies
|
|
456
|
+
bv --robot-suggest 2>/dev/null | jq '.suggestions.suggestions'
|
|
457
|
+
|
|
458
|
+
# Detect cycles and bottlenecks
|
|
459
|
+
bv --robot-insights 2>/dev/null | jq '{Cycles, Bottlenecks}'
|
|
460
|
+
|
|
461
|
+
# Validate priorities
|
|
462
|
+
bv --robot-priority 2>/dev/null | jq '.recommendations[:10]'
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Step 2: Apply Fixes
|
|
466
|
+
|
|
467
|
+
```bash
|
|
468
|
+
# Add missing dependency
|
|
469
|
+
bd dep add <from-id> <to-id>
|
|
470
|
+
|
|
471
|
+
# Remove to break cycle
|
|
472
|
+
bd dep remove <from-id> <to-id>
|
|
473
|
+
|
|
474
|
+
# Adjust priority
|
|
475
|
+
bd update <id> --priority <new-priority>
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
### Step 3: Content Review
|
|
479
|
+
|
|
480
|
+
For each issue, verify:
|
|
481
|
+
|
|
482
|
+
- [ ] Title is action-oriented and specific
|
|
483
|
+
- [ ] Description is clear and unambiguous
|
|
484
|
+
- [ ] Acceptance criteria are defined and testable
|
|
485
|
+
- [ ] Scope is appropriately sized
|
|
486
|
+
|
|
487
|
+
### Output
|
|
488
|
+
|
|
489
|
+
- Healthy graph (no cycles)
|
|
490
|
+
- Polished issues ready for execution
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
## Phase 3: PLAN
|
|
495
|
+
|
|
496
|
+
**Tools:** `bv`
|
|
497
|
+
|
|
498
|
+
### Purpose
|
|
499
|
+
|
|
500
|
+
Identify parallel execution tracks with non-overlapping file scopes.
|
|
501
|
+
|
|
502
|
+
### Command
|
|
503
|
+
|
|
504
|
+
```bash
|
|
505
|
+
bv --robot-plan 2>/dev/null | jq '.plan.tracks'
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### Output Example
|
|
509
|
+
|
|
510
|
+
| Track | Beads | File Scope | Agent |
|
|
511
|
+
| ----- | --------- | ----------------- | ----------- |
|
|
512
|
+
| 1 | a → b → c | `packages/sdk/**` | BlueLake |
|
|
513
|
+
| 2 | x → y | `packages/cli/**` | GreenCastle |
|
|
514
|
+
| 3 | m → n → o | `apps/server/**` | RedStone |
|
|
515
|
+
|
|
516
|
+
### Rules
|
|
517
|
+
|
|
518
|
+
- File scopes must NOT overlap
|
|
519
|
+
- Each track gets a unique agent name (adjective+noun)
|
|
520
|
+
- Beads within a track execute sequentially
|
|
521
|
+
- Tracks execute in parallel
|
|
522
|
+
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
## Phase 4: ORCHESTRATE
|
|
526
|
+
|
|
527
|
+
**Tools:** `orchestrator` skill + Agent Mail + `Task()`
|
|
528
|
+
|
|
529
|
+
### Purpose
|
|
530
|
+
|
|
531
|
+
Initialize project, spawn parallel workers, send kickoff message.
|
|
532
|
+
|
|
533
|
+
### Step 1: Initialize
|
|
534
|
+
|
|
535
|
+
```python
|
|
536
|
+
# Ensure project exists
|
|
537
|
+
ensure_project(human_key="/path/to/project")
|
|
538
|
+
|
|
539
|
+
# Register orchestrator
|
|
540
|
+
register_agent(
|
|
541
|
+
project_key="/path/to/project",
|
|
542
|
+
name="Orchestrator",
|
|
543
|
+
program="amp",
|
|
544
|
+
model="claude-sonnet-4",
|
|
545
|
+
task_description="Orchestrator for <epic-id>"
|
|
546
|
+
)
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
### Step 2: Send Kickoff
|
|
550
|
+
|
|
551
|
+
```python
|
|
552
|
+
send_message(
|
|
553
|
+
to=["BlueLake", "GreenCastle", "RedStone"],
|
|
554
|
+
thread_id="<epic-id>",
|
|
555
|
+
subject="[<epic-id>] Work Started - Track Assignments",
|
|
556
|
+
body_md="""
|
|
557
|
+
## Track Assignments
|
|
558
|
+
| Track | Agent | Beads | Scope |
|
|
559
|
+
|-------|-------|-------|-------|
|
|
560
|
+
| 1 | BlueLake | a → b → c | packages/sdk/** |
|
|
561
|
+
| 2 | GreenCastle | x → y | packages/cli/** |
|
|
562
|
+
| 3 | RedStone | m → n → o | apps/server/** |
|
|
563
|
+
|
|
564
|
+
Begin work!
|
|
565
|
+
""",
|
|
566
|
+
importance="high"
|
|
567
|
+
)
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
### Step 3: Spawn Workers (Parallel)
|
|
571
|
+
|
|
572
|
+
```python
|
|
573
|
+
# Spawn all workers in parallel
|
|
574
|
+
Task(
|
|
575
|
+
description="Worker BlueLake: Track 1",
|
|
576
|
+
prompt="""
|
|
577
|
+
You are agent BlueLake working on Track 1 of epic <epic-id>.
|
|
578
|
+
|
|
579
|
+
## Setup
|
|
580
|
+
1. Read /path/to/project/AGENTS.md for tool preferences
|
|
581
|
+
2. Load the worker skill
|
|
582
|
+
|
|
583
|
+
## Your Assignment
|
|
584
|
+
- Beads (in order): <bead-a>, <bead-b>, <bead-c>
|
|
585
|
+
- File scope: packages/sdk/**
|
|
586
|
+
- Epic thread: <epic-id>
|
|
587
|
+
- Track thread: track:BlueLake:<epic-id>
|
|
588
|
+
|
|
589
|
+
## Protocol
|
|
590
|
+
For EACH bead: START → WORK → COMPLETE → NEXT
|
|
591
|
+
See worker skill for detailed steps.
|
|
592
|
+
"""
|
|
593
|
+
)
|
|
594
|
+
|
|
595
|
+
# Repeat for other tracks...
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
## Phase 5: EXECUTE (Workers)
|
|
601
|
+
|
|
602
|
+
**Tools:** `worker` skill + All AGENTS.md tools
|
|
603
|
+
|
|
604
|
+
### Purpose
|
|
605
|
+
|
|
606
|
+
Each worker autonomously executes beads in their track.
|
|
607
|
+
|
|
608
|
+
### Bead Execution Loop
|
|
609
|
+
|
|
610
|
+
For EACH bead in the track:
|
|
611
|
+
|
|
612
|
+
#### 5.1 START BEAD
|
|
613
|
+
|
|
614
|
+
```python
|
|
615
|
+
# 1. Register
|
|
616
|
+
register_agent(name="BlueLake", task_description="<bead-id>")
|
|
617
|
+
|
|
618
|
+
# 2. Read context from previous bead
|
|
619
|
+
summarize_thread(thread_id="track:BlueLake:<epic-id>")
|
|
620
|
+
|
|
621
|
+
# 3. Check inbox
|
|
622
|
+
fetch_inbox(agent_name="BlueLake", include_bodies=True)
|
|
623
|
+
|
|
624
|
+
# 4. Reserve files
|
|
625
|
+
file_reservation_paths(
|
|
626
|
+
paths=["packages/sdk/**"],
|
|
627
|
+
reason="<bead-id>",
|
|
628
|
+
exclusive=True
|
|
629
|
+
)
|
|
630
|
+
|
|
631
|
+
# 5. Claim bead
|
|
632
|
+
# bd update <bead-id> --status in_progress
|
|
633
|
+
# bd show <bead-id>
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
#### 5.2 WORK ON BEAD
|
|
637
|
+
|
|
638
|
+
**Use tools from AGENTS.md:**
|
|
639
|
+
|
|
640
|
+
| Task | Tool |
|
|
641
|
+
| -------------- | ------------------------------------------ |
|
|
642
|
+
| Find code | `mcp__gkg__search_codebase_definitions` |
|
|
643
|
+
| Get definition | `mcp__gkg__get_definition` |
|
|
644
|
+
| Find usages | `mcp__gkg__get_references` |
|
|
645
|
+
| Edit file | `mcp__morph_mcp__edit_file` |
|
|
646
|
+
| Search docs | `mcp__MCP_DOCKER__web_search_exa` |
|
|
647
|
+
| UI components | `mcp__shadcn__*` + `frontend-design` skill |
|
|
648
|
+
|
|
649
|
+
**Periodically:**
|
|
650
|
+
|
|
651
|
+
```python
|
|
652
|
+
# Check for messages
|
|
653
|
+
fetch_inbox(agent_name="BlueLake", since_ts="<start>")
|
|
654
|
+
|
|
655
|
+
# If blocked
|
|
656
|
+
send_message(
|
|
657
|
+
to=["Orchestrator"],
|
|
658
|
+
thread_id="<epic-id>",
|
|
659
|
+
subject="[<bead-id>] BLOCKED: <reason>",
|
|
660
|
+
importance="high"
|
|
661
|
+
)
|
|
662
|
+
|
|
663
|
+
# If interface changed
|
|
664
|
+
send_message(
|
|
665
|
+
to=["GreenCastle", "RedStone"],
|
|
666
|
+
thread_id="<epic-id>",
|
|
667
|
+
subject="[<bead-id>] Interface Change: <what>",
|
|
668
|
+
importance="high"
|
|
669
|
+
)
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
#### 5.3 COMPLETE BEAD
|
|
673
|
+
|
|
674
|
+
```python
|
|
675
|
+
# 1. Verify & close
|
|
676
|
+
# bun run check-types && bun run build
|
|
677
|
+
# bd close <bead-id> --reason "Summary"
|
|
678
|
+
|
|
679
|
+
# 2. Report to orchestrator
|
|
680
|
+
send_message(
|
|
681
|
+
to=["Orchestrator"],
|
|
682
|
+
thread_id="<epic-id>",
|
|
683
|
+
subject="[<bead-id>] COMPLETE",
|
|
684
|
+
body_md="Done: <summary>. Next: <next-bead>"
|
|
685
|
+
)
|
|
686
|
+
|
|
687
|
+
# 3. Save context for next bead (SELF-ADDRESSED!)
|
|
688
|
+
send_message(
|
|
689
|
+
to=["BlueLake"],
|
|
690
|
+
thread_id="track:BlueLake:<epic-id>",
|
|
691
|
+
subject="<bead-id> Complete - Context for Next",
|
|
692
|
+
body_md="""
|
|
693
|
+
## Learnings
|
|
694
|
+
- <patterns discovered>
|
|
695
|
+
|
|
696
|
+
## Gotchas
|
|
697
|
+
- <things to watch out for>
|
|
698
|
+
|
|
699
|
+
## For Next Bead
|
|
700
|
+
- <recommendations>
|
|
701
|
+
"""
|
|
702
|
+
)
|
|
703
|
+
|
|
704
|
+
# 4. Release reservations
|
|
705
|
+
release_file_reservations(agent_name="BlueLake")
|
|
706
|
+
```
|
|
707
|
+
|
|
708
|
+
#### 5.4 NEXT BEAD
|
|
709
|
+
|
|
710
|
+
- If more beads → Loop back to START BEAD
|
|
711
|
+
- If track complete → Report to orchestrator, return summary
|
|
712
|
+
|
|
713
|
+
---
|
|
714
|
+
|
|
715
|
+
## Phase 6: MONITOR & RESOLVE
|
|
716
|
+
|
|
717
|
+
**Tools:** Agent Mail + `bv`
|
|
718
|
+
|
|
719
|
+
### Purpose
|
|
720
|
+
|
|
721
|
+
Orchestrator monitors progress and handles issues.
|
|
722
|
+
|
|
723
|
+
### Commands
|
|
724
|
+
|
|
725
|
+
```python
|
|
726
|
+
# Check for blockers
|
|
727
|
+
fetch_inbox(agent_name="Orchestrator", urgent_only=True)
|
|
728
|
+
|
|
729
|
+
# View all updates
|
|
730
|
+
search_messages(query="<epic-id>")
|
|
731
|
+
|
|
732
|
+
# Check completion status
|
|
733
|
+
# bv --robot-triage --graph-root <epic-id> | jq '.quick_ref'
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
### Handle Issues
|
|
737
|
+
|
|
738
|
+
| Issue | Action |
|
|
739
|
+
| ---------------------- | ------------------------------------ |
|
|
740
|
+
| Worker blocked | `reply_message()` with resolution |
|
|
741
|
+
| File conflict | Coordinate between workers |
|
|
742
|
+
| Cross-track dependency | Notify waiting worker when unblocked |
|
|
743
|
+
|
|
744
|
+
---
|
|
745
|
+
|
|
746
|
+
## Phase 7: COMPLETE
|
|
747
|
+
|
|
748
|
+
**Tools:** `bd` + Agent Mail
|
|
749
|
+
|
|
750
|
+
### Purpose
|
|
751
|
+
|
|
752
|
+
Verify all work done, announce completion, close epic.
|
|
753
|
+
|
|
754
|
+
### Steps
|
|
755
|
+
|
|
756
|
+
```python
|
|
757
|
+
# 1. Verify all done
|
|
758
|
+
# bv --robot-triage --graph-root <epic-id> | jq '.quick_ref.open_count'
|
|
759
|
+
# → Should be 0
|
|
760
|
+
|
|
761
|
+
# 2. Announce completion
|
|
762
|
+
send_message(
|
|
763
|
+
to=["BlueLake", "GreenCastle", "RedStone"],
|
|
764
|
+
thread_id="<epic-id>",
|
|
765
|
+
subject="[<epic-id>] EPIC COMPLETE 🎉",
|
|
766
|
+
body_md="""
|
|
767
|
+
## Epic Complete
|
|
768
|
+
|
|
769
|
+
### Track Summaries
|
|
770
|
+
- Track 1 (BlueLake): <summary>
|
|
771
|
+
- Track 2 (GreenCastle): <summary>
|
|
772
|
+
- Track 3 (RedStone): <summary>
|
|
773
|
+
|
|
774
|
+
### Deliverables
|
|
775
|
+
- <what was built>
|
|
776
|
+
|
|
777
|
+
### Learnings
|
|
778
|
+
- <key insights>
|
|
779
|
+
"""
|
|
780
|
+
)
|
|
781
|
+
|
|
782
|
+
# 3. Close epic
|
|
783
|
+
# bd close <epic-id> --reason "All tracks complete"
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
---
|
|
787
|
+
|
|
788
|
+
## Thread Hierarchy
|
|
789
|
+
|
|
790
|
+
```
|
|
791
|
+
Epic Thread: <epic-id>
|
|
792
|
+
├── Kickoff message (Orchestrator)
|
|
793
|
+
├── [bead-a] COMPLETE (BlueLake)
|
|
794
|
+
├── [bead-x] COMPLETE (GreenCastle)
|
|
795
|
+
├── [bead-b] BLOCKED (BlueLake) ←→ Resolution (Orchestrator)
|
|
796
|
+
├── Interface change notification
|
|
797
|
+
├── [Track 1] COMPLETE (BlueLake)
|
|
798
|
+
├── [Track 2] COMPLETE (GreenCastle)
|
|
799
|
+
├── [Track 3] COMPLETE (RedStone)
|
|
800
|
+
└── EPIC COMPLETE (Orchestrator)
|
|
801
|
+
|
|
802
|
+
Track Thread: track:BlueLake:<epic>
|
|
803
|
+
├── bead-a Complete - Context for bead-b
|
|
804
|
+
├── bead-b Complete - Context for bead-c
|
|
805
|
+
└── bead-c Complete - Track summary
|
|
806
|
+
|
|
807
|
+
Track Thread: track:GreenCastle:<epic>
|
|
808
|
+
└── ...
|
|
809
|
+
|
|
810
|
+
Track Thread: track:RedStone:<epic>
|
|
811
|
+
└── ...
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
---
|
|
815
|
+
|
|
816
|
+
## Tool Summary
|
|
817
|
+
|
|
818
|
+
| Phase | Tools |
|
|
819
|
+
| ----------- | ------------------------------------------------------------ |
|
|
820
|
+
| CREATE | `file-beads` skill, `bd create` |
|
|
821
|
+
| REVIEW | `bv --robot-suggest/insights/priority`, `review-beads` skill |
|
|
822
|
+
| PLAN | `bv --robot-plan` |
|
|
823
|
+
| ORCHESTRATE | `orchestrator` skill, Agent Mail, `Task()` |
|
|
824
|
+
| EXECUTE | `worker` skill, gkg, morph, exa, shadcn, Agent Mail |
|
|
825
|
+
| MONITOR | Agent Mail, `bv --robot-triage` |
|
|
826
|
+
| COMPLETE | `bd close`, Agent Mail |
|
|
827
|
+
|
|
828
|
+
---
|
|
829
|
+
|
|
830
|
+
## Quick Reference Commands
|
|
831
|
+
|
|
832
|
+
```bash
|
|
833
|
+
# What to work on
|
|
834
|
+
bv --robot-next
|
|
835
|
+
|
|
836
|
+
# Get parallel tracks
|
|
837
|
+
bv --robot-plan
|
|
838
|
+
|
|
839
|
+
# Check graph health
|
|
840
|
+
bv --robot-insights | jq '.Cycles'
|
|
841
|
+
|
|
842
|
+
# Get priority recommendations
|
|
843
|
+
bv --robot-priority
|
|
844
|
+
|
|
845
|
+
# Check epic progress
|
|
846
|
+
bv --robot-triage --graph-root <epic-id>
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
---
|
|
850
|
+
|
|
851
|
+
## Skills Reference
|
|
852
|
+
|
|
853
|
+
| Skill | Use When |
|
|
854
|
+
| -------------- | ----------------------------------------------- |
|
|
855
|
+
| `file-beads` | Batch create beads from a plan |
|
|
856
|
+
| `review-beads` | Polish beads with bv analysis + content quality |
|
|
857
|
+
| `orchestrator` | Plan tracks, spawn workers, monitor progress |
|
|
858
|
+
| `worker` | Execute beads with session management |
|
|
859
|
+
| `beads` | General bd/bv reference |
|
|
860
|
+
|
|
861
|
+
---
|
|
862
|
+
|
|
863
|
+
## Context Persistence
|
|
864
|
+
|
|
865
|
+
The key to multi-session execution is **self-addressed messages** in track threads:
|
|
866
|
+
|
|
867
|
+
```python
|
|
868
|
+
# After completing each bead, save context for next bead
|
|
869
|
+
send_message(
|
|
870
|
+
to=["BlueLake"], # ← SELF-ADDRESSED!
|
|
871
|
+
thread_id="track:BlueLake:<epic>",
|
|
872
|
+
body_md="Context for next bead..."
|
|
873
|
+
)
|
|
874
|
+
|
|
875
|
+
# At start of next bead, read previous context
|
|
876
|
+
summarize_thread(thread_id="track:BlueLake:<epic>")
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
This ensures context flows between beads even across session boundaries.
|
|
880
|
+
|
|
881
|
+
---
|
|
882
|
+
|
|
883
|
+
## See Also
|
|
884
|
+
|
|
885
|
+
This document integrates with the following Claude Skills:
|
|
886
|
+
|
|
887
|
+
| Skill | Purpose |
|
|
888
|
+
| --------------------------------------------------------------- | ----------------------------------------------- |
|
|
889
|
+
| [orchestrator](../.claude/skills/orchestrator/SKILL.md) | Plan tracks, spawn workers, monitor progress |
|
|
890
|
+
| [worker](../.claude/skills/worker/SKILL.md) | Execute beads with session management |
|
|
891
|
+
| [planning](../.claude/skills/planning/SKILL.md) | Generate execution plans from features |
|
|
892
|
+
| [file-beads](../.claude/skills/file-beads/SKILL.md) | Batch create beads from a plan |
|
|
893
|
+
| [review-beads](../.claude/skills/review-beads/SKILL.md) | Polish beads with bv analysis + content quality |
|
|
894
|
+
| [beads](../.claude/skills/beads/SKILL.md) | General bd/bv reference |
|
|
895
|
+
| [issue-resolution](../.claude/skills/issue-resolution/SKILL.md) | Systematic bug diagnosis and fixes |
|
|
896
|
+
|
|
897
|
+
### Tool Reference
|
|
898
|
+
|
|
899
|
+
The tools referenced in this document are real MCP tools available in the Amp environment:
|
|
900
|
+
|
|
901
|
+
- **`Task()`** - Amp's Task tool for spawning parallel subagents
|
|
902
|
+
- **`skill()`** - Amp's skill loading function (e.g., `skill("worker")`)
|
|
903
|
+
- **`mcp__gkg__*`** - Graph Knowledge Graph MCP for codebase exploration
|
|
904
|
+
- **`mcp__morph_mcp__*`** - Morph MCP for fast file editing
|
|
905
|
+
- **`mcp__MCP_DOCKER__*`** - Docker Toolkit MCP for web search and docs
|
|
906
|
+
- **`mcp__shadcn__*`** - shadcn MCP for UI components
|
|
907
|
+
- **`mcp__mcp_agent_mail__*`** - Agent Mail MCP for coordination
|
|
908
|
+
|
|
909
|
+
All `bd` and `bv` commands are real CLI tools from the [beads](https://github.com/steveyegge/beads) project.
|