@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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +142 -0
- package/SKILL.md +1 -1
- package/agents/design-verifier.md +17 -0
- package/hooks/gdd-decision-injector.js +149 -3
- package/package.json +1 -1
- package/reference/accessibility.md +4 -0
- package/reference/adr-format.md +96 -0
- package/reference/apply-reflections-procedure.md +68 -0
- package/reference/architecture-vocabulary.md +102 -0
- package/reference/audit-scoring.md +14 -0
- package/reference/cache-policy.md +126 -0
- package/reference/color-theory.md +279 -0
- package/reference/compare-rubric.md +171 -0
- package/reference/composition.md +349 -0
- package/reference/connections-onboarding.md +417 -0
- package/reference/context-md-format.md +106 -0
- package/reference/contrast-advanced.md +205 -0
- package/reference/darkmode-audit-procedure.md +258 -0
- package/reference/debug-feedback-loops.md +119 -0
- package/reference/design-procedure.md +304 -0
- package/reference/design-system-guidance.md +2 -0
- package/reference/discover-procedure.md +204 -0
- package/reference/explore-procedure.md +267 -0
- package/reference/form-patterns.md +2 -0
- package/reference/health-mcp-detection.md +44 -0
- package/reference/health-skill-length-report.md +69 -0
- package/reference/heuristics.md +84 -0
- package/reference/i18n.md +554 -0
- package/reference/iconography.md +2 -0
- package/reference/milestone-completeness-rubric.md +87 -0
- package/reference/motion-interpolate.md +1 -0
- package/reference/palette-catalog.md +2 -0
- package/reference/peer-cli-protocol.md +161 -0
- package/reference/plan-procedure.md +278 -0
- package/reference/proportion-systems.md +267 -0
- package/reference/registry.json +204 -1
- package/reference/registry.schema.json +1 -1
- package/reference/router-rules.md +84 -0
- package/reference/rtl-cjk-cultural.md +2 -0
- package/reference/scan-procedure.md +731 -0
- package/reference/shared-preamble.md +78 -6
- package/reference/skill-authoring-contract.md +128 -0
- package/reference/start-procedure.md +115 -0
- package/reference/style-doc-procedure.md +150 -0
- package/reference/style-vocabulary.md +2 -0
- package/reference/threat-modeling.md +101 -0
- package/reference/typography.md +4 -0
- package/reference/verify-procedure.md +512 -0
- package/reference/visual-hierarchy-layout.md +4 -0
- package/scripts/validate-skill-length.cjs +283 -0
- package/skills/add-backlog/SKILL.md +1 -0
- package/skills/analyze-dependencies/SKILL.md +33 -122
- package/skills/apply-reflections/SKILL.md +1 -40
- package/skills/audit/SKILL.md +3 -1
- package/skills/bandit-status/SKILL.md +31 -66
- package/skills/benchmark/SKILL.md +15 -55
- package/skills/brief/SKILL.md +12 -1
- package/skills/cache-manager/SKILL.md +3 -57
- package/skills/check-update/SKILL.md +38 -75
- package/skills/compare/SKILL.md +29 -269
- package/skills/complete-cycle/SKILL.md +1 -1
- package/skills/connections/SKILL.md +21 -427
- package/skills/continue/SKILL.md +1 -0
- package/skills/darkmode/SKILL.md +32 -287
- package/skills/debug/SKILL.md +11 -8
- package/skills/design/SKILL.md +27 -245
- package/skills/discover/SKILL.md +26 -133
- package/skills/discuss/SKILL.md +18 -2
- package/skills/explore/SKILL.md +42 -176
- package/skills/fast/SKILL.md +1 -0
- package/skills/figma-write/SKILL.md +2 -2
- package/skills/health/SKILL.md +11 -33
- package/skills/help/SKILL.md +1 -0
- package/skills/list-assumptions/SKILL.md +1 -0
- package/skills/map/SKILL.md +8 -31
- package/skills/new-cycle/SKILL.md +3 -1
- package/skills/next/SKILL.md +1 -0
- package/skills/note/SKILL.md +1 -0
- package/skills/optimize/SKILL.md +21 -44
- package/skills/pause/SKILL.md +1 -0
- package/skills/peer-cli-add/SKILL.md +26 -108
- package/skills/peer-cli-customize/SKILL.md +22 -42
- package/skills/peers/SKILL.md +33 -57
- package/skills/plan/SKILL.md +33 -220
- package/skills/plant-seed/SKILL.md +1 -0
- package/skills/pr-branch/SKILL.md +1 -0
- package/skills/progress/SKILL.md +1 -7
- package/skills/quality-gate/SKILL.md +34 -166
- package/skills/quick/SKILL.md +1 -0
- package/skills/reapply-patches/SKILL.md +1 -0
- package/skills/recall/SKILL.md +1 -0
- package/skills/resume/SKILL.md +1 -0
- package/skills/review-backlog/SKILL.md +1 -0
- package/skills/router/SKILL.md +3 -59
- package/skills/scan/SKILL.md +36 -675
- package/skills/settings/SKILL.md +1 -0
- package/skills/ship/SKILL.md +1 -0
- package/skills/sketch/SKILL.md +1 -1
- package/skills/sketch-wrap-up/SKILL.md +13 -54
- package/skills/spike/SKILL.md +1 -1
- package/skills/spike-wrap-up/SKILL.md +12 -46
- package/skills/start/SKILL.md +13 -112
- package/skills/stats/SKILL.md +1 -0
- package/skills/style/SKILL.md +18 -140
- package/skills/synthesize/SKILL.md +1 -0
- package/skills/timeline/SKILL.md +1 -0
- package/skills/todo/SKILL.md +1 -0
- package/skills/turn-closeout/SKILL.md +36 -56
- package/skills/undo/SKILL.md +1 -0
- package/skills/update/SKILL.md +1 -0
- package/skills/verify/SKILL.md +42 -457
- package/skills/warm-cache/SKILL.md +3 -35
- package/skills/zoom-out/SKILL.md +26 -0
package/skills/plan/SKILL.md
CHANGED
|
@@ -1,267 +1,80 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan
|
|
3
|
-
description: "Stage 3 of 5
|
|
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
|
-
|
|
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
|
-
|
|
15
|
+
---
|
|
22
16
|
|
|
23
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
25
|
+
## Flags + parallelism
|
|
34
26
|
|
|
35
|
-
|
|
36
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
85
|
-
""")
|
|
86
|
-
```
|
|
39
|
+
## Step 1 — Optional Research (skip if `auto_mode`)
|
|
87
40
|
|
|
88
|
-
Wait for `## RESEARCH COMPLETE
|
|
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
|
-
|
|
125
|
-
confidence levels and evidence citations.
|
|
47
|
+
## Step 1.6 — Assumptions Analysis (skip if `auto_mode`)
|
|
126
48
|
|
|
127
|
-
|
|
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
|
-
|
|
51
|
+
## Step 1.7 — Synthesize pre-plan inputs (Plan 10.1-04, D-13/D-15)
|
|
132
52
|
|
|
133
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
231
|
-
2.
|
|
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
|
|
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
|
|
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
|
package/skills/progress/SKILL.md
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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
|
|
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 >=
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
174
|
-
|
|
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
|
-
|
|
76
|
+
`appendEvent` swallows persist failures — events are observability, not correctness. STATE.md (Step 5) is the durable record.
|
|
178
77
|
|
|
179
|
-
|
|
78
|
+
## Output
|
|
180
79
|
|
|
181
|
-
|
|
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
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
-
|
|
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.
|
package/skills/quick/SKILL.md
CHANGED
|
@@ -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
|
package/skills/recall/SKILL.md
CHANGED
package/skills/resume/SKILL.md
CHANGED
|
@@ -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
|