@opengsd/gsd-core 1.6.0 → 1.7.0-rc.1

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 (68) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/agents/gsd-verifier.md +1 -0
  3. package/bin/gsd-mcp-server.js +31 -0
  4. package/bin/install.js +293 -1145
  5. package/commands/gsd/review.md +6 -0
  6. package/gemini-extension.json +1 -1
  7. package/gsd-core/bin/gsd-tools.cjs +116 -1
  8. package/gsd-core/bin/lib/adapter-declarative.cjs +35 -0
  9. package/gsd-core/bin/lib/adapter-imperative.cjs +52 -0
  10. package/gsd-core/bin/lib/assumption-delta.cjs +231 -0
  11. package/gsd-core/bin/lib/capability-lifecycle.cjs +7 -7
  12. package/gsd-core/bin/lib/capability-loader.cjs +18 -0
  13. package/gsd-core/bin/lib/capability-lock.cjs +2 -2
  14. package/gsd-core/bin/lib/capability-registry.cjs +889 -82
  15. package/gsd-core/bin/lib/capability-source.cjs +4 -4
  16. package/gsd-core/bin/lib/capability-validator.cjs +198 -0
  17. package/gsd-core/bin/lib/cli-skew-check.cjs +44 -0
  18. package/gsd-core/bin/lib/command-aliases.cjs +8 -0
  19. package/gsd-core/bin/lib/config.cjs +27 -0
  20. package/gsd-core/bin/lib/embedding-adapter.cjs +27 -0
  21. package/gsd-core/bin/lib/external-descriptor-trust.cjs +70 -0
  22. package/gsd-core/bin/lib/hook-bus.cjs +81 -0
  23. package/gsd-core/bin/lib/host-integration.cjs +408 -0
  24. package/gsd-core/bin/lib/init.cjs +1 -1
  25. package/gsd-core/bin/lib/install-engine.cjs +755 -0
  26. package/gsd-core/bin/lib/install-profiles.cjs +35 -4
  27. package/gsd-core/bin/lib/installer-migrations.cjs +1 -1
  28. package/gsd-core/bin/lib/mcp-server.cjs +194 -0
  29. package/gsd-core/bin/lib/milestone.cjs +27 -30
  30. package/gsd-core/bin/lib/model-adapter.cjs +50 -0
  31. package/gsd-core/bin/lib/phase.cjs +41 -72
  32. package/gsd-core/bin/lib/planning-workspace.cjs +1 -1
  33. package/gsd-core/bin/lib/probe-core.cjs +91 -1
  34. package/gsd-core/bin/lib/review-reviewer-selection.cjs +129 -13
  35. package/gsd-core/bin/lib/roadmap-upgrade.cjs +3 -2
  36. package/gsd-core/bin/lib/roadmap.cjs +17 -3
  37. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +65 -9
  38. package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +54 -4
  39. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +5 -2
  40. package/gsd-core/bin/lib/runtime-hooks-surface.cjs +1 -1
  41. package/gsd-core/bin/lib/runtime-name-policy.cjs +160 -30
  42. package/gsd-core/bin/lib/shell-command-projection.cjs +37 -1
  43. package/gsd-core/bin/lib/stale-bake-guard.cjs +254 -0
  44. package/gsd-core/bin/lib/state-command-router.cjs +4 -0
  45. package/gsd-core/bin/lib/state-io.cjs +55 -0
  46. package/gsd-core/bin/lib/state-transition.cjs +1588 -0
  47. package/gsd-core/bin/lib/state.cjs +306 -681
  48. package/gsd-core/bin/lib/surface.cjs +4 -1
  49. package/gsd-core/bin/lib/workstream.cjs +4 -4
  50. package/gsd-core/bin/shared/config-schema.manifest.json +9 -0
  51. package/gsd-core/references/honest-verifier.md +105 -0
  52. package/gsd-core/references/reviewer-instances.md +99 -0
  53. package/gsd-core/workflows/autonomous.md +9 -9
  54. package/gsd-core/workflows/manager.md +15 -15
  55. package/gsd-core/workflows/plan-phase.md +1 -1
  56. package/gsd-core/workflows/review.md +26 -0
  57. package/gsd-core/workflows/thread.md +4 -4
  58. package/gsd-core/workflows/verify-phase.md +11 -4
  59. package/hooks/dist/gsd-graphify-update.sh +7 -1
  60. package/hooks/gsd-graphify-update.sh +7 -1
  61. package/package.json +4 -4
  62. package/scripts/ci-test-scope.cjs +38 -9
  63. package/scripts/lint-allow-test-rule-refs.allowlist.json +0 -1
  64. package/scripts/lint-regression-test-names.allowlist.json +3 -0
  65. package/scripts/lint-test-file-count.allowlist.json +19 -5
  66. package/scripts/mutation-matrix.cjs +45 -3
  67. package/scripts/prompt-injection-scan.sh +8 -0
  68. 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.0",
13
+ "version": "1.7.0-rc.1",
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.0",
66
+ "version": "1.7.0-rc.1",
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.1",
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.0",
190
+ "version": "1.7.0-rc.1",
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.0",
227
+ "version": "1.7.0-rc.1",
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.0",
330
+ "version": "1.7.0-rc.1",
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.0",
414
+ "version": "1.7.0-rc.1",
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.0",
475
+ "version": "1.7.0-rc.1",
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.0",
536
+ "version": "1.7.0-rc.1",
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.0",
639
+ "version": "1.7.0-rc.1",
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.0",
710
+ "version": "1.7.0-rc.1",
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.0",
781
+ "version": "1.7.0-rc.1",
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.0",
884
+ "version": "1.7.0-rc.1",
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.0",
962
+ "version": "1.7.0-rc.1",
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.0",
1003
+ "version": "1.7.0-rc.1",
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.0",
1078
+ "version": "1.7.0-rc.1",
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.0",
1119
+ "version": "1.7.0-rc.1",
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.0",
1190
+ "version": "1.7.0-rc.1",
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.0",
1242
+ "version": "1.7.0-rc.1",
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.0",
1335
+ "version": "1.7.0-rc.1",
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.0",
1409
+ "version": "1.7.0-rc.1",
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.0",
1583
+ "version": "1.7.0-rc.1",
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.0",
1633
+ "version": "1.7.0-rc.1",
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": [
@@ -1384,13 +1695,30 @@ const capabilities = {
1384
1695
  "installSurface": "settings-json",
1385
1696
  "writesSharedSettings": true,
1386
1697
  "permissionWriter": "opencode",
1387
- "extendedHookEvents": []
1698
+ "extendedHookEvents": [],
1699
+ "hostIntegration": {
1700
+ "embeddingMode": "imperative",
1701
+ "commandSurface": "slash-file",
1702
+ "dispatch": {
1703
+ "namedDispatch": true,
1704
+ "nested": "undocumented",
1705
+ "maxDepth": "undocumented",
1706
+ "background": false,
1707
+ "subagentToolkit": "full",
1708
+ "backgroundDispatch": "undocumented"
1709
+ },
1710
+ "modelMode": "active",
1711
+ "hookBus": "host",
1712
+ "stateIO": "filesystem",
1713
+ "transport": "mcp",
1714
+ "runtime": "bun"
1715
+ }
1388
1716
  }
