@skillcap/gdh 0.24.0 → 0.25.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.
Files changed (88) hide show
  1. package/INSTALL-BUNDLE.json +1 -1
  2. package/RELEASE-SPAN-UPDATE-CONTRACTS.json +58 -0
  3. package/node_modules/@gdh/adapters/dist/authoring-hook-render.d.ts.map +1 -1
  4. package/node_modules/@gdh/adapters/dist/authoring-hook-render.js +7 -130
  5. package/node_modules/@gdh/adapters/dist/authoring-hook-render.js.map +1 -1
  6. package/node_modules/@gdh/adapters/dist/claude-statusline-render.d.ts.map +1 -1
  7. package/node_modules/@gdh/adapters/dist/claude-statusline-render.js +4 -27
  8. package/node_modules/@gdh/adapters/dist/claude-statusline-render.js.map +1 -1
  9. package/node_modules/@gdh/adapters/dist/claude-update-hook-render.d.ts.map +1 -1
  10. package/node_modules/@gdh/adapters/dist/claude-update-hook-render.js +5 -39
  11. package/node_modules/@gdh/adapters/dist/claude-update-hook-render.js.map +1 -1
  12. package/node_modules/@gdh/adapters/dist/claude-update-worker-render.d.ts.map +1 -1
  13. package/node_modules/@gdh/adapters/dist/claude-update-worker-render.js +5 -67
  14. package/node_modules/@gdh/adapters/dist/claude-update-worker-render.js.map +1 -1
  15. package/node_modules/@gdh/adapters/dist/index.d.ts +1 -2
  16. package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
  17. package/node_modules/@gdh/adapters/dist/index.js +55 -41
  18. package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
  19. package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts +2 -5
  20. package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts.map +1 -1
  21. package/node_modules/@gdh/adapters/dist/skill-rendering.js +17 -59
  22. package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
  23. package/node_modules/@gdh/adapters/dist/template-assets.d.ts +2 -0
  24. package/node_modules/@gdh/adapters/dist/template-assets.d.ts.map +1 -0
  25. package/node_modules/@gdh/adapters/dist/template-assets.js +26 -0
  26. package/node_modules/@gdh/adapters/dist/template-assets.js.map +1 -0
  27. package/node_modules/@gdh/adapters/dist/templates/authoring-hook.js.tpl +128 -0
  28. package/node_modules/@gdh/adapters/dist/templates/claude-check-update-hook.js.tpl +37 -0
  29. package/node_modules/@gdh/adapters/dist/templates/claude-check-update-worker.js.tpl +65 -0
  30. package/node_modules/@gdh/adapters/dist/templates/claude-statusline.js.tpl +25 -0
  31. package/node_modules/@gdh/adapters/package.json +8 -8
  32. package/node_modules/@gdh/authoring/package.json +2 -2
  33. package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
  34. package/node_modules/@gdh/cli/dist/index.js +5 -4
  35. package/node_modules/@gdh/cli/dist/index.js.map +1 -1
  36. package/node_modules/@gdh/cli/dist/migrate.d.ts.map +1 -1
  37. package/node_modules/@gdh/cli/dist/migrate.js +65 -2
  38. package/node_modules/@gdh/cli/dist/migrate.js.map +1 -1
  39. package/node_modules/@gdh/cli/dist/setup.d.ts +4 -0
  40. package/node_modules/@gdh/cli/dist/setup.d.ts.map +1 -1
  41. package/node_modules/@gdh/cli/dist/setup.js +8 -67
  42. package/node_modules/@gdh/cli/dist/setup.js.map +1 -1
  43. package/node_modules/@gdh/cli/package.json +10 -10
  44. package/node_modules/@gdh/core/dist/index.d.ts +6 -4
  45. package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
  46. package/node_modules/@gdh/core/dist/index.js +5 -4
  47. package/node_modules/@gdh/core/dist/index.js.map +1 -1
  48. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts +14 -14
  49. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js +15 -15
  50. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js.map +1 -1
  51. package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.d.ts +294 -0
  52. package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.d.ts.map +1 -0
  53. package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.js +365 -0
  54. package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.js.map +1 -0
  55. package/node_modules/@gdh/core/package.json +1 -1
  56. package/node_modules/@gdh/docs/dist/agent-contract.d.ts +2 -1
  57. package/node_modules/@gdh/docs/dist/agent-contract.d.ts.map +1 -1
  58. package/node_modules/@gdh/docs/dist/agent-contract.js +3 -2
  59. package/node_modules/@gdh/docs/dist/agent-contract.js.map +1 -1
  60. package/node_modules/@gdh/docs/dist/guidance.d.ts +2 -0
  61. package/node_modules/@gdh/docs/dist/guidance.d.ts.map +1 -1
  62. package/node_modules/@gdh/docs/dist/guidance.js +26 -254
  63. package/node_modules/@gdh/docs/dist/guidance.js.map +1 -1
  64. package/node_modules/@gdh/docs/dist/index.d.ts +1 -1
  65. package/node_modules/@gdh/docs/dist/index.d.ts.map +1 -1
  66. package/node_modules/@gdh/docs/dist/index.js +1 -1
  67. package/node_modules/@gdh/docs/dist/index.js.map +1 -1
  68. package/node_modules/@gdh/docs/dist/query.d.ts.map +1 -1
  69. package/node_modules/@gdh/docs/dist/query.js +4 -5
  70. package/node_modules/@gdh/docs/dist/query.js.map +1 -1
  71. package/node_modules/@gdh/docs/dist/recovery-hints.js +1 -1
  72. package/node_modules/@gdh/docs/dist/recovery-hints.js.map +1 -1
  73. package/node_modules/@gdh/docs/dist/template-assets.d.ts +2 -0
  74. package/node_modules/@gdh/docs/dist/template-assets.d.ts.map +1 -0
  75. package/node_modules/@gdh/docs/dist/template-assets.js +26 -0
  76. package/node_modules/@gdh/docs/dist/template-assets.js.map +1 -0
  77. package/node_modules/@gdh/docs/dist/templates/guidance/authoring-and-validation.md.tpl +111 -0
  78. package/node_modules/@gdh/docs/dist/templates/guidance/gdh-glossary.md.tpl +34 -0
  79. package/node_modules/@gdh/docs/dist/templates/guidance/persistence-semantics.md.tpl +24 -0
  80. package/node_modules/@gdh/docs/dist/templates/guidance/project-migration.md.tpl +19 -0
  81. package/node_modules/@gdh/docs/dist/templates/guidance/project-surfaces.md.tpl +14 -0
  82. package/node_modules/@gdh/docs/package.json +2 -2
  83. package/node_modules/@gdh/mcp/package.json +8 -8
  84. package/node_modules/@gdh/observability/package.json +2 -2
  85. package/node_modules/@gdh/runtime/package.json +2 -2
  86. package/node_modules/@gdh/scan/package.json +3 -3
  87. package/node_modules/@gdh/verify/package.json +7 -7
  88. package/package.json +11 -11
