@hegemonart/get-design-done 1.41.0 → 1.41.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.
@@ -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.41.0"
8
+ "version": "1.41.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.41.0",
15
+ "version": "1.41.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.41.0",
4
+ "version": "1.41.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,38 @@ All notable changes to get-design-done are documented here. Versions follow [sem
4
4
 
5
5
  ---
6
6
 
7
+ ## [1.41.5] - 2026-06-02
8
+
9
+ ### Phase 41.5 — SoT Manifest Consolidation
10
+
11
+ A 2026-05-16 audit found Phase 42/44/45/47 each scoping its own "single source of truth" in a different
12
+ corner — four formats, four schemas, four CI drift gates. 41.5 lands **one** root, **one** schema
13
+ directory, **one** validator, **before** those phases plan their work. **No new runtime dependency, no
14
+ new egress.**
15
+
16
+ ### Added
17
+
18
+ - **`scripts/lib/manifest/`** — the cross-phase SoT root:
19
+ - `loader.cjs` — the one shared reader; a missing/unparseable file returns an empty fallback + a
20
+ one-line warning (never throws), with a file-mtime cache. Dep-free.
21
+ - `index.cjs` — typed readers `readHarnesses()` / `readSkills()` / `readProseDenylist()`.
22
+ - `harnesses.json` (+ `.cjs` view) — the 14 canonical runtimes (Phase 42 adds build config, Phase 45
23
+ the capability matrix, as views of this one record). `skills.json` — the 83 live skill names (Phase
24
+ 47 enriches). `prose-denylist.json` — the AI-tell denylist + em-dash/`--` markers (Phase 43/44 consume).
25
+ - `schemas/*.schema.json` — one JSON Schema per manifest. `README.md` — the contract + migration note.
26
+ - **`scripts/validate-manifest.cjs`** (`npm run validate:manifest`) — the single ajv CI gate that
27
+ replaces the four per-file drift gates 43/44/45/47 would each have shipped.
28
+
29
+ ### Notes
30
+
31
+ - **No new runtime dependency** — the shipped `loader.cjs`/`index.cjs` are dep-free; `validate-manifest.cjs`
32
+ uses the already-present `ajv` and is maintainer-only (not shipped, like `lint-changelog.cjs`).
33
+ - 6-manifest lockstep at **v1.41.5** + `OFF_CADENCE_VERSIONS.add('1.41.5')` + the 36 live-pinned
34
+ `manifests-version.txt` baselines forward-propagated 1.41.0 → 1.41.5.
35
+ - Inventory: tarball golden 747 → 757 (+10: `scripts/lib/manifest/**`). No skill/agent/registry deltas.
36
+
37
+ ---
38
+
7
39
  ## [1.41.0] - 2026-06-02
8
40
 
9
41
  ### Phase 41 — Deterministic Anti-Pattern CLI (`gdd-detect`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hegemonart/get-design-done",
3
- "version": "1.41.0",
3
+ "version": "1.41.5",
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",
@@ -60,6 +60,7 @@
60
60
  "lint:changelog": "node scripts/lint-changelog.cjs",
61
61
  "lint:design": "node bin/gdd-detect test/fixtures/detect/negative --json",
62
62
  "sync:rule-catalogue": "node scripts/sync-rule-catalogue.cjs --check",
63
+ "validate:manifest": "node scripts/validate-manifest.cjs --check",
63
64
  "validate:schemas": "node --experimental-strip-types scripts/validate-schemas.ts",
64
65
  "validate:frontmatter": "node --experimental-strip-types scripts/validate-frontmatter.ts agents/",
65
66
  "detect:stale-refs": "node scripts/detect-stale-refs.cjs",
