@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
@@ -20,6 +20,8 @@ This catalog gives design agents and the brief-stage palette picker a pre-verifi
20
20
 
21
21
  **Step 4 — Adjust for brand uniqueness.** All values here are mid-point baselines. Shift the primary hue ±15°, adjust lightness ±10%, or introduce a proprietary tint to differentiate the brand. Do not use these hex values verbatim in production without at least one brand-distinguishing adjustment.
22
22
 
23
+ **See:** [`./color-theory.md`](./color-theory.md) §Color Harmonies for the OKLCH model that grounds these hue-shift instructions (perceptual lightness preserved across hues; sRGB ±15° distorts perceived brightness asymmetrically across yellow/blue).
24
+
23
25
  **Step 5 — Verify pairing.** After choosing the palette, consult `reference/typography.md` for matching typeface pairings that reinforce the vertical's tone.
24
26
 
25
27
  ## WCAG Compliance Notes
@@ -0,0 +1,161 @@
1
+ ---
2
+ name: peer-cli-protocol
3
+ type: heuristic
4
+ version: 1.0.0
5
+ phase: 28.5
6
+ tags: [peer-cli, acp, asp, protocol, verification-ladder, add-peer, customize, cc-multi-cli]
7
+ last_updated: 2026-05-18
8
+ ---
9
+
10
+ <!-- Procedural patterns adapted from greenpolo/cc-multi-cli (Apache 2.0). See ../NOTICE for full attribution. -->
11
+
12
+ # Peer-CLI Protocol — Add + Customize Procedures
13
+
14
+ Procedural reference for the peer-CLI delegation layer. Centralizes the verification
15
+ ladder, adapter scaffolding shape, rewire-discipline, and Windows quirks so the three
16
+ peer-CLI skills (`peers`, `peer-cli-add`, `peer-cli-customize`) can cross-link rather
17
+ than each carry the full procedure inline. See `./peer-protocols.md` for the protocol
18
+ shape (JSON-RPC framing, initialize handshake, error envelope); this file is the
19
+ procedure layer that sits above it.
20
+
21
+ ## Verification ladder (run before any code edit when adding a peer)
22
+
23
+ When a user wants to add a brand-new peer to the capability matrix, walk these four
24
+ rungs in order. Stop at the first rung that fails — do not proceed to scaffold a broken
25
+ adapter.
26
+
27
+ ### Rung 1 — Binary on PATH
28
+
29
+ `which <peer-binary>` (POSIX) or `where <peer-binary>` (Windows). If exit non-zero, stop
30
+ and ask the user to install the peer first. Adapters cannot be tested without the binary.
31
+
32
+ ### Rung 2 — Handshake test
33
+
34
+ Spawn the peer with the protocol entry point:
35
+
36
+ - **ACP peers** — `<peer-binary> acp` (or whatever the peer documents — Gemini uses
37
+ `gemini acp`; some peers use a flag).
38
+ - **ASP peers** — `<peer-binary> app-server` (Codex convention; other ASP peers may
39
+ differ).
40
+
41
+ Send an `initialize` JSON-RPC message over stdin with `protocolVersion: '2025-06-18'`
42
+ (ACP) or `service_name: 'gdd_peer_delegation'` (ASP). Capture the reply on stdout. A
43
+ valid JSON-RPC response with `result.protocolVersion` (ACP) or `result.threadId` (ASP)
44
+ means the peer speaks the protocol. No valid reply within 5 seconds means either
45
+ wrong-protocol or non-standard entry point — stop and ask the user for the correct
46
+ invocation.
47
+
48
+ ### Rung 3 — Model-ID `-preview`-suffix trap
49
+
50
+ Many peers expose preview models with a `-preview` suffix (e.g., `gpt-5-preview` vs
51
+ `gpt-5`). The suffix drifts: today's preview is tomorrow's GA. Capture the peer's model
52
+ list (most peers expose `<peer-binary> models` or similar) and document parent names in
53
+ the new entry's `provider_model_id` field so the runtime-models entry survives the
54
+ suffix flipping.
55
+
56
+ ### Rung 4 — Windows quirks
57
+
58
+ If the peer-binary ends in `.cmd` and the user is on Windows, confirm
59
+ `scripts/lib/peer-cli/spawn-cmd.cjs` will pick it up. That module handles `.cmd`
60
+ detection per Plan 27-03 / D-04. Document any other Windows-specific quirks in the new
61
+ adapter's leading comment.
62
+
63
+ ## Adapter scaffold shape
64
+
65
+ Use the existing five adapters at `../scripts/lib/peer-cli/adapters/{codex,gemini,cursor,copilot,qwen}.cjs`
66
+ as templates. Pick the closest match by protocol (ASP if `<protocol> = asp`, otherwise
67
+ ACP). Each adapter exports:
68
+
69
+ - `claims(role)` — boolean predicate against `ROLES_CLAIMED`.
70
+ - `dispatch({command, args, cwd, env}, role, text, opts)` — async dispatch with optional
71
+ `opts.onNotification` callback.
72
+ - `ROLES_CLAIMED` — array of role identifiers the peer claims.
73
+ - `ROLE_PREFIX` — per-role prompt prefix object (empty string when no prefix needed).
74
+ - `name`, `protocol` — string identifiers.
75
+
76
+ Canonical skeleton (ACP variant; for ASP swap to `createAspClient` from `asp-client.cjs`):
77
+
78
+ ```js
79
+ 'use strict';
80
+ const { createAcpClient } = require('../acp-client.cjs');
81
+
82
+ const ROLES_CLAIMED = ['<role-1>', '<role-2>'];
83
+ const ROLE_PREFIX = { '<role-1>': '', '<role-2>': '' };
84
+
85
+ function claims(role) { return ROLES_CLAIMED.includes(role); }
86
+ async function dispatch({ command, args, cwd, env }, role, text, opts) {
87
+ if (!claims(role)) throw new Error(`<peer-id> does not claim role: ${role}`);
88
+ const client = createAcpClient({ command, args, cwd, env });
89
+ try {
90
+ await client.initialize({ protocolVersion: '2025-06-18' });
91
+ return await client.prompt((ROLE_PREFIX[role] || '') + text, { onNotification: opts?.onNotification });
92
+ } finally { await client.close(); }
93
+ }
94
+ module.exports = { claims, dispatch, ROLES_CLAIMED, ROLE_PREFIX, name: '<peer-id>', protocol: '<protocol>' };
95
+ ```
96
+
97
+ ## Three-file footprint (peer add)
98
+
99
+ A new peer integrates cleanly with a 3-file diff plus the capability-matrix doc:
100
+
101
+ 1. **`scripts/lib/peer-cli/adapters/<new-peer-id>.cjs`** — new adapter.
102
+ 2. **`scripts/lib/install/runtimes.cjs`** — add a `peerBinary` field (platform-aware:
103
+ `<binary>.cmd` on Windows, plain `<binary>` elsewhere).
104
+ 3. **`reference/peer-cli-capabilities.md`** — add a row to the capability matrix and a
105
+ per-peer section with the verification evidence from Rung 1–4 above.
106
+ 4. **`scripts/lib/peer-cli/registry.cjs`** — append to `CAPABILITY_MATRIX` (and
107
+ `KNOWN_PEERS` if separate).
108
+
109
+ ## Rewire discipline (customize)
110
+
111
+ When rewiring `delegate_to:` on a specific agent's frontmatter:
112
+
113
+ - Validate the new value against the capability matrix BEFORE editing the file. The
114
+ peer must exist; the role must be in the peer's `claims` list.
115
+ - Three frontmatter cases: field absent + add it, field present + change it, field
116
+ present + remove it (revert to default).
117
+ - Re-run `npm run validate:frontmatter` after every edit; offer to revert if it fails.
118
+ - The peer must also be in `.design/config.json#peer_cli.enabled_peers` for dispatch
119
+ to fire at runtime — but that's a runtime concern, not a frontmatter validation
120
+ concern.
121
+
122
+ ## Verification gate (after any peer-CLI change)
123
+
124
+ Run, in order, until each passes:
125
+
126
+ 1. `npx tsc --noEmit` — clean.
127
+ 2. `node --test tests/peer-cli-registry.test.cjs tests/peer-cli-adapters.test.cjs` —
128
+ no regression on existing tests.
129
+ 3. `node --test tests/reference-registry.test.cjs` — capability-matrix doc is in
130
+ `reference/registry.json`.
131
+ 4. `npm run validate:frontmatter` — no agent's `delegate_to:` field is broken.
132
+
133
+ Any failure: surface the error and offer to revert.
134
+
135
+ ## Edge cases
136
+
137
+ - **Peer speaks neither ACP nor ASP** — gdd v1.27 ships only those two protocols. Stop
138
+ and document the gap in `.design/RESEARCH.md` for a future phase.
139
+ - **Peer claims a role no existing peer claims** — fine, capability matrix is open. But
140
+ document the role in `peer-cli-capabilities.md` so future peers can compete on it.
141
+ - **Peer claims ALL roles** (generalist) — accept, but flag in the per-peer section.
142
+ Generalist peers are usually weaker than specialist peers; the bandit will sort it
143
+ out via measurement.
144
+ - **Peer-ID collides with an existing peer** — fail. Peer-IDs must be globally unique.
145
+ - **Rewire target peer not in capability matrix** — direct user to `peer-cli-add` first;
146
+ do not allow the frontmatter edit until the peer exists in the matrix.
147
+ - **Rewire target role peer does not claim** — refuse with a list of what the peer DOES
148
+ claim. Suggest a closer match when obvious.
149
+
150
+ ## Cross-references
151
+
152
+ - `./peer-protocols.md` — protocol-level reference (JSON-RPC framing, handshake shape).
153
+ - `./peer-cli-capabilities.md` — capability matrix doc (per-peer claimed roles).
154
+ - `../scripts/lib/peer-cli/registry.cjs` (Plan 27-05) — capability-matrix data source.
155
+ - `../scripts/lib/peer-cli/adapters/*.cjs` (Plan 27-04) — adapter template.
156
+ - `../scripts/lib/peer-cli/spawn-cmd.cjs` (Plan 27-03) — Windows `.cmd` handling.
157
+ - `../scripts/lib/install/runtimes.cjs` (Plan 27-11) — `peerBinary` field per runtime.
158
+ - `../skills/peers/SKILL.md` — discovery surface.
159
+ - `../skills/peer-cli-add/SKILL.md` — add-peer flow.
160
+ - `../skills/peer-cli-customize/SKILL.md` — rewire flow.
161
+ - `../NOTICE` — Apache 2.0 attribution to greenpolo/cc-multi-cli.
@@ -0,0 +1,278 @@
1
+ ---
2
+ name: plan-procedure
3
+ type: meta-rules
4
+ version: 1.0.0
5
+ phase: 28.5
6
+ tags: [plan, procedure, extracted, pipeline-stage, research, planner, checker]
7
+ last_updated: 2026-05-18
8
+ ---
9
+
10
+ Source: extracted from `skills/plan/SKILL.md` (Phase 28.5 rework — D-10 extract-then-link).
11
+ The skill's load-bearing workflow stays in `../skills/plan/SKILL.md`; this file holds the
12
+ detail the agent reaches for when executing a specific step (agent spawn prompts, chromatic
13
+ scoping, synthesizer wiring, research-synthesis persistence, exploration artifact globbing).
14
+
15
+ # Plan Procedure
16
+
17
+ Detailed procedure for the get-design-done `plan` Stage 3 orchestrator. Companion to
18
+ `../skills/plan/SKILL.md`. Read this file when executing a specific plan step; the
19
+ SKILL.md keeps the load-bearing workflow + decision tree, this file holds the deep
20
+ agent prompts and pre-plan research wiring.
21
+
22
+ ---
23
+
24
+ ## Stage entry
25
+
26
+ 1. `mcp__gdd_state__transition_stage` with `to: "plan"`.
27
+ - Gate failure surfaces `error.context.blockers` to the user; do not advance.
28
+ 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.
29
+
30
+ 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.
31
+
32
+ ## Flag Parsing
33
+
34
+ Parse $ARGUMENTS:
35
+ - `--auto` -> auto_mode=true (skip approvals, skip optional research)
36
+ - `--parallel` -> parallel_mode=true (planner fills Touches:/Parallel: fields)
37
+
38
+ ## Parallelism Decision (before any multi-agent spawn)
39
+
40
+ - Read `.design/config.json` `parallelism` (or defaults from `reference/config-schema.md`).
41
+ - Apply rules from `reference/parallelism-rules.md`.
42
+ - Plan's pipeline is inherently sequential (researcher -> pattern-mapper -> planner -> checker). Expected verdict: **serial** (rule 1).
43
+
44
+ <!-- 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. -->
45
+
46
+ After the parallelism decision is made:
47
+ - Call `mcp__gdd_state__update_progress` with `task_progress: "<current>/<total>"` and `status: "plan_parallelism_decided: batch_size=<N>, reason=<short-reason>"`.
48
+
49
+ ## Probe Chromatic connection
50
+
51
+ Run at stage entry, after reading STATE.md:
52
+
53
+ Step C1 — CLI presence:
54
+ Bash: command -v chromatic 2>/dev/null || npx chromatic --version 2>/dev/null
55
+ -> found -> proceed to Step C2
56
+ -> not found -> chromatic: not_configured (skip all Chromatic steps)
57
+
58
+ Step C2 — Token check:
59
+ Bash: test -n "${CHROMATIC_PROJECT_TOKEN}"
60
+ -> true -> chromatic: available
61
+ -> false -> chromatic: unavailable
62
+
63
+ Also check: if storybook: not_configured -> chromatic effectively unavailable (emit note, do not run).
64
+
65
+ 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.
66
+
67
+ ## Chromatic Change-Risk Scoping (when chromatic: available)
68
+
69
+ Before writing DESIGN-PLAN.md, if chromatic: available:
70
+ 1. Identify token/component files to be changed (from DESIGN-CONTEXT.md scope)
71
+ 2. Run: Bash: npx chromatic --project-token $CHROMATIC_PROJECT_TOKEN --trace-changed=expanded --dry-run 2>&1
72
+ 3. Parse output — count story files that depend on changed source files
73
+ 4. Pass story count to design-planner.md (see design-planner.md Chromatic Change-Risk section)
74
+ If unavailable: design-planner proceeds without story-count annotation.
75
+
76
+ ---
77
+
78
+ ## Step 1 — Optional Research (skip if auto_mode)
79
+
80
+ Complexity heuristic: if DESIGN-CONTEXT.md `<domain>` spans 3+ scopes OR `<decisions>` count > 6 -> spawn design-phase-researcher. Otherwise skip.
81
+
82
+ If spawning:
83
+
84
+ ```
85
+ Task("design-phase-researcher", """
86
+ <required_reading>
87
+ @.design/STATE.md
88
+ @.design/DESIGN-CONTEXT.md
89
+ </required_reading>
90
+
91
+ You are the design-phase-researcher agent. Identify the project type from DESIGN-CONTEXT.md
92
+ and research relevant design patterns, pitfalls, and stack-specific conventions.
93
+
94
+ Output file: .design/DESIGN-RESEARCH.md
95
+ Target: ~100 lines, ~2 min budget.
96
+
97
+ Emit `## RESEARCH COMPLETE` when done.
98
+ """)
99
+ ```
100
+
101
+ Wait for `## RESEARCH COMPLETE`. Call `mcp__gdd_state__update_progress` with `task_progress: "1/3"` and a short `status` summary.
102
+
103
+ ## Step 1.5 — Pattern Mapping (mandatory, brownfield protection)
104
+
105
+ ```
106
+ Task("design-pattern-mapper", """
107
+ <required_reading>
108
+ @.design/STATE.md
109
+ @.design/DESIGN-CONTEXT.md
110
+ @reference/audit-scoring.md
111
+ </required_reading>
112
+
113
+ You are design-pattern-mapper. Grep the codebase for existing design patterns
114
+ (color tokens, spacing scale, typography conventions, component styling) and
115
+ write .design/DESIGN-PATTERNS.md. Classify by design concern — NOT by code
116
+ architecture (no controllers, services, middleware vocabulary).
117
+
118
+ Output file: .design/DESIGN-PATTERNS.md
119
+ Emit `## MAPPING COMPLETE` when done.
120
+ """)
121
+ ```
122
+
123
+ Wait for `## MAPPING COMPLETE`. Call `mcp__gdd_state__update_progress` with `task_progress: "1/3"` and a short `status` summary.
124
+
125
+ ## Step 1.6 — Assumptions Analysis (optional, same flag as research)
126
+
127
+ If assumptions analysis enabled (skip if auto_mode):
128
+
129
+ ```
130
+ Task("design-assumptions-analyzer", """
131
+ <required_reading>
132
+ @.design/STATE.md
133
+ @.design/DESIGN-CONTEXT.md
134
+ @.design/DESIGN-PATTERNS.md
135
+ </required_reading>
136
+
137
+ You are design-assumptions-analyzer. Surface hidden design assumptions with
138
+ confidence levels and evidence citations.
139
+
140
+ Emit `## ANALYSIS COMPLETE` when done.
141
+ """)
142
+ ```
143
+
144
+ Wait for `## ANALYSIS COMPLETE`.
145
+
146
+ ## Step 1.7 — Synthesize pre-plan research inputs (Plan 10.1-04, D-13/D-15)
147
+
148
+ 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.
149
+
150
+ Skill("synthesize", {
151
+ outputs: [
152
+ (if Step 1 ran) "=== from design-phase-researcher ===\n" + <read .design/DESIGN-RESEARCH.md>,
153
+ (if Step 1.5 ran) "=== from design-pattern-mapper ===\n" + <read .design/DESIGN-PATTERNS.md>,
154
+ (if Step 1.6 ran) "=== from design-assumptions-analyzer ===\n" + <read .design/DESIGN-ASSUMPTIONS.md>
155
+ ],
156
+ 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.",
157
+ output_shape: "markdown"
158
+ })
159
+
160
+ 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.
161
+
162
+ **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.
163
+
164
+ ## Research-synthesis persistence (decisions + must-haves)
165
+
166
+ 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.
167
+
168
+ For each D-XX decision the synthesizer produces:
169
+ - Call `mcp__gdd_state__add_decision` with `{ id: "D-XX", text: "...", status: "locked"|"tentative" }`.
170
+
171
+ For each M-XX must-have the synthesizer produces:
172
+ - Call `mcp__gdd_state__add_must_have` with `{ id: "M-XX", text: "...", status: "pending" }`.
173
+
174
+ Issue these sequentially. Each call is event-emitting and lockfile-safe. Parallel issuance would serialize on the STATE.md lockfile with no throughput gain.
175
+
176
+ ## Step 2 — Plan
177
+
178
+ ```
179
+ Task("design-planner", """
180
+ <required_reading>
181
+ @.design/STATE.md
182
+ @.design/DESIGN-CONTEXT.md
183
+ @reference/audit-scoring.md
184
+ @.design/DESIGN-PATTERNS.md
185
+ [@.design/DESIGN-RESEARCH.md — only include if research step ran]
186
+ [@.design/DESIGN-ASSUMPTIONS.md — only include if assumptions analysis ran]
187
+ [@.design/DESIGN-PREPLAN-BRIEF.md — include if Step 1.7 synthesize ran; planner prefers this compact brief over the individual files above]
188
+ [@.design/sketches/*/WINNER.md — include all completed sketch winners if present]
189
+ [@.design/spikes/*/FINDINGS.md — include all completed spike findings if present]
190
+ [@./.claude/skills/design-*-conventions.md — include all project-local design conventions if present]
191
+ [@~/.claude/gdd/global-skills/*.md — include all global skills if directory exists; global conventions inform but do not override project-local D-XX decisions]
192
+ </required_reading>
193
+
194
+ You are the design-planner agent. Read DESIGN-CONTEXT.md and produce .design/DESIGN-PLAN.md
195
+ with wave-ordered tasks, acceptance criteria, and (if parallel mode) Touches:/Parallel: fields.
196
+
197
+ Context:
198
+ - Pipeline stage: plan
199
+ - auto_mode: <true|false>
200
+ - parallel_mode: <true|false>
201
+
202
+ Output file: .design/DESIGN-PLAN.md
203
+ Format: per agents/design-planner.md Output Format section.
204
+
205
+ Emit `## PLANNING COMPLETE` when done.
206
+ """)
207
+ ```
208
+
209
+ Wait for `## PLANNING COMPLETE`. Call `mcp__gdd_state__update_progress` with `task_progress: "2/3"` and a short `status` summary.
210
+
211
+ ## Step 3 — Check
212
+
213
+ ```
214
+ Task("design-plan-checker", """
215
+ <required_reading>
216
+ @.design/STATE.md
217
+ @.design/DESIGN-PLAN.md
218
+ @.design/DESIGN-CONTEXT.md
219
+ </required_reading>
220
+
221
+ You are the design-plan-checker agent. Validate DESIGN-PLAN.md will achieve DESIGN-CONTEXT.md
222
+ brief goals across 5 dimensions: requirement coverage, task completeness, wave ordering,
223
+ must-have derivation, auto mode compliance.
224
+
225
+ Context:
226
+ - auto_mode: <true|false>
227
+
228
+ Output: structured result as response text (no file). Start with `## PLAN CHECK RESULT: PASS`
229
+ or `## PLAN CHECK RESULT: ISSUES FOUND`.
230
+
231
+ Emit `## PLAN CHECK COMPLETE` when done.
232
+ """)
233
+ ```
234
+
235
+ Wait for `## PLAN CHECK COMPLETE`. Call `mcp__gdd_state__update_progress` with `task_progress: "3/3"` and a short `status` summary.
236
+
237
+ If `## PLAN CHECK RESULT: ISSUES FOUND` and any BLOCKER issues:
238
+ - Present issues to user and offer: (a) revise plan now — re-spawn design-planner with issue list, (b) accept and proceed, (c) abort.
239
+ - If auto_mode: auto-accept WARNING issues, abort on BLOCKER issues.
240
+
241
+ ## Stage exit
242
+
243
+ 1. Call `mcp__gdd_state__set_status` with `status: "plan_complete"`.
244
+ 2. Call `mcp__gdd_state__checkpoint` to stamp `last_checkpoint` and finalize the plan stage.
245
+
246
+ 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.
247
+
248
+ ## After Completion
249
+
250
+ Print user-facing summary:
251
+ - Plan tasks: N waves, M total tasks
252
+ - Files: .design/DESIGN-PLAN.md (and .design/DESIGN-RESEARCH.md if research ran)
253
+ - Next: `/get-design-done:design` to execute the plan
254
+
255
+ ---
256
+
257
+ ## Exploration artifacts & project-local conventions
258
+
259
+ When building the planner spawn prompt, also glob for:
260
+ - `.design/sketches/*/WINNER.md` — winning sketch rationale (informs directional tasks)
261
+ - `.design/spikes/*/FINDINGS.md` — spike verdicts (inform task feasibility)
262
+ - `./.claude/skills/design-*-conventions.md` — project-local design conventions
263
+
264
+ 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.
265
+
266
+ ## --research mode (removed)
267
+
268
+ V2-04 deferred the `--research` flag. Rationale: complexity of an additional
269
+ agent spawn + Context7 integration outweighs the benefit of discover-stage
270
+ auto-detect for most projects. Use /discover's Auto Mode for research-assisted
271
+ discovery instead.
272
+
273
+ The optional research step that already exists (Step 1, triggered by complexity
274
+ heuristic: 3+ domain scopes OR 6+ decisions) covers the core use case without
275
+ a separate CLI flag.
276
+
277
+ If --research is reintroduced in a future version, define its scope in
278
+ ROADMAP.md V2+ and update this section.