@hegemonart/get-design-done 1.20.0 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +9 -12
- package/.claude-plugin/plugin.json +8 -31
- package/CHANGELOG.md +78 -0
- package/README.md +48 -7
- package/bin/gdd-sdk +55 -0
- package/package.json +15 -47
- package/reference/codex-tools.md +53 -0
- package/reference/gemini-tools.md +53 -0
- package/reference/registry.json +14 -0
- package/scripts/e2e/run-headless.ts +514 -0
- package/scripts/lib/cli/commands/audit.ts +382 -0
- package/scripts/lib/cli/commands/init.ts +217 -0
- package/scripts/lib/cli/commands/query.ts +329 -0
- package/scripts/lib/cli/commands/run.ts +656 -0
- package/scripts/lib/cli/commands/stage.ts +468 -0
- package/scripts/lib/cli/index.ts +167 -0
- package/scripts/lib/cli/parse-args.ts +336 -0
- package/scripts/lib/context-engine/index.ts +116 -0
- package/scripts/lib/context-engine/manifest.ts +69 -0
- package/scripts/lib/context-engine/truncate.ts +282 -0
- package/scripts/lib/context-engine/types.ts +59 -0
- package/scripts/lib/discuss-parallel-runner/aggregator.ts +448 -0
- package/scripts/lib/discuss-parallel-runner/discussants.ts +430 -0
- package/scripts/lib/discuss-parallel-runner/index.ts +223 -0
- package/scripts/lib/discuss-parallel-runner/types.ts +184 -0
- package/scripts/lib/event-stream/index.ts +11 -1
- package/scripts/lib/explore-parallel-runner/index.ts +294 -0
- package/scripts/lib/explore-parallel-runner/mappers.ts +290 -0
- package/scripts/lib/explore-parallel-runner/synthesizer.ts +295 -0
- package/scripts/lib/explore-parallel-runner/types.ts +139 -0
- package/scripts/lib/harness/detect.ts +90 -0
- package/scripts/lib/harness/index.ts +64 -0
- package/scripts/lib/harness/tool-map.ts +142 -0
- package/scripts/lib/init-runner/index.ts +396 -0
- package/scripts/lib/init-runner/researchers.ts +245 -0
- package/scripts/lib/init-runner/scaffold.ts +224 -0
- package/scripts/lib/init-runner/synthesizer.ts +224 -0
- package/scripts/lib/init-runner/types.ts +143 -0
- package/scripts/lib/logger/index.ts +251 -0
- package/scripts/lib/logger/sinks.ts +269 -0
- package/scripts/lib/logger/types.ts +110 -0
- package/scripts/lib/pipeline-runner/human-gate.ts +134 -0
- package/scripts/lib/pipeline-runner/index.ts +527 -0
- package/scripts/lib/pipeline-runner/stage-handlers.ts +339 -0
- package/scripts/lib/pipeline-runner/state-machine.ts +144 -0
- package/scripts/lib/pipeline-runner/types.ts +183 -0
- package/scripts/lib/session-runner/errors.ts +406 -0
- package/scripts/lib/session-runner/index.ts +715 -0
- package/scripts/lib/session-runner/transcript.ts +189 -0
- package/scripts/lib/session-runner/types.ts +144 -0
- package/scripts/lib/tool-scoping/index.ts +219 -0
- package/scripts/lib/tool-scoping/parse-agent-tools.ts +207 -0
- package/scripts/lib/tool-scoping/stage-scopes.ts +139 -0
- package/scripts/lib/tool-scoping/types.ts +77 -0
|
@@ -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). v1.20.0 ships the SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream, and resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) for rate-limit + 429 + context-overflow recovery. Full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows) and release automation (auto-tag + GitHub Release + release-time smoke test).",
|
|
8
|
-
"version": "1.
|
|
8
|
+
"version": "1.21.0"
|
|
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. v1.20.0 SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream at .design/telemetry/events.jsonl, resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) with rate-limit + 429 + context-overflow recovery, and TypeScript toolchain.",
|
|
15
|
-
"version": "1.
|
|
15
|
+
"version": "1.21.0",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "hegemonart"
|
|
18
18
|
},
|
|
@@ -62,16 +62,13 @@
|
|
|
62
62
|
"cost-optimization",
|
|
63
63
|
"cache-aware",
|
|
64
64
|
"budget",
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"form-patterns",
|
|
73
|
-
"data-viz",
|
|
74
|
-
"platforms"
|
|
65
|
+
"headless",
|
|
66
|
+
"cli",
|
|
67
|
+
"codex",
|
|
68
|
+
"gemini",
|
|
69
|
+
"mcp",
|
|
70
|
+
"parallel-agents",
|
|
71
|
+
"agent-sdk"
|
|
75
72
|
]
|
|
76
73
|
}
|
|
77
74
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "get-design-done",
|
|
3
3
|
"short_name": "gdd",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.21.0",
|
|
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. v1.20.0 SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream at .design/telemetry/events.jsonl, resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) with rate-limit + 429 + context-overflow recovery, and TypeScript toolchain.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "hegemonart",
|
|
@@ -53,36 +53,13 @@
|
|
|
53
53
|
"cost-optimization",
|
|
54
54
|
"cache-aware",
|
|
55
55
|
"budget",
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"make-interfaces-feel-better",
|
|
64
|
-
"palette-catalog",
|
|
65
|
-
"style-vocabulary",
|
|
66
|
-
"industry-palettes",
|
|
67
|
-
"ui-style-vocabulary",
|
|
68
|
-
"variable-fonts",
|
|
69
|
-
"container-queries",
|
|
70
|
-
"view-transitions",
|
|
71
|
-
"motion-vocabulary",
|
|
72
|
-
"motion-easings",
|
|
73
|
-
"transition-taxonomy",
|
|
74
|
-
"gesture-mechanics",
|
|
75
|
-
"clip-path-animation",
|
|
76
|
-
"component-specs",
|
|
77
|
-
"design-system-benchmarks",
|
|
78
|
-
"component-conformance",
|
|
79
|
-
"convergence-detector",
|
|
80
|
-
"i18n",
|
|
81
|
-
"user-research",
|
|
82
|
-
"information-architecture",
|
|
83
|
-
"form-patterns",
|
|
84
|
-
"data-viz",
|
|
85
|
-
"platforms"
|
|
56
|
+
"headless",
|
|
57
|
+
"cli",
|
|
58
|
+
"codex",
|
|
59
|
+
"gemini",
|
|
60
|
+
"mcp",
|
|
61
|
+
"parallel-agents",
|
|
62
|
+
"agent-sdk"
|
|
86
63
|
],
|
|
87
64
|
"skills": [
|
|
88
65
|
"./skills/"
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,84 @@ All notable changes to get-design-done are documented here. Versions follow [sem
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.21.0] — 2026-04-24
|
|
8
|
+
|
|
9
|
+
Phase 21 GDD SDK Headless milestone — the plugin now runs unchanged on Claude Code, OpenAI Codex CLI, and Gemini CLI, and ships a full `gdd-sdk` CLI that executes the design pipeline without a harness. 12 plans (21-01 through 21-12), 50+ commits, 936 tests.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **Headless SDK** — new `bin/gdd-sdk` CLI that runs the full design pipeline
|
|
14
|
+
without Claude Code. Subcommands: `run`, `stage <name>`, `query <op>`,
|
|
15
|
+
`audit`, `init`. Publishes as `gdd-sdk` in `package.json` `bin`. See
|
|
16
|
+
`docs/HEADLESS.md` (Phase 23 deliverable) for CI integration guidance.
|
|
17
|
+
- **Session runner** (`scripts/lib/session-runner/`) — typed wrapper around
|
|
18
|
+
`@anthropic-ai/claude-agent-sdk` with USD/token budget caps, turn caps,
|
|
19
|
+
transcript capture, structured error mapping via `gdd-errors` taxonomy.
|
|
20
|
+
Emits `session.started`, `session.completed`, `session.budget_exceeded`
|
|
21
|
+
events on the shared event stream.
|
|
22
|
+
- **Context engine** (`scripts/lib/context-engine/`) — per-stage file
|
|
23
|
+
manifest + markdown-aware truncation that preserves frontmatter, every
|
|
24
|
+
heading, and the first paragraph of each section for files larger than
|
|
25
|
+
8 KiB. Keeps session prompts within budget without dropping load-bearing
|
|
26
|
+
context.
|
|
27
|
+
- **Tool scoping** (`scripts/lib/tool-scoping/`) — per-stage allowed-tools
|
|
28
|
+
enforcement at session creation. Verify is read-only; Explore adds web;
|
|
29
|
+
Design permits shell mutations. Per-agent frontmatter overrides via
|
|
30
|
+
`parseAgentTools()` for agent-level deviations.
|
|
31
|
+
- **Structured logger** (`scripts/lib/logger/`) — leveled (debug/info/warn/
|
|
32
|
+
error) with JSONL output in headless mode, ANSI-colored stderr in
|
|
33
|
+
interactive mode. `warn`/`error` also emit `ErrorEvent` on the event
|
|
34
|
+
stream for CI consumers.
|
|
35
|
+
- **Pipeline runner** (`scripts/lib/pipeline-runner/`) — brief → explore →
|
|
36
|
+
plan → design → verify state machine with retry-once, halt logic,
|
|
37
|
+
human-gate callbacks, config-driven step skipping. Emits
|
|
38
|
+
`pipeline.started`, `pipeline.completed`, `pipeline.halted`.
|
|
39
|
+
- **Explore parallel runner** (`scripts/lib/explore-parallel-runner/`) —
|
|
40
|
+
4 mappers (token, component-taxonomy, a11y, visual-hierarchy) concurrent
|
|
41
|
+
with streaming synthesizer. Honors `parallelism_safe` agent frontmatter
|
|
42
|
+
for opt-in isolation.
|
|
43
|
+
- **Discuss parallel runner** (`scripts/lib/discuss-parallel-runner/`) —
|
|
44
|
+
N discussant variants (user-journey, technical-constraint, brand-fit,
|
|
45
|
+
accessibility) concurrent, aggregator dedupes and clusters questions.
|
|
46
|
+
- **`gdd-sdk init`** (`scripts/lib/init-runner/`) — new-project bootstrap
|
|
47
|
+
spawning 4 parallel researchers (design-system-audit, brand-context,
|
|
48
|
+
accessibility-baseline, competitive-references) + synthesizer producing
|
|
49
|
+
`.design/DESIGN-CONTEXT.md` draft.
|
|
50
|
+
- **Cross-harness portability** (`scripts/lib/harness/`) — the plugin now
|
|
51
|
+
runs unchanged on Claude Code, OpenAI Codex CLI, and Gemini CLI. Ships
|
|
52
|
+
`reference/codex-tools.md`, `reference/gemini-tools.md`, `AGENTS.md`
|
|
53
|
+
(Codex), `GEMINI.md` (Gemini). The `gdd-state` MCP server works on all
|
|
54
|
+
three harnesses; harness detection is runtime-driven.
|
|
55
|
+
- **E2E headless integration test** — `tests/e2e-headless.test.ts` with a
|
|
56
|
+
dry-run variant (always runs) and a live variant (gated on
|
|
57
|
+
`ANTHROPIC_API_KEY`). CI workflow gains an `e2e-headless` job.
|
|
58
|
+
- **Phase 21 regression baseline** at `test-fixture/baselines/phase-21/` —
|
|
59
|
+
directory list, module list, agent list, connections list, CLI
|
|
60
|
+
subcommand list, event-type list. Enforced by
|
|
61
|
+
`tests/phase-21-baseline.test.cjs`.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- `@anthropic-ai/claude-agent-sdk` added as a runtime dependency (was
|
|
66
|
+
previously only referenced in docs).
|
|
67
|
+
- `package.json` `bin` now exports `gdd-sdk` in addition to
|
|
68
|
+
`get-design-done` and `gdd-state-mcp`.
|
|
69
|
+
- `package.json` `files` adds `bin/` to the publish include list so the
|
|
70
|
+
`gdd-sdk` trampoline ships with the npm package.
|
|
71
|
+
- `package.json` `keywords` expanded with headless / CLI / cross-harness
|
|
72
|
+
tokens (`headless`, `cli`, `codex`, `gemini`, `mcp`, `parallel-agents`,
|
|
73
|
+
`agent-sdk`) for npm search surface.
|
|
74
|
+
|
|
75
|
+
### Infrastructure
|
|
76
|
+
|
|
77
|
+
- New regression baseline at `test-fixture/baselines/phase-21/`.
|
|
78
|
+
- CI workflow gains an `e2e-headless` job (dry-run on every PR; live on
|
|
79
|
+
main-branch push with `ANTHROPIC_API_KEY` secret).
|
|
80
|
+
- `tests/semver-compare.test.cjs` `OFF_CADENCE_VERSIONS` now includes
|
|
81
|
+
`1.21.0` as the second off-cadence minor bump after `1.20.0`.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
7
85
|
## [1.20.0] — 2026-04-24
|
|
8
86
|
|
|
9
87
|
Phase 20 SDK foundation milestone — the shift from "design pipeline" to "typed SDK + MCP server + resilience primitives + event stream". 16 plans (20-00 through 20-15), 50+ commits, 645+ tests.
|
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ npx @hegemonart/get-design-done@latest
|
|
|
29
29
|
|
|
30
30
|
<br>
|
|
31
31
|
|
|
32
|
-
[Why I Built This](#why-i-built-this) · [How It Works](#how-it-works) · [Canvas Tools](#ai-native-canvas-tools) · [Component Generators](#component-generators) · [Commands](#commands) · [Connections](#connections) · [Why It Works](#why-it-works)
|
|
32
|
+
[Why I Built This](#why-i-built-this) · [How It Works](#how-it-works) · [Headless SDK](#headless-sdk) · [Canvas Tools](#ai-native-canvas-tools) · [Component Generators](#component-generators) · [Commands](#commands) · [Connections](#connections) · [Why It Works](#why-it-works)
|
|
33
33
|
|
|
34
34
|
</div>
|
|
35
35
|
|
|
@@ -104,17 +104,27 @@ Built-in quality gates catch real problems: Handoff Faithfulness scoring on Clau
|
|
|
104
104
|
- **Component generators** — 21st.dev Magic MCP adds a prior-art gate before any greenfield build; Magic Patterns generates DS-aware components with a `preview_url` for visual verification. Both feed into a shared `design-component-generator` agent.
|
|
105
105
|
- **Twelve tool connections** — Four new connections (paper.design, pencil.dev, 21st.dev, Magic Patterns) join the original eight. All are optional; the pipeline degrades gracefully to fallbacks when any connection is unavailable.
|
|
106
106
|
|
|
107
|
-
## What's New in v1.
|
|
107
|
+
## What's New in v1.21.0
|
|
108
108
|
|
|
109
|
-
**
|
|
109
|
+
**Headless SDK** (headline upgrade) — the plugin now ships a `gdd-sdk` CLI that runs the full design pipeline without Claude Code. Five subcommands (`run`, `stage`, `query`, `audit`, `init`) work on any CI runner with Node 22+ and an `ANTHROPIC_API_KEY`. See the [Headless SDK](#headless-sdk) section below for examples.
|
|
110
110
|
|
|
111
|
-
**
|
|
111
|
+
**Parallel researchers** — four new runners execute concurrent specialized agents with a streaming synthesizer: `explore-parallel-runner` (4 mappers: token, component-taxonomy, a11y, visual-hierarchy), `discuss-parallel-runner` (N discussants: user-journey, technical-constraint, brand-fit, accessibility), and `init-runner` (4 researchers for `gdd-sdk init` bootstrap). A `pipeline-runner` state machine orchestrates brief → explore → plan → design → verify with retry-once, halt logic, and human-gate callbacks.
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
**Cross-harness portability** — the plugin runs unchanged on Claude Code, OpenAI Codex CLI, and Gemini CLI. Codex auto-loads [`AGENTS.md`](AGENTS.md); Gemini auto-loads [`GEMINI.md`](GEMINI.md). Tool-name translations live in [`reference/codex-tools.md`](reference/codex-tools.md) and [`reference/gemini-tools.md`](reference/gemini-tools.md). The `gdd-state` MCP server works on all three harnesses.
|
|
114
114
|
|
|
115
|
-
**
|
|
115
|
+
**Session primitives** — `session-runner` (typed wrapper around `@anthropic-ai/claude-agent-sdk` with USD/token budget caps, turn caps, transcript capture), `context-engine` (per-stage file manifest + markdown-aware truncation preserving frontmatter, headings, and first paragraph of each section), `tool-scoping` (per-stage allowed-tools enforcement with per-agent frontmatter overrides), and a structured `logger` (leveled, JSONL in headless mode, ANSI-colored in interactive mode).
|
|
116
116
|
|
|
117
|
-
**
|
|
117
|
+
**E2E headless integration test** — `tests/e2e-headless.test.ts` with a dry-run variant (always runs) and a live variant gated on `ANTHROPIC_API_KEY`. CI gains an `e2e-headless` job.
|
|
118
|
+
|
|
119
|
+
### Previously in v1.20.0
|
|
120
|
+
|
|
121
|
+
**Resilience primitives** — the pipeline survives Anthropic API rate limits, 429 responses, and context-overflow errors without manual restart. Modules: jittered backoff, rate-guard, error-classifier, iteration-budget. See [`reference/error-recovery.md`](reference/error-recovery.md).
|
|
122
|
+
|
|
123
|
+
**Typed state core** — `.design/STATE.md` mutations are lockfile-safe. Parallel executors concurrently update `task_progress` and `<blockers>` on the same file with zero corruption (validated by 4-way race-condition test, 2000 concurrent ops, <60s).
|
|
124
|
+
|
|
125
|
+
**`gdd-state` MCP server** — 11 typed tools (`gdd_state__get`, `__update_progress`, `__transition_stage`, `__add_blocker`, `__resolve_blocker`, `__add_decision`, `__add_must_have`, `__set_status`, `__checkpoint`, `__probe_connections`, `__frontmatter_update`) replace ad-hoc STATE.md edits. Every mutation emits a typed event to `.design/telemetry/events.jsonl`.
|
|
126
|
+
|
|
127
|
+
**TypeScript foundation** — `tsc --noEmit` typechecks the whole SDK; JSON schemas codegen to `reference/schemas/generated.d.ts`; hooks + Tier-1 scripts migrated to `.ts` and executed directly via Node 22 `--experimental-strip-types`.
|
|
118
128
|
|
|
119
129
|
---
|
|
120
130
|
|
|
@@ -490,6 +500,37 @@ The watcher writes `.design/authority-report.md` — new entries classified into
|
|
|
490
500
|
|
|
491
501
|
---
|
|
492
502
|
|
|
503
|
+
## Headless SDK
|
|
504
|
+
|
|
505
|
+
Run the full GDD pipeline without Claude Code:
|
|
506
|
+
|
|
507
|
+
```bash
|
|
508
|
+
npx gdd-sdk init # bootstrap a new project
|
|
509
|
+
npx gdd-sdk run # full pipeline (brief → verify)
|
|
510
|
+
npx gdd-sdk stage explore --parallel # single stage with parallel mappers
|
|
511
|
+
npx gdd-sdk query position # typed STATE.md read
|
|
512
|
+
npx gdd-sdk audit --baseline <dir> # regression check
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
Requires Node 22+ and an `ANTHROPIC_API_KEY`. Works on any CI runner.
|
|
516
|
+
|
|
517
|
+
Internally the SDK stitches together the Phase-21 runner modules:
|
|
518
|
+
`session-runner` (budget + turn cap + transcript), `context-engine` (per-stage
|
|
519
|
+
file manifest + markdown truncation), `tool-scoping` (per-stage allowed-tools),
|
|
520
|
+
`pipeline-runner` (brief → verify state machine with retry-once + human-gate
|
|
521
|
+
callbacks), and `explore-parallel` / `discuss-parallel` / `init` for the
|
|
522
|
+
concurrent researcher stages.
|
|
523
|
+
|
|
524
|
+
### Cross-harness
|
|
525
|
+
|
|
526
|
+
The plugin runs unchanged on Claude Code, OpenAI Codex CLI, and Gemini CLI.
|
|
527
|
+
See [`reference/codex-tools.md`](reference/codex-tools.md) and
|
|
528
|
+
[`reference/gemini-tools.md`](reference/gemini-tools.md) for the tool
|
|
529
|
+
translations; Codex auto-loads [`AGENTS.md`](AGENTS.md) and Gemini auto-loads
|
|
530
|
+
[`GEMINI.md`](GEMINI.md). The `gdd-state` MCP server works on all three.
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
493
534
|
## AI-Native Canvas Tools
|
|
494
535
|
|
|
495
536
|
get-design-done integrates with canvas tools that treat the design canvas as both source AND destination — enabling a full canvas→code→verify→canvas round-trip.
|
package/bin/gdd-sdk
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// bin/gdd-sdk — Plan 21-09 Task 7 (SDK-21).
|
|
3
|
+
//
|
|
4
|
+
// CJS trampoline: spawns `node --experimental-strip-types` against the
|
|
5
|
+
// real TS entry point in `scripts/lib/cli/index.ts` and forwards argv +
|
|
6
|
+
// exit code. Windows-compatible (npm's generated .cmd shim on Windows
|
|
7
|
+
// has no way to inject the --experimental-strip-types flag otherwise).
|
|
8
|
+
//
|
|
9
|
+
// Why a trampoline:
|
|
10
|
+
// POSIX shebangs can use `#!/usr/bin/env -S node --experimental-strip-types`,
|
|
11
|
+
// but Windows cmd.exe does not honor shebangs. npm's auto-generated
|
|
12
|
+
// .cmd shim invokes plain `node bin/gdd-sdk` without passing the
|
|
13
|
+
// experimental flag. The trampoline re-launches node with the flag
|
|
14
|
+
// explicitly so both platforms end up at the same TS entry.
|
|
15
|
+
|
|
16
|
+
'use strict';
|
|
17
|
+
|
|
18
|
+
const { spawn } = require('node:child_process');
|
|
19
|
+
const path = require('node:path');
|
|
20
|
+
|
|
21
|
+
const entry = path.resolve(
|
|
22
|
+
__dirname,
|
|
23
|
+
'..',
|
|
24
|
+
'scripts',
|
|
25
|
+
'lib',
|
|
26
|
+
'cli',
|
|
27
|
+
'index.ts',
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
const child = spawn(
|
|
31
|
+
process.execPath,
|
|
32
|
+
['--experimental-strip-types', entry, ...process.argv.slice(2)],
|
|
33
|
+
{ stdio: 'inherit', shell: false },
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
child.on('exit', (code, signal) => {
|
|
37
|
+
if (signal) {
|
|
38
|
+
// Re-raise the signal to ourselves so the parent shell sees the same
|
|
39
|
+
// termination mode (e.g., Ctrl+C propagates as SIGINT exit).
|
|
40
|
+
try {
|
|
41
|
+
process.kill(process.pid, signal);
|
|
42
|
+
} catch {
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
process.exit(typeof code === 'number' ? code : 0);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
child.on('error', (err) => {
|
|
51
|
+
// Failure to spawn node itself — extremely rare; surface to stderr.
|
|
52
|
+
// eslint-disable-next-line no-console
|
|
53
|
+
console.error('gdd-sdk: failed to launch TypeScript entry:', err.message);
|
|
54
|
+
process.exit(3);
|
|
55
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hegemonart/get-design-done",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0",
|
|
4
4
|
"description": "A Claude Code plugin for systematic design improvement",
|
|
5
5
|
"author": "Hegemon",
|
|
6
6
|
"homepage": "https://github.com/hegemonart/get-design-done",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"scripts/",
|
|
21
21
|
"connections/",
|
|
22
22
|
"reference/",
|
|
23
|
+
"bin/",
|
|
23
24
|
"SKILL.md",
|
|
24
25
|
"README.md",
|
|
25
26
|
"CHANGELOG.md",
|
|
@@ -27,7 +28,8 @@
|
|
|
27
28
|
],
|
|
28
29
|
"bin": {
|
|
29
30
|
"get-design-done": "./scripts/install.cjs",
|
|
30
|
-
"gdd-state-mcp": "./scripts/mcp-servers/gdd-state/server.ts"
|
|
31
|
+
"gdd-state-mcp": "./scripts/mcp-servers/gdd-state/server.ts",
|
|
32
|
+
"gdd-sdk": "./bin/gdd-sdk"
|
|
31
33
|
},
|
|
32
34
|
"publishConfig": {
|
|
33
35
|
"access": "public",
|
|
@@ -45,7 +47,9 @@
|
|
|
45
47
|
"scan:injection": "node scripts/run-injection-scanner-ci.cjs",
|
|
46
48
|
"test:size-budget": "node --test tests/agent-size-budget.test.cjs",
|
|
47
49
|
"release:extract-changelog": "node scripts/extract-changelog-section.cjs",
|
|
48
|
-
"verify:version-sync": "node scripts/verify-version-sync.cjs"
|
|
50
|
+
"verify:version-sync": "node scripts/verify-version-sync.cjs",
|
|
51
|
+
"typecheck:session-runner": "tsc --noEmit",
|
|
52
|
+
"gdd-sdk": "node --experimental-strip-types scripts/lib/cli/index.ts"
|
|
49
53
|
},
|
|
50
54
|
"devDependencies": {
|
|
51
55
|
"@types/node": "^22.0.0",
|
|
@@ -65,56 +69,20 @@
|
|
|
65
69
|
"reflection",
|
|
66
70
|
"tested",
|
|
67
71
|
"ci",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"make-interfaces-feel-better",
|
|
76
|
-
"palette-catalog",
|
|
77
|
-
"style-vocabulary",
|
|
78
|
-
"industry-palettes",
|
|
79
|
-
"ui-style-vocabulary",
|
|
80
|
-
"variable-fonts",
|
|
81
|
-
"container-queries",
|
|
82
|
-
"view-transitions",
|
|
83
|
-
"motion-vocabulary",
|
|
84
|
-
"motion-easings",
|
|
85
|
-
"transition-taxonomy",
|
|
86
|
-
"gesture-mechanics",
|
|
87
|
-
"clip-path-animation",
|
|
88
|
-
"component-specs",
|
|
89
|
-
"design-system-benchmarks",
|
|
90
|
-
"i18n",
|
|
91
|
-
"user-research",
|
|
92
|
-
"information-architecture",
|
|
93
|
-
"form-patterns",
|
|
94
|
-
"data-viz",
|
|
95
|
-
"platforms",
|
|
96
|
-
"cross-cycle-memory",
|
|
97
|
-
"fts5",
|
|
98
|
-
"checkpoints",
|
|
99
|
-
"experience-archive",
|
|
100
|
-
"recall",
|
|
101
|
-
"relevance-counter",
|
|
102
|
-
"record-contract",
|
|
103
|
-
"first-principles",
|
|
104
|
-
"emotional-design",
|
|
105
|
-
"component-authoring",
|
|
106
|
-
"disney-12-principles",
|
|
107
|
-
"peak-end-rule",
|
|
108
|
-
"loss-aversion",
|
|
109
|
-
"cognitive-load",
|
|
110
|
-
"doherty-threshold",
|
|
111
|
-
"rams-lens"
|
|
72
|
+
"headless",
|
|
73
|
+
"cli",
|
|
74
|
+
"codex",
|
|
75
|
+
"gemini",
|
|
76
|
+
"mcp",
|
|
77
|
+
"parallel-agents",
|
|
78
|
+
"agent-sdk"
|
|
112
79
|
],
|
|
113
80
|
"skills": [
|
|
114
81
|
"SKILL.md"
|
|
115
82
|
],
|
|
116
83
|
"hooks": "hooks/hooks.json",
|
|
117
84
|
"dependencies": {
|
|
85
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.119",
|
|
118
86
|
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
119
87
|
}
|
|
120
88
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Codex CLI Tool Map
|
|
2
|
+
|
|
3
|
+
Last verified: 2026-04-24
|
|
4
|
+
|
|
5
|
+
When a GDD skill references a Claude Code tool name, the Codex runtime
|
|
6
|
+
translates to the equivalent below. Skills do NOT need to branch — the tool
|
|
7
|
+
name in prose is authoritative; Codex resolves via this map.
|
|
8
|
+
|
|
9
|
+
## Tool-name mapping
|
|
10
|
+
|
|
11
|
+
| CC name | Codex name | Notes |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `Read` | `read_file` | Takes `path`; returns file content. |
|
|
14
|
+
| `Write` | `apply_patch` (create mode) | Requires a diff-style patch; ensure tool call emits `{action:'create', path, content}`. |
|
|
15
|
+
| `Edit` | `apply_patch` (update mode) | Emits `{action:'update', path, patch}` with unified diff. |
|
|
16
|
+
| `Bash` | `shell` | Takes `{command: string, cwd?, timeout_sec?}`. |
|
|
17
|
+
| `Grep` | `shell` | Compose a `rg` / `grep -rn` invocation; no native Codex grep tool. |
|
|
18
|
+
| `Glob` | `shell` | Compose `ls` / `find`; no native Codex glob. |
|
|
19
|
+
| `Task` | Sub-invocation via nested Codex | Codex spawns nested sessions via its own CLI, not a tool call. Skills requiring Task should prefer the MCP `gdd-state` tool layer instead. |
|
|
20
|
+
| `WebSearch` | `web_search` | If enabled in Codex policy. |
|
|
21
|
+
| `WebFetch` | `shell` (curl) or `web_search.open` | Prefer curl for deterministic output. |
|
|
22
|
+
|
|
23
|
+
## MCP server `gdd-state`
|
|
24
|
+
|
|
25
|
+
The gdd-state MCP server works unchanged on Codex. Configure Codex to load
|
|
26
|
+
it by adding to `~/.codex/config.toml`:
|
|
27
|
+
|
|
28
|
+
```toml
|
|
29
|
+
[[mcp_servers]]
|
|
30
|
+
name = "gdd-state"
|
|
31
|
+
command = "node"
|
|
32
|
+
args = ["--experimental-strip-types", "<pkg-root>/scripts/mcp-servers/gdd-state/server.ts"]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
All 11 tools exposed by the server appear as `mcp__gdd_state__*` in Codex.
|
|
36
|
+
|
|
37
|
+
## Known gaps
|
|
38
|
+
|
|
39
|
+
- `Task` spawning: Codex does not expose nested-session as a tool call. For
|
|
40
|
+
now, skills that rely on `Task` (parallel mappers in Plan 21-06, parallel
|
|
41
|
+
discussants in Plan 21-07) should invoke the gdd-sdk CLI as a shell
|
|
42
|
+
subprocess: `shell("npx gdd-sdk stage explore --parallel")`. This is
|
|
43
|
+
documented in AGENTS.md.
|
|
44
|
+
- `apply_patch` diff format differs from CC's Edit: Codex expects unified
|
|
45
|
+
diff (`---`/`+++`/`@@` hunks), while CC's Edit takes `old_string`/`new_string`.
|
|
46
|
+
The plugin's skill prose uses Edit's semantics; on Codex the runtime must
|
|
47
|
+
generate the unified diff from the old/new pair. A helper lives at
|
|
48
|
+
`scripts/lib/harness/edit-to-patch.ts` (reserved for Phase 22 wiring).
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
Last verified: 2026-04-24 — tool surface re-checked against Codex CLI docs
|
|
53
|
+
current to this date. Revisit whenever Codex ships a tool-vocabulary change.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Gemini CLI Tool Map
|
|
2
|
+
|
|
3
|
+
Last verified: 2026-04-24
|
|
4
|
+
|
|
5
|
+
When a GDD skill references a Claude Code tool name, the Gemini runtime
|
|
6
|
+
translates to the equivalent below. Skills do NOT need to branch — the tool
|
|
7
|
+
name in prose is authoritative; Gemini resolves via this map.
|
|
8
|
+
|
|
9
|
+
## Tool-name mapping
|
|
10
|
+
|
|
11
|
+
| CC name | Gemini name | Notes |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `Read` | `read_file` | Takes `absolute_path`. |
|
|
14
|
+
| `Write` | `write_file` | Takes `path`, `content`; overwrites. |
|
|
15
|
+
| `Edit` | `replace` | Takes `file_path`, `old_string`, `new_string`. Semantics match CC. |
|
|
16
|
+
| `Bash` | `run_shell_command` | Takes `{command: string, directory?}`. |
|
|
17
|
+
| `Grep` | `search_file_content` | Native grep wrapper. |
|
|
18
|
+
| `Glob` | `glob` | Native glob wrapper. |
|
|
19
|
+
| `Task` | Sub-invocation via nested gemini CLI | Same gap as Codex. |
|
|
20
|
+
| `WebSearch` | `google_web_search` | Built-in. |
|
|
21
|
+
| `WebFetch` | `web_fetch` | Built-in. |
|
|
22
|
+
|
|
23
|
+
## MCP server `gdd-state`
|
|
24
|
+
|
|
25
|
+
The gdd-state MCP server works unchanged on Gemini. Configure Gemini to load
|
|
26
|
+
it by adding to `~/.gemini/settings.json`:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"mcpServers": {
|
|
31
|
+
"gdd-state": {
|
|
32
|
+
"command": "node",
|
|
33
|
+
"args": ["--experimental-strip-types", "<pkg-root>/scripts/mcp-servers/gdd-state/server.ts"]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
All 11 tools exposed by the server appear as `mcp__gdd_state__*` in Gemini.
|
|
40
|
+
|
|
41
|
+
## Known gaps
|
|
42
|
+
|
|
43
|
+
- `Task` spawning: same as Codex — prefer `run_shell_command("npx gdd-sdk stage ...")`.
|
|
44
|
+
See GEMINI.md for invocation details.
|
|
45
|
+
- Gemini's `replace` has stricter uniqueness requirements than CC's Edit;
|
|
46
|
+
when `old_string` appears more than once, Gemini requires context lines.
|
|
47
|
+
Skill prose that calls Edit should include surrounding context in
|
|
48
|
+
`old_string` to satisfy both harnesses.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
Last verified: 2026-04-24 — tool surface re-checked against Gemini CLI docs
|
|
53
|
+
current to this date. Revisit whenever Gemini ships a tool-vocabulary change.
|
package/reference/registry.json
CHANGED
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
"version": 1,
|
|
4
4
|
"generated_at": "2026-04-24T00:00:00.000Z",
|
|
5
5
|
"entries": [
|
|
6
|
+
{
|
|
7
|
+
"name": "codex-tools",
|
|
8
|
+
"path": "reference/codex-tools.md",
|
|
9
|
+
"type": "meta-rules",
|
|
10
|
+
"phase": 21,
|
|
11
|
+
"description": "Phase 21 cross-harness tool map — Claude Code → OpenAI Codex CLI tool-name equivalents for the gdd-sdk runner (Read→read_file, Write/Edit→apply_patch, Bash→shell, etc.)"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "gemini-tools",
|
|
15
|
+
"path": "reference/gemini-tools.md",
|
|
16
|
+
"type": "meta-rules",
|
|
17
|
+
"phase": 21,
|
|
18
|
+
"description": "Phase 21 cross-harness tool map — Claude Code → Gemini CLI tool-name equivalents for the gdd-sdk runner"
|
|
19
|
+
},
|
|
6
20
|
{
|
|
7
21
|
"name": "error-recovery",
|
|
8
22
|
"path": "reference/error-recovery.md",
|