From 50aaf09342f56a564b926741f4922eda53862166 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Mon, 6 Jul 2026 07:28:34 -0400 Subject: [PATCH] fix(#1925): make _isSkillsRuntime gate descriptor-driven so zcode installs skills The legacy _isSkillsRuntime gate was a hardcoded isCodex || isCopilot || ... roster; zcode was absent so the layout-driven skills-install path was skipped (commands + agents installed, but no skills). Adding || isZcode would violate AC#3 (no runtime === 'zcode' branches), so the gate is now derived from the descriptor: a runtime takes the skills path iff its scoped artifactLayout declares a skills kind. Behavior-preserving for all 15 existing runtimes (verified by their install contracts); includes zcode (and any future skills runtime) with zero per-runtime branches. opencode/kilo keep their specialized combined path. Regenerate the golden-install-parity fixtures: the non-zcode runtimes shift only the shared model-catalog.json hash (zcode was added to the catalog); zcode now includes its skills tree. --- bin/install.js | 20 +++-- .../golden-install-parity/antigravity.json | 2 +- .../golden-install-parity/augment.json | 2 +- .../golden-install-parity/claude.json | 2 +- .../fixtures/golden-install-parity/cline.json | 2 +- .../golden-install-parity/codebuddy.json | 2 +- .../fixtures/golden-install-parity/codex.json | 2 +- .../golden-install-parity/copilot.json | 2 +- .../golden-install-parity/cursor.json | 2 +- .../golden-install-parity/hermes.json | 2 +- .../fixtures/golden-install-parity/kilo.json | 2 +- .../fixtures/golden-install-parity/kimi.json | 2 +- .../golden-install-parity/opencode.json | 2 +- .../fixtures/golden-install-parity/qwen.json | 2 +- .../fixtures/golden-install-parity/trae.json | 2 +- .../golden-install-parity/windsurf.json | 2 +- .../fixtures/golden-install-parity/zcode.json | 79 ++++++++++++++++++- 17 files changed, 105 insertions(+), 24 deletions(-) diff --git a/bin/install.js b/bin/install.js index 3a909e450..d2588bd6a 100755 --- a/bin/install.js +++ b/bin/install.js @@ -8594,11 +8594,21 @@ function install(isGlobal, runtime = 'claude', options = {}) { // applyRuntimeContentRewritesInPlace (called inside installRuntimeArtifacts) // handles per-runtime path + branding rewrites, including Qwen/Hermes. // Cline global: emit skills to ~/.cline/skills/ (Cline >= v3.48.0 — #782). - const _isSkillsRuntime = isCodex || isCopilot || isAntigravity || isCursor || isWindsurf || - isAugment || isTrae || isCodebuddy || isQwen || isHermes || - isKimi || - (runtime === 'claude' && isGlobal) || - (isCline && isGlobal); + // Descriptor-driven (ADR-1016 / ADR-1239): a runtime takes the layout-driven + // skills-install path when its scoped artifactLayout declares a skills kind. + // This replaces the prior hardcoded `isCodex || isCopilot || ...` roster so a + // newly-added runtime with a skills layout installs without a per-runtime + // branch — the add-a-host tax ADR-1239 Phase B retires. opencode/kilo keep + // their specialized combined commands+skills path (copyFlattenedCommands + + // installOpencodeFamilySkills) below. + const _isSkillsRuntime = (() => { + if (isOpencode || isKilo) return false; + const cap = _capabilityRegistry && _capabilityRegistry.runtimes && _capabilityRegistry.runtimes[runtime]; + const layout = cap && cap.runtime && cap.runtime.artifactLayout; + if (!layout) return false; + const scopeLayout = isGlobal ? layout.global : layout.local; + return Array.isArray(scopeLayout) && scopeLayout.some((k) => k && k.kind === 'skills'); + })(); if (_isSkillsRuntime) { // Layout-driven install for skills-based runtimes (full and minimal modes) diff --git a/tests/fixtures/golden-install-parity/antigravity.json b/tests/fixtures/golden-install-parity/antigravity.json index a3010ad28..dfa090c3c 100644 --- a/tests/fixtures/golden-install-parity/antigravity.json +++ b/tests/fixtures/golden-install-parity/antigravity.json @@ -42,7 +42,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "8bc541aabc2e143c", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/augment.json b/tests/fixtures/golden-install-parity/augment.json index a1f17b717..b8c79276f 100644 --- a/tests/fixtures/golden-install-parity/augment.json +++ b/tests/fixtures/golden-install-parity/augment.json @@ -112,7 +112,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/claude.json b/tests/fixtures/golden-install-parity/claude.json index ca5de7ff1..23232b818 100644 --- a/tests/fixtures/golden-install-parity/claude.json +++ b/tests/fixtures/golden-install-parity/claude.json @@ -41,7 +41,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/cline.json b/tests/fixtures/golden-install-parity/cline.json index bb39ffde8..b4bee850c 100644 --- a/tests/fixtures/golden-install-parity/cline.json +++ b/tests/fixtures/golden-install-parity/cline.json @@ -45,7 +45,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/codebuddy.json b/tests/fixtures/golden-install-parity/codebuddy.json index 965a083e0..5151d0025 100644 --- a/tests/fixtures/golden-install-parity/codebuddy.json +++ b/tests/fixtures/golden-install-parity/codebuddy.json @@ -112,7 +112,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/codex.json b/tests/fixtures/golden-install-parity/codex.json index f1bc28c60..5dc6e7282 100644 --- a/tests/fixtures/golden-install-parity/codex.json +++ b/tests/fixtures/golden-install-parity/codex.json @@ -77,7 +77,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/copilot.json b/tests/fixtures/golden-install-parity/copilot.json index 5565c2ab6..e547fb848 100644 --- a/tests/fixtures/golden-install-parity/copilot.json +++ b/tests/fixtures/golden-install-parity/copilot.json @@ -43,7 +43,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "10226e9512dd44bf", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/cursor.json b/tests/fixtures/golden-install-parity/cursor.json index 01e84ef0e..e09f7dd30 100644 --- a/tests/fixtures/golden-install-parity/cursor.json +++ b/tests/fixtures/golden-install-parity/cursor.json @@ -112,7 +112,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/hermes.json b/tests/fixtures/golden-install-parity/hermes.json index 2d0d8be59..38fb62f79 100644 --- a/tests/fixtures/golden-install-parity/hermes.json +++ b/tests/fixtures/golden-install-parity/hermes.json @@ -42,7 +42,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/kilo.json b/tests/fixtures/golden-install-parity/kilo.json index 9d80d3939..e3a6692da 100644 --- a/tests/fixtures/golden-install-parity/kilo.json +++ b/tests/fixtures/golden-install-parity/kilo.json @@ -112,7 +112,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/kimi.json b/tests/fixtures/golden-install-parity/kimi.json index a57b5f545..2e019bbd2 100644 --- a/tests/fixtures/golden-install-parity/kimi.json +++ b/tests/fixtures/golden-install-parity/kimi.json @@ -78,7 +78,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/opencode.json b/tests/fixtures/golden-install-parity/opencode.json index 0b80baba8..4e83858d7 100644 --- a/tests/fixtures/golden-install-parity/opencode.json +++ b/tests/fixtures/golden-install-parity/opencode.json @@ -112,7 +112,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/qwen.json b/tests/fixtures/golden-install-parity/qwen.json index 7f7d47367..84c168619 100644 --- a/tests/fixtures/golden-install-parity/qwen.json +++ b/tests/fixtures/golden-install-parity/qwen.json @@ -42,7 +42,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/trae.json b/tests/fixtures/golden-install-parity/trae.json index 9f94c2697..837e7cf47 100644 --- a/tests/fixtures/golden-install-parity/trae.json +++ b/tests/fixtures/golden-install-parity/trae.json @@ -42,7 +42,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/windsurf.json b/tests/fixtures/golden-install-parity/windsurf.json index c53cf5a10..c242d071f 100644 --- a/tests/fixtures/golden-install-parity/windsurf.json +++ b/tests/fixtures/golden-install-parity/windsurf.json @@ -42,7 +42,7 @@ "gsd-core/bin/gsd_run": "62d9b647ede212e6", "gsd-core/bin/shared/config-defaults.manifest.json": "517e6a7c1e9f4f16", "gsd-core/bin/shared/config-schema.manifest.json": "c55b99e5d82f69fb", - "gsd-core/bin/shared/model-catalog.json": "ca909d55f7966269", + "gsd-core/bin/shared/model-catalog.json": "e554a288fcbc1b2e", "gsd-core/bin/shared/runtime-aliases.manifest.json": "2df2c5ac1957911a", "gsd-core/bin/verify-reapply-patches.cjs": "caec5dbce11e3904", "gsd-core/contexts/dev.md": "dcb0de9dce33cf41", diff --git a/tests/fixtures/golden-install-parity/zcode.json b/tests/fixtures/golden-install-parity/zcode.json index 6bee6e698..2f09d5f90 100644 --- a/tests/fixtures/golden-install-parity/zcode.json +++ b/tests/fixtures/golden-install-parity/zcode.json @@ -376,19 +376,19 @@ "gsd-core/workflows/verify-phase.md": "98a995046bdb6c3c", "gsd-core/workflows/verify-work.md": "34e980a6950cd83c", "hooks/gsd-check-update-worker.js": "6660bcf03ed849a0", - "hooks/gsd-check-update.js": "25cde66a12d6b886", + "hooks/gsd-check-update.js": "901ea3bd75fd5bbc", "hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-context-monitor.js": "9f969c172d1614a9", "hooks/gsd-cursor-post-tool.js": "9168e0a09de1972a", "hooks/gsd-cursor-session-start.js": "9b2e6f4f0c405375", - "hooks/gsd-ensure-canonical-path.js": "b76d6b152cd6a023", + "hooks/gsd-ensure-canonical-path.js": "84e6b584da9805c4", "hooks/gsd-graphify-update.sh": "e4c6e14fe6ad64ff", "hooks/gsd-phase-boundary.sh": "32739d5fbe0d0a1c", "hooks/gsd-prompt-guard.js": "a749b8cb2c5248de", "hooks/gsd-read-guard.js": "9e423cd03e2d1b16", "hooks/gsd-read-injection-scanner.js": "7d0344c1ef6dd0ab", "hooks/gsd-session-state.sh": "e54379ba86bf1b6d", - "hooks/gsd-statusline.js": "464965a73a138ef9", + "hooks/gsd-statusline.js": "c1056568acf6dfd2", "hooks/gsd-update-banner.js": "55143a25f978f301", "hooks/gsd-validate-commit.sh": "bf5dd61d33cb3a38", "hooks/gsd-workflow-guard.js": "91ae24a15d2bca6f", @@ -409,5 +409,76 @@ "scripts/gen-capability-registry.cjs": "c52201ff4d1c2cd7", "scripts/gen-loop-host-contract.cjs": "c7f15237234811a0", "scripts/lib/allowlist-ratchet.cjs": "ffaceaac3efc2660", - "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7" + "scripts/lib/cli-exit.cjs": "612d0c372c75b7e7", + "skills/gsd-ns-context/SKILL.md": "654c71262d91650c", + "skills/gsd-ns-context/skills/docs-update/SKILL.md": "8fb602920a333d73", + "skills/gsd-ns-context/skills/extract-learnings/SKILL.md": "6de7eeaaf4939e5d", + "skills/gsd-ns-context/skills/graphify/SKILL.md": "d54c2b44e8059299", + "skills/gsd-ns-context/skills/map-codebase/SKILL.md": "ce7f2382e4086b68", + "skills/gsd-ns-context/skills/mempalace-capture/SKILL.md": "40a31ad049374297", + "skills/gsd-ns-context/skills/mempalace-recall/SKILL.md": "c3f412d5a64f3921", + "skills/gsd-ns-ideate/SKILL.md": "4a0d2691054b23e5", + "skills/gsd-ns-ideate/skills/capture/SKILL.md": "c848255c134a860f", + "skills/gsd-ns-ideate/skills/explore/SKILL.md": "168a5b8d52127624", + "skills/gsd-ns-ideate/skills/sketch/SKILL.md": "11ef7d436090ae09", + "skills/gsd-ns-ideate/skills/spec-phase/SKILL.md": "052cfb21eb0ee3d4", + "skills/gsd-ns-ideate/skills/spike/SKILL.md": "3b5e6ea4bf8d81cc", + "skills/gsd-ns-manage/SKILL.md": "b6a1480f20b33bfa", + "skills/gsd-ns-manage/skills/cleanup/SKILL.md": "7579f085459dc393", + "skills/gsd-ns-manage/skills/config/SKILL.md": "2ae550cacdfc08a4", + "skills/gsd-ns-manage/skills/health/SKILL.md": "f766339e1de08cb6", + "skills/gsd-ns-manage/skills/help/SKILL.md": "93b961bb1f1b322b", + "skills/gsd-ns-manage/skills/inbox/SKILL.md": "0b5f4ce8ee98ac3c", + "skills/gsd-ns-manage/skills/manager/SKILL.md": "2f6228d719073d19", + "skills/gsd-ns-manage/skills/pause-work/SKILL.md": "c5454473ffeba05e", + "skills/gsd-ns-manage/skills/pr-branch/SKILL.md": "2976577caa538486", + "skills/gsd-ns-manage/skills/resume-work/SKILL.md": "b0d8628cc6d578ab", + "skills/gsd-ns-manage/skills/settings/SKILL.md": "8fcd8b04bb607ca7", + "skills/gsd-ns-manage/skills/ship/SKILL.md": "eb23c16b4893b035", + "skills/gsd-ns-manage/skills/stats/SKILL.md": "af60a0fed275a90b", + "skills/gsd-ns-manage/skills/surface/SKILL.md": "9bc5790f601615cf", + "skills/gsd-ns-manage/skills/thread/SKILL.md": "59e0ea339e45a105", + "skills/gsd-ns-manage/skills/undo/SKILL.md": "22d4462c987b7b66", + "skills/gsd-ns-manage/skills/update/SKILL.md": "01ca0efbdb8f6efa", + "skills/gsd-ns-manage/skills/workspace/SKILL.md": "c6c07625a373e6a3", + "skills/gsd-ns-manage/skills/workstreams/SKILL.md": "f4e54cb9b1ca0442", + "skills/gsd-ns-project/SKILL.md": "a58b3170197968be", + "skills/gsd-ns-project/skills/audit-milestone/SKILL.md": "a6eb7edcfd23c7e4", + "skills/gsd-ns-project/skills/complete-milestone/SKILL.md": "d7f6202222d1b26e", + "skills/gsd-ns-project/skills/import/SKILL.md": "0a734021e0b86481", + "skills/gsd-ns-project/skills/ingest-docs/SKILL.md": "0fadb4f9c69aa61d", + "skills/gsd-ns-project/skills/milestone-summary/SKILL.md": "c77f6c8ce7c57db9", + "skills/gsd-ns-project/skills/new-milestone/SKILL.md": "3aad804c48d77474", + "skills/gsd-ns-project/skills/new-project/SKILL.md": "e3cfd1fdbc2c3406", + "skills/gsd-ns-project/skills/profile-user/SKILL.md": "f57ad5e5c5899100", + "skills/gsd-ns-project/skills/review-backlog/SKILL.md": "1708aab6cb919223", + "skills/gsd-ns-review/SKILL.md": "7badceb8627d8154", + "skills/gsd-ns-review/skills/audit-fix/SKILL.md": "e005e777f3b607ef", + "skills/gsd-ns-review/skills/audit-uat/SKILL.md": "cb5f445d66e7f9c4", + "skills/gsd-ns-review/skills/code-review/SKILL.md": "8d3bc8093ac9a676", + "skills/gsd-ns-review/skills/debug/SKILL.md": "1b2864b06019554b", + "skills/gsd-ns-review/skills/eval-review/SKILL.md": "00b35a36a2f16f2f", + "skills/gsd-ns-review/skills/forensics/SKILL.md": "0169426d0dcda2db", + "skills/gsd-ns-review/skills/review/SKILL.md": "d80db8762bec97de", + "skills/gsd-ns-review/skills/secure-phase/SKILL.md": "56ee4246050ba8b5", + "skills/gsd-ns-review/skills/ui-phase/SKILL.md": "fabc841fb1f364cc", + "skills/gsd-ns-review/skills/ui-review/SKILL.md": "444a4366f19899c3", + "skills/gsd-ns-review/skills/validate-phase/SKILL.md": "9e1c7909c089ee46", + "skills/gsd-ns-workflow/SKILL.md": "5a65f9fb93a71cec", + "skills/gsd-ns-workflow/skills/add-tests/SKILL.md": "303c01b7dd9c7614", + "skills/gsd-ns-workflow/skills/ai-integration-phase/SKILL.md": "d30c04aeb1d09bb7", + "skills/gsd-ns-workflow/skills/autonomous/SKILL.md": "f1c614fed8f4d0a5", + "skills/gsd-ns-workflow/skills/discuss-phase/SKILL.md": "997ae1063e8c3703", + "skills/gsd-ns-workflow/skills/execute-phase/SKILL.md": "b2627b774725a381", + "skills/gsd-ns-workflow/skills/fast/SKILL.md": "0dc6926e16dcc1cb", + "skills/gsd-ns-workflow/skills/mvp-phase/SKILL.md": "3455ea7562a447a2", + "skills/gsd-ns-workflow/skills/next/SKILL.md": "63659cd48a0276f9", + "skills/gsd-ns-workflow/skills/phase/SKILL.md": "b377b03d13db8573", + "skills/gsd-ns-workflow/skills/plan-phase/SKILL.md": "a453c632234623d1", + "skills/gsd-ns-workflow/skills/plan-review-convergence/SKILL.md": "ded70bf0252c6307", + "skills/gsd-ns-workflow/skills/progress/SKILL.md": "fb24eab4a0e5f6a3", + "skills/gsd-ns-workflow/skills/quick/SKILL.md": "48629fef2b9ac5b0", + "skills/gsd-ns-workflow/skills/spec-phase/SKILL.md": "052cfb21eb0ee3d4", + "skills/gsd-ns-workflow/skills/ultraplan-phase/SKILL.md": "032c3412fddd02b4", + "skills/gsd-ns-workflow/skills/verify-work/SKILL.md": "a0609b334f4cb9aa" }