@@ -6,7 +6,7 @@ import path from "node:path";
6
6
  import { promisify } from "node:util";
7
7
  import { readProjectConfig, readWorktreeState, resolveAuthoringStatus, resolveEffectiveTargetPath, resolvePinnedVersion, resolvePinnedVersionOrNull, resolveProjectRoot, } from "@gdh/authoring";
8
8
  import { assertClassRegistered, assertProjectLifecycleCompatibilityInvariant, definePackageBoundary, GDH_AGENT_CONTRACT_VERSION, GDH_CURSOR_RULE_VERSION, GDH_GUIDANCE_INDEX_VERSION, GDH_GUIDANCE_UNIT_VERSION, GDH_PROJECT_CONFIG_VERSION, GDH_RECIPE_SCHEMA_VERSION, GDH_RULES_SCHEMA_VERSION, GDH_SCENARIO_SCHEMA_VERSION, resolveConfiguredGodotEditorBin, resolveCurrentGdhInstall, resolveGdhProductMetadata, } from "@gdh/core";
9
- import { createDefaultGuidanceUnits, createDefaultRulesDocument, getGuidanceStatus, readRulesDocument, renderRulesYaml, resolveGuidanceQuery, resolveRecoveryHints, } from "@gdh/docs";
9
+ import { GDH_GUIDANCE_DIRECTORY_RELATIVE_PATH, GUIDANCE_INDEX_RELATIVE_PATH, createDefaultGuidanceUnits, createDefaultRulesDocument, getGuidanceStatus, readRulesDocument, renderRulesYaml, resolveGuidanceQuery, resolveRecoveryHints, } from "@gdh/docs";
10
10
  import { inspectGuidanceAudit } from "@gdh/observability";
11
11
  import { inspectRuntimeBridgeBroker, inspectRuntimeBridgeSurface, inspectRuntimeKnowledgeSurface, } from "@gdh/runtime";
12
12
  import { readInventoryCacheOrScan } from "@gdh/scan";
