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.
Files changed (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +607 -0
  3. package/agents/gsd-codebase-mapper.md +738 -0
  4. package/agents/gsd-debugger.md +1203 -0
  5. package/agents/gsd-executor.md +784 -0
  6. package/agents/gsd-integration-checker.md +423 -0
  7. package/agents/gsd-phase-researcher.md +641 -0
  8. package/agents/gsd-plan-checker.md +745 -0
  9. package/agents/gsd-planner.md +1386 -0
  10. package/agents/gsd-pm.md +331 -0
  11. package/agents/gsd-project-researcher.md +865 -0
  12. package/agents/gsd-research-synthesizer.md +256 -0
  13. package/agents/gsd-roadmapper.md +605 -0
  14. package/agents/gsd-verifier.md +778 -0
  15. package/bin/install.js +1477 -0
  16. package/commands/gsd/add-phase.md +207 -0
  17. package/commands/gsd/add-todo.md +193 -0
  18. package/commands/gsd/audit-milestone.md +277 -0
  19. package/commands/gsd/check-todos.md +228 -0
  20. package/commands/gsd/complete-milestone.md +136 -0
  21. package/commands/gsd/debug.md +169 -0
  22. package/commands/gsd/discuss-phase.md +86 -0
  23. package/commands/gsd/execute-phase.md +339 -0
  24. package/commands/gsd/help.md +545 -0
  25. package/commands/gsd/insert-phase.md +227 -0
  26. package/commands/gsd/join-discord.md +18 -0
  27. package/commands/gsd/list-phase-assumptions.md +50 -0
  28. package/commands/gsd/map-codebase.md +71 -0
  29. package/commands/gsd/new-milestone.md +721 -0
  30. package/commands/gsd/new-project.md +1008 -0
  31. package/commands/gsd/pause-work.md +134 -0
  32. package/commands/gsd/plan-milestone-gaps.md +295 -0
  33. package/commands/gsd/plan-phase.md +525 -0
  34. package/commands/gsd/pm-check.md +115 -0
  35. package/commands/gsd/pm-replan.md +102 -0
  36. package/commands/gsd/pm-start.md +218 -0
  37. package/commands/gsd/pm-status.md +116 -0
  38. package/commands/gsd/pm-stop.md +72 -0
  39. package/commands/gsd/progress.md +415 -0
  40. package/commands/gsd/quick.md +309 -0
  41. package/commands/gsd/remove-phase.md +349 -0
  42. package/commands/gsd/research-phase.md +200 -0
  43. package/commands/gsd/resume-work.md +40 -0
  44. package/commands/gsd/set-profile.md +106 -0
  45. package/commands/gsd/settings.md +151 -0
  46. package/commands/gsd/update.md +172 -0
  47. package/commands/gsd/verify-work.md +219 -0
  48. package/get-shit-done/references/checkpoints.md +1078 -0
  49. package/get-shit-done/references/continuation-format.md +249 -0
  50. package/get-shit-done/references/git-integration.md +254 -0
  51. package/get-shit-done/references/model-profiles.md +73 -0
  52. package/get-shit-done/references/planning-config.md +189 -0
  53. package/get-shit-done/references/questioning.md +141 -0
  54. package/get-shit-done/references/tdd.md +263 -0
  55. package/get-shit-done/references/ui-brand.md +172 -0
  56. package/get-shit-done/references/verification-patterns.md +612 -0
  57. package/get-shit-done/references/vibe-kanban.md +142 -0
  58. package/get-shit-done/templates/DEBUG.md +159 -0
  59. package/get-shit-done/templates/UAT.md +247 -0
  60. package/get-shit-done/templates/codebase/architecture.md +255 -0
  61. package/get-shit-done/templates/codebase/concerns.md +310 -0
  62. package/get-shit-done/templates/codebase/conventions.md +307 -0
  63. package/get-shit-done/templates/codebase/integrations.md +280 -0
  64. package/get-shit-done/templates/codebase/stack.md +186 -0
  65. package/get-shit-done/templates/codebase/structure.md +285 -0
  66. package/get-shit-done/templates/codebase/testing.md +480 -0
  67. package/get-shit-done/templates/config.json +35 -0
  68. package/get-shit-done/templates/context.md +283 -0
  69. package/get-shit-done/templates/continue-here.md +78 -0
  70. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  71. package/get-shit-done/templates/discovery.md +146 -0
  72. package/get-shit-done/templates/milestone-archive.md +123 -0
  73. package/get-shit-done/templates/milestone.md +115 -0
  74. package/get-shit-done/templates/phase-prompt.md +567 -0
  75. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  76. package/get-shit-done/templates/pm-config.md +55 -0
  77. package/get-shit-done/templates/pm-log.md +27 -0
  78. package/get-shit-done/templates/project.md +184 -0
  79. package/get-shit-done/templates/requirements.md +231 -0
  80. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  81. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  82. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  83. package/get-shit-done/templates/research-project/STACK.md +120 -0
  84. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  85. package/get-shit-done/templates/research.md +529 -0
  86. package/get-shit-done/templates/roadmap.md +202 -0
  87. package/get-shit-done/templates/state.md +205 -0
  88. package/get-shit-done/templates/summary.md +246 -0
  89. package/get-shit-done/templates/ticket-map.md +28 -0
  90. package/get-shit-done/templates/user-setup.md +311 -0
  91. package/get-shit-done/templates/verification-report.md +322 -0
  92. package/get-shit-done/workflows/complete-milestone.md +903 -0
  93. package/get-shit-done/workflows/diagnose-issues.md +231 -0
  94. package/get-shit-done/workflows/discovery-phase.md +289 -0
  95. package/get-shit-done/workflows/discuss-phase.md +433 -0
  96. package/get-shit-done/workflows/execute-phase.md +671 -0
  97. package/get-shit-done/workflows/execute-plan.md +1844 -0
  98. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  99. package/get-shit-done/workflows/map-codebase.md +322 -0
  100. package/get-shit-done/workflows/pm-check.md +210 -0
  101. package/get-shit-done/workflows/pm-dispatch.md +104 -0
  102. package/get-shit-done/workflows/pm-replan.md +203 -0
  103. package/get-shit-done/workflows/pm-sync.md +130 -0
  104. package/get-shit-done/workflows/resume-project.md +307 -0
  105. package/get-shit-done/workflows/transition.md +556 -0
  106. package/get-shit-done/workflows/verify-phase.md +628 -0
  107. package/get-shit-done/workflows/verify-work.md +596 -0
  108. package/hooks/dist/gsd-check-update.js +61 -0
  109. package/hooks/dist/gsd-statusline.js +87 -0
  110. package/package.json +47 -0
  111. package/scripts/build-hooks.js +42 -0
  112. package/scripts/pm-loop.sh +155 -0
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: gsd:pm-replan
3
+ description: Replan based on feedback or failures — modify plans, sync ticket changes, dispatch fixes
4
+ argument-hint: "<phase> [feedback text]"
5
+ agent: gsd-pm
6
+ allowed-tools:
7
+ - Read
8
+ - Write
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - Task
13
+ - WebFetch
14
+ - mcp__context7__*
15
+ - mcp__vibe_kanban__*
16
+ ---
17
+
18
+ <execution_context>
19
+ @~/.claude/get-shit-done/references/vibe-kanban.md
20
+ @~/.claude/get-shit-done/workflows/pm-replan.md
21
+ @~/.claude/get-shit-done/workflows/pm-sync.md
22
+ @~/.claude/get-shit-done/workflows/pm-dispatch.md
23
+ @~/.claude/agents/gsd-pm.md
24
+ </execution_context>
25
+
26
+ <objective>
27
+ Manually trigger a replan for a phase based on user feedback. Modifies plans, syncs changes to Vibe Kanban (cancel old tickets, create new ones), and optionally dispatches.
28
+
29
+ **Use cases:**
30
+ - User realized the approach is wrong
31
+ - User wants to change technology/library
32
+ - User has new requirements mid-phase
33
+ - A ticket failed and auto-replan didn't resolve it
34
+ </objective>
35
+
36
+ <context>
37
+ Phase number: first argument from $ARGUMENTS
38
+ Feedback: remaining text after phase number
39
+
40
+ Example: `/gsd:pm-replan 3 switch to Redis for caching instead of in-memory`
41
+ </context>
42
+
43
+ <process>
44
+
45
+ ## 1. Parse Arguments
46
+
47
+ Extract:
48
+ - Phase number (required)
49
+ - Feedback text (optional — if empty, ask user interactively)
50
+
51
+ If no feedback provided, ask:
52
+ "What should change about the current plan for phase {X}? Describe the issue or new direction."
53
+
54
+ ## 2. Load Context
55
+
56
+ Read:
57
+ - Current PLAN.md files for the phase
58
+ - TICKET-MAP.md — current ticket state
59
+ - STATE.md — overall position
60
+ - config.json — PM settings
61
+ - ROADMAP.md — phase goal
62
+
63
+ ## 3. Classify Replan Scope
64
+
65
+ Follow pm-replan workflow classification:
66
+
67
+ **TARGETED:** Feedback mentions a specific plan or ticket
68
+ **REVISION:** Feedback modifies approach but keeps structure
69
+ **FULL_REPLAN:** Feedback fundamentally changes direction
70
+
71
+ Present classification to user:
72
+ ```
73
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
74
+ PM ► REPLAN ANALYSIS
75
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
76
+
77
+ Scope: {targeted|revision|full}
78
+ Affected plans: {list}
79
+ Tickets to cancel: {count}
80
+
81
+ Proceeding with replan...
82
+ ```
83
+
84
+ ## 4. Execute Replan
85
+
86
+ Follow the pm-replan workflow for the classified scope:
87
+ - Spawn gsd-planner with feedback context
88
+ - Verify with gsd-plan-checker
89
+ - Sync to Vibe Kanban (cancel old, create new, update changed)
90
+ - Update TICKET-MAP.md
91
+
92
+ ## 5. Dispatch (if appropriate)
93
+
94
+ If new tickets were created and they're in a ready wave:
95
+ - Ask user: "Dispatch {N} new workers now?"
96
+ - If yes: follow pm-dispatch workflow
97
+
98
+ ## 6. Present Summary
99
+
100
+ Follow the pm-replan workflow presentation format.
101
+
102
+ </process>
@@ -0,0 +1,218 @@
1
+ ---
2
+ name: gsd:pm-start
3
+ description: Plan a phase, sync to Vibe Kanban tickets, dispatch workers, optionally start autonomous monitor loop
4
+ argument-hint: "<phase> [--autonomous] [--manual] [--executor=CLAUDE_CODE] [--skip-plan]"
5
+ agent: gsd-pm
6
+ allowed-tools:
7
+ - Read
8
+ - Write
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - Task
13
+ - WebFetch
14
+ - mcp__context7__*
15
+ - mcp__vibe_kanban__*
16
+ ---
17
+
18
+ <execution_context>
19
+ @~/.claude/get-shit-done/references/ui-brand.md
20
+ @~/.claude/get-shit-done/references/vibe-kanban.md
21
+ @~/.claude/get-shit-done/workflows/pm-sync.md
22
+ @~/.claude/get-shit-done/workflows/pm-dispatch.md
23
+ @~/.claude/agents/gsd-pm.md
24
+ </execution_context>
25
+
26
+ <objective>
27
+ Initialize PM mode for a phase: create plans (unless --skip-plan), sync to Vibe Kanban tickets, dispatch wave 1 workers, and optionally launch the autonomous monitoring loop.
28
+
29
+ **This is the main PM entry point.** It transitions GSD from local execution to external delegation.
30
+
31
+ **Orchestrator role:** Validate environment, run planning pipeline if needed, sync plans to VK tickets, dispatch workers, optionally start pm-loop.sh.
32
+ </objective>
33
+
34
+ <context>
35
+ Phase number: $ARGUMENTS (required — which phase to manage)
36
+
37
+ **Flags:**
38
+ - `--autonomous` — After dispatch, launch pm-loop.sh for continuous monitoring
39
+ - `--manual` — After dispatch, show status and available commands (default)
40
+ - `--executor=X` — Override default executor (CLAUDE_CODE, CURSOR_AGENT, CODEX, etc.)
41
+ - `--skip-plan` — Skip planning, assume plans already exist (use with /gsd:plan-phase)
42
+ </context>
43
+
44
+ <process>
45
+
46
+ ## 1. Validate Environment
47
+
48
+ ```bash
49
+ test -d .planning && echo "exists" || echo "missing"
50
+ ```
51
+
52
+ If no `.planning/`: Error — run `/gsd:new-project` first.
53
+
54
+ Read config:
55
+ ```bash
56
+ cat .planning/config.json 2>/dev/null
57
+ ```
58
+
59
+ Check for pm section. If missing, initialize it:
60
+ ```json
61
+ "pm": {
62
+ "mode": "manual",
63
+ "poll_interval_seconds": 60,
64
+ "project_id": null,
65
+ "repos": [],
66
+ "default_executor": "CLAUDE_CODE",
67
+ "auto_replan_on_failure": true,
68
+ "auto_dispatch_next_wave": true,
69
+ "max_replan_attempts": 3
70
+ }
71
+ ```
72
+
73
+ Apply flag overrides:
74
+ - `--autonomous` → set `pm.mode` to `"autonomous"`
75
+ - `--manual` → set `pm.mode` to `"manual"`
76
+ - `--executor=X` → set `pm.default_executor`
77
+
78
+ Write updated config.json.
79
+
80
+ ## 2. Parse Phase Number
81
+
82
+ Extract phase number from $ARGUMENTS. Validate it exists in ROADMAP.md.
83
+
84
+ Find or create phase directory:
85
+ ```bash
86
+ ls .planning/phases/ | grep "^{phase_num}"
87
+ ```
88
+
89
+ ## 3. Setup Vibe Kanban Connection
90
+
91
+ If `pm.project_id` is null:
92
+
93
+ 1. Call `mcp__vibe_kanban__list_projects()` — discover available projects
94
+ 2. If single project: use it. If multiple: present choice to user.
95
+ 3. Call `mcp__vibe_kanban__list_repos(project_id)` — get repo details
96
+ 4. Save project_id and repos to config.json
97
+
98
+ Present:
99
+ ```
100
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
101
+ PM ► CONNECTED TO VIBE KANBAN
102
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
103
+
104
+ Project: {name} ({project_id})
105
+ Repos: {repo_list}
106
+ Executor: {default_executor}
107
+ ```
108
+
109
+ ## 4. Plan Phase (unless --skip-plan)
110
+
111
+ If plans already exist for this phase AND --skip-plan not specified:
112
+ - Ask user: "Plans already exist. Re-plan or use existing?"
113
+
114
+ If no plans exist OR user wants to re-plan:
115
+ - Follow the same planning pipeline as `/gsd:plan-phase`:
116
+ 1. Resolve model profile
117
+ 2. Optionally run phase researcher
118
+ 3. Spawn gsd-planner via Task tool
119
+ 4. Spawn gsd-plan-checker to verify
120
+ 5. Iterate planner ↔ checker until plans pass (max 3)
121
+
122
+ **Key difference from /gsd:plan-phase:** After planning, continue to sync+dispatch instead of stopping.
123
+
124
+ ## 5. Sync Plans to Vibe Kanban Tickets
125
+
126
+ Follow the pm-sync workflow:
127
+
128
+ 1. Read all PLAN.md files in the phase directory
129
+ 2. For each plan:
130
+ - Build title: `"Phase {X} Plan {Y}: {objective}"`
131
+ - Build description: full PLAN.md content
132
+ - `create_task(project_id, title, description)`
133
+ 3. Write TICKET-MAP.md with all mappings
134
+
135
+ Present:
136
+ ```
137
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
138
+ PM ► TICKETS SYNCED
139
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
140
+
141
+ {N} plans → {N} tickets created
142
+
143
+ | Wave | Plan | Ticket | Title |
144
+ | ---- | ---- | ------ | ----- |
145
+ | ... | ... | ... | ... |
146
+ ```
147
+
148
+ ## 6. Dispatch Wave 1
149
+
150
+ Follow the pm-dispatch workflow:
151
+
152
+ 1. Collect all wave 1 tickets from TICKET-MAP
153
+ 2. For each:
154
+ - `start_workspace_session(task_id, executor, repos)`
155
+ - Update TICKET-MAP: status=inprogress, dispatched=now
156
+ 3. Log dispatches to PM-LOG.md
157
+
158
+ Present:
159
+ ```
160
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
161
+ PM ► WAVE 1 DISPATCHED
162
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
163
+
164
+ {N} workers launched:
165
+
166
+ | Ticket | Plan | Executor | Status |
167
+ | ------ | ---- | -------- | ------ |
168
+ | ... | ... | ... | launched |
169
+ ```
170
+
171
+ ## 7. Start Monitor (mode-dependent)
172
+
173
+ ### Autonomous Mode (--autonomous)
174
+
175
+ Initialize PM-LOG.md with INIT entry.
176
+ Launch pm-loop.sh:
177
+
178
+ ```bash
179
+ nohup ~/.claude/scripts/pm-loop.sh --phase={X} --interval={poll_interval} > /dev/null 2>&1 &
180
+ echo $! > .planning/.pm-loop-pid
181
+ ```
182
+
183
+ Present:
184
+ ```
185
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
186
+ PM ► AUTONOMOUS MODE ACTIVE
187
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
188
+
189
+ PM loop running (PID: {pid})
190
+ Polling every {interval}s
191
+ Log: .planning/PM-LOG.md
192
+
193
+ Stop with: /gsd:pm-stop or touch .planning/.pm-stop
194
+ ```
195
+
196
+ ### Manual Mode (default)
197
+
198
+ Present:
199
+ ```
200
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
201
+ PM ► MANUAL MODE — WORKERS RUNNING
202
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
203
+
204
+ Workers dispatched. Use these commands to manage:
205
+
206
+ /gsd:pm-check — Poll ticket status and react
207
+ /gsd:pm-status — View dashboard
208
+ /gsd:pm-replan — Modify plans if issues found
209
+ /gsd:pm-stop — Stop PM monitoring
210
+ ```
211
+
212
+ ## 8. Update STATE.md
213
+
214
+ Update STATE.md with PM status:
215
+ - Current position: Phase X, PM mode active
216
+ - Vibe Kanban Status section: project, tickets, last polled
217
+
218
+ </process>
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: gsd:pm-status
3
+ description: Dashboard showing all tickets, plan health, and recent PM decisions
4
+ argument-hint: "[phase]"
5
+ allowed-tools:
6
+ - Read
7
+ - Bash
8
+ - Glob
9
+ - Grep
10
+ - mcp__vibe_kanban__*
11
+ ---
12
+
13
+ <execution_context>
14
+ @~/.claude/get-shit-done/references/ui-brand.md
15
+ @~/.claude/get-shit-done/references/vibe-kanban.md
16
+ </execution_context>
17
+
18
+ <objective>
19
+ Display a comprehensive PM dashboard: ticket status matrix, wave progress, recent PM-LOG entries, and suggested next actions.
20
+
21
+ Read-only — does not modify any state.
22
+ </objective>
23
+
24
+ <context>
25
+ Phase number: $ARGUMENTS (optional — shows all phases if not specified)
26
+ </context>
27
+
28
+ <process>
29
+
30
+ ## 1. Load Context
31
+
32
+ ```bash
33
+ cat .planning/config.json
34
+ cat .planning/STATE.md
35
+ ```
36
+
37
+ If phase specified: read that phase's TICKET-MAP.md
38
+ If not: read all TICKET-MAP.md files across phases
39
+
40
+ ## 2. Poll Current Status
41
+
42
+ Call `mcp__vibe_kanban__list_tasks(project_id)` for live ticket status.
43
+
44
+ Cross-reference with TICKET-MAP.md entries.
45
+
46
+ ## 3. Build Dashboard
47
+
48
+ ```
49
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
50
+ PM ► PROJECT STATUS
51
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
52
+
53
+ Project: {name}
54
+ Executor: {default_executor}
55
+ Mode: {autonomous|manual}
56
+ PM Loop: {running (PID: X)|stopped}
57
+
58
+ ## Phase {X}: {name} [{progress_bar}] {percent}%
59
+
60
+ | Wave | Plan | Ticket | Status | Executor | Duration |
61
+ | ---- | ---- | ------ | ------ | -------- | -------- |
62
+ | 1 | 01 | {id} | done | CLAUDE_CODE | 12m |
63
+ | 1 | 02 | {id} | done | CURSOR | 8m |
64
+ | 2 | 03 | {id} | inprogress | CLAUDE_CODE | 5m... |
65
+ | 2 | 04 | {id} | todo | — | — |
66
+
67
+ ### Wave Summary
68
+ | Wave | Total | Done | Running | Todo | Failed |
69
+ | ---- | ----- | ---- | ------- | ---- | ------ |
70
+ | 1 | 2 | 2 | 0 | 0 | 0 |
71
+ | 2 | 2 | 0 | 1 | 1 | 0 |
72
+
73
+ ### Replans: {count}
74
+ ### Failed tickets: {count}
75
+ ```
76
+
77
+ ## 4. Recent PM-LOG
78
+
79
+ Read last 10 entries from PM-LOG.md:
80
+ ```bash
81
+ tail -50 .planning/PM-LOG.md
82
+ ```
83
+
84
+ Present the last 3-5 significant events:
85
+ ```
86
+ ## Recent Activity
87
+
88
+ - [{time}] Wave 1 complete — auto-dispatched wave 2
89
+ - [{time}] VK-{id} (Plan 03): todo → inprogress
90
+ - [{time}] VK-{id} (Plan 01): inprogress → done (12m)
91
+ ```
92
+
93
+ ## 5. Suggested Actions
94
+
95
+ Based on current state, suggest relevant commands:
96
+
97
+ ```
98
+ ## Actions
99
+
100
+ /gsd:pm-check — Poll for latest ticket updates
101
+ /gsd:pm-replan 3 — Modify plans if issues found
102
+ /gsd:pm-stop — Stop autonomous monitoring
103
+ ```
104
+
105
+ If all tickets done:
106
+ ```
107
+ Phase {X} complete! Run /gsd:pm-start {X+1} for next phase.
108
+ ```
109
+
110
+ If tickets stuck:
111
+ ```
112
+ ⚠ {N} tickets have been running for >{threshold}min.
113
+ Consider /gsd:pm-check to diagnose.
114
+ ```
115
+
116
+ </process>
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: gsd:pm-stop
3
+ description: Stop the autonomous PM monitoring loop gracefully
4
+ allowed-tools:
5
+ - Read
6
+ - Write
7
+ - Bash
8
+ ---
9
+
10
+ <objective>
11
+ Signal the autonomous PM loop (pm-loop.sh) to stop gracefully by creating the stop file.
12
+ The shell script checks for this file at the start of each cycle and exits cleanly.
13
+ </objective>
14
+
15
+ <process>
16
+
17
+ ## 1. Create Stop Signal
18
+
19
+ ```bash
20
+ touch .planning/.pm-stop
21
+ echo "PM stop signal created."
22
+ ```
23
+
24
+ ## 2. Check Loop Status
25
+
26
+ ```bash
27
+ # Check if pm-loop.sh is running
28
+ if [ -f .planning/.pm-loop-pid ]; then
29
+ PID=$(cat .planning/.pm-loop-pid)
30
+ if ps -p "$PID" > /dev/null 2>&1; then
31
+ echo "PM loop (PID: $PID) will stop after current cycle completes."
32
+ else
33
+ echo "PM loop process not found (may have already stopped)."
34
+ rm -f .planning/.pm-loop-pid
35
+ fi
36
+ else
37
+ echo "No PM loop PID file found."
38
+ fi
39
+ ```
40
+
41
+ ## 3. Update Config
42
+
43
+ Read config.json and set `pm.mode` to `"manual"`.
44
+ Write updated config.json.
45
+
46
+ ## 4. Present
47
+
48
+ ```
49
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
50
+ PM ► STOPPING
51
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
52
+
53
+ Stop signal sent. The PM loop will exit after the current cycle.
54
+ Mode switched to: manual
55
+
56
+ Workers already dispatched will continue running.
57
+ Use /gsd:pm-check to manually poll ticket status.
58
+ Use /gsd:pm-status to view dashboard.
59
+ ```
60
+
61
+ ## 5. Log to PM-LOG.md
62
+
63
+ Append:
64
+ ```markdown
65
+ ## [{TIMESTAMP}] STOP
66
+
67
+ - PM loop stop signal created
68
+ - Mode switched to manual
69
+ - Active workers: {count} (will continue running)
70
+ ```
71
+
72
+ </process>