@hegemonart/get-design-done 1.14.3 → 1.14.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +40 -0
- package/README.md +14 -4
- package/README.zh-CN.md +1 -1
- package/agents/design-context-builder.md +5 -3
- package/agents/design-discussant.md +1 -1
- package/agents/design-figma-writer.md +19 -18
- package/agents/design-verifier.md +2 -2
- package/agents/token-mapper.md +1 -1
- package/connections/connections.md +25 -11
- package/connections/figma.md +104 -40
- package/connections/preview.md +9 -5
- package/hooks/budget-enforcer.js +2 -2
- package/package.json +1 -1
- package/reference/STATE-TEMPLATE.md +10 -1
- package/reference/config-schema.md +29 -0
- package/scripts/aggregate-agent-metrics.js +9 -0
- package/skills/connections/SKILL.md +477 -0
- package/skills/discover/SKILL.md +12 -5
- package/skills/explore/SKILL.md +14 -5
- package/skills/figma-write/SKILL.md +3 -4
- package/skills/new-project/SKILL.md +1 -1
- package/skills/progress/SKILL.md +10 -0
- package/skills/scan/SKILL.md +30 -10
- package/skills/verify/SKILL.md +4 -3
|
@@ -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.5"
|
|
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.5",
|
|
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.5",
|
|
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",
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,46 @@ All notable changes to get-design-done are documented here. Versions follow [sem
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.14.5] — 2026-04-23
|
|
8
|
+
|
|
9
|
+
### Fixed — Preview MCP silently skipped in verify even when available ([#19](https://github.com/hegemonart/get-design-done/issues/19))
|
|
10
|
+
|
|
11
|
+
`design-verifier` was spawned with `tools: Read, Write, Bash, Grep, Glob` only. The verify skill's orchestrator-level probe correctly classified the session as `preview: available` and wrote it to `STATE.md`, but the subagent's tool allowlist blocked every `mcp__Claude_Preview__*` call, causing Phase 4B to silently skip screenshot capture and leave all `? VISUAL` heuristic flags unresolved.
|
|
12
|
+
|
|
13
|
+
**Fix:** Added six Preview MCP tools to `design-verifier`'s `tools:` frontmatter — `preview_list`, `preview_navigate`, `preview_screenshot`, `preview_eval`, `preview_snapshot`, `preview_inspect` — so Phase 4B runs in the same permission context as the probe.
|
|
14
|
+
|
|
15
|
+
**Probe hardening:** The availability probe in `connections/preview.md` and `skills/verify/SKILL.md` now distinguishes three failure modes instead of collapsing them to `not_configured`/`unavailable`:
|
|
16
|
+
|
|
17
|
+
| New status | Meaning |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `not_loaded` | ToolSearch empty — MCP not registered in this session |
|
|
20
|
+
| `permission_denied` | ToolSearch found the tool but the live call was rejected by the tool permission layer |
|
|
21
|
+
| `unreachable` | Tool loaded but live call errored for a non-permission reason (no dev server, timeout) |
|
|
22
|
+
|
|
23
|
+
The Phase 4B gate in `design-verifier` skips on all non-`available` statuses and emits a targeted message on `permission_denied` to aid diagnosis.
|
|
24
|
+
|
|
25
|
+
`connections/preview.md` now documents the **execution-context requirement**: the probe and the `preview_*` calls must run in the same context; a parent-session probe does not transfer to a spawned subagent.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## [1.14.4] — 2026-04-20
|
|
30
|
+
|
|
31
|
+
### Fixed — Figma MCP install URL was stale
|
|
32
|
+
|
|
33
|
+
The docs everywhere referenced the legacy `https://mcp.figma.com/v1/sse` endpoint. Users following the current Claude Code Figma MCP flow hit "Failed to connect" because Figma has since moved the server to `https://mcp.figma.com/mcp` (Streamable HTTP). Every skill, agent, and reference doc that prints Figma install steps now uses the current URL, and the migration note tells existing users how to remove a stale registration.
|
|
34
|
+
|
|
35
|
+
### Changed — Variant-agnostic Figma MCP probe
|
|
36
|
+
|
|
37
|
+
- The `mcp__figma__` prefix is no longer hardcoded. The probe matches any server whose name fits `/figma/i` — remote `figma`, `Figma`, local `figma-desktop`, UUID-prefixed instances — via keyword `ToolSearch`, applies a tiebreaker (both-sets > reads-only > canonical `figma` > alphabetical), and writes the resolved `prefix=` and `writes=` capability flags to `.design/STATE.md <connections>`. Consumer skills and agents read the resolved prefix from `STATE.md` instead of hardcoding it.
|
|
38
|
+
- Added preferred install path: `claude plugin install figma@claude-plugins-official` (bundles the MCP + Figma's agent skills). Manual `claude mcp add` remains supported.
|
|
39
|
+
- Tool table extended with `generate_figma_design`, `search_design_system`, `create_new_file`, `whoami`, `generate_diagram`, `get_figjam`, `get_code_connect_suggestions`, `send_code_connect_mappings` — split by reads (remote + desktop) vs writes (remote-only).
|
|
40
|
+
- `design-figma-writer` now STOPs early with a clear install message when only a reads-only variant (e.g. `figma-desktop`) is detected.
|
|
41
|
+
- `tests/semver-compare.test.cjs` — registered `1.14.4` as a recognized off-cadence version.
|
|
42
|
+
|
|
43
|
+
Cherry-picked from `c11cd7b` on `claude/upbeat-fermi-199627` — the Figma MCP fix that was authored before v1.14.2 but never merged to main, so every install doc was printing the outdated URL until this release.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
7
47
|
## [1.14.3] — 2026-04-20
|
|
8
48
|
|
|
9
49
|
### Added — `npx @hegemonart/get-design-done` installer
|
package/README.md
CHANGED
|
@@ -329,7 +329,7 @@ Every connection is optional. The pipeline degrades gracefully — a grep-based
|
|
|
329
329
|
|
|
330
330
|
| Connection | Type | Purpose |
|
|
331
331
|
|-----------|------|---------|
|
|
332
|
-
| Figma | MCP (`
|
|
332
|
+
| Figma | MCP (auto-detects any `/figma/i` server — remote or desktop) | Token extraction, design context pre-population, write-back via `use_figma` (remote only; annotate, tokenize, Code Connect) |
|
|
333
333
|
| Refero | MCP (`mcp__refero__*`) | Reference design search during exploration |
|
|
334
334
|
| Pinterest | MCP (`mcp__mcp-pinterest__*`) | Visual inspiration boards alongside Refero |
|
|
335
335
|
| Preview (Playwright) | MCP (`mcp__Claude_Preview__*`) | Live page screenshots for visual verification |
|
|
@@ -603,13 +603,23 @@ All connections are optional — the pipeline degrades gracefully when any conne
|
|
|
603
603
|
|
|
604
604
|
### Figma MCP (reads + writes)
|
|
605
605
|
|
|
606
|
-
|
|
606
|
+
The pipeline auto-detects any Figma MCP variant — remote (reads + writes) or desktop (reads only). When active, `explore` reads Figma variables and pre-populates design decisions from your file, and `design-figma-writer` writes decisions back via `use_figma` — annotates frames, tokenizes local styles, registers Code Connect mappings. Proposal → confirm discipline with `--dry-run` and `--confirm-shared` guards. Falls back to code-only analysis when no Figma MCP is configured.
|
|
607
|
+
|
|
608
|
+
**Preferred install (Claude Code plugin — bundles MCP + Figma's official skills):**
|
|
609
|
+
|
|
610
|
+
```
|
|
611
|
+
claude plugin install figma@claude-plugins-official
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
**Manual install (remote MCP — reads + writes):**
|
|
607
615
|
|
|
608
616
|
```
|
|
609
|
-
claude mcp add
|
|
617
|
+
claude mcp add --transport http figma https://mcp.figma.com/mcp
|
|
610
618
|
```
|
|
611
619
|
|
|
612
|
-
|
|
620
|
+
**Desktop MCP (reads only):** optionally enabled via the Figma desktop app's Dev Mode. Useful when writes are not needed. Register under server name `figma-desktop` — the probe auto-detects it.
|
|
621
|
+
|
|
622
|
+
Setup: [`connections/figma.md`](connections/figma.md). If you previously registered the remote MCP with the legacy URL `https://mcp.figma.com/v1/sse`, remove and re-add with the current URL `https://mcp.figma.com/mcp` (Streamable HTTP).
|
|
613
623
|
|
|
614
624
|
### Refero MCP
|
|
615
625
|
|
package/README.zh-CN.md
CHANGED
|
@@ -29,7 +29,7 @@ npx @hegemonart/get-design-done@latest
|
|
|
29
29
|
|
|
30
30
|
<br>
|
|
31
31
|
|
|
32
|
-
[为什么做这个](#为什么做这个) · [
|
|
32
|
+
[为什么做这个](#为什么做这个) · [快速开始](#快速开始) · [工作流程](#工作流程) · [命令列表](#命令列表) · [配置](#配置) · [故障排查](#故障排查)
|
|
33
33
|
|
|
34
34
|
</div>
|
|
35
35
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design-context-builder
|
|
3
3
|
description: Detects existing design system state via grep/glob, runs discovery interview asking ONLY unanswered questions, produces .design/DESIGN-CONTEXT.md. Spawned by the discover stage.
|
|
4
|
-
tools: Read, Write, Bash, Grep, Glob, mcp__figma__get_variable_defs, mcp__figma__get_metadata, mcp__refero__search
|
|
4
|
+
tools: Read, Write, Bash, Grep, Glob, mcp__figma__get_variable_defs, mcp__figma__get_metadata, mcp__figma-desktop__get_variable_defs, mcp__figma-desktop__get_metadata, mcp__Figma__get_variable_defs, mcp__Figma__get_metadata, mcp__refero__search
|
|
5
5
|
required_reading:
|
|
6
6
|
- connections/storybook.md
|
|
7
7
|
color: blue
|
|
@@ -47,13 +47,15 @@ The orchestrating stage supplies a `<required_reading>` block in the prompt. Rea
|
|
|
47
47
|
|
|
48
48
|
### If `figma: available`
|
|
49
49
|
|
|
50
|
+
Read the resolved tool prefix from the STATE.md `<connections>` line (e.g., `figma: available (prefix=mcp__figma__, writes=true)` → prefix is `mcp__figma__`). Call this `{P}`.
|
|
51
|
+
|
|
50
52
|
**ToolSearch first.** Figma tools may be in the deferred tool set — calling them without a prior ToolSearch fails silently.
|
|
51
53
|
|
|
52
54
|
```
|
|
53
|
-
ToolSearch({ query: "
|
|
55
|
+
ToolSearch({ query: "figma get_variable_defs", max_results: 5 })
|
|
54
56
|
```
|
|
55
57
|
|
|
56
|
-
Then call `
|
|
58
|
+
Then call `{P}get_variable_defs` (no arguments — returns all variables in the active Figma file).
|
|
57
59
|
|
|
58
60
|
> If `get_variable_defs` errors (most commonly because no Figma file is open): skip Step 0 entirely AND update `.design/STATE.md` `<connections>` to `figma: unavailable`. Proceed to Step 1 with no pre-populated decisions.
|
|
59
61
|
|
|
@@ -30,7 +30,7 @@ The spawning prompt supplies `<required_reading>`. Read every listed file before
|
|
|
30
30
|
|
|
31
31
|
## Step 0 — Context pre-load (Figma only, optional)
|
|
32
32
|
|
|
33
|
-
If `<connections>` in STATE.md shows `figma: available`, `ToolSearch({ query: "
|
|
33
|
+
If `<connections>` in STATE.md shows `figma: available`, read the `prefix=` field on that line (call it `{P}`). Then `ToolSearch({ query: "figma get_variable_defs", max_results: 5 })` and call `{P}get_variable_defs`. For each returned variable, draft a *tentative* D-XX decision (mark "tentative — confirm with user"). Silently skip on any error. Do NOT grep the codebase.
|
|
34
34
|
|
|
35
35
|
## Step 1 — Mode dispatch
|
|
36
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design-figma-writer
|
|
3
3
|
description: Writes design decisions back to Figma — annotations, token bindings, Code Connect mappings, and implementation-status write-back. Operates in proposal→confirm mode by default. Accepts --dry-run (emit proposal without executing) and --confirm-shared (required for writes to team library components).
|
|
4
|
-
tools: Read, Write, Bash, Grep, Glob,
|
|
4
|
+
tools: Read, Write, Bash, Grep, Glob, {P}use_figma, mcp__figma__get_variable_defs, mcp__figma__get_metadata, mcp__Figma__use_figma, mcp__Figma__get_variable_defs, mcp__Figma__get_metadata
|
|
5
5
|
color: purple
|
|
6
6
|
model: inherit
|
|
7
7
|
default-tier: sonnet
|
|
@@ -11,7 +11,7 @@ parallel-safe: never
|
|
|
11
11
|
typical-duration-seconds: 120
|
|
12
12
|
reads-only: false
|
|
13
13
|
writes:
|
|
14
|
-
- "Figma file (via
|
|
14
|
+
- "Figma file (via {resolved_prefix}use_figma — remote MCP only) — annotations, token bindings, Code Connect mappings"
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
@reference/shared-preamble.md
|
|
@@ -26,15 +26,17 @@ You are design-figma-writer. You write design decisions from `.design/DESIGN-CON
|
|
|
26
26
|
|
|
27
27
|
## Step 0 — Remote MCP Probe
|
|
28
28
|
|
|
29
|
-
Run this probe at agent entry before any other action:
|
|
29
|
+
Writes require a remote Figma MCP variant (`use_figma` is remote-only). Run this probe at agent entry before any other action:
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
ToolSearch({ query: "
|
|
33
|
-
|
|
34
|
-
→
|
|
32
|
+
ToolSearch({ query: "figma use_figma", max_results: 10 })
|
|
33
|
+
|
|
34
|
+
Parse tool names matching /^mcp__([^_]*figma[^_]*)__use_figma$/i → write-capable prefix set.
|
|
35
|
+
Empty → Write to output: "Figma remote MCP not available (writes require the remote server, not desktop). Preferred install: `claude plugin install figma@claude-plugins-official`. Manual: `claude mcp add --transport http figma https://mcp.figma.com/mcp`. Then restart the session." → STOP.
|
|
36
|
+
One+ → pick prefix via tiebreaker (1) `figma` > others (2) non-`figma-desktop` (3) alphabetical. Record resolved prefix for use in Steps 1–5.
|
|
35
37
|
```
|
|
36
38
|
|
|
37
|
-
Note:
|
|
39
|
+
Note: the remote Figma MCP (canonical server name `figma`, URL `https://mcp.figma.com/mcp`) exposes both reads (`get_metadata`, `get_variable_defs`) and writes (`use_figma`) on the same server. The desktop MCP (`figma-desktop`) exposes reads only and cannot be used for writes — this agent STOPs if only a desktop variant is detected.
|
|
38
40
|
|
|
39
41
|
---
|
|
40
42
|
|
|
@@ -72,12 +74,11 @@ Read `.design/DESIGN-CONTEXT.md`. Extract the relevant data for the selected mod
|
|
|
72
74
|
- For `tokenize`: color/spacing/type literal values that could map to Figma variables — look for hex values, spacing scales, and typography sizes in the decisions section
|
|
73
75
|
- For `mappings`: component names and their source file paths — look for component listings, file paths, and implementation references
|
|
74
76
|
|
|
75
|
-
Also read the active Figma file structure
|
|
77
|
+
Also read the active Figma file structure. Use the resolved prefix from Step 0 (written here as `{P}` for short — e.g., `mcp__figma__`). Reads and writes share the same server:
|
|
76
78
|
|
|
77
79
|
```
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
mcp__figma__get_variable_defs() // for tokenize mode — variable names and values
|
|
80
|
+
{P}get_metadata() // lightweight layer outline
|
|
81
|
+
{P}get_variable_defs() // for tokenize mode — variable names and values
|
|
81
82
|
```
|
|
82
83
|
|
|
83
84
|
If `get_metadata` errors (no file accessible), write: "No Figma file is accessible. Open the target file in Figma and retry." and STOP.
|
|
@@ -157,12 +158,12 @@ Wait for user response. If response is not "yes", STOP with "Cancelled."
|
|
|
157
158
|
|
|
158
159
|
## Step 5 — Execute Writes
|
|
159
160
|
|
|
160
|
-
For each operation in the proposal, call `
|
|
161
|
+
For each operation in the proposal, call `{P}use_figma` with the appropriate operation payload.
|
|
161
162
|
|
|
162
163
|
For `annotate`:
|
|
163
164
|
|
|
164
165
|
```javascript
|
|
165
|
-
|
|
166
|
+
{P}use_figma({
|
|
166
167
|
operation: "add_comment",
|
|
167
168
|
layerId: "<layer-id>",
|
|
168
169
|
message: "<annotation text>"
|
|
@@ -172,7 +173,7 @@ mcp__figma__use_figma({
|
|
|
172
173
|
For `tokenize`:
|
|
173
174
|
|
|
174
175
|
```javascript
|
|
175
|
-
|
|
176
|
+
{P}use_figma({
|
|
176
177
|
operation: "set_variable_binding",
|
|
177
178
|
nodeId: "<node-id>",
|
|
178
179
|
field: "fills[0].color",
|
|
@@ -183,7 +184,7 @@ mcp__figma__use_figma({
|
|
|
183
184
|
For `mappings`:
|
|
184
185
|
|
|
185
186
|
```javascript
|
|
186
|
-
|
|
187
|
+
{P}use_figma({
|
|
187
188
|
operation: "set_code_connect",
|
|
188
189
|
componentId: "<component-id>",
|
|
189
190
|
filePath: "<relative-path>",
|
|
@@ -266,7 +267,7 @@ If user says "edit": allow user to modify proposal, then re-confirm.
|
|
|
266
267
|
|
|
267
268
|
For each confirmed annotation:
|
|
268
269
|
```javascript
|
|
269
|
-
|
|
270
|
+
{P}use_figma({
|
|
270
271
|
operation: "add_comment",
|
|
271
272
|
layerId: "<frame-node-id>",
|
|
272
273
|
message: "Implementation: <status> — verified <ISO date>"
|
|
@@ -277,7 +278,7 @@ mcp__figma__use_figma({
|
|
|
277
278
|
|
|
278
279
|
For each confirmed Code Connect mapping:
|
|
279
280
|
```javascript
|
|
280
|
-
|
|
281
|
+
{P}use_figma({
|
|
281
282
|
operation: "set_code_connect",
|
|
282
283
|
componentId: "<component-node-id>",
|
|
283
284
|
filePath: "<relative-code-path>",
|
|
@@ -287,7 +288,7 @@ mcp__figma__use_figma({
|
|
|
287
288
|
|
|
288
289
|
After all individual mappings, send the batch:
|
|
289
290
|
```javascript
|
|
290
|
-
|
|
291
|
+
{P}use_figma({
|
|
291
292
|
operation: "send_code_connect_mappings"
|
|
292
293
|
})
|
|
293
294
|
```
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design-verifier
|
|
3
3
|
description: Goal-backward verification of design outcomes against .design/STATE.md must-haves, NNG heuristics, and audit rubric. Returns pass result or structured gap list. Spawned by the verify stage.
|
|
4
|
-
tools: Read, Write, Bash, Grep, Glob
|
|
4
|
+
tools: Read, Write, Bash, Grep, Glob, mcp__Claude_Preview__preview_list, mcp__Claude_Preview__preview_navigate, mcp__Claude_Preview__preview_screenshot, mcp__Claude_Preview__preview_eval, mcp__Claude_Preview__preview_snapshot, mcp__Claude_Preview__preview_inspect
|
|
5
5
|
color: green
|
|
6
6
|
model: inherit
|
|
7
7
|
default-tier: haiku
|
|
@@ -267,7 +267,7 @@ Record each response. For `no` responses, capture the user's issue description v
|
|
|
267
267
|
|
|
268
268
|
## Phase 4B — Screenshot Evidence (when preview: available)
|
|
269
269
|
|
|
270
|
-
**Gate:** Skip this entire Phase 4B block if `preview` is `not_configured` or `unavailable` in STATE.md `<connections>`. The `? VISUAL` flags from Phase 3 remain as-is; mark them `[SKIPPED — browser not available]` and proceed to Phase 5.
|
|
270
|
+
**Gate:** Skip this entire Phase 4B block if `preview` is `not_loaded`, `not_configured`, `permission_denied`, `unreachable`, or `unavailable` in STATE.md `<connections>`. The `? VISUAL` flags from Phase 3 remain as-is; mark them `[SKIPPED — browser not available]` and proceed to Phase 5. When skipping due to `permission_denied`, also log: `Preview MCP tools missing from agent allowlist — contact the pipeline maintainer.`
|
|
271
271
|
|
|
272
272
|
**Step 1 — ToolSearch first:**
|
|
273
273
|
|
package/agents/token-mapper.md
CHANGED
|
@@ -63,7 +63,7 @@ grep -rEn "box-shadow\s*:|shadow-(sm|md|lg|xl|2xl)" src/ --include="*.css" --inc
|
|
|
63
63
|
|
|
64
64
|
### Figma augmentation
|
|
65
65
|
|
|
66
|
-
If STATE.md `<connections>` has `figma: available`, call `
|
|
66
|
+
If STATE.md `<connections>` has `figma: available`, read the `prefix=` field on that line and call `{prefix}get_variable_defs` to augment with named Figma variables. Works with both remote (`mcp__figma__`) and desktop (`mcp__figma-desktop__`) variants — `get_variable_defs` is available on both.
|
|
67
67
|
|
|
68
68
|
## Output Format — `.design/map/tokens.md`
|
|
69
69
|
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
This directory contains connection specifications for external tools and MCPs that the get-design-done pipeline integrates with. Each connection has its own spec file. This file is the index.
|
|
4
4
|
|
|
5
|
+
**Getting started:** run `/gdd:connections` for the interactive onboarding wizard — it probes all 12 connections, recommends setup based on your project type, and walks you through installing each one (auto-run for reversible MCP adds, copy-command for everything else). You can also run `/gdd:connections list` for a read-only status check or `/gdd:connections <name>` to jump to a single connection's setup.
|
|
6
|
+
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
## Active Connections
|
|
8
10
|
|
|
9
11
|
| Connection | Status | Spec File | Notes |
|
|
10
12
|
|-----------|--------|-----------|-------|
|
|
11
|
-
| Figma | Active | [`connections/figma.md`](connections/figma.md) |
|
|
13
|
+
| Figma | Active | [`connections/figma.md`](connections/figma.md) | Auto-detects any Figma MCP variant (remote reads+writes, desktop reads-only); prefix resolved at probe time |
|
|
12
14
|
| Refero | Active | [`connections/refero.md`](connections/refero.md) | Uses `mcp__refero__*` tools (verify names via ToolSearch) |
|
|
13
15
|
| Preview | Active | [`connections/preview.md`](connections/preview.md) | Uses `mcp__Claude_Preview__*` tools |
|
|
14
16
|
| Storybook | Active | [`connections/storybook.md`](connections/storybook.md) | HTTP probe: `localhost:6006/index.json` |
|
|
@@ -83,18 +85,30 @@ refero: not_configured
|
|
|
83
85
|
|
|
84
86
|
**Figma probe (execute at stage entry, after reading STATE.md):**
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
The probe is variant-agnostic — it resolves any server whose prefix matches `/figma/i` (e.g., `figma`, `Figma`, `figma-desktop`, UUID-prefixed remote instances) and records the resolved prefix plus writes capability. Remote MCP exposes `use_figma` (writes-capable). Desktop MCP exposes reads only.
|
|
87
89
|
|
|
88
90
|
```
|
|
89
|
-
Step A1 — ToolSearch
|
|
90
|
-
ToolSearch({ query: "
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
91
|
+
Step A1 — Keyword ToolSearch:
|
|
92
|
+
ToolSearch({ query: "figma get_metadata use_figma", max_results: 10 })
|
|
93
|
+
|
|
94
|
+
Parse tool names for:
|
|
95
|
+
/^mcp__([^_]*figma[^_]*)__get_metadata$/i → read-capable prefix set
|
|
96
|
+
/^mcp__([^_]*figma[^_]*)__use_figma$/i → write-capable prefix set
|
|
97
|
+
|
|
98
|
+
Empty read set → figma: not_configured (skip all Figma steps)
|
|
99
|
+
One+ matches → proceed to Step A2
|
|
100
|
+
|
|
101
|
+
Step A2 — Tiebreaker selection:
|
|
102
|
+
Preference order when multiple read prefixes match:
|
|
103
|
+
(1) both-sets > reads-only
|
|
104
|
+
(2) `figma` > others
|
|
105
|
+
(3) non-`figma-desktop` > desktop
|
|
106
|
+
(4) alphabetical
|
|
107
|
+
|
|
108
|
+
Step A3 — Live tool call on resolved prefix:
|
|
109
|
+
call mcp__<prefix>__get_metadata
|
|
110
|
+
→ Success → figma: available (prefix=mcp__<prefix>__, writes=<true|false>)
|
|
111
|
+
→ Error → figma: unavailable (skip all Figma steps)
|
|
98
112
|
|
|
99
113
|
Write figma status to STATE.md <connections>.
|
|
100
114
|
```
|
package/connections/figma.md
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# Figma MCP — Connection Specification
|
|
2
2
|
|
|
3
|
-
This file is the connection specification for the Figma MCP
|
|
3
|
+
This file is the connection specification for the Figma MCP within the get-design-done pipeline. Figma publishes two MCP variants, both officially supported:
|
|
4
|
+
|
|
5
|
+
- **Remote MCP** (`https://mcp.figma.com/mcp`) — full read + write. Exposes read tools (`get_metadata`, `get_design_context`, `get_variable_defs`, `get_screenshot`, `get_figjam`, `search_design_system`) and remote-only write tools (`use_figma`, `generate_figma_design`, `create_new_file`, `whoami`).
|
|
6
|
+
- **Desktop MCP** (local HTTP, served by the Figma desktop app in Dev Mode) — reads only. Exposes the same read tools but not `use_figma`. Useful for offline/no-network reads.
|
|
7
|
+
|
|
8
|
+
The pipeline auto-detects any server whose name matches `/figma/i` (e.g., `figma`, `Figma`, `figma-desktop`, UUID-prefixed instances) and records the resolved prefix plus `writes` capability in `STATE.md`. See `connections/connections.md` for the full connection index and capability matrix.
|
|
4
9
|
|
|
5
10
|
---
|
|
6
11
|
|
|
@@ -9,29 +14,46 @@ This file is the connection specification for the Figma MCP (remote, read + writ
|
|
|
9
14
|
**Prerequisites:**
|
|
10
15
|
|
|
11
16
|
- A Figma account (OAuth on first use at `mcp.figma.com`).
|
|
12
|
-
- Figma file access for any file you intend to read or write.
|
|
17
|
+
- Figma file access for any file you intend to read or write.
|
|
18
|
+
- (Optional for desktop variant) Figma desktop app running with the target file open in Dev Mode.
|
|
19
|
+
|
|
20
|
+
### Option A — Claude Code plugin (preferred)
|
|
21
|
+
|
|
22
|
+
Anthropic publishes an official Figma plugin that bundles the MCP configuration plus Figma's agent skills:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
claude plugin install figma@claude-plugins-official
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Restart the Claude Code session after install. OAuth prompts on first tool call.
|
|
13
29
|
|
|
14
|
-
|
|
30
|
+
### Option B — Manual remote MCP install
|
|
15
31
|
|
|
16
32
|
```
|
|
17
|
-
claude mcp add
|
|
33
|
+
claude mcp add --transport http figma https://mcp.figma.com/mcp
|
|
18
34
|
```
|
|
19
35
|
|
|
20
|
-
|
|
36
|
+
Restart the session. OAuth prompts on first tool call. One install unlocks both reads and writes.
|
|
37
|
+
|
|
38
|
+
> **Note:** The legacy server URL `https://mcp.figma.com/v1/sse` is superseded. Current canonical URL is `https://mcp.figma.com/mcp` (Streamable HTTP). Remove any prior registration using the old URL: `claude mcp remove figma` then re-run the install command above.
|
|
39
|
+
|
|
40
|
+
### Option C — Desktop MCP (reads only)
|
|
41
|
+
|
|
42
|
+
The Figma desktop app exposes a local MCP server on Dev Mode. This path is useful when writes are not needed and network access is restricted. Desktop MCP is typically registered under the server name `figma-desktop` — follow the Figma desktop app's Dev Mode instructions for your Figma version.
|
|
21
43
|
|
|
22
44
|
**Verification:**
|
|
23
45
|
|
|
24
46
|
After session restart, run:
|
|
25
47
|
|
|
26
48
|
```
|
|
27
|
-
ToolSearch({ query: "
|
|
49
|
+
ToolSearch({ query: "figma get_metadata use_figma", max_results: 10 })
|
|
28
50
|
```
|
|
29
51
|
|
|
30
|
-
|
|
52
|
+
The probe accepts any server prefix matching `/figma/i`. At least one result with a `get_metadata` tool is required for reads. A matching `use_figma` tool is required for writes (remote only).
|
|
31
53
|
|
|
32
|
-
**Migration from
|
|
54
|
+
**Migration from older plugin versions:**
|
|
33
55
|
|
|
34
|
-
|
|
56
|
+
Plugin versions before v1.0.7.1 used two separate Figma MCPs — `figma-desktop` (reads) and `figma` (writes). As of v1.0.7.1, the remote MCP exposes full read parity, so a single remote install is sufficient for most users. The desktop MCP remains supported as a reads-only fallback and is auto-detected alongside remote. If you only want the remote path, remove desktop:
|
|
35
57
|
|
|
36
58
|
```
|
|
37
59
|
claude mcp remove figma-desktop
|
|
@@ -43,26 +65,45 @@ No data is lost — the remote MCP reads the same Figma files.
|
|
|
43
65
|
|
|
44
66
|
## Tools
|
|
45
67
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
|
51
|
-
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
68
|
+
Tool names take the form `mcp__<prefix>__<tool>` where `<prefix>` is the resolved server name from the probe (commonly `figma` for remote or `figma-desktop` for local). The pipeline discovers the prefix at runtime — see **Availability Probe** below. The `mcp__figma__` examples shown here assume a server registered as `figma`.
|
|
69
|
+
|
|
70
|
+
**Reads (available on remote and desktop):**
|
|
71
|
+
|
|
72
|
+
| Tool | Returns | Pipeline use |
|
|
73
|
+
|------|---------|--------------|
|
|
74
|
+
| `get_metadata` | Lightweight outline: node IDs, names, types, position/size. Also the availability probe. | **In scope** — probe (works without a selection); metadata snapshot for figma-write proposal review |
|
|
75
|
+
| `get_variable_defs` | Variable collection tree: collection ID, mode names, variable names (hierarchical, e.g. `colors/primary/500`), resolved values, descriptions, scopes | **In scope** — scan: token augmentation (CONN-03); discover: decisions pre-population (CONN-04); figma-write: tokenize mode source |
|
|
76
|
+
| `get_design_context` | Structured React+Tailwind component tree of the current Figma selection | **In scope (secondary)** — discover: existing design decisions for established Figma systems |
|
|
77
|
+
| `get_screenshot` | Screenshot image of the selected Figma layer or frame | **In scope (opt-in)** — visual reference capture for discovery; not invoked by default |
|
|
78
|
+
| `get_figjam` | FigJam diagram metadata (XML) plus node screenshots | Out of scope this phase (not part of the design pipeline) |
|
|
79
|
+
| `search_design_system` | Matching components, variables, and styles across connected libraries for a text query | Out of scope this phase (reserved for future Code Connect work) |
|
|
80
|
+
| `get_code_connect_map` | Maps Figma component instances to code file paths | Out of scope this phase (reserved for future Code Connect work) |
|
|
81
|
+
| `add_code_connect_map` | Adds Code Connect mapping entries | Out of scope this phase (reserved for future Code Connect work) |
|
|
82
|
+
| `get_code_connect_suggestions` | Suggested Code Connect mappings between Figma and code components | Out of scope this phase |
|
|
83
|
+
| `send_code_connect_mappings` | Confirms and finalizes Code Connect mappings | Out of scope this phase |
|
|
84
|
+
| `create_design_system_rules` | Generates rule files for design system alignment during code generation | Out of scope this phase |
|
|
85
|
+
|
|
86
|
+
**Writes (remote only):**
|
|
87
|
+
|
|
88
|
+
| Tool | Returns | Pipeline use |
|
|
89
|
+
|------|---------|--------------|
|
|
90
|
+
| `use_figma` | Write operation result | **In scope** — figma-write: all three modes (annotate, tokenize, mappings) |
|
|
91
|
+
| `generate_figma_design` | Imports/converts a web page into Figma design layers | Out of scope this phase |
|
|
92
|
+
| `generate_diagram` | Generates a FigJam diagram from Mermaid syntax | Out of scope this phase |
|
|
93
|
+
| `create_new_file` | Creates a new blank Figma Design or FigJam file | Out of scope this phase |
|
|
94
|
+
| `whoami` | Authenticated user identity, plans, and seat types | Optional — useful for surfacing Dev seat status before a write |
|
|
58
95
|
|
|
59
96
|
`get_metadata` is preferred for probing because it works without a file or selection open, keeping the probe lightweight. `get_variable_defs` is the primary workhorse for token extraction and decisions pre-population. `use_figma` is the single entry point for every write.
|
|
60
97
|
|
|
98
|
+
**Remote-only tools** (`use_figma`, `generate_figma_design`, `create_new_file`, `whoami`, `generate_diagram`): absent from the desktop MCP. When the probe resolves to a desktop-only prefix, stages that require these tools either STOP (figma-write) or fall back silently.
|
|
99
|
+
|
|
61
100
|
---
|
|
62
101
|
|
|
63
102
|
## Writes (`use_figma`)
|
|
64
103
|
|
|
65
|
-
`use_figma` is the single write tool
|
|
104
|
+
`use_figma` is the single write tool and is **remote only**. The `design-figma-writer` agent (`agents/design-figma-writer.md`) wraps it in a **proposal → confirm** UX — it builds a numbered operation list and presents it to the user before executing any write. The user must confirm before `use_figma` is called.
|
|
105
|
+
|
|
106
|
+
If the resolved probe prefix points to a desktop variant (no `use_figma`), figma-write STOPs early and instructs the user to register the remote MCP. No partial writes, no silent failures.
|
|
66
107
|
|
|
67
108
|
### Three Modes
|
|
68
109
|
|
|
@@ -99,22 +140,34 @@ Both scan and discover call `get_variable_defs` with no explicit selection to re
|
|
|
99
140
|
|
|
100
141
|
## Availability Probe
|
|
101
142
|
|
|
102
|
-
**Call ToolSearch first — always.** In Claude Code sessions with many MCP servers,
|
|
143
|
+
**Call ToolSearch first — always.** In Claude Code sessions with many MCP servers, Figma tools may be in the deferred tool set (not loaded into context at session start). Calling a deferred tool directly fails silently or errors. ToolSearch loads the tools into context and confirms their presence in a single call.
|
|
103
144
|
|
|
104
|
-
|
|
145
|
+
The probe is **variant-agnostic**: it accepts any server prefix matching `/figma/i` (e.g., `figma`, `Figma`, `figma-desktop`, `3860b164-...` UUID-prefixed remote instances) and records both the resolved prefix and the writes capability.
|
|
105
146
|
|
|
106
147
|
**Figma probe sequence:**
|
|
107
148
|
|
|
108
149
|
```
|
|
109
|
-
Step 1 — ToolSearch
|
|
110
|
-
ToolSearch({ query: "
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
150
|
+
Step 1 — Keyword ToolSearch:
|
|
151
|
+
ToolSearch({ query: "figma get_metadata use_figma", max_results: 10 })
|
|
152
|
+
|
|
153
|
+
Parse results for tool names matching:
|
|
154
|
+
- /^mcp__([^_]*figma[^_]*)__get_metadata$/i → captures read-capable prefixes
|
|
155
|
+
- /^mcp__([^_]*figma[^_]*)__use_figma$/i → captures write-capable prefixes
|
|
156
|
+
|
|
157
|
+
No read match → figma: not_configured (no Figma MCP registered)
|
|
158
|
+
One or more matches → proceed to Step 2
|
|
159
|
+
|
|
160
|
+
Step 2 — Tiebreaker selection:
|
|
161
|
+
Preference order when multiple prefixes match:
|
|
162
|
+
1. Prefer prefixes that appear in BOTH the read set and the write set
|
|
163
|
+
2. Among remaining prefixes, prefer `figma` (canonical remote server name)
|
|
164
|
+
3. Among remaining prefixes, prefer non-`figma-desktop`
|
|
165
|
+
4. Alphabetical
|
|
166
|
+
|
|
167
|
+
Step 3 — Live tool call on resolved prefix:
|
|
168
|
+
call mcp__<prefix>__get_metadata
|
|
169
|
+
→ Success → figma: available (prefix=mcp__<prefix>__, writes=<true|false>)
|
|
170
|
+
→ Error → figma: unavailable (auth expired, rate-limited, or no file open)
|
|
118
171
|
```
|
|
119
172
|
|
|
120
173
|
Write the result to `.design/STATE.md` `<connections>` immediately after probing.
|
|
@@ -150,24 +203,35 @@ Stages do not append a `<blocker>` for a missing Figma connection — Figma is a
|
|
|
150
203
|
|
|
151
204
|
## STATE.md Integration
|
|
152
205
|
|
|
153
|
-
Every stage writes its probe result to `.design/STATE.md` under the `<connections>` section:
|
|
206
|
+
Every stage writes its probe result to `.design/STATE.md` under the `<connections>` section. The format carries three fields for Figma: status, resolved tool prefix, and writes capability.
|
|
154
207
|
|
|
155
208
|
```xml
|
|
156
209
|
<connections>
|
|
157
|
-
figma: available
|
|
210
|
+
figma: available (prefix=mcp__figma__, writes=true)
|
|
158
211
|
refero: not_configured
|
|
159
212
|
</connections>
|
|
160
213
|
```
|
|
161
214
|
|
|
215
|
+
Other examples:
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
figma: available (prefix=mcp__figma-desktop__, writes=false)
|
|
219
|
+
figma: available (prefix=mcp__Figma__, writes=false)
|
|
220
|
+
figma: unavailable
|
|
221
|
+
figma: not_configured
|
|
222
|
+
```
|
|
223
|
+
|
|
162
224
|
**Status values:**
|
|
163
225
|
|
|
164
226
|
| Value | Meaning |
|
|
165
227
|
|-------|---------|
|
|
166
|
-
| `available` | `get_metadata`
|
|
228
|
+
| `available` | A matching `get_metadata` tool was resolved and the live call succeeded. The `writes=` flag indicates whether `use_figma` is also present on the same prefix. |
|
|
167
229
|
| `unavailable` | Tool is in the session but errored (auth expired, no file open, rate-limited) |
|
|
168
|
-
| `not_configured` |
|
|
230
|
+
| `not_configured` | No server matching `/figma/i` exposes `get_metadata` — MCP not registered |
|
|
231
|
+
|
|
232
|
+
**Consumer contract.** Agents that call Figma tools MUST read the resolved prefix from STATE.md and construct tool names dynamically (`{prefix}get_variable_defs`, `{prefix}use_figma`), rather than hardcoding `mcp__figma__`. Agents that need writes MUST additionally check `writes=true` and STOP early with a clear message when false.
|
|
169
233
|
|
|
170
|
-
The `<connections>` schema is minimal by design. Traceability of which outputs came from Figma is handled via source annotations in DESIGN.md (`source: figma-variables`) and DESIGN-CONTEXT.md ("pre-populated from Figma variables"), not via richer STATE.md fields.
|
|
234
|
+
The `<connections>` schema is minimal by design. Traceability of which outputs came from Figma is handled via source annotations in DESIGN.md (`source: figma-variables`) and DESIGN-CONTEXT.md ("pre-populated from Figma variables"), not via richer STATE.md fields.
|
|
171
235
|
|
|
172
236
|
---
|
|
173
237
|
|
|
@@ -179,10 +243,10 @@ The `<connections>` schema is minimal by design. Traceability of which outputs c
|
|
|
179
243
|
|
|
180
244
|
- **Multi-mode variables (Light/Dark).** Variables may carry values for multiple modes. When present, extract both: `#3B82F6 (light) / #60A5FA (dark)`. DESIGN.md can note dark-mode token existence in the color section.
|
|
181
245
|
|
|
182
|
-
- **Deferred-tool loading.** Always call `ToolSearch` before any
|
|
246
|
+
- **Deferred-tool loading.** Always call `ToolSearch` before any Figma tool invocation. This applies at every stage entry, even if Figma was `available` in a previous run — tool availability and the resolved prefix can change between sessions.
|
|
183
247
|
|
|
184
248
|
- **All writes require user confirmation.** The proposal→confirm UX in `design-figma-writer` ensures the user reviews all operations before any write is executed. There is no auto-approve mode. See `agents/design-figma-writer.md` for the proposal contract.
|
|
185
249
|
|
|
186
250
|
- **OAuth re-auth.** If `get_metadata` starts returning auth errors after previously working, the OAuth session expired. Re-running the MCP install command is not required — the session refreshes on the next tool call that returns a `reauth` hint. A clean `claude mcp remove figma && claude mcp add ...` is always safe.
|
|
187
251
|
|
|
188
|
-
- **
|
|
252
|
+
- **Desktop MCP reads-only.** The desktop MCP (typically `figma-desktop`) exposes read tools only. It is auto-detected by the probe and is a supported fallback when writes are not needed. Stages that require writes (figma-write) STOP with an instruction to register the remote MCP.
|