@@ -16,8 +16,8 @@ import { CLAUDE_AUTHORING_HOOK_RELATIVE_PATH, CODEX_AUTHORING_HOOK_COMMAND, CODE
16
16
  import { CLAUDE_STATUSLINE_RELATIVE_PATH, renderClaudeUpdateStatusline, } from "./claude-statusline-render.js";
17
17
  import { CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH, CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH, renderClaudeCheckUpdateHook, } from "./claude-update-hook-render.js";
18
18
  import { renderClaudeCheckUpdateWorker } from "./claude-update-worker-render.js";
19
- import { GDH_MANAGED_AGENT_SKILL_MARKER, renderClaudeCheckSkill, renderClaudeMigrateSkill, renderClaudeOnboardSkill, renderClaudePrepareSkill, renderClaudeRunGameSkill, renderClaudeScanSkill, renderClaudeStatusSkill, renderClaudeUpdateSkill, renderCodexCheckSkill, renderCodexMigrateSkill, renderCodexOnboardSkill, renderCodexPrepareSkill, renderCodexRunGameSkill, renderCodexScanSkill, renderCodexStatusSkill, renderCodexUpdateSkill, renderCursorCheckSkill, renderCursorMigrateSkill, renderCursorOnboardSkill, renderCursorPrepareSkill, renderCursorRunGameSkill, renderCursorScanSkill, renderCursorStatusSkill, renderCursorUpdateSkill, } from "./skill-rendering.js";
20
- export { GDH_MANAGED_AGENT_SKILL_MARKER, GDH_SKILL_DEFINITIONS, GDH_SKILL_IDS, renderGdhSkill, renderManagedSkillMarker, renderClaudeCheckSkill, renderClaudeMigrateSkill, renderClaudeOnboardSkill, renderClaudePrepareSkill, renderClaudeRunGameSkill, renderClaudeScanSkill, renderClaudeStatusSkill, renderClaudeUpdateSkill, renderCodexCheckSkill, renderCodexMigrateSkill, renderCodexOnboardSkill, renderCodexPrepareSkill, renderCodexRunGameSkill, renderCodexScanSkill, renderCodexStatusSkill, renderCodexUpdateSkill, renderCursorCheckSkill, renderCursorMigrateSkill, renderCursorOnboardSkill, renderCursorPrepareSkill, renderCursorRunGameSkill, renderCursorScanSkill, renderCursorStatusSkill, renderCursorUpdateSkill, } from "./skill-rendering.js";
19
+ import { GDH_MANAGED_AGENT_SKILL_MARKER, renderClaudeMigrateSkill, renderClaudeOnboardSkill, renderClaudePrepareSkill, renderClaudeRunGameSkill, renderClaudeScanSkill, renderClaudeStatusSkill, renderClaudeUpdateSkill, renderCodexMigrateSkill, renderCodexOnboardSkill, renderCodexPrepareSkill, renderCodexRunGameSkill, renderCodexScanSkill, renderCodexStatusSkill, renderCodexUpdateSkill, renderCursorMigrateSkill, renderCursorOnboardSkill, renderCursorPrepareSkill, renderCursorRunGameSkill, renderCursorScanSkill, renderCursorStatusSkill, renderCursorUpdateSkill, } from "./skill-rendering.js";
20
+ export { GDH_MANAGED_AGENT_SKILL_MARKER, GDH_SKILL_DEFINITIONS, GDH_SKILL_IDS, renderGdhSkill, renderManagedSkillMarker, renderClaudeMigrateSkill, renderClaudeOnboardSkill, renderClaudePrepareSkill, renderClaudeRunGameSkill, renderClaudeScanSkill, renderClaudeStatusSkill, renderClaudeUpdateSkill, renderCodexMigrateSkill, renderCodexOnboardSkill, renderCodexPrepareSkill, renderCodexRunGameSkill, renderCodexScanSkill, renderCodexStatusSkill, renderCodexUpdateSkill, renderCursorMigrateSkill, renderCursorOnboardSkill, renderCursorPrepareSkill, renderCursorRunGameSkill, renderCursorScanSkill, renderCursorStatusSkill, renderCursorUpdateSkill, } from "./skill-rendering.js";
21
21
  // Module-load drift guard. See packages/core/src/migrations/managed-surface-classes.ts.
22
22
  assertClassRegistered("cursor_rule", "deterministic");
23
23
  assertClassRegistered("claude_onboard_command", "deterministic");
@@ -386,8 +386,8 @@ export function renderCursorRule() {
386
386
  "",
387
387
  "This GDH-managed Godot target uses GDH.",
388
388
  "Apply this rule only for files inside this Godot target or when the user explicitly asks for GDH work on this target.",
389
- "Follow the canonical target-local entrypoint in [AGENTS.md](../../AGENTS.md), then load the canonical guidance index at [docs/agent/README.md](../../docs/agent/README.md) before substantive Godot work.",
390
- "For runtime bridge usage, load [docs/agent/authoring-and-validation.md](../../docs/agent/authoring-and-validation.md) and follow its runtime bridge section.",
389
+ "Follow the canonical target-local entrypoint in [AGENTS.md](../../AGENTS.md), then load the canonical guidance index at [.gdh/guidance/README.md](../../.gdh/guidance/README.md) before substantive Godot work.",
390
+ "For runtime bridge usage, load [.gdh/guidance/authoring-and-validation.md](../../.gdh/guidance/authoring-and-validation.md) and follow its runtime bridge section.",
391
391
  "Do not duplicate or override the canonical GDH guidance chain here.",
392
392
  "",
393
393
  ].join("\n");
@@ -407,9 +407,6 @@ export function renderClaudeMigrateCommand(pinnedVersion) {
407
407
  export function renderClaudeUpdateCommand(pinnedVersion) {
408
408
  return renderClaudeUpdateSkill(pinnedVersion);
409
409
  }
410
- export function renderClaudeCheckCommand(pinnedVersion) {
411
- return renderClaudeCheckSkill(pinnedVersion);
412
- }
413
410
  export function renderClaudePrepareCommand(pinnedVersion) {
414
411
  return renderClaudePrepareSkill(pinnedVersion);
415
412
  }
@@ -782,9 +779,6 @@ async function inspectCodexAdapter(targetPath, guidance, projectMcp, pinnedVersi
782
779
  const codexUpdateContent = await fs
783
780
  .readFile(path.join(targetPath, CODEX_UPDATE_SKILL_RELATIVE_PATH), "utf8")
784
781
  .catch(() => null);
785
- const codexCheckContent = await fs
786
- .readFile(path.join(targetPath, CODEX_CHECK_SKILL_RELATIVE_PATH), "utf8")
787
- .catch(() => null);
788
782
  const codexPrepareContent = await fs
789
783
  .readFile(path.join(targetPath, CODEX_PREPARE_SKILL_RELATIVE_PATH), "utf8")
790
784
  .catch(() => null);
@@ -804,7 +798,6 @@ async function inspectCodexAdapter(targetPath, guidance, projectMcp, pinnedVersi
804
798
  const expectedCodexStatusSkill = pinnedVersion === null ? null : renderCodexStatusSkill(pinnedVersion);
805
799
  const expectedCodexMigrateSkill = pinnedVersion === null ? null : renderCodexMigrateSkill(pinnedVersion);
806
800
  const expectedCodexUpdateSkill = pinnedVersion === null ? null : renderCodexUpdateSkill(pinnedVersion);
807
- const expectedCodexCheckSkill = pinnedVersion === null ? null : renderCodexCheckSkill(pinnedVersion);
808
801
  const expectedCodexPrepareSkill = pinnedVersion === null ? null : renderCodexPrepareSkill(pinnedVersion);
809
802
  const expectedCodexRunGameSkill = pinnedVersion === null ? null : renderCodexRunGameSkill(pinnedVersion);
810
803
  const expectedCodexScanSkill = pinnedVersion === null ? null : renderCodexScanSkill(pinnedVersion);
@@ -859,7 +852,6 @@ async function inspectCodexAdapter(targetPath, guidance, projectMcp, pinnedVersi
859
852
  ...inspectCodexSkillSurface(targetPath, CODEX_STATUS_SKILL_RELATIVE_PATH, codexStatusContent, expectedCodexStatusSkill, "gdh-status"),
860
853
  ...inspectCodexSkillSurface(targetPath, CODEX_MIGRATE_SKILL_RELATIVE_PATH, codexMigrateContent, expectedCodexMigrateSkill, "gdh-migrate"),
861
854
  ...inspectCodexSkillSurface(targetPath, CODEX_UPDATE_SKILL_RELATIVE_PATH, codexUpdateContent, expectedCodexUpdateSkill, "gdh-update"),
862
- ...inspectCodexSkillSurface(targetPath, CODEX_CHECK_SKILL_RELATIVE_PATH, codexCheckContent, expectedCodexCheckSkill, "gdh-check"),
863
855
  ...inspectCodexSkillSurface(targetPath, CODEX_PREPARE_SKILL_RELATIVE_PATH, codexPrepareContent, expectedCodexPrepareSkill, "gdh-prepare"),
864
856
  ...inspectCodexSkillSurface(targetPath, CODEX_RUN_GAME_SKILL_RELATIVE_PATH, codexRunGameContent, expectedCodexRunGameSkill, "gdh-run-game"),
865
857
  ...inspectCodexSkillSurface(targetPath, CODEX_SCAN_SKILL_RELATIVE_PATH, codexScanContent, expectedCodexScanSkill, "gdh-scan"),
@@ -911,9 +903,6 @@ async function inspectClaudeAdapter(targetPath, guidance, projectMcp, pinnedVers
911
903
  const claudeUpdateContent = await fs
912
904
  .readFile(path.join(targetPath, CLAUDE_UPDATE_COMMAND_RELATIVE_PATH), "utf8")
913
905
  .catch(() => null);
914
- const claudeCheckContent = await fs
915
- .readFile(path.join(targetPath, CLAUDE_CHECK_COMMAND_RELATIVE_PATH), "utf8")
916
- .catch(() => null);
917
906
  const claudePrepareContent = await fs
918
907
  .readFile(path.join(targetPath, CLAUDE_PREPARE_COMMAND_RELATIVE_PATH), "utf8")
919
908
  .catch(() => null);
@@ -953,7 +942,6 @@ async function inspectClaudeAdapter(targetPath, guidance, projectMcp, pinnedVers
953
942
  const expectedClaudeStatusCommand = pinnedVersion === null ? null : renderClaudeStatusCommand(pinnedVersion);
954
943
  const expectedClaudeMigrateCommand = pinnedVersion === null ? null : renderClaudeMigrateCommand(pinnedVersion);
955
944
  const expectedClaudeUpdateCommand = pinnedVersion === null ? null : renderClaudeUpdateCommand(pinnedVersion);
956
- const expectedClaudeCheckCommand = pinnedVersion === null ? null : renderClaudeCheckCommand(pinnedVersion);
957
945
  const expectedClaudePrepareCommand = pinnedVersion === null ? null : renderClaudePrepareCommand(pinnedVersion);
958
946
  const expectedClaudeRunGameCommand = pinnedVersion === null ? null : renderClaudeRunGameCommand(pinnedVersion);
959
947
  const expectedClaudeScanCommand = pinnedVersion === null ? null : renderClaudeScanCommand(pinnedVersion);
@@ -1003,7 +991,6 @@ async function inspectClaudeAdapter(targetPath, guidance, projectMcp, pinnedVers
1003
991
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_STATUS_COMMAND_RELATIVE_PATH, claudeStatusContent, expectedClaudeStatusCommand, "gdh-status"),
1004
992
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_MIGRATE_COMMAND_RELATIVE_PATH, claudeMigrateContent, expectedClaudeMigrateCommand, "gdh-migrate"),
1005
993
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_UPDATE_COMMAND_RELATIVE_PATH, claudeUpdateContent, expectedClaudeUpdateCommand, "gdh-update"),
1006
- ...inspectClaudeSkillSurface(targetPath, CLAUDE_CHECK_COMMAND_RELATIVE_PATH, claudeCheckContent, expectedClaudeCheckCommand, "gdh-check"),
1007
994
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_PREPARE_COMMAND_RELATIVE_PATH, claudePrepareContent, expectedClaudePrepareCommand, "gdh-prepare"),
1008
995
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_RUN_GAME_COMMAND_RELATIVE_PATH, claudeRunGameContent, expectedClaudeRunGameCommand, "gdh-run-game"),
1009
996
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_SCAN_COMMAND_RELATIVE_PATH, claudeScanContent, expectedClaudeScanCommand, "gdh-scan"),
@@ -1046,9 +1033,6 @@ async function inspectCursorAdapter(targetPath, guidance, projectMcp, pinnedVers
1046
1033
  const cursorUpdateContent = await fs
1047
1034
  .readFile(path.join(targetPath, CURSOR_UPDATE_SKILL_RELATIVE_PATH), "utf8")
1048
1035
  .catch(() => null);
1049
- const cursorCheckContent = await fs
1050
- .readFile(path.join(targetPath, CURSOR_CHECK_SKILL_RELATIVE_PATH), "utf8")
1051
- .catch(() => null);
1052
1036
  const cursorPrepareContent = await fs
1053
1037
  .readFile(path.join(targetPath, CURSOR_PREPARE_SKILL_RELATIVE_PATH), "utf8")
1054
1038
  .catch(() => null);
@@ -1064,7 +1048,6 @@ async function inspectCursorAdapter(targetPath, guidance, projectMcp, pinnedVers
1064
1048
  const expectedCursorStatusSkill = pinnedVersion === null ? null : renderCursorStatusSkill(pinnedVersion);
1065
1049
  const expectedCursorMigrateSkill = pinnedVersion === null ? null : renderCursorMigrateSkill(pinnedVersion);
1066
1050
  const expectedCursorUpdateSkill = pinnedVersion === null ? null : renderCursorUpdateSkill(pinnedVersion);
1067
- const expectedCursorCheckSkill = pinnedVersion === null ? null : renderCursorCheckSkill(pinnedVersion);
1068
1051
  const expectedCursorPrepareSkill = pinnedVersion === null ? null : renderCursorPrepareSkill(pinnedVersion);
1069
1052
  const expectedCursorRunGameSkill = pinnedVersion === null ? null : renderCursorRunGameSkill(pinnedVersion);
1070
1053
  const expectedCursorScanSkill = pinnedVersion === null ? null : renderCursorScanSkill(pinnedVersion);
@@ -1108,7 +1091,6 @@ async function inspectCursorAdapter(targetPath, guidance, projectMcp, pinnedVers
1108
1091
  ...inspectCursorSkillSurface(targetPath, CURSOR_STATUS_SKILL_RELATIVE_PATH, cursorStatusContent, expectedCursorStatusSkill, "gdh-status"),
1109
1092
  ...inspectCursorSkillSurface(targetPath, CURSOR_MIGRATE_SKILL_RELATIVE_PATH, cursorMigrateContent, expectedCursorMigrateSkill, "gdh-migrate"),
1110
1093
  ...inspectCursorSkillSurface(targetPath, CURSOR_UPDATE_SKILL_RELATIVE_PATH, cursorUpdateContent, expectedCursorUpdateSkill, "gdh-update"),
1111
- ...inspectCursorSkillSurface(targetPath, CURSOR_CHECK_SKILL_RELATIVE_PATH, cursorCheckContent, expectedCursorCheckSkill, "gdh-check"),
1112
1094
  ...inspectCursorSkillSurface(targetPath, CURSOR_PREPARE_SKILL_RELATIVE_PATH, cursorPrepareContent, expectedCursorPrepareSkill, "gdh-prepare"),
1113
1095
  ...inspectCursorSkillSurface(targetPath, CURSOR_RUN_GAME_SKILL_RELATIVE_PATH, cursorRunGameContent, expectedCursorRunGameSkill, "gdh-run-game"),
1114
1096
  ...inspectCursorSkillSurface(targetPath, CURSOR_SCAN_SKILL_RELATIVE_PATH, cursorScanContent, expectedCursorScanSkill, "gdh-scan"),
@@ -1219,7 +1201,7 @@ async function planInstallActions(targetPath, adapters, requestedAgents, options
1219
1201
  actions.push(...planCursorInstallActions(targetPath, adapter, options.pinnedVersion));
1220
1202
  }
1221
1203
  }
1222
- actions.push(...planRetiredVerifySurfaceCleanupActions(targetPath));
1204
+ actions.push(...planRetiredManagedSurfaceCleanupActions(targetPath));
1223
1205
  return dedupeInstallActions(actions);
1224
1206
  }
1225
1207
  function planSharedRepoInstallActions(targetPath, projectMcp, agent, effectiveDevRepoPath, integrationRootPath, pinnedVersion) {
@@ -1359,7 +1341,6 @@ function planCodexRepoInstallActions(targetPath, adapter, pinnedVersion, project
1359
1341
  planSkillInstallAction("codex", targetPath, adapter, CODEX_STATUS_SKILL_RELATIVE_PATH, renderCodexStatusSkill, "gdh-status", pinnedVersion),
1360
1342
  planSkillInstallAction("codex", targetPath, adapter, CODEX_MIGRATE_SKILL_RELATIVE_PATH, renderCodexMigrateSkill, "gdh-migrate", pinnedVersion),
1361
1343
  planSkillInstallAction("codex", targetPath, adapter, CODEX_UPDATE_SKILL_RELATIVE_PATH, renderCodexUpdateSkill, "gdh-update", pinnedVersion),
1362
- planSkillInstallAction("codex", targetPath, adapter, CODEX_CHECK_SKILL_RELATIVE_PATH, renderCodexCheckSkill, "gdh-check", pinnedVersion),
1363
1344
  planSkillInstallAction("codex", targetPath, adapter, CODEX_PREPARE_SKILL_RELATIVE_PATH, renderCodexPrepareSkill, "gdh-prepare", pinnedVersion),
1364
1345
  planSkillInstallAction("codex", targetPath, adapter, CODEX_RUN_GAME_SKILL_RELATIVE_PATH, renderCodexRunGameSkill, "gdh-run-game", pinnedVersion),
1365
1346
  planSkillInstallAction("codex", targetPath, adapter, CODEX_SCAN_SKILL_RELATIVE_PATH, renderCodexScanSkill, "gdh-scan", pinnedVersion),
@@ -1415,18 +1396,50 @@ function isManagedLegacyClaudeCommandContent(content, skillName) {
1415
1396
  content.includes("<process>") ||
1416
1397
  content.includes("<rules>")));
1417
1398
  }
1418
- const RETIRED_VERIFY_SURFACE_RELATIVE_PATHS = [
1399
+ const RETIRED_MANAGED_SURFACE_RELATIVE_PATHS = [
1400
+ {
1401
+ agent: "codex",
1402
+ relativePath: ".gdh/guidance/00-gdh-onboarding.md",
1403
+ skillName: "gdh-onboarding-guidance",
1404
+ isManaged: (content) => content.includes('id: "gdh_onboarding"') &&
1405
+ content.includes("GDH Onboarding") &&
1406
+ /^version:\s+\d+$/m.test(content),
1407
+ replacementSummary: "Onboarding procedure now lives in the generated `gdh-onboard` skill and the `.gdh/guidance/README.md` index.",
1408
+ },
1409
+ {
1410
+ agent: "codex",
1411
+ relativePath: ".agents/skills/gdh-check/SKILL.md",
1412
+ skillName: "gdh-check",
1413
+ isManaged: isManagedAgentSkillContent,
1414
+ replacementSummary: "Agents should rely on GDH post-edit hooks, MCP/CLI status, and explicit `gdh authoring check --mode final` evidence instead.",
1415
+ },
1416
+ {
1417
+ agent: "cursor",
1418
+ relativePath: ".cursor/skills/gdh-check/SKILL.md",
1419
+ skillName: "gdh-check",
1420
+ isManaged: isManagedAgentSkillContent,
1421
+ replacementSummary: "Agents should rely on MCP/CLI status and explicit `gdh authoring check --mode final` evidence instead.",
1422
+ },
1423
+ {
1424
+ agent: "claude",
1425
+ relativePath: ".claude/skills/gdh-check/SKILL.md",
1426
+ skillName: "gdh-check",
1427
+ isManaged: isManagedAgentSkillContent,
1428
+ replacementSummary: "Agents should rely on GDH post-edit hooks, MCP/CLI status, and explicit `gdh authoring check --mode final` evidence instead.",
1429
+ },
1419
1430
  {
1420
1431
  agent: "codex",
1421
1432
  relativePath: ".agents/skills/gdh-verify/SKILL.md",
1422
1433
  skillName: "gdh-verify",
1423
1434
  isManaged: isManagedAgentSkillContent,
1435
+ replacementSummary: "Agents should use `gdh authoring check --mode final` for code-validity evidence.",
1424
1436
  },
1425
1437
  {
1426
1438
  agent: "cursor",
1427
1439
  relativePath: ".cursor/skills/gdh-verify/SKILL.md",
1428
1440
  skillName: "gdh-verify",
1429
1441
  isManaged: isManagedAgentSkillContent,
1442
+ replacementSummary: "Agents should use `gdh authoring check --mode final` for code-validity evidence.",
1430
1443
  },
1431
1444
  {
1432
1445
  agent: "claude",
@@ -1434,11 +1447,12 @@ const RETIRED_VERIFY_SURFACE_RELATIVE_PATHS = [
1434
1447
  skillName: "gdh-verify",
1435
1448
  isManaged: (content) => content.includes("name: gdh:verify") &&
1436
1449
  (content.includes("@skillcap/gdh@") || content.includes("gdh verify recommend")),
1450
+ replacementSummary: "Agents should use `gdh authoring check --mode final` for code-validity evidence.",
1437
1451
  },
1438
1452
  ];
1439
- function planRetiredVerifySurfaceCleanupActions(targetPath) {
1453
+ function planRetiredManagedSurfaceCleanupActions(targetPath) {
1440
1454
  const actions = [];
1441
- for (const entry of RETIRED_VERIFY_SURFACE_RELATIVE_PATHS) {
1455
+ for (const entry of RETIRED_MANAGED_SURFACE_RELATIVE_PATHS) {
1442
1456
  const absolutePath = path.join(targetPath, entry.relativePath);
1443
1457
  const content = fsSync.existsSync(absolutePath)
1444
1458
  ? fsSync.readFileSync(absolutePath, "utf8")
@@ -1454,7 +1468,7 @@ function planRetiredVerifySurfaceCleanupActions(targetPath) {
1454
1468
  relativePath: entry.relativePath,
1455
1469
  state: "planned",
1456
1470
  mode: "delete",
1457
- summary: `Remove retired managed \`/${entry.skillName}\` surface. Agents should use \`/gdh-check\` for code-validity evidence.`,
1471
+ summary: `Remove retired managed \`${entry.skillName}\` surface. ${entry.replacementSummary}`,
1458
1472
  }));
1459
1473
  }
1460
1474
  return actions;
@@ -1589,7 +1603,7 @@ function planClaudeInstallActions(targetPath, adapter, pinnedVersion, integratio
1589
1603
  expectedTarget: "AGENTS.md",
1590
1604
  }));
1591
1605
  }
1592
- actions.push(planSkillInstallAction("claude", targetPath, adapter, CLAUDE_ONBOARD_COMMAND_RELATIVE_PATH, renderClaudeOnboardCommand, "gdh-onboard", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_STATUS_COMMAND_RELATIVE_PATH, renderClaudeStatusCommand, "gdh-status", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_MIGRATE_COMMAND_RELATIVE_PATH, renderClaudeMigrateCommand, "gdh-migrate", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_UPDATE_COMMAND_RELATIVE_PATH, renderClaudeUpdateCommand, "gdh-update", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_CHECK_COMMAND_RELATIVE_PATH, renderClaudeCheckCommand, "gdh-check", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_PREPARE_COMMAND_RELATIVE_PATH, renderClaudePrepareCommand, "gdh-prepare", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_RUN_GAME_COMMAND_RELATIVE_PATH, renderClaudeRunGameCommand, "gdh-run-game", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_SCAN_COMMAND_RELATIVE_PATH, renderClaudeScanCommand, "gdh-scan", pinnedVersion),
1606
+ actions.push(planSkillInstallAction("claude", targetPath, adapter, CLAUDE_ONBOARD_COMMAND_RELATIVE_PATH, renderClaudeOnboardCommand, "gdh-onboard", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_STATUS_COMMAND_RELATIVE_PATH, renderClaudeStatusCommand, "gdh-status", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_MIGRATE_COMMAND_RELATIVE_PATH, renderClaudeMigrateCommand, "gdh-migrate", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_UPDATE_COMMAND_RELATIVE_PATH, renderClaudeUpdateCommand, "gdh-update", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_PREPARE_COMMAND_RELATIVE_PATH, renderClaudePrepareCommand, "gdh-prepare", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_RUN_GAME_COMMAND_RELATIVE_PATH, renderClaudeRunGameCommand, "gdh-run-game", pinnedVersion), planSkillInstallAction("claude", targetPath, adapter, CLAUDE_SCAN_COMMAND_RELATIVE_PATH, renderClaudeScanCommand, "gdh-scan", pinnedVersion),
1593
1607
  // UPD-01 managed hook surfaces baked at the pinned version.
1594
1608
  planHookInstallAction("claude", targetPath, adapter, CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH, renderClaudeCheckUpdateHook, "gdh-check-update-hook", pinnedVersion), planHookInstallAction("claude", targetPath, adapter, CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH, renderClaudeCheckUpdateWorker, "gdh-check-update-worker", pinnedVersion),
1595
1609
  // Optional statusline script baked at the pinned version. The .js file is
@@ -1777,7 +1791,7 @@ function planCursorInstallActions(targetPath, adapter, pinnedVersion) {
1777
1791
  content: renderCursorRule(),
1778
1792
  }));
1779
1793
  }
1780
- actions.push(planSkillInstallAction("cursor", targetPath, adapter, CURSOR_ONBOARD_SKILL_RELATIVE_PATH, renderCursorOnboardSkill, "gdh-onboard", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_STATUS_SKILL_RELATIVE_PATH, renderCursorStatusSkill, "gdh-status", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_MIGRATE_SKILL_RELATIVE_PATH, renderCursorMigrateSkill, "gdh-migrate", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_UPDATE_SKILL_RELATIVE_PATH, renderCursorUpdateSkill, "gdh-update", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_CHECK_SKILL_RELATIVE_PATH, renderCursorCheckSkill, "gdh-check", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_PREPARE_SKILL_RELATIVE_PATH, renderCursorPrepareSkill, "gdh-prepare", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_RUN_GAME_SKILL_RELATIVE_PATH, renderCursorRunGameSkill, "gdh-run-game", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_SCAN_SKILL_RELATIVE_PATH, renderCursorScanSkill, "gdh-scan", pinnedVersion));
1794
+ actions.push(planSkillInstallAction("cursor", targetPath, adapter, CURSOR_ONBOARD_SKILL_RELATIVE_PATH, renderCursorOnboardSkill, "gdh-onboard", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_STATUS_SKILL_RELATIVE_PATH, renderCursorStatusSkill, "gdh-status", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_MIGRATE_SKILL_RELATIVE_PATH, renderCursorMigrateSkill, "gdh-migrate", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_UPDATE_SKILL_RELATIVE_PATH, renderCursorUpdateSkill, "gdh-update", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_PREPARE_SKILL_RELATIVE_PATH, renderCursorPrepareSkill, "gdh-prepare", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_RUN_GAME_SKILL_RELATIVE_PATH, renderCursorRunGameSkill, "gdh-run-game", pinnedVersion), planSkillInstallAction("cursor", targetPath, adapter, CURSOR_SCAN_SKILL_RELATIVE_PATH, renderCursorScanSkill, "gdh-scan", pinnedVersion));
1781
1795
  return actions;
1782
1796
  }
1783
1797
  function dedupeInstallActions(actions) {
@@ -2439,7 +2453,7 @@ function inspectAgentContractLifecycleSurface(targetPath, guidanceStatus) {
2439
2453
  });
2440
2454
  }
