@hegemonart/get-design-done 1.27.7 → 1.28.5

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 (115) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +142 -0
  4. package/SKILL.md +1 -1
  5. package/agents/design-verifier.md +17 -0
  6. package/hooks/gdd-decision-injector.js +149 -3
  7. package/package.json +1 -1
  8. package/reference/accessibility.md +4 -0
  9. package/reference/adr-format.md +96 -0
  10. package/reference/apply-reflections-procedure.md +68 -0
  11. package/reference/architecture-vocabulary.md +102 -0
  12. package/reference/audit-scoring.md +14 -0
  13. package/reference/cache-policy.md +126 -0
  14. package/reference/color-theory.md +279 -0
  15. package/reference/compare-rubric.md +171 -0
  16. package/reference/composition.md +349 -0
  17. package/reference/connections-onboarding.md +417 -0
  18. package/reference/context-md-format.md +106 -0
  19. package/reference/contrast-advanced.md +205 -0
  20. package/reference/darkmode-audit-procedure.md +258 -0
  21. package/reference/debug-feedback-loops.md +119 -0
  22. package/reference/design-procedure.md +304 -0
  23. package/reference/design-system-guidance.md +2 -0
  24. package/reference/discover-procedure.md +204 -0
  25. package/reference/explore-procedure.md +267 -0
  26. package/reference/form-patterns.md +2 -0
  27. package/reference/health-mcp-detection.md +44 -0
  28. package/reference/health-skill-length-report.md +69 -0
  29. package/reference/heuristics.md +84 -0
  30. package/reference/i18n.md +554 -0
  31. package/reference/iconography.md +2 -0
  32. package/reference/milestone-completeness-rubric.md +87 -0
  33. package/reference/motion-interpolate.md +1 -0
  34. package/reference/palette-catalog.md +2 -0
  35. package/reference/peer-cli-protocol.md +161 -0
  36. package/reference/plan-procedure.md +278 -0
  37. package/reference/proportion-systems.md +267 -0
  38. package/reference/registry.json +204 -1
  39. package/reference/registry.schema.json +1 -1
  40. package/reference/router-rules.md +84 -0
  41. package/reference/rtl-cjk-cultural.md +2 -0
  42. package/reference/scan-procedure.md +731 -0
  43. package/reference/shared-preamble.md +78 -6
  44. package/reference/skill-authoring-contract.md +128 -0
  45. package/reference/start-procedure.md +115 -0
  46. package/reference/style-doc-procedure.md +150 -0
  47. package/reference/style-vocabulary.md +2 -0
  48. package/reference/threat-modeling.md +101 -0
  49. package/reference/typography.md +4 -0
  50. package/reference/verify-procedure.md +512 -0
  51. package/reference/visual-hierarchy-layout.md +4 -0
  52. package/scripts/validate-skill-length.cjs +283 -0
  53. package/skills/add-backlog/SKILL.md +1 -0
  54. package/skills/analyze-dependencies/SKILL.md +33 -122
  55. package/skills/apply-reflections/SKILL.md +1 -40
  56. package/skills/audit/SKILL.md +3 -1
  57. package/skills/bandit-status/SKILL.md +31 -66
  58. package/skills/benchmark/SKILL.md +15 -55
  59. package/skills/brief/SKILL.md +12 -1
  60. package/skills/cache-manager/SKILL.md +3 -57
  61. package/skills/check-update/SKILL.md +38 -75
  62. package/skills/compare/SKILL.md +29 -269
  63. package/skills/complete-cycle/SKILL.md +1 -1
  64. package/skills/connections/SKILL.md +21 -427
  65. package/skills/continue/SKILL.md +1 -0
  66. package/skills/darkmode/SKILL.md +32 -287
  67. package/skills/debug/SKILL.md +11 -8
  68. package/skills/design/SKILL.md +27 -245
  69. package/skills/discover/SKILL.md +26 -133
  70. package/skills/discuss/SKILL.md +18 -2
  71. package/skills/explore/SKILL.md +42 -176
  72. package/skills/fast/SKILL.md +1 -0
  73. package/skills/figma-write/SKILL.md +2 -2
  74. package/skills/health/SKILL.md +11 -33
  75. package/skills/help/SKILL.md +1 -0
  76. package/skills/list-assumptions/SKILL.md +1 -0
  77. package/skills/map/SKILL.md +8 -31
  78. package/skills/new-cycle/SKILL.md +3 -1
  79. package/skills/next/SKILL.md +1 -0
  80. package/skills/note/SKILL.md +1 -0
  81. package/skills/optimize/SKILL.md +21 -44
  82. package/skills/pause/SKILL.md +1 -0
  83. package/skills/peer-cli-add/SKILL.md +26 -108
  84. package/skills/peer-cli-customize/SKILL.md +22 -42
  85. package/skills/peers/SKILL.md +33 -57
  86. package/skills/plan/SKILL.md +33 -220
  87. package/skills/plant-seed/SKILL.md +1 -0
  88. package/skills/pr-branch/SKILL.md +1 -0
  89. package/skills/progress/SKILL.md +1 -7
  90. package/skills/quality-gate/SKILL.md +34 -166
  91. package/skills/quick/SKILL.md +1 -0
  92. package/skills/reapply-patches/SKILL.md +1 -0
  93. package/skills/recall/SKILL.md +1 -0
  94. package/skills/resume/SKILL.md +1 -0
  95. package/skills/review-backlog/SKILL.md +1 -0
  96. package/skills/router/SKILL.md +3 -59
  97. package/skills/scan/SKILL.md +36 -675
  98. package/skills/settings/SKILL.md +1 -0
  99. package/skills/ship/SKILL.md +1 -0
  100. package/skills/sketch/SKILL.md +1 -1
  101. package/skills/sketch-wrap-up/SKILL.md +13 -54
  102. package/skills/spike/SKILL.md +1 -1
  103. package/skills/spike-wrap-up/SKILL.md +12 -46
  104. package/skills/start/SKILL.md +13 -112
  105. package/skills/stats/SKILL.md +1 -0
  106. package/skills/style/SKILL.md +18 -140
  107. package/skills/synthesize/SKILL.md +1 -0
  108. package/skills/timeline/SKILL.md +1 -0
  109. package/skills/todo/SKILL.md +1 -0
  110. package/skills/turn-closeout/SKILL.md +36 -56
  111. package/skills/undo/SKILL.md +1 -0
  112. package/skills/update/SKILL.md +1 -0
  113. package/skills/verify/SKILL.md +42 -457
  114. package/skills/warm-cache/SKILL.md +3 -35
  115. package/skills/zoom-out/SKILL.md +26 -0