@@ -0,0 +1,46 @@
1
+ # `scripts/lib/manifest/` — Cross-Phase Source-of-Truth Root
2
+
3
+ Phase 41.5. This directory is the **single source-of-truth root** for roadmap-wide cross-phase
4
+ metadata. Before it existed, Phase 42 / 44 / 45 / 47 each scoped its own "single source" in a different
5
+ corner (`scripts/lib/build/`, `scripts/lib/prose/`, `reference/harness-matrix.json`,
6
+ `scripts/skill-metadata.json`) — four formats, four schemas, four CI drift gates. This is the one root,
7
+ one schema directory, one validator.
8
+
9
+ ## Files
10
+
11
+ | File | Owner / writer | Read by |
12
+ |---|---|---|
13
+ | `harnesses.json` (+ `harnesses.cjs` view) | Phase 41.5 seed → **42** (build config) + **45** (capability matrix) extend it | the build pipeline, the harness matrix, the multi-harness compiler |
14
+ | `skills.json` | Phase 41.5 seed (live `skills/` names) → **47** enriches (aliases, pin, description budget) | skill-UX tooling |
15
+ | `prose-denylist.json` | Phase 41.5 seed → **43** + **44** | `scripts/lint-prose.cjs` (the editorial gate) |
16
+ | `schemas/*.schema.json` | one JSON Schema per manifest file | `scripts/validate-manifest.cjs` |
17
+ | `loader.cjs` | Phase 41.5 | every consumer |
18
+ | `index.cjs` | Phase 41.5 | every consumer (`readHarnesses` / `readSkills` / `readProseDenylist`) |
19
+
20
+ ## Contract
21
+
22
+ - **One canonical record, multiple views.** `harnesses.json` is the canonical harness record; Phase 42's
23
+ build config and Phase 45's capability matrix are *views* of it, not separate files. Consumers extend
24
+ the records with new fields (every schema sets `additionalProperties: true`) — they do not fork the file.
25
+ - **Read through `index.cjs`.** Never `require` a manifest JSON directly. `readHarnesses()` /
26
+ `readSkills()` / `readProseDenylist()` return a well-shaped object even when the file is absent.
27
+ - **Graceful out-of-order shipping.** `loader.cjs` returns an empty manifest + a one-line warning when a
28
+ file is missing or unparseable — a phase that ships before its data exists never crashes. (D-03)
29
+ - **mtime cache.** A manifest is re-read only when its file mtime changes. (D-02)
30
+ - **One CI gate.** `scripts/validate-manifest.cjs` (`npm run validate:manifest`) ajv-validates every
31
+ manifest against its schema. This is the only drift gate — 43/44/45/47 do NOT add their own.
32
+
33
+ ## Migration note (for Phase 42 / 43 / 44 / 45 / 47 plan-phases)
34
+
35
+ When you plan your phase, **target this root from day one**. Do not create
36
+ `scripts/lib/build/harness-configs.cjs`, `scripts/lib/prose/denylist.json`,
37
+ `reference/harness-matrix.json`, or `scripts/skill-metadata.json` as new SoTs — extend
38
+ `manifest/harnesses.json` / `manifest/prose-denylist.json` / `manifest/skills.json` instead, read them
39
+ via `index.cjs`, and let `validate-manifest.cjs` be your drift gate. (Phase 46's SoT-consolidation
40
+ paragraph delegates here.)
41
+
42
+ ## Boundaries
43
+
44
+ This root holds **structured cross-phase data** (JSON + typed readers). It does not unify with the
45
+ `reference/*.md` prose registries (a different consumer pattern), and it does not auto-generate
46
+ frontmatter (Phase 46 territory).
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ // Phase 41.5 — typed re-export of harnesses.json (the .cjs view per D-01).
3
+ module.exports = require('./harnesses.json').harnesses;
@@ -0,0 +1,91 @@
1
+ {
2
+ "schema_version": 1,
3
+ "generated_at": null,
4
+ "note": "Canonical cross-phase harness record (Phase 41.5 SoT root). Phase 42 adds build/compile config; Phase 45 adds the capability matrix — both as views of this one record. Model tiers live in reference/runtime-models.md.",
5
+ "harnesses": [
6
+ {
7
+ "id": "claude",
8
+ "name": "Claude Code",
9
+ "config_dir": ".claude",
10
+ "runtime_models_ref": "reference/runtime-models.md#claude"
11
+ },
12
+ {
13
+ "id": "codex",
14
+ "name": "OpenAI Codex CLI",
15
+ "config_dir": ".codex",
16
+ "runtime_models_ref": "reference/runtime-models.md#codex"
17
+ },
18
+ {
19
+ "id": "gemini",
20
+ "name": "Gemini CLI",
21
+ "config_dir": ".gemini",
22
+ "runtime_models_ref": "reference/runtime-models.md#gemini"
23
+ },
24
+ {
25
+ "id": "qwen",
26
+ "name": "Qwen Code",
27
+ "config_dir": ".qwen",
28
+ "runtime_models_ref": "reference/runtime-models.md#qwen"
29
+ },
30
+ {
31
+ "id": "kilo",
32
+ "name": "Kilo Code",
33
+ "config_dir": ".kilo",
34
+ "runtime_models_ref": "reference/runtime-models.md#kilo"
35
+ },
36
+ {
37
+ "id": "copilot",
38
+ "name": "GitHub Copilot CLI",
39
+ "config_dir": ".copilot",
40
+ "runtime_models_ref": "reference/runtime-models.md#copilot"
41
+ },
42
+ {
43
+ "id": "cursor",
44
+ "name": "Cursor",
45
+ "config_dir": ".cursor",
46
+ "runtime_models_ref": "reference/runtime-models.md#cursor"
47
+ },
48
+ {
49
+ "id": "windsurf",
50
+ "name": "Windsurf (Cascade)",
51
+ "config_dir": ".windsurf",
52
+ "runtime_models_ref": "reference/runtime-models.md#windsurf"
53
+ },
54
+ {
55
+ "id": "antigravity",
56
+ "name": "Antigravity",
57
+ "config_dir": ".antigravity",
58
+ "runtime_models_ref": "reference/runtime-models.md#antigravity"
59
+ },
60
+ {
61
+ "id": "augment",
62
+ "name": "Augment",
63
+ "config_dir": ".augment",
64
+ "runtime_models_ref": "reference/runtime-models.md#augment"
65
+ },
66
+ {
67
+ "id": "trae",
68
+ "name": "Trae",
69
+ "config_dir": ".trae",
70
+ "runtime_models_ref": "reference/runtime-models.md#trae"
71
+ },
72
+ {
73
+ "id": "codebuddy",
74
+ "name": "CodeBuddy",
75
+ "config_dir": ".codebuddy",
76
+ "runtime_models_ref": "reference/runtime-models.md#codebuddy"
77
+ },
78
+ {
79
+ "id": "cline",
80
+ "name": "Cline",
81
+ "config_dir": ".cline",
82
+ "runtime_models_ref": "reference/runtime-models.md#cline"
83
+ },
84
+ {
85
+ "id": "opencode",
86
+ "name": "OpenCode",
87
+ "config_dir": ".opencode",
88
+ "runtime_models_ref": "reference/runtime-models.md#opencode"
89
+ }
90
+ ]
91
+ }
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+ // Phase 41.5 — manifest/index.cjs — typed readers over the shared loader. Every cross-phase consumer
3
+ // imports from here: `const { readHarnesses } = require('scripts/lib/manifest')`. Each reader returns
4
+ // a well-shaped object even when the underlying file is absent (graceful empty fallback per loader D-03).
5
+
6
+ const loader = require('./loader.cjs');
7
+
8
+ /** @returns {{ schema_version: number, generated_at: string|null, harnesses: object[] }} */
9
+ function readHarnesses(opts) {
10
+ return loader.load('harnesses', { ...opts, fallback: { schema_version: 1, generated_at: null, harnesses: [] } });
11
+ }
12
+
13
+ /** @returns {{ schema_version: number, skills: object[] }} */
14
+ function readSkills(opts) {
15
+ return loader.load('skills', { ...opts, fallback: { schema_version: 1, skills: [] } });
16
+ }
17
+
18
+ /** @returns {{ schema_version: number, tells: object[] }} */
19
+ function readProseDenylist(opts) {
20
+ return loader.load('prose-denylist', { ...opts, fallback: { schema_version: 1, tells: [] } });
21
+ }
22
+
23
+ module.exports = {
24
+ readHarnesses, readSkills, readProseDenylist,
25
+ reset: loader.reset, MANIFEST_DIR: loader.MANIFEST_DIR,
26
+ };
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+ // Phase 41.5 — manifest/loader.cjs — the ONE shared reader for every cross-phase SoT manifest under
3
+ // scripts/lib/manifest/. Phases 42 (harnesses), 43/44 (prose denylist), 45 (capability matrix), and
4
+ // 47 (skill metadata) all read through here instead of hand-rolling their own loader + drift gate.
5
+ //
6
+ // Graceful (D-03): a missing or unparseable manifest returns the caller's `fallback` (an empty
7
+ // manifest) plus a one-line stderr warning — NEVER a throw — so a phase shipping before its data file
8
+ // exists does not crash. File-mtime cache (D-02): a file is re-read only when its mtime changes.
9
+ //
10
+ // Dep-free (no ajv here — validation lives in scripts/validate-manifest.cjs, the CI gate). No require
11
+ // of any third-party module.
12
+
13
+ const fs = require('node:fs');
14
+ const path = require('node:path');
15
+
16
+ const MANIFEST_DIR = __dirname;
17
+ const _cache = new Map(); // absPath -> { mtimeMs, data }
18
+
19
+ /** Clear the in-process cache (tests). */
20
+ function reset() { _cache.clear(); }
21
+
22
+ /**
23
+ * Load a manifest JSON by base name (no extension).
24
+ * @param {string} name e.g. 'harnesses' | 'skills' | 'prose-denylist'
25
+ * @param {{ dir?: string, fallback?: any, quiet?: boolean }} [opts]
26
+ * @returns the parsed manifest, or `fallback` (default {}) on missing/parse-error.
27
+ */
28
+ function load(name, opts) {
29
+ const o = opts || {};
30
+ const dir = o.dir || MANIFEST_DIR;
31
+ const fallback = Object.prototype.hasOwnProperty.call(o, 'fallback') ? o.fallback : {};
32
+ const abs = path.join(dir, `${name}.json`);
33
+
34
+ let stat;
35
+ try { stat = fs.statSync(abs); } catch {
36
+ if (!o.quiet) process.stderr.write(`manifest: ${name}.json not found — using empty fallback (a consumer phase may not have shipped its data yet)\n`);
37
+ return fallback;
38
+ }
39
+ const cached = _cache.get(abs);
40
+ if (cached && cached.mtimeMs === stat.mtimeMs) return cached.data;
41
+ try {
42
+ const data = JSON.parse(fs.readFileSync(abs, 'utf8'));
43
+ _cache.set(abs, { mtimeMs: stat.mtimeMs, data });
44
+ return data;
45
+ } catch (e) {
46
+ if (!o.quiet) process.stderr.write(`manifest: ${name}.json parse error (${e.message}) — using empty fallback\n`);
47
+ return fallback;
48
+ }
49
+ }
50
+
51
+ module.exports = { load, reset, MANIFEST_DIR };
@@ -0,0 +1,126 @@
1
+ {
2
+ "schema_version": 1,
3
+ "note": "AI-tell denylist SoT (Phase 41.5 seed). Phase 43 (lint-prose.cjs) + Phase 44 read this. Case-insensitive phrase match in the project's OWN user-facing prose only.",
4
+ "tells": [
5
+ {
6
+ "pattern": "load-bearing",
7
+ "kind": "phrase",
8
+ "note": "AI-prose tell (training-set monoculture)."
9
+ },
10
+ {
11
+ "pattern": "highest-leverage",
12
+ "kind": "phrase",
13
+ "note": "AI-prose tell (training-set monoculture)."
14
+ },
15
+ {
16
+ "pattern": "delve",
17
+ "kind": "phrase",
18
+ "note": "AI-prose tell (training-set monoculture)."
19
+ },
20
+ {
21
+ "pattern": "delves",
22
+ "kind": "phrase",
23
+ "note": "AI-prose tell (training-set monoculture)."
24
+ },
25
+ {
26
+ "pattern": "seamless",
27
+ "kind": "phrase",
28
+ "note": "AI-prose tell (training-set monoculture)."
29
+ },
30
+ {
31
+ "pattern": "seamlessly",
32
+ "kind": "phrase",
33
+ "note": "AI-prose tell (training-set monoculture)."
34
+ },
35
+ {
36
+ "pattern": "robust",
37
+ "kind": "phrase",
38
+ "note": "AI-prose tell (training-set monoculture)."
39
+ },
40
+ {
41
+ "pattern": "elevate",
42
+ "kind": "phrase",
43
+ "note": "AI-prose tell (training-set monoculture)."
44
+ },
45
+ {
46
+ "pattern": "empower",
47
+ "kind": "phrase",
48
+ "note": "AI-prose tell (training-set monoculture)."
49
+ },
50
+ {
51
+ "pattern": "underscore",
52
+ "kind": "phrase",
53
+ "note": "AI-prose tell (training-set monoculture)."
54
+ },
55
+ {
56
+ "pattern": "underscores",
57
+ "kind": "phrase",
58
+ "note": "AI-prose tell (training-set monoculture)."
59
+ },
60
+ {
61
+ "pattern": "in today's",
62
+ "kind": "phrase",
63
+ "note": "AI-prose tell (training-set monoculture)."
64
+ },
65
+ {
66
+ "pattern": "let's dive in",
67
+ "kind": "phrase",
68
+ "note": "AI-prose tell (training-set monoculture)."
69
+ },
70
+ {
71
+ "pattern": "moreover",
72
+ "kind": "phrase",
73
+ "note": "AI-prose tell (training-set monoculture)."
74
+ },
75
+ {
76
+ "pattern": "furthermore",
77
+ "kind": "phrase",
78
+ "note": "AI-prose tell (training-set monoculture)."
79
+ },
80
+ {
81
+ "pattern": "tapestry",
82
+ "kind": "phrase",
83
+ "note": "AI-prose tell (training-set monoculture)."
84
+ },
85
+ {
86
+ "pattern": "a testament to",
87
+ "kind": "phrase",
88
+ "note": "AI-prose tell (training-set monoculture)."
89
+ },
90
+ {
91
+ "pattern": "navigating the",
92
+ "kind": "phrase",
93
+ "note": "AI-prose tell (training-set monoculture)."
94
+ },
95
+ {
96
+ "pattern": "in the realm of",
97
+ "kind": "phrase",
98
+ "note": "AI-prose tell (training-set monoculture)."
99
+ },
100
+ {
101
+ "pattern": "unlock the power",
102
+ "kind": "phrase",
103
+ "note": "AI-prose tell (training-set monoculture)."
104
+ },
105
+ {
106
+ "pattern": "game-changer",
107
+ "kind": "phrase",
108
+ "note": "AI-prose tell (training-set monoculture)."
109
+ },
110
+ {
111
+ "pattern": "leverage",
112
+ "kind": "phrase",
113
+ "note": "AI-prose tell (training-set monoculture)."
114
+ },
115
+ {
116
+ "pattern": "\\u2014",
117
+ "kind": "token",
118
+ "note": "Em dash — banned in the project's own user-facing prose (Phase 43)."
119
+ },
120
+ {
121
+ "pattern": "--",
122
+ "kind": "token",
123
+ "note": "Double hyphen (often an em-dash surrogate)."
124
+ }
125
+ ]
126
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "urn:gdd:manifest:harnesses",
4
+ "title": "manifest/harnesses.json",
5
+ "type": "object",
6
+ "required": [
7
+ "schema_version",
8
+ "harnesses"
9
+ ],
10
+ "additionalProperties": true,
11
+ "properties": {
12
+ "schema_version": {
13
+ "type": "integer",
14
+ "minimum": 1
15
+ },
16
+ "harnesses": {
17
+ "type": "array",
18
+ "items": {
19
+ "type": "object",
20
+ "additionalProperties": true,
21
+ "required": [
22
+ "id",
23
+ "name"
24
+ ],
25
+ "properties": {
26
+ "id": {
27
+ "type": "string",
28
+ "pattern": "^[a-z0-9-]+$"
29
+ },
30
+ "name": {
31
+ "type": "string",
32
+ "minLength": 1
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "urn:gdd:manifest:prose-denylist",
4
+ "title": "manifest/prose-denylist.json",
5
+ "type": "object",
6
+ "required": [
7
+ "schema_version",
8
+ "tells"
9
+ ],
10
+ "additionalProperties": true,
11
+ "properties": {
12
+ "schema_version": {
13
+ "type": "integer",
14
+ "minimum": 1
15
+ },
16
+ "tells": {
17
+ "type": "array",
18
+ "items": {
19
+ "type": "object",
20
+ "additionalProperties": true,
21
+ "required": [
22
+ "pattern",
23
+ "kind"
24
+ ],
25
+ "properties": {
26
+ "pattern": {
27
+ "type": "string",
28
+ "minLength": 1
29
+ },
30
+ "kind": {
31
+ "type": "string",
32
+ "enum": [
33
+ "phrase",
34
+ "token"
35
+ ]
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "urn:gdd:manifest:skills",
4
+ "title": "manifest/skills.json",
5
+ "type": "object",
6
+ "required": [
7
+ "schema_version",
8
+ "skills"
9
+ ],
10
+ "additionalProperties": true,
11
+ "properties": {
12
+ "schema_version": {
13
+ "type": "integer",
14
+ "minimum": 1
15
+ },
16
+ "skills": {
17
+ "type": "array",
18
+ "items": {
19
+ "type": "object",
20
+ "additionalProperties": true,
21
+ "required": [
22
+ "name"
23
+ ],
24
+ "properties": {
25
+ "name": {
26
+ "type": "string",
27
+ "minLength": 1
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,255 @@
1
+ {
2
+ "schema_version": 1,
3
+ "note": "Skill metadata SoT (Phase 41.5 seed = the live skills/ dir names). Phase 47 enriches each record (aliases, pin, description budget).",
4
+ "skills": [
5
+ {
6
+ "name": "add-backlog"
7
+ },
8
+ {
9
+ "name": "analyze-dependencies"
10
+ },
11
+ {
12
+ "name": "apply-reflections"
13
+ },
14
+ {
15
+ "name": "audit"
16
+ },
17
+ {
18
+ "name": "bandit-status"
19
+ },
20
+ {
21
+ "name": "benchmark"
22
+ },
23
+ {
24
+ "name": "bootstrap-ds"
25
+ },
26
+ {
27
+ "name": "brief"
28
+ },
29
+ {
30
+ "name": "budget"
31
+ },
32
+ {
33
+ "name": "cache-manager"
34
+ },
35
+ {
36
+ "name": "check-update"
37
+ },
38
+ {
39
+ "name": "compare"
40
+ },
41
+ {
42
+ "name": "complete-cycle"
43
+ },
44
+ {
45
+ "name": "connections"
46
+ },
47
+ {
48
+ "name": "continue"
49
+ },
50
+ {
51
+ "name": "darkmode"
52
+ },
53
+ {
54
+ "name": "debug"
55
+ },
56
+ {
57
+ "name": "design"
58
+ },
59
+ {
60
+ "name": "discover"
61
+ },
62
+ {
63
+ "name": "discuss"
64
+ },
65
+ {
66
+ "name": "do"
67
+ },
68
+ {
69
+ "name": "explore"
70
+ },
71
+ {
72
+ "name": "export"
73
+ },
74
+ {
75
+ "name": "extract-learnings"
76
+ },
77
+ {
78
+ "name": "fast"
79
+ },
80
+ {
81
+ "name": "figma-extract"
82
+ },
83
+ {
84
+ "name": "figma-write"
85
+ },
86
+ {
87
+ "name": "graphify"
88
+ },
89
+ {
90
+ "name": "health"
91
+ },
92
+ {
93
+ "name": "help"
94
+ },
95
+ {
96
+ "name": "list-assumptions"
97
+ },
98
+ {
99
+ "name": "locale"
100
+ },
101
+ {
102
+ "name": "map"
103
+ },
104
+ {
105
+ "name": "migrate"
106
+ },
107
+ {
108
+ "name": "new-cycle"
109
+ },
110
+ {
111
+ "name": "new-project"
112
+ },
113
+ {
114
+ "name": "next"
115
+ },
116
+ {
117
+ "name": "note"
118
+ },
119
+ {
120
+ "name": "openrouter-status"
121
+ },
122
+ {
123
+ "name": "optimize"
124
+ },
125
+ {
126
+ "name": "pause"
127
+ },
128
+ {
129
+ "name": "peer-cli-add"
130
+ },
131
+ {
132
+ "name": "peer-cli-customize"
133
+ },
134
+ {
135
+ "name": "peers"
136
+ },
137
+ {
138
+ "name": "plan"
139
+ },
140
+ {
141
+ "name": "plant-seed"
142
+ },
143
+ {
144
+ "name": "pr-branch"
145
+ },
146
+ {
147
+ "name": "progress"
148
+ },
149
+ {
150
+ "name": "quality-gate"
151
+ },
152
+ {
153
+ "name": "quick"
154
+ },
155
+ {
156
+ "name": "reapply-patches"
157
+ },
158
+ {
159
+ "name": "recall"
160
+ },
161
+ {
162
+ "name": "reflect"
163
+ },
164
+ {
165
+ "name": "report-issue"
166
+ },
167
+ {
168
+ "name": "resume"
169
+ },
170
+ {
171
+ "name": "review-backlog"
172
+ },
173
+ {
174
+ "name": "review-decisions"
175
+ },
176
+ {
177
+ "name": "roi"
178
+ },
179
+ {
180
+ "name": "rollout-status"
181
+ },
182
+ {
183
+ "name": "router"
184
+ },
185
+ {
186
+ "name": "scan"
187
+ },
188
+ {
189
+ "name": "settings"
190
+ },
191
+ {
192
+ "name": "ship"
193
+ },
194
+ {
195
+ "name": "sketch"
196
+ },
197
+ {
198
+ "name": "sketch-wrap-up"
199
+ },
200
+ {
201
+ "name": "skill-manifest"
202
+ },
203
+ {
204
+ "name": "spike"
205
+ },
206
+ {
207
+ "name": "spike-wrap-up"
208
+ },
209
+ {
210
+ "name": "start"
211
+ },
212
+ {
213
+ "name": "stats"
214
+ },
215
+ {
216
+ "name": "style"
217
+ },
218
+ {
219
+ "name": "synthesize"
220
+ },
221
+ {
222
+ "name": "timeline"
223
+ },
224
+ {
225
+ "name": "todo"
226
+ },
227
+ {
228
+ "name": "turn-closeout"
229
+ },
230
+ {
231
+ "name": "undo"
232
+ },
233
+ {
234
+ "name": "unlock-decision"
235
+ },
236
+ {
237
+ "name": "update"
238
+ },
239
+ {
240
+ "name": "using-gdd"
241
+ },
242
+ {
243
+ "name": "verify"
244
+ },
245
+ {
246
+ "name": "warm-cache"
247
+ },
248
+ {
249
+ "name": "watch-authorities"
250
+ },
251
+ {
252
+ "name": "zoom-out"
253
+ }
254
+ ]
255
+ }