@hegemonart/get-design-done 1.28.0 → 1.28.6
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 +1 -1
- package/CHANGELOG.md +134 -0
- package/SKILL.md +1 -1
- package/hooks/gdd-decision-injector.js +149 -3
- package/package.json +1 -1
- package/reference/adr-format.md +96 -0
- package/reference/architecture-vocabulary.md +102 -0
- package/reference/context-md-format.md +106 -0
- package/reference/heuristics.md +84 -0
- package/reference/registry.json +29 -1
- package/reference/registry.schema.json +1 -1
- package/reference/shared-preamble.md +78 -6
- package/reference/skill-authoring-contract.md +159 -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/apply-reflections/apply-reflections-procedure.md +68 -0
- 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/cache-manager/cache-policy.md +126 -0
- package/skills/check-update/SKILL.md +38 -75
- package/skills/compare/SKILL.md +29 -269
- package/skills/compare/compare-rubric.md +171 -0
- package/skills/complete-cycle/SKILL.md +1 -1
- package/skills/connections/SKILL.md +21 -427
- package/skills/connections/connections-onboarding.md +417 -0
- package/skills/continue/SKILL.md +1 -0
- package/skills/darkmode/SKILL.md +32 -287
- package/skills/darkmode/darkmode-audit-procedure.md +258 -0
- package/skills/debug/SKILL.md +11 -8
- package/skills/debug/debug-feedback-loops.md +119 -0
- package/skills/design/SKILL.md +27 -245
- package/skills/design/design-procedure.md +304 -0
- package/skills/discover/SKILL.md +26 -133
- package/skills/discover/discover-procedure.md +204 -0
- package/skills/discuss/SKILL.md +18 -2
- package/skills/explore/SKILL.md +40 -205
- package/skills/explore/explore-procedure.md +267 -0
- package/skills/fast/SKILL.md +1 -0
- package/skills/figma-write/SKILL.md +2 -2
- package/skills/health/SKILL.md +11 -33
- package/skills/health/health-mcp-detection.md +44 -0
- package/skills/health/health-skill-length-report.md +69 -0
- 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/new-cycle/milestone-completeness-rubric.md +87 -0
- 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-add/peer-cli-protocol.md +161 -0
- 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/plan/plan-procedure.md +278 -0
- 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/quality-gate/threat-modeling.md +101 -0
- 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/router/router-rules.md +84 -0
- package/skills/scan/SKILL.md +36 -675
- package/skills/scan/scan-procedure.md +731 -0
- 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/start/start-procedure.md +115 -0
- package/skills/stats/SKILL.md +1 -0
- package/skills/style/SKILL.md +18 -140
- package/skills/style/style-doc-procedure.md +150 -0
- 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/verify/verify-procedure.md +512 -0
- package/skills/warm-cache/SKILL.md +3 -35
- package/skills/zoom-out/SKILL.md +26 -0
package/skills/style/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: get-design-done:style
|
|
3
|
-
description: "Generate a component handoff doc
|
|
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
4
|
argument-hint: "[ComponentName]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
@@ -9,6 +9,8 @@ user-invocable: true
|
|
|
9
9
|
|
|
10
10
|
Generates a per-component style spec at `.design/DESIGN-STYLE-[ComponentName].md`. This is a **standalone command**, not a pipeline stage.
|
|
11
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
|
+
|
|
12
14
|
Output artifact naming: `.design/DESIGN-STYLE-[ComponentName].md` — Title-cased component name, one file per invocation.
|
|
13
15
|
|
|
14
16
|
---
|
|
@@ -27,134 +29,24 @@ This separation is a pre-roadmap decision recorded in `.planning/STATE.md`: util
|
|
|
27
29
|
|
|
28
30
|
---
|
|
29
31
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
**If `$ARGUMENTS` contains a ComponentName** → proceed to Mode Detection with that name.
|
|
33
|
-
|
|
34
|
-
**If `$ARGUMENTS` is empty** → do not generate a doc. Instead:
|
|
35
|
-
|
|
36
|
-
1. List available component files by globbing:
|
|
37
|
-
- `src/components/*.tsx`
|
|
38
|
-
- `src/components/*.jsx`
|
|
39
|
-
- `src/**/*.vue`
|
|
40
|
-
- `src/**/*.svelte`
|
|
41
|
-
- `components/*.tsx`
|
|
42
|
-
- `components/*.jsx`
|
|
43
|
-
2. Also list task names from `.design/tasks/*.md` (if directory exists).
|
|
44
|
-
3. Display the list to the user and prompt: "Specify a ComponentName to generate a style spec. Example: `/get-design-done style Button`"
|
|
45
|
-
4. Exit without generating any file.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Mode Detection
|
|
50
|
-
|
|
51
|
-
Before spawning the agent, detect which mode to use:
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
If .design/DESIGN-SUMMARY.md exists:
|
|
55
|
-
mode = post-pipeline (STYL-03)
|
|
56
|
-
pipeline_complete = true
|
|
57
|
-
|
|
58
|
-
Elif .design/DESIGN.md exists:
|
|
59
|
-
mode = pre-pipeline (STYL-04)
|
|
60
|
-
pipeline_complete = false
|
|
61
|
-
|
|
62
|
-
Else:
|
|
63
|
-
Abort: "No .design/ artifacts found. Run /get-design-done scan first to initialize."
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
The mode controls which files are supplied to the agent in `<required_reading>`.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Component Source Resolution
|
|
71
|
-
|
|
72
|
-
Search for a source file matching the provided ComponentName (case-insensitive):
|
|
73
|
-
|
|
74
|
-
1. `src/components/[ComponentName].tsx`
|
|
75
|
-
2. `src/components/[ComponentName].jsx`
|
|
76
|
-
3. `src/components/[ComponentName].vue`
|
|
77
|
-
4. `src/components/[ComponentName].svelte`
|
|
78
|
-
5. `src/**/[ComponentName]/index.tsx`
|
|
79
|
-
6. `src/**/[ComponentName]/index.jsx`
|
|
80
|
-
7. `components/[ComponentName].tsx`
|
|
81
|
-
8. `components/[ComponentName].jsx`
|
|
82
|
-
9. `components/[ComponentName].vue`
|
|
83
|
-
10. `components/[ComponentName].svelte`
|
|
84
|
-
|
|
85
|
-
**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.
|
|
86
|
-
|
|
87
|
-
**If zero matches found:** Abort with: "Component [ComponentName] not found in expected paths. Verify the name matches a file in src/components/ or components/."
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Agent Spawn
|
|
92
|
-
|
|
93
|
-
Once mode and source path are resolved, spawn the `design-doc-writer` agent:
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
Task("design-doc-writer", """
|
|
97
|
-
<required_reading>
|
|
98
|
-
[If pipeline_complete=true:]
|
|
99
|
-
@.design/STATE.md
|
|
100
|
-
@.design/DESIGN-SUMMARY.md
|
|
101
|
-
@.design/DESIGN-CONTEXT.md
|
|
102
|
-
@<component_source_path>
|
|
103
|
-
[Else (pipeline_complete=false):]
|
|
104
|
-
@.design/DESIGN.md
|
|
105
|
-
@<component_source_path>
|
|
106
|
-
@reference/anti-patterns.md
|
|
107
|
-
@reference/audit-scoring.md
|
|
108
|
-
</required_reading>
|
|
109
|
-
|
|
110
|
-
Generate a handoff spec for component <ComponentName>.
|
|
111
|
-
|
|
112
|
-
Context:
|
|
113
|
-
component_name: <ComponentName>
|
|
114
|
-
component_source_path: <resolved absolute path>
|
|
115
|
-
pipeline_complete: <true|false>
|
|
116
|
-
output_path: .design/DESIGN-STYLE-<ComponentName>.md
|
|
117
|
-
|
|
118
|
-
Produce the doc per STYL-05 sections:
|
|
119
|
-
- Spacing Tokens (used by component)
|
|
120
|
-
- Color Tokens (used by component)
|
|
121
|
-
- Typography Scale (used by component)
|
|
122
|
-
- Component States (default, hover, focus, active, disabled, etc.)
|
|
123
|
-
- Token Semantic Health Score (raw-hex-ratio formula)
|
|
124
|
-
- AI-Slop Detection (using reference/anti-patterns.md BAN/SLOP patterns)
|
|
125
|
-
[If pipeline_complete=true:]
|
|
126
|
-
- Decisions Applied (D-XX from DESIGN-SUMMARY.md that mention this component)
|
|
127
|
-
|
|
128
|
-
Emit ## DOC COMPLETE when the output file is written.
|
|
129
|
-
""")
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
After the agent emits `## DOC COMPLETE`, confirm the file exists at `output_path` and report success to the user.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Output Location
|
|
137
|
-
|
|
138
|
-
Output is written by the agent to:
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
.design/DESIGN-STYLE-[ComponentName].md
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
This artifact is **outside the pipeline namespace**. The `DESIGN-STYLE-` prefix is distinct from all pipeline-owned artifacts (`DESIGN.md`, `DESIGN-CONTEXT.md`, `DESIGN-PLAN.md`, `DESIGN-SUMMARY.md`, `DESIGN-VERIFICATION.md`). There is no naming conflict.
|
|
32
|
+
## Workflow
|
|
145
33
|
|
|
146
|
-
|
|
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.
|
|
147
39
|
|
|
148
40
|
---
|
|
149
41
|
|
|
150
42
|
## Constraints
|
|
151
43
|
|
|
152
|
-
This command MUST NOT:
|
|
44
|
+
This command MUST NOT (per `../../reference/shared-preamble.md#output-contract-reminders`):
|
|
153
45
|
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
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
|
|
158
50
|
|
|
159
51
|
---
|
|
160
52
|
|
|
@@ -166,12 +58,7 @@ This command MUST NOT:
|
|
|
166
58
|
/get-design-done style Button
|
|
167
59
|
```
|
|
168
60
|
|
|
169
|
-
|
|
170
|
-
- Detects mode: DESIGN-SUMMARY.md exists → post-pipeline
|
|
171
|
-
- Spawns `design-doc-writer` with `pipeline_complete: true`
|
|
172
|
-
- Output: `.design/DESIGN-STYLE-Button.md`
|
|
173
|
-
|
|
174
|
-
---
|
|
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`.
|
|
175
62
|
|
|
176
63
|
**Example 2: No argument (list mode)**
|
|
177
64
|
|
|
@@ -179,15 +66,6 @@ This command MUST NOT:
|
|
|
179
66
|
/get-design-done style
|
|
180
67
|
```
|
|
181
68
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
Available components:
|
|
186
|
-
Button
|
|
187
|
-
CardHeader
|
|
188
|
-
Input
|
|
189
|
-
Modal
|
|
190
|
-
Toast
|
|
191
|
-
Specify: /get-design-done style [ComponentName]
|
|
192
|
-
```
|
|
193
|
-
- Exits without generating any file.
|
|
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 `get-design-done: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).*
|
|
@@ -3,6 +3,7 @@ name: synthesize
|
|
|
3
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
4
|
tools: Read, Task
|
|
5
5
|
user-invocable: false
|
|
6
|
+
disable-model-invocation: true
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
@reference/shared-preamble.md
|
package/skills/timeline/SKILL.md
CHANGED
|
@@ -3,6 +3,7 @@ name: gdd-timeline
|
|
|
3
3
|
description: "Narrative retrospective across cycles: reads EXPERIENCE.md files and git log to produce a timeline view."
|
|
4
4
|
argument-hint: "[<cycle-N> | <from>-<to> | all]"
|
|
5
5
|
tools: Read, Bash, Glob
|
|
6
|
+
disable-model-invocation: true
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
@reference/retrieval-contract.md
|
package/skills/todo/SKILL.md
CHANGED
|
@@ -3,6 +3,7 @@ name: gdd-todo
|
|
|
3
3
|
description: "Design backlog — add/list/pick design tasks. Writes to .design/TODO.md."
|
|
4
4
|
argument-hint: "<add|list|pick> [text]"
|
|
5
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
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /gdd:todo
|
|
@@ -9,107 +9,87 @@ tools: Read, Bash
|
|
|
9
9
|
|
|
10
10
|
## Role
|
|
11
11
|
|
|
12
|
-
You are a deterministic **closeout** skill. You close the per-turn telemetry gap on runtimes that don't expose a Stop event (codex, gemini, and 11 others). You are a code-level mirror of `hooks/gdd-turn-closeout.js` (D-10): same conditions, same idempotence, same emitted event shape. The only difference: the JS hook emits the nudge as `additionalContext` via the harness; this skill prints the nudge directly to the user.
|
|
12
|
+
You are a deterministic **closeout** skill. You close the per-turn telemetry gap on runtimes that don't expose a Stop event (codex, gemini, and 11 others). You are a code-level mirror of `hooks/gdd-turn-closeout.js` (D-10): same conditions, same idempotence, same emitted event shape. The only difference: the JS hook emits the nudge as `additionalContext` via the harness; this skill prints the nudge directly to the user. See `./../new-cycle/milestone-completeness-rubric.md` §"Task level" for the broader closeout discipline (what "turn complete" means within a stage).
|
|
13
13
|
|
|
14
|
-
**When to invoke:** orchestrator skills (`/gdd:next`, `/gdd:design`, `/gdd:verify`) tail-call this skill as their final step before returning
|
|
14
|
+
**When to invoke:** orchestrator skills (`/gdd:next`, `/gdd:design`, `/gdd:verify`) tail-call this skill as their final step before returning. Adoption is incremental — each orchestrator can wire the tail-call independently; the skill exists as a stable, callable surface today.
|
|
15
15
|
|
|
16
16
|
## Invocation Contract
|
|
17
17
|
|
|
18
|
-
- **Input**: none. Operates on `.design/STATE.md` and `.design/telemetry/events.jsonl` in
|
|
18
|
+
- **Input**: none. Operates on `.design/STATE.md` and `.design/telemetry/events.jsonl` in cwd.
|
|
19
19
|
- **Output**: at most one printed line — the nudge — or silent return.
|
|
20
|
-
- **Latency budget**: ≤10ms typical
|
|
21
|
-
- **Idempotence**: if the most recent event
|
|
22
|
-
- **Non-blocking**: any I/O failure → silent return. This skill
|
|
20
|
+
- **Latency budget**: ≤10ms typical. Read **only** STATE.md and the tail of events.jsonl.
|
|
21
|
+
- **Idempotence**: if the most recent event is already a `turn_end` for the current `(stage, task_progress)` tuple, skip append but still print nudge.
|
|
22
|
+
- **Non-blocking**: any I/O failure → silent return. This skill never gates the user.
|
|
23
23
|
|
|
24
24
|
## Algorithm
|
|
25
25
|
|
|
26
|
-
Execute
|
|
26
|
+
Execute in order; stop at the first early-return.
|
|
27
27
|
|
|
28
|
-
### Step 1 —
|
|
28
|
+
### Step 1 — Read STATE.md
|
|
29
29
|
|
|
30
|
-
Read `.design/STATE.md`.
|
|
30
|
+
Read `.design/STATE.md`. Missing or unreadable → **return silently** (no print, no append).
|
|
31
31
|
|
|
32
|
-
### Step 2 — Parse
|
|
32
|
+
### Step 2 — Parse `<position>` block
|
|
33
33
|
|
|
34
|
-
Lightweight-parse only
|
|
34
|
+
Lightweight-parse only `<position>…</position>` (regex `/<position>([\s\S]*?)<\/position>/` then per-line `key: value`). Extract `stage`, `status`, `task_progress`. Do not invoke the full STATE parser.
|
|
35
35
|
|
|
36
|
-
If `status != "in_progress"
|
|
36
|
+
If `status != "in_progress"` → **return silently**. Pipeline is initialized / completed / blocked — no turn-end gap to close.
|
|
37
37
|
|
|
38
38
|
### Step 3 — Tail the last event line
|
|
39
39
|
|
|
40
|
-
Read **only the last 8 KiB** of `.design/telemetry/events.jsonl
|
|
41
|
-
- The file is missing.
|
|
42
|
-
- The file is empty.
|
|
43
|
-
- The last line fails to parse as JSON.
|
|
44
|
-
- The last line's `timestamp` is missing or unparseable.
|
|
40
|
+
Read **only the last 8 KiB** of `.design/telemetry/events.jsonl`. Treat as "stale by definition":
|
|
45
41
|
|
|
46
|
-
|
|
42
|
+
- File missing.
|
|
43
|
+
- File empty.
|
|
44
|
+
- Last line fails JSON parse.
|
|
45
|
+
- Last line's `timestamp` is missing or unparseable.
|
|
47
46
|
|
|
48
|
-
|
|
47
|
+
Otherwise compute `now - last_event.timestamp`. Gap < 60 seconds → user is actively mid-turn → **return silently** (next real event closes the gap naturally). Bash one-liner for the tail: `tail -n 1 .design/telemetry/events.jsonl 2>/dev/null`.
|
|
49
48
|
|
|
50
49
|
### Step 4 — Idempotence check, then append
|
|
51
50
|
|
|
52
|
-
If
|
|
51
|
+
If last event is already `{type:"turn_end", stage:<same>, payload:{task_progress:<same>}}` for the exact `(stage, task_progress)` from Step 2: **skip append** but proceed to Step 5.
|
|
53
52
|
|
|
54
|
-
Otherwise append
|
|
53
|
+
Otherwise append one JSONL line to `.design/telemetry/events.jsonl`:
|
|
55
54
|
|
|
56
55
|
```json
|
|
57
56
|
{"type":"turn_end","timestamp":"<ISO 8601 now>","sessionId":"<session-id-or-'turn-closeout'>","stage":"<stage>","payload":{"task_progress":"<N/M>"},"_meta":{"source":"gdd-turn-closeout-skill"}}
|
|
58
57
|
```
|
|
59
58
|
|
|
60
|
-
Create `.design/telemetry/` if missing.
|
|
59
|
+
Create `.design/telemetry/` if missing. Append is a single `appendFile`-equivalent call (writer assumes append-atomicity per Plan 20-06).
|
|
61
60
|
|
|
62
61
|
### Step 5 — Print the nudge
|
|
63
62
|
|
|
64
63
|
Match `task_progress` against `^(\d+)/(\d+)$`:
|
|
65
64
|
|
|
66
|
-
- **Numerator equals denominator and denominator > 0** (e.g. `5/5
|
|
65
|
+
- **Numerator equals denominator and denominator > 0** (e.g. `5/5`): `Stage <stage> complete — run /gdd:next or /gdd:reflect`.
|
|
66
|
+
- **Otherwise** (mid-task, e.g. `3/7`, `0/0`, malformed): `Stage <stage> paused mid-task — resume with /gdd:resume`.
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
- **Otherwise** (mid-task, e.g. `3/7`, `0/0`, malformed):
|
|
71
|
-
|
|
72
|
-
> Stage `<stage>` paused mid-task — resume with `/gdd:resume`
|
|
73
|
-
|
|
74
|
-
Print exactly one of these two lines. No additional commentary, no explanations of what the skill did — the nudge is the user-facing surface.
|
|
68
|
+
One line exactly. No commentary — the nudge is the user-facing surface.
|
|
75
69
|
|
|
76
70
|
## Failure Modes
|
|
77
71
|
|
|
78
|
-
Every step above has an explicit silent-return on failure. The skill must remain non-blocking under all conditions:
|
|
79
|
-
|
|
80
72
|
| Condition | Behavior |
|
|
81
73
|
|-----------|----------|
|
|
82
|
-
|
|
|
83
|
-
| `<position>`
|
|
74
|
+
| STATE.md missing/unreadable | Silent return |
|
|
75
|
+
| `<position>` absent or malformed | Silent return |
|
|
84
76
|
| `status != "in_progress"` | Silent return |
|
|
85
|
-
|
|
|
86
|
-
| Last event
|
|
87
|
-
| Last event
|
|
88
|
-
| Append fails (permission, disk full) | Print
|
|
89
|
-
| Any uncaught throw
|
|
77
|
+
| `events.jsonl` missing | Treat as stale → fall through to append + nudge |
|
|
78
|
+
| Last event unparseable | Treat as stale → fall through |
|
|
79
|
+
| Last event < 60s old | Silent return |
|
|
80
|
+
| Append fails (permission, disk full) | Print nudge anyway; do not surface I/O error |
|
|
81
|
+
| Any uncaught throw | Silent return |
|
|
90
82
|
|
|
91
83
|
## Equivalence with the JS hook
|
|
92
84
|
|
|
93
|
-
This skill and `hooks/gdd-turn-closeout.js` MUST stay code-level equivalent.
|
|
94
|
-
|
|
95
|
-
- Same four early-return branches (no STATE / not in_progress / fresh event / no-op).
|
|
96
|
-
- Same staleness threshold: **60 seconds**.
|
|
97
|
-
- Same idempotence guard: `(type=turn_end, stage, payload.task_progress)` triple.
|
|
98
|
-
- Same emitted event shape (only `_meta.source` differs: `gdd-turn-closeout` vs `gdd-turn-closeout-skill`, so reflector telemetry can distinguish hook-driven vs skill-driven turn-ends).
|
|
99
|
-
- Same nudge wording for both `N/N` and mid-task cases.
|
|
100
|
-
|
|
101
|
-
If you change one, change the other in the same plan. Plan 25-09's `tests/turn-closeout-hook.test.cjs` covers the JS hook; the parallel coverage for this skill rides on Plan 25-09's Phase 25 baseline.
|
|
85
|
+
This skill and `hooks/gdd-turn-closeout.js` MUST stay code-level equivalent: same four early-return branches, same 60-second staleness threshold, same idempotence guard (`type=turn_end, stage, payload.task_progress`), same event shape (only `_meta.source` differs: `gdd-turn-closeout` vs `gdd-turn-closeout-skill` so reflector telemetry can distinguish hook-driven vs skill-driven). Same nudge wording for both N/N and mid-task cases. Change one → change the other in the same plan. Plan 25-09's `tests/turn-closeout-hook.test.cjs` covers the JS hook.
|
|
102
86
|
|
|
103
87
|
## Non-Goals
|
|
104
88
|
|
|
105
|
-
- **Not a state writer.**
|
|
106
|
-
- **Not a stage transition.**
|
|
107
|
-
- **Not a Stop-event harness.** Cross-runtime Stop-event support at the harness level is
|
|
89
|
+
- **Not a state writer.** Never edits STATE.md. The events.jsonl append is the only side effect.
|
|
90
|
+
- **Not a stage transition.** `turn_end` is within-stage, not a state-machine move; downstream tools ignore it for transition gating.
|
|
91
|
+
- **Not a Stop-event harness.** Cross-runtime Stop-event support at the harness level is out-of-scope for Phase 25 (CONTEXT.md OOS).
|
|
108
92
|
|
|
109
93
|
## Integration Point
|
|
110
94
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
> Invoke skill `gdd-turn-closeout`.
|
|
114
|
-
|
|
115
|
-
Tail-call wiring is intentionally not part of v1.25 (Plan 25-04 ships only the callable surface). Each orchestrator can adopt the wiring independently in a follow-up.
|
|
95
|
+
Canonical tail-call sites per D-11: `/gdd:next`, `/gdd:design`, `/gdd:verify`. Each orchestrator's final step before returning to the user invokes `gdd-turn-closeout`. Tail-call wiring intentionally not part of v1.25 (Plan 25-04 ships only the callable surface).
|
package/skills/undo/SKILL.md
CHANGED
package/skills/update/SKILL.md
CHANGED