2441
2455
  async function inspectGuidanceIndexLifecycleSurface(guidanceRootPath, commandTargetPath = guidanceRootPath) {
2442
- const relativePath = "docs/agent/README.md";
2456
+ const relativePath = GUIDANCE_INDEX_RELATIVE_PATH;
2443
2457
  const content = await fs
2444
2458
  .readFile(path.join(guidanceRootPath, relativePath), "utf8")
2445
2459
  .catch(() => null);
@@ -2456,9 +2470,9 @@ async function inspectGuidanceIndexLifecycleSurface(guidanceRootPath, commandTar
2456
2470
  if (content === null) {
2457
2471
  return createLifecycleSurfaceStatus({
2458
2472
  surface: "guidance_index",
2459
- management: "project_owned",
2473
+ management: "managed",
2460
2474
  state: "migration_needed",
2461
- summary: "The canonical guidance index is missing from docs/agent/README.md.",
2475
+ summary: "The canonical guidance index is missing from .gdh/guidance/README.md.",
2462
2476
  reasons: ["guidance_index_missing"],
2463
2477
  probes,
2464
2478
  action: {
@@ -2472,7 +2486,7 @@ async function inspectGuidanceIndexLifecycleSurface(guidanceRootPath, commandTar
2472
2486
  if (detectedVersion === GDH_GUIDANCE_INDEX_VERSION) {
2473
2487
  return createLifecycleSurfaceStatus({
2474
2488
  surface: "guidance_index",
2475
- management: "project_owned",
2489
+ management: "managed",
2476
2490
  state: "compatible",
2477
2491
  summary: "The canonical guidance index matches the current GDH version marker.",
2478
2492
  reasons: [],
@@ -2482,7 +2496,7 @@ async function inspectGuidanceIndexLifecycleSurface(guidanceRootPath, commandTar
2482
2496
  }
2483
2497
  return createLifecycleSurfaceStatus({
2484
2498
  surface: "guidance_index",
2485
- management: "project_owned",
2499
+ management: "managed",
2486
2500
  state: "migration_needed",
2487
2501
  summary: "The canonical guidance index has an outdated version marker and will be regenerated during migration.",
2488
2502
  reasons: ["guidance_index_version_outdated"],
@@ -2513,7 +2527,7 @@ async function inspectGuidanceUnitLifecycleSurface(guidanceRootPath, projectConf
2513
2527
  if (probes.length === 0) {
2514
2528
  return createLifecycleSurfaceStatus({
2515
2529
  surface: "guidance_unit",
2516
- management: "project_owned",
2530
+ management: "managed",
2517
2531
  state: "compatible",
2518
2532
  summary: "No default guidance units are expected until the target is onboarded.",
2519
2533
  reasons: [],
@@ -2524,7 +2538,7 @@ async function inspectGuidanceUnitLifecycleSurface(guidanceRootPath, projectConf
2524
2538
  if (probes.every((probe) => probe.present && probe.detectedVersion === probe.expectedVersion)) {
2525
2539
  return createLifecycleSurfaceStatus({
2526
2540
  surface: "guidance_unit",
2527
- management: "project_owned",
2541
+ management: "managed",
2528
2542
  state: "compatible",
2529
2543
  summary: "The default GDH guidance units match the current version markers.",
2530
2544
  reasons: [],
@@ -2539,9 +2553,9 @@ async function inspectGuidanceUnitLifecycleSurface(guidanceRootPath, projectConf
2539
2553
  if (hasMissing && !hasUnexpectedVersion) {
2540
2554
  return createLifecycleSurfaceStatus({
2541
2555
  surface: "guidance_unit",
2542
- management: "project_owned",
2556
+ management: "managed",
2543
2557
  state: "migration_needed",
2544
- summary: "One or more default GDH guidance units are missing from docs/agent/.",
2558
+ summary: `One or more default GDH guidance units are missing from ${GDH_GUIDANCE_DIRECTORY_RELATIVE_PATH}/.`,
2545
2559
  reasons: ["guidance_unit_missing"],
2546
2560
  probes,
2547
2561
  action: {
@@ -2554,7 +2568,7 @@ async function inspectGuidanceUnitLifecycleSurface(guidanceRootPath, projectConf
2554
2568
  }
2555
2569
  return createLifecycleSurfaceStatus({
2556
2570
  surface: "guidance_unit",
2557
- management: "project_owned",
2571
+ management: "managed",
2558
2572
  state: "migration_needed",
2559
2573
  summary: "One or more guidance units have outdated version markers and will be regenerated during migration.",
2560
2574
  reasons: ["guidance_unit_version_outdated"],