@@ -1,267 +1,80 @@
1
1
  ---
2
2
  name: plan
3
- description: "Stage 3 of 5 — reads DESIGN-CONTEXT.md, spawns design-phase-researcher (optional) + design-planner + design-plan-checker, writes DESIGN-PLAN.md. Thin orchestrator."
3
+ description: "Stage 3 of 5 orchestrator that reads DESIGN-CONTEXT.md, runs optional research (phase-researcher / pattern-mapper / assumptions-analyzer / synthesizer), spawns design-planner + design-plan-checker, and writes DESIGN-PLAN.md. Use when DESIGN-CONTEXT.md is locked and you need a wave-ordered execution plan."
4
4
  argument-hint: "[--auto] [--parallel]"
5
5
  user-invocable: true
6
- tools: Read, Write, Bash, Glob, Task, AskUserQuestion, ToolSearch, mcp__gdd_state__get, mcp__gdd_state__transition_stage, mcp__gdd_state__add_decision, mcp__gdd_state__add_must_have, mcp__gdd_state__update_progress, mcp__gdd_state__set_status, mcp__gdd_state__add_blocker, mcp__gdd_state__checkpoint
6
+ tools: Read, Write, Bash, Glob, Task, AskUserQuestion, ToolSearch, mcp__gdd_state__get, mcp__gdd_state__transition_stage, mcp__gdd_state__add_decision, mcp__gdd_state__add_must_have, mcp__gdd_state__update_progress, mcp__gdd_state__set_status, mcp__gdd_state__add_blocker, mcp__gdd_state__checkpoint, mcp__gdd_state__probe_connections
7
7
  ---
8
8
 
9
9
  # Get Design Done — Plan
10
10
 
11
- **Stage 3 of 5** in the get-design-done pipeline. Thin orchestrator. All planning intelligence lives in agents/design-planner.md.
11
+ **Stage 3 of 5** in the get-design-done pipeline. Thin orchestrator. All planning intelligence lives in `agents/design-planner.md`.
12
12
 
13
- ## Stage entry
14
-
15
- 1. `mcp__gdd_state__transition_stage` with `to: "plan"`.
16
- - Gate failure surfaces `error.context.blockers` to the user; do not advance.
17
- 2. `mcp__gdd_state__get` → snapshot `state`. Use this snapshot for `<position>`, `<connections>`, `<must_haves>`, `<blockers>`, `<decisions>` in the current stage; do not re-read STATE.md directly.
18
-
19
- Abort with a clear error only if the user is trying to plan without DESIGN-CONTEXT.md — that is the true prerequisite, not STATE.md.
13
+ Full procedure detail: `../../reference/plan-procedure.md`.
20
14
 
21
- ## Flag Parsing
15
+ ---
22
16
 
23
- Parse $ARGUMENTS:
24
- - `--auto` → auto_mode=true (skip approvals, skip optional research)
25
- - `--parallel` → parallel_mode=true (planner fills Touches:/Parallel: fields)
17
+ ## Stage entry
26
18
 
27
- ## Parallelism Decision (before any multi-agent spawn)
19
+ 1. `mcp__gdd_state__transition_stage` with `to: "plan"`. Gate failure surfaces `error.context.blockers`; do not advance.
20
+ 2. `mcp__gdd_state__get` -> snapshot `state` for `<position>`, `<connections>`, `<must_haves>`, `<blockers>`, `<decisions>`. Do not re-read STATE.md directly.
21
+ 3. Abort only if `.design/DESIGN-CONTEXT.md` is missing — that is the true prerequisite, not STATE.md.
28
22
 
29
- - Read `.design/config.json` `parallelism` (or defaults from `reference/config-schema.md`).
30
- - Apply rules from `reference/parallelism-rules.md`.
31
- - Plan's pipeline is inherently sequential (researcher → pattern-mapper → planner → checker). Expected verdict: **serial** (rule 1).
23
+ ---
32
24
 
33
- <!-- Parallelism decision is currently carried as the status string of an update_progress call. A dedicated tool may be added in a follow-on plan; until then, the status string is the canonical carrier. -->
25
+ ## Flags + parallelism
34
26
 
35
- After the parallelism decision is made:
36
- - Call `mcp__gdd_state__update_progress` with `task_progress: "<current>/<total>"` and `status: "plan_parallelism_decided: batch_size=<N>, reason=<short-reason>"`.
27
+ - `--auto` -> `auto_mode=true` (skip approvals, skip optional research).
28
+ - `--parallel` -> `parallel_mode=true` (planner fills `Touches:`/`Parallel:` fields).
29
+ - **Parallelism decision**: read `.design/config.json` + `reference/parallelism-rules.md`. Plan pipeline is inherently sequential (researcher -> pattern-mapper -> planner -> checker) so the expected verdict is **serial** (rule 1). Record via `mcp__gdd_state__update_progress` with `status: "plan_parallelism_decided: batch_size=<N>, reason=<short-reason>"`.
37
30
 
38
31
  ## Probe Chromatic connection
39
32
 
40
- Run at stage entry, after reading STATE.md:
41
-
42
- Step C1 — CLI presence:
43
- Bash: command -v chromatic 2>/dev/null || npx chromatic --version 2>/dev/null
44
- → found → proceed to Step C2
45
- → not found → chromatic: not_configured (skip all Chromatic steps)
46
-
47
- Step C2 — Token check:
48
- Bash: test -n "${CHROMATIC_PROJECT_TOKEN}"
49
- → true → chromatic: available
50
- → false → chromatic: unavailable
51
-
52
- Also check: if storybook: not_configured → chromatic effectively unavailable (emit note, do not run).
53
-
54
- Write chromatic status to STATE.md `<connections>` via `mcp__gdd_state__probe_connections` — pass the single-entry probe result (`[{ name: "chromatic", status: "<verdict>" }]`). Do not edit `<connections>` directly.
55
-
56
- ## Chromatic Change-Risk Scoping (when chromatic: available)
57
-
58
- Before writing DESIGN-PLAN.md, if chromatic: available:
59
- 1. Identify token/component files to be changed (from DESIGN-CONTEXT.md scope)
60
- 2. Run: Bash: npx chromatic --project-token $CHROMATIC_PROJECT_TOKEN --trace-changed=expanded --dry-run 2>&1
61
- 3. Parse output — count story files that depend on changed source files
62
- 4. Pass story count to design-planner.md (see design-planner.md Chromatic Change-Risk section)
63
- If unavailable: design-planner proceeds without story-count annotation.
33
+ Probe `chromatic` (CLI presence + `CHROMATIC_PROJECT_TOKEN` check; auto-`unavailable` if `storybook: not_configured`), then write status via `mcp__gdd_state__probe_connections` (single-entry array, never edit `<connections>` directly). Detail: `../../reference/plan-procedure.md` §Probe Chromatic connection.
64
34
 
