@hegemonart/get-design-done 1.31.0 → 1.31.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 +44 -0
- package/NOTICE +224 -0
- package/README.md +1 -1
- package/agents/design-authority-watcher.md +1 -1
- package/agents/perf-analyzer.md +2 -2
- package/bin/gdd-mcp +78 -0
- package/bin/gdd-sdk +34 -24
- package/bin/gdd-state-mcp +78 -0
- package/{README.de.md → docs/i18n/README.de.md} +1 -1
- package/{README.fr.md → docs/i18n/README.fr.md} +1 -1
- package/{README.it.md → docs/i18n/README.it.md} +1 -1
- package/{README.ja.md → docs/i18n/README.ja.md} +1 -1
- package/{README.ko.md → docs/i18n/README.ko.md} +1 -1
- package/{README.zh-CN.md → docs/i18n/README.zh-CN.md} +1 -1
- package/hooks/_hook-emit.js +1 -1
- package/hooks/budget-enforcer.ts +5 -5
- package/hooks/context-exhaustion.ts +2 -2
- package/hooks/gdd-precompact-snapshot.js +3 -3
- package/hooks/gdd-read-injection-scanner.ts +2 -2
- package/hooks/gdd-sessionstart-recap.js +1 -1
- package/hooks/gdd-turn-closeout.js +1 -1
- package/package.json +20 -9
- package/recipes/.gitkeep +0 -0
- package/reference/schemas/recipe.schema.json +33 -0
- package/scripts/cli/gdd-events.mjs +5 -5
- package/scripts/lib/cache/gdd-cache-manager.cjs +1 -1
- package/scripts/lib/cli/index.ts +22 -160
- package/scripts/lib/connection-probe/index.cjs +1 -1
- package/scripts/lib/discuss-parallel-runner/aggregator.ts +1 -1
- package/scripts/lib/discuss-parallel-runner/index.ts +1 -1
- package/scripts/lib/error-classifier.cjs +24 -227
- package/scripts/lib/event-stream/index.ts +25 -193
- package/scripts/lib/gdd-errors/index.ts +24 -213
- package/scripts/lib/gdd-state/index.ts +23 -161
- package/scripts/lib/iteration-budget.cjs +23 -199
- package/scripts/lib/jittered-backoff.cjs +24 -107
- package/scripts/lib/lockfile.cjs +23 -195
- package/scripts/lib/logger/index.ts +1 -1
- package/scripts/lib/parallelism-engine/concurrency-tuner.cjs +1 -1
- package/scripts/lib/perf-analyzer/index.cjs +1 -1
- package/scripts/lib/pipeline-runner/index.ts +4 -4
- package/scripts/lib/pipeline-runner/state-machine.ts +1 -1
- package/scripts/lib/prompt-dedup/index.cjs +1 -1
- package/scripts/lib/rate-guard.cjs +2 -2
- package/scripts/lib/recipe-loader.cjs +142 -0
- package/scripts/lib/session-runner/errors.ts +3 -3
- package/scripts/lib/session-runner/index.ts +3 -3
- package/scripts/lib/session-runner/transcript.ts +1 -1
- package/scripts/lib/tool-scoping/index.ts +1 -1
- package/scripts/mcp-servers/gdd-mcp/server.ts +29 -311
- package/scripts/mcp-servers/gdd-state/server.ts +28 -282
- package/sdk/README.md +45 -0
- package/{scripts/lib → sdk}/cli/commands/audit.ts +3 -3
- package/{scripts/lib → sdk}/cli/commands/init.ts +3 -3
- package/{scripts/lib → sdk}/cli/commands/query.ts +4 -4
- package/{scripts/lib → sdk}/cli/commands/run.ts +5 -5
- package/{scripts/lib → sdk}/cli/commands/stage.ts +5 -5
- package/sdk/cli/index.js +8091 -0
- package/sdk/cli/index.ts +172 -0
- package/{scripts/lib → sdk}/cli/parse-args.ts +2 -2
- package/{scripts/lib/gdd-errors → sdk/errors}/classification.ts +1 -1
- package/sdk/errors/index.ts +218 -0
- package/{scripts/lib → sdk}/event-stream/emitter.ts +1 -1
- package/sdk/event-stream/index.ts +197 -0
- package/{scripts/lib → sdk}/event-stream/reader.ts +1 -1
- package/{scripts/lib → sdk}/event-stream/types.ts +2 -2
- package/{scripts/lib → sdk}/event-stream/writer.ts +1 -1
- package/sdk/index.ts +19 -0
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/README.md +3 -3
- package/sdk/mcp/gdd-mcp/server.js +1924 -0
- package/sdk/mcp/gdd-mcp/server.ts +325 -0
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_cycle_recap.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_decisions_list.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_events_tail.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_health.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_intel_get.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_learnings_digest.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_phase_current.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_phases_list.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_plans_list.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_reflections_latest.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_status.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/gdd_telemetry_query.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/index.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/tools/shared.ts +3 -3
- package/sdk/mcp/gdd-state/server.js +2790 -0
- package/sdk/mcp/gdd-state/server.ts +294 -0
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/add_blocker.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/add_decision.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/add_must_have.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/checkpoint.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/frontmatter_update.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/get.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/index.ts +1 -1
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/probe_connections.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/resolve_blocker.ts +3 -3
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/set_status.ts +2 -2
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/shared.ts +8 -8
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/transition_stage.ts +4 -4
- package/{scripts/mcp-servers → sdk/mcp}/gdd-state/tools/update_progress.ts +2 -2
- package/sdk/primitives/error-classifier.cjs +232 -0
- package/sdk/primitives/iteration-budget.cjs +205 -0
- package/sdk/primitives/jittered-backoff.cjs +112 -0
- package/sdk/primitives/lockfile.cjs +201 -0
- package/{scripts/lib/gdd-state → sdk/state}/gates.ts +1 -1
- package/sdk/state/index.ts +167 -0
- package/{scripts/lib/gdd-state → sdk/state}/lockfile.ts +1 -1
- package/{scripts/lib/gdd-state → sdk/state}/mutator.ts +1 -1
- package/{scripts/lib/gdd-state → sdk/state}/parser.ts +1 -1
- package/{scripts/lib/gdd-state → sdk/state}/types.ts +4 -4
- package/skills/quality-gate/SKILL.md +2 -2
- package/scripts/aggregate-agent-metrics.ts +0 -282
- package/scripts/bootstrap-manifest.txt +0 -3
- package/scripts/bootstrap.sh +0 -80
- package/scripts/build-distribution-bundles.cjs +0 -549
- package/scripts/build-intel.cjs +0 -486
- package/scripts/codegen-schema-types.ts +0 -149
- package/scripts/detect-stale-refs.cjs +0 -107
- package/scripts/e2e/run-headless.ts +0 -514
- package/scripts/extract-changelog-section.cjs +0 -58
- package/scripts/gsd-cleanup-incubator.cjs +0 -367
- package/scripts/injection-patterns.cjs +0 -58
- package/scripts/lint-agentskills-spec.cjs +0 -457
- package/scripts/release-smoke-test.cjs +0 -200
- package/scripts/rollback-release.sh +0 -42
- package/scripts/run-injection-scanner-ci.cjs +0 -83
- package/scripts/tests/test-authority-rejected-kinds.sh +0 -58
- package/scripts/tests/test-authority-watcher-diff.sh +0 -113
- package/scripts/tests/test-motion-provenance.sh +0 -64
- package/scripts/validate-frontmatter.ts +0 -409
- package/scripts/validate-incubator-scope.cjs +0 -133
- package/scripts/validate-schemas.ts +0 -401
- package/scripts/validate-skill-length.cjs +0 -283
- package/scripts/verify-version-sync.cjs +0 -30
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_cycle_recap.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_decisions_list.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_events_tail.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_health.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_intel_get.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_learnings_digest.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_phase_current.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_phases_list.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_plans_list.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_reflections_latest.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_status.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-mcp/schemas/gdd_telemetry_query.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/add_blocker.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/add_decision.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/add_must_have.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/checkpoint.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/frontmatter_update.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/get.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/probe_connections.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/resolve_blocker.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/set_status.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/transition_stage.schema.json +0 -0
- /package/{scripts/mcp-servers → sdk/mcp}/gdd-state/schemas/update_progress.schema.json +0 -0
- /package/{scripts/lib → sdk/primitives}/error-classifier.d.cts +0 -0
- /package/{scripts/lib → sdk/primitives}/iteration-budget.d.cts +0 -0
- /package/{scripts/lib → sdk/primitives}/jittered-backoff.d.cts +0 -0
- /package/{scripts/lib → sdk/primitives}/lockfile.d.cts +0 -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.31.
|
|
8
|
+
"version": "1.31.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. 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.31.
|
|
15
|
+
"version": "1.31.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.31.
|
|
4
|
+
"version": "1.31.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. 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. v1.27.7 ships gdd-mcp (Phase 27.7): 12 read-only MCP tools for sub-3s priming. v1.28.0 (Phase 28): Foundational References Tier 2 — 5 new reference files (color-theory, composition, proportion-systems, i18n, contrast-advanced), 2 verifier i18n probes + 1 explore i18n-readiness probe, 12 additive cross-link insertions across 10 existing references, 2 orthogonal audit-scoring lens-tags (composition_alignment + i18n_readiness).",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "hegemonart",
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,50 @@ All notable changes to get-design-done are documented here. Versions follow [sem
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.31.5] - 2026-05-29
|
|
8
|
+
|
|
9
|
+
### Phase 31.5 — Repo Structure Consolidation
|
|
10
|
+
|
|
11
|
+
One audit-clean repo layout with **zero changes to the public surface** (commands, agents, skills, hooks, connections, install flow) and **no file content lost**. The SDK that `plugin.json` has advertised since v1.20.0 now actually lives in `sdk/`; the npm tarball ships only what plugin users need; the repo root is decluttered. Every move was history-preserving (`git mv`), guarded by three independent regression nets (test-parity, tarball-diff golden, headless-E2E install) and a one-minor deprecation-shim grace window. 10 plans + 1 follow-up across Waves A–E (31-5-01..31-5-10 + 31-5-9.5).
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **`sdk/` — the public SDK, collected.** `git mv` consolidated the strewn modules into one place: `sdk/cli`, `sdk/state`, `sdk/event-stream`, `sdk/errors`, `sdk/primitives/*` (the 4 typed `.cjs`+`.d.cts` pairs), and **both** MCP servers under `sdk/mcp/` (`sdk/mcp/gdd-state`, `sdk/mcp/gdd-mcp` — D-08). A `sdk/index.ts` barrel re-exports the surface, and `sdk/README.md` (≤120 lines, D-06) documents what the SDK is with a per-module import-path table (module → public import → helpers → stability tag). Public import paths are explicit per-module (`/sdk/cli`, `/sdk/state`, `/sdk/event-stream`, `/sdk/primitives/*`, `/sdk/errors`, `/sdk/mcp/gdd-state`, `/sdk/mcp/gdd-mcp`) plus the barrel (D-04).
|
|
16
|
+
- **3 SDK bins that now work from an npm install.** `bin/gdd-sdk`, `bin/gdd-state-mcp`, and `bin/gdd-mcp` are dual-mode trampolines (prefer a compiled `.js` sibling, fall back to `.ts` strip in-repo). A `prepack` step (`npm run build:sdk` → esbuild) bundles the three TS-entry bins to self-contained CommonJS siblings that ship in the tarball — fixing a **pre-existing latent break**: raw `.ts` bins cannot run under `--experimental-strip-types` from inside `node_modules` (`ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING`), which had silently shipped since the TS bins were introduced. The `.ts` remain the source of truth; the `.js` are gitignored build artifacts (`postpack` cleans them).
|
|
17
|
+
- **`recipes/` scaffold** — `recipes/` + a recipe-loader + `reference/schemas/recipe.schema.json`. Ships empty of recipes (the loading machinery, not content).
|
|
18
|
+
- **`docs/i18n/`** — the 6 `README.{de,fr,it,ja,ko,zh-CN}.md` translations relocated from the repo root (D-11). English `README.md` stays at root; its language-selector links were repointed.
|
|
19
|
+
- **`.npmignore`** — a defense-in-depth duplicate of the `package.json` `files` allowlist (D-10).
|
|
20
|
+
- **Private-files CI guard** — `test/suite/no-private-files-tracked.test.cjs` asserts 0 tracked `.planning/` / `REVIEW.md` / `tmp_support_preview*` files so the (already-remediated) leak stays closed (D-03).
|
|
21
|
+
- **`no-stale-internal-refs` static guard** — `test/suite/no-stale-internal-refs.test.cjs` greps the shipped user-facing surface (hooks/, agents/, skills/, bin/, scripts/cli/, scripts/install.cjs) for any reference to an OLD moved-SDK path and fails on any hit outside a deprecation shim. Proves every internal caller was repointed to `sdk/`.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- **`package.json` `files` narrowed to an explicit allowlist (+ `.npmignore`).** Maintainer-only top-level scripts no longer reach a user's `node_modules`. **Tarball diff vs the prior (v1.31.0) tarball:**
|
|
26
|
+
- **ADDED:** `sdk/` (the SDK, incl. the 3 compiled-bin `.js` siblings), `recipes/`, `docs/i18n/`, `NOTICE`.
|
|
27
|
+
- **DROPPED (23 maintainer-only files):** `scripts/` wholesale + the top-level `bootstrap*`, `rollback-release.sh`, `apply-branch-protection.sh`, `release-smoke-test.cjs`, `verify-version-sync.cjs`, `extract-changelog-section.cjs`, `detect-stale-refs.cjs`, `run-injection-scanner-ci.cjs`, `injection-patterns.cjs`, `build-*.cjs`, `validate-*` (`.cjs`/`.ts`), `codegen-schema-types.ts`, `aggregate-agent-metrics.ts`, `lint-agentskills-spec.cjs`, `scripts/e2e/`, `scripts/tests/`.
|
|
28
|
+
- **KEPT (runtime subtrees, D-09) — a "drop `scripts/` wholesale" allowlist would have shipped a *broken* package:** `scripts/lib/` (incl. `scripts/lib/graph/` for `gdd-graph` per D-14 and `scripts/lib/figma-extract/` for the figma-extract SKILL per D-15), `scripts/mcp-servers/` (the residual MCP deprecation shims), `scripts/cli/` (the `gdd-events` target), and `scripts/install.cjs`.
|
|
29
|
+
- Tarball golden manifest pinned at **620 paths** (paths-only per D-07).
|
|
30
|
+
- **`tests/` → `test/suite/` and `test-fixture/` → `test/fixtures/`** (D-12) — a pure mechanical, history-preserving relocation done with an identical full-suite pass before/after. Contributor-facing only; not shipped in the tarball. All subsequent tests are authored into `test/suite/`.
|
|
31
|
+
|
|
32
|
+
### Deprecated
|
|
33
|
+
|
|
34
|
+
- **`scripts/lib/{cli,gdd-state,event-stream,gdd-errors}/`, the 4 primitive `.cjs` (`error-classifier`, `iteration-budget`, `jittered-backoff`, `lockfile`), and `scripts/mcp-servers/{gdd-state,gdd-mcp}/server.ts` are now thin deprecation shims** that re-export from `sdk/*` and emit a one-time `DeprecationWarning`. They exist for undocumented EXTERNAL importers who reached into `node_modules/.../scripts/lib/...` directly. **Removed in v1.33.0** (D-02). Grace window: v1.31.5 ships with shims → v1.32.0 still has them → v1.33.0 removes them with a breaking-change note. **If you imported from `node_modules/@hegemonart/get-design-done/scripts/lib/...` directly, switch to `sdk/...`** (e.g. `scripts/lib/cli` → `sdk/cli`, `scripts/lib/error-classifier.cjs` → `sdk/primitives/error-classifier.cjs`, `scripts/mcp-servers/gdd-state/server.ts` → `sdk/mcp/gdd-state/server.ts`). Internal callers already use `sdk/`.
|
|
35
|
+
|
|
36
|
+
### Backward compatibility
|
|
37
|
+
|
|
38
|
+
- Public surface unchanged — no command, agent, skill, hook, or connection was renamed (zero-rename discipline). All install flows and all 6 bins resolve identically; MCP handshakes and primitive imports verified by the headless pack→install→run E2E.
|
|
39
|
+
- 6-manifest lockstep at v1.31.5 (`package.json` + `.claude-plugin/plugin.json` + `.claude-plugin/marketplace.json` (metadata.version + plugins[0].version) + `.cursor-plugin/plugin.json` + `.codex-plugin/plugin.json`).
|
|
40
|
+
|
|
41
|
+
### Decisions
|
|
42
|
+
|
|
43
|
+
- **D-01**: Target version is **v1.31.5** (the stale ROADMAP v1.28.0 was a pre-renumber artifact — the phase was renumbered 2026-05-16 to monotonic-with-phase-number).
|
|
44
|
+
- **D-02**: Deprecation-shim removal target is **v1.33.0** (the stale ROADMAP v1.29.0 is already shipped/past). One-minor grace window.
|
|
45
|
+
- **D-03**: The private-file leak was already remediated on main; Plan 01 ships only the CI guard.
|
|
46
|
+
- **D-08**: `gdd-mcp` (Phase 27.7) folded in for full symmetry with `gdd-state-mcp` — both MCP servers live under `sdk/mcp/`.
|
|
47
|
+
- **D-09**: The `files` allowlist keeps the runtime subtrees `scripts/lib` + `scripts/mcp-servers` + `scripts/cli` + `scripts/install.cjs` so `gdd-graph`, `figma-extract`, and `gdd-mcp` keep working.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
7
51
|
## [1.31.0] - 2026-05-29
|
|
8
52
|
|
|
9
53
|
### Phase 31 — Figma Off-Context Extractor + Variables Sync Plugin
|
package/NOTICE
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
get-design-done
|
|
2
|
+
Copyright (c) 2026 hegemonart
|
|
3
|
+
|
|
4
|
+
This product includes software developed by third parties under the
|
|
5
|
+
Apache License, Version 2.0. See https://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
for the full license text.
|
|
7
|
+
|
|
8
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
9
|
+
Phase 27 — Peer-CLI Delegation Layer (v1.27.0, 2026-04-30)
|
|
10
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
11
|
+
|
|
12
|
+
The peer-CLI delegation layer ports protocol shapes and skill patterns from:
|
|
13
|
+
|
|
14
|
+
greenpolo/cc-multi-cli-plugin (https://github.com/greenpolo/cc-multi-cli-plugin)
|
|
15
|
+
License: Apache License, Version 2.0
|
|
16
|
+
Version reference: cc-multi-cli v2.0.0 (shipped 2026-04-24)
|
|
17
|
+
|
|
18
|
+
The following gdd files re-derive logic, contracts, or procedural patterns
|
|
19
|
+
from cc-multi-cli's source. We re-derive in our own runtime (CommonJS in
|
|
20
|
+
gdd's case; cc-multi-cli ships ESM); we do NOT vendor their runtime —
|
|
21
|
+
their hub assumes Claude-as-host while gdd needs any-runtime-as-host.
|
|
22
|
+
Attribution is provided here per Apache 2.0 §4.
|
|
23
|
+
|
|
24
|
+
scripts/lib/peer-cli/acp-client.cjs
|
|
25
|
+
└─ Adapts the line-delimited JSON-RPC + initialize/prompt/notification
|
|
26
|
+
framing from cc-multi-cli's `acp-client.mjs`.
|
|
27
|
+
|
|
28
|
+
scripts/lib/peer-cli/asp-client.cjs
|
|
29
|
+
└─ Adapts the App Server Protocol thread-start + thread-resume + turn
|
|
30
|
+
lifecycle from cc-multi-cli's `asp-client.mjs`. service_name and
|
|
31
|
+
experimentalRawEvents conventions match cc-multi-cli.
|
|
32
|
+
|
|
33
|
+
scripts/lib/peer-cli/spawn-cmd.cjs
|
|
34
|
+
└─ Implements the Windows `.cmd` EINVAL workaround documented in
|
|
35
|
+
cc-multi-cli's `transport-decisions.md`
|
|
36
|
+
(`spawn(`"<absolute-fwd-slash-path>" <args>`, [], {shell: true})`).
|
|
37
|
+
|
|
38
|
+
skills/peer-cli-customize/SKILL.md
|
|
39
|
+
└─ Procedural pattern adapted from cc-multi-cli's `customize` skill.
|
|
40
|
+
|
|
41
|
+
skills/peer-cli-add/SKILL.md
|
|
42
|
+
└─ Procedural pattern adapted from cc-multi-cli's `multi-cli-anything`
|
|
43
|
+
skill, including the verification ladder, model-ID `-preview`-suffix
|
|
44
|
+
trap, and Windows quirk handling.
|
|
45
|
+
|
|
46
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
47
|
+
Phase 28.5 — Skill Authoring Contract + Rework + Project Artifacts (v1.28.5, 2026-05-18)
|
|
48
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
49
|
+
|
|
50
|
+
The skill-authoring contract, project-artifact format files, the
|
|
51
|
+
debug-feedback-loops reference, and the new zoom-out micro-skill port
|
|
52
|
+
content from:
|
|
53
|
+
|
|
54
|
+
mattpocock/skills (https://github.com/mattpocock/skills)
|
|
55
|
+
License: MIT
|
|
56
|
+
Adapted with permission.
|
|
57
|
+
|
|
58
|
+
The following gdd files contain content adapted from mattpocock/skills:
|
|
59
|
+
|
|
60
|
+
reference/skill-authoring-contract.md
|
|
61
|
+
└─ Adapts the SKILL.md <=100-line cap, description-format contract
|
|
62
|
+
(lax-mode default per Phase 33 A/B pending), frontmatter required
|
|
63
|
+
fields, and progressive-disclosure-one-level-deep rules from
|
|
64
|
+
mattpocock's productivity/write-a-skill/SKILL.md.
|
|
65
|
+
|
|
66
|
+
reference/context-md-format.md
|
|
67
|
+
└─ Adapts mattpocock's productivity/grill-with-docs/CONTEXT-FORMAT.md
|
|
68
|
+
(DDD-style ubiquitous-language glossary schema, inline-write
|
|
69
|
+
trigger, multi-context CONTEXT-MAP.md pattern). GDD additions:
|
|
70
|
+
optional first-seen + aliases on term entries.
|
|
71
|
+
|
|
72
|
+
reference/adr-format.md
|
|
73
|
+
└─ Adapts mattpocock's productivity/grill-with-docs/ADR-FORMAT.md
|
|
74
|
+
(3-criteria offer gate: hard-to-reverse AND surprising-without-
|
|
75
|
+
context AND real-tradeoff; 4-state status lifecycle). GDD
|
|
76
|
+
additions: optional cycle-id + phase-id cross-refs back to
|
|
77
|
+
STATE.md.
|
|
78
|
+
|
|
79
|
+
reference/architecture-vocabulary.md
|
|
80
|
+
└─ Ports Ousterhout's *A Philosophy of Software Design* glossary via
|
|
81
|
+
mattpocock's improve-codebase-architecture/LANGUAGE.md (8 core
|
|
82
|
+
terms — Module / Interface / Implementation / Depth / Seam /
|
|
83
|
+
Adapter / Leverage / Locality — plus 3 principles: deletion test,
|
|
84
|
+
interface-is-test-surface, two-adapters-rule).
|
|
85
|
+
|
|
86
|
+
reference/debug-feedback-loops.md
|
|
87
|
+
└─ Adapts mattpocock's engineering/diagnose Phase 1 — feedback-loop
|
|
88
|
+
discipline, 10 construction paths in priority order (failing test
|
|
89
|
+
-> curl -> CLI fixture -> headless browser -> trace replay ->
|
|
90
|
+
throwaway harness -> fuzz -> bisect harness -> differential loop
|
|
91
|
+
-> HITL bash), iterate-on-loop sub-discipline, non-determinism
|
|
92
|
+
reproduction-rate branch.
|
|
93
|
+
|
|
94
|
+
skills/zoom-out/SKILL.md
|
|
95
|
+
└─ Direct port of mattpocock's engineering/zoom-out (~10 lines body,
|
|
96
|
+
disable-model-invocation: true, zoom-out-and-map-the-area
|
|
97
|
+
instruction). User-invoked-only shortcut.
|
|
98
|
+
|
|
99
|
+
skills/debug/SKILL.md (Phase 1 ordering)
|
|
100
|
+
└─ Adopts the feedback-loop-discipline-first ordering — build the
|
|
101
|
+
deterministic, fast, agent-runnable signal before hypothesizing.
|
|
102
|
+
(Skill body itself is GDD original; the Phase 1 ordering +
|
|
103
|
+
cross-link to reference/debug-feedback-loops.md is adapted.)
|
|
104
|
+
|
|
105
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
106
|
+
Phase 28.7 — Multi-Runtime Install Architecture (v1.28.7, 2026-05-19)
|
|
107
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
108
|
+
|
|
109
|
+
The multi-runtime install pipeline shipped in v1.28.7 — the runtime-homes /
|
|
110
|
+
runtime-artifact-layout / runtime-slash trio plus the per-runtime content
|
|
111
|
+
converters — is a re-implementation of the architecture from:
|
|
112
|
+
|
|
113
|
+
gsd-build/get-shit-done (https://github.com/gsd-build/get-shit-done)
|
|
114
|
+
License: MIT
|
|
115
|
+
|
|
116
|
+
The following gdd modules are an architectural port from gsd-build's MIT-
|
|
117
|
+
licensed install machinery. We re-implemented in GDD's existing module
|
|
118
|
+
conventions rather than byte-copying source, per Phase 28.7 D-02, to keep
|
|
119
|
+
the GDD codebase free of upstream version drift and the bundled
|
|
120
|
+
`bin/install.js` monolith:
|
|
121
|
+
|
|
122
|
+
scripts/lib/install/runtime-homes.cjs
|
|
123
|
+
└─ Per-runtime config-dir resolver (env-var + XDG + special-case nests).
|
|
124
|
+
Same shape as gsd-build's `bin/lib/runtime-homes.cjs`.
|
|
125
|
+
|
|
126
|
+
scripts/lib/install/runtime-artifact-layout.cjs
|
|
127
|
+
└─ Per-(runtime, scope) layout table mapping to kinds[]. Same shape as
|
|
128
|
+
gsd-build's `bin/lib/runtime-artifact-layout.cjs`. Adapted to GDD's
|
|
129
|
+
14-runtime set (gsd-build's Hermes is omitted per D-03 + D-10).
|
|
130
|
+
|
|
131
|
+
scripts/lib/install/runtime-slash.cjs
|
|
132
|
+
└─ Per-runtime slash-command surface emitter. Adapted from gsd-build's
|
|
133
|
+
`bin/lib/runtime-slash.cjs`. Codex uses `$gdd-<name>` shell-var form;
|
|
134
|
+
other runtimes use `/gdd-<name>`.
|
|
135
|
+
|
|
136
|
+
scripts/lib/install/converters/{antigravity,augment,cline,codebuddy,codex,
|
|
137
|
+
copilot,cursor,gemini,kilo,opencode,qwen,
|
|
138
|
+
shared,trae,windsurf}.cjs
|
|
139
|
+
└─ Per-runtime content converters. Each translates a Claude SKILL.md
|
|
140
|
+
source into the runtime's expected shape (path rewrite, tool-name
|
|
141
|
+
rewrite via Phase 21 cross-harness maps, frontmatter pass-through).
|
|
142
|
+
gsd-build implements these as `convertClaudeCommandTo<Runtime>Skill`
|
|
143
|
+
functions inside a bundled `bin/install.js`; we factor them into
|
|
144
|
+
per-runtime `.cjs` files for independent testability.
|
|
145
|
+
|
|
146
|
+
Per-file headers in the ported modules carry the same attribution. This
|
|
147
|
+
NOTICE block is the rollup citation.
|
|
148
|
+
|
|
149
|
+
The upstream gsd-build project remains the authoritative reference for the
|
|
150
|
+
install-pipeline architecture; bug reports specific to the architecture's
|
|
151
|
+
shape should also be filed there.
|
|
152
|
+
|
|
153
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
154
|
+
Phase 30 — Privacy Layer (v1.30.0, 2026-05-20)
|
|
155
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
156
|
+
|
|
157
|
+
scripts/lib/pseudonymize.cjs and scripts/lib/issue-reporter/payload-assembly.cjs
|
|
158
|
+
were authored from scratch for Phase 30 (consent-first issue reporter). No
|
|
159
|
+
third-party privacy or anonymization patterns were adapted into either file
|
|
160
|
+
— verified by inspection of the file contents (no "adapted from" / "from
|
|
161
|
+
<library>" / source-citation comments) and by git log on both files (commits
|
|
162
|
+
ed478fe, e5fc79a, e86c648 — all original to this repo).
|
|
163
|
+
|
|
164
|
+
The regex rules in pseudonymize.cjs target generic identity-correlatable
|
|
165
|
+
fields (usernames, hostnames, filesystem paths, repo origin URLs, env-var
|
|
166
|
+
values, email patterns, IP addresses). The patterns were derived from the
|
|
167
|
+
canonical shapes of these surfaces as they appear in plugin runtime output;
|
|
168
|
+
they were NOT sourced from any upstream anonymization or pseudonymization
|
|
169
|
+
library.
|
|
170
|
+
|
|
171
|
+
The Phase 30 — Inbound Feedback Channel design itself (consent-first issue
|
|
172
|
+
reporter, hardcoded destination, no plugin-side credentials, gh-CLI-only
|
|
173
|
+
outbound) is original to get-design-done. The architectural rationale lives
|
|
174
|
+
in .planning/phases/30-issue-reporter/CONTEXT.md.
|
|
175
|
+
|
|
176
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
177
|
+
Phase 30.6 — Graphify Self-Ownership (v1.30.6, 2026-05-28)
|
|
178
|
+
──────────────────────────────────────────────────────────────────────────────
|
|
179
|
+
|
|
180
|
+
Version 1.30.6 removes the last runtime touchpoint between get-design-done
|
|
181
|
+
and the user's `~/.claude/get-shit-done/` install. Eight callsites
|
|
182
|
+
previously dispatched `node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs"
|
|
183
|
+
graphify *` at runtime; they now dispatch a native `bin/gdd-graph` CLI
|
|
184
|
+
owned end-to-end in this repository.
|
|
185
|
+
|
|
186
|
+
No historical MIT/Apache attributions in this NOTICE are removed or
|
|
187
|
+
modified by this change. The Phase 27 / Phase 28.5 / Phase 28.7
|
|
188
|
+
attribution subsections above are preserved verbatim per Phase 30.6 D-06.
|
|
189
|
+
Those describe historical architectural ports:
|
|
190
|
+
|
|
191
|
+
- Phase 27 — peer-CLI delegation protocol shapes adapted from
|
|
192
|
+
cc-multi-cli-plugin (Apache 2.0).
|
|
193
|
+
- Phase 28.5 — skill-authoring contract + project-artifact formats +
|
|
194
|
+
debug feedback-loop reference + zoom-out micro-skill, ported from
|
|
195
|
+
mattpocock/skills (MIT).
|
|
196
|
+
- Phase 28.7 — multi-runtime install pipeline architecture, ported
|
|
197
|
+
from gsd-build/get-shit-done (MIT).
|
|
198
|
+
|
|
199
|
+
Phase 30.6 removes a runtime touchpoint, NOT a historical port. The
|
|
200
|
+
architectural ports listed above remain in our tree under their original
|
|
201
|
+
MIT/Apache terms.
|
|
202
|
+
|
|
203
|
+
For context: the upstream `gsd-build/get-shit-done` project has since been
|
|
204
|
+
archived (TÂCHES rug-pull, May 2026). The community continuation lives at
|
|
205
|
+
`open-gsd/get-shit-done-redux` and is bit-perfect with the pre-rug tree.
|
|
206
|
+
The Phase 28.7 attribution above remains pointed at the original upstream
|
|
207
|
+
URL because that is the source of the architectural port; the redux fork
|
|
208
|
+
is referenced in `README.md` for users seeking a current download.
|
|
209
|
+
|
|
210
|
+
See `.planning/phases/30.6-graphify-self-ownership/` for full phase
|
|
211
|
+
documentation including the 10 architectural decisions (D-01 through D-10)
|
|
212
|
+
and the migration of the 8 dispatching callsites to native `bin/gdd-graph`.
|
|
213
|
+
|
|
214
|
+
────────────────────────────────────────────────────────────────────────
|
|
215
|
+
|
|
216
|
+
Note on the broader codebase: get-design-done as a whole is licensed under
|
|
217
|
+
the MIT License (see LICENSE). The Apache 2.0 attribution above applies
|
|
218
|
+
specifically to the cc-multi-cli-derived files listed under the Phase 27
|
|
219
|
+
block. The MIT attributions under Phase 28.5 and Phase 28.7 cover content
|
|
220
|
+
adapted from mattpocock/skills (MIT) and gsd-build/get-shit-done (MIT)
|
|
221
|
+
respectively — the MIT-to-MIT re-licensing is straightforward and the
|
|
222
|
+
attributions above provide the required source citation. The MIT and
|
|
223
|
+
Apache 2.0 licenses are compatible — see
|
|
224
|
+
https://www.apache.org/legal/resolved.html#category-a.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# GET DESIGN DONE
|
|
4
4
|
|
|
5
|
-
**English** · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Français](README.fr.md) · [Italiano](README.it.md) · [Deutsch](README.de.md)
|
|
5
|
+
**English** · [简体中文](docs/i18n/README.zh-CN.md) · [日本語](docs/i18n/README.ja.md) · [한국어](docs/i18n/README.ko.md) · [Français](docs/i18n/README.fr.md) · [Italiano](docs/i18n/README.it.md) · [Deutsch](docs/i18n/README.de.md)
|
|
6
6
|
|
|
7
7
|
**A design-quality pipeline for AI coding agents: brief → explore → plan → implement → verify.**
|
|
8
8
|
|
|
@@ -194,7 +194,7 @@ After classifying the new entries (Step 5) but BEFORE writing the snapshot (Step
|
|
|
194
194
|
- `/known issues/i`
|
|
195
195
|
- `/pitfalls/i`
|
|
196
196
|
|
|
197
|
-
For each entry whose `title` matches ANY pattern, emit a single `kfm-candidate` event to the events stream (`.design/telemetry/events.jsonl`) via `
|
|
197
|
+
For each entry whose `title` matches ANY pattern, emit a single `kfm-candidate` event to the events stream (`.design/telemetry/events.jsonl`) via `sdk/event-stream/writer.ts` (or the Bash equivalent — `printf '%s\n' "<json>" >> .design/telemetry/events.jsonl`).
|
|
198
198
|
|
|
199
199
|
Event payload shape — validates against `reference/schemas/events.schema.json` definitions `KfmCandidatePayload` (allOf[1] branch). Required 7 fields:
|
|
200
200
|
|
package/agents/perf-analyzer.md
CHANGED
|
@@ -80,7 +80,7 @@ For each regression, emit a `perf.regression_detected` event via `appendEvent` f
|
|
|
80
80
|
|
|
81
81
|
```javascript
|
|
82
82
|
// Pseudo-instruction for the executor — the agent runs Bash with this shape
|
|
83
|
-
const { appendEvent } = require('./
|
|
83
|
+
const { appendEvent } = require('./sdk/event-stream');
|
|
84
84
|
appendEvent({
|
|
85
85
|
type: 'perf.regression_detected',
|
|
86
86
|
timestamp: new Date().toISOString(),
|
|
@@ -89,7 +89,7 @@ appendEvent({
|
|
|
89
89
|
});
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
The `perf.regression_detected` event type is additive to the Phase 22 registry — the writer accepts unknown types (per `
|
|
92
|
+
The `perf.regression_detected` event type is additive to the Phase 22 registry — the writer accepts unknown types (per `sdk/event-stream/types.ts` envelope invariant: "unknown types are allowed; validation is structural, not a closed enum").
|
|
93
93
|
|
|
94
94
|
If `detectCostRegressions` returns `summary.regressions_count === 0`, write a single line: `No token-cost regressions detected (threshold 25%, >=3 cycles).` and skip event emission for this section.
|
|
95
95
|
|
package/bin/gdd-mcp
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// bin/gdd-mcp — Plan 31-5-05 (SDK-04, D-08); dual-mode since Plan 31-5-9.5 (D-16).
|
|
3
|
+
//
|
|
4
|
+
// DUAL-MODE CJS trampoline for the `gdd-mcp` MCP server. Resolves the server
|
|
5
|
+
// entry and re-launches it under `node`, forwarding argv + exit code/signal.
|
|
6
|
+
// Two modes:
|
|
7
|
+
//
|
|
8
|
+
// • COMPILED (installed / packed): if the esbuild-bundled sibling
|
|
9
|
+
// `sdk/mcp/gdd-mcp/server.js` exists, spawn `node <js>` with NO flag.
|
|
10
|
+
// This is the path a user gets from `npm i` — the entry lives under
|
|
11
|
+
// node_modules where Node refuses --experimental-strip-types on `.ts`
|
|
12
|
+
// (ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING). `prepack` compiles the .js
|
|
13
|
+
// before every pack/publish (see scripts/build-sdk-bins.cjs).
|
|
14
|
+
// • SOURCE (in-repo dev): otherwise spawn
|
|
15
|
+
// `node --experimental-strip-types sdk/mcp/gdd-mcp/server.ts` — raw TS, no
|
|
16
|
+
// build step, exactly as before this plan.
|
|
17
|
+
//
|
|
18
|
+
// Why a trampoline at all:
|
|
19
|
+
// POSIX shebangs can use `#!/usr/bin/env -S node --experimental-strip-types`,
|
|
20
|
+
// but Windows cmd.exe does not honor shebangs and npm's auto-generated .cmd
|
|
21
|
+
// shim invokes plain `node bin/gdd-mcp` with no way to inject the flag.
|
|
22
|
+
// Mirrors the proven bin/gdd-sdk trampoline pattern.
|
|
23
|
+
|
|
24
|
+
'use strict';
|
|
25
|
+
|
|
26
|
+
const { spawn } = require('node:child_process');
|
|
27
|
+
const fs = require('node:fs');
|
|
28
|
+
const path = require('node:path');
|
|
29
|
+
|
|
30
|
+
// Sibling compiled JS (preferred) and the TS source (dev fallback).
|
|
31
|
+
const compiled = path.resolve(
|
|
32
|
+
__dirname,
|
|
33
|
+
'..',
|
|
34
|
+
'sdk',
|
|
35
|
+
'mcp',
|
|
36
|
+
'gdd-mcp',
|
|
37
|
+
'server.js',
|
|
38
|
+
);
|
|
39
|
+
const source = path.resolve(
|
|
40
|
+
__dirname,
|
|
41
|
+
'..',
|
|
42
|
+
'sdk',
|
|
43
|
+
'mcp',
|
|
44
|
+
'gdd-mcp',
|
|
45
|
+
'server.ts',
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const useCompiled = fs.existsSync(compiled);
|
|
49
|
+
const entry = useCompiled ? compiled : source;
|
|
50
|
+
const nodeArgs = useCompiled
|
|
51
|
+
? [entry, ...process.argv.slice(2)]
|
|
52
|
+
: ['--experimental-strip-types', entry, ...process.argv.slice(2)];
|
|
53
|
+
|
|
54
|
+
const child = spawn(process.execPath, nodeArgs, {
|
|
55
|
+
stdio: 'inherit',
|
|
56
|
+
shell: false,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
child.on('exit', (code, signal) => {
|
|
60
|
+
if (signal) {
|
|
61
|
+
// Re-raise the signal to ourselves so the parent shell sees the same
|
|
62
|
+
// termination mode (e.g., Ctrl+C propagates as SIGINT exit).
|
|
63
|
+
try {
|
|
64
|
+
process.kill(process.pid, signal);
|
|
65
|
+
} catch {
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
process.exit(typeof code === 'number' ? code : 0);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
child.on('error', (err) => {
|
|
74
|
+
// Failure to spawn node itself — extremely rare; surface to stderr.
|
|
75
|
+
// eslint-disable-next-line no-console
|
|
76
|
+
console.error('gdd-mcp: failed to launch MCP server entry:', err.message);
|
|
77
|
+
process.exit(3);
|
|
78
|
+
});
|
package/bin/gdd-sdk
CHANGED
|
@@ -1,37 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// bin/gdd-sdk — Plan 21-09 Task 7 (SDK-21).
|
|
2
|
+
// bin/gdd-sdk — Plan 21-09 Task 7 (SDK-21); dual-mode since Plan 31-5-9.5 (D-16).
|
|
3
3
|
//
|
|
4
|
-
// CJS trampoline
|
|
5
|
-
//
|
|
6
|
-
// exit code. Windows-compatible (npm's generated .cmd shim on Windows
|
|
7
|
-
// has no way to inject the --experimental-strip-types flag otherwise).
|
|
4
|
+
// DUAL-MODE CJS trampoline. Resolves the SDK CLI entry and re-launches it under
|
|
5
|
+
// `node`, forwarding argv + exit code/signal. Two modes:
|
|
8
6
|
//
|
|
9
|
-
//
|
|
7
|
+
// • COMPILED (installed / packed): if the esbuild-bundled sibling
|
|
8
|
+
// `sdk/cli/index.js` exists, spawn `node <js>` with NO flag. This is the
|
|
9
|
+
// path a user gets from `npm i` — the entry lives under node_modules where
|
|
10
|
+
// Node refuses --experimental-strip-types on `.ts`
|
|
11
|
+
// (ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING). `prepack` compiles the .js
|
|
12
|
+
// before every pack/publish (see scripts/build-sdk-bins.cjs).
|
|
13
|
+
// • SOURCE (in-repo dev): otherwise spawn
|
|
14
|
+
// `node --experimental-strip-types sdk/cli/index.ts` — the raw TS, no build
|
|
15
|
+
// step, exactly as before this plan.
|
|
16
|
+
//
|
|
17
|
+
// Why a trampoline at all:
|
|
10
18
|
// POSIX shebangs can use `#!/usr/bin/env -S node --experimental-strip-types`,
|
|
11
|
-
// but Windows cmd.exe does not honor shebangs
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
// explicitly so both platforms end up at the same TS entry.
|
|
19
|
+
// but Windows cmd.exe does not honor shebangs and npm's auto-generated .cmd
|
|
20
|
+
// shim invokes plain `node bin/gdd-sdk` with no way to inject the flag. The
|
|
21
|
+
// trampoline re-launches node correctly on both platforms.
|
|
15
22
|
|
|
16
23
|
'use strict';
|
|
17
24
|
|
|
18
25
|
const { spawn } = require('node:child_process');
|
|
26
|
+
const fs = require('node:fs');
|
|
19
27
|
const path = require('node:path');
|
|
20
28
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
// Sibling compiled JS (preferred) and the TS source (dev fallback).
|
|
30
|
+
const compiled = path.resolve(__dirname, '..', 'sdk', 'cli', 'index.js');
|
|
31
|
+
const source = path.resolve(__dirname, '..', 'sdk', 'cli', 'index.ts');
|
|
32
|
+
|
|
33
|
+
// fs.existsSync (not a try/require) — the entry is launched in a child node,
|
|
34
|
+
// not require()'d here, and we must not evaluate it in this process.
|
|
35
|
+
const useCompiled = fs.existsSync(compiled);
|
|
36
|
+
const entry = useCompiled ? compiled : source;
|
|
37
|
+
const nodeArgs = useCompiled
|
|
38
|
+
? [entry, ...process.argv.slice(2)]
|
|
39
|
+
: ['--experimental-strip-types', entry, ...process.argv.slice(2)];
|
|
29
40
|
|
|
30
|
-
const child = spawn(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
);
|
|
41
|
+
const child = spawn(process.execPath, nodeArgs, {
|
|
42
|
+
stdio: 'inherit',
|
|
43
|
+
shell: false,
|
|
44
|
+
});
|
|
35
45
|
|
|
36
46
|
child.on('exit', (code, signal) => {
|
|
37
47
|
if (signal) {
|
|
@@ -50,6 +60,6 @@ child.on('exit', (code, signal) => {
|
|
|
50
60
|
child.on('error', (err) => {
|
|
51
61
|
// Failure to spawn node itself — extremely rare; surface to stderr.
|
|
52
62
|
// eslint-disable-next-line no-console
|
|
53
|
-
console.error('gdd-sdk: failed to launch
|
|
63
|
+
console.error('gdd-sdk: failed to launch SDK CLI entry:', err.message);
|
|
54
64
|
process.exit(3);
|
|
55
65
|
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// bin/gdd-state-mcp — Plan 31-5-05 (SDK-03, D-08); dual-mode since Plan 31-5-9.5 (D-16).
|
|
3
|
+
//
|
|
4
|
+
// DUAL-MODE CJS trampoline for the `gdd-state` MCP server. Resolves the server
|
|
5
|
+
// entry and re-launches it under `node`, forwarding argv + exit code/signal.
|
|
6
|
+
// Two modes:
|
|
7
|
+
//
|
|
8
|
+
// • COMPILED (installed / packed): if the esbuild-bundled sibling
|
|
9
|
+
// `sdk/mcp/gdd-state/server.js` exists, spawn `node <js>` with NO flag.
|
|
10
|
+
// This is the path a user gets from `npm i` — the entry lives under
|
|
11
|
+
// node_modules where Node refuses --experimental-strip-types on `.ts`
|
|
12
|
+
// (ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING). `prepack` compiles the .js
|
|
13
|
+
// before every pack/publish (see scripts/build-sdk-bins.cjs).
|
|
14
|
+
// • SOURCE (in-repo dev): otherwise spawn
|
|
15
|
+
// `node --experimental-strip-types sdk/mcp/gdd-state/server.ts` — raw TS, no
|
|
16
|
+
// build step, exactly as before this plan.
|
|
17
|
+
//
|
|
18
|
+
// Why a trampoline at all:
|
|
19
|
+
// POSIX shebangs can use `#!/usr/bin/env -S node --experimental-strip-types`,
|
|
20
|
+
// but Windows cmd.exe does not honor shebangs and npm's auto-generated .cmd
|
|
21
|
+
// shim invokes plain `node bin/gdd-state-mcp` with no way to inject the flag.
|
|
22
|
+
// Mirrors the proven bin/gdd-sdk trampoline pattern.
|
|
23
|
+
|
|
24
|
+
'use strict';
|
|
25
|
+
|
|
26
|
+
const { spawn } = require('node:child_process');
|
|
27
|
+
const fs = require('node:fs');
|
|
28
|
+
const path = require('node:path');
|
|
29
|
+
|
|
30
|
+
// Sibling compiled JS (preferred) and the TS source (dev fallback).
|
|
31
|
+
const compiled = path.resolve(
|
|
32
|
+
__dirname,
|
|
33
|
+
'..',
|
|
34
|
+
'sdk',
|
|
35
|
+
'mcp',
|
|
36
|
+
'gdd-state',
|
|
37
|
+
'server.js',
|
|
38
|
+
);
|
|
39
|
+
const source = path.resolve(
|
|
40
|
+
__dirname,
|
|
41
|
+
'..',
|
|
42
|
+
'sdk',
|
|
43
|
+
'mcp',
|
|
44
|
+
'gdd-state',
|
|
45
|
+
'server.ts',
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const useCompiled = fs.existsSync(compiled);
|
|
49
|
+
const entry = useCompiled ? compiled : source;
|
|
50
|
+
const nodeArgs = useCompiled
|
|
51
|
+
? [entry, ...process.argv.slice(2)]
|
|
52
|
+
: ['--experimental-strip-types', entry, ...process.argv.slice(2)];
|
|
53
|
+
|
|
54
|
+
const child = spawn(process.execPath, nodeArgs, {
|
|
55
|
+
stdio: 'inherit',
|
|
56
|
+
shell: false,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
child.on('exit', (code, signal) => {
|
|
60
|
+
if (signal) {
|
|
61
|
+
// Re-raise the signal to ourselves so the parent shell sees the same
|
|
62
|
+
// termination mode (e.g., Ctrl+C propagates as SIGINT exit).
|
|
63
|
+
try {
|
|
64
|
+
process.kill(process.pid, signal);
|
|
65
|
+
} catch {
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
process.exit(typeof code === 'number' ? code : 0);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
child.on('error', (err) => {
|
|
74
|
+
// Failure to spawn node itself — extremely rare; surface to stderr.
|
|
75
|
+
// eslint-disable-next-line no-console
|
|
76
|
+
console.error('gdd-state-mcp: failed to launch MCP server entry:', err.message);
|
|
77
|
+
process.exit(3);
|
|
78
|
+
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# GET DESIGN DONE
|
|
4
4
|
|
|
5
|
-
[English](README.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Français](README.fr.md) · [Italiano](README.it.md) · **Deutsch**
|
|
5
|
+
[English](../../README.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Français](README.fr.md) · [Italiano](README.it.md) · **Deutsch**
|
|
6
6
|
|
|
7
7
|
**Eine Design-Quality-Pipeline für AI-Coding-Agenten: Brief → Explore → Plan → Implementierung → Verifikation.**
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# GET DESIGN DONE
|
|
4
4
|
|
|
5
|
-
[English](README.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · **Français** · [Italiano](README.it.md) · [Deutsch](README.de.md)
|
|
5
|
+
[English](../../README.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · **Français** · [Italiano](README.it.md) · [Deutsch](README.de.md)
|
|
6
6
|
|
|
7
7
|
**Un pipeline de qualité design pour agents de code IA : brief → exploration → plan → implémentation → vérification.**
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# GET DESIGN DONE
|
|
4
4
|
|
|
5
|
-
[English](README.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Français](README.fr.md) · **Italiano** · [Deutsch](README.de.md)
|
|
5
|
+
[English](../../README.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Français](README.fr.md) · **Italiano** · [Deutsch](README.de.md)
|
|
6
6
|
|
|
7
7
|
**Una pipeline di qualità del design per agenti di coding IA: brief → esplorazione → piano → implementazione → verifica.**
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# GET DESIGN DONE
|
|
4
4
|
|
|
5
|
-
[English](README.md) · [简体中文](README.zh-CN.md) · **日本語** · [한국어](README.ko.md) · [Français](README.fr.md) · [Italiano](README.it.md) · [Deutsch](README.de.md)
|
|
5
|
+
[English](../../README.md) · [简体中文](README.zh-CN.md) · **日本語** · [한국어](README.ko.md) · [Français](README.fr.md) · [Italiano](README.it.md) · [Deutsch](README.de.md)
|
|
6
6
|
|
|
7
7
|
**AI コーディングエージェントのためのデザイン品質パイプライン: ブリーフ → 探索 → 計画 → 実装 → 検証。**
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# GET DESIGN DONE
|
|
4
4
|
|
|
5
|
-
[English](README.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · **한국어** · [Français](README.fr.md) · [Italiano](README.it.md) · [Deutsch](README.de.md)
|
|
5
|
+
[English](../../README.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · **한국어** · [Français](README.fr.md) · [Italiano](README.it.md) · [Deutsch](README.de.md)
|
|
6
6
|
|
|
7
7
|
**AI 코딩 에이전트를 위한 디자인 품질 파이프라인: 브리프 → 탐색 → 계획 → 구현 → 검증.**
|
|
8
8
|
|