@opengsd/gsd-core 1.6.1 → 1.7.0-rc.2

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 (119) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.opencode/plugins/gsd-core.js +711 -0
  4. package/agents/gsd-advisor-researcher.md +2 -0
  5. package/agents/gsd-ai-researcher.md +1 -1
  6. package/agents/gsd-assumptions-analyzer.md +2 -0
  7. package/agents/gsd-code-fixer.md +2 -0
  8. package/agents/gsd-code-reviewer.md +2 -0
  9. package/agents/gsd-codebase-mapper.md +2 -0
  10. package/agents/gsd-debugger.md +2 -0
  11. package/agents/gsd-doc-writer.md +2 -0
  12. package/agents/gsd-eval-auditor.md +2 -0
  13. package/agents/gsd-executor.md +9 -6
  14. package/agents/gsd-integration-checker.md +2 -0
  15. package/agents/gsd-nyquist-auditor.md +2 -0
  16. package/agents/gsd-phase-researcher.md +2 -0
  17. package/agents/gsd-plan-checker.md +2 -0
  18. package/agents/gsd-planner.md +2 -0
  19. package/agents/gsd-project-researcher.md +2 -0
  20. package/agents/gsd-research-synthesizer.md +2 -0
  21. package/agents/gsd-roadmapper.md +2 -0
  22. package/agents/gsd-security-auditor.md +2 -0
  23. package/agents/gsd-ui-auditor.md +2 -0
  24. package/agents/gsd-ui-checker.md +2 -0
  25. package/agents/gsd-ui-researcher.md +2 -0
  26. package/agents/gsd-verifier.md +5 -2
  27. package/bin/gsd-mcp-server.js +31 -0
  28. package/bin/install.js +411 -1146
  29. package/commands/gsd/review.md +6 -0
  30. package/gemini-extension.json +1 -1
  31. package/gsd-core/bin/gsd-tools.cjs +134 -8
  32. package/gsd-core/bin/lib/adapter-declarative.cjs +35 -0
  33. package/gsd-core/bin/lib/adapter-imperative.cjs +52 -0
  34. package/gsd-core/bin/lib/assumption-delta.cjs +231 -0
  35. package/gsd-core/bin/lib/capability-lifecycle.cjs +7 -7
  36. package/gsd-core/bin/lib/capability-loader.cjs +45 -9
  37. package/gsd-core/bin/lib/capability-lock.cjs +2 -2
  38. package/gsd-core/bin/lib/capability-registry.cjs +891 -82
  39. package/gsd-core/bin/lib/capability-source.cjs +26 -11
  40. package/gsd-core/bin/lib/capability-validator.cjs +222 -2
  41. package/gsd-core/bin/lib/cli-skew-check.cjs +44 -0
  42. package/gsd-core/bin/lib/command-aliases.cjs +8 -0
  43. package/gsd-core/bin/lib/commands.cjs +2 -1
  44. package/gsd-core/bin/lib/config.cjs +27 -0
  45. package/gsd-core/bin/lib/embedding-adapter.cjs +27 -0
  46. package/gsd-core/bin/lib/external-descriptor-trust.cjs +70 -0
  47. package/gsd-core/bin/lib/frontmatter.cjs +53 -6
  48. package/gsd-core/bin/lib/handshake-serialized.cjs +70 -0
  49. package/gsd-core/bin/lib/hook-bus.cjs +81 -0
  50. package/gsd-core/bin/lib/host-integration-sdk.cjs +53 -0
  51. package/gsd-core/bin/lib/host-integration.cjs +469 -0
  52. package/gsd-core/bin/lib/init.cjs +35 -7
  53. package/gsd-core/bin/lib/install-engine.cjs +755 -0
  54. package/gsd-core/bin/lib/install-profiles.cjs +35 -4
  55. package/gsd-core/bin/lib/installer-migrations.cjs +1 -1
  56. package/gsd-core/bin/lib/mcp-server.cjs +194 -0
  57. package/gsd-core/bin/lib/milestone.cjs +68 -40
  58. package/gsd-core/bin/lib/model-adapter.cjs +50 -0
  59. package/gsd-core/bin/lib/phase-id.cjs +18 -0
  60. package/gsd-core/bin/lib/phase.cjs +57 -90
  61. package/gsd-core/bin/lib/phases-command-router.cjs +4 -3
  62. package/gsd-core/bin/lib/planning-workspace.cjs +1 -1
  63. package/gsd-core/bin/lib/probe-core.cjs +132 -2
  64. package/gsd-core/bin/lib/review-reviewer-selection.cjs +129 -13
  65. package/gsd-core/bin/lib/roadmap-command-router.cjs +3 -2
  66. package/gsd-core/bin/lib/roadmap-parser.cjs +21 -11
  67. package/gsd-core/bin/lib/roadmap-upgrade.cjs +3 -2
  68. package/gsd-core/bin/lib/roadmap.cjs +33 -22
  69. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +65 -9
  70. package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +54 -4
  71. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +5 -2
  72. package/gsd-core/bin/lib/runtime-hooks-surface.cjs +1 -1
  73. package/gsd-core/bin/lib/runtime-name-policy.cjs +160 -30
  74. package/gsd-core/bin/lib/shell-command-projection.cjs +16 -0
  75. package/gsd-core/bin/lib/stale-bake-guard.cjs +254 -0
  76. package/gsd-core/bin/lib/state-command-router.cjs +4 -0
  77. package/gsd-core/bin/lib/state-io.cjs +55 -0
  78. package/gsd-core/bin/lib/state-transition.cjs +1603 -0
  79. package/gsd-core/bin/lib/state.cjs +327 -683
  80. package/gsd-core/bin/lib/surface.cjs +4 -1
  81. package/gsd-core/bin/lib/validate.cjs +2 -1
  82. package/gsd-core/bin/lib/verify.cjs +6 -4
  83. package/gsd-core/bin/lib/workstream-inventory-builder.cjs +12 -2
  84. package/gsd-core/bin/lib/workstream-inventory.cjs +28 -0
  85. package/gsd-core/bin/lib/workstream.cjs +4 -4
  86. package/gsd-core/bin/shared/config-schema.manifest.json +9 -0
  87. package/gsd-core/references/agent-skills-bootstrap.md +60 -0
  88. package/gsd-core/references/honest-verifier.md +105 -0
  89. package/gsd-core/references/model-profiles.md +27 -0
  90. package/gsd-core/references/reviewer-instances.md +99 -0
  91. package/gsd-core/workflows/autonomous.md +30 -32
  92. package/gsd-core/workflows/complete-milestone.md +6 -10
  93. package/gsd-core/workflows/execute-phase.md +1 -1
  94. package/gsd-core/workflows/forensics.md +3 -3
  95. package/gsd-core/workflows/help/modes/full.md +1 -1
  96. package/gsd-core/workflows/manager.md +15 -15
  97. package/gsd-core/workflows/milestone-summary.md +3 -3
  98. package/gsd-core/workflows/new-milestone.md +6 -0
  99. package/gsd-core/workflows/plan-phase/steps/closed-phase-gate.md +42 -0
  100. package/gsd-core/workflows/plan-phase/steps/prd-express-path.md +102 -0
  101. package/gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md +23 -0
  102. package/gsd-core/workflows/plan-phase.md +4 -159
  103. package/gsd-core/workflows/review.md +33 -2
  104. package/gsd-core/workflows/thread.md +4 -4
  105. package/gsd-core/workflows/verify-phase.md +11 -4
  106. package/gsd-core/workflows/verify-work.md +1 -2
  107. package/hooks/dist/gsd-graphify-update.sh +7 -1
  108. package/hooks/gsd-graphify-update.sh +7 -1
  109. package/package.json +6 -4
  110. package/scripts/ci-test-scope.cjs +38 -9
  111. package/scripts/lint-allow-test-rule-refs.allowlist.json +0 -1
  112. package/scripts/lint-regression-test-names.allowlist.json +3 -0
  113. package/scripts/lint-test-file-count.allowlist.json +19 -5
  114. package/scripts/mutation-matrix.cjs +45 -3
  115. package/scripts/prompt-injection-scan.sh +8 -0
  116. package/scripts/run-tests.cjs +51 -1
  117. package/scripts/sync-manifest-versions.cjs +66 -14
  118. package/skills/gsd-review/SKILL.md +6 -0
  119. package/scripts/lint-windows-test-portability.cjs +0 -178
