@hegemonart/get-design-done 1.14.2 → 1.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +2 -3
- package/CHANGELOG.md +17 -0
- package/README.md +53 -20
- package/README.zh-CN.md +353 -0
- package/package.json +1 -1
- package/reference/schemas/plugin.schema.json +1 -2
- package/scripts/install.cjs +154 -0
- package/skills/explore/SKILL.md +45 -17
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
7
|
"description": "Get Design Done — 5-stage agent-orchestrated design pipeline with 9 connections, handoff-first workflow, bidirectional Figma write-back, 22+ specialized agents, queryable knowledge layer (intel store, dependency analysis, learnings extraction), and a self-improvement loop (reflector, frontmatter + budget feedback, global-skills layer). Ships with a full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows) and release automation (auto-tag + GitHub Release + release-time smoke test).",
|
|
8
|
-
"version": "1.14.
|
|
8
|
+
"version": "1.14.3"
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "get-design-done",
|
|
13
13
|
"source": "./",
|
|
14
14
|
"description": "Agent-orchestrated 5-stage design pipeline: Brief → Explore → Plan → Design → Verify. 22+ specialized agents, 9 connections (Figma, Refero, Preview, Storybook, Chromatic, Figma Writer, Graphify, Pinterest, Claude Design), Claude Design handoff, bidirectional Figma write-back, and a queryable intel store (.design/intel/) for dependency and learnings queries. Standalone commands: style, darkmode, compare, figma-write, graphify, handoff, analyze-dependencies, skill-manifest, extract-learnings. Embeds NNG heuristics, WCAG thresholds, typographic systems, motion framework, and anti-pattern catalog. Ships with a full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows) and release automation. Optimization layer (v1.0.4.1, retroactive): gdd-router + gdd-cache-manager skills, PreToolUse budget-enforcer hook, tier-aware agent frontmatter, lazy checker gates, streaming synthesizer, /gdd:warm-cache + /gdd:optimize commands, and cost telemetry at .design/telemetry/costs.jsonl — targeting 50-70% per-task token-cost reduction with no quality-floor regression.",
|
|
15
|
-
"version": "1.14.
|
|
15
|
+
"version": "1.14.3",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "hegemonart"
|
|
18
18
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "get-design-done",
|
|
3
3
|
"short_name": "gdd",
|
|
4
|
-
"version": "1.14.
|
|
4
|
+
"version": "1.14.3",
|
|
5
5
|
"description": "Agent-orchestrated 5-stage design pipeline: Brief → Explore → Plan → Design → Verify. 22+ specialized agents, 9 connections (Figma, Refero, Preview, Storybook, Chromatic, Figma Writer, Graphify, Pinterest, Claude Design), handoff-first workflow via Claude Design bundles, bidirectional Figma write-back (annotations, Code Connect), queryable intel store (`.design/intel/`) for O(1) design surface lookups, and self-improvement loop (reflector agent, frontmatter + budget feedback, global-skills layer at `~/.claude/gdd/global-skills/`). Standalone commands: style, darkmode, compare, figma-write, graphify, handoff, analyze-dependencies, skill-manifest, extract-learnings, reflect, apply-reflections. Embeds NNG heuristics, WCAG thresholds, typographic systems, motion framework, and anti-pattern catalog. Ships with a full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows, lint + schema + frontmatter + stale-ref + shellcheck + gitleaks + injection-scan + blocking size-budget) and release automation (auto-tag + GitHub Release + release-time smoke test). Optimization layer (v1.0.4.1, retroactive): gdd-router + gdd-cache-manager skills, PreToolUse budget-enforcer hook, tier-aware agent frontmatter, lazy checker gates, streaming synthesizer, /gdd:warm-cache + /gdd:optimize commands, and cost telemetry at .design/telemetry/costs.jsonl — targeting 50-70% per-task token-cost reduction with no quality-floor regression.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "hegemonart",
|
|
@@ -49,6 +49,5 @@
|
|
|
49
49
|
"cache-aware",
|
|
50
50
|
"budget"
|
|
51
51
|
],
|
|
52
|
-
"skills": ["./
|
|
53
|
-
"hooks": "./hooks/hooks.json"
|
|
52
|
+
"skills": ["./skills/"]
|
|
54
53
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,23 @@ All notable changes to get-design-done are documented here. Versions follow [sem
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.14.3] — 2026-04-20
|
|
8
|
+
|
|
9
|
+
### Added — `npx @hegemonart/get-design-done` installer
|
|
10
|
+
|
|
11
|
+
- **`scripts/install.cjs`** — new npm-bin entrypoint (the bin slot referenced from `package.json` since v1.0.7 but never shipped). Running `npx @hegemonart/get-design-done` now atomically merges an `extraKnownMarketplaces["get-design-done"]` entry (source: `github:hegemonart/get-design-done`) and an `enabledPlugins["get-design-done@get-design-done"] = true` flag into `$CLAUDE_CONFIG_DIR/settings.json` (default `~/.claude/settings.json`). Flags: `--dry-run`, `--help`. Idempotent; preserves unrelated keys; rejects malformed settings JSON with a clear error.
|
|
12
|
+
|
|
13
|
+
### Fixed — Plugin manifest bugs blocking v1.14.2 install
|
|
14
|
+
|
|
15
|
+
- **`.claude-plugin/plugin.json`** — dropped `"./"` from the `skills` array. The Claude Code plugin loader rejects it as `Path escapes plugin directory: ./` even though the spec describes it as legal. Manifest now declares `"skills": ["./skills/"]` only; the plugin loads cleanly from the marketplace.
|
|
16
|
+
- **`.claude-plugin/plugin.json`** — removed the explicit `"hooks": "./hooks/hooks.json"` pointer. Claude Code auto-detects `hooks/hooks.json` at the standard location, so the manifest pointer triggered `Duplicate hooks file`. Hooks still register the same PreToolUse/SessionStart/PostToolUse commands — only the redundant pointer is gone.
|
|
17
|
+
- **`reference/schemas/plugin.schema.json`** — `hooks` is no longer a required field (still permitted for plugins that keep the file elsewhere).
|
|
18
|
+
- **`skills/explore/SKILL.md`** — design interview now runs inline inside `/gdd:explore` instead of being delegated to a `design-discussant` subagent via `Task()`. Subagent spawns in Claude Desktop collapse `AskUserQuestion` to plain markdown; inlining restores the native-picker widget so the interview renders as interactive UI instead of chat text. `/gdd:discuss` and the handoff confirmation flow still use the subagent — only the explore-stage interview moved inline.
|
|
19
|
+
- **`tests/semver-compare.test.cjs`** — registered `1.14.2` and `1.14.3` as recognized off-cadence versions.
|
|
20
|
+
- **`tests/install-script.test.cjs`** — new suite (7 tests) covering the installer: bin wiring, `--help`, fresh install, idempotency, key preservation, `--dry-run` no-write, malformed-JSON exit code.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
7
24
|
## [1.14.2] — 2026-04-20
|
|
8
25
|
|
|
9
26
|
### Added — Multi-format Claude Design handoff ingestion
|
package/README.md
CHANGED
|
@@ -2,24 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
# GET DESIGN DONE
|
|
4
4
|
|
|
5
|
+
**English** · [简体中文](README.zh-CN.md)
|
|
6
|
+
|
|
5
7
|
**Agent-orchestrated design pipeline for Claude Code. Five stages, thirty-three specialized agents, twelve tool connections — from brief to verified shipping work.**
|
|
6
8
|
|
|
7
9
|
**Solves the "Claude made it look fine but nothing ties together" problem: no design system extraction, no reference grounding, no verification against the brief.**
|
|
8
10
|
|
|
9
11
|
[](https://www.npmjs.com/package/@hegemonart/get-design-done)
|
|
12
|
+
[](https://www.npmjs.com/package/@hegemonart/get-design-done)
|
|
13
|
+
[](https://github.com/hegemonart/get-design-done)
|
|
10
14
|
[](https://github.com/hegemonart/get-design-done/actions/workflows/ci.yml)
|
|
11
15
|
[](https://nodejs.org/)
|
|
12
|
-
[](https://github.com/hegemonart/get-design-done/releases/tag/v1.14.0)
|
|
13
16
|
[](LICENSE)
|
|
14
17
|
|
|
15
18
|
<br>
|
|
16
19
|
|
|
17
20
|
```bash
|
|
18
|
-
|
|
19
|
-
claude plugin install get-design-done@get-design-done
|
|
21
|
+
npx @hegemonart/get-design-done@latest
|
|
20
22
|
```
|
|
21
23
|
|
|
22
|
-
**Works on macOS, Linux, and Windows. Requires Claude Code + Node 22/24.**
|
|
24
|
+
**One command. Works on macOS, Linux, and Windows. Requires Claude Code + Node 22/24.**
|
|
23
25
|
|
|
24
26
|
<br>
|
|
25
27
|
|
|
@@ -84,25 +86,43 @@ Built-in quality gates catch real problems: Handoff Faithfulness scoring on Clau
|
|
|
84
86
|
|
|
85
87
|
## Getting Started
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
```bash
|
|
90
|
+
npx @hegemonart/get-design-done@latest
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
That's it. The installer writes a `get-design-done` marketplace entry and enables the plugin in `~/.claude/settings.json` atomically. Restart Claude Code (or run `/reload-plugins`), and the pipeline is live.
|
|
94
|
+
|
|
95
|
+
**What the installer does**
|
|
96
|
+
|
|
97
|
+
- Registers the `github:hegemonart/get-design-done` marketplace in `extraKnownMarketplaces`
|
|
98
|
+
- Flips `enabledPlugins["get-design-done@get-design-done"]` to `true`
|
|
99
|
+
- Preserves every other key in your settings — theme, permissions, other marketplaces — untouched
|
|
100
|
+
- Idempotent: safe to re-run; no duplicate entries
|
|
101
|
+
|
|
102
|
+
On first Claude Code launch after install, a `SessionStart` bootstrap hook provisions the companion reference library `~/.claude/libs/awesome-design-md` (idempotent — subsequent sessions run `git pull --ff-only`).
|
|
103
|
+
|
|
104
|
+
### Non-interactive install (CI, Docker, scripts)
|
|
88
105
|
|
|
89
106
|
```bash
|
|
90
|
-
|
|
91
|
-
|
|
107
|
+
# Dry-run: print the diff, don't write
|
|
108
|
+
npx @hegemonart/get-design-done@latest --dry-run
|
|
109
|
+
|
|
110
|
+
# Custom config dir (Docker, non-default Claude root)
|
|
111
|
+
CLAUDE_CONFIG_DIR=/workspace/.claude npx @hegemonart/get-design-done@latest
|
|
92
112
|
```
|
|
93
113
|
|
|
94
|
-
###
|
|
114
|
+
### Alternative: Claude Code CLI
|
|
95
115
|
|
|
96
|
-
|
|
116
|
+
Prefer to skip the npm package entirely? Use the native plugin CLI:
|
|
97
117
|
|
|
98
118
|
```bash
|
|
99
|
-
|
|
100
|
-
|
|
119
|
+
claude plugin marketplace add hegemonart/get-design-done
|
|
120
|
+
claude plugin install get-design-done@get-design-done
|
|
101
121
|
```
|
|
102
122
|
|
|
103
|
-
|
|
123
|
+
This is what the installer wires up for you — `npx` is just one command instead of two.
|
|
104
124
|
|
|
105
|
-
Verify with:
|
|
125
|
+
Verify any install path with:
|
|
106
126
|
|
|
107
127
|
```
|
|
108
128
|
/gdd:help
|
|
@@ -111,6 +131,22 @@ Verify with:
|
|
|
111
131
|
> [!TIP]
|
|
112
132
|
> Run Claude Code with `--dangerously-skip-permissions` for the intended frictionless flow. GDD is built for autonomous multi-stage execution; approving every file read and `git commit` defeats the purpose.
|
|
113
133
|
|
|
134
|
+
### Staying Updated
|
|
135
|
+
|
|
136
|
+
Get Design Done ships frequent patch releases. To pick up the latest plugin contract, run the installer again — it's idempotent and upgrades the registered marketplace entry in place:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
npx @hegemonart/get-design-done@latest
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Or from inside Claude Code:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
/gdd:update
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`/gdd:update` previews the changelog before applying. Local customizations in `reference/` are preserved — use `/gdd:reapply-patches` if they need re-stitching after a structural release. A `SessionStart` hook surfaces a one-line banner when a newer release is available, gated so it never interrupts an active pipeline stage.
|
|
149
|
+
|
|
114
150
|
---
|
|
115
151
|
|
|
116
152
|
## How It Works
|
|
@@ -823,10 +859,7 @@ The forensic mode runs a 6-check integrity audit — stale artifacts, dangling d
|
|
|
823
859
|
Set `enforcement_mode: "log"` in `.design/budget.json` — the hook writes every decision to `.design/telemetry/costs.jsonl` without blocking.
|
|
824
860
|
|
|
825
861
|
**Updating to the latest version?**
|
|
826
|
-
|
|
827
|
-
/gdd:update
|
|
828
|
-
```
|
|
829
|
-
Previews the changelog before applying. Local customizations in `reference/` are preserved; use `/gdd:reapply-patches` if they need re-stitching after a structural update.
|
|
862
|
+
See [Staying Updated](#staying-updated). Short version: `npx @hegemonart/get-design-done@latest` or `/gdd:update`.
|
|
830
863
|
|
|
831
864
|
### Uninstall
|
|
832
865
|
|
|
@@ -834,13 +867,13 @@ Previews the changelog before applying. Local customizations in `reference/` are
|
|
|
834
867
|
claude plugin uninstall get-design-done@get-design-done
|
|
835
868
|
```
|
|
836
869
|
|
|
837
|
-
|
|
870
|
+
To reverse the `npx` installer, remove the two keys it wrote — either by hand or with a one-liner:
|
|
838
871
|
|
|
839
872
|
```bash
|
|
840
|
-
|
|
873
|
+
node -e "const f=require('os').homedir()+'/.claude/settings.json';const j=require(f);delete j.extraKnownMarketplaces?.['get-design-done'];delete j.enabledPlugins?.['get-design-done@get-design-done'];require('fs').writeFileSync(f,JSON.stringify(j,null,2))"
|
|
841
874
|
```
|
|
842
875
|
|
|
843
|
-
This removes all GDD skills, agents, hooks, and
|
|
876
|
+
This removes all GDD skills, agents, hooks, and registration while preserving your other configurations and your `.design/` project artifacts.
|
|
844
877
|
|
|
845
878
|
---
|
|
846
879
|
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# GET DESIGN DONE
|
|
4
|
+
|
|
5
|
+
[English](README.md) · **简体中文**
|
|
6
|
+
|
|
7
|
+
**面向 Claude Code 的 Agent 编排设计工作流。五个阶段,三十三个专用 Agent,十二个工具接入 —— 从设计简报直达可发布的验证结果。**
|
|
8
|
+
|
|
9
|
+
**专治 "Claude 看起来做得还行,但整套东西对不上" 的老毛病:没有抽取设计系统、没有参考对齐、没有回到简报做验证。**
|
|
10
|
+
|
|
11
|
+
[](https://www.npmjs.com/package/@hegemonart/get-design-done)
|
|
12
|
+
[](https://www.npmjs.com/package/@hegemonart/get-design-done)
|
|
13
|
+
[](https://github.com/hegemonart/get-design-done)
|
|
14
|
+
[](https://github.com/hegemonart/get-design-done/actions/workflows/ci.yml)
|
|
15
|
+
[](https://nodejs.org/)
|
|
16
|
+
[](LICENSE)
|
|
17
|
+
|
|
18
|
+
<br>
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx @hegemonart/get-design-done@latest
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**一条命令即可安装。支持 macOS、Linux、Windows。依赖 Claude Code + Node 22/24。**
|
|
25
|
+
|
|
26
|
+
<br>
|
|
27
|
+
|
|
28
|
+
*"Claude 写代码很快。Get Design Done 让它也能把设计交付出来。"*
|
|
29
|
+
|
|
30
|
+
<br>
|
|
31
|
+
|
|
32
|
+
[为什么做这个](#为什么做这个) · [工作流程](#工作流程) · [画布工具](#ai-native-画布工具) · [组件生成器](#组件生成器) · [命令列表](#命令列表) · [接入的工具](#接入的工具)
|
|
33
|
+
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
> [!IMPORTANT]
|
|
39
|
+
> ### 已有 Claude Design 导出包?
|
|
40
|
+
>
|
|
41
|
+
> 如果你从 [claude.ai/design](https://claude.ai/design) 导出了设计,可以直接跳过前三个阶段:
|
|
42
|
+
>
|
|
43
|
+
> ```
|
|
44
|
+
> /gdd:handoff ./my-design.html
|
|
45
|
+
> ```
|
|
46
|
+
>
|
|
47
|
+
> 此命令会把导出包里的 CSS 自定义属性解析成 D-XX 设计决策,运行带 Handoff Faithfulness 评分的验证流程,并可选地把实现状态写回 Figma。格式说明见 [`connections/claude-design.md`](connections/claude-design.md)。
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 为什么做这个
|
|
52
|
+
|
|
53
|
+
我是一个用 Claude Code 发布产品的设计师。代码侧的工作流(GSD、Speckit、BMAD)已经很成熟,设计侧还没有。
|
|
54
|
+
|
|
55
|
+
反复遇到的问题是:Claude 生成 UI 很乐意,但输出是**脱节的**。Token 对不上既有设计系统、对比度悄悄跌破 WCAG、层级每个页面都重新发明一遍、旧项目里的反模式渗进新项目。所有这些问题要到 PR review 才被发现,因为没人把结果回到最初的设计简报上做校验。
|
|
56
|
+
|
|
57
|
+
所以我做了 Get Design Done。哲学与 GSD 一致 —— **复杂度在系统里,不在你的工作流里**。幕后:三十三个专用 Agent、一个可查询的 intel 存储、按模型分层的路由、十二个工具接入、基于遥测的自我改进循环。台前:几个直接能用的命令。
|
|
58
|
+
|
|
59
|
+
流水线既完成工作,也对工作做验证。我信任这个流程。它把设计交付出来。
|
|
60
|
+
|
|
61
|
+
— **Hegemon**
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
设计侧的 "vibecoding" 和代码侧一样会失败:你描述想要什么,AI 生成看起来像回事的东西,一上规模就垮 —— 因为没有任何东西把产出回拴到最初的简报。
|
|
66
|
+
|
|
67
|
+
Get Design Done 修的就是这个。它是 Claude Code 里设计工作的上下文工程层。捕获简报、清点系统、在真实参考里扎根、拆解成原子化的设计任务、回到简报上做验证 —— 然后发布。
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 适合谁
|
|
72
|
+
|
|
73
|
+
任何用 Claude Code 发布 UI、且希望结果确实站得住的人 —— 工程师、设计师、design engineer、solo 创始人都合适。如果你在意 token 对齐、对比度过 WCAG、结果能回到最初需求,这就是给你的。
|
|
74
|
+
|
|
75
|
+
你不必是专业设计师。流水线自己承担设计专业部分 —— 它抽取系统、在参考里扎根、回到简报做校验,并捕获那些普通人常漏掉的问题。
|
|
76
|
+
|
|
77
|
+
内建的质量闸门会抓真实问题:Claude Design 导出包的 Handoff Faithfulness 评分、调色板 × 表面矩阵的完整对比度审计、NNG 反模式目录检测、暗色模式架构校验、以及动效系统一致性检查。
|
|
78
|
+
|
|
79
|
+
### v1.14.0 亮点
|
|
80
|
+
|
|
81
|
+
- **AI-native 画布工具** —— paper.design(MCP 画布读写、截图验证)和 pencil.dev(git 追踪的 `.pen` 规格文件,不需要 MCP)补齐了一条完整的 canvas→code→verify→canvas 往返链路。
|
|
82
|
+
- **组件生成器** —— 21st.dev Magic MCP 在任何 greenfield 构建前加入先例匹配闸门;Magic Patterns 生成带 `preview_url` 的 DS-aware 组件用于视觉校验。两者都接入同一个 `design-component-generator` Agent。
|
|
83
|
+
- **十二个工具接入** —— 新增四个(paper.design、pencil.dev、21st.dev、Magic Patterns),加上原有的八个。全部可选;任何接入缺席时流水线会优雅地降级到回退方案。
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 快速开始
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npx @hegemonart/get-design-done@latest
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
就这一条。安装器会**原子地**把 `get-design-done` 市场条目写入 `~/.claude/settings.json`,并启用插件。重启 Claude Code(或运行 `/reload-plugins`)之后,流水线就上线了。
|
|
94
|
+
|
|
95
|
+
**安装器做了什么**
|
|
96
|
+
|
|
97
|
+
- 在 `extraKnownMarketplaces` 里注册 `github:hegemonart/get-design-done` 市场
|
|
98
|
+
- 将 `enabledPlugins["get-design-done@get-design-done"]` 置为 `true`
|
|
99
|
+
- 保留 settings 里的其他所有键 —— 主题、权限、其他市场 —— 完全不动
|
|
100
|
+
- 幂等:可以重复运行;不会产生重复条目
|
|
101
|
+
|
|
102
|
+
首次启动 Claude Code 时,`SessionStart` bootstrap 钩子会自动准备参考库 `~/.claude/libs/awesome-design-md`(幂等,后续会话只执行 `git pull --ff-only`)。
|
|
103
|
+
|
|
104
|
+
### 非交互安装(CI、Docker、脚本)
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# 预演:只打印 diff,不实际写入
|
|
108
|
+
npx @hegemonart/get-design-done@latest --dry-run
|
|
109
|
+
|
|
110
|
+
# 自定义配置目录(Docker,或非默认 Claude 根目录)
|
|
111
|
+
CLAUDE_CONFIG_DIR=/workspace/.claude npx @hegemonart/get-design-done@latest
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 另一种方式:Claude Code CLI
|
|
115
|
+
|
|
116
|
+
不想经过 npm 包?直接用原生插件 CLI:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
claude plugin marketplace add hegemonart/get-design-done
|
|
120
|
+
claude plugin install get-design-done@get-design-done
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
这就是安装器帮你做的事情 —— `npx` 只是把两条命令合成了一条。
|
|
124
|
+
|
|
125
|
+
任何安装方式都可以通过下面这条命令验证:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
/gdd:help
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
> [!TIP]
|
|
132
|
+
> 建议以 `--dangerously-skip-permissions` 方式运行 Claude Code,以获得流畅的自动化体验。GDD 设计用于自主的多阶段执行;每次读文件和 `git commit` 都要人工批准会抵消全部意义。
|
|
133
|
+
|
|
134
|
+
### 保持最新
|
|
135
|
+
|
|
136
|
+
Get Design Done 发版频繁。要拿到最新的插件契约,只需要**再跑一次安装器** —— 它是幂等的,会就地更新已注册的市场条目:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
npx @hegemonart/get-design-done@latest
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
也可以在 Claude Code 里直接运行:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
/gdd:update
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`/gdd:update` 会在应用前预览 changelog。`reference/` 目录下的本地修改会被保留 —— 如果结构性更新后需要重新 stitch,用 `/gdd:reapply-patches`。当有新版本时,`SessionStart` 钩子会显示一行横幅通知,并被门控逻辑保护,绝不会打断正在运行的流水线阶段。
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 工作流程
|
|
153
|
+
|
|
154
|
+
> **新接入既有代码库?** 先运行 `/gdd:map`。它会并行派出 5 个专业 mapper(tokens、components、visual hierarchy、a11y、motion)并写入 `.design/map/` —— 这些结构化数据是 Explore 阶段的高质量输入,比基于 grep 的回退方案好得多。
|
|
155
|
+
|
|
156
|
+
### 1. Brief(简报)
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
/gdd:brief
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
一条命令在任何扫描或探索之前先捕获设计问题。此 skill 通过 `AskUserQuestion` 一次一问 —— 只针对未回答的部分:问题、受众、约束、成功指标、范围。
|
|
163
|
+
|
|
164
|
+
### 2. Explore(勘察)
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
/gdd:explore
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
清点当前代码库的设计系统:颜色、排版、间距、组件、动效、可访问性、暗色模式。产出 `.design/DESIGN.md`、`.design/DESIGN-DEBT.md`、`.design/DESIGN-CONTEXT.md`。也会以 `AskUserQuestion` 采访方式补充未在代码里暴露的决策。
|
|
171
|
+
|
|
172
|
+
### 3. Plan(计划)
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
/gdd:plan
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
将 Explore 产出分解为原子化、带 wave 编排和依赖分析的设计任务,写入 `DESIGN-PLAN.md`。每个任务有明确的 Touches 字段、可并行性标签和验收准则。
|
|
179
|
+
|
|
180
|
+
### 4. Design(执行)
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
/gdd:design
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
按 wave 顺序执行计划中的任务。每个任务派出专用 executor Agent,带原子 git commit,并根据代码内上下文偏差规则自动处理偏差。
|
|
187
|
+
|
|
188
|
+
### 5. Verify(验证)
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
/gdd:verify
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
回到简报做验证 —— 必须达成项、NNG 启发式、审计评分、token 集成检查。失败时产出结构化 gap 列表;可通过 `/gdd:audit` 进入 verify→fix 循环。
|
|
195
|
+
|
|
196
|
+
### 6. Ship → Reflect → 下一轮
|
|
197
|
+
|
|
198
|
+
验证通过之后,`/gdd:ship` 生成干净的 PR 分支,`/gdd:reflect` 输出改进建议,`/gdd:apply-reflections` 审核并应用;`/gdd:new-cycle` 开启新的设计周期。
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 为什么能行
|
|
203
|
+
|
|
204
|
+
### 上下文工程
|
|
205
|
+
|
|
206
|
+
Claude Code 功能强大,**前提是**你给它喂足了上下文。多数人没有。
|
|
207
|
+
|
|
208
|
+
GDD 替你处理:
|
|
209
|
+
|
|
210
|
+
| 文件 | 作用 |
|
|
211
|
+
|------|------|
|
|
212
|
+
| `.design/BRIEF.md` | 本次周期的设计问题、受众、成功指标 |
|
|
213
|
+
| `.design/DESIGN.md` | 当前设计系统快照(tokens、组件、层级) |
|
|
214
|
+
| `.design/DESIGN-CONTEXT.md` | D-XX 决策、采访答案、上下游约束 |
|
|
215
|
+
| `.design/DESIGN-PLAN.md` | 原子化任务、wave 编排、依赖 |
|
|
216
|
+
| `.design/DESIGN-VERIFICATION.md` | 验证结果、gap 列表、Handoff Faithfulness 评分 |
|
|
217
|
+
| `.design/intel/` | 可查询的知识层:token 扇出、组件 call-graph、决策溯源 |
|
|
218
|
+
|
|
219
|
+
### 33 个专用 Agent
|
|
220
|
+
|
|
221
|
+
每个阶段都是 "薄编排器 + 专用 Agent" 的模式。编排器本身很轻,重活由 Agent 在全新的 200k 上下文窗口里做,不占用你会话的主上下文。
|
|
222
|
+
|
|
223
|
+
### 12 个工具接入
|
|
224
|
+
|
|
225
|
+
Figma、Refero、Pinterest、Storybook、Chromatic、Claude Design、Playwright 预览、Graphify 知识图谱、paper.design、pencil.dev、21st.dev、Magic Patterns。全部可选;任何一个缺席时流水线都会优雅降级到回退方案。
|
|
226
|
+
|
|
227
|
+
### 原子化 git commit
|
|
228
|
+
|
|
229
|
+
每个设计任务独立提交。Git bisect 能精确定位失败任务;每个任务都可以独立 revert;在 AI 自动化流程里带来更好的可观测性。
|
|
230
|
+
|
|
231
|
+
### 自我改进
|
|
232
|
+
|
|
233
|
+
每次周期结束后,reflector Agent 读取遥测、learnings 和 Agent 指标,生成 `reflections/<slug>.md` 具体改进提案。用 `/gdd:apply-reflections` 审核并选择性应用。
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 命令列表
|
|
238
|
+
|
|
239
|
+
### 核心流水线
|
|
240
|
+
|
|
241
|
+
| 命令 | 作用 |
|
|
242
|
+
|------|------|
|
|
243
|
+
| `/gdd:brief` | 阶段 1 — 捕获设计简报 |
|
|
244
|
+
| `/gdd:explore` | 阶段 2 — 清点代码库 + 采访补齐上下文 |
|
|
245
|
+
| `/gdd:plan` | 阶段 3 — 生成 DESIGN-PLAN.md |
|
|
246
|
+
| `/gdd:design` | 阶段 4 — 按 wave 执行计划 |
|
|
247
|
+
| `/gdd:verify` | 阶段 5 — 回到简报做验证 |
|
|
248
|
+
| `/gdd:ship` | 生成干净的 PR 分支 |
|
|
249
|
+
| `/gdd:next` | 根据 STATE.md 自动路由到下一阶段 |
|
|
250
|
+
|
|
251
|
+
### 生命周期
|
|
252
|
+
|
|
253
|
+
| 命令 | 作用 |
|
|
254
|
+
|------|------|
|
|
255
|
+
| `/gdd:new-project` | 初始化新的 GDD 项目 |
|
|
256
|
+
| `/gdd:new-cycle` | 开启新的设计周期 |
|
|
257
|
+
| `/gdd:complete-cycle` | 归档当前周期 |
|
|
258
|
+
| `/gdd:pause` / `/gdd:resume` | 会话暂停/恢复 |
|
|
259
|
+
|
|
260
|
+
### 独立命令(无需流水线初始化)
|
|
261
|
+
|
|
262
|
+
| 命令 | 作用 |
|
|
263
|
+
|------|------|
|
|
264
|
+
| `/gdd:handoff` | 直接摄取 Claude Design 导出包 |
|
|
265
|
+
| `/gdd:style` | 为单个组件生成交付文档 |
|
|
266
|
+
| `/gdd:darkmode` | 暗色模式审计 |
|
|
267
|
+
| `/gdd:figma-write` | 把决策写回 Figma |
|
|
268
|
+
| `/gdd:sketch` / `/gdd:spike` | 丢弃式原型 / 技术验证 |
|
|
269
|
+
| `/gdd:fast` / `/gdd:quick` | 轻量任务的快速路径 |
|
|
270
|
+
|
|
271
|
+
完整命令列表运行 `/gdd:help` 查看。
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## 配置
|
|
276
|
+
|
|
277
|
+
核心配置在 `.design/config.json`。通过 `/gdd:settings` 管理。
|
|
278
|
+
|
|
279
|
+
### 模型档位
|
|
280
|
+
|
|
281
|
+
| 档位 | 规划 | 执行 | 验证 |
|
|
282
|
+
|------|------|------|------|
|
|
283
|
+
| `quality` | Opus | Opus | Sonnet |
|
|
284
|
+
| `balanced`(默认) | Opus | Sonnet | Sonnet |
|
|
285
|
+
| `budget` | Sonnet | Sonnet | Haiku |
|
|
286
|
+
| `inherit` | 跟随当前运行时 | 跟随 | 跟随 |
|
|
287
|
+
|
|
288
|
+
切换档位:
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
/gdd:settings profile budget
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### 预算与优化
|
|
295
|
+
|
|
296
|
+
- `.design/budget.json` 里的 `per_task_cap_usd` / `per_phase_cap_usd` 由 PreToolUse `budget-enforcer` 钩子强制执行
|
|
297
|
+
- 成本遥测写到 `.design/telemetry/costs.jsonl`
|
|
298
|
+
- `/gdd:warm-cache` 跨所有 Agent 预热 Anthropic 的 5 分钟 prompt 缓存
|
|
299
|
+
- `/gdd:optimize` 基于遥测与 Agent 指标给出规则化建议
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 故障排查
|
|
304
|
+
|
|
305
|
+
**安装后找不到命令?**
|
|
306
|
+
- 重启 Claude Code 以重新加载 skills
|
|
307
|
+
- 用 `/gdd:help` 确认插件已注册
|
|
308
|
+
- 确认 `~/.claude/settings.json` 里有 `enabledPlugins["get-design-done@get-design-done"]: true`
|
|
309
|
+
|
|
310
|
+
**流水线卡住或产物缺失?**
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
/gdd:health
|
|
314
|
+
/gdd:progress --forensic
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Forensic 模式运行一个 6 项检查的完整性审计 —— 陈旧产物、悬空决策、未完成的 handoff、孤立 cycle、schema 漂移、injection scanner 告警。
|
|
318
|
+
|
|
319
|
+
**想看 router 和 budget-enforcer 在做什么?**
|
|
320
|
+
|
|
321
|
+
在 `.design/budget.json` 里把 `enforcement_mode` 设为 `"log"` —— 钩子会把每个决策记录到 `.design/telemetry/costs.jsonl` 但不做阻断。
|
|
322
|
+
|
|
323
|
+
**升级到最新版?**
|
|
324
|
+
|
|
325
|
+
见 [保持最新](#保持最新)。短版本:`npx @hegemonart/get-design-done@latest` 或 `/gdd:update`。
|
|
326
|
+
|
|
327
|
+
### 卸载
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
claude plugin uninstall get-design-done@get-design-done
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
若要回滚 `npx` 安装器写入的两个键,手动删除或用下面这条命令:
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
node -e "const f=require('os').homedir()+'/.claude/settings.json';const j=require(f);delete j.extraKnownMarketplaces?.['get-design-done'];delete j.enabledPlugins?.['get-design-done@get-design-done'];require('fs').writeFileSync(f,JSON.stringify(j,null,2))"
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
这会移除所有 GDD 的 skill、agent、hook 和注册信息,同时保留你的其他配置和项目 `.design/` 产物。
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## License
|
|
344
|
+
|
|
345
|
+
MIT License。详见 [LICENSE](LICENSE)。
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
<div align="center">
|
|
350
|
+
|
|
351
|
+
**Claude Code 很强。Get Design Done 让它能把设计交付出来。**
|
|
352
|
+
|
|
353
|
+
</div>
|
package/package.json
CHANGED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
// npx @hegemonart/get-design-done
|
|
5
|
+
// One-command installer for the get-design-done Claude Code plugin.
|
|
6
|
+
//
|
|
7
|
+
// Registers the github.com/hegemonart/get-design-done marketplace and enables
|
|
8
|
+
// the plugin in ~/.claude/settings.json (or $CLAUDE_CONFIG_DIR/settings.json).
|
|
9
|
+
// Claude Code fetches the plugin payload from the marketplace on next launch.
|
|
10
|
+
//
|
|
11
|
+
// Usage:
|
|
12
|
+
// npx @hegemonart/get-design-done # install
|
|
13
|
+
// npx @hegemonart/get-design-done --dry-run # show what would change
|
|
14
|
+
// npx @hegemonart/get-design-done --help
|
|
15
|
+
|
|
16
|
+
const fs = require('fs');
|
|
17
|
+
const path = require('path');
|
|
18
|
+
const os = require('os');
|
|
19
|
+
|
|
20
|
+
const REPO = 'hegemonart/get-design-done';
|
|
21
|
+
const MARKETPLACE_NAME = 'get-design-done';
|
|
22
|
+
const PLUGIN_NAME = 'get-design-done';
|
|
23
|
+
const ENABLED_KEY = `${PLUGIN_NAME}@${MARKETPLACE_NAME}`;
|
|
24
|
+
|
|
25
|
+
const args = new Set(process.argv.slice(2));
|
|
26
|
+
|
|
27
|
+
if (args.has('--help') || args.has('-h')) {
|
|
28
|
+
process.stdout.write(
|
|
29
|
+
[
|
|
30
|
+
'npx @hegemonart/get-design-done — install the plugin',
|
|
31
|
+
'',
|
|
32
|
+
'Registers the github.com/hegemonart/get-design-done marketplace and',
|
|
33
|
+
'enables the get-design-done plugin in your Claude Code settings.',
|
|
34
|
+
'',
|
|
35
|
+
'Flags:',
|
|
36
|
+
' --dry-run Print the diff without writing',
|
|
37
|
+
' --help, -h Show this message',
|
|
38
|
+
'',
|
|
39
|
+
'Environment:',
|
|
40
|
+
' CLAUDE_CONFIG_DIR Override the Claude config directory',
|
|
41
|
+
' (default: ~/.claude)',
|
|
42
|
+
'',
|
|
43
|
+
'After install, restart Claude Code to load the plugin.',
|
|
44
|
+
'',
|
|
45
|
+
].join('\n'),
|
|
46
|
+
);
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const DRY_RUN = args.has('--dry-run');
|
|
51
|
+
|
|
52
|
+
function resolveConfigDir() {
|
|
53
|
+
if (process.env.CLAUDE_CONFIG_DIR && process.env.CLAUDE_CONFIG_DIR.trim()) {
|
|
54
|
+
return process.env.CLAUDE_CONFIG_DIR.trim();
|
|
55
|
+
}
|
|
56
|
+
return path.join(os.homedir(), '.claude');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function loadSettings(settingsPath) {
|
|
60
|
+
if (!fs.existsSync(settingsPath)) return {};
|
|
61
|
+
try {
|
|
62
|
+
const raw = fs.readFileSync(settingsPath, 'utf8');
|
|
63
|
+
if (!raw.trim()) return {};
|
|
64
|
+
return JSON.parse(raw);
|
|
65
|
+
} catch (err) {
|
|
66
|
+
process.stderr.write(
|
|
67
|
+
`get-design-done installer: cannot parse ${settingsPath} as JSON\n` +
|
|
68
|
+
` ${err.message}\n` +
|
|
69
|
+
` Fix the file manually or delete it, then re-run.\n`,
|
|
70
|
+
);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function mergeSettings(existing) {
|
|
76
|
+
const next = { ...existing };
|
|
77
|
+
|
|
78
|
+
const marketplaces = { ...(next.extraKnownMarketplaces || {}) };
|
|
79
|
+
const marketplaceEntry = {
|
|
80
|
+
source: { source: 'github', repo: REPO },
|
|
81
|
+
};
|
|
82
|
+
const marketplaceChanged =
|
|
83
|
+
JSON.stringify(marketplaces[MARKETPLACE_NAME]) !==
|
|
84
|
+
JSON.stringify(marketplaceEntry);
|
|
85
|
+
marketplaces[MARKETPLACE_NAME] = marketplaceEntry;
|
|
86
|
+
next.extraKnownMarketplaces = marketplaces;
|
|
87
|
+
|
|
88
|
+
const enabled = { ...(next.enabledPlugins || {}) };
|
|
89
|
+
const enabledChanged = enabled[ENABLED_KEY] !== true;
|
|
90
|
+
enabled[ENABLED_KEY] = true;
|
|
91
|
+
next.enabledPlugins = enabled;
|
|
92
|
+
|
|
93
|
+
return { next, changed: marketplaceChanged || enabledChanged };
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function atomicWrite(target, contents) {
|
|
97
|
+
const tmp = `${target}.tmp-${process.pid}`;
|
|
98
|
+
fs.writeFileSync(tmp, contents, { encoding: 'utf8', mode: 0o600 });
|
|
99
|
+
fs.renameSync(tmp, target);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function main() {
|
|
103
|
+
const configDir = resolveConfigDir();
|
|
104
|
+
const settingsPath = path.join(configDir, 'settings.json');
|
|
105
|
+
|
|
106
|
+
if (!fs.existsSync(configDir)) {
|
|
107
|
+
if (DRY_RUN) {
|
|
108
|
+
process.stdout.write(
|
|
109
|
+
`[dry-run] would create ${configDir}\n`,
|
|
110
|
+
);
|
|
111
|
+
} else {
|
|
112
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const existing = loadSettings(settingsPath);
|
|
117
|
+
const { next, changed } = mergeSettings(existing);
|
|
118
|
+
const formatted = `${JSON.stringify(next, null, 2)}\n`;
|
|
119
|
+
|
|
120
|
+
if (!changed) {
|
|
121
|
+
process.stdout.write(
|
|
122
|
+
`get-design-done is already registered in ${settingsPath}\n` +
|
|
123
|
+
`Nothing to do. Restart Claude Code if you haven't yet.\n`,
|
|
124
|
+
);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (DRY_RUN) {
|
|
129
|
+
process.stdout.write(
|
|
130
|
+
`[dry-run] would update ${settingsPath}\n` +
|
|
131
|
+
` extraKnownMarketplaces["${MARKETPLACE_NAME}"] = { source: { source: "github", repo: "${REPO}" } }\n` +
|
|
132
|
+
` enabledPlugins["${ENABLED_KEY}"] = true\n`,
|
|
133
|
+
);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
atomicWrite(settingsPath, formatted);
|
|
138
|
+
|
|
139
|
+
process.stdout.write(
|
|
140
|
+
[
|
|
141
|
+
`✓ get-design-done registered in ${settingsPath}`,
|
|
142
|
+
` marketplace: github:${REPO}`,
|
|
143
|
+
` plugin: ${ENABLED_KEY}`,
|
|
144
|
+
'',
|
|
145
|
+
'Next steps:',
|
|
146
|
+
' 1. Restart Claude Code (or run /reload-plugins).',
|
|
147
|
+
' 2. Claude Code will fetch the plugin on first launch.',
|
|
148
|
+
' 3. Verify with: /plugin list',
|
|
149
|
+
'',
|
|
150
|
+
].join('\n'),
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
main();
|
package/skills/explore/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: gdd-explore
|
|
3
3
|
description: "Codebase inventory + design context — runs scan patterns and design-discussant interview, produces DESIGN.md + DESIGN-DEBT.md + DESIGN-CONTEXT.md (Stage 2 of 5)"
|
|
4
4
|
argument-hint: "[--skip-interview] [--skip-scan]"
|
|
5
|
-
tools: Read, Write, Bash, Grep, Glob, Task
|
|
5
|
+
tools: Read, Write, Bash, Grep, Glob, Task, AskUserQuestion
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Get Design Done — Explore
|
|
@@ -120,27 +120,55 @@ Mark STATE.md `task_progress` for the scan pass.
|
|
|
120
120
|
|
|
121
121
|
## Step 3 — Design interview (unless `--skip-interview`)
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
**Run this inline — do NOT spawn `design-discussant` as a subagent.** Subagent UI tools (`AskUserQuestion`) only render the native picker when called from the top-level skill context; spawning a Task() degrades the interview to plain markdown in chat (broken in Claude Desktop).
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
Task("design-discussant", """
|
|
127
|
-
<required_reading>
|
|
128
|
-
@.design/STATE.md
|
|
129
|
-
@.design/BRIEF.md
|
|
130
|
-
@.design/DESIGN.md
|
|
131
|
-
@./.claude/skills
|
|
132
|
-
</required_reading>
|
|
125
|
+
### 3.a — Pre-load context
|
|
133
126
|
|
|
134
|
-
|
|
127
|
+
Read in this order:
|
|
128
|
+
1. `.design/STATE.md` — existing `<decisions>` D-XX entries (do NOT re-ask anything covered)
|
|
129
|
+
2. `.design/BRIEF.md` — problem statement, audience, constraints
|
|
130
|
+
3. `.design/DESIGN.md` — auto-detected inventory from Step 2
|
|
131
|
+
4. `.design/DESIGN-CONTEXT.md` if it exists — `<gray_areas>` block lists unresolved topics
|
|
132
|
+
5. `./.claude/skills/design-*-conventions.md` if any — locked project conventions, treat as authoritative
|
|
135
133
|
|
|
136
|
-
|
|
137
|
-
Append D-XX decisions to STATE.md <decisions>. Produce/update .design/DESIGN-CONTEXT.md.
|
|
134
|
+
If `<connections>` in STATE.md shows `figma: available`, call `mcp__figma__get_variable_defs` and draft tentative D-XX entries (mark `(tentative — confirm with user)`) before asking.
|
|
138
135
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
136
|
+
### 3.b — Identify question set
|
|
137
|
+
|
|
138
|
+
Build the list of areas needing input. Skip any area already answered by an existing D-XX or covered by a project convention. Default coverage:
|
|
139
|
+
|
|
140
|
+
- Cycle goal / outcome that matters most
|
|
141
|
+
- Audience and primary use context
|
|
142
|
+
- Brand direction (only if no tokens detected in DESIGN.md)
|
|
143
|
+
- Color primitives (only if no palette detected)
|
|
144
|
+
- Typography scale (only if no type system detected)
|
|
145
|
+
- Spacing scale (only if no spacing tokens detected)
|
|
146
|
+
- Motion preferences (only if no motion patterns detected)
|
|
147
|
+
- Any `<gray_areas>` from DESIGN-CONTEXT.md
|
|
148
|
+
|
|
149
|
+
### 3.c — Ask, one question at a time
|
|
150
|
+
|
|
151
|
+
For each area, call `AskUserQuestion` with a single focused question. Provide 4 concrete options plus "Other" / "Skip" where it helps. Do not batch questions into one call. Do not print the question as markdown — always go through the tool.
|
|
152
|
+
|
|
153
|
+
Reject generic answers ("modern", "clean", "professional"). If the answer is vague, ask one follow-up before recording.
|
|
154
|
+
|
|
155
|
+
### 3.d — Record after each answer
|
|
156
|
+
|
|
157
|
+
After each confirmed answer:
|
|
158
|
+
1. Append a `D-XX` entry to `.design/STATE.md` `<decisions>` block. Format:
|
|
159
|
+
```
|
|
160
|
+
D-NN: [Category] Decision summary — short rationale
|
|
161
|
+
```
|
|
162
|
+
2. Append one JSON line to `.design/learnings/question-quality.jsonl` (create if absent):
|
|
163
|
+
```json
|
|
164
|
+
{"ts":"<iso>","question_id":"Q-NN","question_text":"<verbatim>","answer_summary":"<one sentence>","quality":"high|medium|low|skipped","evidence":"<why>","cycle":"<active-cycle-slug>"}
|
|
165
|
+
```
|
|
166
|
+
Quality classification: `skipped` if user picked Skip / "doesn't matter"; `low` if < 10 words and not a specific value; `medium` if hedged ("maybe", "I think", "not sure"); `high` otherwise.
|
|
167
|
+
3. Save STATE.md immediately (incremental save — survives crash mid-interview).
|
|
168
|
+
|
|
169
|
+
### 3.e — Produce DESIGN-CONTEXT.md
|
|
142
170
|
|
|
143
|
-
|
|
171
|
+
When all questions are answered, write `.design/DESIGN-CONTEXT.md` summarizing the locked decisions, remaining gray areas, and any Figma-sourced tentatives that were confirmed or rejected. Set frontmatter `status: complete`.
|
|
144
172
|
|
|
145
173
|
## Step 4 — Update STATE.md
|
|
146
174
|
|