@hegemonart/get-design-done 1.41.0 → 1.42.0

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 (130) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +81 -0
  4. package/README.md +2 -0
  5. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +48 -0
  6. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +95 -0
  7. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +92 -0
  8. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +170 -0
  9. package/dist/claude-code/.claude/skills/audit/SKILL.md +79 -0
  10. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +94 -0
  11. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +65 -0
  12. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +43 -0
  13. package/dist/claude-code/.claude/skills/brief/SKILL.md +128 -0
  14. package/dist/claude-code/.claude/skills/budget/SKILL.md +45 -0
  15. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +66 -0
  16. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +126 -0
  17. package/dist/claude-code/.claude/skills/check-update/SKILL.md +98 -0
  18. package/dist/claude-code/.claude/skills/compare/SKILL.md +82 -0
  19. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +171 -0
  20. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +81 -0
  21. package/dist/claude-code/.claude/skills/connections/SKILL.md +71 -0
  22. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +608 -0
  23. package/dist/claude-code/.claude/skills/continue/SKILL.md +24 -0
  24. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +76 -0
  25. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +258 -0
  26. package/dist/claude-code/.claude/skills/debug/SKILL.md +41 -0
  27. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +119 -0
  28. package/dist/claude-code/.claude/skills/design/SKILL.md +99 -0
  29. package/dist/claude-code/.claude/skills/design/design-procedure.md +304 -0
  30. package/dist/claude-code/.claude/skills/discover/SKILL.md +72 -0
  31. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +222 -0
  32. package/dist/claude-code/.claude/skills/discuss/SKILL.md +96 -0
  33. package/dist/claude-code/.claude/skills/do/SKILL.md +45 -0
  34. package/dist/claude-code/.claude/skills/explore/SKILL.md +105 -0
  35. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +267 -0
  36. package/dist/claude-code/.claude/skills/export/SKILL.md +30 -0
  37. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +98 -0
  38. package/dist/claude-code/.claude/skills/fast/SKILL.md +91 -0
  39. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +64 -0
  40. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +39 -0
  41. package/dist/claude-code/.claude/skills/graphify/SKILL.md +49 -0
  42. package/dist/claude-code/.claude/skills/health/SKILL.md +99 -0
  43. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +44 -0
  44. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +69 -0
  45. package/dist/claude-code/.claude/skills/help/SKILL.md +87 -0
  46. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +61 -0
  47. package/dist/claude-code/.claude/skills/locale/SKILL.md +51 -0
  48. package/dist/claude-code/.claude/skills/map/SKILL.md +89 -0
  49. package/dist/claude-code/.claude/skills/migrate/SKILL.md +70 -0
  50. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +37 -0
  51. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +87 -0
  52. package/dist/claude-code/.claude/skills/new-project/SKILL.md +53 -0
  53. package/dist/claude-code/.claude/skills/next/SKILL.md +68 -0
  54. package/dist/claude-code/.claude/skills/note/SKILL.md +48 -0
  55. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +86 -0
  56. package/dist/claude-code/.claude/skills/optimize/SKILL.md +97 -0
  57. package/dist/claude-code/.claude/skills/pause/SKILL.md +77 -0
  58. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +88 -0
  59. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +161 -0
  60. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +90 -0
  61. package/dist/claude-code/.claude/skills/peers/SKILL.md +96 -0
  62. package/dist/claude-code/.claude/skills/plan/SKILL.md +105 -0
  63. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +278 -0
  64. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +48 -0
  65. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +32 -0
  66. package/dist/claude-code/.claude/skills/progress/SKILL.md +95 -0
  67. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +90 -0
  68. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +101 -0
  69. package/dist/claude-code/.claude/skills/quick/SKILL.md +44 -0
  70. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +32 -0
  71. package/dist/claude-code/.claude/skills/recall/SKILL.md +75 -0
  72. package/dist/claude-code/.claude/skills/reflect/SKILL.md +85 -0
  73. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +120 -0
  74. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +53 -0
  75. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +120 -0
  76. package/dist/claude-code/.claude/skills/resume/SKILL.md +93 -0
  77. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +46 -0
  78. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +42 -0
  79. package/dist/claude-code/.claude/skills/roi/SKILL.md +54 -0
  80. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +35 -0
  81. package/dist/claude-code/.claude/skills/router/SKILL.md +89 -0
  82. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +65 -0
  83. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +78 -0
  84. package/dist/claude-code/.claude/skills/router/router-rules.md +84 -0
  85. package/dist/claude-code/.claude/skills/scan/SKILL.md +92 -0
  86. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +732 -0
  87. package/dist/claude-code/.claude/skills/settings/SKILL.md +87 -0
  88. package/dist/claude-code/.claude/skills/ship/SKILL.md +48 -0
  89. package/dist/claude-code/.claude/skills/sketch/SKILL.md +78 -0
  90. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +92 -0
  91. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +79 -0
  92. package/dist/claude-code/.claude/skills/spike/SKILL.md +67 -0
  93. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +86 -0
  94. package/dist/claude-code/.claude/skills/start/SKILL.md +67 -0
  95. package/dist/claude-code/.claude/skills/start/start-procedure.md +115 -0
  96. package/dist/claude-code/.claude/skills/stats/SKILL.md +51 -0
  97. package/dist/claude-code/.claude/skills/style/SKILL.md +71 -0
  98. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +150 -0
  99. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +94 -0
  100. package/dist/claude-code/.claude/skills/timeline/SKILL.md +66 -0
  101. package/dist/claude-code/.claude/skills/todo/SKILL.md +64 -0
  102. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +95 -0
  103. package/dist/claude-code/.claude/skills/undo/SKILL.md +31 -0
  104. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +54 -0
  105. package/dist/claude-code/.claude/skills/update/SKILL.md +56 -0
  106. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +78 -0
  107. package/dist/claude-code/.claude/skills/verify/SKILL.md +113 -0
  108. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +512 -0
  109. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +81 -0
  110. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +82 -0
  111. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +26 -0
  112. package/package.json +5 -1
  113. package/reference/DEPRECATIONS.md +14 -0
  114. package/reference/registry.json +7 -0
  115. package/reference/skill-placeholders.md +71 -0
  116. package/scripts/lib/build/factory.cjs +62 -0
  117. package/scripts/lib/build/harness-configs.cjs +64 -0
  118. package/scripts/lib/manifest/README.md +46 -0
  119. package/scripts/lib/manifest/harnesses.cjs +3 -0
  120. package/scripts/lib/manifest/harnesses.json +91 -0
  121. package/scripts/lib/manifest/index.cjs +26 -0
  122. package/scripts/lib/manifest/loader.cjs +51 -0
  123. package/scripts/lib/manifest/prose-denylist.json +126 -0
  124. package/scripts/lib/manifest/schemas/harnesses.schema.json +38 -0
  125. package/scripts/lib/manifest/schemas/prose-denylist.schema.json +41 -0
  126. package/scripts/lib/manifest/schemas/skills.schema.json +33 -0
  127. package/scripts/lib/manifest/skills.json +255 -0
  128. package/sdk/cli/commands/build.ts +106 -0
  129. package/sdk/cli/index.js +84 -2
  130. package/sdk/cli/index.ts +7 -0
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: start-procedure
3
+ type: heuristic
4
+ version: 1.0.0
5
+ phase: 28.5
6
+ tags: [start, first-run, proof-path, scan, writer-agent, handoff]
7
+ last_updated: 2026-05-18
8
+ ---
9
+
10
+ # Start Skill — Full Procedure
11
+
12
+ Extracted from `skills/start/SKILL.md` per Phase 28.5 D-10 (extract-then-link, never delete
13
+ content). The skill keeps its arguments table, step headings, and non-goals; the per-step
14
+ operational detail (interview JSON shape, scan invocation, writer spawn payload, handoff
15
+ template) lives here so the SKILL stays under the 100-line cap.
16
+
17
+ The companion file `./start-interview.md` (Phase 27 ship) holds the 5-question copy,
18
+ defaults, and validation rules. This file documents what `/gdd:start` does WITH the answers.
19
+
20
+ ## Step 0 — Dismiss-only shortcut
21
+
22
+ If invoked with `--dismiss-nudge`:
23
+
24
+ 1. `touch ~/.claude/gdd-nudge-dismissed` (Windows: equivalent). Ignore errors silently.
25
+ 2. Print exactly: `Nudge dismissed. Delete ~/.claude/gdd-nudge-dismissed to re-enable.`
26
+ 3. Exit with `## START COMPLETE` marker.
27
+
28
+ Do not proceed to any other step.
29
+
30
+ ## Step 1 — Detect UI root
31
+
32
+ Run the detector:
33
+
34
+ ```bash
35
+ node "${CLAUDE_PLUGIN_ROOT}/scripts/lib/detect-ui-root.cjs" "$(pwd)"
36
+ ```
37
+
38
+ Capture the JSON output. Branches:
39
+
40
+ - `kind: "backend-only"` → print the frontend-only diagnostic below, write nothing, exit with `## START COMPLETE`. The diagnostic copy is:
41
+ > `/gdd:start` is for frontend codebases. This repo looks backend-only (detected `<framework>`). The plugin can still help with design references and component libraries imported by your clients — but there is no UI surface here to scan. Exiting without creating `.design/`.
42
+ - `kind: null` (no package.json, no UI dir) → print a short "Nothing recognizable here — point me at a frontend repo and try again." and exit.
43
+ - Any other `kind` → proceed with `detected.path` as the scan root.
44
+
45
+ ## Step 2 — Run the 5-question interview
46
+
47
+ Read `./start-interview.md` for the exact question copy, defaults, and validation rules.
48
+
49
+ If `--skip-interview`, skip this step and use the defaults documented in that file.
50
+
51
+ Otherwise, ask the five questions in order using `AskUserQuestion`:
52
+
53
+ 1. Pain point (text, required, single-line cap 120 chars)
54
+ 2. Target area confirmation (detected path)
55
+ 3. Budget / latency preference (enum: fast / balanced / thorough)
56
+ 4. Framework + design-system confirmation (from detection)
57
+ 5. Figma / canvas workflow (enum: figma / canvas / neither / skip)
58
+
59
+ Any early exit at Q1 → abort with a one-line pointer to `/gdd:scan`.
60
+
61
+ Store the answers + detection result in `.design/.start-context.json`:
62
+
63
+ ```json
64
+ {
65
+ "schema_version": "1.0",
66
+ "detected": { "kind": "...", "path": "...", "framework": "...", "design_system": "...", "confidence": 0.85 },
67
+ "interview": { "pain": "...", "target_area": "...", "budget": "balanced", "framework_confirmed": true, "design_system_confirmed": true, "figma_workflow": "skip" },
68
+ "generated_at": "<ISO-8601>"
69
+ }
70
+ ```
71
+
72
+ `.design/` is created here for the first time. `.design/STATE.md` is NOT written.
73
+
74
+ ## Step 3 — Scan findings
75
+
76
+ Run the findings engine:
77
+
78
+ ```bash
79
+ node "${CLAUDE_PLUGIN_ROOT}/scripts/lib/start-findings-engine.cjs" \
80
+ --root "<detected.path>" \
81
+ --budget "<budget>" \
82
+ --pain "<pain_point>"
83
+ ```
84
+
85
+ Capture the JSON. The output carries at most three findings, each with stable IDs `F1`..`F3`, plus `bestFirstProofId` (may be null).
86
+
87
+ Append the engine output to `.design/.start-context.json` under a `scan` key.
88
+
89
+ ## Step 4 — Spawn the writer
90
+
91
+ Dispatch `Task` with:
92
+
93
+ - `subagent_type: design-start-writer`
94
+ - `description: "Write .design/START-REPORT.md"`
95
+ - `prompt:` a short instruction pointing the agent at `.design/.start-context.json` and asking it to emit the report per its Output contract. Include a reminder that it must produce exactly 7 H2 sections plus the JSON block, and must not write `STATE.md`.
96
+
97
+ Wait for the agent to complete. The agent writes `.design/START-REPORT.md`.
98
+
99
+ ## Step 5 — Print the handoff
100
+
101
+ Read the final line of `.design/START-REPORT.md` to capture the suggested command.
102
+
103
+ Print exactly (one line, no emoji):
104
+
105
+ ```
106
+ Report written to .design/START-REPORT.md. Next: run <suggested_command> to see the first proof.
107
+ ```
108
+
109
+ If `bestFirstProofId` was null, the suggested command is `/gdd:brief` (the default fallback).
110
+
111
+ Emit `## START COMPLETE` and exit.
112
+
113
+ ## Failure handling
114
+
115
+ Every error path exits with `## START COMPLETE` and a one-line pointer. Do not half-write files: if the writer agent fails, keep `.design/.start-context.json` and tell the user they can rerun. Do not delete `.design/` unless it was empty before the run.
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: gdd-stats
3
+ description: "Cycle stats — decisions made, tasks completed, commits, timeline, git metrics."
4
+ tools: Read, Bash
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # /gdd:stats
9
+
10
+ **Role:** Print cycle metrics.
11
+
12
+ ## Step 1 — Read state
13
+
14
+ Read `.design/STATE.md`. Extract:
15
+ - `cycle:` and `started_at` (or per-cycle start date if present in CYCLES.md)
16
+ - D-XX count under `<decisions>`
17
+
18
+ ## Step 2 — Collect git metrics
19
+
20
+ Let `<since>` = cycle start date (fallback to STATE.md `started_at`).
21
+
22
+ ```bash
23
+ git log --oneline --since="<since>" | wc -l # commits
24
+ git diff --stat HEAD~N HEAD # files changed since cycle start
25
+ ```
26
+
27
+ If git unavailable, print `git: unavailable` and skip git metrics.
28
+
29
+ ## Step 3 — Count todos
30
+
31
+ Read `.design/TODO.md` if present:
32
+ - pending: count `- [ ]`
33
+ - in-progress: count `- [-]`
34
+ - done: count `- [x]`
35
+ - group pending by P0/P1/P2/P3 section
36
+
37
+ ## Step 4 — Output
38
+
39
+ ```
40
+ ━━━ Cycle stats ━━━
41
+ Cycle: cycle-1 Started: 2026-04-18
42
+ Decisions made: 12 (D-01..D-12)
43
+ Tasks completed: 8 / 10
44
+ Git commits: 23
45
+ Files changed: 47
46
+ Open todos: 3 (P0: 1, P1: 2, P2: 0, P3: 0)
47
+ Agents spawned: — (no task log)
48
+ ━━━━━━━━━━━━━━━━━━
49
+ ```
50
+
51
+ ## STATS COMPLETE
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: gdd-style
3
+ description: "Generate a component handoff doc at `.design/DESIGN-STYLE-<ComponentName>.md` by dispatching the `design-doc-writer` agent in one of two modes: post-pipeline (uses `DESIGN-SUMMARY.md`) or pre-pipeline fallback (uses `DESIGN.md` + source). Use when the user wants a single-component spec covering tokens, states, and AI-slop detection. Invoke with a ComponentName, or with no argument to list available components."
4
+ argument-hint: "[ComponentName]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # gdd-style — Component Handoff Doc Generator
9
+
10
+ Generates a per-component style spec at `.design/DESIGN-STYLE-[ComponentName].md`. This is a **standalone command**, not a pipeline stage.
11
+
12
+ For the full mode-detection logic, source-resolution fallback chain (10 paths), agent-spawn payload, and STYL-05 section spec, see `./style-doc-procedure.md`. For the cross-skill output discipline (artifact prefix, completion marker, MUST-NOT-write list), see `../../reference/shared-preamble.md#output-contract-reminders`. For the raw-hex audit signal used in Token Semantic Health Score, see `../../reference/shared-preamble.md#token-first-reasoning`.
13
+
14
+ Output artifact naming: `.design/DESIGN-STYLE-[ComponentName].md` — Title-cased component name, one file per invocation.
15
+
16
+ ---
17
+
18
+ ## Scope
19
+
20
+ This command is **additive and non-destructive**:
21
+
22
+ - It is NOT a pipeline stage — no `.design/STATE.md` read or write contract.
23
+ - Output lives in the `DESIGN-STYLE-*.md` namespace — distinct from the pipeline namespace (`DESIGN.md`, `DESIGN-CONTEXT.md`, `DESIGN-PLAN.md`, `DESIGN-SUMMARY.md`, `DESIGN-VERIFICATION.md`).
24
+ - It does not modify any pipeline artifact.
25
+ - It does not invoke the pipeline router.
26
+ - One doc per invocation — no batch mode in v3.
27
+
28
+ This separation is a pre-roadmap decision recorded in `.planning/STATE.md`: utility commands use distinct prefixes (`DESIGN-STYLE-[Component].md`); the pipeline owns the `DESIGN-*.md` namespace without qualifiers.
29
+
30
+ ---
31
+
32
+ ## Workflow
33
+
34
+ 1. **Argument check** — if `$ARGUMENTS` is empty, enter list mode (see `./style-doc-procedure.md#component-source-resolution`); display available components from `src/components/` + `.design/tasks/`, then exit.
35
+ 2. **Mode detect** — `DESIGN-SUMMARY.md` exists → post-pipeline; else `DESIGN.md` exists → pre-pipeline; else abort with a "run /get-design-done scan first" message. Full decision tree at `./style-doc-procedure.md#mode-detection`.
36
+ 3. **Source resolve** — search the 10-path fallback chain for a file matching the ComponentName. On zero matches: abort. On multiple matches: prompt the user to disambiguate.
37
+ 4. **Agent spawn** — dispatch `design-doc-writer` with the mode-specific `<required_reading>` block and the STYL-05 section list. The full Task payload + STYL-05 spec live in `./style-doc-procedure.md#agent-spawn-payload`.
38
+ 5. **Confirm + report** — after the agent emits `## DOC COMPLETE`, verify the output path exists and report success.
39
+
40
+ ---
41
+
42
+ ## Constraints
43
+
44
+ This command MUST NOT (per `../../reference/shared-preamble.md#output-contract-reminders`):
45
+
46
+ - Write to `DESIGN.md`, `DESIGN-SUMMARY.md`, `DESIGN-VERIFICATION.md`, `DESIGN-CONTEXT.md`, or `.design/STATE.md`
47
+ - Invoke the pipeline router (this command is a leaf invocation, not a pipeline stage)
48
+ - Require Figma or Refero MCPs — v3 uses only local source files and `.design/` artifacts (MCP enrichment is reserved for a future version)
49
+ - Produce more than one output file per invocation — no batch mode in v3
50
+
51
+ ---
52
+
53
+ ## Examples
54
+
55
+ **Example 1: Named component**
56
+
57
+ ```
58
+ /get-design-done style Button
59
+ ```
60
+
61
+ Resolves `src/components/Button.tsx`, detects post-pipeline mode (DESIGN-SUMMARY.md exists), spawns `design-doc-writer` with `pipeline_complete: true`, writes `.design/DESIGN-STYLE-Button.md`.
62
+
63
+ **Example 2: No argument (list mode)**
64
+
65
+ ```
66
+ /get-design-done style
67
+ ```
68
+
69
+ Globs component files and prompts the user to specify a ComponentName. Exits without generating any file. See `./style-doc-procedure.md#component-source-resolution` for the full glob path list.
70
+
71
+ ## STYLE COMPLETE
@@ -0,0 +1,150 @@
1
+ ---
2
+ name: style-doc-procedure
3
+ type: meta-rules
4
+ version: 1.0.0
5
+ phase: 28.5
6
+ tags: [style, handoff, component-spec, doc-writer, procedure, extracted]
7
+ last_updated: 2026-05-18
8
+ ---
9
+
10
+ Source: extracted from `skills/style/SKILL.md` (Phase 28.5 rework — D-10 extract-then-link).
11
+ The skill's load-bearing routing + mode-detection stays in `../skills/style/SKILL.md`; this file
12
+ holds the agent-spawn payload, source-resolution paths, and the per-section spec the
13
+ `design-doc-writer` agent produces. See `./shared-preamble.md#output-contract-reminders` for
14
+ the cross-skill output discipline.
15
+
16
+ # Style Doc Procedure
17
+
18
+ Detailed procedure for the `gdd-style` standalone command — companion to
19
+ `../skills/style/SKILL.md`. Read this file when executing the agent-spawn step (Step 4 in the
20
+ skill) or when wiring the source-resolution fallback chain. The SKILL.md keeps the load-bearing
21
+ mode detection + decision tree; this file holds the deep methodology.
22
+
23
+ ---
24
+
25
+ ## Mode Detection
26
+
27
+ ```
28
+ If .design/DESIGN-SUMMARY.md exists:
29
+ mode = post-pipeline (STYL-03)
30
+ pipeline_complete = true
31
+
32
+ Elif .design/DESIGN.md exists:
33
+ mode = pre-pipeline (STYL-04)
34
+ pipeline_complete = false
35
+
36
+ Else:
37
+ Abort: "No .design/ artifacts found. Run /get-design-done scan first to initialize."
38
+ ```
39
+
40
+ The mode controls which files are supplied to the agent in `<required_reading>`.
41
+
42
+ ---
43
+
44
+ ## Component Source Resolution
45
+
46
+ Search for a source file matching the provided ComponentName (case-insensitive):
47
+
48
+ 1. `src/components/[ComponentName].tsx`
49
+ 2. `src/components/[ComponentName].jsx`
50
+ 3. `src/components/[ComponentName].vue`
51
+ 4. `src/components/[ComponentName].svelte`
52
+ 5. `src/**/[ComponentName]/index.tsx`
53
+ 6. `src/**/[ComponentName]/index.jsx`
54
+ 7. `components/[ComponentName].tsx`
55
+ 8. `components/[ComponentName].jsx`
56
+ 9. `components/[ComponentName].vue`
57
+ 10. `components/[ComponentName].svelte`
58
+
59
+ **If multiple matches found:** Present the list to the user and prompt them to specify the exact path. Do not proceed until a single file is selected.
60
+
61
+ **If zero matches found:** Abort with: "Component [ComponentName] not found in expected paths. Verify the name matches a file in src/components/ or components/."
62
+
63
+ When `$ARGUMENTS` is empty, the skill enters **list mode** — glob the same source roots, also list task names from `.design/tasks/*.md` (if directory exists), display the list, and prompt the user to specify a ComponentName. Exit without generating any file.
64
+
65
+ ---
66
+
67
+ ## Agent Spawn Payload
68
+
69
+ Once mode and source path are resolved, spawn the `design-doc-writer` agent:
70
+
71
+ ```
72
+ Task("design-doc-writer", """
73
+ <required_reading>
74
+ [If pipeline_complete=true:]
75
+ @.design/STATE.md
76
+ @.design/DESIGN-SUMMARY.md
77
+ @.design/DESIGN-CONTEXT.md
78
+ @<component_source_path>
79
+ [Else (pipeline_complete=false):]
80
+ @.design/DESIGN.md
81
+ @<component_source_path>
82
+ @reference/anti-patterns.md
83
+ @reference/audit-scoring.md
84
+ </required_reading>
85
+
86
+ Generate a handoff spec for component <ComponentName>.
87
+
88
+ Context:
89
+ component_name: <ComponentName>
90
+ component_source_path: <resolved absolute path>
91
+ pipeline_complete: <true|false>
92
+ output_path: .design/DESIGN-STYLE-<ComponentName>.md
93
+
94
+ Produce the doc per STYL-05 sections:
95
+ - Spacing Tokens (used by component)
96
+ - Color Tokens (used by component)
97
+ - Typography Scale (used by component)
98
+ - Component States (default, hover, focus, active, disabled, etc.)
99
+ - Token Semantic Health Score (raw-hex-ratio formula — see ./shared-preamble.md#token-first-reasoning)
100
+ - AI-Slop Detection (using ./anti-patterns.md BAN/SLOP patterns)
101
+ [If pipeline_complete=true:]
102
+ - Decisions Applied (D-XX from DESIGN-SUMMARY.md that mention this component)
103
+
104
+ Emit ## DOC COMPLETE when the output file is written.
105
+ """)
106
+ ```
107
+
108
+ After the agent emits `## DOC COMPLETE`, confirm the file exists at `output_path` and report success to the user.
109
+
110
+ ---
111
+
112
+ ## STYL-05 Section Spec
113
+
114
+ Each generated `.design/DESIGN-STYLE-[ComponentName].md` SHOULD contain (in this order):
115
+
116
+ 1. **Spacing Tokens** — every spacing token the component uses (paddings, gaps, margins). Cross-reference `./composition.md` for the 4 px / 8 px modular scale discipline.
117
+ 2. **Color Tokens** — every color token the component uses (background, foreground, border, focus ring, state-overlays). Cross-reference `./palette-catalog.md` for naming convention and `./shared-preamble.md#token-first-reasoning` for the raw-hex audit threshold.
118
+ 3. **Typography Scale** — type ramps the component reaches into (label, body, code, etc.) with size + line-height + weight. Cross-reference `./typography.md`.
119
+ 4. **Component States** — default, hover, focus, active, disabled, loading, error. Each row: token diff vs default.
120
+ 5. **Token Semantic Health Score** — raw-hex ratio = `raw_hex_count / total_color_uses`. Healthy < 5 %.
121
+ 6. **AI-Slop Detection** — apply `./anti-patterns.md` `BAN-*` and `SLOP-*` patterns to the component source. List violations.
122
+ 7. **Decisions Applied** (post-pipeline only) — D-XX entries from `DESIGN-SUMMARY.md` that name or describe this component.
123
+
124
+ ---
125
+
126
+ ## Examples
127
+
128
+ **Example 1: Named component**
129
+
130
+ ```
131
+ /get-design-done style Button
132
+ ```
133
+
134
+ - Resolves component: `src/components/Button.tsx`
135
+ - Detects mode: DESIGN-SUMMARY.md exists → post-pipeline
136
+ - Spawns `design-doc-writer` with `pipeline_complete: true`
137
+ - Output: `.design/DESIGN-STYLE-Button.md`
138
+
139
+ **Example 2: No argument (list mode)**
140
+
141
+ ```
142
+ /get-design-done style
143
+ ```
144
+
145
+ - Globs component files from `src/components/`
146
+ - Displays available components and exits without generating any file.
147
+
148
+ ---
149
+
150
+ *Imported by: `../skills/style/SKILL.md`. Maintained as part of Phase 28.5 (Bucket 2 rework).*
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: synthesize
3
+ description: "Streaming synthesizer — collapses N parallel-agent markdown outputs into one compact merged summary via a single Haiku 4.5 call. Invoked inline by orchestrators (skills/map/, skills/discover/, skills/plan/) after parallel spawns return. Not user-invocable."
4
+ tools: Read, Task
5
+ user-invocable: false
6
+ disable-model-invocation: true
7
+ ---
8
+
9
+ @reference/shared-preamble.md
10
+
11
+ # synthesize
12
+
13
+ ## Role
14
+
15
+ Reusable streaming synthesizer. You receive N markdown strings (parallel-agent outputs) plus a directive, emit one compact merged output in the format the directive specifies. Inline-invoked — no Task() spawn overhead; thin Haiku 4.5 merge call wrapped in a skill.
16
+
17
+ You are not an orchestrator, not an auditor, not a second-pass reviewer. You preserve every distinct signal from the inputs, consolidate duplicates with source tags, and return a single merged artifact. The invoking orchestrator writes the result to disk; you do not touch the filesystem.
18
+
19
+ ## When to use
20
+
21
+ **Use synthesize when:**
22
+ - Parallel-mapper / parallel-researcher produced N overlapping outputs and main-context doesn't need them verbatim.
23
+ - The downstream consumer wants one cross-cutting summary (e.g., `.design/DESIGN-PATTERNS.md` merged from 5 per-concern mappers).
24
+ - The per-agent output files remain on disk as drill-down — the synthesized artifact becomes the compact canonical input.
25
+
26
+ **Do NOT use synthesize when:**
27
+ - A single-agent flow produced the output (nothing to merge).
28
+ - A verify/check-mode flow returned a structured gap list (merging breaks the gap-id → severity → location mapping).
29
+ - A downstream consumer needs every byte verbatim for grep (e.g., decision-wiring checker that matches exact D-XX anchors).
30
+
31
+ ## Input Contract
32
+
33
+ The invoking orchestrator passes three fields:
34
+
35
+ - `outputs: string[]` — N labeled strings, each pre-labeled with `=== from <agent-name> ===\n<content>` so the merge call can trace per-signal provenance.
36
+ - `directive: string` — merge instruction (format, target length, which headers to preserve, how to tag sources). Default when empty: `"produce a single merged summary preserving all distinct signals, grouped by natural section headers"`.
37
+ - `output_shape: "markdown" | "json"` — controls the output format. Defaults to `"markdown"`.
38
+
39
+ ## Implementation
40
+
41
+ Single Haiku 4.5 call with this exact merge-prompt template:
42
+
43
+ ```
44
+ You have received {N} outputs from parallel agents. Each output is labeled with its source.
45
+
46
+ Directive: {directive}
47
+
48
+ Outputs:
49
+ {each labeled with === from <agent-name> === and its full content}
50
+
51
+ Produce the merged result in the format specified by the directive.
52
+ Preserve every distinct signal — do NOT drop content. Consolidate duplicates
53
+ (same finding mentioned by multiple agents) into a single entry with the
54
+ source-agent names listed. Keep section headers intact when the directive
55
+ requests section preservation.
56
+
57
+ Emit ONLY the merged output — no preamble, no meta-commentary.
58
+ ```
59
+
60
+ Tier is hard-coded to `haiku` per D-14. Orchestrators should **not** re-route this to Sonnet — the merge is structure-preserving, not generative, and Haiku handles it without quality loss.
61
+
62
+ ## Output Contract
63
+
64
+ - **Markdown shape (`output_shape: "markdown"`)** → emit the merged markdown inline, then `## SYNTHESIS COMPLETE` on its own final line. No code fence wrapping the merged output.
65
+ - **JSON shape (`output_shape: "json"`)** → emit the merged JSON object inline (no fence), then `## SYNTHESIS COMPLETE` on its own final line.
66
+
67
+ The orchestrator is responsible for:
68
+ - Stripping the `## SYNTHESIS COMPLETE` marker before writing to the target file.
69
+ - Persisting the merged artifact to disk (e.g., `.design/DESIGN-PATTERNS.md`).
70
+ - Keeping per-agent files on disk as drill-down evidence.
71
+
72
+ ## Cost and Tier
73
+
74
+ Hard-coded to Haiku 4.5 per D-14. `budget.json.tier_overrides.synthesize` can override. Typical cost per invocation: $0.002–$0.02 — dominated by input tokens (5 × ~1500-line mapper outputs ≈ 7.5k input tokens, merge output ≈ 1k output tokens).
75
+
76
+ ## Failure Modes
77
+
78
+ - **Empty `outputs: []`** → emit an empty string followed immediately by `## SYNTHESIS COMPLETE`. Do NOT error — the orchestrator handles the empty case (e.g., `--only <name>` in map skipped the parallel dispatch).
79
+ - **Empty `directive`** → apply the default directive: `"produce a single merged summary preserving all distinct signals, grouped by natural section headers"`.
80
+ - **Haiku call fails** → fall back to naive concatenation with `\n---\n` separators between each `outputs[i]` entry, emit the fallback as the merged result, and log a telemetry warning (`synthesize_fallback: true`) so Phase 11 reflector can measure the failure rate. Always emit `## SYNTHESIS COMPLETE` after the fallback body.
81
+ - **`output_shape` is neither `markdown` nor `json`** → treat as `markdown` (default) and proceed.
82
+
83
+ ## Non-Goals
84
+
85
+ - Does **NOT** spawn Task() agents. Synthesize is a thin skill, not an orchestrator.
86
+ - Does **NOT** write files. The invoking orchestrator owns the target path.
87
+ - Does **NOT** validate directive semantics. If the directive is nonsensical, the merge output will reflect that — garbage in, garbage out is acceptable for an internal-use skill.
88
+ - Does **NOT** re-rank or re-score the inputs. Preservation is the contract.
89
+
90
+ ## Completion Marker
91
+
92
+ ```
93
+ ## SYNTHESIS COMPLETE
94
+ ```
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: gdd-timeline
3
+ description: "Narrative retrospective across cycles: reads EXPERIENCE.md files and git log to produce a timeline view."
4
+ argument-hint: "[<cycle-N> | <from>-<to> | all]"
5
+ tools: Read, Bash, Glob
6
+ disable-model-invocation: true
7
+ ---
8
+
9
+ @reference/retrieval-contract.md
10
+ @reference/cycle-handoff-preamble.md
11
+
12
+ # /gdd:timeline
13
+
14
+ Generates a narrative retrospective across one or more completed cycles by reading `.design/archive/cycle-N/EXPERIENCE.md` files and correlating with `git log`.
15
+
16
+ ## Steps
17
+
18
+ 1. **Parse argument**: accepted forms:
19
+ - `cycle-N` or `N` — single cycle
20
+ - `N-M` — inclusive range
21
+ - `all` or no argument — all archived cycles
22
+
23
+ 2. **Discover archives**: glob `.design/archive/cycle-*/EXPERIENCE.md`. Sort by cycle number. Filter to requested range.
24
+
25
+ 3. **For each cycle archive**:
26
+ a. Read `EXPERIENCE.md` — extract sections: Goal, Decisions made, Learnings graduated, What died, Handoff to next cycle.
27
+ b. Read `DESIGN-SUMMARY.md` (if present) for shipped artifacts list.
28
+ c. Run:
29
+ ```bash
30
+ git log --oneline --after="<cycle start date>" --before="<cycle end date>" -- .design/ 2>/dev/null | head -10
31
+ ```
32
+ to correlate with commits. Use dates from `EXPERIENCE.md` Opened/Ended headers if present.
33
+
34
+ 4. **Print timeline** in this shape:
35
+
36
+ ```
37
+ ## Timeline: Cycle 1 → Cycle 3
38
+
39
+ ---
40
+
41
+ ### Cycle 1 — <goal headline>
42
+
43
+ **Opened with**: <first meaningful action>
44
+ **Key decisions**: <D-XX summary>, <D-XX summary>
45
+ **Surprises**: <what was unexpected>
46
+ **What we'd do differently**: <retrospective note>
47
+ **Shipped**: <artifact list or "see DESIGN-SUMMARY.md">
48
+
49
+ ---
50
+
51
+ ### Cycle 2 — <goal headline>
52
+ ...
53
+ ```
54
+
55
+ 5. **No archives found**: print
56
+ ```
57
+ No archived cycles found in .design/archive/.
58
+ Complete a cycle first with /gdd:complete-cycle.
59
+ ```
60
+
61
+ ## Do Not
62
+
63
+ - Do not modify any file.
64
+ - Do not run git commands that write or stage (only `git log` for read).
65
+
66
+ ## TIMELINE COMPLETE
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: gdd-todo
3
+ description: "Design backlog — add/list/pick design tasks. Writes to .design/TODO.md."
4
+ argument-hint: "<add|list|pick> [text]"
5
+ tools: Read, Write, AskUserQuestion, mcp__gdd_state__get, mcp__gdd_state__add_decision, mcp__gdd_state__add_must_have
6
+ disable-model-invocation: true
7
+ ---
8
+
9
+ # /gdd:todo
10
+
11
+ **Role:** Design todo list. Three subcommands: `add`, `list`, `pick`. Backing store: `.design/TODO.md`. For items that are pipeline-level decisions or must-haves (not free-form backlog), route through the `gdd-state` MCP tools instead — see **Pipeline-linked items** below.
12
+
13
+ ## File format
14
+
15
+ ```markdown
16
+ # Design Todos
17
+
18
+ ## P0 — Blocking
19
+ - [ ] [2026-04-18] Fix contrast ratio on card headers
20
+
21
+ ## P1 — High
22
+ - [ ] [2026-04-18] Align Button focus ring with tokens
23
+
24
+ ## P2 — Normal
25
+
26
+ ## P3 — Nice to have
27
+ ```
28
+
29
+ Priority is encoded by section, not inline. Status markers: `[ ]` unchecked, `[x]` done, `[-]` `[in-progress]`, `[p]` `[promoted]`.
30
+
31
+ ## Subcommands
32
+
33
+ ### add [text]
34
+ If text omitted, use `AskUserQuestion`: "What todo item? (include priority P0-P3 if known)". Parse leading `P[0-3]` token from text; default P2. Append under the right section as:
35
+ ```
36
+ - [ ] [YYYY-MM-DD] <text without priority token>
37
+ ```
38
+ Create TODO.md from the template above if missing.
39
+
40
+ ### list
41
+ 1. Call `mcp__gdd_state__get` → pipeline-level decisions + must-haves (shown as context at the top).
42
+ 2. Read `.design/TODO.md` (file outside the MCP catalog). Print all `- [ ]` and `- [-]` items grouped by priority section, with index numbers.
43
+
44
+ ### pick
45
+ Read `.design/TODO.md`. Collect unchecked items. Use `AskUserQuestion` to let the user pick one. Rewrite the chosen line as:
46
+ ```
47
+ - [-] [YYYY-MM-DD] [in-progress] <original text>
48
+ ```
49
+ Print "Picked: <item>".
50
+
51
+ ## Pipeline-linked items
52
+
53
+ When the user promotes a todo to a pipeline decision or must-have, route through MCP instead of TODO.md:
54
+
55
+ - Decision → `mcp__gdd_state__add_decision` with `{ id: "D-XX", text: "...", status: "locked"|"tentative" }`.
56
+ - Must-have → `mcp__gdd_state__add_must_have` with `{ id: "M-XX", text: "...", status: "pending" }`.
57
+
58
+ ## Constraints
59
+
60
+ - Do not modify files outside `.design/`.
61
+ - Preserve existing sections and ordering on write.
62
+ - Do not mutate STATE.md directly — use the MCP tools above.
63
+
64
+ ## TODO COMPLETE