@hegemonart/get-design-done 1.27.6 → 1.27.7
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 +6 -3
- package/CHANGELOG.md +49 -0
- package/package.json +5 -4
- package/reference/registry.json +7 -0
- package/reference/schemas/mcp-gdd-tools.schema.json +381 -0
- package/scripts/install.cjs +42 -0
- package/scripts/lib/gsd-health-mirror/index.cjs +105 -0
- package/scripts/lib/gsd-health-mirror/index.d.cts +14 -0
- package/scripts/lib/install/mcp-register.cjs +235 -0
- package/scripts/lib/install/mcp-register.d.cts +64 -0
- package/scripts/lib/intel-store/index.cjs +55 -0
- package/scripts/lib/intel-store/index.d.cts +11 -0
- package/scripts/lib/mcp-tools-lint/index.cjs +216 -0
- package/scripts/lib/mcp-tools-lint/index.d.cts +74 -0
- package/scripts/lib/reflections-reader/index.cjs +107 -0
- package/scripts/lib/reflections-reader/index.d.cts +18 -0
- package/scripts/lib/roadmap-reader/index.cjs +81 -0
- package/scripts/lib/roadmap-reader/index.d.cts +13 -0
- package/scripts/lib/snapshot-reader/index.cjs +70 -0
- package/scripts/lib/snapshot-reader/index.d.cts +28 -0
- package/scripts/mcp-servers/gdd-mcp/README.md +66 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_cycle_recap.schema.json +30 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_decisions_list.schema.json +32 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_events_tail.schema.json +22 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_health.schema.json +30 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_intel_get.schema.json +24 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_learnings_digest.schema.json +22 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_phase_current.schema.json +22 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_phases_list.schema.json +31 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_plans_list.schema.json +33 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_reflections_latest.schema.json +21 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_status.schema.json +23 -0
- package/scripts/mcp-servers/gdd-mcp/schemas/gdd_telemetry_query.schema.json +23 -0
- package/scripts/mcp-servers/gdd-mcp/server.ts +317 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_cycle_recap.ts +37 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_decisions_list.ts +33 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_events_tail.ts +26 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_health.ts +19 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_intel_get.ts +32 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_learnings_digest.ts +23 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_phase_current.ts +29 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_phases_list.ts +26 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_plans_list.ts +39 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_reflections_latest.ts +25 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_status.ts +31 -0
- package/scripts/mcp-servers/gdd-mcp/tools/gdd_telemetry_query.ts +27 -0
- package/scripts/mcp-servers/gdd-mcp/tools/index.ts +75 -0
- package/scripts/mcp-servers/gdd-mcp/tools/shared.ts +134 -0
- package/skills/health/SKILL.md +36 -0
- package/skills/next/SKILL.md +28 -3
- package/skills/progress/SKILL.md +21 -6
- package/skills/resume/SKILL.md +26 -1
|
@@ -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.27.
|
|
8
|
+
"version": "1.27.7"
|
|
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.27.
|
|
15
|
+
"version": "1.27.7",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "hegemonart"
|
|
18
18
|
},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "get-design-done",
|
|
3
3
|
"short_name": "gdd",
|
|
4
|
-
"version": "1.27.
|
|
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.",
|
|
4
|
+
"version": "1.27.7",
|
|
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.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "hegemonart",
|
|
8
8
|
"url": "https://github.com/hegemonart"
|
|
@@ -59,7 +59,10 @@
|
|
|
59
59
|
"gemini",
|
|
60
60
|
"mcp",
|
|
61
61
|
"parallel-agents",
|
|
62
|
-
"agent-sdk"
|
|
62
|
+
"agent-sdk",
|
|
63
|
+
"mcp-server",
|
|
64
|
+
"context-loading",
|
|
65
|
+
"cross-session"
|
|
63
66
|
],
|
|
64
67
|
"skills": [
|
|
65
68
|
"./skills/"
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,55 @@ All notable changes to get-design-done are documented here. Versions follow [sem
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.27.7] — 2026-05-18
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Phase 27.7 — GDD MCP Server** (7 plans). Ships `gdd-mcp`, a read-only Model Context Protocol server that exposes STATE.md sections, phases, decisions, plans, telemetry, intel slices, and the latest reflection as 12 typed MCP tools backed by the same `scripts/lib/*` modules the CLI uses. Sub-3-second priming target on a synthetic project (Storybloq §4.6 pattern transplant). Off-cadence v1.27.7 (CHANGELOG-only; mainline cadence resumes at v1.28.0).
|
|
12
|
+
- `scripts/mcp-servers/gdd-mcp/server.ts` (Plan 27.7-01) — MCP server scaffold using `@modelcontextprotocol/sdk` low-level Server + StdioServerTransport. Project-root discovery walks from `process.cwd()` looking for `.design/` OR `.planning/` OR `.claude-plugin/plugin.json`. `bin/gdd-mcp` shim added to `package.json` (alphabetized: gdd-events → gdd-mcp → gdd-sdk → gdd-state-mcp). Tests on handshake + walk-up + missing-marker behavior. (MCP-01)
|
|
13
|
+
- `scripts/mcp-servers/gdd-mcp/tools/` + `reference/schemas/mcp-gdd-tools.schema.json` (Plan 27.7-02) — 12 read-only tools: `gdd_status`, `gdd_cycle_recap`, `gdd_decisions_list`, `gdd_events_tail`, `gdd_health`, `gdd_intel_get`, `gdd_learnings_digest`, `gdd_phase_current`, `gdd_phases_list`, `gdd_plans_list`, `gdd_reflections_latest`, `gdd_telemetry_query`. Each tool ≤ 30 LOC (D-06), with per-tool Draft-07 JSON Schema, plus 5 helper libs (state-reader, intel-slicer, telemetry-grouper, reflection-loader, paths-resolver) and a `directory_not_found` typed projection. Tests on input schema + output shape + thin-wrapper assertion. (MCP-02)
|
|
14
|
+
- `scripts/lib/mcp-tools-lint/index.cjs` (Plan 27.7-03) — Static lint enforcing 4 invariants: forbid-fs-path (D-06: no direct `fs.*`/`path.*` in tool files), max-loc (≤ 30 LOC per tool), no-write-names (D-04: hard-blocks `_(create|update|delete|append|clear|write|set)` patterns), tool-count-cap (D-03: ≤ 12 files). Tests on each rule + exemptions for `index.ts`/`shared.ts`. (MCP-03)
|
|
15
|
+
- `scripts/lib/install/mcp-register.cjs` + `scripts/install.cjs --register-mcp` extension (Plan 27.7-04) — Idempotent registration with `claude mcp add` + `codex mcp add` (D-07 opt-in; absent-CLI fallback). `skills/health/SKILL.md` gains a `check-mcp-registration` step with 4 SKILL-row outputs (registered_with_both, not_registered, dismissed, unknown). Tests on idempotent re-run + absent-CLI paths + `--` arg-injection guard. (MCP-04)
|
|
16
|
+
- `skills/progress/SKILL.md` + `skills/resume/SKILL.md` + `skills/next/SKILL.md` adopted MCP-path + File-read-path fork (Plan 27.7-05). Each skill prefers `gdd-mcp` tools when registered, falls back to direct file reads when not. Structural-compliance tests via the Phase 28.5 validator. (MCP-05)
|
|
17
|
+
- `scripts/mcp-servers/gdd-mcp/README.md` (≤ 120 lines, Plan 27.7-06) + `test-fixture/baselines/phase-27-7/priming-benchmark.json` capturing −31.18% token reduction on a synthetic project (Storybloq's −30% floor met). Tests on README structure + benchmark fixture shape + token-reduction ≥ 30%. (MCP-06)
|
|
18
|
+
- `test-fixture/baselines/phase-27-7/` regression snapshots (Plan 27.7-07): `tool-registry.json` (12 tools, zero write-tools), `handshake-fixture.json` (canonical initialize response shape), `install-doctor-fixture.json` (4 SKILL-row scenarios), `manifests-version.txt` (pinned at 1.27.7). 4-manifest lockstep bump to v1.27.7. CHANGELOG entry. `OFF_CADENCE_VERSIONS.add('1.27.7')`. `reference/registry.json` gains `mcp-gdd-tools-schema` entry. `plugin.json` keywords gain `mcp-server`, `context-loading`, `cross-session`. ROADMAP scoped flip (7 plan checkboxes + 1 top-level overview entry). New `tests/phase-27-7-baseline.test.cjs` (>= 6 version-agnostic baseline tests) + new `tests/gdd-mcp-headless-e2e.test.cjs` (5 E2E tests: pack -> install -> spawn -> MCP initialize handshake -> tools/list returns 12; skip-on-Windows path documented for npm pack symlink false-negatives — Blocker #2 acceptance per ROADMAP SC #11). (MCP-07)
|
|
19
|
+
|
|
20
|
+
### Decisions locked
|
|
21
|
+
|
|
22
|
+
- D-01: MCP server is read-mostly (read-only in v1; mutations stay in slash-skills + lockfile-safe writers — re-examine at Phase 30/41).
|
|
23
|
+
- D-02: Tool count capped at 12 — `TOOL_COUNT > 12` throws at module load. Adding a 13th tool requires re-scoping in a new plan.
|
|
24
|
+
- D-03: 12-tool cap is the hard ceiling baselined in `test-fixture/baselines/phase-27-7/tool-registry.json`.
|
|
25
|
+
- D-04: No write-verb tool names — `mcp-tools-lint` blocks `_(create|update|delete|append|clear|write|set)(_|$)` patterns. Baseline asserts `write_tools.length === 0`.
|
|
26
|
+
- D-05: stdio-only transport — no port allocation, no HTTP surface. Project-root discovery walks up from `process.cwd()` (`.design/` OR `.planning/` OR `.claude-plugin/plugin.json` marker).
|
|
27
|
+
- D-06: Each tool file ≤ 30 non-blank-non-comment LOC. Tools must be thin wrappers — no direct `node:fs`/`node:path` imports (enforced by `mcp-tools-lint`). All filesystem I/O routes through `scripts/lib/*` helpers.
|
|
28
|
+
- D-07: Installer `--register-mcp` is opt-in (default off). Absent-CLI fallback emits a non-blocking notice. Dismissable nudge via `.design/config.json#mcp_nudge: false`.
|
|
29
|
+
- D-08: Skill-side adoption is forked — MCP path (preferred) + File-read path (fallback). Both produce identical output shape. Skills do not hard-depend on MCP registration.
|
|
30
|
+
- D-09: Server name `gdd-mcp` (matches package bin); version read from `package.json#version` (single source of truth — D-12 lockstep maintains alignment).
|
|
31
|
+
- D-10: `bin/gdd-mcp` block in `package.json` alphabetized at scaffold time (Plan 27.7-01). Manifest bump preserves the alphabetization.
|
|
32
|
+
- D-11: New schema `reference/schemas/mcp-gdd-tools.schema.json` registered in `reference/registry.json` as `mcp-gdd-tools-schema`.
|
|
33
|
+
- D-12: 4-manifest lockstep — `package.json#version`, `.claude-plugin/plugin.json#version`, `.claude-plugin/marketplace.json#metadata.version`, `.claude-plugin/marketplace.json#plugins[0].version` all ship together at v1.27.7. `OFF_CADENCE_VERSIONS.add('1.27.7')` added to `tests/semver-compare.test.cjs`.
|
|
34
|
+
|
|
35
|
+
### Tests added
|
|
36
|
+
|
|
37
|
+
~69 new tests across 10 test files: 5 server scaffold (Plan 27.7-01), 27 tool + helper (Plan 27.7-02), 4 lint (Plan 27.7-03), 6 install + 4 SKILL row (Plan 27.7-04), 3 skill adoption (Plan 27.7-05), 5 README + benchmark (Plan 27.7-06), 8 baseline + 5 headless E2E (Plan 27.7-07).
|
|
38
|
+
|
|
39
|
+
### Out of scope (deferred or rejected)
|
|
40
|
+
|
|
41
|
+
- Write tools in v1 — `gdd_decision_append`, `gdd_blocker_clear`, `gdd_plan_complete` etc. Mutation belongs to slash-skills + lockfile-safe writers (Phase 20 surface), not callable-by-any-client MCP tools. Re-examine at Phase 30 (issue reporter) or Phase 41 (team mode).
|
|
42
|
+
- Tool sprawl past 12 — Storybloq grew to 43 tools because read + write + autonomous + review-lens orchestration share the surface. GDD's autonomous surface is `/gdd:do`, review is `agents/*`. Re-examine when measured token-cost data justifies an additional tool.
|
|
43
|
+
- Live (streaming) MCP resources — Phase 48 (`/gdd:live`) handles long-lived browser sessions via `channel/`-style subprocess registry; MCP stays request/response in v1.
|
|
44
|
+
- Multi-project federation — one server, one project root. Two GDD projects in two terminals = two MCP servers. Federation is a Phase 41 (team mode) question.
|
|
45
|
+
|
|
46
|
+
### Benchmark
|
|
47
|
+
|
|
48
|
+
`test-fixture/baselines/phase-27-7/priming-benchmark.json` — synthetic-fixture priming run shows −31.18% token reduction (3 MCP calls vs equivalent file-reading path), with a 34× wall-clock speedup vs file-reading. Floor target was −30% (Storybloq's measured number); GDD exceeds the floor. Real-cycle calibration follows in a patch after 1-2 production cycles.
|
|
49
|
+
|
|
50
|
+
### Headless E2E (ROADMAP SC #11)
|
|
51
|
+
|
|
52
|
+
`tests/gdd-mcp-headless-e2e.test.cjs` — `npm pack` produces tarball -> `npm install <tarball>` into mkdtempSync prefix -> spawn `gdd-mcp` via the installed bin -> MCP initialize handshake asserts `serverInfo.name === 'gdd-mcp'` + `serverInfo.version === package.json#version` -> follow-up `tools/list` asserts `result.tools.length === 12`. Cleanup at end. Marked `skip: process.platform === 'win32'` for npm pack symlink false-negatives (Blocker #2 acceptance); POSIX CI runs all 5 E2E tests.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
7
56
|
## [1.27.6] — 2026-05-18
|
|
8
57
|
|
|
9
58
|
### Added
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hegemonart/get-design-done",
|
|
3
|
-
"version": "1.27.
|
|
3
|
+
"version": "1.27.7",
|
|
4
4
|
"description": "A design-quality pipeline for AI coding agents: brief, plan, implement, and verify UI work against your design system.",
|
|
5
5
|
"author": "Hegemon",
|
|
6
6
|
"homepage": "https://github.com/hegemonart/get-design-done",
|
|
@@ -27,10 +27,11 @@
|
|
|
27
27
|
"LICENSE"
|
|
28
28
|
],
|
|
29
29
|
"bin": {
|
|
30
|
-
"
|
|
31
|
-
"gdd-
|
|
30
|
+
"gdd-events": "./scripts/cli/gdd-events.mjs",
|
|
31
|
+
"gdd-mcp": "./scripts/mcp-servers/gdd-mcp/server.ts",
|
|
32
32
|
"gdd-sdk": "./bin/gdd-sdk",
|
|
33
|
-
"gdd-
|
|
33
|
+
"gdd-state-mcp": "./scripts/mcp-servers/gdd-state/server.ts",
|
|
34
|
+
"get-design-done": "./scripts/install.cjs"
|
|
34
35
|
},
|
|
35
36
|
"publishConfig": {
|
|
36
37
|
"access": "public",
|
package/reference/registry.json
CHANGED
|
@@ -455,6 +455,13 @@
|
|
|
455
455
|
"type": "defaults",
|
|
456
456
|
"description": "Default MCP per-task budget (calls + consecutive-timeout thresholds)"
|
|
457
457
|
},
|
|
458
|
+
{
|
|
459
|
+
"name": "mcp-gdd-tools-schema",
|
|
460
|
+
"path": "reference/schemas/mcp-gdd-tools.schema.json",
|
|
461
|
+
"type": "schema",
|
|
462
|
+
"phase": 27.7,
|
|
463
|
+
"description": "Phase 27.7 — Draft-07 input/output schemas for the 12 read-only tools in scripts/mcp-servers/gdd-mcp/ (gdd-mcp MCP server)"
|
|
464
|
+
},
|
|
458
465
|
{
|
|
459
466
|
"name": "meta-rules",
|
|
460
467
|
"path": "reference/meta-rules.md",
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/hegemonart/get-design-done/main/reference/schemas/mcp-gdd-tools.schema.json",
|
|
4
|
+
"title": "McpGddTools",
|
|
5
|
+
"description": "Combined manifest of all gdd-mcp tool input+output schemas (Plan 27.7-02). Individual tool schemas live under scripts/mcp-servers/gdd-mcp/schemas/ and the tool handlers reference them; this combined schema exists so downstream validators and codegen can compile a single surface (D-11).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"tools": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"description": "Per-tool input/output schemas keyed by tool name. Exactly 12 entries (D-03 hard cap).",
|
|
11
|
+
"additionalProperties": false,
|
|
12
|
+
"properties": {
|
|
13
|
+
"gdd_status": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"required": ["input", "output"],
|
|
17
|
+
"properties": {
|
|
18
|
+
"input": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"additionalProperties": false,
|
|
21
|
+
"properties": {}
|
|
22
|
+
},
|
|
23
|
+
"output": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"required": ["phase", "branch", "last_decisions", "last_completed_plans", "blocker_count"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"phase": { "type": ["string", "null"] },
|
|
28
|
+
"branch": { "type": ["string", "null"] },
|
|
29
|
+
"last_decisions": { "type": "array", "items": { "type": "object" } },
|
|
30
|
+
"last_completed_plans": { "type": "array", "items": { "type": "object" } },
|
|
31
|
+
"blocker_count": { "type": "integer", "minimum": 0 }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"gdd_phase_current": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"required": ["input", "output"],
|
|
40
|
+
"properties": {
|
|
41
|
+
"input": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"properties": {}
|
|
45
|
+
},
|
|
46
|
+
"output": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"required": ["phase", "stage", "task_progress", "status"],
|
|
49
|
+
"properties": {
|
|
50
|
+
"phase": { "type": ["string", "null"] },
|
|
51
|
+
"stage": { "type": ["string", "null"] },
|
|
52
|
+
"task_progress": { "type": ["string", "null"] },
|
|
53
|
+
"status": { "type": ["string", "null"] }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"gdd_phases_list": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"additionalProperties": false,
|
|
61
|
+
"required": ["input", "output"],
|
|
62
|
+
"properties": {
|
|
63
|
+
"input": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"additionalProperties": false,
|
|
66
|
+
"properties": {}
|
|
67
|
+
},
|
|
68
|
+
"output": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"required": ["phases"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"phases": {
|
|
73
|
+
"type": "array",
|
|
74
|
+
"items": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"required": ["number", "name", "version", "checkbox_status"],
|
|
77
|
+
"properties": {
|
|
78
|
+
"number": { "type": "string" },
|
|
79
|
+
"name": { "type": "string" },
|
|
80
|
+
"version": { "type": "string" },
|
|
81
|
+
"checkbox_status": { "type": "string", "enum": ["shipped", "planned", "unknown"] }
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"gdd_plans_list": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"additionalProperties": false,
|
|
92
|
+
"required": ["input", "output"],
|
|
93
|
+
"properties": {
|
|
94
|
+
"input": {
|
|
95
|
+
"type": "object",
|
|
96
|
+
"additionalProperties": false,
|
|
97
|
+
"properties": {
|
|
98
|
+
"phase": { "type": "string" }
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"output": {
|
|
102
|
+
"type": "object",
|
|
103
|
+
"required": ["phase", "plans"],
|
|
104
|
+
"properties": {
|
|
105
|
+
"phase": { "type": ["string", "null"] },
|
|
106
|
+
"plans": {
|
|
107
|
+
"type": "array",
|
|
108
|
+
"items": {
|
|
109
|
+
"type": "object",
|
|
110
|
+
"required": ["id", "name", "status"],
|
|
111
|
+
"properties": {
|
|
112
|
+
"id": { "type": "string" },
|
|
113
|
+
"name": { "type": "string" },
|
|
114
|
+
"status": { "type": "string" }
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"gdd_decisions_list": {
|
|
123
|
+
"type": "object",
|
|
124
|
+
"additionalProperties": false,
|
|
125
|
+
"required": ["input", "output"],
|
|
126
|
+
"properties": {
|
|
127
|
+
"input": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"additionalProperties": false,
|
|
130
|
+
"properties": {
|
|
131
|
+
"status": { "type": "string", "enum": ["locked", "tentative"] }
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"output": {
|
|
135
|
+
"type": "object",
|
|
136
|
+
"required": ["decisions"],
|
|
137
|
+
"properties": {
|
|
138
|
+
"decisions": {
|
|
139
|
+
"type": "array",
|
|
140
|
+
"items": {
|
|
141
|
+
"type": "object",
|
|
142
|
+
"required": ["id", "text", "status"],
|
|
143
|
+
"properties": {
|
|
144
|
+
"id": { "type": "string" },
|
|
145
|
+
"text": { "type": "string" },
|
|
146
|
+
"status": { "type": "string" }
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"gdd_intel_get": {
|
|
155
|
+
"type": "object",
|
|
156
|
+
"additionalProperties": false,
|
|
157
|
+
"required": ["input", "output"],
|
|
158
|
+
"properties": {
|
|
159
|
+
"input": {
|
|
160
|
+
"type": "object",
|
|
161
|
+
"additionalProperties": false,
|
|
162
|
+
"required": ["slice_id"],
|
|
163
|
+
"properties": {
|
|
164
|
+
"slice_id": { "type": "string", "minLength": 1 },
|
|
165
|
+
"shape": { "type": "array", "items": { "type": "string" } }
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"output": {
|
|
169
|
+
"type": "object",
|
|
170
|
+
"required": ["slice_id", "data"],
|
|
171
|
+
"properties": {
|
|
172
|
+
"slice_id": { "type": "string" },
|
|
173
|
+
"data": { "type": "object" }
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
"gdd_telemetry_query": {
|
|
179
|
+
"type": "object",
|
|
180
|
+
"additionalProperties": false,
|
|
181
|
+
"required": ["input", "output"],
|
|
182
|
+
"properties": {
|
|
183
|
+
"input": {
|
|
184
|
+
"type": "object",
|
|
185
|
+
"additionalProperties": false,
|
|
186
|
+
"properties": {
|
|
187
|
+
"type": { "type": "string" },
|
|
188
|
+
"since": { "type": "string", "format": "date-time" },
|
|
189
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 10000 }
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"output": {
|
|
193
|
+
"type": "object",
|
|
194
|
+
"required": ["events"],
|
|
195
|
+
"properties": {
|
|
196
|
+
"events": { "type": "array", "items": { "type": "object" } }
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"gdd_cycle_recap": {
|
|
202
|
+
"type": "object",
|
|
203
|
+
"additionalProperties": false,
|
|
204
|
+
"required": ["input", "output"],
|
|
205
|
+
"properties": {
|
|
206
|
+
"input": {
|
|
207
|
+
"type": "object",
|
|
208
|
+
"additionalProperties": false,
|
|
209
|
+
"properties": {
|
|
210
|
+
"since_snapshot": { "type": "string" }
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
"output": {
|
|
214
|
+
"type": "object",
|
|
215
|
+
"required": ["since", "diff"],
|
|
216
|
+
"properties": {
|
|
217
|
+
"since": { "type": ["string", "null"] },
|
|
218
|
+
"diff": {
|
|
219
|
+
"type": "object",
|
|
220
|
+
"required": ["state_sections", "decisions_delta", "completed_plans_delta"],
|
|
221
|
+
"properties": {
|
|
222
|
+
"state_sections": { "type": "array", "items": { "type": "string" } },
|
|
223
|
+
"decisions_delta": { "type": "integer" },
|
|
224
|
+
"completed_plans_delta": { "type": "integer" }
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
"gdd_reflections_latest": {
|
|
232
|
+
"type": "object",
|
|
233
|
+
"additionalProperties": false,
|
|
234
|
+
"required": ["input", "output"],
|
|
235
|
+
"properties": {
|
|
236
|
+
"input": {
|
|
237
|
+
"type": "object",
|
|
238
|
+
"additionalProperties": false,
|
|
239
|
+
"properties": {}
|
|
240
|
+
},
|
|
241
|
+
"output": {
|
|
242
|
+
"type": "object",
|
|
243
|
+
"required": ["cycle", "path", "content_excerpt"],
|
|
244
|
+
"properties": {
|
|
245
|
+
"cycle": { "type": ["string", "null"] },
|
|
246
|
+
"path": { "type": ["string", "null"] },
|
|
247
|
+
"content_excerpt": { "type": "string", "maxLength": 4096 }
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
"gdd_learnings_digest": {
|
|
253
|
+
"type": "object",
|
|
254
|
+
"additionalProperties": false,
|
|
255
|
+
"required": ["input", "output"],
|
|
256
|
+
"properties": {
|
|
257
|
+
"input": {
|
|
258
|
+
"type": "object",
|
|
259
|
+
"additionalProperties": false,
|
|
260
|
+
"properties": {
|
|
261
|
+
"cycles": { "type": "integer", "minimum": 1, "maximum": 50 }
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
"output": {
|
|
265
|
+
"type": "object",
|
|
266
|
+
"required": ["digest", "cycles_included"],
|
|
267
|
+
"properties": {
|
|
268
|
+
"digest": { "type": "string", "maxLength": 5120 },
|
|
269
|
+
"cycles_included": { "type": "integer", "minimum": 0 }
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
"gdd_events_tail": {
|
|
275
|
+
"type": "object",
|
|
276
|
+
"additionalProperties": false,
|
|
277
|
+
"required": ["input", "output"],
|
|
278
|
+
"properties": {
|
|
279
|
+
"input": {
|
|
280
|
+
"type": "object",
|
|
281
|
+
"additionalProperties": false,
|
|
282
|
+
"properties": {
|
|
283
|
+
"type": { "type": "string" },
|
|
284
|
+
"limit": { "type": "integer", "minimum": 1, "maximum": 10000 }
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"output": {
|
|
288
|
+
"type": "object",
|
|
289
|
+
"required": ["events"],
|
|
290
|
+
"properties": {
|
|
291
|
+
"events": { "type": "array", "items": { "type": "object" } }
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"gdd_health": {
|
|
297
|
+
"type": "object",
|
|
298
|
+
"additionalProperties": false,
|
|
299
|
+
"required": ["input", "output"],
|
|
300
|
+
"properties": {
|
|
301
|
+
"input": {
|
|
302
|
+
"type": "object",
|
|
303
|
+
"additionalProperties": false,
|
|
304
|
+
"properties": {}
|
|
305
|
+
},
|
|
306
|
+
"output": {
|
|
307
|
+
"type": "object",
|
|
308
|
+
"required": ["checks"],
|
|
309
|
+
"properties": {
|
|
310
|
+
"checks": {
|
|
311
|
+
"type": "array",
|
|
312
|
+
"items": {
|
|
313
|
+
"type": "object",
|
|
314
|
+
"required": ["name", "status", "detail"],
|
|
315
|
+
"properties": {
|
|
316
|
+
"name": { "type": "string" },
|
|
317
|
+
"status": { "type": "string", "enum": ["ok", "warn", "fail"] },
|
|
318
|
+
"detail": { "type": "string" }
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
"definitions": {
|
|
330
|
+
"ToolSchemaEntry": {
|
|
331
|
+
"type": "object",
|
|
332
|
+
"additionalProperties": false,
|
|
333
|
+
"required": ["input", "output"],
|
|
334
|
+
"properties": {
|
|
335
|
+
"input": {
|
|
336
|
+
"type": "object",
|
|
337
|
+
"description": "JSON Schema fragment describing the tool's input parameters."
|
|
338
|
+
},
|
|
339
|
+
"output": {
|
|
340
|
+
"type": "object",
|
|
341
|
+
"description": "JSON Schema fragment describing the tool's response envelope.",
|
|
342
|
+
"required": ["type"],
|
|
343
|
+
"properties": {
|
|
344
|
+
"type": { "type": "string", "enum": ["object"] }
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
"ToolError": {
|
|
350
|
+
"type": "object",
|
|
351
|
+
"additionalProperties": false,
|
|
352
|
+
"required": ["code", "message", "kind"],
|
|
353
|
+
"properties": {
|
|
354
|
+
"code": { "type": "string", "minLength": 1 },
|
|
355
|
+
"message": { "type": "string", "minLength": 1 },
|
|
356
|
+
"kind": {
|
|
357
|
+
"type": "string",
|
|
358
|
+
"enum": ["validation", "state_conflict", "operation_failed", "unknown"]
|
|
359
|
+
},
|
|
360
|
+
"mcp_code": {
|
|
361
|
+
"type": "string",
|
|
362
|
+
"description": "Optional MCP-specific code (e.g. 'directory_not_found') projected by errorResponse() when an underlying NotFoundError carries a `code` property."
|
|
363
|
+
},
|
|
364
|
+
"context": {
|
|
365
|
+
"type": "object",
|
|
366
|
+
"additionalProperties": true
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
"ToolResponseEnvelope": {
|
|
371
|
+
"type": "object",
|
|
372
|
+
"additionalProperties": false,
|
|
373
|
+
"required": ["success"],
|
|
374
|
+
"properties": {
|
|
375
|
+
"success": { "type": "boolean" },
|
|
376
|
+
"data": { "type": "object" },
|
|
377
|
+
"error": { "$ref": "#/definitions/ToolError" }
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
package/scripts/install.cjs
CHANGED
|
@@ -62,6 +62,8 @@ function helpText() {
|
|
|
62
62
|
' --dry-run Print the diff without writing',
|
|
63
63
|
' --config-dir D Override the config directory',
|
|
64
64
|
' --no-peer-prompt Suppress the post-install peer-CLI detection nudge',
|
|
65
|
+
' --register-mcp Register gdd-mcp with detected harnesses (Claude Code, Codex). Opt-in.',
|
|
66
|
+
' --no-register-mcp Skip MCP registration (default behavior; included for symmetry).',
|
|
65
67
|
' --help, -h Show this message',
|
|
66
68
|
'',
|
|
67
69
|
'Environment overrides (per-runtime):',
|
|
@@ -215,6 +217,46 @@ async function main() {
|
|
|
215
217
|
);
|
|
216
218
|
}
|
|
217
219
|
}
|
|
220
|
+
|
|
221
|
+
// Phase 27.7 / Plan 27.7-04 — opt-in MCP registration (D-07).
|
|
222
|
+
// Fires only on real install (not uninstall, not dry-run) when the user
|
|
223
|
+
// passes --register-mcp explicitly. Default OFF; --no-register-mcp is a
|
|
224
|
+
// no-op today (reserved for symmetry / when default flips). Idempotent
|
|
225
|
+
// + graceful absent-CLI fallback handled inside registerMcp.
|
|
226
|
+
if (!uninstall && !dryRun && flags.has('--register-mcp')) {
|
|
227
|
+
try {
|
|
228
|
+
const { registerMcp } = require('./lib/install/mcp-register.cjs');
|
|
229
|
+
for (const harness of ['claude', 'codex']) {
|
|
230
|
+
try {
|
|
231
|
+
const result = registerMcp({ harness });
|
|
232
|
+
if (!result.detected) {
|
|
233
|
+
process.stderr.write('[install] ' + result.notice + '\n');
|
|
234
|
+
} else if (result.idempotent_skip) {
|
|
235
|
+
process.stdout.write(
|
|
236
|
+
'[install] gdd-mcp already registered with ' + harness + ' — skipping.\n',
|
|
237
|
+
);
|
|
238
|
+
} else if (result.applied) {
|
|
239
|
+
process.stdout.write(
|
|
240
|
+
'[install] gdd-mcp registered with ' + harness + '.\n',
|
|
241
|
+
);
|
|
242
|
+
} else {
|
|
243
|
+
process.stderr.write(
|
|
244
|
+
'[install] gdd-mcp registration with ' + harness + ' failed: exit ' + result.exit_code + '\n',
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
} catch (err) {
|
|
248
|
+
process.stderr.write(
|
|
249
|
+
'[install] gdd-mcp registration error (' + harness + '): ' + (err && err.message ? err.message : err) + '\n',
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
} catch (e) {
|
|
254
|
+
// mcp-register lib not present (forward-compat) — silent skip.
|
|
255
|
+
process.stderr.write(
|
|
256
|
+
'[install] mcp-register lib unavailable: ' + (e && e.message ? e.message : e) + '\n',
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
218
260
|
}
|
|
219
261
|
|
|
220
262
|
// v1.27.1 — Plan 27-11: post-install nudge. Detects installed peer CLIs,
|