@skillcap/gdh 0.21.0 → 0.22.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 (39) hide show
  1. package/INSTALL-BUNDLE.json +1 -1
  2. package/README.md +1 -1
  3. package/RELEASE-SPAN-UPDATE-CONTRACTS.json +134 -0
  4. package/node_modules/@gdh/adapters/dist/authoring-hook-render.d.ts.map +1 -1
  5. package/node_modules/@gdh/adapters/dist/authoring-hook-render.js +0 -49
  6. package/node_modules/@gdh/adapters/dist/authoring-hook-render.js.map +1 -1
  7. package/node_modules/@gdh/adapters/dist/claude-settings-patch.d.ts.map +1 -1
  8. package/node_modules/@gdh/adapters/dist/claude-settings-patch.js +16 -14
  9. package/node_modules/@gdh/adapters/dist/claude-settings-patch.js.map +1 -1
  10. package/node_modules/@gdh/adapters/dist/index.d.ts +6 -1
  11. package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
  12. package/node_modules/@gdh/adapters/dist/index.js +32 -13
  13. package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
  14. package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts +4 -1
  15. package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts.map +1 -1
  16. package/node_modules/@gdh/adapters/dist/skill-rendering.js +52 -1
  17. package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
  18. package/node_modules/@gdh/adapters/package.json +8 -8
  19. package/node_modules/@gdh/authoring/package.json +2 -2
  20. package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
  21. package/node_modules/@gdh/cli/dist/index.js +11 -7
  22. package/node_modules/@gdh/cli/dist/index.js.map +1 -1
  23. package/node_modules/@gdh/cli/dist/setup.js +1 -1
  24. package/node_modules/@gdh/cli/package.json +10 -10
  25. package/node_modules/@gdh/core/dist/index.d.ts +3 -3
  26. package/node_modules/@gdh/core/dist/index.js +3 -3
  27. package/node_modules/@gdh/core/package.json +1 -1
  28. package/node_modules/@gdh/docs/dist/guidance.js +3 -3
  29. package/node_modules/@gdh/docs/dist/guidance.js.map +1 -1
  30. package/node_modules/@gdh/docs/package.json +2 -2
  31. package/node_modules/@gdh/mcp/dist/index.d.ts.map +1 -1
  32. package/node_modules/@gdh/mcp/dist/index.js +24 -18
  33. package/node_modules/@gdh/mcp/dist/index.js.map +1 -1
  34. package/node_modules/@gdh/mcp/package.json +8 -8
  35. package/node_modules/@gdh/observability/package.json +2 -2
  36. package/node_modules/@gdh/runtime/package.json +2 -2
  37. package/node_modules/@gdh/scan/package.json +3 -3
  38. package/node_modules/@gdh/verify/package.json +7 -7
  39. package/package.json +12 -12