1389
1717
  },
1390
1718
  "pattern-mapper": {
1391
1719
  "id": "pattern-mapper",
1392
1720
  "role": "feature",
1393
- "version": "1.6.0",
1721
+ "version": "1.7.0-rc.1",
1394
1722
  "title": "Pattern mapping",
1395
1723
  "description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
1396
1724
  "tier": "full",
@@ -1444,7 +1772,7 @@ const capabilities = {
1444
1772
  "profile-pipeline": {
1445
1773
  "id": "profile-pipeline",
1446
1774
  "role": "feature",
1447
- "version": "1.6.0",
1775
+ "version": "1.7.0-rc.1",
1448
1776
  "title": "Developer profiling pipeline",
1449
1777
  "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
1778
  "tier": "full",
@@ -1521,7 +1849,7 @@ const capabilities = {
1521
1849
  "qwen": {
1522
1850
  "id": "qwen",
1523
1851
  "role": "runtime",
1524
- "version": "1.6.0",
1852
+ "version": "1.7.0-rc.1",
1525
1853
  "title": "Qwen Code",
1526
1854
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
1527
1855
  "tier": "core",
@@ -1537,6 +1865,7 @@ const capabilities = {
1537
1865
  "QWEN_CONFIG_DIR"
1538
1866
  ]
1539
1867
  },
1868
+ "localConfigDir": ".qwen",
1540
1869
  "configFormat": "settings-json",
1541
1870
  "artifactLayout": {
1542
1871
  "global": [
@@ -1572,13 +1901,30 @@ const capabilities = {
1572
1901
  "SubagentStop",
1573
1902
  "Stop",
1574
1903
  "PreCompact"
1575
- ]
1904
+ ],
1905
+ "hostIntegration": {
1906
+ "embeddingMode": "imperative",
1907
+ "commandSurface": "slash-file",
1908
+ "dispatch": {
1909
+ "namedDispatch": true,
1910
+ "nested": false,
1911
+ "maxDepth": 1,
1912
+ "background": true,
1913
+ "subagentToolkit": "full",
1914
+ "backgroundDispatch": false
1915
+ },
1916
+ "modelMode": "passive",
1917
+ "hookBus": "host",
1918
+ "stateIO": "filesystem",
1919
+ "transport": "mcp",
1920
+ "runtime": "node"
1921
+ }
1576
1922
  }
1577
1923
  },
1578
1924
  "research": {
1579
1925
  "id": "research",
1580
1926
  "role": "feature",
1581
- "version": "1.6.0",
1927
+ "version": "1.7.0-rc.1",
1582
1928
  "title": "Phase research",
1583
1929
  "description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
1584
1930
  "tier": "standard",
@@ -1630,7 +1976,7 @@ const capabilities = {
1630
1976
  "schema-gate": {
1631
1977
  "id": "schema-gate",
1632
1978
  "role": "feature",
1633
- "version": "1.6.0",
1979
+ "version": "1.7.0-rc.1",
1634
1980
  "title": "Schema push detection gate",
1635
1981
  "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
1982
  "tier": "full",
@@ -1676,7 +2022,7 @@ const capabilities = {
1676
2022
  "security": {
1677
2023
  "id": "security",
1678
2024
  "role": "feature",
1679
- "version": "1.6.0",
2025
+ "version": "1.7.0-rc.1",
1680
2026
  "title": "Security enforcement",
1681
2027
  "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
1682
2028
  "tier": "full",
@@ -1775,7 +2121,7 @@ const capabilities = {
1775
2121
  "tdd": {
1776
2122
  "id": "tdd",
1777
2123
  "role": "feature",
1778
- "version": "1.6.0",
2124
+ "version": "1.7.0-rc.1",
1779
2125
  "title": "Test-driven development",
1780
2126
  "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
2127
  "tier": "full",
@@ -1828,7 +2174,7 @@ const capabilities = {
1828
2174
  "trae": {
1829
2175
  "id": "trae",
1830
2176
  "role": "runtime",
1831
- "version": "1.6.0",
2177
+ "version": "1.7.0-rc.1",
1832
2178
  "title": "Trae IDE",
1833
2179
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
1834
2180
  "tier": "core",
@@ -1844,6 +2190,7 @@ const capabilities = {
1844
2190
  "TRAE_CONFIG_DIR"
1845
2191
  ]
1846
2192
  },
2193
+ "localConfigDir": ".trae",
1847
2194
  "configFormat": "none",
1848
2195
  "artifactLayout": {
1849
2196
  "global": [
@@ -1854,6 +2201,14 @@ const capabilities = {
1854
2201
  "nesting": "nested",
1855
2202
  "recursive": false,
1856
2203
  "converter": "convertClaudeCommandToTraeSkill"
2204
+ },
2205
+ {
2206
+ "kind": "agents",
2207
+ "destSubpath": "agents",
2208
+ "prefix": "gsd-",
2209
+ "nesting": "flat",
2210
+ "recursive": false,
2211
+ "converter": "convertClaudeAgentToTraeAgent"
1857
2212
  }
1858
2213
  ],
1859
2214
  "local": [
@@ -1864,6 +2219,14 @@ const capabilities = {
1864
2219
  "nesting": "nested",
1865
2220
  "recursive": false,
1866
2221
  "converter": "convertClaudeCommandToTraeSkill"
2222
+ },
2223
+ {
2224
+ "kind": "agents",
2225
+ "destSubpath": "agents",
2226
+ "prefix": "gsd-",
2227
+ "nesting": "flat",
2228
+ "recursive": false,
2229
+ "converter": "convertClaudeAgentToTraeAgent"
1867
2230
  }
1868
2231
  ]
1869
2232
  },
@@ -1874,13 +2237,30 @@ const capabilities = {
1874
2237
  "installSurface": "profile-marker-only",
1875
2238
  "writesSharedSettings": false,
1876
2239
  "permissionWriter": null,
1877
- "extendedHookEvents": []
2240
+ "extendedHookEvents": [],
2241
+ "hostIntegration": {
2242
+ "embeddingMode": "imperative",
2243
+ "commandSurface": "slash-file",
2244
+ "dispatch": {
2245
+ "namedDispatch": true,
2246
+ "nested": "undocumented",
2247
+ "maxDepth": "undocumented",
2248
+ "background": true,
2249
+ "subagentToolkit": "undocumented",
2250
+ "backgroundDispatch": "undocumented"
2251
+ },
2252
+ "modelMode": "passive",
2253
+ "hookBus": "engine",
2254
+ "stateIO": "filesystem",
2255
+ "transport": "mcp",
2256
+ "runtime": "node"
2257
+ }
1878
2258
  }
1879
2259
  },
1880
2260
  "ui": {
1881
2261
  "id": "ui",
1882
2262
  "role": "feature",
1883
- "version": "1.6.0",
2263
+ "version": "1.7.0-rc.1",
1884
2264
  "title": "UI design contracts",
1885
2265
  "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
1886
2266
  "tier": "full",
@@ -1975,7 +2355,7 @@ const capabilities = {
1975
2355
  "windsurf": {
1976
2356
  "id": "windsurf",
1977
2357
  "role": "runtime",
1978
- "version": "1.6.0",
2358
+ "version": "1.7.0-rc.1",
1979
2359
  "title": "Windsurf",
1980
2360
  "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.",
1981
2361
  "tier": "core",
@@ -1992,9 +2372,19 @@ const capabilities = {
1992
2372
  "WINDSURF_CONFIG_DIR"
1993
2373
  ]
1994
2374
  },
2375
+ "localConfigDir": ".windsurf",
1995
2376
  "configFormat": "none",
1996
2377
  "artifactLayout": {
1997
- "global": [],
2378
+ "global": [
2379
+ {
2380
+ "kind": "agents",
2381
+ "destSubpath": "agents",
2382
+ "prefix": "gsd-",
2383
+ "nesting": "flat",
2384
+ "recursive": false,
2385
+ "converter": "convertClaudeAgentToWindsurfAgent"
2386
+ }
2387
+ ],
1998
2388
  "local": [
1999
2389
  {
2000
2390
  "kind": "commands",
@@ -2003,6 +2393,14 @@ const capabilities = {
2003
2393
  "nesting": "flat",
2004
2394
  "recursive": false,
2005
2395
  "converter": "convertClaudeCommandToWindsurfWorkflow"
2396
+ },
2397
+ {
2398
+ "kind": "agents",
2399
+ "destSubpath": "agents",
2400
+ "prefix": "gsd-",
2401
+ "nesting": "flat",
2402
+ "recursive": false,
2403
+ "converter": "convertClaudeAgentToWindsurfAgent"
2006
2404
  }
2007
2405
  ]
2008
2406
  },
@@ -2013,7 +2411,24 @@ const capabilities = {
2013
2411
  "installSurface": "profile-marker-only",
2014
2412
  "writesSharedSettings": false,
2015
2413
  "permissionWriter": null,
2016
- "extendedHookEvents": []
2414
+ "extendedHookEvents": [],
2415
+ "hostIntegration": {
2416
+ "embeddingMode": "declarative",
2417
+ "commandSurface": "slash-file",
2418
+ "dispatch": {
2419
+ "namedDispatch": "undocumented",
2420
+ "nested": "undocumented",
2421
+ "maxDepth": "undocumented",
2422
+ "background": "undocumented",
2423
+ "subagentToolkit": "undocumented",
2424
+ "backgroundDispatch": "undocumented"
2425
+ },
2426
+ "modelMode": "passive",
2427
+ "hookBus": "host",
2428
+ "stateIO": "filesystem",
2429
+ "transport": "mcp",
2430
+ "runtime": "undocumented"
2431
+ }
2017
2432
  }
2018
2433
  }
2019
2434
  };
@@ -2187,6 +2602,21 @@ const byLoopPoint = {
2187
2602
  }
2188
2603
  ],
2189
2604
  "contributions": [
2605
+ {
2606
+ "capId": "assumption-delta",
2607
+ "point": "plan:pre",
2608
+ "into": "planner",
2609
+ "fragment": {
2610
+ "path": "fragments/plan-pre.md",
2611
+ "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"
2612
+ },
2613
+ "produces": [],
2614
+ "consumes": [
2615
+ "CONTEXT.md"
2616
+ ],
2617
+ "when": "workflow.assumption_delta",
2618
+ "onError": "skip"
2619
+ },
2190
2620
  {
2191
2621
  "capId": "schema-gate",
2192
2622
  "point": "plan:pre",
@@ -2490,6 +2920,7 @@ const byLoopPoint = {
2490
2920
 
2491
2921
  const configKeys = {
2492
2922
  "workflow.ai_integration_phase": "ai-integration",
2923
+ "workflow.assumption_delta": "assumption-delta",
2493
2924
  "workflow.code_review": "code-review",
2494
2925
  "workflow.code_review_depth": "code-review",
2495
2926
  "workflow.drift_threshold": "drift",
@@ -2530,6 +2961,12 @@ const configSchema = {
2530
2961
  "default": true,
2531
2962
  "description": "Prompt for an AI-SPEC design contract before planning phases that involve AI systems."
2532
2963
  },
2964
+ "workflow.assumption_delta": {
2965
+ "owner": "assumption-delta",
2966
+ "type": "boolean",
2967
+ "default": true,
2968
+ "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)."
2969
+ },
2533
2970
  "workflow.code_review": {
2534
2971
  "owner": "code-review",
2535
2972
  "type": "boolean",
@@ -2743,7 +3180,7 @@ const runtimes = {
2743
3180
  "antigravity": {
2744
3181
  "id": "antigravity",
2745
3182
  "role": "runtime",
2746
- "version": "1.6.0",
3183
+ "version": "1.7.0-rc.1",
2747
3184
  "title": "Antigravity",
2748
3185
  "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
3186
  "tier": "core",
@@ -2766,6 +3203,7 @@ const runtimes = {
2766
3203
  ],
2767
3204
  "probeExists": "gsd-core/VERSION"
2768
3205
  },
3206
+ "localConfigDir": ".agents",
2769
3207
  "configFormat": "settings-json",
2770
3208
  "artifactLayout": {
2771
3209
  "global": [
@@ -2797,13 +3235,30 @@ const runtimes = {
2797
3235
  "installSurface": "settings-json",
2798
3236
  "writesSharedSettings": true,
2799
3237
  "permissionWriter": null,
2800
- "extendedHookEvents": []
3238
+ "extendedHookEvents": [],
3239
+ "hostIntegration": {
3240
+ "embeddingMode": "declarative",
3241
+ "commandSurface": "slash-file",
3242
+ "dispatch": {
3243
+ "namedDispatch": "undocumented",
3244
+ "nested": "undocumented",
3245
+ "maxDepth": "undocumented",
3246
+ "background": true,
3247
+ "subagentToolkit": "undocumented",
3248
+ "backgroundDispatch": "undocumented"
3249
+ },
3250
+ "modelMode": "passive",
3251
+ "hookBus": "host",
3252
+ "stateIO": "filesystem",
3253
+ "transport": "mcp",
3254
+ "runtime": "go"
3255
+ }
2801
3256
  }
2802
3257
  },
2803
3258
  "augment": {
2804
3259
  "id": "augment",
2805
3260
  "role": "runtime",
2806
- "version": "1.6.0",
3261
+ "version": "1.7.0-rc.1",
2807
3262
  "title": "Augment Code",
2808
3263
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
2809
3264
  "tier": "core",
@@ -2819,6 +3274,7 @@ const runtimes = {
2819
3274
  "AUGMENT_CONFIG_DIR"
2820
3275
  ]
2821
3276
  },
3277
+ "localConfigDir": ".augment",
2822
3278
  "configFormat": "settings-json",
2823
3279
  "artifactLayout": {
2824
3280
  "global": [
@@ -2837,6 +3293,14 @@ const runtimes = {
2837
3293
  "nesting": "nested",
2838
3294
  "recursive": false,
2839
3295
  "converter": "convertClaudeCommandToAugmentSkill"
3296
+ },
3297
+ {
3298
+ "kind": "agents",
3299
+ "destSubpath": "agents",
3300
+ "prefix": "gsd-",
3301
+ "nesting": "flat",
3302
+ "recursive": false,
3303
+ "converter": "convertClaudeAgentToAugmentAgent"
2840
3304
  }
2841
3305
  ],
2842
3306
  "local": [
@@ -2855,6 +3319,14 @@ const runtimes = {
2855
3319
  "nesting": "nested",
2856
3320
  "recursive": false,
2857
3321
  "converter": "convertClaudeCommandToAugmentSkill"
3322
+ },
3323
+ {
3324
+ "kind": "agents",
3325
+ "destSubpath": "agents",
3326
+ "prefix": "gsd-",
3327
+ "nesting": "flat",
3328
+ "recursive": false,
3329
+ "converter": "convertClaudeAgentToAugmentAgent"
2858
3330
  }
2859
3331
  ]
2860
3332
  },
@@ -2866,13 +3338,30 @@ const runtimes = {
2866
3338
  "installSurface": "settings-json",
2867
3339
  "writesSharedSettings": true,
2868
3340
  "permissionWriter": null,
2869
- "extendedHookEvents": []
3341
+ "extendedHookEvents": [],
3342
+ "hostIntegration": {
3343
+ "embeddingMode": "declarative",
3344
+ "commandSurface": "slash-file",
3345
+ "dispatch": {
3346
+ "namedDispatch": true,
3347
+ "nested": "undocumented",
3348
+ "maxDepth": "undocumented",
3349
+ "background": true,
3350
+ "subagentToolkit": "full",
3351
+ "backgroundDispatch": "undocumented"
3352
+ },
3353
+ "modelMode": "passive",
3354
+ "hookBus": "host",
3355
+ "stateIO": "filesystem",
3356
+ "transport": "mcp",
3357
+ "runtime": "node"
3358
+ }
2870
3359
  }
2871
3360
  },
2872
3361
  "claude": {
2873
3362
  "id": "claude",
2874
3363
  "role": "runtime",
2875
- "version": "1.6.0",
3364
+ "version": "1.7.0-rc.1",
2876
3365
  "title": "Claude Code",
2877
3366
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
2878
3367
  "tier": "core",
@@ -2888,6 +3377,7 @@ const runtimes = {
2888
3377
  "CLAUDE_CONFIG_DIR"
2889
3378
  ]
2890
3379
  },
3380
+ "localConfigDir": ".claude",
2891
3381
  "configFormat": "settings-json",
2892
3382
  "artifactLayout": {
2893
3383
  "global": [
@@ -2932,13 +3422,30 @@ const runtimes = {
2932
3422
  "Stop",
2933
3423
  "PreCompact",
2934
3424
  "FileChanged"
2935
- ]
3425
+ ],
3426
+ "hostIntegration": {
3427
+ "embeddingMode": "imperative",
3428
+ "commandSurface": "slash-file",
3429
+ "dispatch": {
3430
+ "namedDispatch": true,
3431
+ "nested": true,
3432
+ "maxDepth": 5,
3433
+ "background": true,
3434
+ "subagentToolkit": "full",
3435
+ "backgroundDispatch": false
3436
+ },
3437
+ "modelMode": "passive",
3438
+ "hookBus": "host",
3439
+ "stateIO": "filesystem",
3440
+ "transport": "mcp",
3441
+ "runtime": "node"
3442
+ }
2936
3443
  }
2937
3444
  },
2938
3445
  "cline": {
2939
3446
  "id": "cline",
2940
3447
  "role": "runtime",
2941
- "version": "1.6.0",
3448
+ "version": "1.7.0-rc.1",
2942
3449
  "title": "Cline",
2943
3450
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
2944
3451
  "tier": "core",
@@ -2954,6 +3461,7 @@ const runtimes = {
2954
3461
  "CLINE_CONFIG_DIR"
2955
3462
  ]
2956
3463
  },
3464
+ "localConfigDir": ".cline",
2957
3465
  "configFormat": "markdown-dir",
2958
3466
  "artifactLayout": {
2959
3467
  "global": [
@@ -2975,13 +3483,30 @@ const runtimes = {
2975
3483
  "installSurface": "cline-rules",
2976
3484
  "writesSharedSettings": false,
2977
3485
  "permissionWriter": null,
2978
- "extendedHookEvents": []
3486
+ "extendedHookEvents": [],
3487
+ "hostIntegration": {
3488
+ "embeddingMode": "imperative",
3489
+ "commandSurface": "slash-file",
3490
+ "dispatch": {
3491
+ "namedDispatch": true,
3492
+ "nested": false,
3493
+ "maxDepth": 1,
3494
+ "background": true,
3495
+ "subagentToolkit": "read-only",
3496
+ "backgroundDispatch": false
3497
+ },
3498
+ "modelMode": "active",
3499
+ "hookBus": "host",
3500
+ "stateIO": "filesystem",
3501
+ "transport": "mcp",
3502
+ "runtime": "node"
3503
+ }
2979
3504
  }
2980
3505
  },
2981
3506
  "codebuddy": {
2982
3507
  "id": "codebuddy",
2983
3508
  "role": "runtime",
2984
- "version": "1.6.0",
3509
+ "version": "1.7.0-rc.1",
2985
3510
  "title": "CodeBuddy",
2986
3511
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
2987
3512
  "tier": "core",
@@ -2997,6 +3522,7 @@ const runtimes = {
2997
3522
  "CODEBUDDY_CONFIG_DIR"
2998
3523
  ]
2999
3524
  },
3525
+ "localConfigDir": ".codebuddy",
3000
3526
  "configFormat": "settings-json",
3001
3527
  "artifactLayout": {
3002
3528
  "global": [
@@ -3015,6 +3541,14 @@ const runtimes = {
3015
3541
  "nesting": "flat",
3016
3542
  "recursive": false,
3017
3543
  "converter": "convertClaudeCommandToCodebuddySkill"
3544
+ },
3545
+ {
3546
+ "kind": "agents",
3547
+ "destSubpath": "agents",
3548
+ "prefix": "gsd-",
3549
+ "nesting": "flat",
3550
+ "recursive": false,
3551
+ "converter": "convertClaudeAgentToCodebuddyAgent"
3018
3552
  }
3019
3553
  ],
3020
3554
  "local": [
@@ -3033,6 +3567,14 @@ const runtimes = {
3033
3567
  "nesting": "flat",
3034
3568
  "recursive": false,
3035
3569
  "converter": "convertClaudeCommandToCodebuddySkill"
3570
+ },
3571
+ {
3572
+ "kind": "agents",
3573
+ "destSubpath": "agents",
3574
+ "prefix": "gsd-",
3575
+ "nesting": "flat",
3576
+ "recursive": false,
3577
+ "converter": "convertClaudeAgentToCodebuddyAgent"
3036
3578
  }
3037
3579
  ]
3038
3580
  },
@@ -3044,13 +3586,30 @@ const runtimes = {
3044
3586
  "installSurface": "settings-json",
3045
3587
  "writesSharedSettings": true,
3046
3588
  "permissionWriter": null,
3047
- "extendedHookEvents": []
3589
+ "extendedHookEvents": [],
3590
+ "hostIntegration": {
3591
+ "embeddingMode": "declarative",
3592
+ "commandSurface": "slash-file",
3593
+ "dispatch": {
3594
+ "namedDispatch": true,
3595
+ "nested": false,
3596
+ "maxDepth": 1,
3597
+ "background": true,
3598
+ "subagentToolkit": "full",
3599
+ "backgroundDispatch": false
3600
+ },
3601
+ "modelMode": "passive",
3602
+ "hookBus": "host",
3603
+ "stateIO": "filesystem",
3604
+ "transport": "mcp",
3605
+ "runtime": "node"
3606
+ }
3048
3607
  }
3049
3608
  },
3050
3609
  "codex": {
3051
3610
  "id": "codex",
3052
3611
  "role": "runtime",
3053
- "version": "1.6.0",
3612
+ "version": "1.7.0-rc.1",
3054
3613
  "title": "OpenAI Codex CLI",
3055
3614
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
3056
3615
  "tier": "core",
@@ -3066,6 +3625,7 @@ const runtimes = {
3066
3625
  "CODEX_HOME"
3067
3626
  ]
3068
3627
  },
3628
+ "localConfigDir": ".codex",
3069
3629
  "configFormat": "toml",
3070
3630
  "artifactLayout": {
3071
3631
  "global": [
@@ -3097,13 +3657,30 @@ const runtimes = {
3097
3657
  "installSurface": "codex-toml",
3098
3658
  "writesSharedSettings": false,
3099
3659
  "permissionWriter": null,
3100
- "extendedHookEvents": []
3660
+ "extendedHookEvents": [],
3661
+ "hostIntegration": {
3662
+ "embeddingMode": "declarative",
3663
+ "commandSurface": "slash-file",
3664
+ "dispatch": {
3665
+ "namedDispatch": true,
3666
+ "nested": true,
3667
+ "maxDepth": 1,
3668
+ "background": true,
3669
+ "subagentToolkit": "full",
3670
+ "backgroundDispatch": true
3671
+ },
3672
+ "modelMode": "passive",
3673
+ "hookBus": "host",
3674
+ "stateIO": "filesystem",
3675
+ "transport": "mcp",
3676
+ "runtime": "node"
3677
+ }
3101
3678
  }
3102
3679
  },
3103
3680
  "copilot": {
3104
3681
  "id": "copilot",
3105
3682
  "role": "runtime",
3106
- "version": "1.6.0",
3683
+ "version": "1.7.0-rc.1",
3107
3684
  "title": "GitHub Copilot",
3108
3685
  "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
3686
  "tier": "core",
@@ -3120,6 +3697,7 @@ const runtimes = {
3120
3697
  "COPILOT_HOME"
3121
3698
  ]
3122
3699
  },
3700
+ "localConfigDir": ".github",
3123
3701
  "configFormat": "markdown",
3124
3702
  "artifactLayout": {
3125
3703
  "global": [
@@ -3150,13 +3728,30 @@ const runtimes = {
3150
3728
  "installSurface": "copilot-instructions",
3151
3729
  "writesSharedSettings": false,
3152
3730
  "permissionWriter": null,
3153
- "extendedHookEvents": []
3731
+ "extendedHookEvents": [],
3732
+ "hostIntegration": {
3733
+ "embeddingMode": "declarative",
3734
+ "commandSurface": "slash-file",
3735
+ "dispatch": {
3736
+ "namedDispatch": true,
3737
+ "nested": false,
3738
+ "maxDepth": 1,
3739
+ "background": true,
3740
+ "subagentToolkit": "full",
3741
+ "backgroundDispatch": false
3742
+ },
3743
+ "modelMode": "passive",
3744
+ "hookBus": "host",
3745
+ "stateIO": "filesystem",
3746
+ "transport": "mcp",
3747
+ "runtime": "undocumented"
3748
+ }
3154
3749
  }
3155
3750
  },
3156
3751
  "cursor": {
3157
3752
  "id": "cursor",
3158
3753
  "role": "runtime",
3159
- "version": "1.6.0",
3754
+ "version": "1.7.0-rc.1",
3160
3755
  "title": "Cursor",
3161
3756
  "description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
3162
3757
  "tier": "core",
@@ -3172,6 +3767,7 @@ const runtimes = {
3172
3767
  "CURSOR_CONFIG_DIR"
3173
3768
  ]
3174
3769
  },
3770
+ "localConfigDir": ".cursor",
3175
3771
  "configFormat": "none",
3176
3772
  "artifactLayout": {
3177
3773
  "global": [
@@ -3190,6 +3786,14 @@ const runtimes = {
3190
3786
  "nesting": "flat",
3191
3787
  "recursive": false,
3192
3788
  "converter": "convertClaudeCommandToCursorCommand"
3789
+ },
3790
+ {
3791
+ "kind": "agents",
3792
+ "destSubpath": "agents",
3793
+ "prefix": "gsd-",
3794
+ "nesting": "flat",
3795
+ "recursive": false,
3796
+ "converter": "convertClaudeAgentToCursorAgent"
3193
3797
  }
3194
3798
  ],
3195
3799
  "local": [
@@ -3208,6 +3812,14 @@ const runtimes = {
3208
3812
  "nesting": "flat",
3209
3813
  "recursive": false,
3210
3814
  "converter": "convertClaudeCommandToCursorCommand"
3815
+ },
3816
+ {
3817
+ "kind": "agents",
3818
+ "destSubpath": "agents",
3819
+ "prefix": "gsd-",
3820
+ "nesting": "flat",
3821
+ "recursive": false,
3822
+ "converter": "convertClaudeAgentToCursorAgent"
3211
3823
  }
3212
3824
  ]
3213
3825
  },
@@ -3219,13 +3831,30 @@ const runtimes = {
3219
3831
  "installSurface": "cursor-hooks-json",
3220
3832
  "writesSharedSettings": false,
3221
3833
  "permissionWriter": null,
3222
- "extendedHookEvents": []
3834
+ "extendedHookEvents": [],
3835
+ "hostIntegration": {
3836
+ "embeddingMode": "imperative",
3837
+ "commandSurface": "slash-file",
3838
+ "dispatch": {
3839
+ "namedDispatch": true,
3840
+ "nested": true,
3841
+ "maxDepth": 2,
3842
+ "background": true,
3843
+ "subagentToolkit": "full",
3844
+ "backgroundDispatch": true
3845
+ },
3846
+ "modelMode": "passive",
3847
+ "hookBus": "host",
3848
+ "stateIO": "filesystem",
3849
+ "transport": "mcp",
3850
+ "runtime": "node"
3851
+ }
3223
3852
  }
3224
3853
  },
3225
3854
  "gemini": {
3226
3855
  "id": "gemini",
3227
3856
  "role": "runtime",
3228
- "version": "1.6.0",
3857
+ "version": "1.7.0-rc.1",
3229
3858
  "title": "Gemini CLI",
3230
3859
  "description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.",
3231
3860
  "tier": "core",
@@ -3241,6 +3870,7 @@ const runtimes = {
3241
3870
  "GEMINI_CONFIG_DIR"
3242
3871
  ]
3243
3872
  },
3873
+ "localConfigDir": ".gemini",
3244
3874
  "configFormat": "settings-json",
3245
3875
  "artifactLayout": {
3246
3876
  "global": [
@@ -3276,13 +3906,30 @@ const runtimes = {
3276
3906
  "BeforeAgent",
3277
3907
  "AfterAgent",
3278
3908
  "BeforeModel"
3279
- ]
3909
+ ],
3910
+ "hostIntegration": {
3911
+ "embeddingMode": "declarative",
3912
+ "commandSurface": "slash-toml",
3913
+ "dispatch": {
3914
+ "namedDispatch": true,
3915
+ "nested": false,
3916
+ "maxDepth": 1,
3917
+ "background": "undocumented",
3918
+ "subagentToolkit": "undocumented",
3919
+ "backgroundDispatch": false
3920
+ },
3921
+ "modelMode": "passive",
3922
+ "hookBus": "host",
3923
+ "stateIO": "filesystem",
3924
+ "transport": "mcp",
3925
+ "runtime": "node"
3926
+ }
3280
3927
  }
3281
3928
  },
3282
3929
  "hermes": {
3283
3930
  "id": "hermes",
3284
3931
  "role": "runtime",
3285
- "version": "1.6.0",
3932
+ "version": "1.7.0-rc.1",
3286
3933
  "title": "Hermes Agent",
3287
3934
  "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
3935
  "tier": "core",
@@ -3298,6 +3945,7 @@ const runtimes = {
3298
3945
  "HERMES_HOME"
3299
3946
  ]
3300
3947
  },
3948
+ "localConfigDir": ".hermes",
3301
3949
  "configFormat": "settings-json",
3302
3950
  "artifactLayout": {
3303
3951
  "global": [
@@ -3329,13 +3977,30 @@ const runtimes = {
3329
3977
  "installSurface": "settings-json",
3330
3978
  "writesSharedSettings": true,
3331
3979
  "permissionWriter": null,
3332
- "extendedHookEvents": []
3980
+ "extendedHookEvents": [],
3981
+ "hostIntegration": {
3982
+ "embeddingMode": "imperative",
3983
+ "commandSurface": "slash-programmatic",
3984
+ "dispatch": {
3985
+ "namedDispatch": false,
3986
+ "nested": true,
3987
+ "maxDepth": 1,
3988
+ "background": true,
3989
+ "subagentToolkit": "read-only",
3990
+ "backgroundDispatch": false
3991
+ },
3992
+ "modelMode": "active",
3993
+ "hookBus": "host",
3994
+ "stateIO": "filesystem",
3995
+ "transport": "mcp",
3996
+ "runtime": "python"
3997
+ }
3333
3998
  }
3334
3999
  },
3335
4000
  "kilo": {
3336
4001
  "id": "kilo",
3337
4002
  "role": "runtime",
3338
- "version": "1.6.0",
4003
+ "version": "1.7.0-rc.1",
3339
4004
  "title": "Kilo Code",
3340
4005
  "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
4006
  "tier": "core",
@@ -3358,6 +4023,7 @@ const runtimes = {
3358
4023
  "env": []
3359
4024
  }
3360
4025
  },
4026
+ "localConfigDir": ".kilo",
3361
4027
  "configFormat": "settings-json",
3362
4028
  "artifactLayout": {
3363
4029
  "global": [
@@ -3404,13 +4070,30 @@ const runtimes = {
3404
4070
  "installSurface": "settings-json",
3405
4071
  "writesSharedSettings": false,
3406
4072
  "permissionWriter": "kilo",
3407
- "extendedHookEvents": []
4073
+ "extendedHookEvents": [],
4074
+ "hostIntegration": {
4075
+ "embeddingMode": "imperative",
4076
+ "commandSurface": "slash-file",
4077
+ "dispatch": {
4078
+ "namedDispatch": true,
4079
+ "nested": true,
4080
+ "maxDepth": -1,
4081
+ "background": true,
4082
+ "subagentToolkit": "undocumented",
4083
+ "backgroundDispatch": false
4084
+ },
4085
+ "modelMode": "active",
4086
+ "hookBus": "host",
4087
+ "stateIO": "filesystem",
4088
+ "transport": "mcp",
4089
+ "runtime": "bun"
4090
+ }
3408
4091
  }
3409
4092
  },
3410
4093
  "kimi": {
3411
4094
  "id": "kimi",
3412
4095
  "role": "runtime",
3413
- "version": "1.6.0",
4096
+ "version": "1.7.0-rc.1",
3414
4097
  "title": "Kimi CLI",
3415
4098
  "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
4099
  "tier": "core",
@@ -3431,6 +4114,7 @@ const runtimes = {
3431
4114
  ],
3432
4115
  "probeExists": "skills"
3433
4116
  },
4117
+ "localConfigDir": ".kimi-code",
3434
4118
  "configFormat": "none",
3435
4119
  "artifactLayout": {
3436
4120
  "global": [
@@ -3460,13 +4144,30 @@ const runtimes = {
3460
4144
  "installSurface": "profile-marker-only",
3461
4145
  "writesSharedSettings": false,
3462
4146
  "permissionWriter": null,
3463
- "extendedHookEvents": []
4147
+ "extendedHookEvents": [],
4148
+ "hostIntegration": {
4149
+ "embeddingMode": "imperative",
4150
+ "commandSurface": "slash-file",
4151
+ "dispatch": {
4152
+ "namedDispatch": true,
4153
+ "nested": false,
4154
+ "maxDepth": 1,
4155
+ "background": true,
4156
+ "subagentToolkit": "undocumented",
4157
+ "backgroundDispatch": false
4158
+ },
4159
+ "modelMode": "passive",
4160
+ "hookBus": "host",
4161
+ "stateIO": "filesystem",
4162
+ "transport": "mcp",
4163
+ "runtime": "python"
4164
+ }
3464
4165
  }
3465
4166
  },
3466
4167
  "opencode": {
3467
4168
  "id": "opencode",
3468
4169
  "role": "runtime",
3469
- "version": "1.6.0",
4170
+ "version": "1.7.0-rc.1",
3470
4171
  "title": "OpenCode",
3471
4172
  "description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
3472
4173
  "tier": "core",
@@ -3484,6 +4185,7 @@ const runtimes = {
3484
4185
  "XDG_CONFIG_HOME"
3485
4186
  ]
3486
4187
  },
4188
+ "localConfigDir": ".opencode",
3487
4189
  "configFormat": "settings-json",
3488
4190
  "artifactLayout": {
3489
4191
  "global": [
@@ -3530,13 +4232,30 @@ const runtimes = {
3530
4232
  "installSurface": "settings-json",
3531
4233
  "writesSharedSettings": true,
3532
4234
  "permissionWriter": "opencode",
3533
- "extendedHookEvents": []
4235
+ "extendedHookEvents": [],
4236
+ "hostIntegration": {
4237
+ "embeddingMode": "imperative",
4238
+ "commandSurface": "slash-file",
4239
+ "dispatch": {
4240
+ "namedDispatch": true,
4241
+ "nested": "undocumented",
4242
+ "maxDepth": "undocumented",
4243
+ "background": false,
4244
+ "subagentToolkit": "full",
4245
+ "backgroundDispatch": "undocumented"
4246
+ },
4247
+ "modelMode": "active",
4248
+ "hookBus": "host",
4249
+ "stateIO": "filesystem",
4250
+ "transport": "mcp",
4251
+ "runtime": "bun"
4252
+ }
3534
4253
  }
3535
4254
  },
3536
4255
  "qwen": {
3537
4256
  "id": "qwen",
3538
4257
  "role": "runtime",
3539
- "version": "1.6.0",
4258
+ "version": "1.7.0-rc.1",
3540
4259
  "title": "Qwen Code",
3541
4260
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
3542
4261
  "tier": "core",
@@ -3552,6 +4271,7 @@ const runtimes = {
3552
4271
  "QWEN_CONFIG_DIR"
3553
4272
  ]
3554
4273
  },
4274
+ "localConfigDir": ".qwen",
3555
4275
  "configFormat": "settings-json",
3556
4276
  "artifactLayout": {
3557
4277
  "global": [
@@ -3587,13 +4307,30 @@ const runtimes = {
3587
4307
  "SubagentStop",
3588
4308
  "Stop",
3589
4309
  "PreCompact"
3590
- ]
4310
+ ],
4311
+ "hostIntegration": {
4312
+ "embeddingMode": "imperative",
4313
+ "commandSurface": "slash-file",
4314
+ "dispatch": {
4315
+ "namedDispatch": true,
4316
+ "nested": false,
4317
+ "maxDepth": 1,
4318
+ "background": true,
4319
+ "subagentToolkit": "full",
4320
+ "backgroundDispatch": false
4321
+ },
4322
+ "modelMode": "passive",
4323
+ "hookBus": "host",
4324
+ "stateIO": "filesystem",
4325
+ "transport": "mcp",
4326
+ "runtime": "node"
4327
+ }
3591
4328
  }
3592
4329
  },
3593
4330
  "trae": {
3594
4331
  "id": "trae",
3595
4332
  "role": "runtime",
3596
- "version": "1.6.0",
4333
+ "version": "1.7.0-rc.1",
3597
4334
  "title": "Trae IDE",
3598
4335
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
3599
4336
  "tier": "core",
@@ -3609,6 +4346,7 @@ const runtimes = {
3609
4346
  "TRAE_CONFIG_DIR"
3610
4347
  ]
3611
4348
  },
4349
+ "localConfigDir": ".trae",
3612
4350
  "configFormat": "none",
3613
4351
  "artifactLayout": {
3614
4352
  "global": [
@@ -3619,6 +4357,14 @@ const runtimes = {
3619
4357
  "nesting": "nested",
3620
4358
  "recursive": false,
3621
4359
  "converter": "convertClaudeCommandToTraeSkill"
4360
+ },
4361
+ {
4362
+ "kind": "agents",
4363
+ "destSubpath": "agents",
4364
+ "prefix": "gsd-",
4365
+ "nesting": "flat",
4366
+ "recursive": false,
4367
+ "converter": "convertClaudeAgentToTraeAgent"
3622
4368
  }
3623
4369
  ],
3624
4370
  "local": [
@@ -3629,6 +4375,14 @@ const runtimes = {
3629
4375
  "nesting": "nested",
3630
4376
  "recursive": false,
3631
4377
  "converter": "convertClaudeCommandToTraeSkill"
4378
+ },
4379
+ {
4380
+ "kind": "agents",
4381
+ "destSubpath": "agents",
4382
+ "prefix": "gsd-",
4383
+ "nesting": "flat",
4384
+ "recursive": false,
4385
+ "converter": "convertClaudeAgentToTraeAgent"
3632
4386
  }
3633
4387
  ]
3634
4388
  },
@@ -3639,13 +4393,30 @@ const runtimes = {
3639
4393
  "installSurface": "profile-marker-only",
3640
4394
  "writesSharedSettings": false,
3641
4395
  "permissionWriter": null,
3642
- "extendedHookEvents": []
4396
+ "extendedHookEvents": [],
4397
+ "hostIntegration": {
4398
+ "embeddingMode": "imperative",
4399
+ "commandSurface": "slash-file",
4400
+ "dispatch": {
4401
+ "namedDispatch": true,
4402
+ "nested": "undocumented",
4403
+ "maxDepth": "undocumented",
4404
+ "background": true,
4405
+ "subagentToolkit": "undocumented",
4406
+ "backgroundDispatch": "undocumented"
4407
+ },
4408
+ "modelMode": "passive",
4409
+ "hookBus": "engine",
4410
+ "stateIO": "filesystem",
4411
+ "transport": "mcp",
4412
+ "runtime": "node"
4413
+ }
3643
4414
  }
3644
4415
  },
3645
4416
  "windsurf": {
3646
4417
  "id": "windsurf",
3647
4418
  "role": "runtime",
3648
- "version": "1.6.0",
4419
+ "version": "1.7.0-rc.1",
3649
4420
  "title": "Windsurf",
3650
4421
  "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.",
3651
4422
  "tier": "core",
@@ -3662,9 +4433,19 @@ const runtimes = {
3662
4433
  "WINDSURF_CONFIG_DIR"
3663
4434
  ]
3664
4435
  },
4436
+ "localConfigDir": ".windsurf",
3665
4437
  "configFormat": "none",
3666
4438
  "artifactLayout": {
3667
- "global": [],
4439
+ "global": [
4440
+ {
4441
+ "kind": "agents",
4442
+ "destSubpath": "agents",
4443
+ "prefix": "gsd-",
4444
+ "nesting": "flat",
4445
+ "recursive": false,
4446
+ "converter": "convertClaudeAgentToWindsurfAgent"
4447
+ }
4448
+ ],
3668
4449
  "local": [
3669
4450
  {
3670
4451
  "kind": "commands",
@@ -3673,6 +4454,14 @@ const runtimes = {
3673
4454
  "nesting": "flat",
3674
4455
  "recursive": false,
3675
4456
  "converter": "convertClaudeCommandToWindsurfWorkflow"
4457
+ },
4458
+ {
4459
+ "kind": "agents",
4460
+ "destSubpath": "agents",
4461
+ "prefix": "gsd-",
4462
+ "nesting": "flat",
4463
+ "recursive": false,
4464
+ "converter": "convertClaudeAgentToWindsurfAgent"
3676
4465
  }
3677
4466
  ]
3678
4467
  },
@@ -3683,7 +4472,24 @@ const runtimes = {
3683
4472
  "installSurface": "profile-marker-only",
3684
4473
  "writesSharedSettings": false,
3685
4474
  "permissionWriter": null,
3686
- "extendedHookEvents": []
4475
+ "extendedHookEvents": [],
4476
+ "hostIntegration": {
4477
+ "embeddingMode": "declarative",
4478
+ "commandSurface": "slash-file",
4479
+ "dispatch": {
4480
+ "namedDispatch": "undocumented",
4481
+ "nested": "undocumented",
4482
+ "maxDepth": "undocumented",
4483
+ "background": "undocumented",
4484
+ "subagentToolkit": "undocumented",
4485
+ "backgroundDispatch": "undocumented"
4486
+ },
4487
+ "modelMode": "passive",
4488
+ "hookBus": "host",
4489
+ "stateIO": "filesystem",
4490
+ "transport": "mcp",
4491
+ "runtime": "undocumented"
4492
+ }
3687
4493
  }
3688
4494
  }
3689
4495
  };
@@ -3834,6 +4640,7 @@ const profileMembership = {
3834
4640
  const _requiresGraph = {
3835
4641
  "ai-integration": [],
3836
4642
  "antigravity": [],
4643
+ "assumption-delta": [],
3837
4644
  "audit": [],
3838
4645
  "augment": [],
3839
4646
  "claude": [],