@opengsd/gsd-core 1.7.0-rc.5 → 1.7.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 (112) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/agents/gsd-executor.md +2 -1
  4. package/agents/gsd-security-auditor.md +13 -15
  5. package/agents/gsd-ui-checker.md +2 -0
  6. package/agents/gsd-ui-researcher.md +1 -0
  7. package/bin/install.js +975 -196
  8. package/commands/gsd/mempalace-capture.md +27 -1
  9. package/commands/gsd/surface.md +6 -6
  10. package/gsd-core/bin/gsd-tools.cjs +63 -2
  11. package/gsd-core/bin/lib/api-coverage.cjs +3 -4
  12. package/gsd-core/bin/lib/audit.cjs +7 -6
  13. package/gsd-core/bin/lib/capability-registry.cjs +503 -87
  14. package/gsd-core/bin/lib/capability-validator.cjs +56 -18
  15. package/gsd-core/bin/lib/check-command-router.cjs +1 -1
  16. package/gsd-core/bin/lib/clock.cjs +19 -0
  17. package/gsd-core/bin/lib/commands.cjs +48 -9
  18. package/gsd-core/bin/lib/config-loader.cjs +6 -2
  19. package/gsd-core/bin/lib/config.cjs +12 -0
  20. package/gsd-core/bin/lib/core-utils.cjs +8 -2
  21. package/gsd-core/bin/lib/drift.cjs +4 -4
  22. package/gsd-core/bin/lib/frontmatter.cjs +22 -0
  23. package/gsd-core/bin/lib/gsd2-import.cjs +2 -1
  24. package/gsd-core/bin/lib/host-integration.cjs +33 -8
  25. package/gsd-core/bin/lib/init.cjs +60 -53
  26. package/gsd-core/bin/lib/install-engine.cjs +93 -22
  27. package/gsd-core/bin/lib/installer-migration-authoring.cjs +2 -1
  28. package/gsd-core/bin/lib/installer-migration-report.cjs +3 -0
  29. package/gsd-core/bin/lib/installer-migrations.cjs +1 -1
  30. package/gsd-core/bin/lib/markdown-sectionizer.cjs +342 -0
  31. package/gsd-core/bin/lib/markdown-table.cjs +698 -0
  32. package/gsd-core/bin/lib/mcp-server.cjs +18 -7
  33. package/gsd-core/bin/lib/milestone.cjs +217 -31
  34. package/gsd-core/bin/lib/phase-command-router.cjs +50 -2
  35. package/gsd-core/bin/lib/phase-lifecycle.cjs +62 -36
  36. package/gsd-core/bin/lib/phase-locator.cjs +23 -2
  37. package/gsd-core/bin/lib/phase.cjs +436 -61
  38. package/gsd-core/bin/lib/plan-scan.cjs +3 -0
  39. package/gsd-core/bin/lib/review-reviewer-selection.cjs +24 -7
  40. package/gsd-core/bin/lib/roadmap-parser.cjs +218 -13
  41. package/gsd-core/bin/lib/roadmap.cjs +100 -49
  42. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +242 -44
  43. package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +3 -2
  44. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +24 -14
  45. package/gsd-core/bin/lib/runtime-config-adapter-registry.cjs +19 -5
  46. package/gsd-core/bin/lib/runtime-homes.cjs +22 -0
  47. package/gsd-core/bin/lib/runtime-hooks-surface.cjs +526 -29
  48. package/gsd-core/bin/lib/runtime-name-policy.cjs +63 -5
  49. package/gsd-core/bin/lib/schema-detect.cjs +2 -1
  50. package/gsd-core/bin/lib/security.cjs +7 -37
  51. package/gsd-core/bin/lib/shell-command-projection.cjs +176 -27
  52. package/gsd-core/bin/lib/smart-entry.cjs +4 -3
  53. package/gsd-core/bin/lib/stale-bake-guard.cjs +30 -10
  54. package/gsd-core/bin/lib/state-transition.cjs +100 -45
  55. package/gsd-core/bin/lib/state.cjs +391 -126
  56. package/gsd-core/bin/lib/surface.cjs +12 -8
  57. package/gsd-core/bin/lib/template.cjs +2 -1
  58. package/gsd-core/bin/lib/uat.cjs +54 -8
  59. package/gsd-core/bin/lib/ui-consideration-probe.cjs +249 -0
  60. package/gsd-core/bin/lib/ui-safety-gate.cjs +23 -1
  61. package/gsd-core/bin/lib/verify.cjs +4 -3
  62. package/gsd-core/bin/lib/workstream.cjs +3 -2
  63. package/gsd-core/bin/lib/worktree-safety.cjs +1 -1
  64. package/gsd-core/bin/lib/write-set.cjs +38 -0
  65. package/gsd-core/bin/shared/config-schema.manifest.json +2 -0
  66. package/gsd-core/bin/shared/model-catalog.json +8 -3
  67. package/gsd-core/references/checkpoints.md +12 -0
  68. package/gsd-core/references/ui-consideration-probe.md +73 -0
  69. package/gsd-core/templates/UI-SPEC.md +25 -0
  70. package/gsd-core/templates/VALIDATION.md +2 -0
  71. package/gsd-core/workflows/add-tests.md +1 -1
  72. package/gsd-core/workflows/audit-milestone.md +7 -4
  73. package/gsd-core/workflows/debug.md +2 -0
  74. package/gsd-core/workflows/execute-phase.md +5 -3
  75. package/gsd-core/workflows/fast.md +8 -22
  76. package/gsd-core/workflows/plan-phase.md +6 -0
  77. package/gsd-core/workflows/progress.md +2 -2
  78. package/gsd-core/workflows/quick.md +2 -0
  79. package/gsd-core/workflows/review.md +42 -3
  80. package/gsd-core/workflows/secure-phase.md +1 -1
  81. package/gsd-core/workflows/settings-advanced.md +7 -4
  82. package/gsd-core/workflows/ship.md +8 -2
  83. package/gsd-core/workflows/spec-phase.md +1 -1
  84. package/gsd-core/workflows/transition.md +1 -1
  85. package/gsd-core/workflows/ui-phase.md +146 -1
  86. package/gsd-core/workflows/validate-phase.md +2 -2
  87. package/hooks/dist/gsd-statusline.js +164 -14
  88. package/hooks/dist/gsd-windsurf-pre-command.js +275 -0
  89. package/hooks/dist/gsd-windsurf-pre-write.js +132 -0
  90. package/hooks/dist/managed-hooks-registry.cjs +2 -0
  91. package/hooks/gsd-statusline.js +164 -14
  92. package/hooks/gsd-windsurf-pre-command.js +275 -0
  93. package/hooks/gsd-windsurf-pre-write.js +132 -0
  94. package/hooks/managed-hooks-registry.cjs +2 -0
  95. package/package.json +10 -4
  96. package/pi/gsd.cjs +354 -0
  97. package/scripts/build-hooks.js +3 -0
  98. package/scripts/ci-test-scope.cjs +39 -1
  99. package/scripts/gen-golden-install-parity-zcode.cjs +35 -35
  100. package/scripts/gen-install-tree-fixtures.cjs +75 -0
  101. package/scripts/gen-registry.cjs +128 -0
  102. package/scripts/lint-allow-test-rule-refs.allowlist.json +0 -1
  103. package/scripts/lint-table-schema-drift.cjs +157 -0
  104. package/scripts/lint-test-file-count.allowlist.json +2 -1
  105. package/scripts/registry-schema.cjs +565 -0
  106. package/scripts/validate-registry.cjs +117 -0
  107. package/skills/gsd-mempalace-capture/SKILL.md +27 -1
  108. package/skills/gsd-surface/SKILL.md +6 -6
  109. package/vscode/browser.js +197 -0
  110. package/vscode/extension.js +383 -0
  111. package/vscode/host-binding.js +113 -0
  112. package/vscode/package.json +96 -0