@@ -15,8 +15,8 @@ import { CLAUDE_AUTHORING_HOOK_RELATIVE_PATH, CODEX_AUTHORING_HOOK_COMMAND, CODE
15
15
  import { CLAUDE_STATUSLINE_RELATIVE_PATH, renderClaudeUpdateStatusline, } from "./claude-statusline-render.js";
16
16
  import { CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH, CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH, renderClaudeCheckUpdateHook, } from "./claude-update-hook-render.js";
17
17
  import { renderClaudeCheckUpdateWorker } from "./claude-update-worker-render.js";
18
- import { GDH_MANAGED_AGENT_SKILL_MARKER, renderClaudeCheckSkill, renderClaudeMigrateSkill, renderClaudeOnboardSkill, renderClaudePrepareSkill, renderClaudeScanSkill, renderClaudeStatusSkill, renderClaudeUpdateSkill, renderCodexCheckSkill, renderCodexMigrateSkill, renderCodexOnboardSkill, renderCodexPrepareSkill, renderCodexScanSkill, renderCodexStatusSkill, renderCodexUpdateSkill, renderCursorCheckSkill, renderCursorMigrateSkill, renderCursorOnboardSkill, renderCursorPrepareSkill, renderCursorScanSkill, renderCursorStatusSkill, renderCursorUpdateSkill, } from "./skill-rendering.js";
19
- export { GDH_MANAGED_AGENT_SKILL_MARKER, GDH_SKILL_DEFINITIONS, GDH_SKILL_IDS, renderGdhSkill, renderManagedSkillMarker, renderClaudeCheckSkill, renderClaudeMigrateSkill, renderClaudeOnboardSkill, renderClaudePrepareSkill, renderClaudeScanSkill, renderClaudeStatusSkill, renderClaudeUpdateSkill, renderCodexCheckSkill, renderCodexMigrateSkill, renderCodexOnboardSkill, renderCodexPrepareSkill, renderCodexScanSkill, renderCodexStatusSkill, renderCodexUpdateSkill, renderCursorCheckSkill, renderCursorMigrateSkill, renderCursorOnboardSkill, renderCursorPrepareSkill, renderCursorScanSkill, renderCursorStatusSkill, renderCursorUpdateSkill, } from "./skill-rendering.js";
18
+ 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";
19
+ 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";
20
20
  export const adaptersPackage = definePackageBoundary({
21
21
  name: "@gdh/adapters",
22
22
  layer: "integration",
@@ -46,14 +46,17 @@ export const CLAUDE_STATUS_SKILL_RELATIVE_PATH = ".claude/skills/gdh-status/SKIL
46
46
  export const CLAUDE_MIGRATE_SKILL_RELATIVE_PATH = ".claude/skills/gdh-migrate/SKILL.md";
47
47
  export const CLAUDE_CHECK_SKILL_RELATIVE_PATH = ".claude/skills/gdh-check/SKILL.md";
48
48
  export const CLAUDE_PREPARE_SKILL_RELATIVE_PATH = ".claude/skills/gdh-prepare/SKILL.md";
49
+ export const CLAUDE_RUN_GAME_SKILL_RELATIVE_PATH = ".claude/skills/gdh-run-game/SKILL.md";
49
50
  export const CODEX_STATUS_SKILL_RELATIVE_PATH = ".agents/skills/gdh-status/SKILL.md";
50
51
  export const CODEX_MIGRATE_SKILL_RELATIVE_PATH = ".agents/skills/gdh-migrate/SKILL.md";
51
52
  export const CODEX_CHECK_SKILL_RELATIVE_PATH = ".agents/skills/gdh-check/SKILL.md";
52
53
  export const CODEX_PREPARE_SKILL_RELATIVE_PATH = ".agents/skills/gdh-prepare/SKILL.md";
54
+ export const CODEX_RUN_GAME_SKILL_RELATIVE_PATH = ".agents/skills/gdh-run-game/SKILL.md";
53
55
  export const CURSOR_STATUS_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-status/SKILL.md";
54
56
  export const CURSOR_MIGRATE_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-migrate/SKILL.md";
55
57
  export const CURSOR_CHECK_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-check/SKILL.md";
56
58
  export const CURSOR_PREPARE_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-prepare/SKILL.md";
59
+ export const CURSOR_RUN_GAME_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-run-game/SKILL.md";
57
60
  // Phase 13 SELF-01: /gdh-update skill surface path constants. The rendered
58
61
  // bodies shell out to `npx -y @skillcap/gdh@latest self-update` (LITERAL
59
62
  // @latest, not the pinned version — D-10) so the NEW CLI performs the update,
@@ -70,6 +73,7 @@ export const CLAUDE_STATUS_COMMAND_RELATIVE_PATH = CLAUDE_STATUS_SKILL_RELATIVE_
70
73
  export const CLAUDE_MIGRATE_COMMAND_RELATIVE_PATH = CLAUDE_MIGRATE_SKILL_RELATIVE_PATH;
71
74
  export const CLAUDE_CHECK_COMMAND_RELATIVE_PATH = CLAUDE_CHECK_SKILL_RELATIVE_PATH;
72
75
  export const CLAUDE_PREPARE_COMMAND_RELATIVE_PATH = CLAUDE_PREPARE_SKILL_RELATIVE_PATH;
76
+ export const CLAUDE_RUN_GAME_COMMAND_RELATIVE_PATH = CLAUDE_RUN_GAME_SKILL_RELATIVE_PATH;
73
77
  export const CLAUDE_UPDATE_COMMAND_RELATIVE_PATH = CLAUDE_UPDATE_SKILL_RELATIVE_PATH;
74
78
  export const CLAUDE_SCAN_COMMAND_RELATIVE_PATH = CLAUDE_SCAN_SKILL_RELATIVE_PATH;
75
79
  const LEGACY_CLAUDE_SKILL_COMMAND_RELATIVE_PATHS = [
@@ -79,6 +83,7 @@ const LEGACY_CLAUDE_SKILL_COMMAND_RELATIVE_PATHS = [
79
83
  [".claude/commands/gdh/update.md", "gdh-update"],
80
84
  [".claude/commands/gdh/check.md", "gdh-check"],
81
85
  [".claude/commands/gdh/prepare.md", "gdh-prepare"],
86
+ [".claude/commands/gdh/run-game.md", "gdh-run-game"],
82
87
  [".claude/commands/gdh/scan.md", "gdh-scan"],
83
88
  ];
84
89
  const LEGACY_CODEX_SKILL_RELATIVE_PATHS = [
@@ -88,6 +93,7 @@ const LEGACY_CODEX_SKILL_RELATIVE_PATHS = [
88
93
  [".codex/skills/gdh-update/SKILL.md", "gdh-update"],
89
94
  [".codex/skills/gdh-check/SKILL.md", "gdh-check"],
90
95
  [".codex/skills/gdh-prepare/SKILL.md", "gdh-prepare"],
96
+ [".codex/skills/gdh-run-game/SKILL.md", "gdh-run-game"],
91
97
  [".codex/skills/gdh-verify/SKILL.md", "gdh-verify"],
92
98
  [".codex/skills/gdh-scan/SKILL.md", "gdh-scan"],
93
99
  ];
@@ -101,7 +107,7 @@ export const GDH_MCP_SERVER_NAME = "gdh";
101
107
  const PREVIEW_HEADER_LITERAL = "Preview (dry-run) — not applied";
102
108
  const execFile = promisify(execFileCallback);
103
109
  export async function getSupportedAgentAdaptersStatus(targetPath, options = {}) {
104
- const includeUserLocal = options.includeUserLocal ?? true;
110
+ const includeUserLocal = options.includeUserLocal ?? false;
105
111
  const integrationRootPath = resolveIntegrationRootPath(targetPath, options.integrationRootPath);
106
112
  const guidance = await getGuidanceStatus(targetPath);
107
113
  const pinnedVersion = await resolvePinnedVersionOrNull(targetPath);
@@ -389,6 +395,9 @@ export function renderClaudeCheckCommand(pinnedVersion) {
389
395
  export function renderClaudePrepareCommand(pinnedVersion) {
390
396
  return renderClaudePrepareSkill(pinnedVersion);
391
397
  }
398
+ export function renderClaudeRunGameCommand(pinnedVersion) {
399
+ return renderClaudeRunGameSkill(pinnedVersion);
400
+ }
392
401
  async function inspectProjectMcpSupport(targetPath, options) {
393
402
  const projectConfig = await readProjectConfig(targetPath);
394
403
  const enabled = resolveProjectMcpEnabled(projectConfig);
@@ -642,7 +651,7 @@ function inspectCodexAuthoringHookConfig(targetPath, content, enabled) {
642
651
  summary: content === null
643
652
  ? "Codex project config is missing and should register GDH authoring hooks."
644
653
  : ready
645
- ? "Codex project config enables GDH PostToolUse and Stop authoring hooks."
654
+ ? "Codex project config enables GDH PostToolUse authoring hooks."
646
655
  : "Codex project config exists but is missing the managed GDH authoring hook block.",
647
656
  version: null,
648
657
  });
@@ -761,6 +770,9 @@ async function inspectCodexAdapter(targetPath, guidance, projectMcp, pinnedVersi
761
770
  const codexPrepareContent = await fs
762
771
  .readFile(path.join(targetPath, CODEX_PREPARE_SKILL_RELATIVE_PATH), "utf8")
763
772
  .catch(() => null);
773
+ const codexRunGameContent = await fs
774
+ .readFile(path.resolve(targetPath, CODEX_RUN_GAME_SKILL_RELATIVE_PATH), "utf8")
775
+ .catch(() => null);
764
776
  const codexScanContent = await fs
765
777
  .readFile(path.join(targetPath, CODEX_SCAN_SKILL_RELATIVE_PATH), "utf8")
766
778
  .catch(() => null);
@@ -776,6 +788,7 @@ async function inspectCodexAdapter(targetPath, guidance, projectMcp, pinnedVersi
776
788
  const expectedCodexUpdateSkill = pinnedVersion === null ? null : renderCodexUpdateSkill(pinnedVersion);
777
789
  const expectedCodexCheckSkill = pinnedVersion === null ? null : renderCodexCheckSkill(pinnedVersion);
778
790
  const expectedCodexPrepareSkill = pinnedVersion === null ? null : renderCodexPrepareSkill(pinnedVersion);
791
+ const expectedCodexRunGameSkill = pinnedVersion === null ? null : renderCodexRunGameSkill(pinnedVersion);
779
792
  const expectedCodexScanSkill = pinnedVersion === null ? null : renderCodexScanSkill(pinnedVersion);
780
793
  const expectedCodexAuthoringHook = pinnedVersion === null
781
794
  ? null
@@ -830,6 +843,7 @@ async function inspectCodexAdapter(targetPath, guidance, projectMcp, pinnedVersi
830
843
  ...inspectCodexSkillSurface(targetPath, CODEX_UPDATE_SKILL_RELATIVE_PATH, codexUpdateContent, expectedCodexUpdateSkill, "gdh-update"),
831
844
  ...inspectCodexSkillSurface(targetPath, CODEX_CHECK_SKILL_RELATIVE_PATH, codexCheckContent, expectedCodexCheckSkill, "gdh-check"),
832
845
  ...inspectCodexSkillSurface(targetPath, CODEX_PREPARE_SKILL_RELATIVE_PATH, codexPrepareContent, expectedCodexPrepareSkill, "gdh-prepare"),
846
+ ...inspectCodexSkillSurface(targetPath, CODEX_RUN_GAME_SKILL_RELATIVE_PATH, codexRunGameContent, expectedCodexRunGameSkill, "gdh-run-game"),
833
847
  ...inspectCodexSkillSurface(targetPath, CODEX_SCAN_SKILL_RELATIVE_PATH, codexScanContent, expectedCodexScanSkill, "gdh-scan"),
834
848
  inspectManagedHookSurface("codex", projectMcp.integrationRootPath, CODEX_AUTHORING_HOOK_RELATIVE_PATH, codexAuthoringHookContent, expectedCodexAuthoringHook, "authoring guard"),
835
849
  inspectCodexAuthoringHookConfig(projectMcp.integrationRootPath, codexProjectConfigContent, projectMcp.enabled),
@@ -885,6 +899,9 @@ async function inspectClaudeAdapter(targetPath, guidance, projectMcp, pinnedVers
885
899
  const claudePrepareContent = await fs
886
900
  .readFile(path.join(targetPath, CLAUDE_PREPARE_COMMAND_RELATIVE_PATH), "utf8")
887
901
  .catch(() => null);
902
+ const claudeRunGameContent = await fs
903
+ .readFile(path.resolve(targetPath, CLAUDE_RUN_GAME_COMMAND_RELATIVE_PATH), "utf8")
904
+ .catch(() => null);
888
905
  const claudeScanContent = await fs
889
906
  .readFile(path.join(targetPath, CLAUDE_SCAN_COMMAND_RELATIVE_PATH), "utf8")
890
907
  .catch(() => null);
@@ -920,6 +937,7 @@ async function inspectClaudeAdapter(targetPath, guidance, projectMcp, pinnedVers
920
937
  const expectedClaudeUpdateCommand = pinnedVersion === null ? null : renderClaudeUpdateCommand(pinnedVersion);
921
938
  const expectedClaudeCheckCommand = pinnedVersion === null ? null : renderClaudeCheckCommand(pinnedVersion);
922
939
  const expectedClaudePrepareCommand = pinnedVersion === null ? null : renderClaudePrepareCommand(pinnedVersion);
940
+ const expectedClaudeRunGameCommand = pinnedVersion === null ? null : renderClaudeRunGameCommand(pinnedVersion);
923
941
  const expectedClaudeScanCommand = pinnedVersion === null ? null : renderClaudeScanCommand(pinnedVersion);
924
942
  const surfaces = [
925
943
  createSurfaceStatus({
@@ -969,6 +987,7 @@ async function inspectClaudeAdapter(targetPath, guidance, projectMcp, pinnedVers
969
987
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_UPDATE_COMMAND_RELATIVE_PATH, claudeUpdateContent, expectedClaudeUpdateCommand, "gdh-update"),
970
988
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_CHECK_COMMAND_RELATIVE_PATH, claudeCheckContent, expectedClaudeCheckCommand, "gdh-check"),
971
989
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_PREPARE_COMMAND_RELATIVE_PATH, claudePrepareContent, expectedClaudePrepareCommand, "gdh-prepare"),
990
+ ...inspectClaudeSkillSurface(targetPath, CLAUDE_RUN_GAME_COMMAND_RELATIVE_PATH, claudeRunGameContent, expectedClaudeRunGameCommand, "gdh-run-game"),
972
991
  ...inspectClaudeSkillSurface(targetPath, CLAUDE_SCAN_COMMAND_RELATIVE_PATH, claudeScanContent, expectedClaudeScanCommand, "gdh-scan"),
973
992
  inspectManagedHookSurface("claude", targetPath, CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH, claudeCheckUpdateHookContent, expectedClaudeCheckUpdateHook, "gdh-check-update-hook"),
974
993
  inspectManagedHookSurface("claude", targetPath, CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH, claudeCheckUpdateWorkerContent, expectedClaudeCheckUpdateWorker, "gdh-check-update-worker"),
@@ -1015,6 +1034,9 @@ async function inspectCursorAdapter(targetPath, guidance, projectMcp, pinnedVers
1015
1034
  const cursorPrepareContent = await fs
1016
1035
  .readFile(path.join(targetPath, CURSOR_PREPARE_SKILL_RELATIVE_PATH), "utf8")
1017
1036
  .catch(() => null);
1037
+ const cursorRunGameContent = await fs
1038
+ .readFile(path.resolve(targetPath, CURSOR_RUN_GAME_SKILL_RELATIVE_PATH), "utf8")
1039
+ .catch(() => null);
1018
1040
  const cursorScanContent = await fs
1019
1041
  .readFile(path.join(targetPath, CURSOR_SCAN_SKILL_RELATIVE_PATH), "utf8")
1020
1042
  .catch(() => null);
@@ -1026,6 +1048,7 @@ async function inspectCursorAdapter(targetPath, guidance, projectMcp, pinnedVers
1026
1048
  const expectedCursorUpdateSkill = pinnedVersion === null ? null : renderCursorUpdateSkill(pinnedVersion);
1027
1049
  const expectedCursorCheckSkill = pinnedVersion === null ? null : renderCursorCheckSkill(pinnedVersion);
1028
1050
  const expectedCursorPrepareSkill = pinnedVersion === null ? null : renderCursorPrepareSkill(pinnedVersion);
1051
+ const expectedCursorRunGameSkill = pinnedVersion === null ? null : renderCursorRunGameSkill(pinnedVersion);
1029
1052
  const expectedCursorScanSkill = pinnedVersion === null ? null : renderCursorScanSkill(pinnedVersion);
1030
1053
  const surfaces = [
1031
1054
  createSurfaceStatus({
@@ -1069,6 +1092,7 @@ async function inspectCursorAdapter(targetPath, guidance, projectMcp, pinnedVers
1069
1092
  ...inspectCursorSkillSurface(targetPath, CURSOR_UPDATE_SKILL_RELATIVE_PATH, cursorUpdateContent, expectedCursorUpdateSkill, "gdh-update"),
1070
1093
  ...inspectCursorSkillSurface(targetPath, CURSOR_CHECK_SKILL_RELATIVE_PATH, cursorCheckContent, expectedCursorCheckSkill, "gdh-check"),
1071
1094
  ...inspectCursorSkillSurface(targetPath, CURSOR_PREPARE_SKILL_RELATIVE_PATH, cursorPrepareContent, expectedCursorPrepareSkill, "gdh-prepare"),
1095
+ ...inspectCursorSkillSurface(targetPath, CURSOR_RUN_GAME_SKILL_RELATIVE_PATH, cursorRunGameContent, expectedCursorRunGameSkill, "gdh-run-game"),
1072
1096
  ...inspectCursorSkillSurface(targetPath, CURSOR_SCAN_SKILL_RELATIVE_PATH, cursorScanContent, expectedCursorScanSkill, "gdh-scan"),
1073
1097
  ];
1074
1098
  if (projectMcp.enabled) {
@@ -1148,7 +1172,7 @@ function resolveIntegrationRootPath(targetPath, integrationRootPath) {
1148
1172
  }
1149
1173
  async function planInstallActions(targetPath, adapters, requestedAgents, options) {
1150
1174
  const projectMcp = await inspectProjectMcpSupport(targetPath, {
1151
- includeUserLocal: true,
1175
+ includeUserLocal: options.user,
1152
1176
  integrationRootPath: options.integrationRootPath,
1153
1177
  pinnedVersion: options.pinnedVersion,
1154
1178
  });
@@ -1319,6 +1343,7 @@ function planCodexRepoInstallActions(targetPath, adapter, pinnedVersion, project
1319
1343
  planSkillInstallAction("codex", targetPath, adapter, CODEX_UPDATE_SKILL_RELATIVE_PATH, renderCodexUpdateSkill, "gdh-update", pinnedVersion),
1320
1344
  planSkillInstallAction("codex", targetPath, adapter, CODEX_CHECK_SKILL_RELATIVE_PATH, renderCodexCheckSkill, "gdh-check", pinnedVersion),
1321
1345
  planSkillInstallAction("codex", targetPath, adapter, CODEX_PREPARE_SKILL_RELATIVE_PATH, renderCodexPrepareSkill, "gdh-prepare", pinnedVersion),
1346
+ planSkillInstallAction("codex", targetPath, adapter, CODEX_RUN_GAME_SKILL_RELATIVE_PATH, renderCodexRunGameSkill, "gdh-run-game", pinnedVersion),
1322
1347
  planSkillInstallAction("codex", targetPath, adapter, CODEX_SCAN_SKILL_RELATIVE_PATH, renderCodexScanSkill, "gdh-scan", pinnedVersion),
1323
1348
  planSkillInstallAction("codex", integrationRootPath, adapter, CODEX_AUTHORING_HOOK_RELATIVE_PATH, (version) => renderGdhAuthoringHook({
1324
1349
  pinnedVersion: version,
@@ -1546,7 +1571,7 @@ function planClaudeInstallActions(targetPath, adapter, pinnedVersion, integratio
1546
1571
  expectedTarget: "AGENTS.md",
1547
1572
  }));
1548
1573
  }
1549
- 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_SCAN_COMMAND_RELATIVE_PATH, renderClaudeScanCommand, "gdh-scan", pinnedVersion),
1574
+ 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),
1550
1575
  // UPD-01 managed hook surfaces baked at the pinned version.
1551
1576
  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),
1552
1577
  // Optional statusline script baked at the pinned version. The .js file is
@@ -1734,7 +1759,7 @@ function planCursorInstallActions(targetPath, adapter, pinnedVersion) {
1734
1759
  content: renderCursorRule(),
1735
1760
  }));
1736
1761
  }
1737
- 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_SCAN_SKILL_RELATIVE_PATH, renderCursorScanSkill, "gdh-scan", pinnedVersion));
1762
+ 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));
1738
1763
  return actions;
1739
1764
  }
1740
1765
  function dedupeInstallActions(actions) {
@@ -1972,12 +1997,6 @@ function renderManagedCodexAuthoringHookBlock() {
1972
1997
  'type = "command"',
1973
1998
  `command = ${JSON.stringify(CODEX_AUTHORING_HOOK_COMMAND)}`,
1974
1999
  "timeout = 30",
1975
- "",
1976
- "[[hooks.Stop]]",
1977
- "[[hooks.Stop.hooks]]",
1978
- 'type = "command"',
1979
- `command = ${JSON.stringify(CODEX_AUTHORING_HOOK_COMMAND)}`,
1980
- "timeout = 120",
1981
2000
  "# END GDH managed authoring hooks",
1982
2001
  "",
1983
2002
  ].join("\n");