claude-cook 1.10.1
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/LICENSE +21 -0
- package/README.md +607 -0
- package/agents/gsd-codebase-mapper.md +738 -0
- package/agents/gsd-debugger.md +1203 -0
- package/agents/gsd-executor.md +784 -0
- package/agents/gsd-integration-checker.md +423 -0
- package/agents/gsd-phase-researcher.md +641 -0
- package/agents/gsd-plan-checker.md +745 -0
- package/agents/gsd-planner.md +1386 -0
- package/agents/gsd-pm.md +331 -0
- package/agents/gsd-project-researcher.md +865 -0
- package/agents/gsd-research-synthesizer.md +256 -0
- package/agents/gsd-roadmapper.md +605 -0
- package/agents/gsd-verifier.md +778 -0
- package/bin/install.js +1477 -0
- package/commands/gsd/add-phase.md +207 -0
- package/commands/gsd/add-todo.md +193 -0
- package/commands/gsd/audit-milestone.md +277 -0
- package/commands/gsd/check-todos.md +228 -0
- package/commands/gsd/complete-milestone.md +136 -0
- package/commands/gsd/debug.md +169 -0
- package/commands/gsd/discuss-phase.md +86 -0
- package/commands/gsd/execute-phase.md +339 -0
- package/commands/gsd/help.md +545 -0
- package/commands/gsd/insert-phase.md +227 -0
- package/commands/gsd/join-discord.md +18 -0
- package/commands/gsd/list-phase-assumptions.md +50 -0
- package/commands/gsd/map-codebase.md +71 -0
- package/commands/gsd/new-milestone.md +721 -0
- package/commands/gsd/new-project.md +1008 -0
- package/commands/gsd/pause-work.md +134 -0
- package/commands/gsd/plan-milestone-gaps.md +295 -0
- package/commands/gsd/plan-phase.md +525 -0
- package/commands/gsd/pm-check.md +115 -0
- package/commands/gsd/pm-replan.md +102 -0
- package/commands/gsd/pm-start.md +218 -0
- package/commands/gsd/pm-status.md +116 -0
- package/commands/gsd/pm-stop.md +72 -0
- package/commands/gsd/progress.md +415 -0
- package/commands/gsd/quick.md +309 -0
- package/commands/gsd/remove-phase.md +349 -0
- package/commands/gsd/research-phase.md +200 -0
- package/commands/gsd/resume-work.md +40 -0
- package/commands/gsd/set-profile.md +106 -0
- package/commands/gsd/settings.md +151 -0
- package/commands/gsd/update.md +172 -0
- package/commands/gsd/verify-work.md +219 -0
- package/get-shit-done/references/checkpoints.md +1078 -0
- package/get-shit-done/references/continuation-format.md +249 -0
- package/get-shit-done/references/git-integration.md +254 -0
- package/get-shit-done/references/model-profiles.md +73 -0
- package/get-shit-done/references/planning-config.md +189 -0
- package/get-shit-done/references/questioning.md +141 -0
- package/get-shit-done/references/tdd.md +263 -0
- package/get-shit-done/references/ui-brand.md +172 -0
- package/get-shit-done/references/verification-patterns.md +612 -0
- package/get-shit-done/references/vibe-kanban.md +142 -0
- package/get-shit-done/templates/DEBUG.md +159 -0
- package/get-shit-done/templates/UAT.md +247 -0
- package/get-shit-done/templates/codebase/architecture.md +255 -0
- package/get-shit-done/templates/codebase/concerns.md +310 -0
- package/get-shit-done/templates/codebase/conventions.md +307 -0
- package/get-shit-done/templates/codebase/integrations.md +280 -0
- package/get-shit-done/templates/codebase/stack.md +186 -0
- package/get-shit-done/templates/codebase/structure.md +285 -0
- package/get-shit-done/templates/codebase/testing.md +480 -0
- package/get-shit-done/templates/config.json +35 -0
- package/get-shit-done/templates/context.md +283 -0
- package/get-shit-done/templates/continue-here.md +78 -0
- package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
- package/get-shit-done/templates/discovery.md +146 -0
- package/get-shit-done/templates/milestone-archive.md +123 -0
- package/get-shit-done/templates/milestone.md +115 -0
- package/get-shit-done/templates/phase-prompt.md +567 -0
- package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
- package/get-shit-done/templates/pm-config.md +55 -0
- package/get-shit-done/templates/pm-log.md +27 -0
- package/get-shit-done/templates/project.md +184 -0
- package/get-shit-done/templates/requirements.md +231 -0
- package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
- package/get-shit-done/templates/research-project/FEATURES.md +147 -0
- package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
- package/get-shit-done/templates/research-project/STACK.md +120 -0
- package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
- package/get-shit-done/templates/research.md +529 -0
- package/get-shit-done/templates/roadmap.md +202 -0
- package/get-shit-done/templates/state.md +205 -0
- package/get-shit-done/templates/summary.md +246 -0
- package/get-shit-done/templates/ticket-map.md +28 -0
- package/get-shit-done/templates/user-setup.md +311 -0
- package/get-shit-done/templates/verification-report.md +322 -0
- package/get-shit-done/workflows/complete-milestone.md +903 -0
- package/get-shit-done/workflows/diagnose-issues.md +231 -0
- package/get-shit-done/workflows/discovery-phase.md +289 -0
- package/get-shit-done/workflows/discuss-phase.md +433 -0
- package/get-shit-done/workflows/execute-phase.md +671 -0
- package/get-shit-done/workflows/execute-plan.md +1844 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
- package/get-shit-done/workflows/map-codebase.md +322 -0
- package/get-shit-done/workflows/pm-check.md +210 -0
- package/get-shit-done/workflows/pm-dispatch.md +104 -0
- package/get-shit-done/workflows/pm-replan.md +203 -0
- package/get-shit-done/workflows/pm-sync.md +130 -0
- package/get-shit-done/workflows/resume-project.md +307 -0
- package/get-shit-done/workflows/transition.md +556 -0
- package/get-shit-done/workflows/verify-phase.md +628 -0
- package/get-shit-done/workflows/verify-work.md +596 -0
- package/hooks/dist/gsd-check-update.js +61 -0
- package/hooks/dist/gsd-statusline.js +87 -0
- package/package.json +47 -0
- package/scripts/build-hooks.js +42 -0
- package/scripts/pm-loop.sh +155 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# PM Dispatch Workflow — Wave-Aware Worker Launch
|
|
2
|
+
|
|
3
|
+
<purpose>
|
|
4
|
+
Launch external coding agents on Vibe Kanban tickets, respecting wave ordering.
|
|
5
|
+
Only dispatches tickets whose wave dependencies are satisfied.
|
|
6
|
+
|
|
7
|
+
Called by:
|
|
8
|
+
- `/gsd:pm-start` after sync (dispatch wave 1)
|
|
9
|
+
- `/gsd:pm-check` when WAVE_COMPLETE detected (dispatch next wave)
|
|
10
|
+
- `/gsd:pm-dispatch` manual command
|
|
11
|
+
</purpose>
|
|
12
|
+
|
|
13
|
+
<process>
|
|
14
|
+
|
|
15
|
+
<step name="load_context" priority="first">
|
|
16
|
+
|
|
17
|
+
## 1. Load Dispatch Context
|
|
18
|
+
|
|
19
|
+
Read config for executor and repo settings:
|
|
20
|
+
```bash
|
|
21
|
+
cat .planning/config.json # pm.default_executor, pm.repos
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Read TICKET-MAP.md for the target phase:
|
|
25
|
+
```bash
|
|
26
|
+
cat .planning/phases/{phase_dir}/TICKET-MAP.md
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Determine target wave:
|
|
30
|
+
- If wave specified (e.g., `--wave=2`): use that wave
|
|
31
|
+
- If not specified: find the lowest wave number with `todo` tickets where all prior waves are complete
|
|
32
|
+
|
|
33
|
+
</step>
|
|
34
|
+
|
|
35
|
+
<step name="validate_wave">
|
|
36
|
+
|
|
37
|
+
## 2. Validate Wave Dependencies
|
|
38
|
+
|
|
39
|
+
For the target wave N:
|
|
40
|
+
|
|
41
|
+
1. Check all wave N-1 tickets are `done` (if wave > 1)
|
|
42
|
+
2. If any wave N-1 tickets are NOT done:
|
|
43
|
+
- If `inprogress`: "Wave {N-1} still running. Wait for completion."
|
|
44
|
+
- If `todo`: "Wave {N-1} has undispatched tickets. Dispatch those first."
|
|
45
|
+
- If `cancelled`/`failed`: "Wave {N-1} has failed tickets. Replan needed."
|
|
46
|
+
- **Do NOT dispatch wave N.** Exit with status.
|
|
47
|
+
|
|
48
|
+
3. Collect all wave N tickets with status `todo`
|
|
49
|
+
4. If none: "All wave {N} tickets already dispatched." Exit.
|
|
50
|
+
|
|
51
|
+
</step>
|
|
52
|
+
|
|
53
|
+
<step name="dispatch">
|
|
54
|
+
|
|
55
|
+
## 3. Dispatch Workers
|
|
56
|
+
|
|
57
|
+
For each `todo` ticket in the target wave:
|
|
58
|
+
|
|
59
|
+
1. Read executor from config (or per-ticket override if specified in TICKET-MAP notes)
|
|
60
|
+
2. Read repos from config
|
|
61
|
+
3. Call:
|
|
62
|
+
```
|
|
63
|
+
mcp__vibe_kanban__start_workspace_session(
|
|
64
|
+
task_id: ticket_uuid,
|
|
65
|
+
executor: default_executor,
|
|
66
|
+
repos: [{repo_id, base_branch}]
|
|
67
|
+
)
|
|
68
|
+
```
|
|
69
|
+
4. Update TICKET-MAP.md for this ticket:
|
|
70
|
+
- status: inprogress
|
|
71
|
+
- executor: {executor_name}
|
|
72
|
+
- dispatched: {timestamp}
|
|
73
|
+
5. Log dispatch to PM-LOG.md
|
|
74
|
+
|
|
75
|
+
**Error handling:**
|
|
76
|
+
- If `start_workspace_session` fails: log error, skip ticket, continue with others
|
|
77
|
+
- Report failed dispatches at the end
|
|
78
|
+
|
|
79
|
+
</step>
|
|
80
|
+
|
|
81
|
+
<step name="report">
|
|
82
|
+
|
|
83
|
+
## 4. Report Dispatch Summary
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
87
|
+
PM ► DISPATCHING WAVE {N}
|
|
88
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
89
|
+
|
|
90
|
+
Dispatched {X} workers for phase {P}, wave {N}:
|
|
91
|
+
|
|
92
|
+
| Ticket | Plan | Executor | Status |
|
|
93
|
+
| ------ | ---- | -------- | ------ |
|
|
94
|
+
| {id} | 01 | CLAUDE_CODE | launched |
|
|
95
|
+
| {id} | 02 | CLAUDE_CODE | launched |
|
|
96
|
+
|
|
97
|
+
Next: Workers are running. Check progress with /gsd:pm-check
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Update STATE.md Vibe Kanban Status section.
|
|
101
|
+
|
|
102
|
+
</step>
|
|
103
|
+
|
|
104
|
+
</process>
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# PM Replan Workflow — Dynamic Plan Modification
|
|
2
|
+
|
|
3
|
+
<purpose>
|
|
4
|
+
Modify plans and sync changes to Vibe Kanban when things go wrong or requirements change.
|
|
5
|
+
Handles three scopes: targeted fix, revision, and full replan.
|
|
6
|
+
|
|
7
|
+
Triggered by:
|
|
8
|
+
- `/gsd:pm-check` detecting ticket failure (auto-replan)
|
|
9
|
+
- `/gsd:pm-replan` manual command with user feedback
|
|
10
|
+
- `/gsd:pm-check` detecting cascading issues
|
|
11
|
+
</purpose>
|
|
12
|
+
|
|
13
|
+
<process>
|
|
14
|
+
|
|
15
|
+
<step name="gather_context" priority="first">
|
|
16
|
+
|
|
17
|
+
## 1. Gather Replan Context
|
|
18
|
+
|
|
19
|
+
Read current state:
|
|
20
|
+
```bash
|
|
21
|
+
cat .planning/config.json
|
|
22
|
+
cat .planning/STATE.md
|
|
23
|
+
cat .planning/phases/{phase_dir}/TICKET-MAP.md
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Read all current plans:
|
|
27
|
+
```bash
|
|
28
|
+
ls .planning/phases/{phase_dir}/*-PLAN.md
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Read any relevant summaries or verification reports:
|
|
32
|
+
```bash
|
|
33
|
+
ls .planning/phases/{phase_dir}/*-SUMMARY.md 2>/dev/null
|
|
34
|
+
ls .planning/phases/{phase_dir}/*-VERIFICATION.md 2>/dev/null
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Gather trigger-specific context:
|
|
38
|
+
- **Failure trigger:** failed ticket details from `get_task(task_id)`
|
|
39
|
+
- **Feedback trigger:** user feedback text from command arguments
|
|
40
|
+
- **Cascade trigger:** completed ticket output that changes assumptions
|
|
41
|
+
|
|
42
|
+
</step>
|
|
43
|
+
|
|
44
|
+
<step name="classify">
|
|
45
|
+
|
|
46
|
+
## 2. Classify Replan Scope
|
|
47
|
+
|
|
48
|
+
### TARGETED (single ticket failed)
|
|
49
|
+
Conditions:
|
|
50
|
+
- One specific ticket failed/cancelled
|
|
51
|
+
- Other tickets in the wave are unaffected
|
|
52
|
+
- The failure is isolated (not a systemic issue)
|
|
53
|
+
|
|
54
|
+
Action: Create a fix plan for just the failed task.
|
|
55
|
+
|
|
56
|
+
### REVISION (feedback changes approach)
|
|
57
|
+
Conditions:
|
|
58
|
+
- User provided feedback that modifies existing plans
|
|
59
|
+
- Plans exist but need updates
|
|
60
|
+
- Core approach is still valid
|
|
61
|
+
|
|
62
|
+
Action: Revise existing plans with new constraints.
|
|
63
|
+
|
|
64
|
+
### FULL_REPLAN (fundamental change)
|
|
65
|
+
Conditions:
|
|
66
|
+
- User wants to change the overall approach
|
|
67
|
+
- Multiple cascading failures suggest wrong direction
|
|
68
|
+
- New information invalidates the current plan set
|
|
69
|
+
|
|
70
|
+
Action: Cancel all undone tickets, re-plan from phase goal.
|
|
71
|
+
|
|
72
|
+
</step>
|
|
73
|
+
|
|
74
|
+
<step name="targeted_replan">
|
|
75
|
+
|
|
76
|
+
## 3a. Targeted Fix
|
|
77
|
+
|
|
78
|
+
1. Read the failed ticket's original PLAN.md content
|
|
79
|
+
2. Read the failure details from ticket description/notes
|
|
80
|
+
3. Spawn gsd-planner via Task tool:
|
|
81
|
+
- Mode: gap-closure (`--gaps`)
|
|
82
|
+
- Context: failed plan + error details + phase goal
|
|
83
|
+
- Output: one fix PLAN.md
|
|
84
|
+
|
|
85
|
+
4. Spawn gsd-plan-checker to verify the fix plan
|
|
86
|
+
5. If checker rejects: revise (max 3 iterations)
|
|
87
|
+
|
|
88
|
+
6. Sync to Vibe Kanban:
|
|
89
|
+
- `update_task(failed_ticket_id, status="cancelled")`
|
|
90
|
+
- `create_task(project_id, fix_title, fix_plan_content)` → new ticket
|
|
91
|
+
- Record in TICKET-MAP.md
|
|
92
|
+
|
|
93
|
+
7. Dispatch fix ticket if autonomous mode
|
|
94
|
+
|
|
95
|
+
</step>
|
|
96
|
+
|
|
97
|
+
<step name="revision_replan">
|
|
98
|
+
|
|
99
|
+
## 3b. Revision
|
|
100
|
+
|
|
101
|
+
1. Identify which plans are affected by the feedback
|
|
102
|
+
2. Spawn gsd-planner via Task tool:
|
|
103
|
+
- Mode: revision
|
|
104
|
+
- Context: existing plans + user feedback
|
|
105
|
+
- Output: updated PLAN.md files
|
|
106
|
+
|
|
107
|
+
3. Spawn gsd-plan-checker to verify revised plans
|
|
108
|
+
4. If checker rejects: revise (max 3 iterations)
|
|
109
|
+
|
|
110
|
+
5. Sync to Vibe Kanban (via pm-sync workflow):
|
|
111
|
+
- Updated plans → update ticket descriptions
|
|
112
|
+
- New plans → create new tickets
|
|
113
|
+
- Removed plans → cancel tickets
|
|
114
|
+
- Update TICKET-MAP.md
|
|
115
|
+
|
|
116
|
+
6. Dispatch new/updated tickets if appropriate
|
|
117
|
+
|
|
118
|
+
</step>
|
|
119
|
+
|
|
120
|
+
<step name="full_replan">
|
|
121
|
+
|
|
122
|
+
## 3c. Full Replan
|
|
123
|
+
|
|
124
|
+
1. Cancel all undone tickets:
|
|
125
|
+
```
|
|
126
|
+
For each ticket with status in [todo, inprogress]:
|
|
127
|
+
update_task(ticket_id, status="cancelled")
|
|
128
|
+
```
|
|
129
|
+
Note: tickets already `done` are kept — that work is preserved.
|
|
130
|
+
|
|
131
|
+
2. Spawn gsd-planner via Task tool:
|
|
132
|
+
- Mode: standard (fresh planning)
|
|
133
|
+
- Context: phase goal + new requirements/feedback + what's already done
|
|
134
|
+
- Output: new set of PLAN.md files
|
|
135
|
+
|
|
136
|
+
3. Spawn gsd-plan-checker to verify
|
|
137
|
+
4. If checker rejects: revise (max 3 iterations)
|
|
138
|
+
|
|
139
|
+
5. Sync all new plans to Vibe Kanban (via pm-sync workflow)
|
|
140
|
+
6. Dispatch wave 1 of new plan set
|
|
141
|
+
|
|
142
|
+
</step>
|
|
143
|
+
|
|
144
|
+
<step name="record">
|
|
145
|
+
|
|
146
|
+
## 4. Record Replan
|
|
147
|
+
|
|
148
|
+
### In TICKET-MAP.md Replan History:
|
|
149
|
+
```markdown
|
|
150
|
+
### Replan #{N} — {TIMESTAMP}
|
|
151
|
+
|
|
152
|
+
- Trigger: {failure|feedback|cascade}
|
|
153
|
+
- Scope: {targeted|revision|full}
|
|
154
|
+
- Cancelled tickets: {list}
|
|
155
|
+
- New tickets: {list}
|
|
156
|
+
- Reason: {description}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### In PM-LOG.md:
|
|
160
|
+
```markdown
|
|
161
|
+
## [{TIMESTAMP}] REPLAN
|
|
162
|
+
|
|
163
|
+
- Scope: {targeted|revision|full}
|
|
164
|
+
- Trigger: {description}
|
|
165
|
+
- Plans affected: {list}
|
|
166
|
+
- Old tickets cancelled: {count}
|
|
167
|
+
- New tickets created: {count}
|
|
168
|
+
- Dispatched: {yes/no}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### In STATE.md:
|
|
172
|
+
Update the Vibe Kanban Status section with new ticket counts.
|
|
173
|
+
|
|
174
|
+
</step>
|
|
175
|
+
|
|
176
|
+
<step name="present">
|
|
177
|
+
|
|
178
|
+
## 5. Present Replan Summary
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
182
|
+
PM ► REPLANNED
|
|
183
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
184
|
+
|
|
185
|
+
Scope: {targeted|revision|full}
|
|
186
|
+
Reason: {description}
|
|
187
|
+
|
|
188
|
+
Changes:
|
|
189
|
+
- Cancelled: {N} tickets
|
|
190
|
+
- Created: {N} new tickets
|
|
191
|
+
- Updated: {N} ticket descriptions
|
|
192
|
+
- Dispatched: {N} workers
|
|
193
|
+
|
|
194
|
+
## Current Ticket State
|
|
195
|
+
{Updated table from TICKET-MAP}
|
|
196
|
+
|
|
197
|
+
## Next
|
|
198
|
+
{Suggested action based on current state}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
</step>
|
|
202
|
+
|
|
203
|
+
</process>
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# PM Sync Workflow — Plan-to-Ticket Synchronization
|
|
2
|
+
|
|
3
|
+
<purpose>
|
|
4
|
+
Synchronize PLAN.md files with Vibe Kanban tickets. Creates tickets for new plans, updates tickets for modified plans, cancels tickets for removed plans. Maintains TICKET-MAP.md as the authoritative mapping.
|
|
5
|
+
|
|
6
|
+
Called by:
|
|
7
|
+
- `/gsd:pm-start` after planning completes
|
|
8
|
+
- `/gsd:pm-replan` after plans are revised
|
|
9
|
+
</purpose>
|
|
10
|
+
|
|
11
|
+
<process>
|
|
12
|
+
|
|
13
|
+
<step name="load_vk_context" priority="first">
|
|
14
|
+
|
|
15
|
+
## 1. Load Vibe Kanban Context
|
|
16
|
+
|
|
17
|
+
Read `.planning/config.json` for pm section.
|
|
18
|
+
|
|
19
|
+
**If `pm.project_id` is null (first run):**
|
|
20
|
+
1. Call `mcp__vibe_kanban__list_projects()` to discover projects
|
|
21
|
+
2. If single project: use it. If multiple: present choice to user.
|
|
22
|
+
3. Call `mcp__vibe_kanban__list_repos(project_id)` for repo details
|
|
23
|
+
4. Save to config.json:
|
|
24
|
+
```json
|
|
25
|
+
"pm": {
|
|
26
|
+
"project_id": "{discovered_uuid}",
|
|
27
|
+
"repos": [{"repo_id": "{uuid}", "base_branch": "main"}]
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**If already configured:** Use stored values.
|
|
32
|
+
|
|
33
|
+
</step>
|
|
34
|
+
|
|
35
|
+
<step name="discover_plans">
|
|
36
|
+
|
|
37
|
+
## 2. Discover Plans and Build Diff
|
|
38
|
+
|
|
39
|
+
List all PLAN.md files in the phase directory:
|
|
40
|
+
```bash
|
|
41
|
+
ls .planning/phases/{phase_dir}/*-PLAN.md 2>/dev/null
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Read existing TICKET-MAP.md if it exists:
|
|
45
|
+
```bash
|
|
46
|
+
cat .planning/phases/{phase_dir}/TICKET-MAP.md 2>/dev/null
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Build three lists:
|
|
50
|
+
|
|
51
|
+
**New plans:** PLAN.md exists but no corresponding ticket in TICKET-MAP
|
|
52
|
+
**Modified plans:** PLAN.md exists, ticket exists, but plan content has changed
|
|
53
|
+
**Removed plans:** Ticket exists in TICKET-MAP but PLAN.md no longer exists
|
|
54
|
+
|
|
55
|
+
</step>
|
|
56
|
+
|
|
57
|
+
<step name="sync_new">
|
|
58
|
+
|
|
59
|
+
## 3. Create Tickets for New Plans
|
|
60
|
+
|
|
61
|
+
For each new plan:
|
|
62
|
+
|
|
63
|
+
1. Read the full PLAN.md content
|
|
64
|
+
2. Extract from frontmatter: `wave`, `depends_on`, `phase`, `plan`
|
|
65
|
+
3. Extract objective from the `<objective>` section (first line)
|
|
66
|
+
4. Build ticket:
|
|
67
|
+
- **title:** `"Phase {phase} Plan {plan}: {objective_first_line}"`
|
|
68
|
+
- **description:** Full PLAN.md content as-is (this is the worker's prompt)
|
|
69
|
+
5. Call `mcp__vibe_kanban__create_task(project_id, title, description)`
|
|
70
|
+
6. Record in TICKET-MAP.md:
|
|
71
|
+
```
|
|
72
|
+
| {plan} | {task_summary} | {ticket_uuid} | todo | — | {wave} | — | — | new |
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
</step>
|
|
76
|
+
|
|
77
|
+
<step name="sync_modified">
|
|
78
|
+
|
|
79
|
+
## 4. Update Tickets for Modified Plans
|
|
80
|
+
|
|
81
|
+
For each modified plan:
|
|
82
|
+
|
|
83
|
+
1. Find ticket_id from TICKET-MAP.md
|
|
84
|
+
2. Check current ticket status:
|
|
85
|
+
- If `todo`: safe to update → `update_task(task_id, description=new_content)`
|
|
86
|
+
- If `inprogress`: **WARNING** — worker is running. Log warning, do NOT update.
|
|
87
|
+
- If `done`/`cancelled`: skip (no point updating)
|
|
88
|
+
3. Update TICKET-MAP.md with notes
|
|
89
|
+
|
|
90
|
+
</step>
|
|
91
|
+
|
|
92
|
+
<step name="sync_removed">
|
|
93
|
+
|
|
94
|
+
## 5. Cancel Tickets for Removed Plans
|
|
95
|
+
|
|
96
|
+
For each plan that no longer exists:
|
|
97
|
+
|
|
98
|
+
1. Find ticket_id from TICKET-MAP.md
|
|
99
|
+
2. Check current ticket status:
|
|
100
|
+
- If `todo`: cancel → `update_task(task_id, status="cancelled")`
|
|
101
|
+
- If `inprogress`: **WARNING** — worker running. Log but don't cancel yet.
|
|
102
|
+
- If already `done`/`cancelled`: skip
|
|
103
|
+
3. Mark as cancelled in TICKET-MAP.md
|
|
104
|
+
|
|
105
|
+
</step>
|
|
106
|
+
|
|
107
|
+
<step name="finalize">
|
|
108
|
+
|
|
109
|
+
## 6. Write TICKET-MAP.md
|
|
110
|
+
|
|
111
|
+
If TICKET-MAP.md doesn't exist yet, create it from template with all ticket entries.
|
|
112
|
+
|
|
113
|
+
If it exists, update the existing entries and add new ones.
|
|
114
|
+
|
|
115
|
+
Update the Wave Summary table:
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
## Wave Summary
|
|
119
|
+
|
|
120
|
+
| Wave | Total | Done | In Progress | Todo | Failed |
|
|
121
|
+
| ---- | ----- | ---- | ----------- | ---- | ------ |
|
|
122
|
+
| 1 | 3 | 0 | 0 | 3 | 0 |
|
|
123
|
+
| 2 | 2 | 0 | 0 | 2 | 0 |
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Update `last_polled` timestamp.
|
|
127
|
+
|
|
128
|
+
</step>
|
|
129
|
+
|
|
130
|
+
</process>
|