65
- ## Step 1 — Optional Research (skip if auto_mode)
35
+ When `chromatic: available`, run change-risk scoping before writing DESIGN-PLAN.md: identify token/component files in scope from DESIGN-CONTEXT.md, run `npx chromatic --trace-changed=expanded --dry-run`, count story files that depend on changed source files, and pass the story count to the design-planner spawn prompt. Detail: `../../reference/plan-procedure.md` §Chromatic Change-Risk Scoping.
66
36
 
67
- Complexity heuristic: if DESIGN-CONTEXT.md `<domain>` spans 3+ scopes OR `<decisions>` count > 6 → spawn design-phase-researcher. Otherwise skip.
68
-
69
- If spawning:
70
-
71
- ```
72
- Task("design-phase-researcher", """
73
- <required_reading>
74
- @.design/STATE.md
75
- @.design/DESIGN-CONTEXT.md
76
- </required_reading>
77
-
78
- You are the design-phase-researcher agent. Identify the project type from DESIGN-CONTEXT.md
79
- and research relevant design patterns, pitfalls, and stack-specific conventions.
80
-
81
- Output file: .design/DESIGN-RESEARCH.md
82
- Target: ~100 lines, ~2 min budget.
37
+ ---
83
38
 
84
- Emit `## RESEARCH COMPLETE` when done.
85
- """)
86
- ```
39
+ ## Step 1 — Optional Research (skip if `auto_mode`)
87
40
 
88
- Wait for `## RESEARCH COMPLETE`. Call `mcp__gdd_state__update_progress` with `task_progress: "1/3"` and a short `status` summary.
41
+ Complexity heuristic: DESIGN-CONTEXT.md `<domain>` spans 3+ scopes OR `<decisions>` count > 6 -> spawn `design-phase-researcher` -> `.design/DESIGN-RESEARCH.md` (~100 lines, ~2 min). Wait for `## RESEARCH COMPLETE`, then `update_progress` `task_progress: "1/3"`. Full prompt: `../../reference/plan-procedure.md` §Step 1.
89
42
 
90
43
  ## Step 1.5 — Pattern Mapping (mandatory, brownfield protection)
91
44
 
92
- ```
93
- Task("design-pattern-mapper", """
94
- <required_reading>
95
- @.design/STATE.md
96
- @.design/DESIGN-CONTEXT.md
97
- @reference/audit-scoring.md
98
- </required_reading>
99
-
100
- You are design-pattern-mapper. Grep the codebase for existing design patterns
101
- (color tokens, spacing scale, typography conventions, component styling) and
102
- write .design/DESIGN-PATTERNS.md. Classify by design concern — NOT by code
103
- architecture (no controllers, services, middleware vocabulary).
104
-
105
- Output file: .design/DESIGN-PATTERNS.md
106
- Emit `## MAPPING COMPLETE` when done.
107
- """)
108
- ```
109
-
110
- Wait for `## MAPPING COMPLETE`. Call `mcp__gdd_state__update_progress` with `task_progress: "1/3"` and a short `status` summary.
111
-
112
- ## Step 1.6 — Assumptions Analysis (optional, same flag as research)
113
-
114
- If assumptions analysis enabled (skip if auto_mode):
115
-
116
- ```
117
- Task("design-assumptions-analyzer", """
118
- <required_reading>
119
- @.design/STATE.md
120
- @.design/DESIGN-CONTEXT.md
121
- @.design/DESIGN-PATTERNS.md
122
- </required_reading>
45
+ Spawn `design-pattern-mapper` -> `.design/DESIGN-PATTERNS.md` (classify by design concern, not by code architecture — no controllers/services/middleware vocabulary). Wait for `## MAPPING COMPLETE`. Full prompt: `../../reference/plan-procedure.md` §Step 1.5.
123
46
 
124
- You are design-assumptions-analyzer. Surface hidden design assumptions with
125
- confidence levels and evidence citations.
47
+ ## Step 1.6 — Assumptions Analysis (skip if `auto_mode`)
126
48
 
