@hegemonart/get-design-done 1.44.0 → 1.46.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.
@@ -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.44.0"
8
+ "version": "1.46.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.44.0",
15
+ "version": "1.46.0",
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.44.0",
4
+ "version": "1.46.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. 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,97 @@ All notable changes to get-design-done are documented here. Versions follow [sem
4
4
 
5
5
  ---
6
6
 
7
+ ## [1.46.0] - 2026-06-03
8
+
9
+ ### Phase 46 - Skill UX Polish
10
+
11
+ 70+ skills under one `/gdd:` namespace had three friction points at one surface (skill frontmatter): no
12
+ shortcut for power users, 83 frontmatter blocks as 83 places to edit a description, and a description budget
13
+ that was enforced but not gated explicitly. Phase 46 ships a metadata single source of truth, an
14
+ order-preserving frontmatter generator, three pin shortcut skills, and an explicit budget gate. Planned and
15
+ executed via the GSD pipeline (parallel research + three parallel executor subagents). No new runtime dependency,
16
+ no new egress.
17
+
18
+ ### Breaking changes
19
+
20
+ - **A new CI drift gate guards skill frontmatter.** `npm run generate:skill-frontmatter:check` fails if any
21
+ `source/skills/<id>/SKILL.md` frontmatter no longer matches `scripts/lib/manifest/skills.json`. Edit the
22
+ description, argument hint, or tools allow-list in `skills.json`, then run `npm run generate:skill-frontmatter`
23
+ and `npm run build:skills` to regenerate. Hand-editing the managed frontmatter keys directly now fails CI.
24
+ - **The skill description budget is now an explicit blocking gate.** `npm run lint:agentskills` runs in CI and
25
+ fails (R4) on any description over 1024 characters. The cap existed since Phase 28.5; it is now a first-class
26
+ gate rather than an in-process check.
27
+
28
+ ### Added
29
+
30
+ - **`scripts/lib/manifest/skills.json` as the skill-metadata single source of truth.** All 86 skills carry
31
+ `{description, argument_hint?, tools?, user_invocable?, disable_model_invocation?, ...}`; the JSON Schema
32
+ (`scripts/lib/manifest/schemas/skills.schema.json`) documents the enriched fields and is validated by
33
+ `npm run validate:manifest`.
34
+ - **`scripts/generate-skill-frontmatter.cjs`** (maintainer-only): forward mode regenerates each skill's
35
+ frontmatter from `skills.json`; `--extract` reseeds the manifest from current frontmatter; `--check` is the CI
36
+ drift gate. It is **order-preserving** (each skill keeps its own frontmatter key order; only `name` leads and
37
+ non-managed lines like `quality-gate`'s `writes:` block are carried verbatim), so the committed tree is a
38
+ byte-for-byte fixed point and existing frontmatter-snapshot baselines never churn.
39
+ - **`/gdd:pin <skill>`, `/gdd:unpin <skill>`, `/gdd:list-pins`** power-user shortcut skills. `pin` writes
40
+ standalone alias stubs across every installed harness skills dir (so `/audit` resolves alongside
41
+ `/gdd:audit`), each carrying a `<!-- gdd-pinned-skill source=<id> -->` marker; descriptions and tools come
42
+ from the `skills.json` catalogue, never a live frontmatter scrape. `unpin` removes only marked stubs.
43
+ `list-pins` shows pinned aliases per harness with source and timestamp. Backed by `scripts/lib/pin/`
44
+ (harness discovery via `scripts/lib/manifest/harnesses.cjs`, atomic `.tmp`+rename writes, cross-platform).
45
+ - **`reference/skill-metadata.md`** documents the SoT, the generator, the build chain, and the budget.
46
+
47
+ ### Notes
48
+
49
+ - 6-manifest lockstep at **v1.46.0**, `OFF_CADENCE_VERSIONS.add('1.46.0')`, 37 `manifests-version.txt`
50
+ baselines, tarball golden 874 -> 884 (the 3 pin skills land in `skills/` and `dist/claude-code/`, plus 3
51
+ `scripts/lib/pin/*.cjs` and `reference/skill-metadata.md`). The maintainer-only generator is correctly not shipped.
52
+ - Description budget (SC#5): already enforced since Phase 28.5 (`validate-skill-length.cjs` + `lint-agentskills-spec.cjs`,
53
+ both cap at 1024); Phase 46 hardens it into an explicit CI gate and a SoT-layer regression test. No skill needed trimming.
54
+
55
+ ---
56
+
57
+ ## [1.45.0] - 2026-06-02
58
+
59
+ ### Phase 45 - Canonical Domain Reference Index
60
+
61
+ GDD has 38+ reference docs with flat indexing - agents loaded fragments by name and missed the rest, or
62
+ loaded all 5 motion files and wasted tokens. Phase 45 ships 7 navigation entry-points over the existing
63
+ content (it indexes, never re-authors). Planned and executed via the GSD pipeline (parallel research +
64
+ parallel authoring subagents). No new runtime dependency, no new egress.
65
+
66
+ ### Breaking changes
67
+
68
+ - **Two CI gates now guard the domain indexes.** `npm run check:domain-links` fails if any cross-link in
69
+ the 7 entry-points points at a missing file or anchor; `npm run check:no-duplication` fails if an index
70
+ copies large blocks from the fragment it should only link. Contributors editing the 7
71
+ `reference/{typography,color,spatial,motion,interaction,responsive,ux-writing}.md` entries must keep
72
+ links resolving and keep entries link-only.
73
+
74
+ ### Added
75
+
76
+ - **7 domain-index entry-points** at `reference/{typography,color,spatial,motion,interaction,responsive,ux-writing}.md`,
77
+ each <=300 lines: a mission, a "use this when" index of the subordinate fragments, 3-5 rules-of-thumb, and
78
+ cross-domain see-also links. `motion.md` and `typography.md` were transformed in place; the other five are new.
79
+ - **Registry `domain-index` kind**: `reference/registry.schema.json` gains the type; the 7 entries register
80
+ as `domain-index` so skills can query indexes first and drill into detail second.
81
+ - **`scripts/check-domain-cross-links.cjs`** + **`scripts/check-no-duplication.cjs`** (maintainer-only) + the
82
+ two CI steps.
83
+ - **Consumer migration**: `motion-mapper` now loads `motion.md` (the index) and drills into a fragment only
84
+ when classifying against it (an 89% token cut versus loading all four motion fragments up front);
85
+ `design-auditor` and `design-executor` lead their reference reading with the domain indexes. Token-load
86
+ baseline at `test/fixtures/baselines/phase-45/token-load.json`.
87
+
88
+ ### Notes
89
+
90
+ - 6-manifest lockstep at **v1.45.0** + `OFF_CADENCE_VERSIONS.add('1.45.0')` + 37 `manifests-version.txt`
91
+ baselines forward-propagated 1.44.0 -> 1.45.0. Tarball golden 869 -> 874 (+5 new shipped `reference/*.md`;
92
+ the two CI scripts are maintainer-only, not shipped).
93
+ - SC#9 (Phase 41 rule `references[]` migration to canonical entries) is deferred to a follow-up; the rule
94
+ links to `anti-patterns.md` still resolve, so the migration is a nice-to-have rather than a blocker.
95
+
96
+ ---
97
+
7
98
  ## [1.44.0] - 2026-06-02
8
99
 
9
100
  ### Phase 44 - Harness Capability Matrix
package/README.md CHANGED
@@ -249,6 +249,10 @@ All 14 runtimes receive their native artifact layout (`skills/`, `command/`, `ag
249
249
 
250
250
  **Harness capability matrix (v1.44.0).** The full per-harness support matrix (skill discovery, command syntax, MCP, install path, status) lives in **[`HARNESSES.md`](HARNESSES.md)** at the repo root, generated from `scripts/lib/manifest/harnesses.json` (the single source of truth; CI drift-gates it). Each harness carries an honest status (`tested` / `experimental` / `untested`) and a `last_verified` stamp; a freshness gate warns at 60 days and fails at 180 for `tested` harnesses, surfaced in `/gdd:health`. The 14-harness count above is the same SoT the matrix reads, so it cannot drift. The five deep-dive reference files (`reference/codex-tools.md`, `reference/gemini-tools.md`, `reference/peer-cli-capabilities.md`, `reference/peer-protocols.md`, `reference/runtime-models.md`) remain as appendices linked from the matrix. **No new runtime dependency.**
251
251
 
252
+ **Domain reference index (v1.45.0).** The 38+ reference docs are now navigated through 7 canonical entry-points - `reference/{typography,color,spatial,motion,interaction,responsive,ux-writing}.md` - each indexing its subordinate fragments with a "use this when" pointer plus a handful of rules-of-thumb. Design skills load the relevant domain index first and drill into a fragment only when needed (motion-mapper dropped roughly 89% of its up-front reference tokens this way). The indexes link, never copy: `check:domain-links` fails CI on a broken cross-link and `check:no-duplication` fails on large copy-paste. The detailed fragments stay in place as the drill-in targets. **No new runtime dependency.**
253
+
254
+ **Skill UX polish (v1.46.0).** Skill frontmatter now has a single source of truth at `scripts/lib/manifest/skills.json` (description, argument hint, tools allow-list per skill); `scripts/generate-skill-frontmatter.cjs` regenerates each `source/skills/<id>/SKILL.md` from it, and `generate:skill-frontmatter:check` drift-gates the two in CI. The generator is order-preserving, so the committed tree stays a byte-for-byte fixed point and existing snapshots never churn. Power users get `/gdd:pin <skill>`, which writes standalone shortcut aliases (for example `/audit` alongside `/gdd:audit`) across every installed harness dir, each carrying a `gdd-pinned-skill` marker, plus `/gdd:unpin` and `/gdd:list-pins`. The 1024-character description budget (in place since the skill-authoring contract) is now an explicit `lint:agentskills` CI gate. **No new runtime dependency.**
255
+
252
256
  Verify with:
253
257
 
254
258
  ```
package/SKILL.md CHANGED
@@ -2,7 +2,7 @@
2
2
  name: get-design-done
3
3
  short_name: gdd
4
4
  description: "Master design pipeline for Claude Code. 5-stage workflow: Brief → Explore → Plan → Design → Verify. Run 'brief' first in any new project to capture the design problem, then 'explore' to inventory the codebase and interview for context. Invoke without arguments for status and auto-routing."
5
- argument-hint: "[brief|explore|plan|design|verify|handoff|map|next|help|status|style|darkmode|compare|figma-write|graphify|discuss|list-assumptions|progress|health|todo|stats|note|plant-seed|add-backlog|review-backlog|scan|discover|settings|update|reapply-patches|audit|pause|resume|new-cycle|debug|quick|new-project|complete-cycle|fast|do|ship|undo|pr-branch|sketch|sketch-wrap-up|spike|spike-wrap-up|reflect|apply-reflections|analyze-dependencies|extract-learnings|skill-manifest|warm-cache|optimize|cache-manager|watch-authorities|check-update|benchmark|recall|timeline|continue|zoom-out]"
5
+ argument-hint: "[brief|explore|plan|design|verify|handoff|map|next|help|status|style|darkmode|compare|figma-write|graphify|discuss|list-assumptions|progress|health|todo|stats|note|plant-seed|add-backlog|review-backlog|scan|discover|settings|update|reapply-patches|audit|pause|resume|new-cycle|debug|quick|new-project|complete-cycle|fast|do|ship|undo|pr-branch|sketch|sketch-wrap-up|spike|spike-wrap-up|reflect|apply-reflections|analyze-dependencies|extract-learnings|skill-manifest|pin|unpin|list-pins|warm-cache|optimize|cache-manager|watch-authorities|check-update|benchmark|recall|timeline|continue|zoom-out]"
6
6
  user-invocable: true
7
7
  ---
8
8
 
@@ -89,6 +89,9 @@ Each stage produces artifacts in `.design/` inside the current project.
89
89
  | `analyze-dependencies [--slice <name>]` | `get-design-done:analyze-dependencies` | Query the `.design/intel/` store - dependency slices, graph queries, phase-scoped reads |
90
90
  | `extract-learnings [--cycle <slug>]` | `get-design-done:extract-learnings` | Extract decisions, lessons, patterns, and surprises from a completed cycle → `.design/cycles/<slug>/LEARNINGS.md` |
91
91
  | `skill-manifest [--refresh]` | `get-design-done:skill-manifest` | List or refresh the local skill manifest used by the router for discovery |
92
+ | `pin <skill>` | `get-design-done:gdd-pin` | Phase 46 - write standalone shortcut aliases for a gdd skill across every installed harness dir (so `/audit` resolves alongside `/gdd:audit`); metadata comes from the skills.json catalogue |
93
+ | `unpin <skill>` | `get-design-done:gdd-unpin` | Phase 46 - remove pinned aliases for a skill (only files carrying the gdd-pinned-skill marker) |
94
+ | `list-pins` | `get-design-done:gdd-list-pins` | Phase 46 - show pinned aliases per harness with their source skill and last-pinned timestamp |
92
95
  | `quality-gate` | `get-design-done:quality-gate` | Phase 25 - parallel lint/type/test/visual command runner; classifies failures via quality-gate-runner agent |
93
96
  | `turn-closeout` | `get-design-done:turn-closeout` | Phase 25 - Stop-hook mirror skill; finalizes per-turn STATE blocks and emits closeout events |
94
97
  | `bandit-status` | `get-design-done:bandit-status` | Phase 27.5 - read-only diagnostic surface for the bandit posterior; per-(agent, bin, delegate, tier) snapshots (alpha, beta, mean, stddev, count, last-used). Use `/gdd:bandit-reset` to mutate. |
@@ -45,6 +45,7 @@ Minimum expected files:
45
45
  - `.design/DESIGN-CONTEXT.md` - goals, brand direction, design decisions (D-XX)
46
46
  - `.design/DESIGN-PLAN.md` - planned tasks and acceptance criteria
47
47
  - `.design/tasks/` - what was actually done (glob all task files)
48
+ - **Domain-index navigation (Phase 45):** the 7 entry-points `reference/{typography,color,spatial,motion,interaction,responsive,ux-writing}.md` index every fragment below. For a pillar, load the relevant domain index first, then drill into the specific fragments it lists only as the pillar needs them - this is the cheap navigation layer over the detailed fragments.
48
49
  - `reference/audit-scoring.md` - existing 7-category scoring rubric (understand, do not duplicate)
49
50
  - `reference/brand-voice.md` - voice axes, archetype library, and tone-by-context table (use when auditing Pillar 1: Copy)
50
51
  - `reference/gestalt.md` - 8 Gestalt principles with scoring rubrics (use when auditing Pillar 2: Visual Hierarchy)
@@ -34,7 +34,7 @@ The orchestrating stage supplies a `<required_reading>` block in the prompt. Rea
34
34
  - `.design/STATE.md` - pipeline state (decisions, blockers, must-haves)
35
35
  - `.design/DESIGN-PLAN.md` - full task list (your task is identified by task_id)
36
36
  - `.design/DESIGN-CONTEXT.md` - brand decisions, constraints, locked choices
37
- - The reference file(s) relevant to the task type (e.g., `reference/typography.md` for a typography task)
37
+ - The reference file(s) relevant to the task type (e.g., `reference/typography.md` for a typography task). The 7 domain-index entry-points `reference/{typography,color,spatial,motion,interaction,responsive,ux-writing}.md` (Phase 45) are the navigation start: load the index, drill into the fragments it lists only as the task needs them.
38
38
 
39
39
  **Invariant:** read all listed files FIRST, before making any changes.
40
40
 
@@ -24,11 +24,15 @@ You inventory motion and animation patterns. Zero session memory. You do not mod
24
24
  ## Required Reading
25
25
 
26
26
  - `.design/STATE.md`
27
- - `reference/motion.md` (if present)
28
- - `reference/motion-advanced.md` (if present) - advanced patterns: spring physics, scroll-driven, FLIP, View Transitions API, gesture/drag mechanics, clip-path patterns, blur crossfades, Framer Motion hardware-accel gotcha
29
- - `reference/motion-easings.md` (if present) - 12 canonical easing presets; classify each detected easing against this catalog
30
- - `reference/motion-transition-taxonomy.md` (if present) - 8 transition families; classify page/route transitions against this taxonomy
31
- - `reference/motion-spring.md` (if present) - spring presets; classify spring configs against gentle/wobbly/stiff/slow
27
+ - `reference/motion.md` (if present) - **the motion domain-index (Phase 45): start here.** It indexes the
28
+ motion fragments below with a "use this when" pointer for each. Load a specific fragment ONLY when you
29
+ reach the classification step that needs it (drill-in), not all of them up front - this is the bulk of
30
+ the token saving (the index is ~1.7k tokens vs ~15k for all four fragments).
31
+ - Drill-in fragments (load on demand, per the index in `motion.md`):
32
+ - `reference/motion-advanced.md` - advanced patterns: spring physics, scroll-driven, FLIP, View Transitions API, gesture/drag mechanics, clip-path patterns, blur crossfades, Framer Motion hardware-accel gotcha
33
+ - `reference/motion-easings.md` - 12 canonical easing presets; classify each detected easing against this catalog
34
+ - `reference/motion-transition-taxonomy.md` - 8 transition families; classify page/route transitions against this taxonomy
35
+ - `reference/motion-spring.md` - spring presets; classify spring configs against gentle/wobbly/stiff/slow
32
36
  - Any files supplied by the orchestrator
33
37
 
34
38
  ## Scan Strategy
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: gdd-figma-extract
3
- description: Off-context Figma design-system extraction into a compact local digest (DESIGN.md + tokens.json + components.json). Pulls the file via the Figma REST API and digests it without the raw JSON ever entering the model context.
3
+ description: "Off-context Figma design-system extraction into a compact local digest (DESIGN.md + tokens.json + components.json). Pulls the file via the Figma REST API and digests it without the raw JSON ever entering the model context."
4
4
  ---
5
5
 
6
6
  # gdd-figma-extract
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: gdd-graphify
3
- description: Manage the Graphify knowledge graph for the current project. Build, query, status, diff. When available, design-planner and design-integration-checker use the graph for pre-search consultation.
3
+ description: "Manage the Graphify knowledge graph for the current project. Build, query, status, diff. When available, design-planner and design-integration-checker use the graph for pre-search consultation."
4
4
  ---
5
5
 
6
6
  # gdd-graphify
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: gdd-list-pins
3
+ description: "Lists pinned skill aliases per harness with their source skill and pin timestamp. Use when you want to see which gdd skills have been pinned as standalone shortcuts and where."
4
+ tools: Read, Bash
5
+ ---
6
+
7
+ # /gdd:list-pins
8
+
9
+ **Role:** Show every pinned skill alias across the installed harness `skills/` directories. For each one, report the harness it lives in, the on-disk alias directory name, the source skill it points at (from the `<!-- gdd-pinned-skill source=<skill> -->` marker), and when it was pinned (the file modification time).
10
+
11
+ ## Steps
12
+
13
+ 1. **Run the list CLI.** Invoke the shipped script (it takes no arguments). The plugin root resolves via `CLAUDE_PLUGIN_ROOT` (falling back to the current directory when that variable is absent):
14
+
15
+ ```bash
16
+ node "${CLAUDE_PLUGIN_ROOT:-$(pwd)}/scripts/lib/pin/cli.cjs" list
17
+ ```
18
+
19
+ The CLI scans each harness `skills/` directory under the current project, finds the stubs carrying the gdd pin marker, and prints one line per pinned alias in the form `[<config-dir>] <alias> -> source=<skill> (pinned <timestamp>)`.
20
+
21
+ 2. **Report the result.** Relay the CLI output verbatim. Exit codes: 0 means one or more pinned aliases were found, 1 means none were found (nothing has been pinned yet), 2 means an error.
22
+
23
+ ## Do Not
24
+
25
+ - Do not scan the harness directories by hand. The CLI already enforces the marker check, so only genuine gdd pins are listed.
26
+
27
+ ## LIST-PINS COMPLETE
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: gdd-pin
3
+ description: "Writes standalone shortcut aliases for a gdd skill across installed harness skill dirs. Use when you want a skill directly discoverable as its own command in every installed runtime."
4
+ argument-hint: "<skill-name>"
5
+ tools: Read, Bash
6
+ ---
7
+
8
+ # /gdd:pin
9
+
10
+ **Role:** Write a standalone shortcut alias (a small SKILL.md stub) for one gdd skill into every installed harness `skills/` directory, so that skill is directly discoverable as its own command in each runtime (Claude Code, Codex, Cursor, Gemini, and the rest).
11
+
12
+ Each pinned stub starts with the marker line `<!-- gdd-pinned-skill source=<skill> -->`, then carries frontmatter (name, description, argument-hint, tools) pulled from the manifest source of truth, then a one-line body pointing back at the canonical skill. Stubs are written atomically (temp file plus rename), so a failed write never leaves a half-written file.
13
+
14
+ ## Steps
15
+
16
+ 1. **Read the argument.** The skill name to pin comes from `$ARGUMENTS` (for example `darkmode`). If it is empty, ask the user which skill to pin and stop.
17
+
18
+ 2. **Run the pin CLI.** Invoke the shipped script, passing the skill name. The plugin root resolves via `CLAUDE_PLUGIN_ROOT` (falling back to the current directory when that variable is absent):
19
+
20
+ ```bash
21
+ node "${CLAUDE_PLUGIN_ROOT:-$(pwd)}/scripts/lib/pin/cli.cjs" pin "<skill-name>"
22
+ ```
23
+
24
+ The CLI detects every harness `skills/` directory that exists under the current project (`.claude/skills`, `.cursor/skills`, and so on) and writes the stub into each. Pass `--user` to also create the harness directories that do not exist yet:
25
+
26
+ ```bash
27
+ node "${CLAUDE_PLUGIN_ROOT:-$(pwd)}/scripts/lib/pin/cli.cjs" pin "<skill-name>" --user
28
+ ```
29
+
30
+ 3. **Report the result.** The CLI prints one line per harness it wrote to, plus any skips. Relay that summary verbatim. Exit codes: 0 means at least one stub was written, 1 means nothing was written (no harness dirs found, suggest `--user`), 2 means an error (for example an unknown skill name).
31
+
32
+ ## Do Not
33
+
34
+ - Do not hand-write the stub files. Always go through the CLI so the marker, the manifest-sourced frontmatter, and the atomic write stay consistent.
35
+ - Do not pin a skill that is not in the manifest. The CLI rejects unknown skill names with exit code 2; surface that error rather than inventing a stub.
36
+
37
+ ## PIN COMPLETE
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: gdd-unpin
3
+ description: "Removes pinned skill aliases across harness dirs, deleting only stubs that carry the gdd pin marker. Use when you no longer want a pinned shortcut and want hand-written skills left untouched."
4
+ argument-hint: "<skill-name>"
5
+ tools: Read, Bash
6
+ ---
7
+
8
+ # /gdd:unpin
9
+
10
+ **Role:** Remove the pinned shortcut aliases for one gdd skill from every installed harness `skills/` directory. Only stubs that carry the marker line `<!-- gdd-pinned-skill source=<skill> -->` as their first non-empty line are deleted, so a hand-authored or unrelated SKILL.md is never touched.
11
+
12
+ ## Steps
13
+
14
+ 1. **Read the argument.** The skill name to unpin comes from `$ARGUMENTS` (for example `darkmode`). If it is empty, ask the user which skill to unpin and stop.
15
+
16
+ 2. **Run the unpin CLI.** Invoke the shipped script, passing the skill name. The plugin root resolves via `CLAUDE_PLUGIN_ROOT` (falling back to the current directory when that variable is absent):
17
+
18
+ ```bash
19
+ node "${CLAUDE_PLUGIN_ROOT:-$(pwd)}/scripts/lib/pin/cli.cjs" unpin "<skill-name>"
20
+ ```
21
+
22
+ The CLI scans every harness `skills/` directory under the current project, checks each candidate stub for the gdd pin marker, deletes the ones that carry it, and refuses (skips with a warning) any file that does not.
23
+
24
+ 3. **Report the result.** The CLI prints one line per harness it removed a stub from, plus a warning for any file it refused to delete. Relay that summary verbatim. Exit codes: 0 means at least one stub was removed, 1 means nothing was removed (no matching pinned stubs found), 2 means an error.
25
+
26
+ ## Do Not
27
+
28
+ - Do not delete skill files by hand. Always go through the CLI so the marker check protects hand-written skills.
29
+ - Do not force-remove a file the CLI refused. A refusal means the file lacks the gdd pin marker and is not a pinned alias; leave it in place.
30
+
31
+ ## UNPIN COMPLETE
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hegemonart/get-design-done",
3
- "version": "1.44.0",
3
+ "version": "1.46.0",
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",
@@ -50,6 +50,8 @@
50
50
  "build:bundles": "node scripts/build-distribution-bundles.cjs",
51
51
  "build:skills": "node scripts/build-skills.cjs",
52
52
  "build:skills:check": "node scripts/build-skills.cjs --check",
53
+ "generate:skill-frontmatter": "node scripts/generate-skill-frontmatter.cjs",
54
+ "generate:skill-frontmatter:check": "node scripts/generate-skill-frontmatter.cjs --check",
53
55
  "build:sdk": "node scripts/build-sdk-bins.cjs",
54
56
  "prepack": "npm run build:sdk",
55
57
  "postpack": "node scripts/build-sdk-bins.cjs --clean",
@@ -69,6 +71,8 @@
69
71
  "build:harnesses:check": "node scripts/generate-harnesses-md.cjs --check",
70
72
  "check:harness-freshness": "node scripts/check-harness-freshness.cjs",
71
73
  "verify:harness": "node scripts/verify-harness.cjs",
74
+ "check:domain-links": "node scripts/check-domain-cross-links.cjs",
75
+ "check:no-duplication": "node scripts/check-no-duplication.cjs",
72
76
  "sync:rule-catalogue": "node scripts/sync-rule-catalogue.cjs --check",
73
77
  "validate:manifest": "node scripts/validate-manifest.cjs --check",
74
78
  "validate:schemas": "node --experimental-strip-types scripts/validate-schemas.ts",
@@ -0,0 +1,34 @@
1
+ # Color - Palette, Contrast, and Aesthetic Direction
2
+
3
+ Color governs how palettes are constructed, how semantic color roles are assigned, how
4
+ contrast compliance is verified, and how the aesthetic style direction is confirmed.
5
+ Read `color-theory.md` when building a new palette from scratch. Read `palette-catalog.md`
6
+ when adopting an industry-vertical baseline. Read `contrast-advanced.md` for APCA
7
+ thresholds on thin or colored text. Read `style-vocabulary.md` to confirm whether an
8
+ aesthetic style's color requirements fit the product type. Does not cover type sizing for
9
+ legibility (see `typography.md`) or dark-mode implementation steps beyond OKLCH token
10
+ generation (see `color-theory.md`).
11
+
12
+ ## Fragment Index
13
+
14
+ | Fragment | When to load |
15
+ |---|---|
16
+ | [`./color-theory.md`](./color-theory.md) | constructing a palette, choosing a color space, building OKLCH harmonies, animating color, auditing under color-blindness simulation |
17
+ | [`./palette-catalog.md`](./palette-catalog.md) | adopting a pre-built industry-vertical palette as a baseline token set (40+ verticals, WCAG-verified) |
18
+ | [`./contrast-advanced.md`](./contrast-advanced.md) | computing text/UI contrast beyond WCAG 2.1 AA - especially for thin, large, or colored text where WCAG 2.1 misranks |
19
+ | [`./style-vocabulary.md`](./style-vocabulary.md) | confirming a UI aesthetic direction: does the style require dark mode, what are its signature color effects, which product types should avoid it |
20
+
21
+ ## Rules of Thumb
22
+
23
+ 1. Author new palette tokens in OKLCH, not HSL or hex. OKLCH ΔL/ΔC/Δh steps are perceptually uniform - equal numeric jumps produce equal perceived brightness jumps. HSL's lightness channel is not perceptual.
24
+ 2. Never rely on color alone to convey state (error, warning, success). Always pair with an icon, label, or pattern - WCAG 1.4.1.
25
+ 3. For the APCA dual-target pattern: meet WCAG 2.1 AA (4.5:1 for body text) AND check Lc 60 (APCA) for thin weights and colored backgrounds. The two systems can disagree on the same pair.
26
+ 4. Check every palette under deutan (most common), protan, and tritan simulations before shipping. The color-blindness palettes in `color-theory.md` provide pre-vetted swap sets.
27
+
28
+ ## See Also
29
+
30
+ - Typography legibility at small sizes: [`./typography.md`](./typography.md)
31
+ - OKLCH interpolation in color animations: [`./motion.md`](./motion.md)
32
+ - Spatial depth via shadow and elevation: [`./spatial.md`](./spatial.md)
33
+ - Healthcare: critical-value flags not color-only: [`./domains/healthcare-patterns.md`](./domains/healthcare-patterns.md)
34
+ - Finance: gain/loss color rules: [`./domains/finance-patterns.md`](./domains/finance-patterns.md)
@@ -0,0 +1,48 @@
1
+ # Interaction - Domain Index
2
+
3
+ This domain covers how users trigger, navigate, and recover from actions: accessibility requirements, component API quality, form patterns, information architecture, onboarding, and the emotional layer.
4
+
5
+ <!-- Phase 45 domain-index: loads this file instead of individual interaction fragments -->
6
+
7
+ ---
8
+
9
+ ## Mission
10
+
11
+ Interaction is the broadest design domain. It governs every point where a user acts on the interface and the interface responds. Load only the specific fragment for the task at hand using the index below. Does not cover visual placement of interactive elements (see `spatial.md`) or copy for UI elements (see `ux-writing.md`).
12
+
13
+ ---
14
+
15
+ ## Fragment Index
16
+
17
+ | Fragment | When to load |
18
+ |---|---|
19
+ | `./accessibility.md` | WCAG 2.1 AA thresholds, keyboard navigation, focus management, ARIA roles. Required for every interactive surface without exception. |
20
+ | `./component-authoring.md` | Designing or reviewing component APIs: P-01 Minimal API through P-06 Edge Honesty, composability, defaults, animation-as-state |
21
+ | `./form-patterns.md` | Forms are in scope: label position, validation timing, autofill tokens, password UX, CAPTCHA ethics |
22
+ | `./information-architecture.md` | Navigation structure is in scope: hub-and-spoke, faceted nav, card sort benchmarks, wayfinding |
23
+ | `./onboarding-progressive-disclosure.md` | First-run experience is in scope: empty-state patterns, product tours, checklist onboarding, Aha-moment mapping |
24
+ | `./emotional-design.md` | Holistic quality overlay after pillar scoring: Norman visceral/behavioral/reflective three-level lens |
25
+ | `./components/README.md` | Auditing a specific component against benchmark: entry to 38 spec files (accordion through tree) |
26
+
27
+ ---
28
+
29
+ ## Rules of Thumb
30
+
31
+ 1. Accessibility is not a final checklist - build it in from the start. Every interactive component begins with the WAI-ARIA contract from `accessibility.md`, not a retrofit after design is complete.
32
+ 2. P-01 Minimal API from `component-authoring.md`: a component's API surface is its test surface. Every prop that can be removed should be removed.
33
+ 3. Form label position: top-aligned is the default for all but settings-page scan forms. Placeholder-as-label is a WCAG 1.3.5 failure on any form with more than 3 fields.
34
+ 4. Empty-state onboarding outperforms product tours by completion rate for creation tools. Only use a tour when unfamiliar terminology requires context, and cap it at 5 steps.
35
+ 5. The emotional design lens applies after technical and usability requirements are met. Visceral quality (appearance) and behavioral quality (task flow) both need to be solid before reflective quality (brand meaning) is addressed.
36
+
37
+ ---
38
+
39
+ ## Cross-Domain See Also
40
+
41
+ - Gesture animation and animation-as-state: `reference/motion.md`
42
+ - Spatial grouping informs IA mental models: `reference/spatial.md`
43
+ - Touch target sizing differs by platform: `reference/responsive.md`
44
+ - Error message copy and empty-state copy: `reference/ux-writing.md`
45
+ - Healthcare form patterns (PHI isolation): `reference/domains/healthcare-patterns.md`
46
+ - Civic one-thing-per-page forms: `reference/domains/civic-patterns.md`
47
+ - Typography: `reference/typography.md`
48
+ - Color: `reference/color.md`