@@ -10,7 +10,7 @@ const capabilities = {
10
10
  "ai-integration": {
11
11
  "id": "ai-integration",
12
12
  "role": "feature",
13
- "version": "1.6.1",
13
+ "version": "1.7.0-rc.2",
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",
@@ -63,7 +63,7 @@ const capabilities = {
63
63
  "antigravity": {
64
64
  "id": "antigravity",
65
65
  "role": "runtime",
66
- "version": "1.6.1",
66
+ "version": "1.7.0-rc.2",
67
67
  "title": "Antigravity",
68
68
  "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.",
69
69
  "tier": "core",
@@ -86,6 +86,7 @@ const capabilities = {
86
86
  ],
87
87
  "probeExists": "gsd-core/VERSION"
88
88
  },
89
+ "localConfigDir": ".agents",
89
90
  "configFormat": "settings-json",
90
91
  "artifactLayout": {
91
92
  "global": [
@@ -117,13 +118,76 @@ const capabilities = {
117
118
  "installSurface": "settings-json",
118
119
  "writesSharedSettings": true,
119
120
  "permissionWriter": null,
120
- "extendedHookEvents": []
121
+ "extendedHookEvents": [],
122
+ "hostIntegration": {
123
+ "embeddingMode": "declarative",
124
+ "commandSurface": "slash-file",
125
+ "dispatch": {
126
+ "namedDispatch": "undocumented",
127
+ "nested": "undocumented",
128
+ "maxDepth": "undocumented",
129
+ "background": true,
130
+ "subagentToolkit": "undocumented",
131
+ "backgroundDispatch": "undocumented"
132
+ },
133
+ "modelMode": "passive",
134
+ "hookBus": "host",
135
+ "stateIO": "filesystem",
136
+ "transport": "mcp",
137
+ "runtime": "go"
138
+ }
121
139
  }
122
140
  },
141
+ "assumption-delta": {
142
+ "id": "assumption-delta",
143
+ "role": "feature",
144
+ "version": "1.7.0-rc.2",
145
+ "title": "Assumption-delta architecture checkpoint",
146
+ "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.",
147
+ "tier": "full",
148
+ "requires": [],
149
+ "engines": {
150
+ "gsd": ">=1.6.0"
151
+ },
152
+ "runtimeCompat": {
153
+ "supported": [
154
+ "*"
155
+ ],
156
+ "unsupported": []
157
+ },
158
+ "skills": [],
159
+ "agents": [],
160
+ "hooks": [],
161
+ "config": {
162
+ "workflow.assumption_delta": {
163
+ "type": "boolean",
164
+ "default": true,
165
+ "description": "Enable the assumption-delta architecture checkpoint during planning. When a pluralization/optional/chosen signal is detected in the phase scope, the planner is prompted to re-ask whether the primary key / identity model still names the right thing. Advisory (non-blocking)."
166
+ }
167
+ },
168
+ "steps": [],
169
+ "contributions": [
170
+ {
171
+ "point": "plan:pre",
172
+ "into": "planner",
173
+ "fragment": {
174
+ "path": "fragments/plan-pre.md",
175
+ "inline": "# Assumption-Delta Architecture Checkpoint\n\n> Advisory, non-blocking. Fires **only** when the phase scope shows a singular→plural / required→optional / derived→chosen transition. When it fires, it surfaces ONE identity-model question before the plan is finalized. Most phases will not fire it — that is the point.\n\n## Why this exists\n\nMost quietly-imported architectural debt does not come from a missing upfront design phase. It comes at the *seam*: a later phase introduces a second case (a second platform, auth method, tenant, region, source of truth) and nobody re-asks whether the original abstraction still names the right thing. The phase that adds the second case is exactly the 20-minute conversation that prevents an afternoon of later cleanup.\n\n## Run the detector\n\nThe detector is a deterministic scan over the phase scope text. It strips fenced code blocks first, so a trigger word that appears only inside a code snippet does not fire. It returns a typed result: `{ detected, signals[], terms }`. Resolve it through the `assumption-delta scan` query (same phase-section resolver as `roadmap.get-phase`):\n\n```bash\nASSUMPTION_DELTA_JSON=$(gsd_run query assumption-delta scan \"${PHASE}\" --json 2>/dev/null || echo '{\"detected\":false,\"signals\":[],\"terms\":{}}')\n```\n\n> If the phase section cannot be resolved (no `ROADMAP.md` / unknown phase), the query emits `{ \"detected\": false, ... }` — the checkpoint does not fire. Do not block on it.\n>\n> Optional tuning — pass `--terms <comma-list>` to replace the curated pluralization cues for this project (the `optional`/`chosen` cues keep their defaults): `gsd_run query assumption-delta scan \"${PHASE}\" --json --terms second,alternative,fallback`.\n\n## Decision branch\n\nRead `ASSUMPTION_DELTA_JSON`. Act on `detected` only — do **not** pattern-match the human prose.\n\n**If `detected` is `false`:** this phase does not change a core assumption. Skip the checkpoint entirely and continue planning. Do not raise it with the user.\n\n**If `detected` is `true`:** a core assumption may have lost its monopoly. The `signals[]` array tells you which family fired:\n\n| `kind` | What changed | The question to answer |\n|---|---|---|\n| `pluralization` | A second X was introduced where there was one (second platform / auth method / tenant / region / source of truth) | Does the current primary key / identity model still name the right noun? |\n| `optional` | A required / `only` field became optional | Is the field still the right anchor, or has the anchor moved? |\n| `chosen` | A derived value became chosen, or a constant became a parameter | Has a configuration decision become a modeling decision? |\n\nBefore finalizing the plan, answer this for the user and record the decision explicitly:\n\n> **Promote vs. add-alongside.** The usual correct move when a generalization occurs is to **promote** the new general representation to the primary and **demote** the old specific one to a detail of one variant — *not* to add the new one alongside the still-required old one. Adding alongside silently contradicts the generalized intent (a later variant that does not fit the old primary can be stored but never confirmed as a default).\n\nRecord the outcome in the PLAN.md front matter / a `<assumption_delta_decision>` block:\n\n- The **noun** that is now primary (the generalized identity).\n- The **decision**: `promote` | `add-alongside` | `no-change`, with a one-line rationale.\n- If `add-alongside`: call it out as accepted debt and note what would force a later promote.\n\n## Optional companion: an invariant test\n\nWhen `detected` is `true`, suggest (do not require) a contract/invariant test that encodes the now-generalized intent — e.g. *\"every confirmed default round-trips through the primary use-path, for every supported variant.\"* That test goes red the instant a future phase reintroduces the singular assumption, so the regression cannot land silently. If the user accepts, add the test as a task in the plan.\n\n## Tuning the vocabulary (optional)\n\nThe trigger vocabulary is a curated, additive-only set in `gsd-core/bin/lib/assumption-delta.cjs` (`DEFAULT_ASSUMPTION_DELTA_TERMS`). Bare \"or\" is intentionally excluded — it is too common in prose and would make the gate fire constantly. To widen or narrow the cues for a project, override at the call site with `--terms <comma-list>` (replaces the pluralization cues; `optional`/`chosen` keep defaults). The whole checkpoint is toggleable via `workflow.assumption_delta` in `.planning/config.json`.\n\nThis checkpoint is advisory: it informs and records; it never blocks the phase.\n"
176
+ },
177
+ "produces": [],
178
+ "consumes": [
179
+ "CONTEXT.md"
180
+ ],
181
+ "when": "workflow.assumption_delta",
182
+ "onError": "skip"
183
+ }
184
+ ],
185
+ "gates": []
186
+ },
123
187
  "audit": {
124
188
  "id": "audit",
125
189
  "role": "feature",
126
- "version": "1.6.1",
190
+ "version": "1.7.0-rc.2",
127
191
  "title": "Audit",
128
192
  "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).",
129
193
  "tier": "full",
@@ -160,7 +224,7 @@ const capabilities = {
160
224
  "augment": {
161
225
  "id": "augment",
162
226
  "role": "runtime",
163
- "version": "1.6.1",
227
+ "version": "1.7.0-rc.2",
164
228
  "title": "Augment Code",
165
229
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
166
230
  "tier": "core",
@@ -176,6 +240,7 @@ const capabilities = {
176
240
  "AUGMENT_CONFIG_DIR"
177
241
  ]
178
242
  },
243
+ "localConfigDir": ".augment",
179
244
  "configFormat": "settings-json",
180
245
  "artifactLayout": {
181
246
  "global": [
@@ -194,6 +259,14 @@ const capabilities = {
194
259
  "nesting": "nested",
195
260
  "recursive": false,
196
261
  "converter": "convertClaudeCommandToAugmentSkill"
262
+ },
263
+ {
264
+ "kind": "agents",
265
+ "destSubpath": "agents",
266
+ "prefix": "gsd-",
267
+ "nesting": "flat",
268
+ "recursive": false,
269
+ "converter": "convertClaudeAgentToAugmentAgent"
197
270
  }
198
271
  ],
199
272
  "local": [
@@ -212,6 +285,14 @@ const capabilities = {
212
285
  "nesting": "nested",
213
286
  "recursive": false,
214
287
  "converter": "convertClaudeCommandToAugmentSkill"
288
+ },
289
+ {
290
+ "kind": "agents",
291
+ "destSubpath": "agents",
292
+ "prefix": "gsd-",
293
+ "nesting": "flat",
294
+ "recursive": false,
295
+ "converter": "convertClaudeAgentToAugmentAgent"
215
296
  }
216
297
  ]
217
298
  },
@@ -223,13 +304,30 @@ const capabilities = {
223
304
  "installSurface": "settings-json",
224
305
  "writesSharedSettings": true,
225
306
  "permissionWriter": null,
226
- "extendedHookEvents": []
307
+ "extendedHookEvents": [],
308
+ "hostIntegration": {
309
+ "embeddingMode": "declarative",
310
+ "commandSurface": "slash-file",
311
+ "dispatch": {
312
+ "namedDispatch": true,
313
+ "nested": "undocumented",
314
+ "maxDepth": "undocumented",
315
+ "background": true,
316
+ "subagentToolkit": "full",
317
+ "backgroundDispatch": "undocumented"
318
+ },
319
+ "modelMode": "passive",
320
+ "hookBus": "host",
321
+ "stateIO": "filesystem",
322
+ "transport": "mcp",
323
+ "runtime": "node"
324
+ }
227
325
  }
228
326
  },
229
327
  "claude": {
230
328
  "id": "claude",
231
329
  "role": "runtime",
232
- "version": "1.6.1",
330
+ "version": "1.7.0-rc.2",
233
331
  "title": "Claude Code",
234
332
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
235
333
  "tier": "core",
@@ -245,6 +343,7 @@ const capabilities = {
245
343
  "CLAUDE_CONFIG_DIR"
246
344
  ]
247
345
  },
346
+ "localConfigDir": ".claude",
248
347
  "configFormat": "settings-json",
249
348
  "artifactLayout": {
250
349
  "global": [
@@ -289,13 +388,30 @@ const capabilities = {
289
388
  "Stop",
290
389
  "PreCompact",
291
390
  "FileChanged"
292
- ]
391
+ ],
392
+ "hostIntegration": {
393
+ "embeddingMode": "imperative",
394
+ "commandSurface": "slash-file",
395
+ "dispatch": {
396
+ "namedDispatch": true,
397
+ "nested": true,
398
+ "maxDepth": 5,
399
+ "background": true,
400
+ "subagentToolkit": "full",
401
+ "backgroundDispatch": false
402
+ },
403
+ "modelMode": "passive",
404
+ "hookBus": "host",
405
+ "stateIO": "filesystem",
406
+ "transport": "mcp",
407
+ "runtime": "node"
408
+ }
293
409
  }
294
410
  },
295
411
  "cline": {
296
412
  "id": "cline",
297
413
  "role": "runtime",
298
- "version": "1.6.1",
414
+ "version": "1.7.0-rc.2",
299
415
  "title": "Cline",
300
416
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
301
417
  "tier": "core",
@@ -311,6 +427,7 @@ const capabilities = {
311
427
  "CLINE_CONFIG_DIR"
312
428
  ]
313
429
  },
430
+ "localConfigDir": ".cline",
314
431
  "configFormat": "markdown-dir",
315
432
  "artifactLayout": {
316
433
  "global": [
@@ -332,13 +449,30 @@ const capabilities = {
332
449
  "installSurface": "cline-rules",
333
450
  "writesSharedSettings": false,
334
451
  "permissionWriter": null,
335
- "extendedHookEvents": []
452
+ "extendedHookEvents": [],
453
+ "hostIntegration": {
454
+ "embeddingMode": "imperative",
455
+ "commandSurface": "slash-file",
456
+ "dispatch": {
457
+ "namedDispatch": true,
458
+ "nested": false,
459
+ "maxDepth": 1,
460
+ "background": true,
461
+ "subagentToolkit": "read-only",
462
+ "backgroundDispatch": false
463
+ },
464
+ "modelMode": "active",
465
+ "hookBus": "host",
466
+ "stateIO": "filesystem",
467
+ "transport": "mcp",
468
+ "runtime": "node"
469
+ }
336
470
  }
337
471
  },
338
472
  "code-review": {
339
473
  "id": "code-review",
340
474
  "role": "feature",
341
- "version": "1.6.1",
475
+ "version": "1.7.0-rc.2",
342
476
  "title": "Code review",
343
477
  "description": "Source-file code review and review-fix workflow support for completed execution work.",
344
478
  "tier": "full",
@@ -399,7 +533,7 @@ const capabilities = {
399
533
  "codebuddy": {
400
534
  "id": "codebuddy",
401
535
  "role": "runtime",
402
- "version": "1.6.1",
536
+ "version": "1.7.0-rc.2",
403
537
  "title": "CodeBuddy",
404
538
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
405
539
  "tier": "core",
@@ -415,6 +549,7 @@ const capabilities = {
415
549
  "CODEBUDDY_CONFIG_DIR"
416
550
  ]
417
551
  },
552
+ "localConfigDir": ".codebuddy",
418
553
  "configFormat": "settings-json",
419
554
  "artifactLayout": {
420
555
  "global": [
@@ -433,6 +568,14 @@ const capabilities = {
433
568
  "nesting": "flat",
434
569
  "recursive": false,
435
570
  "converter": "convertClaudeCommandToCodebuddySkill"
571
+ },
572
+ {
573
+ "kind": "agents",
574
+ "destSubpath": "agents",
575
+ "prefix": "gsd-",
576
+ "nesting": "flat",
577
+ "recursive": false,
578
+ "converter": "convertClaudeAgentToCodebuddyAgent"
436
579
  }
437
580
  ],
438
581
  "local": [
@@ -451,6 +594,14 @@ const capabilities = {
451
594
  "nesting": "flat",
452
595
  "recursive": false,
453
596
  "converter": "convertClaudeCommandToCodebuddySkill"
597
+ },
598
+ {
599
+ "kind": "agents",
600
+ "destSubpath": "agents",
601
+ "prefix": "gsd-",
602
+ "nesting": "flat",
603
+ "recursive": false,
604
+ "converter": "convertClaudeAgentToCodebuddyAgent"
454
605
  }
455
606
  ]
456
607
  },
@@ -462,13 +613,30 @@ const capabilities = {
462
613
  "installSurface": "settings-json",
463
614
  "writesSharedSettings": true,
464
615
  "permissionWriter": null,
465
- "extendedHookEvents": []
616
+ "extendedHookEvents": [],
617
+ "hostIntegration": {
618
+ "embeddingMode": "declarative",
619
+ "commandSurface": "slash-file",
620
+ "dispatch": {
621
+ "namedDispatch": true,
622
+ "nested": false,
623
+ "maxDepth": 1,
624
+ "background": true,
625
+ "subagentToolkit": "full",
626
+ "backgroundDispatch": false
627
+ },
628
+ "modelMode": "passive",
629
+ "hookBus": "host",
630
+ "stateIO": "filesystem",
631
+ "transport": "mcp",
632
+ "runtime": "node"
633
+ }
466
634
  }
467
635
  },
468
636
  "codex": {
469
637
  "id": "codex",
470
638
  "role": "runtime",
471
- "version": "1.6.1",
639
+ "version": "1.7.0-rc.2",
472
640
  "title": "OpenAI Codex CLI",
473
641
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
474
642
  "tier": "core",
@@ -484,6 +652,7 @@ const capabilities = {
484
652
  "CODEX_HOME"
485
653
  ]
486
654
  },
655
+ "localConfigDir": ".codex",
487
656
  "configFormat": "toml",
488
657
  "artifactLayout": {
489
658
  "global": [
@@ -515,13 +684,30 @@ const capabilities = {
515
684
  "installSurface": "codex-toml",
516
685
  "writesSharedSettings": false,
517
686
  "permissionWriter": null,
518
- "extendedHookEvents": []
687
+ "extendedHookEvents": [],
688
+ "hostIntegration": {
689
+ "embeddingMode": "declarative",
690
+ "commandSurface": "slash-file",
691
+ "dispatch": {
692
+ "namedDispatch": true,
693
+ "nested": true,
694
+ "maxDepth": 1,
695
+ "background": true,
696
+ "subagentToolkit": "full",
697
+ "backgroundDispatch": true
698
+ },
699
+ "modelMode": "passive",
700
+ "hookBus": "host",
701
+ "stateIO": "filesystem",
702
+ "transport": "mcp",
703
+ "runtime": "node"
704
+ }
519
705
  }
520
706
  },
521
707
  "copilot": {
522
708
  "id": "copilot",
523
709
  "role": "runtime",
524
- "version": "1.6.1",
710
+ "version": "1.7.0-rc.2",
525
711
  "title": "GitHub Copilot",
526
712
  "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.",
527
713
  "tier": "core",
@@ -538,6 +724,7 @@ const capabilities = {
538
724
  "COPILOT_HOME"
539
725
  ]
540
726
  },
727
+ "localConfigDir": ".github",
541
728
  "configFormat": "markdown",
542
729
  "artifactLayout": {
543
730
  "global": [
@@ -568,13 +755,30 @@ const capabilities = {
568
755
  "installSurface": "copilot-instructions",
569
756
  "writesSharedSettings": false,
570
757
  "permissionWriter": null,
571
- "extendedHookEvents": []
758
+ "extendedHookEvents": [],
759
+ "hostIntegration": {
760
+ "embeddingMode": "declarative",
761
+ "commandSurface": "slash-file",
762
+ "dispatch": {
763
+ "namedDispatch": true,
764
+ "nested": false,
765
+ "maxDepth": 1,
766
+ "background": true,
767
+ "subagentToolkit": "full",
768
+ "backgroundDispatch": false
769
+ },
770
+ "modelMode": "passive",
771
+ "hookBus": "host",
772
+ "stateIO": "filesystem",
773
+ "transport": "mcp",
774
+ "runtime": "undocumented"
775
+ }
572
776
  }
573
777
  },
574
778
  "cursor": {
575
779
  "id": "cursor",
576
780
  "role": "runtime",
577
- "version": "1.6.1",
781
+ "version": "1.7.0-rc.2",
578
782
  "title": "Cursor",
579
783
  "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
580
784
  "tier": "core",
@@ -590,6 +794,7 @@ const capabilities = {
590
794
  "CURSOR_CONFIG_DIR"
591
795
  ]
592
796
  },
797
+ "localConfigDir": ".cursor",
593
798
  "configFormat": "none",
594
799
  "artifactLayout": {
595
800
  "global": [
@@ -608,6 +813,14 @@ const capabilities = {
608
813
  "nesting": "flat",
609
814
  "recursive": false,
610
815
  "converter": "convertClaudeCommandToCursorCommand"
816
+ },
817
+ {
818
+ "kind": "agents",
819
+ "destSubpath": "agents",
820
+ "prefix": "gsd-",
821
+ "nesting": "flat",
822
+ "recursive": false,
823
+ "converter": "convertClaudeAgentToCursorAgent"
611
824
  }
612
825
  ],
613
826
  "local": [
@@ -626,6 +839,14 @@ const capabilities = {
626
839
  "nesting": "flat",
627
840
  "recursive": false,
628
841
  "converter": "convertClaudeCommandToCursorCommand"
842
+ },
843
+ {
844
+ "kind": "agents",
845
+ "destSubpath": "agents",
846
+ "prefix": "gsd-",
847
+ "nesting": "flat",
848
+ "recursive": false,
849
+ "converter": "convertClaudeAgentToCursorAgent"
629
850
  }
630
851
  ]
631
852
  },
@@ -637,13 +858,30 @@ const capabilities = {
637
858
  "installSurface": "cursor-hooks-json",
638
859
  "writesSharedSettings": false,
639
860
  "permissionWriter": null,
640
- "extendedHookEvents": []
861
+ "extendedHookEvents": [],
862
+ "hostIntegration": {
863
+ "embeddingMode": "imperative",
864
+ "commandSurface": "slash-file",
865
+ "dispatch": {
866
+ "namedDispatch": true,
867
+ "nested": true,
868
+ "maxDepth": 2,
869
+ "background": true,
870
+ "subagentToolkit": "full",
871
+ "backgroundDispatch": true
872
+ },
873
+ "modelMode": "passive",
874
+ "hookBus": "host",
875
+ "stateIO": "filesystem",
876
+ "transport": "mcp",
877
+ "runtime": "node"
878
+ }
641
879
  }
642
880
  },
643
881
  "drift": {
644
882
  "id": "drift",
645
883
  "role": "feature",
646
- "version": "1.6.1",
884
+ "version": "1.7.0-rc.2",
647
885
  "title": "Drift detection gates",
648
886
  "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.",
649
887
  "tier": "full",
@@ -721,7 +959,7 @@ const capabilities = {
721
959
  "gap-analysis": {
722
960
  "id": "gap-analysis",
723
961
  "role": "feature",
724
- "version": "1.6.1",
962
+ "version": "1.7.0-rc.2",
725
963
  "title": "Post-planning gap analysis",
726
964
  "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.",
727
965
  "tier": "standard",
@@ -762,7 +1000,7 @@ const capabilities = {
762
1000
  "gemini": {
763
1001
  "id": "gemini",
764
1002
  "role": "runtime",
765
- "version": "1.6.1",
1003
+ "version": "1.7.0-rc.2",
766
1004
  "title": "Gemini CLI",
767
1005
  "description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.",
768
1006
  "tier": "core",
@@ -778,6 +1016,7 @@ const capabilities = {
778
1016
  "GEMINI_CONFIG_DIR"
779
1017
  ]
780
1018
  },
1019
+ "localConfigDir": ".gemini",
781
1020
  "configFormat": "settings-json",
782
1021
  "artifactLayout": {
783
1022
  "global": [
@@ -813,13 +1052,30 @@ const capabilities = {
813
1052
  "BeforeAgent",
814
1053
  "AfterAgent",
815
1054
  "BeforeModel"
816
- ]
1055
+ ],
1056
+ "hostIntegration": {
1057
+ "embeddingMode": "declarative",
1058
+ "commandSurface": "slash-toml",
1059
+ "dispatch": {
1060
+ "namedDispatch": true,
1061
+ "nested": false,
1062
+ "maxDepth": 1,
1063
+ "background": "undocumented",
1064
+ "subagentToolkit": "undocumented",
1065
+ "backgroundDispatch": false
1066
+ },
1067
+ "modelMode": "passive",
1068
+ "hookBus": "host",
1069
+ "stateIO": "filesystem",
1070
+ "transport": "mcp",
1071
+ "runtime": "node"
1072
+ }
817
1073
  }
818
1074
  },
819
1075
  "graphify": {
820
1076
  "id": "graphify",
821
1077
  "role": "feature",
822
- "version": "1.6.1",
1078
+ "version": "1.7.0-rc.2",
823
1079
  "title": "Knowledge graph",
824
1080
  "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.",
825
1081
  "tier": "full",
@@ -860,7 +1116,7 @@ const capabilities = {
860
1116
  "hermes": {
861
1117
  "id": "hermes",
862
1118
  "role": "runtime",
863
- "version": "1.6.1",
1119
+ "version": "1.7.0-rc.2",
864
1120
  "title": "Hermes Agent",
865
1121
  "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.",
866
1122
  "tier": "core",
@@ -876,6 +1132,7 @@ const capabilities = {
876
1132
  "HERMES_HOME"
877
1133
  ]
878
1134
  },
1135
+ "localConfigDir": ".hermes",
879
1136
  "configFormat": "settings-json",
880
1137
  "artifactLayout": {
881
1138
  "global": [
@@ -907,13 +1164,30 @@ const capabilities = {
907
1164
  "installSurface": "settings-json",
908
1165
  "writesSharedSettings": true,
909
1166
  "permissionWriter": null,
910
- "extendedHookEvents": []
1167
+ "extendedHookEvents": [],
1168
+ "hostIntegration": {
1169
+ "embeddingMode": "imperative",
1170
+ "commandSurface": "slash-programmatic",
1171
+ "dispatch": {
1172
+ "namedDispatch": false,
1173
+ "nested": true,
1174
+ "maxDepth": 1,
1175
+ "background": true,
1176
+ "subagentToolkit": "read-only",
1177
+ "backgroundDispatch": false
1178
+ },
1179
+ "modelMode": "active",
1180
+ "hookBus": "host",
1181
+ "stateIO": "filesystem",
1182
+ "transport": "mcp",
1183
+ "runtime": "python"
1184
+ }
911
1185
  }
912
1186
  },
913
1187
  "intel": {
914
1188
  "id": "intel",
915
1189
  "role": "feature",
916
- "version": "1.6.1",
1190
+ "version": "1.7.0-rc.2",
917
1191
  "title": "Codebase intelligence",
918
1192
  "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`.",
919
1193
  "tier": "full",
@@ -965,7 +1239,7 @@ const capabilities = {
965
1239
  "kilo": {
966
1240
  "id": "kilo",
967
1241
  "role": "runtime",
968
- "version": "1.6.1",
1242
+ "version": "1.7.0-rc.2",
969
1243
  "title": "Kilo Code",
970
1244
  "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.",
971
1245
  "tier": "core",
@@ -988,6 +1262,7 @@ const capabilities = {
988
1262
  "env": []
989
1263
  }
990
1264
  },
1265
+ "localConfigDir": ".kilo",
991
1266
  "configFormat": "settings-json",
992
1267
  "artifactLayout": {
993
1268
  "global": [
@@ -1034,13 +1309,30 @@ const capabilities = {
1034
1309
  "installSurface": "settings-json",
1035
1310
  "writesSharedSettings": false,
1036
1311
  "permissionWriter": "kilo",
1037
- "extendedHookEvents": []
1312
+ "extendedHookEvents": [],
1313
+ "hostIntegration": {
1314
+ "embeddingMode": "imperative",
1315
+ "commandSurface": "slash-file",
1316
+ "dispatch": {
1317
+ "namedDispatch": true,
1318
+ "nested": true,
1319
+ "maxDepth": -1,
1320
+ "background": true,
1321
+ "subagentToolkit": "undocumented",
1322
+ "backgroundDispatch": false
1323
+ },
1324
+ "modelMode": "active",
1325
+ "hookBus": "host",
1326
+ "stateIO": "filesystem",
1327
+ "transport": "mcp",
1328
+ "runtime": "bun"
1329
+ }
1038
1330
  }
1039
1331
  },
1040
1332
  "kimi": {
1041
1333
  "id": "kimi",
1042
1334
  "role": "runtime",
1043
- "version": "1.6.1",
1335
+ "version": "1.7.0-rc.2",
1044
1336
  "title": "Kimi CLI",
1045
1337
  "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.",
1046
1338
  "tier": "core",
@@ -1061,6 +1353,7 @@ const capabilities = {
1061
1353
  ],
1062
1354
  "probeExists": "skills"
1063
1355
  },
1356
+ "localConfigDir": ".kimi-code",
1064
1357
  "configFormat": "none",
1065
1358
  "artifactLayout": {
1066
1359
  "global": [
@@ -1090,13 +1383,30 @@ const capabilities = {
1090
1383
  "installSurface": "profile-marker-only",
1091
1384
  "writesSharedSettings": false,
1092
1385
  "permissionWriter": null,
1093
- "extendedHookEvents": []
1386
+ "extendedHookEvents": [],
1387
+ "hostIntegration": {
1388
+ "embeddingMode": "imperative",
1389
+ "commandSurface": "slash-file",
1390
+ "dispatch": {
1391
+ "namedDispatch": true,
1392
+ "nested": false,
1393
+ "maxDepth": 1,
1394
+ "background": true,
1395
+ "subagentToolkit": "undocumented",
1396
+ "backgroundDispatch": false
1397
+ },
1398
+ "modelMode": "passive",
1399
+ "hookBus": "host",
1400
+ "stateIO": "filesystem",
1401
+ "transport": "mcp",
1402
+ "runtime": "python"
1403
+ }
1094
1404
  }
1095
1405
  },
1096
1406
  "mempalace": {
1097
1407
  "id": "mempalace",
1098
1408
  "role": "feature",
1099
- "version": "1.6.1",
1409
+ "version": "1.7.0-rc.2",
1100
1410
  "title": "MemPalace memory",
1101
1411
  "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.",
1102
1412
  "tier": "full",
@@ -1270,7 +1580,7 @@ const capabilities = {
1270
1580
  "nyquist": {
1271
1581
  "id": "nyquist",
1272
1582
  "role": "feature",
1273
- "version": "1.6.1",
1583
+ "version": "1.7.0-rc.2",
1274
1584
  "title": "Nyquist validation",
1275
1585
  "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.",
1276
1586
  "tier": "full",
@@ -1320,7 +1630,7 @@ const capabilities = {
1320
1630
  "opencode": {
1321
1631
  "id": "opencode",
1322
1632
  "role": "runtime",
1323
- "version": "1.6.1",
1633
+ "version": "1.7.0-rc.2",
1324
1634
  "title": "OpenCode",
1325
1635
  "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
1326
1636
  "tier": "core",
@@ -1338,6 +1648,7 @@ const capabilities = {
1338
1648
  "XDG_CONFIG_HOME"
1339
1649
  ]
1340
1650
  },
1651
+ "localConfigDir": ".opencode",
1341
1652
  "configFormat": "settings-json",
1342
1653
  "artifactLayout": {
1343
1654
  "global": [
@@ -1379,18 +1690,36 @@ const capabilities = {
1379
1690
  },
1380
1691
  "commandStyle": "slash-hyphen",
1381
1692
  "hooksSurface": "none",
1693
+ "extensionEvents": "opencode",
1382
1694
  "sandboxTier": "none",
1383
1695
  "supportTier": 2,
1384
1696
  "installSurface": "settings-json",
1385
1697
  "writesSharedSettings": true,
1386
1698
  "permissionWriter": "opencode",
1387
- "extendedHookEvents": []
1699
+ "extendedHookEvents": [],
1700
+ "hostIntegration": {
1701
+ "embeddingMode": "imperative",
1702
+ "commandSurface": "slash-file",
1703
+ "dispatch": {
1704
+ "namedDispatch": true,
1705
+ "nested": "undocumented",
1706
+ "maxDepth": "undocumented",
1707
+ "background": false,
1708
+ "subagentToolkit": "full",
1709
+ "backgroundDispatch": "undocumented"
1710
+ },
1711
+ "modelMode": "active",
1712
+ "hookBus": "host",
1713
+ "stateIO": "filesystem",
1714
+ "transport": "mcp",
1715
+ "runtime": "bun"
1716
+ }
1388
1717
  }
1389
1718
  },
1390
1719
  "pattern-mapper": {
1391
1720
  "id": "pattern-mapper",
1392
1721
  "role": "feature",
1393
- "version": "1.6.1",
1722
+ "version": "1.7.0-rc.2",
1394
1723
  "title": "Pattern mapping",
1395
1724
  "description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
1396
1725
  "tier": "full",
@@ -1444,7 +1773,7 @@ const capabilities = {
1444
1773
  "profile-pipeline": {
1445
1774
  "id": "profile-pipeline",
1446
1775
  "role": "feature",
1447
- "version": "1.6.1",
1776
+ "version": "1.7.0-rc.2",
1448
1777
  "title": "Developer profiling pipeline",
1449
1778
  "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.",
1450
1779
  "tier": "full",
@@ -1521,7 +1850,7 @@ const capabilities = {
1521
1850
  "qwen": {
1522
1851
  "id": "qwen",
1523
1852
  "role": "runtime",
1524
- "version": "1.6.1",
1853
+ "version": "1.7.0-rc.2",
1525
1854
  "title": "Qwen Code",
1526
1855
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
1527
1856
  "tier": "core",
@@ -1537,6 +1866,7 @@ const capabilities = {
1537
1866
  "QWEN_CONFIG_DIR"
1538
1867
  ]
1539
1868
  },
1869
+ "localConfigDir": ".qwen",
1540
1870
  "configFormat": "settings-json",
1541
1871
  "artifactLayout": {
1542
1872
  "global": [
@@ -1572,13 +1902,30 @@ const capabilities = {
1572
1902
  "SubagentStop",
1573
1903
  "Stop",
1574
1904
  "PreCompact"
1575
- ]
1905
+ ],
1906
+ "hostIntegration": {
1907
+ "embeddingMode": "imperative",
1908
+ "commandSurface": "slash-file",
1909
+ "dispatch": {
1910
+ "namedDispatch": true,
1911
+ "nested": false,
1912
+ "maxDepth": 1,
1913
+ "background": true,
1914
+ "subagentToolkit": "full",
1915
+ "backgroundDispatch": false
1916
+ },
1917
+ "modelMode": "passive",
1918
+ "hookBus": "host",
1919
+ "stateIO": "filesystem",
1920
+ "transport": "mcp",
1921
+ "runtime": "node"
1922
+ }
1576
1923
  }
1577
1924
  },
1578
1925
  "research": {
1579
1926
  "id": "research",
1580
1927
  "role": "feature",
1581
- "version": "1.6.1",
1928
+ "version": "1.7.0-rc.2",
1582
1929
  "title": "Phase research",
1583
1930
  "description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
1584
1931
  "tier": "standard",
@@ -1630,7 +1977,7 @@ const capabilities = {
1630
1977
  "schema-gate": {
1631
1978
  "id": "schema-gate",
1632
1979
  "role": "feature",
1633
- "version": "1.6.1",
1980
+ "version": "1.7.0-rc.2",
1634
1981
  "title": "Schema push detection gate",
1635
1982
  "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.",
1636
1983
  "tier": "full",
@@ -1676,7 +2023,7 @@ const capabilities = {
1676
2023
  "security": {
1677
2024
  "id": "security",
1678
2025
  "role": "feature",
1679
- "version": "1.6.1",
2026
+ "version": "1.7.0-rc.2",
1680
2027
  "title": "Security enforcement",
1681
2028
  "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
1682
2029
  "tier": "full",
@@ -1775,7 +2122,7 @@ const capabilities = {
1775
2122
  "tdd": {
1776
2123
  "id": "tdd",
1777
2124
  "role": "feature",
1778
- "version": "1.6.1",
2125
+ "version": "1.7.0-rc.2",
1779
2126
  "title": "Test-driven development",
1780
2127
  "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.",
1781
2128
  "tier": "full",
@@ -1828,7 +2175,7 @@ const capabilities = {
1828
2175
  "trae": {
1829
2176
  "id": "trae",
1830
2177
  "role": "runtime",
1831
- "version": "1.6.1",
2178
+ "version": "1.7.0-rc.2",
1832
2179
  "title": "Trae IDE",
1833
2180
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
1834
2181
  "tier": "core",
@@ -1844,6 +2191,7 @@ const capabilities = {
1844
2191
  "TRAE_CONFIG_DIR"
1845
2192
  ]
1846
2193
  },
2194
+ "localConfigDir": ".trae",
1847
2195
  "configFormat": "none",
1848
2196
  "artifactLayout": {
1849
2197
  "global": [
@@ -1854,6 +2202,14 @@ const capabilities = {
1854
2202
  "nesting": "nested",
1855
2203
  "recursive": false,
1856
2204
  "converter": "convertClaudeCommandToTraeSkill"
2205
+ },
2206
+ {
2207
+ "kind": "agents",
2208
+ "destSubpath": "agents",
2209
+ "prefix": "gsd-",
2210
+ "nesting": "flat",
2211
+ "recursive": false,
2212
+ "converter": "convertClaudeAgentToTraeAgent"
1857
2213
  }
1858
2214
  ],
1859
2215
  "local": [
@@ -1864,6 +2220,14 @@ const capabilities = {
1864
2220
  "nesting": "nested",
1865
2221
  "recursive": false,
1866
2222
  "converter": "convertClaudeCommandToTraeSkill"
2223
+ },
2224
+ {
2225
+ "kind": "agents",
2226
+ "destSubpath": "agents",
2227
+ "prefix": "gsd-",
2228
+ "nesting": "flat",
2229
+ "recursive": false,
2230
+ "converter": "convertClaudeAgentToTraeAgent"
1867
2231
  }
1868
2232
  ]
1869
2233
  },
@@ -1874,13 +2238,30 @@ const capabilities = {
1874
2238
  "installSurface": "profile-marker-only",
1875
2239
  "writesSharedSettings": false,
1876
2240
  "permissionWriter": null,
1877
- "extendedHookEvents": []
2241
+ "extendedHookEvents": [],
2242
+ "hostIntegration": {
2243
+ "embeddingMode": "imperative",
2244
+ "commandSurface": "slash-file",
2245
+ "dispatch": {
2246
+ "namedDispatch": true,
2247
+ "nested": "undocumented",
2248
+ "maxDepth": "undocumented",
2249
+ "background": true,
2250
+ "subagentToolkit": "undocumented",
2251
+ "backgroundDispatch": "undocumented"
2252
+ },
2253
+ "modelMode": "passive",
2254
+ "hookBus": "engine",
2255
+ "stateIO": "filesystem",
2256
+ "transport": "mcp",
2257
+ "runtime": "node"
2258
+ }
1878
2259
  }
1879
2260
  },
1880
2261
  "ui": {
1881
2262
  "id": "ui",
1882
2263
  "role": "feature",
1883
- "version": "1.6.1",
2264
+ "version": "1.7.0-rc.2",
1884
2265
  "title": "UI design contracts",
1885
2266
  "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
1886
2267
  "tier": "full",
@@ -1975,7 +2356,7 @@ const capabilities = {
1975
2356
  "windsurf": {
1976
2357
  "id": "windsurf",
1977
2358
  "role": "runtime",
1978
- "version": "1.6.1",
2359
+ "version": "1.7.0-rc.2",
1979
2360
  "title": "Windsurf",
1980
2361
  "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.",
1981
2362
  "tier": "core",
@@ -1992,9 +2373,19 @@ const capabilities = {
1992
2373
  "WINDSURF_CONFIG_DIR"
1993
2374
  ]
1994
2375
  },
2376
+ "localConfigDir": ".windsurf",
1995
2377
  "configFormat": "none",
1996
2378
  "artifactLayout": {
1997
- "global": [],
2379
+ "global": [
2380
+ {
2381
+ "kind": "agents",
2382
+ "destSubpath": "agents",
2383
+ "prefix": "gsd-",
2384
+ "nesting": "flat",
2385
+ "recursive": false,
2386
+ "converter": "convertClaudeAgentToWindsurfAgent"
2387
+ }
2388
+ ],
1998
2389
  "local": [
1999
2390
  {
2000
2391
  "kind": "commands",
@@ -2003,6 +2394,14 @@ const capabilities = {
2003
2394
  "nesting": "flat",
2004
2395
  "recursive": false,
2005
2396
  "converter": "convertClaudeCommandToWindsurfWorkflow"
2397
+ },
2398
+ {
2399
+ "kind": "agents",
2400
+ "destSubpath": "agents",
2401
+ "prefix": "gsd-",
2402
+ "nesting": "flat",
2403
+ "recursive": false,
2404
+ "converter": "convertClaudeAgentToWindsurfAgent"
2006
2405
  }
2007
2406
  ]
2008
2407
  },
@@ -2013,7 +2412,24 @@ const capabilities = {
2013
2412
  "installSurface": "profile-marker-only",
2014
2413
  "writesSharedSettings": false,
2015
2414
  "permissionWriter": null,
2016
- "extendedHookEvents": []
2415
+ "extendedHookEvents": [],
2416
+ "hostIntegration": {
2417
+ "embeddingMode": "declarative",
2418
+ "commandSurface": "slash-file",
2419
+ "dispatch": {
2420
+ "namedDispatch": "undocumented",
2421
+ "nested": "undocumented",
2422
+ "maxDepth": "undocumented",
2423
+ "background": "undocumented",
2424
+ "subagentToolkit": "undocumented",
2425
+ "backgroundDispatch": "undocumented"
2426
+ },
2427
+ "modelMode": "passive",
2428
+ "hookBus": "host",
2429
+ "stateIO": "filesystem",
2430
+ "transport": "mcp",
2431
+ "runtime": "undocumented"
2432
+ }
2017
2433
  }
2018
2434
  }
2019
2435
  };
@@ -2187,6 +2603,21 @@ const byLoopPoint = {
2187
2603
  }
2188
2604
  ],
2189
2605
  "contributions": [
2606
+ {
2607
+ "capId": "assumption-delta",
2608
+ "point": "plan:pre",
2609
+ "into": "planner",
2610
+ "fragment": {
2611
+ "path": "fragments/plan-pre.md",
2612
+ "inline": "# Assumption-Delta Architecture Checkpoint\n\n> Advisory, non-blocking. Fires **only** when the phase scope shows a singular→plural / required→optional / derived→chosen transition. When it fires, it surfaces ONE identity-model question before the plan is finalized. Most phases will not fire it — that is the point.\n\n## Why this exists\n\nMost quietly-imported architectural debt does not come from a missing upfront design phase. It comes at the *seam*: a later phase introduces a second case (a second platform, auth method, tenant, region, source of truth) and nobody re-asks whether the original abstraction still names the right thing. The phase that adds the second case is exactly the 20-minute conversation that prevents an afternoon of later cleanup.\n\n## Run the detector\n\nThe detector is a deterministic scan over the phase scope text. It strips fenced code blocks first, so a trigger word that appears only inside a code snippet does not fire. It returns a typed result: `{ detected, signals[], terms }`. Resolve it through the `assumption-delta scan` query (same phase-section resolver as `roadmap.get-phase`):\n\n```bash\nASSUMPTION_DELTA_JSON=$(gsd_run query assumption-delta scan \"${PHASE}\" --json 2>/dev/null || echo '{\"detected\":false,\"signals\":[],\"terms\":{}}')\n```\n\n> If the phase section cannot be resolved (no `ROADMAP.md` / unknown phase), the query emits `{ \"detected\": false, ... }` — the checkpoint does not fire. Do not block on it.\n>\n> Optional tuning — pass `--terms <comma-list>` to replace the curated pluralization cues for this project (the `optional`/`chosen` cues keep their defaults): `gsd_run query assumption-delta scan \"${PHASE}\" --json --terms second,alternative,fallback`.\n\n## Decision branch\n\nRead `ASSUMPTION_DELTA_JSON`. Act on `detected` only — do **not** pattern-match the human prose.\n\n**If `detected` is `false`:** this phase does not change a core assumption. Skip the checkpoint entirely and continue planning. Do not raise it with the user.\n\n**If `detected` is `true`:** a core assumption may have lost its monopoly. The `signals[]` array tells you which family fired:\n\n| `kind` | What changed | The question to answer |\n|---|---|---|\n| `pluralization` | A second X was introduced where there was one (second platform / auth method / tenant / region / source of truth) | Does the current primary key / identity model still name the right noun? |\n| `optional` | A required / `only` field became optional | Is the field still the right anchor, or has the anchor moved? |\n| `chosen` | A derived value became chosen, or a constant became a parameter | Has a configuration decision become a modeling decision? |\n\nBefore finalizing the plan, answer this for the user and record the decision explicitly:\n\n> **Promote vs. add-alongside.** The usual correct move when a generalization occurs is to **promote** the new general representation to the primary and **demote** the old specific one to a detail of one variant — *not* to add the new one alongside the still-required old one. Adding alongside silently contradicts the generalized intent (a later variant that does not fit the old primary can be stored but never confirmed as a default).\n\nRecord the outcome in the PLAN.md front matter / a `<assumption_delta_decision>` block:\n\n- The **noun** that is now primary (the generalized identity).\n- The **decision**: `promote` | `add-alongside` | `no-change`, with a one-line rationale.\n- If `add-alongside`: call it out as accepted debt and note what would force a later promote.\n\n## Optional companion: an invariant test\n\nWhen `detected` is `true`, suggest (do not require) a contract/invariant test that encodes the now-generalized intent — e.g. *\"every confirmed default round-trips through the primary use-path, for every supported variant.\"* That test goes red the instant a future phase reintroduces the singular assumption, so the regression cannot land silently. If the user accepts, add the test as a task in the plan.\n\n## Tuning the vocabulary (optional)\n\nThe trigger vocabulary is a curated, additive-only set in `gsd-core/bin/lib/assumption-delta.cjs` (`DEFAULT_ASSUMPTION_DELTA_TERMS`). Bare \"or\" is intentionally excluded — it is too common in prose and would make the gate fire constantly. To widen or narrow the cues for a project, override at the call site with `--terms <comma-list>` (replaces the pluralization cues; `optional`/`chosen` keep defaults). The whole checkpoint is toggleable via `workflow.assumption_delta` in `.planning/config.json`.\n\nThis checkpoint is advisory: it informs and records; it never blocks the phase.\n"
2613
+ },
2614
+ "produces": [],
2615
+ "consumes": [
2616
+ "CONTEXT.md"
2617
+ ],
2618
+ "when": "workflow.assumption_delta",
2619
+ "onError": "skip"
2620
+ },
2190
2621
  {
2191
2622
  "capId": "schema-gate",
2192
2623
  "point": "plan:pre",
@@ -2490,6 +2921,7 @@ const byLoopPoint = {
2490
2921
 
2491
2922
  const configKeys = {
2492
2923
  "workflow.ai_integration_phase": "ai-integration",
2924
+ "workflow.assumption_delta": "assumption-delta",
2493
2925
  "workflow.code_review": "code-review",
2494
2926
  "workflow.code_review_depth": "code-review",
2495
2927
  "workflow.drift_threshold": "drift",
@@ -2530,6 +2962,12 @@ const configSchema = {
2530
2962
  "default": true,
2531
2963
  "description": "Prompt for an AI-SPEC design contract before planning phases that involve AI systems."
2532
2964
  },
2965
+ "workflow.assumption_delta": {
2966
+ "owner": "assumption-delta",
2967
+ "type": "boolean",
2968
+ "default": true,
2969
+ "description": "Enable the assumption-delta architecture checkpoint during planning. When a pluralization/optional/chosen signal is detected in the phase scope, the planner is prompted to re-ask whether the primary key / identity model still names the right thing. Advisory (non-blocking)."
2970
+ },
2533
2971
  "workflow.code_review": {
2534
2972
  "owner": "code-review",
2535
2973
  "type": "boolean",
@@ -2743,7 +3181,7 @@ const runtimes = {
2743
3181
  "antigravity": {
2744
3182
  "id": "antigravity",
2745
3183
  "role": "runtime",
2746
- "version": "1.6.1",
3184
+ "version": "1.7.0-rc.2",
2747
3185
  "title": "Antigravity",
2748
3186
  "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.",
2749
3187
  "tier": "core",
@@ -2766,6 +3204,7 @@ const runtimes = {
2766
3204
  ],
2767
3205
  "probeExists": "gsd-core/VERSION"
2768
3206
  },
3207
+ "localConfigDir": ".agents",
2769
3208
  "configFormat": "settings-json",
2770
3209
  "artifactLayout": {
2771
3210
  "global": [
@@ -2797,13 +3236,30 @@ const runtimes = {
2797
3236
  "installSurface": "settings-json",
2798
3237
  "writesSharedSettings": true,
2799
3238
  "permissionWriter": null,
2800
- "extendedHookEvents": []
3239
+ "extendedHookEvents": [],
3240
+ "hostIntegration": {
3241
+ "embeddingMode": "declarative",
3242
+ "commandSurface": "slash-file",
3243
+ "dispatch": {
3244
+ "namedDispatch": "undocumented",
3245
+ "nested": "undocumented",
3246
+ "maxDepth": "undocumented",
3247
+ "background": true,
3248
+ "subagentToolkit": "undocumented",
3249
+ "backgroundDispatch": "undocumented"
3250
+ },
3251
+ "modelMode": "passive",
3252
+ "hookBus": "host",
3253
+ "stateIO": "filesystem",
3254
+ "transport": "mcp",
3255
+ "runtime": "go"
3256
+ }
2801
3257
  }
2802
3258
  },
2803
3259
  "augment": {
2804
3260
  "id": "augment",
2805
3261
  "role": "runtime",
2806
- "version": "1.6.1",
3262
+ "version": "1.7.0-rc.2",
2807
3263
  "title": "Augment Code",
2808
3264
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
2809
3265
  "tier": "core",
@@ -2819,6 +3275,7 @@ const runtimes = {
2819
3275
  "AUGMENT_CONFIG_DIR"
2820
3276
  ]
2821
3277
  },
3278
+ "localConfigDir": ".augment",
2822
3279
  "configFormat": "settings-json",
2823
3280
  "artifactLayout": {
2824
3281
  "global": [
@@ -2837,6 +3294,14 @@ const runtimes = {
2837
3294
  "nesting": "nested",
2838
3295
  "recursive": false,
2839
3296
  "converter": "convertClaudeCommandToAugmentSkill"
3297
+ },
3298
+ {
3299
+ "kind": "agents",
3300
+ "destSubpath": "agents",
3301
+ "prefix": "gsd-",
3302
+ "nesting": "flat",
3303
+ "recursive": false,
3304
+ "converter": "convertClaudeAgentToAugmentAgent"
2840
3305
  }
2841
3306
  ],
2842
3307
  "local": [
@@ -2855,6 +3320,14 @@ const runtimes = {
2855
3320
  "nesting": "nested",
2856
3321
  "recursive": false,
2857
3322
  "converter": "convertClaudeCommandToAugmentSkill"
3323
+ },
3324
+ {
3325
+ "kind": "agents",
3326
+ "destSubpath": "agents",
3327
+ "prefix": "gsd-",
3328
+ "nesting": "flat",
3329
+ "recursive": false,
3330
+ "converter": "convertClaudeAgentToAugmentAgent"
2858
3331
  }
2859
3332
  ]
2860
3333
  },
@@ -2866,13 +3339,30 @@ const runtimes = {
2866
3339
  "installSurface": "settings-json",
2867
3340
  "writesSharedSettings": true,
2868
3341
  "permissionWriter": null,
2869
- "extendedHookEvents": []
3342
+ "extendedHookEvents": [],
3343
+ "hostIntegration": {
3344
+ "embeddingMode": "declarative",
3345
+ "commandSurface": "slash-file",
3346
+ "dispatch": {
3347
+ "namedDispatch": true,
3348
+ "nested": "undocumented",
3349
+ "maxDepth": "undocumented",
3350
+ "background": true,
3351
+ "subagentToolkit": "full",
3352
+ "backgroundDispatch": "undocumented"
3353
+ },
3354
+ "modelMode": "passive",
3355
+ "hookBus": "host",
3356
+ "stateIO": "filesystem",
3357
+ "transport": "mcp",
3358
+ "runtime": "node"
3359
+ }
2870
3360
  }
2871
3361
  },
2872
3362
  "claude": {
2873
3363
  "id": "claude",
2874
3364
  "role": "runtime",
2875
- "version": "1.6.1",
3365
+ "version": "1.7.0-rc.2",
2876
3366
  "title": "Claude Code",
2877
3367
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
2878
3368
  "tier": "core",
@@ -2888,6 +3378,7 @@ const runtimes = {
2888
3378
  "CLAUDE_CONFIG_DIR"
2889
3379
  ]
2890
3380
  },
3381
+ "localConfigDir": ".claude",
2891
3382
  "configFormat": "settings-json",
2892
3383
  "artifactLayout": {
2893
3384
  "global": [
@@ -2932,13 +3423,30 @@ const runtimes = {
2932
3423
  "Stop",
2933
3424
  "PreCompact",
2934
3425
  "FileChanged"
2935
- ]
3426
+ ],
3427
+ "hostIntegration": {
3428
+ "embeddingMode": "imperative",
3429
+ "commandSurface": "slash-file",
3430
+ "dispatch": {
3431
+ "namedDispatch": true,
3432
+ "nested": true,
3433
+ "maxDepth": 5,
3434
+ "background": true,
3435
+ "subagentToolkit": "full",
3436
+ "backgroundDispatch": false
3437
+ },
3438
+ "modelMode": "passive",
3439
+ "hookBus": "host",
3440
+ "stateIO": "filesystem",
3441
+ "transport": "mcp",
3442
+ "runtime": "node"
3443
+ }
2936
3444
  }
2937
3445
  },
2938
3446
  "cline": {
2939
3447
  "id": "cline",
2940
3448
  "role": "runtime",
2941
- "version": "1.6.1",
3449
+ "version": "1.7.0-rc.2",
2942
3450
  "title": "Cline",
2943
3451
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
2944
3452
  "tier": "core",
@@ -2954,6 +3462,7 @@ const runtimes = {
2954
3462
  "CLINE_CONFIG_DIR"
2955
3463
  ]
2956
3464
  },
3465
+ "localConfigDir": ".cline",
2957
3466
  "configFormat": "markdown-dir",
2958
3467
  "artifactLayout": {
2959
3468
  "global": [
@@ -2975,13 +3484,30 @@ const runtimes = {
2975
3484
  "installSurface": "cline-rules",
2976
3485
  "writesSharedSettings": false,
2977
3486
  "permissionWriter": null,
2978
- "extendedHookEvents": []
3487
+ "extendedHookEvents": [],
3488
+ "hostIntegration": {
3489
+ "embeddingMode": "imperative",
3490
+ "commandSurface": "slash-file",
3491
+ "dispatch": {
3492
+ "namedDispatch": true,
3493
+ "nested": false,
3494
+ "maxDepth": 1,
3495
+ "background": true,
3496
+ "subagentToolkit": "read-only",
3497
+ "backgroundDispatch": false
3498
+ },
3499
+ "modelMode": "active",
3500
+ "hookBus": "host",
3501
+ "stateIO": "filesystem",
3502
+ "transport": "mcp",
3503
+ "runtime": "node"
3504
+ }
2979
3505
  }
2980
3506
  },
2981
3507
  "codebuddy": {
2982
3508
  "id": "codebuddy",
2983
3509
  "role": "runtime",
2984
- "version": "1.6.1",
3510
+ "version": "1.7.0-rc.2",
2985
3511
  "title": "CodeBuddy",
2986
3512
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
2987
3513
  "tier": "core",
@@ -2997,6 +3523,7 @@ const runtimes = {
2997
3523
  "CODEBUDDY_CONFIG_DIR"
2998
3524
  ]
2999
3525
  },
3526
+ "localConfigDir": ".codebuddy",
3000
3527
  "configFormat": "settings-json",
3001
3528
  "artifactLayout": {
3002
3529
  "global": [
@@ -3015,6 +3542,14 @@ const runtimes = {
3015
3542
  "nesting": "flat",
3016
3543
  "recursive": false,
3017
3544
  "converter": "convertClaudeCommandToCodebuddySkill"
3545
+ },
3546
+ {
3547
+ "kind": "agents",
3548
+ "destSubpath": "agents",
3549
+ "prefix": "gsd-",
3550
+ "nesting": "flat",
3551
+ "recursive": false,
3552
+ "converter": "convertClaudeAgentToCodebuddyAgent"
3018
3553
  }
3019
3554
  ],
3020
3555
  "local": [
@@ -3033,6 +3568,14 @@ const runtimes = {
3033
3568
  "nesting": "flat",
3034
3569
  "recursive": false,
3035
3570
  "converter": "convertClaudeCommandToCodebuddySkill"
3571
+ },
3572
+ {
3573
+ "kind": "agents",
3574
+ "destSubpath": "agents",
3575
+ "prefix": "gsd-",
3576
+ "nesting": "flat",
3577
+ "recursive": false,
3578
+ "converter": "convertClaudeAgentToCodebuddyAgent"
3036
3579
  }
3037
3580
  ]
3038
3581
  },
@@ -3044,13 +3587,30 @@ const runtimes = {
3044
3587
  "installSurface": "settings-json",
3045
3588
  "writesSharedSettings": true,
3046
3589
  "permissionWriter": null,
3047
- "extendedHookEvents": []
3590
+ "extendedHookEvents": [],
3591
+ "hostIntegration": {
3592
+ "embeddingMode": "declarative",
3593
+ "commandSurface": "slash-file",
3594
+ "dispatch": {
3595
+ "namedDispatch": true,
3596
+ "nested": false,
3597
+ "maxDepth": 1,
3598
+ "background": true,
3599
+ "subagentToolkit": "full",
3600
+ "backgroundDispatch": false
3601
+ },
3602
+ "modelMode": "passive",
3603
+ "hookBus": "host",
3604
+ "stateIO": "filesystem",
3605
+ "transport": "mcp",
3606
+ "runtime": "node"
3607
+ }
3048
3608
  }
3049
3609
  },
3050
3610
  "codex": {
3051
3611
  "id": "codex",
3052
3612
  "role": "runtime",
3053
- "version": "1.6.1",
3613
+ "version": "1.7.0-rc.2",
3054
3614
  "title": "OpenAI Codex CLI",
3055
3615
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
3056
3616
  "tier": "core",
@@ -3066,6 +3626,7 @@ const runtimes = {
3066
3626
  "CODEX_HOME"
3067
3627
  ]
3068
3628
  },
3629
+ "localConfigDir": ".codex",
3069
3630
  "configFormat": "toml",
3070
3631
  "artifactLayout": {
3071
3632
  "global": [
@@ -3097,13 +3658,30 @@ const runtimes = {
3097
3658
  "installSurface": "codex-toml",
3098
3659
  "writesSharedSettings": false,
3099
3660
  "permissionWriter": null,
3100
- "extendedHookEvents": []
3661
+ "extendedHookEvents": [],
3662
+ "hostIntegration": {
3663
+ "embeddingMode": "declarative",
3664
+ "commandSurface": "slash-file",
3665
+ "dispatch": {
3666
+ "namedDispatch": true,
3667
+ "nested": true,
3668
+ "maxDepth": 1,
3669
+ "background": true,
3670
+ "subagentToolkit": "full",
3671
+ "backgroundDispatch": true
3672
+ },
3673
+ "modelMode": "passive",
3674
+ "hookBus": "host",
3675
+ "stateIO": "filesystem",
3676
+ "transport": "mcp",
3677
+ "runtime": "node"
3678
+ }
3101
3679
  }
3102
3680
  },
3103
3681
  "copilot": {
3104
3682
  "id": "copilot",
3105
3683
  "role": "runtime",
3106
- "version": "1.6.1",
3684
+ "version": "1.7.0-rc.2",
3107
3685
  "title": "GitHub Copilot",
3108
3686
  "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.",
3109
3687
  "tier": "core",
@@ -3120,6 +3698,7 @@ const runtimes = {
3120
3698
  "COPILOT_HOME"
3121
3699
  ]
3122
3700
  },
3701
+ "localConfigDir": ".github",
3123
3702
  "configFormat": "markdown",
3124
3703
  "artifactLayout": {
3125
3704
  "global": [
@@ -3150,13 +3729,30 @@ const runtimes = {
3150
3729
  "installSurface": "copilot-instructions",
3151
3730
  "writesSharedSettings": false,
3152
3731
  "permissionWriter": null,
3153
- "extendedHookEvents": []
3732
+ "extendedHookEvents": [],
3733
+ "hostIntegration": {
3734
+ "embeddingMode": "declarative",
3735
+ "commandSurface": "slash-file",
3736
+ "dispatch": {
3737
+ "namedDispatch": true,
3738
+ "nested": false,
3739
+ "maxDepth": 1,
3740
+ "background": true,
3741
+ "subagentToolkit": "full",
3742
+ "backgroundDispatch": false
3743
+ },
3744
+ "modelMode": "passive",
3745
+ "hookBus": "host",
3746
+ "stateIO": "filesystem",
3747
+ "transport": "mcp",
3748
+ "runtime": "undocumented"
3749
+ }
3154
3750
  }
3155
3751
  },
3156
3752
  "cursor": {
3157
3753
  "id": "cursor",
3158
3754
  "role": "runtime",
3159
- "version": "1.6.1",
3755
+ "version": "1.7.0-rc.2",
3160
3756
  "title": "Cursor",
3161
3757
  "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
3162
3758
  "tier": "core",
@@ -3172,6 +3768,7 @@ const runtimes = {
3172
3768
  "CURSOR_CONFIG_DIR"
3173
3769
  ]
3174
3770
  },
3771
+ "localConfigDir": ".cursor",
3175
3772
  "configFormat": "none",
3176
3773
  "artifactLayout": {
3177
3774
  "global": [
@@ -3190,6 +3787,14 @@ const runtimes = {
3190
3787
  "nesting": "flat",
3191
3788
  "recursive": false,
3192
3789
  "converter": "convertClaudeCommandToCursorCommand"
3790
+ },
3791
+ {
3792
+ "kind": "agents",
3793
+ "destSubpath": "agents",
3794
+ "prefix": "gsd-",
3795
+ "nesting": "flat",
3796
+ "recursive": false,
3797
+ "converter": "convertClaudeAgentToCursorAgent"
3193
3798
  }
3194
3799
  ],
3195
3800
  "local": [
@@ -3208,6 +3813,14 @@ const runtimes = {
3208
3813
  "nesting": "flat",
3209
3814
  "recursive": false,
3210
3815
  "converter": "convertClaudeCommandToCursorCommand"
3816
+ },
3817
+ {
3818
+ "kind": "agents",
3819
+ "destSubpath": "agents",
3820
+ "prefix": "gsd-",
3821
+ "nesting": "flat",
3822
+ "recursive": false,
3823
+ "converter": "convertClaudeAgentToCursorAgent"
3211
3824
  }
3212
3825
  ]
3213
3826
  },
@@ -3219,13 +3832,30 @@ const runtimes = {
3219
3832
  "installSurface": "cursor-hooks-json",
3220
3833
  "writesSharedSettings": false,
3221
3834
  "permissionWriter": null,
3222
- "extendedHookEvents": []
3835
+ "extendedHookEvents": [],
3836
+ "hostIntegration": {
3837
+ "embeddingMode": "imperative",
3838
+ "commandSurface": "slash-file",
3839
+ "dispatch": {
3840
+ "namedDispatch": true,
3841
+ "nested": true,
3842
+ "maxDepth": 2,
3843
+ "background": true,
3844
+ "subagentToolkit": "full",
3845
+ "backgroundDispatch": true
3846
+ },
3847
+ "modelMode": "passive",
3848
+ "hookBus": "host",
3849
+ "stateIO": "filesystem",
3850
+ "transport": "mcp",
3851
+ "runtime": "node"
3852
+ }
3223
3853
  }
3224
3854
  },
3225
3855
  "gemini": {
3226
3856
  "id": "gemini",
3227
3857
  "role": "runtime",
3228
- "version": "1.6.1",
3858
+ "version": "1.7.0-rc.2",
3229
3859
  "title": "Gemini CLI",
3230
3860
  "description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.",
3231
3861
  "tier": "core",
@@ -3241,6 +3871,7 @@ const runtimes = {
3241
3871
  "GEMINI_CONFIG_DIR"
3242
3872
  ]
3243
3873
  },
3874
+ "localConfigDir": ".gemini",
3244
3875
  "configFormat": "settings-json",
3245
3876
  "artifactLayout": {
3246
3877
  "global": [
@@ -3276,13 +3907,30 @@ const runtimes = {
3276
3907
  "BeforeAgent",
3277
3908
  "AfterAgent",
3278
3909
  "BeforeModel"
3279
- ]
3910
+ ],
3911
+ "hostIntegration": {
3912
+ "embeddingMode": "declarative",
3913
+ "commandSurface": "slash-toml",
3914
+ "dispatch": {
3915
+ "namedDispatch": true,
3916
+ "nested": false,
3917
+ "maxDepth": 1,
3918
+ "background": "undocumented",
3919
+ "subagentToolkit": "undocumented",
3920
+ "backgroundDispatch": false
3921
+ },
3922
+ "modelMode": "passive",
3923
+ "hookBus": "host",
3924
+ "stateIO": "filesystem",
3925
+ "transport": "mcp",
3926
+ "runtime": "node"
3927
+ }
3280
3928
  }
3281
3929
  },
3282
3930
  "hermes": {
3283
3931
  "id": "hermes",
3284
3932
  "role": "runtime",
3285
- "version": "1.6.1",
3933
+ "version": "1.7.0-rc.2",
3286
3934
  "title": "Hermes Agent",
3287
3935
  "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.",
3288
3936
  "tier": "core",
@@ -3298,6 +3946,7 @@ const runtimes = {
3298
3946
  "HERMES_HOME"
3299
3947
  ]
3300
3948
  },
3949
+ "localConfigDir": ".hermes",
3301
3950
  "configFormat": "settings-json",
3302
3951
  "artifactLayout": {
3303
3952
  "global": [
@@ -3329,13 +3978,30 @@ const runtimes = {
3329
3978
  "installSurface": "settings-json",
3330
3979
  "writesSharedSettings": true,
3331
3980
  "permissionWriter": null,
3332
- "extendedHookEvents": []
3981
+ "extendedHookEvents": [],
3982
+ "hostIntegration": {
3983
+ "embeddingMode": "imperative",
3984
+ "commandSurface": "slash-programmatic",
3985
+ "dispatch": {
3986
+ "namedDispatch": false,
3987
+ "nested": true,
3988
+ "maxDepth": 1,
3989
+ "background": true,
3990
+ "subagentToolkit": "read-only",
3991
+ "backgroundDispatch": false
3992
+ },
3993
+ "modelMode": "active",
3994
+ "hookBus": "host",
3995
+ "stateIO": "filesystem",
3996
+ "transport": "mcp",
3997
+ "runtime": "python"
3998
+ }
3333
3999
  }
3334
4000
  },
3335
4001
  "kilo": {
3336
4002
  "id": "kilo",
3337
4003
  "role": "runtime",
3338
- "version": "1.6.1",
4004
+ "version": "1.7.0-rc.2",
3339
4005
  "title": "Kilo Code",
3340
4006
  "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.",
3341
4007
  "tier": "core",
@@ -3358,6 +4024,7 @@ const runtimes = {
3358
4024
  "env": []
3359
4025
  }
3360
4026
  },
4027
+ "localConfigDir": ".kilo",
3361
4028
  "configFormat": "settings-json",
3362
4029
  "artifactLayout": {
3363
4030
  "global": [
@@ -3404,13 +4071,30 @@ const runtimes = {
3404
4071
  "installSurface": "settings-json",
3405
4072
  "writesSharedSettings": false,
3406
4073
  "permissionWriter": "kilo",
3407
- "extendedHookEvents": []
4074
+ "extendedHookEvents": [],
4075
+ "hostIntegration": {
4076
+ "embeddingMode": "imperative",
4077
+ "commandSurface": "slash-file",
4078
+ "dispatch": {
4079
+ "namedDispatch": true,
4080
+ "nested": true,
4081
+ "maxDepth": -1,
4082
+ "background": true,
4083
+ "subagentToolkit": "undocumented",
4084
+ "backgroundDispatch": false
4085
+ },
4086
+ "modelMode": "active",
4087
+ "hookBus": "host",
4088
+ "stateIO": "filesystem",
4089
+ "transport": "mcp",
4090
+ "runtime": "bun"
4091
+ }
3408
4092
  }
3409
4093
  },
3410
4094
  "kimi": {
3411
4095
  "id": "kimi",
3412
4096
  "role": "runtime",
3413
- "version": "1.6.1",
4097
+ "version": "1.7.0-rc.2",
3414
4098
  "title": "Kimi CLI",
3415
4099
  "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.",
3416
4100
  "tier": "core",
@@ -3431,6 +4115,7 @@ const runtimes = {
3431
4115
  ],
3432
4116
  "probeExists": "skills"
3433
4117
  },
4118
+ "localConfigDir": ".kimi-code",
3434
4119
  "configFormat": "none",
3435
4120
  "artifactLayout": {
3436
4121
  "global": [
@@ -3460,13 +4145,30 @@ const runtimes = {
3460
4145
  "installSurface": "profile-marker-only",
3461
4146
  "writesSharedSettings": false,
3462
4147
  "permissionWriter": null,
3463
- "extendedHookEvents": []
4148
+ "extendedHookEvents": [],
4149
+ "hostIntegration": {
4150
+ "embeddingMode": "imperative",
4151
+ "commandSurface": "slash-file",
4152
+ "dispatch": {
4153
+ "namedDispatch": true,
4154
+ "nested": false,
4155
+ "maxDepth": 1,
4156
+ "background": true,
4157
+ "subagentToolkit": "undocumented",
4158
+ "backgroundDispatch": false
4159
+ },
4160
+ "modelMode": "passive",
4161
+ "hookBus": "host",
4162
+ "stateIO": "filesystem",
4163
+ "transport": "mcp",
4164
+ "runtime": "python"
4165
+ }
3464
4166
  }
3465
4167
  },
3466
4168
  "opencode": {
3467
4169
  "id": "opencode",
3468
4170
  "role": "runtime",
3469
- "version": "1.6.1",
4171
+ "version": "1.7.0-rc.2",
3470
4172
  "title": "OpenCode",
3471
4173
  "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
3472
4174
  "tier": "core",
@@ -3484,6 +4186,7 @@ const runtimes = {
3484
4186
  "XDG_CONFIG_HOME"
3485
4187
  ]
3486
4188
  },
4189
+ "localConfigDir": ".opencode",
3487
4190
  "configFormat": "settings-json",
3488
4191
  "artifactLayout": {
3489
4192
  "global": [
@@ -3525,18 +4228,36 @@ const runtimes = {
3525
4228
  },
3526
4229
  "commandStyle": "slash-hyphen",
3527
4230
  "hooksSurface": "none",
4231
+ "extensionEvents": "opencode",
3528
4232
  "sandboxTier": "none",
3529
4233
  "supportTier": 2,
3530
4234
  "installSurface": "settings-json",
3531
4235
  "writesSharedSettings": true,
3532
4236
  "permissionWriter": "opencode",
3533
- "extendedHookEvents": []
4237
+ "extendedHookEvents": [],
4238
+ "hostIntegration": {
4239
+ "embeddingMode": "imperative",
4240
+ "commandSurface": "slash-file",
4241
+ "dispatch": {
4242
+ "namedDispatch": true,
4243
+ "nested": "undocumented",
4244
+ "maxDepth": "undocumented",
4245
+ "background": false,
4246
+ "subagentToolkit": "full",
4247
+ "backgroundDispatch": "undocumented"
4248
+ },
4249
+ "modelMode": "active",
4250
+ "hookBus": "host",
4251
+ "stateIO": "filesystem",
4252
+ "transport": "mcp",
4253
+ "runtime": "bun"
4254
+ }
3534
4255
  }
3535
4256
  },
3536
4257
  "qwen": {
3537
4258
  "id": "qwen",
3538
4259
  "role": "runtime",
3539
- "version": "1.6.1",
4260
+ "version": "1.7.0-rc.2",
3540
4261
  "title": "Qwen Code",
3541
4262
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
3542
4263
  "tier": "core",
@@ -3552,6 +4273,7 @@ const runtimes = {
3552
4273
  "QWEN_CONFIG_DIR"
3553
4274
  ]
3554
4275
  },
4276
+ "localConfigDir": ".qwen",
3555
4277
  "configFormat": "settings-json",
3556
4278
  "artifactLayout": {
3557
4279
  "global": [
@@ -3587,13 +4309,30 @@ const runtimes = {
3587
4309
  "SubagentStop",
3588
4310
  "Stop",
3589
4311
  "PreCompact"
3590
- ]
4312
+ ],
4313
+ "hostIntegration": {
4314
+ "embeddingMode": "imperative",
4315
+ "commandSurface": "slash-file",
4316
+ "dispatch": {
4317
+ "namedDispatch": true,
4318
+ "nested": false,
4319
+ "maxDepth": 1,
4320
+ "background": true,
4321
+ "subagentToolkit": "full",
4322
+ "backgroundDispatch": false
4323
+ },
4324
+ "modelMode": "passive",
4325
+ "hookBus": "host",
4326
+ "stateIO": "filesystem",
4327
+ "transport": "mcp",
4328
+ "runtime": "node"
4329
+ }
3591
4330
  }
3592
4331
  },
3593
4332
  "trae": {
3594
4333
  "id": "trae",
3595
4334
  "role": "runtime",
3596
- "version": "1.6.1",
4335
+ "version": "1.7.0-rc.2",
3597
4336
  "title": "Trae IDE",
3598
4337
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
3599
4338
  "tier": "core",
@@ -3609,6 +4348,7 @@ const runtimes = {
3609
4348
  "TRAE_CONFIG_DIR"
3610
4349
  ]
3611
4350
  },
4351
+ "localConfigDir": ".trae",
3612
4352
  "configFormat": "none",
3613
4353
  "artifactLayout": {
3614
4354
  "global": [
@@ -3619,6 +4359,14 @@ const runtimes = {
3619
4359
  "nesting": "nested",
3620
4360
  "recursive": false,
3621
4361
  "converter": "convertClaudeCommandToTraeSkill"
4362
+ },
4363
+ {
4364
+ "kind": "agents",
4365
+ "destSubpath": "agents",
4366
+ "prefix": "gsd-",
4367
+ "nesting": "flat",
4368
+ "recursive": false,
4369
+ "converter": "convertClaudeAgentToTraeAgent"
3622
4370
  }
3623
4371
  ],
3624
4372
  "local": [
@@ -3629,6 +4377,14 @@ const runtimes = {
3629
4377
  "nesting": "nested",
3630
4378
  "recursive": false,
3631
4379
  "converter": "convertClaudeCommandToTraeSkill"
4380
+ },
4381
+ {
4382
+ "kind": "agents",
4383
+ "destSubpath": "agents",
4384
+ "prefix": "gsd-",
4385
+ "nesting": "flat",
4386
+ "recursive": false,
4387
+ "converter": "convertClaudeAgentToTraeAgent"
3632
4388
  }
3633
4389
  ]
3634
4390
  },
@@ -3639,13 +4395,30 @@ const runtimes = {
3639
4395
  "installSurface": "profile-marker-only",
3640
4396
  "writesSharedSettings": false,
3641
4397
  "permissionWriter": null,
3642
- "extendedHookEvents": []
4398
+ "extendedHookEvents": [],
4399
+ "hostIntegration": {
4400
+ "embeddingMode": "imperative",
4401
+ "commandSurface": "slash-file",
4402
+ "dispatch": {
4403
+ "namedDispatch": true,
4404
+ "nested": "undocumented",
4405
+ "maxDepth": "undocumented",
4406
+ "background": true,
4407
+ "subagentToolkit": "undocumented",
4408
+ "backgroundDispatch": "undocumented"
4409
+ },
4410
+ "modelMode": "passive",
4411
+ "hookBus": "engine",
4412
+ "stateIO": "filesystem",
4413
+ "transport": "mcp",
4414
+ "runtime": "node"
4415
+ }
3643
4416
  }
3644
4417
  },
3645
4418
  "windsurf": {
3646
4419
  "id": "windsurf",
3647
4420
  "role": "runtime",
3648
- "version": "1.6.1",
4421
+ "version": "1.7.0-rc.2",
3649
4422
  "title": "Windsurf",
3650
4423
  "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.",
3651
4424
  "tier": "core",
@@ -3662,9 +4435,19 @@ const runtimes = {
3662
4435
  "WINDSURF_CONFIG_DIR"
3663
4436
  ]
3664
4437
  },
4438
+ "localConfigDir": ".windsurf",
3665
4439
  "configFormat": "none",
3666
4440
  "artifactLayout": {
3667
- "global": [],
4441
+ "global": [
4442
+ {
4443
+ "kind": "agents",
4444
+ "destSubpath": "agents",
4445
+ "prefix": "gsd-",
4446
+ "nesting": "flat",
4447
+ "recursive": false,
4448
+ "converter": "convertClaudeAgentToWindsurfAgent"
4449
+ }
4450
+ ],
3668
4451
  "local": [
3669
4452
  {
3670
4453
  "kind": "commands",
@@ -3673,6 +4456,14 @@ const runtimes = {
3673
4456
  "nesting": "flat",
3674
4457
  "recursive": false,
3675
4458
  "converter": "convertClaudeCommandToWindsurfWorkflow"
4459
+ },
4460
+ {
4461
+ "kind": "agents",
4462
+ "destSubpath": "agents",
4463
+ "prefix": "gsd-",
4464
+ "nesting": "flat",
4465
+ "recursive": false,
4466
+ "converter": "convertClaudeAgentToWindsurfAgent"
3676
4467
  }
3677
4468
  ]
3678
4469
  },
@@ -3683,7 +4474,24 @@ const runtimes = {
3683
4474
  "installSurface": "profile-marker-only",
3684
4475
  "writesSharedSettings": false,
3685
4476
  "permissionWriter": null,
3686
- "extendedHookEvents": []
4477
+ "extendedHookEvents": [],
4478
+ "hostIntegration": {
4479
+ "embeddingMode": "declarative",
4480
+ "commandSurface": "slash-file",
4481
+ "dispatch": {
4482
+ "namedDispatch": "undocumented",
4483
+ "nested": "undocumented",
4484
+ "maxDepth": "undocumented",
4485
+ "background": "undocumented",
4486
+ "subagentToolkit": "undocumented",
4487
+ "backgroundDispatch": "undocumented"
4488
+ },
4489
+ "modelMode": "passive",
4490
+ "hookBus": "host",
4491
+ "stateIO": "filesystem",
4492
+ "transport": "mcp",
4493
+ "runtime": "undocumented"
4494
+ }
3687
4495
  }
3688
4496
  }
3689
4497
  };
@@ -3834,6 +4642,7 @@ const profileMembership = {
3834
4642
  const _requiresGraph = {
3835
4643
  "ai-integration": [],
3836
4644
  "antigravity": [],
4645
+ "assumption-delta": [],
3837
4646
  "audit": [],
3838
4647
  "augment": [],
3839
4648
  "claude": [],