127
- Emit `## ANALYSIS COMPLETE` when done.
128
- """)
129
- ```
49
+ If assumptions analysis is enabled: spawn `design-assumptions-analyzer` -> surfaces hidden design assumptions with confidence + evidence. Wait for `## ANALYSIS COMPLETE`. Full prompt: `../../reference/plan-procedure.md` §Step 1.6.
130
50
 
131
- Wait for `## ANALYSIS COMPLETE`.
51
+ ## Step 1.7 — Synthesize pre-plan inputs (Plan 10.1-04, D-13/D-15)
132
52
 
133
- ## Step 1.7 — Synthesize pre-plan research inputs (Plan 10.1-04, D-13/D-15)
53
+ If 2+ pre-plan agents ran (Step 1, 1.5, 1.6), invoke `Skill("synthesize", { outputs, directive, output_shape: "markdown" })` to merge their outputs into `.design/DESIGN-PREPLAN-BRIEF.md` (~150 lines, per-source headers preserved). Add the brief to the planner's `<required_reading>` in Step 2. If only one agent ran, skip. Full call signature + parallel-synthesizer note: `../../reference/plan-procedure.md` §Step 1.7.
134
54
 
135
- If 2+ of the pre-plan research agents ran (`design-phase-researcher` Step 1, `design-pattern-mapper` Step 1.5, `design-assumptions-analyzer` Step 1.6), invoke synthesize to merge their outputs into a single compact brief. If only one ran, skip this step.
55
+ **Research-synthesis persistence:** for each D-XX the synthesizer produces, `mcp__gdd_state__add_decision`; for each M-XX, `mcp__gdd_state__add_must_have`. Issue sequentially (lockfile-bound). Detail: `../../reference/plan-procedure.md` §Research-synthesis persistence.
136
56
 
137
- Skill("synthesize", {
138
- outputs: [
139
- (if Step 1 ran) "=== from design-phase-researcher ===\n" + <read .design/DESIGN-RESEARCH.md>,
140
- (if Step 1.5 ran) "=== from design-pattern-mapper ===\n" + <read .design/DESIGN-PATTERNS.md>,
141
- (if Step 1.6 ran) "=== from design-assumptions-analyzer ===\n" + <read .design/DESIGN-ASSUMPTIONS.md>
142
- ],
143
- directive: "Merge into a single compact pre-plan brief. Preserve per-source section headers so the planner can trace provenance. Consolidate duplicate recommendations with source tags. Target ~150 lines.",
144
- output_shape: "markdown"
145
- })
146
-
147
- Wait for `## SYNTHESIS COMPLETE`. Write to `.design/DESIGN-PREPLAN-BRIEF.md` (overwrite if present). Add `@.design/DESIGN-PREPLAN-BRIEF.md` to the planner's `<required_reading>` in Step 2 — individual files remain on disk for drill-down.
148
-
149
- **Parallel synthesizer note (future):** if a future plan variant spawns N parallel phase-researchers (e.g., one per project-type family), wire synthesize the same way as `skills/map/` Step 3.5.
150
-
151
- ## Research-synthesis persistence (decisions + must-haves)
152
-
153
- When the synthesizer (design-phase-researcher / design-pattern-mapper / design-assumptions-analyzer) produces D-XX decisions and M-XX must-haves, persist each one through MCP instead of editing STATE.md directly.
154
-
155
- For each D-XX decision the synthesizer produces:
156
- - Call `mcp__gdd_state__add_decision` with `{ id: "D-XX", text: "...", status: "locked"|"tentative" }`.
157
-
158
- For each M-XX must-have the synthesizer produces:
159
- - Call `mcp__gdd_state__add_must_have` with `{ id: "M-XX", text: "...", status: "pending" }`.
160
-
161
- Issue these sequentially. Each call is event-emitting and lockfile-safe. Parallel issuance would serialize on the STATE.md lockfile with no throughput gain.
57
+ ---
162
58
 
163
59
  ## Step 2 — Plan
164
60
 
165
- ```
166
- Task("design-planner", """
167
- <required_reading>
168
- @.design/STATE.md
169
- @.design/DESIGN-CONTEXT.md
170
- @reference/audit-scoring.md
171
- @.design/DESIGN-PATTERNS.md
172
- [@.design/DESIGN-RESEARCH.md — only include if research step ran]
173
- [@.design/DESIGN-ASSUMPTIONS.md — only include if assumptions analysis ran]
174
- [@.design/DESIGN-PREPLAN-BRIEF.md — include if Step 1.7 synthesize ran; planner prefers this compact brief over the individual files above]
175
- [@.design/sketches/*/WINNER.md — include all completed sketch winners if present]
176
- [@.design/spikes/*/FINDINGS.md — include all completed spike findings if present]
177
- [@./.claude/skills/design-*-conventions.md — include all project-local design conventions if present]
178
- [@~/.claude/gdd/global-skills/*.md — include all global skills if directory exists; global conventions inform but do not override project-local D-XX decisions]
179
- </required_reading>
180
-
181
- You are the design-planner agent. Read DESIGN-CONTEXT.md and produce .design/DESIGN-PLAN.md
182
- with wave-ordered tasks, acceptance criteria, and (if parallel mode) Touches:/Parallel: fields.
183
-
184
- Context:
185
- - Pipeline stage: plan
186
- - auto_mode: <true|false>
187
- - parallel_mode: <true|false>
188
-
189
- Output file: .design/DESIGN-PLAN.md
190
- Format: per agents/design-planner.md Output Format section.
191
-
192
- Emit `## PLANNING COMPLETE` when done.
193
- """)
194
- ```
195
-
196
- Wait for `## PLANNING COMPLETE`. Call `mcp__gdd_state__update_progress` with `task_progress: "2/3"` and a short `status` summary.
61
+ Spawn `design-planner` with `<required_reading>` covering STATE.md, DESIGN-CONTEXT.md, DESIGN-PATTERNS.md, plus (conditionally) DESIGN-RESEARCH.md, DESIGN-ASSUMPTIONS.md, DESIGN-PREPLAN-BRIEF.md (preferred when 1.7 ran), all `.design/sketches/*/WINNER.md`, all `.design/spikes/*/FINDINGS.md`, and all `./.claude/skills/design-*-conventions.md` + `~/.claude/gdd/global-skills/*.md` (project-local D-XX overrides globals). Wait for `## PLANNING COMPLETE`, then `update_progress` `task_progress: "2/3"`. Full prompt + conditional include syntax: `../../reference/plan-procedure.md` §Step 2.
197
62
 
198
63
  ## Step 3 — Check
199
64
 
200
- ```
201
- Task("design-plan-checker", """
202
- <required_reading>
203
- @.design/STATE.md
204
- @.design/DESIGN-PLAN.md
205
- @.design/DESIGN-CONTEXT.md
206
- </required_reading>
207
-
208
- You are the design-plan-checker agent. Validate DESIGN-PLAN.md will achieve DESIGN-CONTEXT.md
209
- brief goals across 5 dimensions: requirement coverage, task completeness, wave ordering,
210
- must-have derivation, auto mode compliance.
211
-
212
- Context:
213
- - auto_mode: <true|false>
214
-
215
- Output: structured result as response text (no file). Start with `## PLAN CHECK RESULT: PASS`
216
- or `## PLAN CHECK RESULT: ISSUES FOUND`.
217
-
218
- Emit `## PLAN CHECK COMPLETE` when done.
219
- """)
220
- ```
65
+ Spawn `design-plan-checker` to validate DESIGN-PLAN.md against DESIGN-CONTEXT.md across 5 dimensions: requirement coverage, task completeness, wave ordering, must-have derivation, auto-mode compliance. Wait for `## PLAN CHECK COMPLETE`, then `update_progress` `task_progress: "3/3"`. On `## PLAN CHECK RESULT: ISSUES FOUND` + BLOCKER: offer revise/accept/abort (`auto_mode`: auto-accept WARN, abort on BLOCKER). Full prompt + branching: `../../reference/plan-procedure.md` §Step 3.
221
66
 
222
- Wait for `## PLAN CHECK COMPLETE`. Call `mcp__gdd_state__update_progress` with `task_progress: "3/3"` and a short `status` summary.
223
-
224
- If `## PLAN CHECK RESULT: ISSUES FOUND` and any BLOCKER issues:
225
- - Present issues to user and offer: (a) revise plan now — re-spawn design-planner with issue list, (b) accept and proceed, (c) abort.
226
- - If auto_mode: auto-accept WARNING issues, abort on BLOCKER issues.
67
+ ---
227
68
 
228
69
  ## Stage exit
229
70
 
230
- 1. Call `mcp__gdd_state__set_status` with `status: "plan_complete"`.
231
- 2. Call `mcp__gdd_state__checkpoint` to stamp `last_checkpoint` and finalize the plan stage.
71
+ 1. `mcp__gdd_state__set_status` -> `"plan_complete"`.
72
+ 2. `mcp__gdd_state__checkpoint` — stamps `last_checkpoint` and finalizes the plan stage.
232
73
 
233
- The next stage (design) calls `mcp__gdd_state__transition_stage` on entry — this skill does NOT issue the transition itself, preserving the stage-owned-transition discipline established by brief→explore and explore→plan.
74
+ The next stage (design) calls `mcp__gdd_state__transition_stage` on entry — this skill does NOT issue the transition itself, preserving the stage-owned-transition discipline.
234
75
 
235
76
  ## After Completion
236
77
 
237
- Print user-facing summary:
238
- - Plan tasks: N waves, M total tasks
239
- - Files: .design/DESIGN-PLAN.md (and .design/DESIGN-RESEARCH.md if research ran)
240
- - Next: `/get-design-done:design` to execute the plan
78
+ Print: plan tasks (N waves, M total tasks), files written (`.design/DESIGN-PLAN.md`, plus `.design/DESIGN-RESEARCH.md` if research ran), next step `/get-design-done:design`.
241
79
 
242
80
  ## PLAN COMPLETE
243
-
244
- ---
245
-
246
- ## Exploration artifacts & project-local conventions
247
-
248
- When building the planner spawn prompt, also glob for:
249
- - `.design/sketches/*/WINNER.md` — winning sketch rationale (informs directional tasks)
250
- - `.design/spikes/*/FINDINGS.md` — spike verdicts (inform task feasibility)
251
- - `./.claude/skills/design-*-conventions.md` — project-local design conventions
252
-
253
- Include each matching file in `<files_to_read>` / `<required_reading>` so the planner sees them when creating tasks. Spike findings from `.design/spikes/` inform task feasibility; sketch winners inform directional choice; project-local conventions override defaults.
254
-
255
- ## --research mode (removed)
256
-
257
- V2-04 deferred the `--research` flag. Rationale: complexity of an additional
258
- agent spawn + Context7 integration outweighs the benefit of discover-stage
259
- auto-detect for most projects. Use /discover's Auto Mode for research-assisted
260
- discovery instead.
261
-
262
- The optional research step that already exists (Step 1, triggered by complexity
263
- heuristic: 3+ domain scopes OR 6+ decisions) covers the core use case without
264
- a separate CLI flag.
265
-
266
- If --research is reintroduced in a future version, define its scope in
267
- ROADMAP.md V2+ and update this section.
@@ -3,6 +3,7 @@ name: gdd-plant-seed
3
3
  description: "Forward-looking design idea with a trigger condition. Seeds surface automatically when trigger is met. Writes to .design/SEEDS.md."
4
4
  argument-hint: "[--trigger <condition>] [text]"
5
5
  tools: Read, Write, AskUserQuestion
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  # /gdd:plant-seed
@@ -3,6 +3,7 @@ name: gdd-pr-branch
3
3
  description: "Create a clean PR branch by filtering out .design/ and .planning/ commits. Code-review-ready branch for the design implementation work."
4
4
  argument-hint: "[<base-branch>]"
5
5
  tools: Read, Write, Bash
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  # /gdd:pr-branch
@@ -50,13 +50,7 @@ Recommend next stage via the same logic as `/gdd:next` (route by which artifacts
50
50
 
51
51
  ### First-run connection nudge
52
52
 
53
- After the pipeline state block, check the `<connections>` field from the `mcp__gdd_state__get` snapshot. If every entry is `not_configured` AND `.design/config.json > connections_onboarding` is absent (user has never run the wizard), append once:
54
-
55
- ```
56
- Tip: run /gdd:connections to see what integrations can plug in (Figma, Storybook, Chromatic, etc.).
57
- ```
58
-
59
- Suppress the nudge on subsequent invocations in the same session (track via a transient marker file `.design/.connections-nudge-shown` written at first emit, deleted on next session start by no mechanism — so effectively once per session).
53
+ After the pipeline state block, if every `<connections>` entry from the snapshot is `not_configured` AND `.design/config.json > connections_onboarding` is absent, append once per session (transient marker `.design/.connections-nudge-shown`): `Tip: run /gdd:connections to see what integrations can plug in (Figma, Storybook, Chromatic, etc.).`
60
54
 
61
55
  ## Step 3 — Forensic audit (only if `--forensic`)
62
56
 
@@ -5,7 +5,6 @@ tools: Read, Write, Edit, Bash, Grep, Glob, Task
5
5
  color: amber
6
6
  model: inherit
7
7
  default-tier: haiku
8
- tier-rationale: "Orchestration of pre-detected commands and a downstream Haiku classifier. The skill itself does no synthesis — Bash runs do all the work, the classifier agent owns the routing decision."
9
8
  size_budget: M
10
9
  parallel-safe: conditional-on-touches
11
10
  typical-duration-seconds: 180
@@ -21,202 +20,71 @@ writes:
21
20
 
22
21
  ## Role
23
22
 
24
- You are the Stage 4.5 gate that runs between `/gdd:design` and `/gdd:verify`. You answer one question: *does this project's own quality tooling pass against the current working tree?*
23
+ You are the Stage 4.5 gate that runs between `/gdd:design` and `/gdd:verify`. You answer one question: *does this project's own quality tooling pass against the current working tree?* You are NOT a design checker, an a11y checker, or a verifier — you are a thin façade over the project's `lint` / `typecheck` / `test` / visual-regression scripts. Verify refuses entry when those scripts fail.
25
24
 
26
- You are NOT a design checker, an a11y checker, or a verifier. You are a thin façade over the project's existing `lint` / `typecheck` / `test` / visual-regression scripts. You exist so that the verify stage can refuse entry when those scripts fail (and so that the fix loop can be bounded and observable).
25
+ You write exactly two artifacts: the `<quality_gate>` block in `.design/STATE.md`, and lifecycle events to `.design/events.jsonl`. You never block on timeout. You never block on a "skipped" result. You only mark `status="fail"` when the fix loop reaches `max_iters` — even then YOU exit successfully (verify is the consumer that refuses entry).
27
26
 
28
- You write exactly two artifacts:
29
- 1. The `<quality_gate>` block in `.design/STATE.md` (one most-recent `<run/>` element).
30
- 2. Lifecycle events in `.design/events.jsonl` (per Step 6 below).
27
+ ## Configuration
31
28
 
32
- You never block on timeout. You never block on a "skipped" detection result. You only mark `status="fail"` when the fix loop reaches `max_iters` without converging — and even then it is the verify stage's job to refuse entry; YOU exit successfully so the user sees the report regardless.
33
-
34
- ## Configuration Surface
35
-
36
- Read once at start, from `.design/config.json` (all keys optional; defaults documented):
29
+ Read once at start from `.design/config.json` (all optional; defaults in parens):
37
30
 
38
31
  | Key | Default | Purpose |
39
32
  |-----|---------|---------|
40
- | `quality_gate.commands` | `null` | Authoritative list of commands. When provided, skips auto-detection. Each entry is a string the shell can run (e.g. `"npm run lint"`). |
33
+ | `quality_gate.commands` | `null` | Authoritative command list. When provided, skips auto-detection. |
41
34
  | `quality_gate.timeout_seconds` | `600` | Total wall-clock budget for Step 2. On timeout: warn + proceed (D-07). |
42
35
  | `quality_gate.max_iters` | `3` | Hard cap on Step 4 fix-loop iterations. |
43
36
 
44
- Missing config file is not an error — defaults apply.
45
-
46
- ## Step 1 — Detection chain
47
-
48
- Per D-06, resolve the active command list with this 3-tier fallback. Stop at the first tier that produces ≥ 1 command:
49
-
50
- ### Tier 1 — Authoritative config
51
-
52
- If `.design/config.json` carries `quality_gate.commands` and the array is non-empty, use it verbatim. Skip Tier 2 and Tier 3.
53
-
54
- ### Tier 2 — Auto-detect from `package.json#scripts`
55
-
56
- If `package.json` exists at the project root, read its `scripts` object. Match script names against the following allowlist (case-sensitive, exact match unless noted):
57
-
58
- | Script name | Notes |
59
- |-------------|-------|
60
- | `lint` | Always include if present. |
61
- | `typecheck` | Always include if present. |
62
- | `tsc` | Include if `typecheck` is absent (substitute, not duplicate). |
63
- | `test` | Include if present. |
64
- | `chromatic` | Include if present (visual-regression). |
65
- | `test:visual` | Include if present (visual-regression). |
37
+ ## Step 1 — Detection chain (D-06 3-tier fallback)
66
38
 
67
- **Excluded by name** (intentionally — too slow for a Stage 4.5 gate):
68
- - `test:e2e`
69
- - `test:integration` (only if a separate `test` exists)
70
- - Any script whose name starts with `dev:`, `build:`, `start:`.
39
+ Stop at the first tier that produces ≥ 1 command:
71
40
 
72
- For each matched script, the command to run is `npm run <script-name>` (use `pnpm run` or `yarn` only if the project's root carries a corresponding lockfile and the user's `.design/config.json` lists `quality_gate.package_manager`; otherwise default to `npm run` for portability).
73
-
74
- If `package.json` does not exist, or `scripts` is empty, or no allowlisted name matches, advance to Tier 3.
75
-
76
- ### Tier 3 — Skip with notice
77
-
78
- Emit a `quality_gate_skipped` event with `reason: "no commands resolved"` (Step 6). Write a `<run/>` element with `status="skipped"`, `commands_run=""`, `iteration=0`, `started_at` and `completed_at` set to the same timestamp. Exit successfully with status `skipped`. The verify-entry gate (Plan 25-07 territory) does NOT block on `skipped`.
41
+ 1. **Authoritative config.** If `.design/config.json` has `quality_gate.commands` non-empty, use verbatim.
42
+ 2. **Auto-detect from `package.json#scripts`** — match against allowlist: `lint`, `typecheck`, `tsc` (only if `typecheck` absent), `test`, `chromatic`, `test:visual`. Exclude by name: `test:e2e`, `test:integration` (if separate `test`), anything starting `dev:`, `build:`, `start:`. Run via `npm run <name>` unless `quality_gate.package_manager` overrides.
43
+ 3. **Skip with notice.** Emit `quality_gate_skipped` (Step 6) and write a `<run/>` with `status="skipped"`. Verify treats skipped as non-blocking.
79
44
 
80
45
  ## Step 2 — Parallel run
81
46
 
82
- Open Step 2 by emitting `quality_gate_started` with the resolved command list (Step 6).
83
-
84
- For each command produced by Step 1, spawn a **separate** `Bash` invocation; collect `{command, exit_code, stdout, stderr}` for each. Run them concurrently — the gate's wall-clock budget is the slowest command, not their sum.
85
-
86
- The combined wall-clock budget is `quality_gate.timeout_seconds` (default 600). If the budget elapses before all commands complete:
87
-
88
- 1. Emit `quality_gate_timeout` with the names of commands that did not finish.
89
- 2. Mark `status="timeout"`, `commands_run=<comma-joined attempted names>`, and treat unfinished commands as having no failure to classify.
90
- 3. Skip Step 3 / Step 4 (no fix loop on timeout — it would just compound the slowness).
91
- 4. Proceed to Step 5 (STATE write) and Step 6 (final event).
92
- 5. **Exit successfully.** Verify entry treats `timeout` as a warn, not a block.
93
-
94
- If all commands complete within budget, advance to Step 3.
47
+ Emit `quality_gate_started`. Spawn each command in a separate `Bash`; collect `{command, exit_code, stdout, stderr}`. Wall-clock budget is `timeout_seconds` (default 600). On timeout: emit `quality_gate_timeout`, mark `status="timeout"`, skip Steps 3–4, proceed to Step 5. Exit successfully — verify treats timeout as a warn.
95
48
 
96
49
  ## Step 3 — Classification
97
50
 
98
- Spawn the `quality-gate-runner` agent via the `Task` tool. Pass an input payload of the shape:
99
-
100
- ```json
101
- {
102
- "outputs": [
103
- {"command": "npm run lint", "exit_code": 0, "stderr": ""},
104
- {"command": "npm run typecheck", "exit_code": 1, "stderr": "<verbatim stderr>"},
105
- {"command": "npm run test", "exit_code": 0, "stderr": ""}
106
- ]
107
- }
108
- ```
109
-
110
- The agent emits a single JSON object on stdout (see `agents/quality-gate-runner.md`):
111
-
112
- ```json
113
- {
114
- "status": "pass" | "fail",
115
- "classified_failures": {
116
- "lint": ["…"],
117
- "type": ["…"],
118
- "test": ["…"],
119
- "visual": ["…"]
120
- }
121
- }
122
- ```
123
-
124
- When `status === "pass"`, advance directly to Step 5 with `iteration` equal to the current loop counter (starts at `1` on the first pass).
125
-
126
- When `status === "fail"`, advance to Step 4.
51
+ Spawn `quality-gate-runner` agent via `Task` with payload `{outputs: [{command, exit_code, stderr}, ...]}`. Agent returns `{status: "pass"|"fail", classified_failures: {lint, type, test, visual}}`. `pass` → Step 5. `fail` → Step 4.
127
52
 
128
53
  ## Step 4 — Fix loop (D-08)
129
54
 
130
- If `iteration >= quality_gate.max_iters` (default 3), the loop is exhausted:
131
- - Emit `quality_gate_fail` with the final classified failures.
132
- - Mark `status="fail"`, persist the final `iteration`, and proceed to Step 5.
133
- - **Exit successfully.** Verify entry refuses on `status="fail"`; YOU do not throw.
55
+ If `iteration >= max_iters`: emit `quality_gate_fail`, mark `status="fail"`, Step 5, exit successfully. Verify-entry refuses on `fail`; YOU do not throw.
134
56
 
135
- Otherwise, increment `iteration` and emit `quality_gate_iteration` with the current value. Spawn the existing `design-fixer` agent (Phase 5) via `Task` with classified failures as context — pass the same shape produced by Step 3 plus the original `outputs[]` for verbatim error context. After the fixer returns, restart from Step 2 (re-run all commands; do not prune to "only the previously failing ones" — fixes can introduce regressions in formerly-clean commands).
136
-
137
- The loop terminates when either Step 3 returns `status="pass"` or `iteration` reaches `max_iters`.
57
+ Else: increment `iteration`, emit `quality_gate_iteration`, spawn `design-fixer` via `Task` with classified failures + original outputs. After fixer returns, restart from Step 2 (re-run all commands — fixes can introduce regressions).
138
58
 
139
59
  ## Step 5 — STATE write
140
60
 
141
- Open `.design/STATE.md`. Mutate the parsed state's `quality_gate` field to:
142
-
143
- ```ts
144
- {
145
- run: {
146
- started_at: <ISO 8601 — captured at Step 2 entry>,
147
- completed_at: <ISO 8601 — now>,
148
- status: <"pass" | "fail" | "timeout" | "skipped">,
149
- iteration: <final loop counter>,
150
- commands_run: <comma-joined names of commands that completed>,
151
- extra_attrs: {},
152
- },
153
- }
154
- ```
155
-
156
- Persist via `mcp__gdd_state__set_quality_gate` (the underlying mutator wiring is named in this contract; the SDK MCP layer wraps every mutator method, so the surface inherits free from the parser/mutator extension landed in this plan). Until the MCP tool exists (Plan 25-07 surfaces it in the verify-stage integration), use the `apply()` mutator from `scripts/lib/gdd-state/mutator.ts` directly:
157
-
158
- ```ts
159
- apply(raw, (state) => {
160
- state.quality_gate = { run };
161
- return state;
162
- });
163
- ```
164
-
165
- Either path is acceptable. The on-disk shape is identical.
61
+ Mutate `state.quality_gate.run` to `{started_at, completed_at, status, iteration, commands_run, extra_attrs:{}}`. Persist via `mcp__gdd_state__set_quality_gate` or `apply()` mutator from `scripts/lib/gdd-state/mutator.ts` — identical on-disk shape.
166
62
 
167
63
  ## Step 6 — Event emission (D-09)
168
64
 
169
- Emit lifecycle events to `.design/events.jsonl` via the existing `appendEvent()` surface exported from `scripts/lib/event-stream/index.ts` — the same module Phase 22 telemetry, the budget-enforcer, the read-injection scanner, and the gdd-state MCP server already write through. Do not roll a bespoke writer; the singleton in `event-stream/index.ts` is persist-first / broadcast-second and never throws on the persist path, which is the contract this skill relies on.
170
-
171
- Import shape:
65
+ Use `appendEvent` from `scripts/lib/event-stream/index.ts` — persist-first / broadcast-second; never throws on persist path. `ts` / `cycle` / `stage` are stamped by the writer. Six event types (one per lifecycle position):
172
66
 
173
- ```ts
174
- import { appendEvent } from '../../scripts/lib/event-stream/index.ts';
175
- ```
67
+ | Event | When | Payload |
68
+ |-------|------|---------|
69
+ | `quality_gate_started` | Step 2 entry, once | `commands`, `timeout_seconds`, `max_iters` |
70
+ | `quality_gate_iteration` | Step 4 retry (iter ≥ 2) | `iteration` |
71
+ | `quality_gate_pass` | Step 3 returned pass — terminal | `iteration`, `commands_run` |
72
+ | `quality_gate_fail` | Step 4 hit `max_iters` — terminal | `iteration`, `classified_failures` |
73
+ | `quality_gate_timeout` | Step 2 budget elapsed — terminal warn | `unfinished_commands` |
74
+ | `quality_gate_skipped` | Step 1 tier 3 — terminal no-op | `reason` |
176
75
 
177
- Each emission is a single `appendEvent({...})` call with `type` set to one of the six names in the table below. Pass the event-specific payload fields verbatim — `appendEvent` stamps `_meta` (pid, host, source) and the JSONL writer captures the canonical `ts` from the writer surface. The `cycle` and `stage` fields are stamped by the same path used elsewhere in Phase 22+ (consumers match on `type`; treat `ts`, `cycle`, `stage` as injected, not caller-supplied).
76
+ `appendEvent` swallows persist failures — events are observability, not correctness. STATE.md (Step 5) is the durable record.
178
77
 
179
- One event per JSONL line. Schema and lifecycle map:
78
+ ## Output
180
79
 
181
- | Event | When (lifecycle position) | Required fields |
182
- |-------|---------------------------|-----------------|
183
- | `quality_gate_started` | Step 2 entry — fired ONCE per skill invocation, immediately before any `Bash` spawn. Carries the resolved command list from Step 1 so downstream telemetry can correlate `started` → terminal event. | `commands` (string[]), `timeout_seconds` (number), `max_iters` (number) |
184
- | `quality_gate_iteration` | Step 4 entry — fired ONCE per retry, with `iteration` set to the new (post-increment) loop counter. The first run is implicit (covered by `started`); only retries `≥ 2` emit `iteration`. | `iteration` (int ≥ 2) |
185
- | `quality_gate_pass` | Step 3 returned `status: "pass"` — terminal happy path. Fires before Step 5 (STATE write) so a consumer tailing the stream sees the verdict before the on-disk run record. | `iteration` (final loop counter), `commands_run` (string[]) |
186
- | `quality_gate_fail` | Step 4 reached `max_iters` without convergence — terminal failure path. The verify-entry gate (Step 2.5 of `skills/verify/SKILL.md`) is the sole consumer that *acts* on this; this skill exits successfully regardless. | `iteration` (final loop counter, equal to `max_iters`), `classified_failures` (object — same shape as `quality-gate-runner` agent output) |
187
- | `quality_gate_timeout` | Step 2 wall-clock budget elapsed — terminal warn path (per D-07 verify treats this as a warning, not a block). Fires before Step 5 STATE write, same ordering as `pass`/`fail`. | `unfinished_commands` (string[]) |
188
- | `quality_gate_skipped` | Step 1 Tier 3 fired (no commands resolved) — terminal no-op path. Fires before the synthetic `<run/>` is written to STATE.md. | `reason` (string — e.g. `"no commands resolved"`) |
189
-
190
- All six events carry the standard `ts`, `cycle`, `stage` fields injected by `appendEvent` / the writer. Do not invent additional event names — the verify-entry gate, reflector, and Phase 22 telemetry consumers match on this exact list. Do not emit any of these names from any path other than the lifecycle positions above (e.g., do not emit `quality_gate_started` again on a Step 4 retry — that's what `quality_gate_iteration` is for).
191
-
192
- **Failure-mode contract:** `appendEvent()` swallows persist failures internally. If the writer cannot open `.design/events.jsonl`, the skill MUST still proceed — the event stream is observability, not correctness. The STATE.md write in Step 5 is the durable record consumers MUST rely on; events.jsonl is the supplementary timeline.
193
-
194
- ## Output Contract
195
-
196
- Emit a single JSON object on stdout summarizing the run for the caller:
197
-
198
- ```json
199
- {
200
- "status": "pass",
201
- "iteration": 1,
202
- "commands_run": ["npm run lint", "npm run typecheck", "npm run test"],
203
- "started_at": "2026-04-29T10:00:00Z",
204
- "completed_at": "2026-04-29T10:01:42Z"
205
- }
206
- ```
207
-
208
- Schema:
209
- - `status` — `pass | fail | timeout | skipped`.
210
- - `iteration` — final loop counter; `0` for `skipped`.
211
- - `commands_run` — array of command strings actually executed.
212
- - `started_at` / `completed_at` — ISO 8601, copied from the STATE write.
213
-
214
- The skill exits with shell exit code `0` on every terminal status — including `fail`. The verify-entry gate is the sole consumer of the `fail` status; this skill never throws to the orchestrator.
80
+ Emit one JSON object on stdout: `{status, iteration, commands_run, started_at, completed_at}`. Shell exit code `0` on every terminal status — `fail` included. Verify-entry is the sole consumer that acts on `fail`.
215
81
 
216
82
  ## Constraints
217
83
 
218
- - **Do not** prune the command list across iterations — always re-run everything in Step 2.
219
- - **Do not** spawn `quality-gate-runner` more than once per loop iteration. Spawn `design-fixer` more than once if and only if the loop iterates.
220
- - **Do not** read or write any STATE block other than `<quality_gate>` and `<position>` (the latter only as required by the standard write contract; the gate is a checkpoint, not a stage transition, so `<position>` updates are limited to `last_checkpoint`).
221
- - **Do not** invoke verify or design — Stage 4.5 sits strictly between them.
222
- - Treat exit codes via the standard convention: `0` = clean; non-zero = failure to be classified. Do not interpret stderr content for the pass/fail decision — the agent does that classification, you do not.
84
+ - Do not prune the command list across iterations — re-run everything in Step 2.
85
+ - Do not spawn `quality-gate-runner` more than once per iteration.
86
+ - Do not read/write any STATE block other than `<quality_gate>` (and `<position>.last_checkpoint`).
87
+ - Do not invoke verify or design — Stage 4.5 sits strictly between.
88
+ - Exit-code convention: `0` clean; non-zero classified as failure. Do not interpret stderr for pass/fail.
89
+
90
+ For verify-side severity classification (when this gate's `status="fail"` reaches the verify entry gate), see `./reference/threat-modeling.md` — STRIDE dispositions are the audit-side framework that informs whether a failed quality gate blocks ship.
@@ -3,6 +3,7 @@ name: gdd-quick
3
3
  description: "Run the pipeline with optional agents skipped for speed. Skips: phase-researcher, design-assumptions-analyzer, design-integration-checker. Keeps: planner, executor, verifier, auditor."
4
4
  argument-hint: "[--skip <agent-name>] [stage]"
5
5
  tools: Read, Task
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  # /gdd:quick
@@ -3,6 +3,7 @@ name: gdd-reapply-patches
3
3
  description: "Reapply user modifications to reference/ files after a plugin update. Detects customizations via git diff against pristine baseline."
4
4
  argument-hint: "[--dry-run]"
5
5
  tools: Read, Write, Bash
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  # gdd-reapply-patches
@@ -3,6 +3,7 @@ name: gdd-recall
3
3
  description: "Search cross-cycle memory: decisions, learnings, experience archives. Returns ranked matches."
4
4
  argument-hint: "<query> [--reindex]"
5
5
  tools: Read, Write, Bash
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  @reference/retrieval-contract.md
@@ -3,6 +3,7 @@ name: gdd-resume
3
3
  description: "Restore session context from a numbered checkpoint. Lists available checkpoints when no argument given."
4
4
  argument-hint: "[<N>]"
5
5
  tools: Read, Write, Bash, Glob, AskUserQuestion, mcp__gdd_state__get, mcp__gdd_state__set_status, mcp__gdd_state__resolve_blocker, mcp__gdd_state__checkpoint, mcp__gdd_status, mcp__gdd_phase_current, mcp__gdd_plans_list, mcp__gdd_decisions_list
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  @reference/retrieval-contract.md