@@ -10,7 +10,7 @@ const capabilities = {
10
10
  "ai-integration": {
11
11
  "id": "ai-integration",
12
12
  "role": "feature",
13
- "version": "1.7.0-rc.5",
13
+ "version": "1.7.0",
14
14
  "title": "AI design contract",
15
15
  "description": "AI-SPEC design contract workflow for phases that build AI systems; owns the AI integration command, agents, and workflow.ai_integration_phase activation key.",
16
16
  "tier": "full",
@@ -95,7 +95,7 @@ const capabilities = {
95
95
  "antigravity": {
96
96
  "id": "antigravity",
97
97
  "role": "runtime",
98
- "version": "1.7.0-rc.5",
98
+ "version": "1.7.0",
99
99
  "title": "Antigravity",
100
100
  "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.",
101
101
  "tier": "core",
@@ -165,7 +165,7 @@ const capabilities = {
165
165
  "supportTier": 1,
166
166
  "installSurface": "settings-json",
167
167
  "writesSharedSettings": true,
168
- "permissionWriter": null,
168
+ "permissionWriter": "antigravity",
169
169
  "extendedHookEvents": [],
170
170
  "hostIntegration": {
171
171
  "embeddingMode": "declarative",
@@ -175,7 +175,7 @@ const capabilities = {
175
175
  "nested": "undocumented",
176
176
  "maxDepth": "undocumented",
177
177
  "background": true,
178
- "subagentToolkit": "undocumented",
178
+ "subagentToolkit": "full",
179
179
  "backgroundDispatch": "undocumented"
180
180
  },
181
181
  "modelMode": "passive",
@@ -183,13 +183,20 @@ const capabilities = {
183
183
  "stateIO": "filesystem",
184
184
  "transport": "mcp",
185
185
  "runtime": "go"
186
+ },
187
+ "hostBehaviors": {
188
+ "reviewerCli": true,
189
+ "projectInstructionFile": "GEMINI.md",
190
+ "noPathRewrite": true,
191
+ "hookPathStyle": "raw",
192
+ "globalDirResolver": "antigravity"
186
193
  }
187
194
  }
188
195
  },
189
196
  "assumption-delta": {
190
197
  "id": "assumption-delta",
191
198
  "role": "feature",
192
- "version": "1.7.0-rc.5",
199
+ "version": "1.7.0",
193
200
  "title": "Assumption-delta architecture checkpoint",
194
201
  "description": "Rarely-firing advisory checkpoint that triggers when a phase makes something plural, optional, or chosen that used to be singular, required, or derived. Surfaces one identity-model question (promote the new general representation to primary, or add it alongside?) so a silent primary-key drift does not accumulate into a later user-facing bug. Non-blocking; fires only on a detected signal.",
195
202
  "tier": "full",
@@ -235,7 +242,7 @@ const capabilities = {
235
242
  "audit": {
236
243
  "id": "audit",
237
244
  "role": "feature",
238
- "version": "1.7.0-rc.5",
245
+ "version": "1.7.0",
239
246
  "title": "Audit",
240
247
  "description": "Open-artifact audit and UAT-gap audit for milestone close gates; exposes `gsd-tools audit-uat` (cross-phase UAT outstanding items) and `gsd-tools audit-open` (structured open-artifact scan across debug, tasks, threads, todos, seeds, UAT, verification, context-questions).",
241
248
  "tier": "full",
@@ -272,7 +279,7 @@ const capabilities = {
272
279
  "augment": {
273
280
  "id": "augment",
274
281
  "role": "runtime",
275
- "version": "1.7.0-rc.5",
282
+ "version": "1.7.0",
276
283
  "title": "Augment Code",
277
284
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
278
285
  "tier": "core",
@@ -353,6 +360,10 @@ const capabilities = {
353
360
  "writesSharedSettings": true,
354
361
  "permissionWriter": null,
355
362
  "extendedHookEvents": [],
363
+ "hostBehaviors": {
364
+ "commandBodyConverter": "convertClaudeToAugmentMarkdown",
365
+ "mcpCompanion": "settings-json"
366
+ },
356
367
  "hostIntegration": {
357
368
  "embeddingMode": "declarative",
358
369
  "commandSurface": "slash-file",
@@ -375,7 +386,7 @@ const capabilities = {
375
386
  "claude": {
376
387
  "id": "claude",
377
388
  "role": "runtime",
378
- "version": "1.7.0-rc.5",
389
+ "version": "1.7.0",
379
390
  "title": "Claude Code",
380
391
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
381
392
  "tier": "core",
@@ -469,14 +480,18 @@ const capabilities = {
469
480
  ],
470
481
  "ownsClaudePaths": true,
471
482
  "nativeModelAliases": true,
472
- "skillsGlobalOnboarding": true
483
+ "skillsGlobalOnboarding": true,
484
+ "legacyCommandsGsdInstallMigration": true,
485
+ "legacyCommandsGsdUninstall": "global",
486
+ "hyphenNameAgentBody": true,
487
+ "reviewerCli": true
473
488
  }
474
489
  }
475
490
  },
476
491
  "claude-orchestration": {
477
492
  "id": "claude-orchestration",
478
493
  "role": "feature",
479
- "version": "1.7.0-rc.5",
494
+ "version": "1.7.0",
480
495
  "title": "Claude orchestration (Workflow backend)",
481
496
  "description": "Default-off, BETA, claude-only capability that adopts Claude Code's Workflow tool (the engine behind /effort ultracode) as an optional parallel-execution backend for the GSD loop. When the runtime exposes the Workflow tool and claude_orchestration.execution_backend resolves to 'workflow', execute-phase emits a generated Workflow script (waves -> parallel() barriers, plans -> agent({ agentType: 'gsd-executor', isolation: 'worktree' }), files_modified overlap -> separate sequential stages, resumeFromRunId wired to the phase run id, shared token budget) that composes the SAME gsd-executor agent and worktree isolation the inline path uses, restoring the wave parallelism the #853 backgrounded-agent nesting limitation forces inline on Claude Code. (The plan-checker and verifier remain inline until separately wired — this capability delivers the parallel-execution backend, not those gates.) Also folds the ultraplan plan-offload under one runtime gate (plan:* surface). On any runtime lacking the Workflow tool, or when the capability is disabled, behaviour is byte-identical to today (inline/manual dispatch). Detection + emission live in gsd-core/bin/lib/claude-orchestration.cjs (pure, fail-closed). Mirrors the existing gsd-ultraplan-phase BETA-isolation posture.",
482
497
  "tier": "full",
@@ -563,7 +578,7 @@ const capabilities = {
563
578
  "cline": {
564
579
  "id": "cline",
565
580
  "role": "runtime",
566
- "version": "1.7.0-rc.5",
581
+ "version": "1.7.0",
567
582
  "title": "Cline",
568
583
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
569
584
  "tier": "core",
@@ -632,7 +647,7 @@ const capabilities = {
632
647
  "code-review": {
633
648
  "id": "code-review",
634
649
  "role": "feature",
635
- "version": "1.7.0-rc.5",
650
+ "version": "1.7.0",
636
651
  "title": "Code review",
637
652
  "description": "Source-file code review and review-fix workflow support for completed execution work.",
638
653
  "tier": "full",
@@ -693,7 +708,7 @@ const capabilities = {
693
708
  "codebuddy": {
694
709
  "id": "codebuddy",
695
710
  "role": "runtime",
696
- "version": "1.7.0-rc.5",
711
+ "version": "1.7.0",
697
712
  "title": "CodeBuddy",
698
713
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
699
714
  "tier": "core",
@@ -773,7 +788,12 @@ const capabilities = {
773
788
  "installSurface": "settings-json",
774
789
  "writesSharedSettings": true,
775
790
  "permissionWriter": null,
776
- "extendedHookEvents": [],
791
+ "extendedHookEvents": [
792
+ "SubagentStop",
793
+ "Stop",
794
+ "PreCompact",
795
+ "SubagentStart"
796
+ ],
777
797
  "hostIntegration": {
778
798
  "embeddingMode": "declarative",
779
799
  "commandSurface": "slash-file",
@@ -790,13 +810,16 @@ const capabilities = {
790
810
  "stateIO": "filesystem",
791
811
  "transport": "mcp",
792
812
  "runtime": "node"
813
+ },
814
+ "hostBehaviors": {
815
+ "reportCommandsDir": true
793
816
  }
794
817
  }
795
818
  },
796
819
  "codex": {
797
820
  "id": "codex",
798
821
  "role": "runtime",
799
- "version": "1.7.0-rc.5",
822
+ "version": "1.7.0",
800
823
  "title": "OpenAI Codex CLI",
801
824
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
802
825
  "tier": "core",
@@ -873,14 +896,15 @@ const capabilities = {
873
896
  "tomlConfigInstall": true,
874
897
  "cleanupSkillSidecars": true,
875
898
  "agentTomlFiles": true,
876
- "frontmatterDialect": "codex"
899
+ "frontmatterDialect": "codex",
900
+ "reviewerCli": true
877
901
  }
878
902
  }
879
903
  },
880
904
  "copilot": {
881
905
  "id": "copilot",
882
906
  "role": "runtime",
883
- "version": "1.7.0-rc.5",
907
+ "version": "1.7.0",
884
908
  "title": "GitHub Copilot",
885
909
  "description": "GitHub Copilot (VS Code) — markdown config format; copilot-inline hook surface; no hook events emitted; flat skill nesting (unconfirmed recursive loader); tier-2 support.",
886
910
  "tier": "core",
@@ -963,14 +987,17 @@ const capabilities = {
963
987
  "runtime": "undocumented"
964
988
  },
965
989
  "hostBehaviors": {
966
- "reapplyCommand": "/gsd-update --reapply"
990
+ "reapplyCommand": "/gsd-update --reapply",
991
+ "agentFileExtension": ".agent.md",
992
+ "skipSharedHooksInstall": true,
993
+ "noPathRewrite": true
967
994
  }
968
995
  }
969
996
  },
970
997
  "cursor": {
971
998
  "id": "cursor",
972
999
  "role": "runtime",
973
- "version": "1.7.0-rc.5",
1000
+ "version": "1.7.0",
974
1001
  "title": "Cursor",
975
1002
  "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
976
1003
  "tier": "core",
@@ -1083,14 +1110,15 @@ const capabilities = {
1083
1110
  "stop",
1084
1111
  "subagentStart",
1085
1112
  "subagentStop"
1086
- ]
1113
+ ],
1114
+ "reviewerCli": true
1087
1115
  }
1088
1116
  }
1089
1117
  },
1090
1118
  "drift": {
1091
1119
  "id": "drift",
1092
1120
  "role": "feature",
1093
- "version": "1.7.0-rc.5",
1121
+ "version": "1.7.0",
1094
1122
  "title": "Drift detection gates",
1095
1123
  "description": "Drift detection gates for the planning loop. At execute:wave:post: a blocking schema drift gate (detects schema files changed without a database push) and a non-blocking codebase drift gate (detects structural additions not reflected in STRUCTURE.md). At plan:pre: a non-blocking, warn-only codebase drift gate (gated on workflow.plan_drift_precheck) that flags a stale codebase map before planning, so plans are authored against a fresh STRUCTURE.md instead of discovering drift mid-execution.",
1096
1124
  "tier": "full",
@@ -1168,7 +1196,7 @@ const capabilities = {
1168
1196
  "external-job": {
1169
1197
  "id": "external-job",
1170
1198
  "role": "feature",
1171
- "version": "1.7.0-rc.5",
1199
+ "version": "1.7.0",
1172
1200
  "title": "Async external-job scheduler adapter",
1173
1201
  "description": "Default-off producer of the async external-job manifest (#1164). At execute:wave:post an executor can externalize long-running compute (SLURM first, scheduler-pluggable), commit a .planning/async-jobs/<job>.json manifest, defer SUMMARY.md, and return external_job_waiting. The core loop (#1165) consumes the manifest; this capability is the only thing that writes it. NOTE on contribution point: #1164 specifies execute:wave:pre, but execute-phase.md only dispatches execute:wave:post today (wave:pre is declared in the loop host contract but not rendered); wiring wave:pre dispatch is a core-loop change #1164 explicitly puts out of scope, so this capability registers at wave:post and the executor honors the runtime_budget classification guidance before running any tagged task. The adapter (scripts/slurm-adapter.cjs) reads external_job.submit_timeout_ms / poll_timeout_ms / artifact_dir through the canonical capability-config seam (env override > config > registry default).",
1174
1202
  "tier": "full",
@@ -1251,7 +1279,7 @@ const capabilities = {
1251
1279
  "gap-analysis": {
1252
1280
  "id": "gap-analysis",
1253
1281
  "role": "feature",
1254
- "version": "1.7.0-rc.5",
1282
+ "version": "1.7.0",
1255
1283
  "title": "Post-planning gap analysis",
1256
1284
  "description": "Proactive, non-blocking post-planning coverage report. After all PLAN.md files are generated, cross-references every REQ-ID and D-ID from REQUIREMENTS.md and CONTEXT.md against plan bodies. Emits a Source | Item | Status table. Does not block phase advancement.",
1257
1285
  "tier": "standard",
@@ -1292,7 +1320,7 @@ const capabilities = {
1292
1320
  "graphify": {
1293
1321
  "id": "graphify",
1294
1322
  "role": "feature",
1295
- "version": "1.7.0-rc.5",
1323
+ "version": "1.7.0",
1296
1324
  "title": "Knowledge graph",
1297
1325
  "description": "Build, query, and inspect the project knowledge graph in `.planning/graphs/`; exposes graphify CLI subcommands (build, query, status, diff) and the /gsd-graphify skill.",
1298
1326
  "tier": "full",
@@ -1333,7 +1361,7 @@ const capabilities = {
1333
1361
  "hermes": {
1334
1362
  "id": "hermes",
1335
1363
  "role": "runtime",
1336
- "version": "1.7.0-rc.5",
1364
+ "version": "1.7.0",
1337
1365
  "title": "Hermes Agent",
1338
1366
  "description": "Hermes Agent (NousResearch) — skills nest under skills/gsd/ category bucket; nested skill layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
1339
1367
  "tier": "core",
@@ -1395,7 +1423,10 @@ const capabilities = {
1395
1423
  "Claude Code": "Hermes Agent",
1396
1424
  ".claude/": ".hermes/"
1397
1425
  },
1398
- "reapplyCommand": "gsd-update --reapply (mention the skill name)"
1426
+ "reapplyCommand": "gsd-update --reapply (mention the skill name)",
1427
+ "legacyCommandsGsdInstallMigration": true,
1428
+ "legacyCommandsGsdUninstall": true,
1429
+ "hyphenNameAgentBody": true
1399
1430
  },
1400
1431
  "hostIntegration": {
1401
1432
  "embeddingMode": "imperative",
@@ -1419,7 +1450,7 @@ const capabilities = {
1419
1450
  "intel": {
1420
1451
  "id": "intel",
1421
1452
  "role": "feature",
1422
- "version": "1.7.0-rc.5",
1453
+ "version": "1.7.0",
1423
1454
  "title": "Codebase intelligence",
1424
1455
  "description": "Code-intelligence store for codebase querying, diff, snapshot, and API-surface extraction; exposes `gsd-tools intel` subcommands (query, status, update, diff, snapshot, patch-meta, validate, extract-exports, api-surface) and backs `/gsd-map-codebase` and `gsd-intel-updater`.",
1425
1456
  "tier": "full",
@@ -1471,7 +1502,7 @@ const capabilities = {
1471
1502
  "kilo": {
1472
1503
  "id": "kilo",
1473
1504
  "role": "runtime",
1474
- "version": "1.7.0-rc.5",
1505
+ "version": "1.7.0",
1475
1506
  "title": "Kilo Code",
1476
1507
  "description": "Kilo Code — XDG-based config dir; global skills at ~/.kilo/skills (separate from XDG config); flat command/ + skills artifact layout; no lifecycle hook registration; tier-2 support.",
1477
1508
  "tier": "core",
@@ -1536,6 +1567,7 @@ const capabilities = {
1536
1567
  },
1537
1568
  "commandStyle": "slash-hyphen",
1538
1569
  "hooksSurface": "none",
1570
+ "extensionEvents": "kilo",
1539
1571
  "sandboxTier": "none",
1540
1572
  "supportTier": 2,
1541
1573
  "installSurface": "settings-json",
@@ -1565,16 +1597,22 @@ const capabilities = {
1565
1597
  "flatCommandDir": "command",
1566
1598
  "combinedFamilyInstall": true,
1567
1599
  "frontmatterDialect": "kilo",
1568
- "skipUpdateBannerCommand": true
1600
+ "nativePlugin": {
1601
+ "dir": "plugins",
1602
+ "file": "gsd-core.js",
1603
+ "source": ".kilo/plugins/gsd-core.js"
1604
+ },
1605
+ "skipUpdateBannerCommand": true,
1606
+ "skipSharedHooksInstall": true
1569
1607
  }
1570
1608
  }
1571
1609
  },
1572
1610
  "kimi": {
1573
1611
  "id": "kimi",
1574
1612
  "role": "runtime",
1575
- "version": "1.7.0-rc.5",
1613
+ "version": "1.7.0",
1576
1614
  "title": "Kimi CLI",
1577
- "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; no hook surface; no hook events; tier-2 support.",
1615
+ "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.",
1578
1616
  "tier": "core",
1579
1617
  "requires": [],
1580
1618
  "engines": {
@@ -1617,13 +1655,19 @@ const capabilities = {
1617
1655
  "local": []
1618
1656
  },
1619
1657
  "commandStyle": "slash-hyphen",
1620
- "hooksSurface": "none",
1658
+ "hooksSurface": "kimi-hooks-toml",
1659
+ "hookEvents": "claude",
1621
1660
  "sandboxTier": "none",
1622
1661
  "supportTier": 2,
1623
1662
  "installSurface": "profile-marker-only",
1624
1663
  "writesSharedSettings": false,
1625
1664
  "permissionWriter": null,
1626
- "extendedHookEvents": [],
1665
+ "extendedHookEvents": [
1666
+ "SubagentStop",
1667
+ "Stop",
1668
+ "PreCompact",
1669
+ "SubagentStart"
1670
+ ],
1627
1671
  "hostIntegration": {
1628
1672
  "embeddingMode": "imperative",
1629
1673
  "commandSurface": "slash-file",
@@ -1633,20 +1677,28 @@ const capabilities = {
1633
1677
  "maxDepth": 1,
1634
1678
  "background": true,
1635
1679
  "subagentToolkit": "undocumented",
1636
- "backgroundDispatch": false
1680
+ "backgroundDispatch": true
1637
1681
  },
1638
1682
  "modelMode": "passive",
1639
1683
  "hookBus": "host",
1640
1684
  "stateIO": "filesystem",
1641
1685
  "transport": "mcp",
1642
1686
  "runtime": "python"
1687
+ },
1688
+ "hostBehaviors": {
1689
+ "reapplyCommand": "/skill:gsd-update --reapply",
1690
+ "localInstallDeferred": true,
1691
+ "verificationStyle": "kimi",
1692
+ "agentManifestStyle": "kimi-nested",
1693
+ "doneBannerStyle": "kimi-agent-file",
1694
+ "skipSharedHooksInstall": true
1643
1695
  }
1644
1696
  }
1645
1697
  },
1646
1698
  "mempalace": {
1647
1699
  "id": "mempalace",
1648
1700
  "role": "feature",
1649
- "version": "1.7.0-rc.5",
1701
+ "version": "1.7.0",
1650
1702
  "title": "MemPalace memory",
1651
1703
  "description": "Cross-session, cross-project memory: deliberate recall before discuss/plan and verbatim capture + temporal-KG sync at phase boundaries, via the MemPalace MCP server and CLI.",
1652
1704
  "tier": "full",
@@ -1807,7 +1859,7 @@ const capabilities = {
1807
1859
  "into": "verifier",
1808
1860
  "fragment": {
1809
1861
  "path": "fragments/capture-problems.md",
1810
- "inline": "<!--\n MemPalace capability — contribution fragment.\n Rendered into the execute:wave:post verifier prompt when `mempalace.capture_artifacts` is true.\n Contributes DATA (capture instructions), not control flow. onError: skip — never fails a wave.\n-->\n### Capture problems → fixes (MemPalace)\n\n**Gate first.** Read `.planning/config.json`. If `mempalace.enabled` is not `true`, or `mempalace.capture_artifacts` is `false`, **skip this entire section** and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the `capture_artifacts` check lets you turn capture off without disabling the rest of the capability.)\n\nOtherwise — after verifying this wave, persist any *confirmed* problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.\n\nFor each confirmed bug/issue resolved in this wave:\n\n1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.\n2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.\n3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: `mempalace mine` / `mempalace hook run`. Include provenance (`source_file`, phase id).\n4. **Mirror the KG fact** when `mempalace.mirror_kg` is on: add `(<bug>, fixed_by, <fix>)` with `valid_from` = the phase date via `mempalace_kg_add`.\n5. **Mode awareness** (`mempalace.memory_mode`). Under `augment` the fact is an *additive* mirror alongside `.planning/graphs/`. Under `kg_backend`/`replace` the palace is the *authoritative* store for the fact; GSD still writes `.planning/graphs/` through its normal graphify, so an unreachable palace never loses it.\n\nCaptures are idempotent: deterministic drawer IDs + `check_duplicate` mean re-running the wave re-files the same content without duplication. On any error, skip and let the wave complete normally.\n"
1862
+ "inline": "<!--\n MemPalace capability — contribution fragment.\n Rendered into the execute:wave:post verifier prompt when `mempalace.capture_artifacts` is true.\n Contributes DATA (capture instructions), not control flow. onError: skip — never fails a wave.\n-->\n### Capture problems → fixes (MemPalace)\n\n**Gate first.** Read `.planning/config.json`. If `mempalace.enabled` is not `true`, or `mempalace.capture_artifacts` is `false`, **skip this entire section** and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the `capture_artifacts` check lets you turn capture off without disabling the rest of the capability.)\n\nOtherwise — after verifying this wave, persist any *confirmed* problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.\n\nFor each confirmed bug/issue resolved in this wave:\n\n1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.\n2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.\n3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: stage the artifact under the `problems/` folder and run `mempalace mine` (no `--room` flag — see [CLI reference](https://mempalaceofficial.com/reference/cli.html); room assignment is via `detect_room()` folder-path match per the [mining guide](https://mempalaceofficial.com/guide/mining.html); use the same staging pattern documented in `gsd-mempalace-capture` Step 3). Include provenance (`source_file`, phase id).\n4. **Mirror the KG fact** when `mempalace.mirror_kg` is on: add `(<bug>, fixed_by, <fix>)` with `valid_from` = the phase date via `mempalace_kg_add`.\n5. **Mode awareness** (`mempalace.memory_mode`). Under `augment` the fact is an *additive* mirror alongside `.planning/graphs/`. Under `kg_backend`/`replace` the palace is the *authoritative* store for the fact; GSD still writes `.planning/graphs/` through its normal graphify, so an unreachable palace never loses it.\n\nCaptures are idempotent: deterministic drawer IDs + `check_duplicate` mean re-running the wave re-files the same content without duplication. On any error, skip and let the wave complete normally.\n"
1811
1863
  },
1812
1864
  "produces": [],
1813
1865
  "consumes": [],
@@ -1820,7 +1872,7 @@ const capabilities = {
1820
1872
  "nyquist": {
1821
1873
  "id": "nyquist",
1822
1874
  "role": "feature",
1823
- "version": "1.7.0-rc.5",
1875
+ "version": "1.7.0",
1824
1876
  "title": "Nyquist validation",
1825
1877
  "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.",
1826
1878
  "tier": "full",
@@ -1870,7 +1922,7 @@ const capabilities = {
1870
1922
  "opencode": {
1871
1923
  "id": "opencode",
1872
1924
  "role": "runtime",
1873
- "version": "1.7.0-rc.5",
1925
+ "version": "1.7.0",
1874
1926
  "title": "OpenCode",
1875
1927
  "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
1876
1928
  "tier": "core",
@@ -1968,14 +2020,15 @@ const capabilities = {
1968
2020
  "skipHomePrefixSubstitution": true,
1969
2021
  "skipSettingsUi": true,
1970
2022
  "skipUpdateBannerCommand": true,
1971
- "skipCodexSkillsManifest": true
2023
+ "skipCodexSkillsManifest": true,
2024
+ "reviewerCli": true
1972
2025
  }
1973
2026
  }
1974
2027
  },
1975
2028
  "pattern-mapper": {
1976
2029
  "id": "pattern-mapper",
1977
2030
  "role": "feature",
1978
- "version": "1.7.0-rc.5",
2031
+ "version": "1.7.0",
1979
2032
  "title": "Pattern mapping",
1980
2033
  "description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
1981
2034
  "tier": "full",
@@ -2026,10 +2079,70 @@ const capabilities = {
2026
2079
  "contributions": [],
2027
2080
  "gates": []
2028
2081
  },
2082
+ "pi": {
2083
+ "id": "pi",
2084
+ "role": "runtime",
2085
+ "version": "1.7.0",
2086
+ "title": "pi",
2087
+ "description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.cjs; no shared-settings hook surface; tier-2 support.",
2088
+ "tier": "core",
2089
+ "requires": [],
2090
+ "engines": {
2091
+ "gsd": ">=1.7.0"
2092
+ },
2093
+ "runtime": {
2094
+ "configHome": {
2095
+ "kind": "dot-home-nested",
2096
+ "name": "agent",
2097
+ "parent": ".pi",
2098
+ "env": []
2099
+ },
2100
+ "localConfigDir": ".pi",
2101
+ "configFormat": "none",
2102
+ "artifactLayout": {
2103
+ "global": [],
2104
+ "local": []
2105
+ },
2106
+ "commandStyle": "slash-hyphen",
2107
+ "hooksSurface": "none",
2108
+ "extensionEvents": "pi",
2109
+ "sandboxTier": "none",
2110
+ "supportTier": 2,
2111
+ "installSurface": "profile-marker-only",
2112
+ "writesSharedSettings": false,
2113
+ "permissionWriter": null,
2114
+ "extendedHookEvents": [],
2115
+ "hostIntegration": {
2116
+ "embeddingMode": "imperative",
2117
+ "commandSurface": "slash-programmatic",
2118
+ "dispatch": {
2119
+ "namedDispatch": false,
2120
+ "nested": false,
2121
+ "maxDepth": 0,
2122
+ "background": false,
2123
+ "backgroundDispatch": false,
2124
+ "subagentToolkit": "undocumented"
2125
+ },
2126
+ "modelMode": "active",
2127
+ "hookBus": "host",
2128
+ "stateIO": "session-log-append",
2129
+ "transport": "native-extension",
2130
+ "runtime": "bun"
2131
+ },
2132
+ "hostBehaviors": {
2133
+ "nativePlugin": {
2134
+ "dir": "extensions",
2135
+ "file": "gsd.cjs",
2136
+ "source": "pi/gsd.cjs"
2137
+ },
2138
+ "pluginOnlyInstall": true
2139
+ }
2140
+ }
2141
+ },
2029
2142
  "profile-pipeline": {
2030
2143
  "id": "profile-pipeline",
2031
2144
  "role": "feature",
2032
- "version": "1.7.0-rc.5",
2145
+ "version": "1.7.0",
2033
2146
  "title": "Developer profiling pipeline",
2034
2147
  "description": "Developer behavioral profiling from Claude Code session history; scans session JSONL files, extracts and samples user messages, and generates profile artifacts (USER-PROFILE.md, dev-preferences.md, CLAUDE.md sections). Exposes eight `gsd-tools` commands: scan-sessions, extract-messages, profile-sample (pipeline phase) and write-profile, profile-questionnaire, generate-dev-preferences, generate-claude-profile, generate-claude-md (output phase). Backs the /gsd-profile-user skill and gsd-user-profiler agent.",
2035
2148
  "tier": "full",
@@ -2106,7 +2219,7 @@ const capabilities = {
2106
2219
  "qwen": {
2107
2220
  "id": "qwen",
2108
2221
  "role": "runtime",
2109
- "version": "1.7.0-rc.5",
2222
+ "version": "1.7.0",
2110
2223
  "title": "Qwen Code",
2111
2224
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
2112
2225
  "tier": "core",
@@ -2133,6 +2246,14 @@ const capabilities = {
2133
2246
  "nesting": "nested",
2134
2247
  "recursive": false,
2135
2248
  "converter": "convertClaudeCommandToClaudeSkill"
2249
+ },
2250
+ {
2251
+ "kind": "agents",
2252
+ "destSubpath": "agents",
2253
+ "prefix": "gsd-",
2254
+ "nesting": "flat",
2255
+ "recursive": false,
2256
+ "converter": "convertClaudeAgentToQwenAgent"
2136
2257
  }
2137
2258
  ],
2138
2259
  "local": [
@@ -2143,6 +2264,14 @@ const capabilities = {
2143
2264
  "nesting": "nested",
2144
2265
  "recursive": false,
2145
2266
  "converter": "convertClaudeCommandToClaudeSkill"
2267
+ },
2268
+ {
2269
+ "kind": "agents",
2270
+ "destSubpath": "agents",
2271
+ "prefix": "gsd-",
2272
+ "nesting": "flat",
2273
+ "recursive": false,
2274
+ "converter": "convertClaudeAgentToQwenAgent"
2146
2275
  }
2147
2276
  ]
2148
2277
  },
@@ -2157,7 +2286,8 @@ const capabilities = {
2157
2286
  "extendedHookEvents": [
2158
2287
  "SubagentStop",
2159
2288
  "Stop",
2160
- "PreCompact"
2289
+ "PreCompact",
2290
+ "SubagentStart"
2161
2291
  ],
2162
2292
  "hostIntegration": {
2163
2293
  "embeddingMode": "imperative",
@@ -2175,13 +2305,26 @@ const capabilities = {
2175
2305
  "stateIO": "filesystem",
2176
2306
  "transport": "mcp",
2177
2307
  "runtime": "node"
2308
+ },
2309
+ "hostBehaviors": {
2310
+ "skillPriorityFrontmatter": true,
2311
+ "brandingRewrites": {
2312
+ "CLAUDE.md": "QWEN.md",
2313
+ "Claude Code": "Qwen Code",
2314
+ ".claude/": ".qwen/"
2315
+ },
2316
+ "legacyCommandsGsdCleanup": true,
2317
+ "legacyCommandsGsdInstallMigration": true,
2318
+ "legacyCommandsGsdUninstall": true,
2319
+ "hyphenNameAgentBody": true,
2320
+ "reviewerCli": true
2178
2321
  }
2179
2322
  }
2180
2323
  },
2181
2324
  "research": {
2182
2325
  "id": "research",
2183
2326
  "role": "feature",
2184
- "version": "1.7.0-rc.5",
2327
+ "version": "1.7.0",
2185
2328
  "title": "Phase research",
2186
2329
  "description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
2187
2330
  "tier": "standard",
@@ -2233,7 +2376,7 @@ const capabilities = {
2233
2376
  "schema-gate": {
2234
2377
  "id": "schema-gate",
2235
2378
  "role": "feature",
2236
- "version": "1.7.0-rc.5",
2379
+ "version": "1.7.0",
2237
2380
  "title": "Schema push detection gate",
2238
2381
  "description": "Detects ORM schema-relevant files in the phase scope during planning and injects a mandatory [BLOCKING] schema push task into the plan. Prevents false-positive verification where build/types pass because TypeScript types come from config, not the live database.",
2239
2382
  "tier": "full",
@@ -2279,7 +2422,7 @@ const capabilities = {
2279
2422
  "security": {
2280
2423
  "id": "security",
2281
2424
  "role": "feature",
2282
- "version": "1.7.0-rc.5",
2425
+ "version": "1.7.0",
2283
2426
  "title": "Security enforcement",
2284
2427
  "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
2285
2428
  "tier": "full",
@@ -2378,7 +2521,7 @@ const capabilities = {
2378
2521
  "tdd": {
2379
2522
  "id": "tdd",
2380
2523
  "role": "feature",
2381
- "version": "1.7.0-rc.5",
2524
+ "version": "1.7.0",
2382
2525
  "title": "Test-driven development",
2383
2526
  "description": "Injects TDD heuristics into the planner and enforces RED/GREEN gate compliance on type:tdd plans after execution. Owns workflow.tdd_mode; the --tdd CLI flag is the ephemeral override.",
2384
2527
  "tier": "full",
@@ -2431,7 +2574,7 @@ const capabilities = {
2431
2574
  "trae": {
2432
2575
  "id": "trae",
2433
2576
  "role": "runtime",
2434
- "version": "1.7.0-rc.5",
2577
+ "version": "1.7.0",
2435
2578
  "title": "Trae IDE",
2436
2579
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
2437
2580
  "tier": "core",
@@ -2511,13 +2654,17 @@ const capabilities = {
2511
2654
  "stateIO": "filesystem",
2512
2655
  "transport": "mcp",
2513
2656
  "runtime": "node"
2657
+ },
2658
+ "hostBehaviors": {
2659
+ "skipSharedHooksInstall": true,
2660
+ "soloStageMetadata": "workflow"
2514
2661
  }
2515
2662
  }
2516
2663
  },
2517
2664
  "ui": {
2518
2665
  "id": "ui",
2519
2666
  "role": "feature",
2520
- "version": "1.7.0-rc.5",
2667
+ "version": "1.7.0",
2521
2668
  "title": "UI design contracts",
2522
2669
  "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
2523
2670
  "tier": "full",
@@ -2609,12 +2756,63 @@ const capabilities = {
2609
2756
  }
2610
2757
  ]
2611
2758
  },
2759
+ "vscode": {
2760
+ "id": "vscode",
2761
+ "role": "runtime",
2762
+ "version": "1.7.0",
2763
+ "title": "VS Code",
2764
+ "description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).",
2765
+ "tier": "core",
2766
+ "requires": [],
2767
+ "engines": {
2768
+ "gsd": ">=1.7.0"
2769
+ },
2770
+ "runtime": {
2771
+ "configHome": {
2772
+ "kind": "none",
2773
+ "name": "vscode",
2774
+ "env": []
2775
+ },
2776
+ "localConfigDir": null,
2777
+ "configFormat": "none",
2778
+ "artifactLayout": {
2779
+ "global": [],
2780
+ "local": []
2781
+ },
2782
+ "commandStyle": "slash-hyphen",
2783
+ "hooksSurface": "none",
2784
+ "extensionEvents": "none",
2785
+ "sandboxTier": "none",
2786
+ "supportTier": 1,
2787
+ "installSurface": "none",
2788
+ "writesSharedSettings": false,
2789
+ "permissionWriter": null,
2790
+ "extendedHookEvents": [],
2791
+ "hostIntegration": {
2792
+ "embeddingMode": "imperative",
2793
+ "commandSurface": "palette",
2794
+ "dispatch": {
2795
+ "namedDispatch": true,
2796
+ "nested": true,
2797
+ "maxDepth": 5,
2798
+ "background": true,
2799
+ "subagentToolkit": "undocumented",
2800
+ "backgroundDispatch": "undocumented"
2801
+ },
2802
+ "modelMode": "active",
2803
+ "hookBus": "engine",
2804
+ "stateIO": "sandboxed-storage",
2805
+ "transport": "mcp",
2806
+ "runtime": "sandboxed-web"
2807
+ }
2808
+ }
2809
+ },
2612
2810
  "windsurf": {
2613
2811
  "id": "windsurf",
2614
2812
  "role": "runtime",
2615
- "version": "1.7.0-rc.5",
2813
+ "version": "1.7.0",
2616
2814
  "title": "Windsurf",
2617
- "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.",
2815
+ "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.",
2618
2816
  "tier": "core",
2619
2817
  "requires": [],
2620
2818
  "engines": {
@@ -2662,7 +2860,7 @@ const capabilities = {
2662
2860
  ]
2663
2861
  },
2664
2862
  "commandStyle": "slash-hyphen",
2665
- "hooksSurface": "none",
2863
+ "hooksSurface": "windsurf-hooks-json",
2666
2864
  "sandboxTier": "none",
2667
2865
  "supportTier": 2,
2668
2866
  "installSurface": "profile-marker-only",
@@ -2685,13 +2883,19 @@ const capabilities = {
2685
2883
  "stateIO": "filesystem",
2686
2884
  "transport": "mcp",
2687
2885
  "runtime": "undocumented"
2886
+ },
2887
+ "hostBehaviors": {
2888
+ "skipSharedHooksInstall": true,
2889
+ "legacyDevinSkillsCleanup": true,
2890
+ "installsCommandBodiesForWorkflowDelegation": true,
2891
+ "verificationStyle": "windsurf-workflows"
2688
2892
  }
2689
2893
  }
2690
2894
  },
2691
2895
  "zcode": {
2692
2896
  "id": "zcode",
2693
2897
  "role": "runtime",
2694
- "version": "1.7.0-rc.5",
2898
+ "version": "1.7.0",
2695
2899
  "title": "ZCode",
2696
2900
  "description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills/<name>/SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.",
2697
2901
  "tier": "core",
@@ -2787,6 +2991,9 @@ const capabilities = {
2787
2991
  "stateIO": "filesystem",
2788
2992
  "transport": "mcp",
2789
2993
  "runtime": "electron"
2994
+ },
2995
+ "hostBehaviors": {
2996
+ "skipSharedHooksInstall": true
2790
2997
  }
2791
2998
  }
2792
2999
  }
@@ -3171,7 +3378,7 @@ const byLoopPoint = {
3171
3378
  "into": "verifier",
3172
3379
  "fragment": {
3173
3380
  "path": "fragments/capture-problems.md",
3174
- "inline": "<!--\n MemPalace capability — contribution fragment.\n Rendered into the execute:wave:post verifier prompt when `mempalace.capture_artifacts` is true.\n Contributes DATA (capture instructions), not control flow. onError: skip — never fails a wave.\n-->\n### Capture problems → fixes (MemPalace)\n\n**Gate first.** Read `.planning/config.json`. If `mempalace.enabled` is not `true`, or `mempalace.capture_artifacts` is `false`, **skip this entire section** and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the `capture_artifacts` check lets you turn capture off without disabling the rest of the capability.)\n\nOtherwise — after verifying this wave, persist any *confirmed* problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.\n\nFor each confirmed bug/issue resolved in this wave:\n\n1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.\n2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.\n3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: `mempalace mine` / `mempalace hook run`. Include provenance (`source_file`, phase id).\n4. **Mirror the KG fact** when `mempalace.mirror_kg` is on: add `(<bug>, fixed_by, <fix>)` with `valid_from` = the phase date via `mempalace_kg_add`.\n5. **Mode awareness** (`mempalace.memory_mode`). Under `augment` the fact is an *additive* mirror alongside `.planning/graphs/`. Under `kg_backend`/`replace` the palace is the *authoritative* store for the fact; GSD still writes `.planning/graphs/` through its normal graphify, so an unreachable palace never loses it.\n\nCaptures are idempotent: deterministic drawer IDs + `check_duplicate` mean re-running the wave re-files the same content without duplication. On any error, skip and let the wave complete normally.\n"
3381
+ "inline": "<!--\n MemPalace capability — contribution fragment.\n Rendered into the execute:wave:post verifier prompt when `mempalace.capture_artifacts` is true.\n Contributes DATA (capture instructions), not control flow. onError: skip — never fails a wave.\n-->\n### Capture problems → fixes (MemPalace)\n\n**Gate first.** Read `.planning/config.json`. If `mempalace.enabled` is not `true`, or `mempalace.capture_artifacts` is `false`, **skip this entire section** and let the wave complete unchanged. (This contribution is only injected when the capability is enabled; the `capture_artifacts` check lets you turn capture off without disabling the rest of the capability.)\n\nOtherwise — after verifying this wave, persist any *confirmed* problem→fix pairs into the palace so they are recalled in future phases. This is best-effort; if MemPalace is unreachable, skip silently — capture never fails a wave.\n\nFor each confirmed bug/issue resolved in this wave:\n\n1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.\n2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.\n3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: stage the artifact under the `problems/` folder and run `mempalace mine` (no `--room` flag — see [CLI reference](https://mempalaceofficial.com/reference/cli.html); room assignment is via `detect_room()` folder-path match per the [mining guide](https://mempalaceofficial.com/guide/mining.html); use the same staging pattern documented in `gsd-mempalace-capture` Step 3). Include provenance (`source_file`, phase id).\n4. **Mirror the KG fact** when `mempalace.mirror_kg` is on: add `(<bug>, fixed_by, <fix>)` with `valid_from` = the phase date via `mempalace_kg_add`.\n5. **Mode awareness** (`mempalace.memory_mode`). Under `augment` the fact is an *additive* mirror alongside `.planning/graphs/`. Under `kg_backend`/`replace` the palace is the *authoritative* store for the fact; GSD still writes `.planning/graphs/` through its normal graphify, so an unreachable palace never loses it.\n\nCaptures are idempotent: deterministic drawer IDs + `check_duplicate` mean re-running the wave re-files the same content without duplication. On any error, skip and let the wave complete normally.\n"
3175
3382
  },
3176
3383
  "produces": [],
3177
3384
  "consumes": [],
@@ -3699,7 +3906,7 @@ const runtimes = {
3699
3906
  "antigravity": {
3700
3907
  "id": "antigravity",
3701
3908
  "role": "runtime",
3702
- "version": "1.7.0-rc.5",
3909
+ "version": "1.7.0",
3703
3910
  "title": "Antigravity",
3704
3911
  "description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; flat skill layout; tier-1 support.",
3705
3912
  "tier": "core",
@@ -3769,7 +3976,7 @@ const runtimes = {
3769
3976
  "supportTier": 1,
3770
3977
  "installSurface": "settings-json",
3771
3978
  "writesSharedSettings": true,
3772
- "permissionWriter": null,
3979
+ "permissionWriter": "antigravity",
3773
3980
  "extendedHookEvents": [],
3774
3981
  "hostIntegration": {
3775
3982
  "embeddingMode": "declarative",
@@ -3779,7 +3986,7 @@ const runtimes = {
3779
3986
  "nested": "undocumented",
3780
3987
  "maxDepth": "undocumented",
3781
3988
  "background": true,
3782
- "subagentToolkit": "undocumented",
3989
+ "subagentToolkit": "full",
3783
3990
  "backgroundDispatch": "undocumented"
3784
3991
  },
3785
3992
  "modelMode": "passive",
@@ -3787,13 +3994,20 @@ const runtimes = {
3787
3994
  "stateIO": "filesystem",
3788
3995
  "transport": "mcp",
3789
3996
  "runtime": "go"
3997
+ },
3998
+ "hostBehaviors": {
3999
+ "reviewerCli": true,
4000
+ "projectInstructionFile": "GEMINI.md",
4001
+ "noPathRewrite": true,
4002
+ "hookPathStyle": "raw",
4003
+ "globalDirResolver": "antigravity"
3790
4004
  }
3791
4005
  }
3792
4006
  },
3793
4007
  "augment": {
3794
4008
  "id": "augment",
3795
4009
  "role": "runtime",
3796
- "version": "1.7.0-rc.5",
4010
+ "version": "1.7.0",
3797
4011
  "title": "Augment Code",
3798
4012
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
3799
4013
  "tier": "core",
@@ -3874,6 +4088,10 @@ const runtimes = {
3874
4088
  "writesSharedSettings": true,
3875
4089
  "permissionWriter": null,
3876
4090
  "extendedHookEvents": [],
4091
+ "hostBehaviors": {
4092
+ "commandBodyConverter": "convertClaudeToAugmentMarkdown",
4093
+ "mcpCompanion": "settings-json"
4094
+ },
3877
4095
  "hostIntegration": {
3878
4096
  "embeddingMode": "declarative",
3879
4097
  "commandSurface": "slash-file",
@@ -3896,7 +4114,7 @@ const runtimes = {
3896
4114
  "claude": {
3897
4115
  "id": "claude",
3898
4116
  "role": "runtime",
3899
- "version": "1.7.0-rc.5",
4117
+ "version": "1.7.0",
3900
4118
  "title": "Claude Code",
3901
4119
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
3902
4120
  "tier": "core",
@@ -3990,14 +4208,18 @@ const runtimes = {
3990
4208
  ],
3991
4209
  "ownsClaudePaths": true,
3992
4210
  "nativeModelAliases": true,
3993
- "skillsGlobalOnboarding": true
4211
+ "skillsGlobalOnboarding": true,
4212
+ "legacyCommandsGsdInstallMigration": true,
4213
+ "legacyCommandsGsdUninstall": "global",
4214
+ "hyphenNameAgentBody": true,
4215
+ "reviewerCli": true
3994
4216
  }
3995
4217
  }
3996
4218
  },
3997
4219
  "cline": {
3998
4220
  "id": "cline",
3999
4221
  "role": "runtime",
4000
- "version": "1.7.0-rc.5",
4222
+ "version": "1.7.0",
4001
4223
  "title": "Cline",
4002
4224
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
4003
4225
  "tier": "core",
@@ -4066,7 +4288,7 @@ const runtimes = {
4066
4288
  "codebuddy": {
4067
4289
  "id": "codebuddy",
4068
4290
  "role": "runtime",
4069
- "version": "1.7.0-rc.5",
4291
+ "version": "1.7.0",
4070
4292
  "title": "CodeBuddy",
4071
4293
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
4072
4294
  "tier": "core",
@@ -4146,7 +4368,12 @@ const runtimes = {
4146
4368
  "installSurface": "settings-json",
4147
4369
  "writesSharedSettings": true,
4148
4370
  "permissionWriter": null,
4149
- "extendedHookEvents": [],
4371
+ "extendedHookEvents": [
4372
+ "SubagentStop",
4373
+ "Stop",
4374
+ "PreCompact",
4375
+ "SubagentStart"
4376
+ ],
4150
4377
  "hostIntegration": {
4151
4378
  "embeddingMode": "declarative",
4152
4379
  "commandSurface": "slash-file",
@@ -4163,13 +4390,16 @@ const runtimes = {
4163
4390
  "stateIO": "filesystem",
4164
4391
  "transport": "mcp",
4165
4392
  "runtime": "node"
4393
+ },
4394
+ "hostBehaviors": {
4395
+ "reportCommandsDir": true
4166
4396
  }
4167
4397
  }
4168
4398
  },
4169
4399
  "codex": {
4170
4400
  "id": "codex",
4171
4401
  "role": "runtime",
4172
- "version": "1.7.0-rc.5",
4402
+ "version": "1.7.0",
4173
4403
  "title": "OpenAI Codex CLI",
4174
4404
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
4175
4405
  "tier": "core",
@@ -4246,14 +4476,15 @@ const runtimes = {
4246
4476
  "tomlConfigInstall": true,
4247
4477
  "cleanupSkillSidecars": true,
4248
4478
  "agentTomlFiles": true,
4249
- "frontmatterDialect": "codex"
4479
+ "frontmatterDialect": "codex",
4480
+ "reviewerCli": true
4250
4481
  }
4251
4482
  }
4252
4483
  },
4253
4484
  "copilot": {
4254
4485
  "id": "copilot",
4255
4486
  "role": "runtime",
4256
- "version": "1.7.0-rc.5",
4487
+ "version": "1.7.0",
4257
4488
  "title": "GitHub Copilot",
4258
4489
  "description": "GitHub Copilot (VS Code) — markdown config format; copilot-inline hook surface; no hook events emitted; flat skill nesting (unconfirmed recursive loader); tier-2 support.",
4259
4490
  "tier": "core",
@@ -4336,14 +4567,17 @@ const runtimes = {
4336
4567
  "runtime": "undocumented"
4337
4568
  },
4338
4569
  "hostBehaviors": {
4339
- "reapplyCommand": "/gsd-update --reapply"
4570
+ "reapplyCommand": "/gsd-update --reapply",
4571
+ "agentFileExtension": ".agent.md",
4572
+ "skipSharedHooksInstall": true,
4573
+ "noPathRewrite": true
4340
4574
  }
4341
4575
  }
4342
4576
  },
4343
4577
  "cursor": {
4344
4578
  "id": "cursor",
4345
4579
  "role": "runtime",
4346
- "version": "1.7.0-rc.5",
4580
+ "version": "1.7.0",
4347
4581
  "title": "Cursor",
4348
4582
  "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
4349
4583
  "tier": "core",
@@ -4456,14 +4690,15 @@ const runtimes = {
4456
4690
  "stop",
4457
4691
  "subagentStart",
4458
4692
  "subagentStop"
4459
- ]
4693
+ ],
4694
+ "reviewerCli": true
4460
4695
  }
4461
4696
  }
4462
4697
  },
4463
4698
  "hermes": {
4464
4699
  "id": "hermes",
4465
4700
  "role": "runtime",
4466
- "version": "1.7.0-rc.5",
4701
+ "version": "1.7.0",
4467
4702
  "title": "Hermes Agent",
4468
4703
  "description": "Hermes Agent (NousResearch) — skills nest under skills/gsd/ category bucket; nested skill layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
4469
4704
  "tier": "core",
@@ -4525,7 +4760,10 @@ const runtimes = {
4525
4760
  "Claude Code": "Hermes Agent",
4526
4761
  ".claude/": ".hermes/"
4527
4762
  },
4528
- "reapplyCommand": "gsd-update --reapply (mention the skill name)"
4763
+ "reapplyCommand": "gsd-update --reapply (mention the skill name)",
4764
+ "legacyCommandsGsdInstallMigration": true,
4765
+ "legacyCommandsGsdUninstall": true,
4766
+ "hyphenNameAgentBody": true
4529
4767
  },
4530
4768
  "hostIntegration": {
4531
4769
  "embeddingMode": "imperative",
@@ -4549,7 +4787,7 @@ const runtimes = {
4549
4787
  "kilo": {
4550
4788
  "id": "kilo",
4551
4789
  "role": "runtime",
4552
- "version": "1.7.0-rc.5",
4790
+ "version": "1.7.0",
4553
4791
  "title": "Kilo Code",
4554
4792
  "description": "Kilo Code — XDG-based config dir; global skills at ~/.kilo/skills (separate from XDG config); flat command/ + skills artifact layout; no lifecycle hook registration; tier-2 support.",
4555
4793
  "tier": "core",
@@ -4614,6 +4852,7 @@ const runtimes = {
4614
4852
  },
4615
4853
  "commandStyle": "slash-hyphen",
4616
4854
  "hooksSurface": "none",
4855
+ "extensionEvents": "kilo",
4617
4856
  "sandboxTier": "none",
4618
4857
  "supportTier": 2,
4619
4858
  "installSurface": "settings-json",
@@ -4643,16 +4882,22 @@ const runtimes = {
4643
4882
  "flatCommandDir": "command",
4644
4883
  "combinedFamilyInstall": true,
4645
4884
  "frontmatterDialect": "kilo",
4646
- "skipUpdateBannerCommand": true
4885
+ "nativePlugin": {
4886
+ "dir": "plugins",
4887
+ "file": "gsd-core.js",
4888
+ "source": ".kilo/plugins/gsd-core.js"
4889
+ },
4890
+ "skipUpdateBannerCommand": true,
4891
+ "skipSharedHooksInstall": true
4647
4892
  }
4648
4893
  }
4649
4894
  },
4650
4895
  "kimi": {
4651
4896
  "id": "kimi",
4652
4897
  "role": "runtime",
4653
- "version": "1.7.0-rc.5",
4898
+ "version": "1.7.0",
4654
4899
  "title": "Kimi CLI",
4655
- "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; no hook surface; no hook events; tier-2 support.",
4900
+ "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.",
4656
4901
  "tier": "core",
4657
4902
  "requires": [],
4658
4903
  "engines": {
@@ -4695,13 +4940,19 @@ const runtimes = {
4695
4940
  "local": []
4696
4941
  },
4697
4942
  "commandStyle": "slash-hyphen",
4698
- "hooksSurface": "none",
4943
+ "hooksSurface": "kimi-hooks-toml",
4944
+ "hookEvents": "claude",
4699
4945
  "sandboxTier": "none",
4700
4946
  "supportTier": 2,
4701
4947
  "installSurface": "profile-marker-only",
4702
4948
  "writesSharedSettings": false,
4703
4949
  "permissionWriter": null,
4704
- "extendedHookEvents": [],
4950
+ "extendedHookEvents": [
4951
+ "SubagentStop",
4952
+ "Stop",
4953
+ "PreCompact",
4954
+ "SubagentStart"
4955
+ ],
4705
4956
  "hostIntegration": {
4706
4957
  "embeddingMode": "imperative",
4707
4958
  "commandSurface": "slash-file",
@@ -4711,20 +4962,28 @@ const runtimes = {
4711
4962
  "maxDepth": 1,
4712
4963
  "background": true,
4713
4964
  "subagentToolkit": "undocumented",
4714
- "backgroundDispatch": false
4965
+ "backgroundDispatch": true
4715
4966
  },
4716
4967
  "modelMode": "passive",
4717
4968
  "hookBus": "host",
4718
4969
  "stateIO": "filesystem",
4719
4970
  "transport": "mcp",
4720
4971
  "runtime": "python"
4972
+ },
4973
+ "hostBehaviors": {
4974
+ "reapplyCommand": "/skill:gsd-update --reapply",
4975
+ "localInstallDeferred": true,
4976
+ "verificationStyle": "kimi",
4977
+ "agentManifestStyle": "kimi-nested",
4978
+ "doneBannerStyle": "kimi-agent-file",
4979
+ "skipSharedHooksInstall": true
4721
4980
  }
4722
4981
  }
4723
4982
  },
4724
4983
  "opencode": {
4725
4984
  "id": "opencode",
4726
4985
  "role": "runtime",
4727
- "version": "1.7.0-rc.5",
4986
+ "version": "1.7.0",
4728
4987
  "title": "OpenCode",
4729
4988
  "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
4730
4989
  "tier": "core",
@@ -4822,14 +5081,75 @@ const runtimes = {
4822
5081
  "skipHomePrefixSubstitution": true,
4823
5082
  "skipSettingsUi": true,
4824
5083
  "skipUpdateBannerCommand": true,
4825
- "skipCodexSkillsManifest": true
5084
+ "skipCodexSkillsManifest": true,
5085
+ "reviewerCli": true
5086
+ }
5087
+ }
5088
+ },
5089
+ "pi": {
5090
+ "id": "pi",
5091
+ "role": "runtime",
5092
+ "version": "1.7.0",
5093
+ "title": "pi",
5094
+ "description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.cjs; no shared-settings hook surface; tier-2 support.",
5095
+ "tier": "core",
5096
+ "requires": [],
5097
+ "engines": {
5098
+ "gsd": ">=1.7.0"
5099
+ },
5100
+ "runtime": {
5101
+ "configHome": {
5102
+ "kind": "dot-home-nested",
5103
+ "name": "agent",
5104
+ "parent": ".pi",
5105
+ "env": []
5106
+ },
5107
+ "localConfigDir": ".pi",
5108
+ "configFormat": "none",
5109
+ "artifactLayout": {
5110
+ "global": [],
5111
+ "local": []
5112
+ },
5113
+ "commandStyle": "slash-hyphen",
5114
+ "hooksSurface": "none",
5115
+ "extensionEvents": "pi",
5116
+ "sandboxTier": "none",
5117
+ "supportTier": 2,
5118
+ "installSurface": "profile-marker-only",
5119
+ "writesSharedSettings": false,
5120
+ "permissionWriter": null,
5121
+ "extendedHookEvents": [],
5122
+ "hostIntegration": {
5123
+ "embeddingMode": "imperative",
5124
+ "commandSurface": "slash-programmatic",
5125
+ "dispatch": {
5126
+ "namedDispatch": false,
5127
+ "nested": false,
5128
+ "maxDepth": 0,
5129
+ "background": false,
5130
+ "backgroundDispatch": false,
5131
+ "subagentToolkit": "undocumented"
5132
+ },
5133
+ "modelMode": "active",
5134
+ "hookBus": "host",
5135
+ "stateIO": "session-log-append",
5136
+ "transport": "native-extension",
5137
+ "runtime": "bun"
5138
+ },
5139
+ "hostBehaviors": {
5140
+ "nativePlugin": {
5141
+ "dir": "extensions",
5142
+ "file": "gsd.cjs",
5143
+ "source": "pi/gsd.cjs"
5144
+ },
5145
+ "pluginOnlyInstall": true
4826
5146
  }
4827
5147
  }
4828
5148
  },
4829
5149
  "qwen": {
4830
5150
  "id": "qwen",
4831
5151
  "role": "runtime",
4832
- "version": "1.7.0-rc.5",
5152
+ "version": "1.7.0",
4833
5153
  "title": "Qwen Code",
4834
5154
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
4835
5155
  "tier": "core",
@@ -4856,6 +5176,14 @@ const runtimes = {
4856
5176
  "nesting": "nested",
4857
5177
  "recursive": false,
4858
5178
  "converter": "convertClaudeCommandToClaudeSkill"
5179
+ },
5180
+ {
5181
+ "kind": "agents",
5182
+ "destSubpath": "agents",
5183
+ "prefix": "gsd-",
5184
+ "nesting": "flat",
5185
+ "recursive": false,
5186
+ "converter": "convertClaudeAgentToQwenAgent"
4859
5187
  }
4860
5188
  ],
4861
5189
  "local": [
@@ -4866,6 +5194,14 @@ const runtimes = {
4866
5194
  "nesting": "nested",
4867
5195
  "recursive": false,
4868
5196
  "converter": "convertClaudeCommandToClaudeSkill"
5197
+ },
5198
+ {
5199
+ "kind": "agents",
5200
+ "destSubpath": "agents",
5201
+ "prefix": "gsd-",
5202
+ "nesting": "flat",
5203
+ "recursive": false,
5204
+ "converter": "convertClaudeAgentToQwenAgent"
4869
5205
  }
4870
5206
  ]
4871
5207
  },
@@ -4880,7 +5216,8 @@ const runtimes = {
4880
5216
  "extendedHookEvents": [
4881
5217
  "SubagentStop",
4882
5218
  "Stop",
4883
- "PreCompact"
5219
+ "PreCompact",
5220
+ "SubagentStart"
4884
5221
  ],
4885
5222
  "hostIntegration": {
4886
5223
  "embeddingMode": "imperative",
@@ -4898,13 +5235,26 @@ const runtimes = {
4898
5235
  "stateIO": "filesystem",
4899
5236
  "transport": "mcp",
4900
5237
  "runtime": "node"
5238
+ },
5239
+ "hostBehaviors": {
5240
+ "skillPriorityFrontmatter": true,
5241
+ "brandingRewrites": {
5242
+ "CLAUDE.md": "QWEN.md",
5243
+ "Claude Code": "Qwen Code",
5244
+ ".claude/": ".qwen/"
5245
+ },
5246
+ "legacyCommandsGsdCleanup": true,
5247
+ "legacyCommandsGsdInstallMigration": true,
5248
+ "legacyCommandsGsdUninstall": true,
5249
+ "hyphenNameAgentBody": true,
5250
+ "reviewerCli": true
4901
5251
  }
4902
5252
  }
4903
5253
  },
4904
5254
  "trae": {
4905
5255
  "id": "trae",
4906
5256
  "role": "runtime",
4907
- "version": "1.7.0-rc.5",
5257
+ "version": "1.7.0",
4908
5258
  "title": "Trae IDE",
4909
5259
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
4910
5260
  "tier": "core",
@@ -4984,15 +5334,70 @@ const runtimes = {
4984
5334
  "stateIO": "filesystem",
4985
5335
  "transport": "mcp",
4986
5336
  "runtime": "node"
5337
+ },
5338
+ "hostBehaviors": {
5339
+ "skipSharedHooksInstall": true,
5340
+ "soloStageMetadata": "workflow"
5341
+ }
5342
+ }
5343
+ },
5344
+ "vscode": {
5345
+ "id": "vscode",
5346
+ "role": "runtime",
5347
+ "version": "1.7.0",
5348
+ "title": "VS Code",
5349
+ "description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).",
5350
+ "tier": "core",
5351
+ "requires": [],
5352
+ "engines": {
5353
+ "gsd": ">=1.7.0"
5354
+ },
5355
+ "runtime": {
5356
+ "configHome": {
5357
+ "kind": "none",
5358
+ "name": "vscode",
5359
+ "env": []
5360
+ },
5361
+ "localConfigDir": null,
5362
+ "configFormat": "none",
5363
+ "artifactLayout": {
5364
+ "global": [],
5365
+ "local": []
5366
+ },
5367
+ "commandStyle": "slash-hyphen",
5368
+ "hooksSurface": "none",
5369
+ "extensionEvents": "none",
5370
+ "sandboxTier": "none",
5371
+ "supportTier": 1,
5372
+ "installSurface": "none",
5373
+ "writesSharedSettings": false,
5374
+ "permissionWriter": null,
5375
+ "extendedHookEvents": [],
5376
+ "hostIntegration": {
5377
+ "embeddingMode": "imperative",
5378
+ "commandSurface": "palette",
5379
+ "dispatch": {
5380
+ "namedDispatch": true,
5381
+ "nested": true,
5382
+ "maxDepth": 5,
5383
+ "background": true,
5384
+ "subagentToolkit": "undocumented",
5385
+ "backgroundDispatch": "undocumented"
5386
+ },
5387
+ "modelMode": "active",
5388
+ "hookBus": "engine",
5389
+ "stateIO": "sandboxed-storage",
5390
+ "transport": "mcp",
5391
+ "runtime": "sandboxed-web"
4987
5392
  }
4988
5393
  }
4989
5394
  },
4990
5395
  "windsurf": {
4991
5396
  "id": "windsurf",
4992
5397
  "role": "runtime",
4993
- "version": "1.7.0-rc.5",
5398
+ "version": "1.7.0",
4994
5399
  "title": "Windsurf",
4995
- "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.",
5400
+ "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.",
4996
5401
  "tier": "core",
4997
5402
  "requires": [],
4998
5403
  "engines": {
@@ -5040,7 +5445,7 @@ const runtimes = {
5040
5445
  ]
5041
5446
  },
5042
5447
  "commandStyle": "slash-hyphen",
5043
- "hooksSurface": "none",
5448
+ "hooksSurface": "windsurf-hooks-json",
5044
5449
  "sandboxTier": "none",
5045
5450
  "supportTier": 2,
5046
5451
  "installSurface": "profile-marker-only",
@@ -5063,13 +5468,19 @@ const runtimes = {
5063
5468
  "stateIO": "filesystem",
5064
5469
  "transport": "mcp",
5065
5470
  "runtime": "undocumented"
5471
+ },
5472
+ "hostBehaviors": {
5473
+ "skipSharedHooksInstall": true,
5474
+ "legacyDevinSkillsCleanup": true,
5475
+ "installsCommandBodiesForWorkflowDelegation": true,
5476
+ "verificationStyle": "windsurf-workflows"
5066
5477
  }
5067
5478
  }
5068
5479
  },
5069
5480
  "zcode": {
5070
5481
  "id": "zcode",
5071
5482
  "role": "runtime",
5072
- "version": "1.7.0-rc.5",
5483
+ "version": "1.7.0",
5073
5484
  "title": "ZCode",
5074
5485
  "description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills/<name>/SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.",
5075
5486
  "tier": "core",
@@ -5165,6 +5576,9 @@ const runtimes = {
5165
5576
  "stateIO": "filesystem",
5166
5577
  "transport": "mcp",
5167
5578
  "runtime": "electron"
5579
+ },
5580
+ "hostBehaviors": {
5581
+ "skipSharedHooksInstall": true
5168
5582
  }
5169
5583
  }
5170
5584
  }
@@ -5346,6 +5760,7 @@ const _requiresGraph = {
5346
5760
  "pattern-mapper": [
5347
5761
  "research"
5348
5762
  ],
5763
+ "pi": [],
5349
5764
  "profile-pipeline": [],
5350
5765
  "qwen": [],
5351
5766
  "research": [],
@@ -5354,6 +5769,7 @@ const _requiresGraph = {
5354
5769
  "tdd": [],
5355
5770
  "trae": [],
5356
5771
  "ui": [],
5772
+ "vscode": [],
5357
5773
  "windsurf": [],
5358
5774
  "zcode": []
5359
5775
  };