@opengsd/gsd-core 1.7.0-rc.3 → 1.7.0-rc.4
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.ja-JP.md +4 -3
- package/README.ko-KR.md +4 -3
- package/README.md +4 -3
- package/README.pt-BR.md +4 -3
- package/README.zh-CN.md +4 -3
- package/bin/install.js +33 -15
- package/commands/gsd/map-codebase.md +4 -4
- package/commands/gsd/ns-project.md +2 -1
- package/commands/gsd/onboard.md +46 -0
- package/gsd-core/bin/gsd-tools.cjs +47 -2
- package/gsd-core/bin/lib/capability-registry.cjs +467 -49
- package/gsd-core/bin/lib/capability-state.cjs +117 -18
- package/gsd-core/bin/lib/capability-writer.cjs +11 -1
- package/gsd-core/bin/lib/claude-orchestration-command-router.cjs +136 -0
- package/gsd-core/bin/lib/claude-orchestration.cjs +404 -0
- package/gsd-core/bin/lib/clusters.cjs +1 -0
- package/gsd-core/bin/lib/command-aliases.cjs +8 -0
- package/gsd-core/bin/lib/init-command-router.cjs +4 -0
- package/gsd-core/bin/lib/init.cjs +25 -69
- package/gsd-core/bin/lib/install-engine.cjs +8 -5
- package/gsd-core/bin/lib/install-profiles.cjs +2 -0
- package/gsd-core/bin/lib/loop-resolver.cjs +7 -1
- package/gsd-core/bin/lib/model-resolver.cjs +69 -4
- package/gsd-core/bin/lib/onboard-projection.cjs +309 -0
- package/gsd-core/bin/lib/runtime-name-policy.cjs +3 -1
- package/gsd-core/bin/lib/surface.cjs +51 -30
- package/gsd-core/bin/shared/model-catalog.json +5 -0
- package/gsd-core/references/gsd-run-resolver.md +8 -0
- package/gsd-core/templates/project.md +1 -1
- package/gsd-core/workflows/do.md +4 -3
- package/gsd-core/workflows/help/modes/brief.md +2 -1
- package/gsd-core/workflows/help/modes/default.md +2 -1
- package/gsd-core/workflows/help/modes/full.md +11 -1
- package/gsd-core/workflows/help/modes/topic.md +1 -1
- package/gsd-core/workflows/onboard.md +277 -0
- package/gsd-core/workflows/quick.md +20 -0
- package/package.json +1 -1
- package/scripts/gen-golden-install-parity-zcode.cjs +77 -0
- package/scripts/run-tests.cjs +5 -3
- package/scripts/sync-runtime-launcher.cjs +20 -2
- package/skills/gsd-map-codebase/SKILL.md +3 -3
- package/skills/gsd-ns-project/SKILL.md +1 -0
- package/skills/gsd-onboard/SKILL.md +46 -0
|
@@ -10,7 +10,7 @@ const capabilities = {
|
|
|
10
10
|
"ai-integration": {
|
|
11
11
|
"id": "ai-integration",
|
|
12
12
|
"role": "feature",
|
|
13
|
-
"version": "1.7.0-rc.
|
|
13
|
+
"version": "1.7.0-rc.4",
|
|
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.7.0-rc.
|
|
66
|
+
"version": "1.7.0-rc.4",
|
|
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",
|
|
@@ -97,6 +97,14 @@ const capabilities = {
|
|
|
97
97
|
"nesting": "flat",
|
|
98
98
|
"recursive": false,
|
|
99
99
|
"converter": "convertClaudeCommandToAntigravitySkill"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"kind": "agents",
|
|
103
|
+
"destSubpath": "agents",
|
|
104
|
+
"prefix": "gsd-",
|
|
105
|
+
"nesting": "flat",
|
|
106
|
+
"recursive": false,
|
|
107
|
+
"converter": "convertClaudeAgentToAntigravityAgent"
|
|
100
108
|
}
|
|
101
109
|
],
|
|
102
110
|
"local": [
|
|
@@ -107,6 +115,14 @@ const capabilities = {
|
|
|
107
115
|
"nesting": "flat",
|
|
108
116
|
"recursive": false,
|
|
109
117
|
"converter": "convertClaudeCommandToAntigravitySkill"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"kind": "agents",
|
|
121
|
+
"destSubpath": "agents",
|
|
122
|
+
"prefix": "gsd-",
|
|
123
|
+
"nesting": "flat",
|
|
124
|
+
"recursive": false,
|
|
125
|
+
"converter": "convertClaudeAgentToAntigravityAgent"
|
|
110
126
|
}
|
|
111
127
|
]
|
|
112
128
|
},
|
|
@@ -141,7 +157,7 @@ const capabilities = {
|
|
|
141
157
|
"assumption-delta": {
|
|
142
158
|
"id": "assumption-delta",
|
|
143
159
|
"role": "feature",
|
|
144
|
-
"version": "1.7.0-rc.
|
|
160
|
+
"version": "1.7.0-rc.4",
|
|
145
161
|
"title": "Assumption-delta architecture checkpoint",
|
|
146
162
|
"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
163
|
"tier": "full",
|
|
@@ -187,7 +203,7 @@ const capabilities = {
|
|
|
187
203
|
"audit": {
|
|
188
204
|
"id": "audit",
|
|
189
205
|
"role": "feature",
|
|
190
|
-
"version": "1.7.0-rc.
|
|
206
|
+
"version": "1.7.0-rc.4",
|
|
191
207
|
"title": "Audit",
|
|
192
208
|
"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).",
|
|
193
209
|
"tier": "full",
|
|
@@ -224,7 +240,7 @@ const capabilities = {
|
|
|
224
240
|
"augment": {
|
|
225
241
|
"id": "augment",
|
|
226
242
|
"role": "runtime",
|
|
227
|
-
"version": "1.7.0-rc.
|
|
243
|
+
"version": "1.7.0-rc.4",
|
|
228
244
|
"title": "Augment Code",
|
|
229
245
|
"description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
230
246
|
"tier": "core",
|
|
@@ -327,7 +343,7 @@ const capabilities = {
|
|
|
327
343
|
"claude": {
|
|
328
344
|
"id": "claude",
|
|
329
345
|
"role": "runtime",
|
|
330
|
-
"version": "1.7.0-rc.
|
|
346
|
+
"version": "1.7.0-rc.4",
|
|
331
347
|
"title": "Claude Code",
|
|
332
348
|
"description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
|
|
333
349
|
"tier": "core",
|
|
@@ -408,10 +424,97 @@ const capabilities = {
|
|
|
408
424
|
}
|
|
409
425
|
}
|
|
410
426
|
},
|
|
427
|
+
"claude-orchestration": {
|
|
428
|
+
"id": "claude-orchestration",
|
|
429
|
+
"role": "feature",
|
|
430
|
+
"version": "1.7.0-rc.4",
|
|
431
|
+
"title": "Claude orchestration (Workflow backend)",
|
|
432
|
+
"description": "Default-off, BETA, claude-only capability that adopts Claude Code's Workflow tool (the engine behind /effort ultracode) as an optional parallel-execution backend for the GSD loop. When the runtime exposes the Workflow tool and claude_orchestration.execution_backend resolves to 'workflow', execute-phase emits a generated Workflow script (waves -> parallel() barriers, plans -> agent({ agentType: 'gsd-executor', isolation: 'worktree' }), files_modified overlap -> separate sequential stages, resumeFromRunId wired to the phase run id, shared token budget) that composes the SAME gsd-executor agent and worktree isolation the inline path uses, restoring the wave parallelism the #853 backgrounded-agent nesting limitation forces inline on Claude Code. (The plan-checker and verifier remain inline until separately wired — this capability delivers the parallel-execution backend, not those gates.) Also folds the ultraplan plan-offload under one runtime gate (plan:* surface). On any runtime lacking the Workflow tool, or when the capability is disabled, behaviour is byte-identical to today (inline/manual dispatch). Detection + emission live in gsd-core/bin/lib/claude-orchestration.cjs (pure, fail-closed). Mirrors the existing gsd-ultraplan-phase BETA-isolation posture.",
|
|
433
|
+
"tier": "full",
|
|
434
|
+
"requires": [],
|
|
435
|
+
"engines": {
|
|
436
|
+
"gsd": ">=1.7.0"
|
|
437
|
+
},
|
|
438
|
+
"runtimeCompat": {
|
|
439
|
+
"supported": [
|
|
440
|
+
"claude"
|
|
441
|
+
],
|
|
442
|
+
"unsupported": []
|
|
443
|
+
},
|
|
444
|
+
"skills": [],
|
|
445
|
+
"agents": [],
|
|
446
|
+
"hooks": [],
|
|
447
|
+
"commands": [
|
|
448
|
+
{
|
|
449
|
+
"family": "claude-orchestration",
|
|
450
|
+
"module": "claude-orchestration-command-router.cjs",
|
|
451
|
+
"router": "routeClaudeOrchestrationCommand",
|
|
452
|
+
"subcommands": [
|
|
453
|
+
"detect-backend",
|
|
454
|
+
"emit-workflow"
|
|
455
|
+
]
|
|
456
|
+
}
|
|
457
|
+
],
|
|
458
|
+
"activationKey": "claude_orchestration.enabled",
|
|
459
|
+
"config": {
|
|
460
|
+
"claude_orchestration.enabled": {
|
|
461
|
+
"type": "boolean",
|
|
462
|
+
"default": false,
|
|
463
|
+
"description": "Master toggle for the Claude orchestration capability. Default-off + BETA: the Workflow-tool execution backend and the ultraplan plan-offload surface are inert unless this is true. When false, loop behaviour is byte-identical to a non-Claude runtime (inline/manual dispatch)."
|
|
464
|
+
},
|
|
465
|
+
"claude_orchestration.execution_backend": {
|
|
466
|
+
"type": "enum",
|
|
467
|
+
"values": [
|
|
468
|
+
"auto",
|
|
469
|
+
"workflow",
|
|
470
|
+
"inline"
|
|
471
|
+
],
|
|
472
|
+
"default": "auto",
|
|
473
|
+
"description": "Which execute-phase dispatch backend to use when the capability is enabled. 'auto' (default) activates the Workflow backend only when the runtime is Claude AND the Workflow tool is detected AND the Agent SDK meets claude_orchestration.min_agent_sdk_version; otherwise it falls back to inline. 'workflow' forces the Workflow backend when the tool is present AND the Agent SDK meets the floor (still fails closed to inline if the tool is absent or the SDK is too old — the floor applies in both modes). 'inline' forces today's manual one-agent-per-message dispatch regardless of tool availability."
|
|
474
|
+
},
|
|
475
|
+
"claude_orchestration.min_agent_sdk_version": {
|
|
476
|
+
"type": "string",
|
|
477
|
+
"default": "0.3.149",
|
|
478
|
+
"description": "Minimum Agent SDK version required to activate the Workflow backend under execution_backend='auto'. Defaults to 0.3.149 (the release that introduced the Workflow tool). Raise to pin a higher floor; the detection seam fails closed to inline for any runtime reporting an older or unknown version."
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
"steps": [],
|
|
482
|
+
"contributions": [
|
|
483
|
+
{
|
|
484
|
+
"point": "execute:wave:post",
|
|
485
|
+
"into": "executor",
|
|
486
|
+
"fragment": {
|
|
487
|
+
"path": "fragments/execute-wave-post.md",
|
|
488
|
+
"inline": "# Claude orchestration — Workflow execution backend (BETA)\n\n> Injected at `execute:wave:post` `into: executor` only when\n> `claude_orchestration.enabled` is true. Default-off; `onError: skip`.\n\n## When this contribution is active\n\nThe Claude orchestration capability is **default-off and BETA**. It activates only\nwhen ALL of the following hold:\n\n1. `claude_orchestration.enabled` is `true` in `.planning/config.json`, AND\n2. the active runtime is **Claude Code** (the Workflow tool is Claude / Agent\n SDK-specific), AND\n3. `claude_orchestration.execution_backend` resolves to `workflow` — either\n explicitly, or via `auto` — **and** the Agent SDK version is\n `>= claude_orchestration.min_agent_sdk_version` (default `0.3.149`). The SDK\n floor applies in both `auto` and `workflow` modes (fail-closed: a pre-release\n or older SDK never activates the preview backend).\n\nDetection is fail-closed: any miss degrades to **inline, manual, one-agent-per-\nmessage dispatch** — exactly today's behaviour. On a non-Claude runtime this\ncontribution is a no-op.\n\n## What the executor does when the Workflow backend is active\n\nInstead of the orchestrator fanning out one `Agent(subagent_type=gsd-executor,\nisolation=worktree, run_in_background=true)` per message (which on Claude Code\ncannot nest further subagents — #853 — and so degrades to sequential inline\nexecution), execute-phase **emits a generated Workflow script** and lets the main\nloop orchestrate it:\n\n- **waves → one or more sequential `parallel()` barriers** — each wave is a\n barrier group; when plans within a wave share `files_modified`, they are split\n into separate sequential stages within that wave's barrier (the next wave\n still waits for the previous wave to complete).\n- **plans → `agent(brief, { agentType: 'gsd-executor', isolation: 'worktree' })`**\n — the SAME executor agent and worktree isolation the inline path uses, so the\n produced `SUMMARY.md` and commits are identical.\n- **`files_modified` overlap → separate sequential stages** — two plans that\n touch the same file are placed in different stages within the wave (the same\n overlap rule execute-phase already applies inline).\n- **`resumeFromRunId`** — wired to the phase run id, so an interrupted phase\n resumes without re-running completed plans.\n- **`budget(tokens)`** — a shared token pool across the whole phase when the\n orchestrator passes a `budgetTokens` value to `emitWorkflowScript` (it is a\n function parameter, not a config key; the orchestrator decides the budget).\n\nThe emitter is a pure function exposed through the capability command surface:\n`gsd-tools claude-orchestration emit-workflow --waves <manifest.json> --run-id <id>\n[--phase-dir <dir>] [--budget <n>]` (or `require('gsd-core/bin/lib/claude-orchestration.cjs').emitWorkflowScript`\ndirectly). It maps the phase's wave/plan manifest to the Workflow script string\nand never invokes the Workflow tool itself; the orchestrator runs the emitted\nscript. Detection is resolved by the orchestrator calling the pure\n`detectWorkflowBackend` with the LIVE host descriptor (the CLI\n`gsd-tools claude-orchestration detect-backend` is a simulation harness that\nassumes a capable host unless `--no-nested-dispatch` is passed — it does not probe\nthe real runtime; the orchestrator supplies the real descriptor).\n\n## Fallback contract\n\nIf detection resolves to `inline` (tool absent, SDK too old, runtime not Claude,\nor the capability disabled), execute-phase MUST proceed with the standard inline\nwave dispatch. The executor MUST NOT assume parallelism, a shared budget, or\nresume-from-run-id semantics in that mode.\n"
|
|
489
|
+
},
|
|
490
|
+
"produces": [],
|
|
491
|
+
"consumes": [
|
|
492
|
+
"PLAN.md"
|
|
493
|
+
],
|
|
494
|
+
"when": "claude_orchestration.enabled",
|
|
495
|
+
"onError": "skip"
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"point": "plan:post",
|
|
499
|
+
"into": "planner",
|
|
500
|
+
"fragment": {
|
|
501
|
+
"path": "fragments/plan-post.md",
|
|
502
|
+
"inline": "# Claude orchestration — ultraplan plan-offload ownership (BETA)\n\n> Injected at `plan:post` `into: planner` only when\n> `claude_orchestration.enabled` is true. Default-off; `onError: skip`.\n\n## Ownership declaration\n\nThe `gsd-ultraplan-phase` plan-offload surface (offloading GSD's plan phase to\nClaude Code's ultraplan cloud) is **owned by this capability**, not by a\nstandalone BETA skill. Both surfaces share one runtime gate\n(`claude_orchestration.enabled`), one BETA boundary, and one Claude-Code-only\ndetection seam.\n\n## When the planner should consider ultraplan offload\n\nWhen this contribution is active (capability enabled, Claude Code runtime), the\nplanner MAY offer the `/gsd-ultraplan-phase` path as an alternative to local\n`/gsd-plan-phase` for phases where cloud-assisted planning adds value. This is\nadvisory, not mandatory — the stable local planner remains the default.\n\n## Fallback contract\n\nIf the capability is disabled, or the runtime is not Claude Code, ultraplan\noffload is **not surfaced** and the planner proceeds with the standard local\n`/gsd-plan-phase`. The `gsd-ultraplan-phase` command itself remains installed\n(its own runtime gate already no-ops on non-Claude runtimes); this contribution\nonly governs whether the capability manifest advertises it as part of the\norchestration surface.\n"
|
|
503
|
+
},
|
|
504
|
+
"produces": [],
|
|
505
|
+
"consumes": [
|
|
506
|
+
"CONTEXT.md"
|
|
507
|
+
],
|
|
508
|
+
"when": "claude_orchestration.enabled",
|
|
509
|
+
"onError": "skip"
|
|
510
|
+
}
|
|
511
|
+
],
|
|
512
|
+
"gates": []
|
|
513
|
+
},
|
|
411
514
|
"cline": {
|
|
412
515
|
"id": "cline",
|
|
413
516
|
"role": "runtime",
|
|
414
|
-
"version": "1.7.0-rc.
|
|
517
|
+
"version": "1.7.0-rc.4",
|
|
415
518
|
"title": "Cline",
|
|
416
519
|
"description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
|
|
417
520
|
"tier": "core",
|
|
@@ -472,7 +575,7 @@ const capabilities = {
|
|
|
472
575
|
"code-review": {
|
|
473
576
|
"id": "code-review",
|
|
474
577
|
"role": "feature",
|
|
475
|
-
"version": "1.7.0-rc.
|
|
578
|
+
"version": "1.7.0-rc.4",
|
|
476
579
|
"title": "Code review",
|
|
477
580
|
"description": "Source-file code review and review-fix workflow support for completed execution work.",
|
|
478
581
|
"tier": "full",
|
|
@@ -533,7 +636,7 @@ const capabilities = {
|
|
|
533
636
|
"codebuddy": {
|
|
534
637
|
"id": "codebuddy",
|
|
535
638
|
"role": "runtime",
|
|
536
|
-
"version": "1.7.0-rc.
|
|
639
|
+
"version": "1.7.0-rc.4",
|
|
537
640
|
"title": "CodeBuddy",
|
|
538
641
|
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
539
642
|
"tier": "core",
|
|
@@ -636,7 +739,7 @@ const capabilities = {
|
|
|
636
739
|
"codex": {
|
|
637
740
|
"id": "codex",
|
|
638
741
|
"role": "runtime",
|
|
639
|
-
"version": "1.7.0-rc.
|
|
742
|
+
"version": "1.7.0-rc.4",
|
|
640
743
|
"title": "OpenAI Codex CLI",
|
|
641
744
|
"description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
|
|
642
745
|
"tier": "core",
|
|
@@ -707,7 +810,7 @@ const capabilities = {
|
|
|
707
810
|
"copilot": {
|
|
708
811
|
"id": "copilot",
|
|
709
812
|
"role": "runtime",
|
|
710
|
-
"version": "1.7.0-rc.
|
|
813
|
+
"version": "1.7.0-rc.4",
|
|
711
814
|
"title": "GitHub Copilot",
|
|
712
815
|
"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.",
|
|
713
816
|
"tier": "core",
|
|
@@ -735,6 +838,14 @@ const capabilities = {
|
|
|
735
838
|
"nesting": "flat",
|
|
736
839
|
"recursive": false,
|
|
737
840
|
"converter": "convertClaudeCommandToCopilotSkill"
|
|
841
|
+
},
|
|
842
|
+
{
|
|
843
|
+
"kind": "agents",
|
|
844
|
+
"destSubpath": "agents",
|
|
845
|
+
"prefix": "gsd-",
|
|
846
|
+
"nesting": "flat",
|
|
847
|
+
"recursive": false,
|
|
848
|
+
"converter": "convertClaudeAgentToCopilotAgent"
|
|
738
849
|
}
|
|
739
850
|
],
|
|
740
851
|
"local": [
|
|
@@ -745,6 +856,14 @@ const capabilities = {
|
|
|
745
856
|
"nesting": "flat",
|
|
746
857
|
"recursive": false,
|
|
747
858
|
"converter": "convertClaudeCommandToCopilotSkill"
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
"kind": "agents",
|
|
862
|
+
"destSubpath": "agents",
|
|
863
|
+
"prefix": "gsd-",
|
|
864
|
+
"nesting": "flat",
|
|
865
|
+
"recursive": false,
|
|
866
|
+
"converter": "convertClaudeAgentToCopilotAgent"
|
|
748
867
|
}
|
|
749
868
|
]
|
|
750
869
|
},
|
|
@@ -778,7 +897,7 @@ const capabilities = {
|
|
|
778
897
|
"cursor": {
|
|
779
898
|
"id": "cursor",
|
|
780
899
|
"role": "runtime",
|
|
781
|
-
"version": "1.7.0-rc.
|
|
900
|
+
"version": "1.7.0-rc.4",
|
|
782
901
|
"title": "Cursor",
|
|
783
902
|
"description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
|
|
784
903
|
"tier": "core",
|
|
@@ -881,7 +1000,7 @@ const capabilities = {
|
|
|
881
1000
|
"drift": {
|
|
882
1001
|
"id": "drift",
|
|
883
1002
|
"role": "feature",
|
|
884
|
-
"version": "1.7.0-rc.
|
|
1003
|
+
"version": "1.7.0-rc.4",
|
|
885
1004
|
"title": "Drift detection gates",
|
|
886
1005
|
"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.",
|
|
887
1006
|
"tier": "full",
|
|
@@ -959,7 +1078,7 @@ const capabilities = {
|
|
|
959
1078
|
"external-job": {
|
|
960
1079
|
"id": "external-job",
|
|
961
1080
|
"role": "feature",
|
|
962
|
-
"version": "1.7.0-rc.
|
|
1081
|
+
"version": "1.7.0-rc.4",
|
|
963
1082
|
"title": "Async external-job scheduler adapter",
|
|
964
1083
|
"description": "Default-off producer of the async external-job manifest (#1164). At execute:wave:post an executor can externalize long-running compute (SLURM first, scheduler-pluggable), commit a .planning/async-jobs/<job>.json manifest, defer SUMMARY.md, and return external_job_waiting. The core loop (#1165) consumes the manifest; this capability is the only thing that writes it. NOTE on contribution point: #1164 specifies execute:wave:pre, but execute-phase.md only dispatches execute:wave:post today (wave:pre is declared in the loop host contract but not rendered); wiring wave:pre dispatch is a core-loop change #1164 explicitly puts out of scope, so this capability registers at wave:post and the executor honors the runtime_budget classification guidance before running any tagged task. The adapter (scripts/slurm-adapter.cjs) reads external_job.submit_timeout_ms / poll_timeout_ms / artifact_dir through the canonical capability-config seam (env override > config > registry default).",
|
|
965
1084
|
"tier": "full",
|
|
@@ -1042,7 +1161,7 @@ const capabilities = {
|
|
|
1042
1161
|
"gap-analysis": {
|
|
1043
1162
|
"id": "gap-analysis",
|
|
1044
1163
|
"role": "feature",
|
|
1045
|
-
"version": "1.7.0-rc.
|
|
1164
|
+
"version": "1.7.0-rc.4",
|
|
1046
1165
|
"title": "Post-planning gap analysis",
|
|
1047
1166
|
"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.",
|
|
1048
1167
|
"tier": "standard",
|
|
@@ -1083,7 +1202,7 @@ const capabilities = {
|
|
|
1083
1202
|
"graphify": {
|
|
1084
1203
|
"id": "graphify",
|
|
1085
1204
|
"role": "feature",
|
|
1086
|
-
"version": "1.7.0-rc.
|
|
1205
|
+
"version": "1.7.0-rc.4",
|
|
1087
1206
|
"title": "Knowledge graph",
|
|
1088
1207
|
"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.",
|
|
1089
1208
|
"tier": "full",
|
|
@@ -1124,7 +1243,7 @@ const capabilities = {
|
|
|
1124
1243
|
"hermes": {
|
|
1125
1244
|
"id": "hermes",
|
|
1126
1245
|
"role": "runtime",
|
|
1127
|
-
"version": "1.7.0-rc.
|
|
1246
|
+
"version": "1.7.0-rc.4",
|
|
1128
1247
|
"title": "Hermes Agent",
|
|
1129
1248
|
"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.",
|
|
1130
1249
|
"tier": "core",
|
|
@@ -1195,7 +1314,7 @@ const capabilities = {
|
|
|
1195
1314
|
"intel": {
|
|
1196
1315
|
"id": "intel",
|
|
1197
1316
|
"role": "feature",
|
|
1198
|
-
"version": "1.7.0-rc.
|
|
1317
|
+
"version": "1.7.0-rc.4",
|
|
1199
1318
|
"title": "Codebase intelligence",
|
|
1200
1319
|
"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`.",
|
|
1201
1320
|
"tier": "full",
|
|
@@ -1247,7 +1366,7 @@ const capabilities = {
|
|
|
1247
1366
|
"kilo": {
|
|
1248
1367
|
"id": "kilo",
|
|
1249
1368
|
"role": "runtime",
|
|
1250
|
-
"version": "1.7.0-rc.
|
|
1369
|
+
"version": "1.7.0-rc.4",
|
|
1251
1370
|
"title": "Kilo Code",
|
|
1252
1371
|
"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.",
|
|
1253
1372
|
"tier": "core",
|
|
@@ -1340,7 +1459,7 @@ const capabilities = {
|
|
|
1340
1459
|
"kimi": {
|
|
1341
1460
|
"id": "kimi",
|
|
1342
1461
|
"role": "runtime",
|
|
1343
|
-
"version": "1.7.0-rc.
|
|
1462
|
+
"version": "1.7.0-rc.4",
|
|
1344
1463
|
"title": "Kimi CLI",
|
|
1345
1464
|
"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.",
|
|
1346
1465
|
"tier": "core",
|
|
@@ -1414,7 +1533,7 @@ const capabilities = {
|
|
|
1414
1533
|
"mempalace": {
|
|
1415
1534
|
"id": "mempalace",
|
|
1416
1535
|
"role": "feature",
|
|
1417
|
-
"version": "1.7.0-rc.
|
|
1536
|
+
"version": "1.7.0-rc.4",
|
|
1418
1537
|
"title": "MemPalace memory",
|
|
1419
1538
|
"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.",
|
|
1420
1539
|
"tier": "full",
|
|
@@ -1588,7 +1707,7 @@ const capabilities = {
|
|
|
1588
1707
|
"nyquist": {
|
|
1589
1708
|
"id": "nyquist",
|
|
1590
1709
|
"role": "feature",
|
|
1591
|
-
"version": "1.7.0-rc.
|
|
1710
|
+
"version": "1.7.0-rc.4",
|
|
1592
1711
|
"title": "Nyquist validation",
|
|
1593
1712
|
"description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.",
|
|
1594
1713
|
"tier": "full",
|
|
@@ -1638,7 +1757,7 @@ const capabilities = {
|
|
|
1638
1757
|
"opencode": {
|
|
1639
1758
|
"id": "opencode",
|
|
1640
1759
|
"role": "runtime",
|
|
1641
|
-
"version": "1.7.0-rc.
|
|
1760
|
+
"version": "1.7.0-rc.4",
|
|
1642
1761
|
"title": "OpenCode",
|
|
1643
1762
|
"description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
|
|
1644
1763
|
"tier": "core",
|
|
@@ -1727,7 +1846,7 @@ const capabilities = {
|
|
|
1727
1846
|
"pattern-mapper": {
|
|
1728
1847
|
"id": "pattern-mapper",
|
|
1729
1848
|
"role": "feature",
|
|
1730
|
-
"version": "1.7.0-rc.
|
|
1849
|
+
"version": "1.7.0-rc.4",
|
|
1731
1850
|
"title": "Pattern mapping",
|
|
1732
1851
|
"description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
|
|
1733
1852
|
"tier": "full",
|
|
@@ -1781,7 +1900,7 @@ const capabilities = {
|
|
|
1781
1900
|
"profile-pipeline": {
|
|
1782
1901
|
"id": "profile-pipeline",
|
|
1783
1902
|
"role": "feature",
|
|
1784
|
-
"version": "1.7.0-rc.
|
|
1903
|
+
"version": "1.7.0-rc.4",
|
|
1785
1904
|
"title": "Developer profiling pipeline",
|
|
1786
1905
|
"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.",
|
|
1787
1906
|
"tier": "full",
|
|
@@ -1858,7 +1977,7 @@ const capabilities = {
|
|
|
1858
1977
|
"qwen": {
|
|
1859
1978
|
"id": "qwen",
|
|
1860
1979
|
"role": "runtime",
|
|
1861
|
-
"version": "1.7.0-rc.
|
|
1980
|
+
"version": "1.7.0-rc.4",
|
|
1862
1981
|
"title": "Qwen Code",
|
|
1863
1982
|
"description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
1864
1983
|
"tier": "core",
|
|
@@ -1933,7 +2052,7 @@ const capabilities = {
|
|
|
1933
2052
|
"research": {
|
|
1934
2053
|
"id": "research",
|
|
1935
2054
|
"role": "feature",
|
|
1936
|
-
"version": "1.7.0-rc.
|
|
2055
|
+
"version": "1.7.0-rc.4",
|
|
1937
2056
|
"title": "Phase research",
|
|
1938
2057
|
"description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
|
|
1939
2058
|
"tier": "standard",
|
|
@@ -1985,7 +2104,7 @@ const capabilities = {
|
|
|
1985
2104
|
"schema-gate": {
|
|
1986
2105
|
"id": "schema-gate",
|
|
1987
2106
|
"role": "feature",
|
|
1988
|
-
"version": "1.7.0-rc.
|
|
2107
|
+
"version": "1.7.0-rc.4",
|
|
1989
2108
|
"title": "Schema push detection gate",
|
|
1990
2109
|
"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.",
|
|
1991
2110
|
"tier": "full",
|
|
@@ -2031,7 +2150,7 @@ const capabilities = {
|
|
|
2031
2150
|
"security": {
|
|
2032
2151
|
"id": "security",
|
|
2033
2152
|
"role": "feature",
|
|
2034
|
-
"version": "1.7.0-rc.
|
|
2153
|
+
"version": "1.7.0-rc.4",
|
|
2035
2154
|
"title": "Security enforcement",
|
|
2036
2155
|
"description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
|
|
2037
2156
|
"tier": "full",
|
|
@@ -2130,7 +2249,7 @@ const capabilities = {
|
|
|
2130
2249
|
"tdd": {
|
|
2131
2250
|
"id": "tdd",
|
|
2132
2251
|
"role": "feature",
|
|
2133
|
-
"version": "1.7.0-rc.
|
|
2252
|
+
"version": "1.7.0-rc.4",
|
|
2134
2253
|
"title": "Test-driven development",
|
|
2135
2254
|
"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.",
|
|
2136
2255
|
"tier": "full",
|
|
@@ -2183,7 +2302,7 @@ const capabilities = {
|
|
|
2183
2302
|
"trae": {
|
|
2184
2303
|
"id": "trae",
|
|
2185
2304
|
"role": "runtime",
|
|
2186
|
-
"version": "1.7.0-rc.
|
|
2305
|
+
"version": "1.7.0-rc.4",
|
|
2187
2306
|
"title": "Trae IDE",
|
|
2188
2307
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
2189
2308
|
"tier": "core",
|
|
@@ -2269,7 +2388,7 @@ const capabilities = {
|
|
|
2269
2388
|
"ui": {
|
|
2270
2389
|
"id": "ui",
|
|
2271
2390
|
"role": "feature",
|
|
2272
|
-
"version": "1.7.0-rc.
|
|
2391
|
+
"version": "1.7.0-rc.4",
|
|
2273
2392
|
"title": "UI design contracts",
|
|
2274
2393
|
"description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
|
|
2275
2394
|
"tier": "full",
|
|
@@ -2364,7 +2483,7 @@ const capabilities = {
|
|
|
2364
2483
|
"windsurf": {
|
|
2365
2484
|
"id": "windsurf",
|
|
2366
2485
|
"role": "runtime",
|
|
2367
|
-
"version": "1.7.0-rc.
|
|
2486
|
+
"version": "1.7.0-rc.4",
|
|
2368
2487
|
"title": "Windsurf",
|
|
2369
2488
|
"description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.",
|
|
2370
2489
|
"tier": "core",
|
|
@@ -2439,6 +2558,108 @@ const capabilities = {
|
|
|
2439
2558
|
"runtime": "undocumented"
|
|
2440
2559
|
}
|
|
2441
2560
|
}
|
|
2561
|
+
},
|
|
2562
|
+
"zcode": {
|
|
2563
|
+
"id": "zcode",
|
|
2564
|
+
"role": "runtime",
|
|
2565
|
+
"version": "1.7.0-rc.4",
|
|
2566
|
+
"title": "ZCode",
|
|
2567
|
+
"description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills/<name>/SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.",
|
|
2568
|
+
"tier": "core",
|
|
2569
|
+
"requires": [],
|
|
2570
|
+
"engines": {
|
|
2571
|
+
"gsd": ">=1.6.0"
|
|
2572
|
+
},
|
|
2573
|
+
"runtime": {
|
|
2574
|
+
"configHome": {
|
|
2575
|
+
"kind": "dot-home",
|
|
2576
|
+
"name": ".zcode",
|
|
2577
|
+
"env": [
|
|
2578
|
+
"ZCODE_CONFIG_DIR"
|
|
2579
|
+
]
|
|
2580
|
+
},
|
|
2581
|
+
"localConfigDir": ".zcode",
|
|
2582
|
+
"configFormat": "none",
|
|
2583
|
+
"artifactLayout": {
|
|
2584
|
+
"global": [
|
|
2585
|
+
{
|
|
2586
|
+
"kind": "skills",
|
|
2587
|
+
"destSubpath": "skills",
|
|
2588
|
+
"prefix": "gsd-",
|
|
2589
|
+
"nesting": "nested",
|
|
2590
|
+
"recursive": false,
|
|
2591
|
+
"converter": "convertClaudeCommandToClaudeSkill"
|
|
2592
|
+
},
|
|
2593
|
+
{
|
|
2594
|
+
"kind": "commands",
|
|
2595
|
+
"destSubpath": "commands",
|
|
2596
|
+
"prefix": "gsd-",
|
|
2597
|
+
"nesting": "flat",
|
|
2598
|
+
"recursive": false,
|
|
2599
|
+
"converter": null
|
|
2600
|
+
},
|
|
2601
|
+
{
|
|
2602
|
+
"kind": "agents",
|
|
2603
|
+
"destSubpath": "agents",
|
|
2604
|
+
"prefix": "gsd-",
|
|
2605
|
+
"nesting": "flat",
|
|
2606
|
+
"recursive": false,
|
|
2607
|
+
"converter": null
|
|
2608
|
+
}
|
|
2609
|
+
],
|
|
2610
|
+
"local": [
|
|
2611
|
+
{
|
|
2612
|
+
"kind": "skills",
|
|
2613
|
+
"destSubpath": "skills",
|
|
2614
|
+
"prefix": "gsd-",
|
|
2615
|
+
"nesting": "nested",
|
|
2616
|
+
"recursive": false,
|
|
2617
|
+
"converter": "convertClaudeCommandToClaudeSkill"
|
|
2618
|
+
},
|
|
2619
|
+
{
|
|
2620
|
+
"kind": "commands",
|
|
2621
|
+
"destSubpath": "commands",
|
|
2622
|
+
"prefix": "gsd-",
|
|
2623
|
+
"nesting": "flat",
|
|
2624
|
+
"recursive": false,
|
|
2625
|
+
"converter": null
|
|
2626
|
+
},
|
|
2627
|
+
{
|
|
2628
|
+
"kind": "agents",
|
|
2629
|
+
"destSubpath": "agents",
|
|
2630
|
+
"prefix": "gsd-",
|
|
2631
|
+
"nesting": "flat",
|
|
2632
|
+
"recursive": false,
|
|
2633
|
+
"converter": null
|
|
2634
|
+
}
|
|
2635
|
+
]
|
|
2636
|
+
},
|
|
2637
|
+
"commandStyle": "slash-hyphen",
|
|
2638
|
+
"hooksSurface": "none",
|
|
2639
|
+
"sandboxTier": "none",
|
|
2640
|
+
"supportTier": 2,
|
|
2641
|
+
"installSurface": "profile-marker-only",
|
|
2642
|
+
"writesSharedSettings": false,
|
|
2643
|
+
"permissionWriter": null,
|
|
2644
|
+
"extendedHookEvents": [],
|
|
2645
|
+
"hostIntegration": {
|
|
2646
|
+
"embeddingMode": "declarative",
|
|
2647
|
+
"commandSurface": "slash-file",
|
|
2648
|
+
"dispatch": {
|
|
2649
|
+
"namedDispatch": true,
|
|
2650
|
+
"nested": "undocumented",
|
|
2651
|
+
"maxDepth": "undocumented",
|
|
2652
|
+
"background": false,
|
|
2653
|
+
"subagentToolkit": "full",
|
|
2654
|
+
"backgroundDispatch": false
|
|
2655
|
+
},
|
|
2656
|
+
"modelMode": "passive",
|
|
2657
|
+
"hookBus": "host",
|
|
2658
|
+
"stateIO": "filesystem",
|
|
2659
|
+
"transport": "mcp",
|
|
2660
|
+
"runtime": "electron"
|
|
2661
|
+
}
|
|
2662
|
+
}
|
|
2442
2663
|
}
|
|
2443
2664
|
};
|
|
2444
2665
|
|
|
@@ -2711,6 +2932,21 @@ const byLoopPoint = {
|
|
|
2711
2932
|
}
|
|
2712
2933
|
],
|
|
2713
2934
|
"contributions": [
|
|
2935
|
+
{
|
|
2936
|
+
"capId": "claude-orchestration",
|
|
2937
|
+
"point": "plan:post",
|
|
2938
|
+
"into": "planner",
|
|
2939
|
+
"fragment": {
|
|
2940
|
+
"path": "fragments/plan-post.md",
|
|
2941
|
+
"inline": "# Claude orchestration — ultraplan plan-offload ownership (BETA)\n\n> Injected at `plan:post` `into: planner` only when\n> `claude_orchestration.enabled` is true. Default-off; `onError: skip`.\n\n## Ownership declaration\n\nThe `gsd-ultraplan-phase` plan-offload surface (offloading GSD's plan phase to\nClaude Code's ultraplan cloud) is **owned by this capability**, not by a\nstandalone BETA skill. Both surfaces share one runtime gate\n(`claude_orchestration.enabled`), one BETA boundary, and one Claude-Code-only\ndetection seam.\n\n## When the planner should consider ultraplan offload\n\nWhen this contribution is active (capability enabled, Claude Code runtime), the\nplanner MAY offer the `/gsd-ultraplan-phase` path as an alternative to local\n`/gsd-plan-phase` for phases where cloud-assisted planning adds value. This is\nadvisory, not mandatory — the stable local planner remains the default.\n\n## Fallback contract\n\nIf the capability is disabled, or the runtime is not Claude Code, ultraplan\noffload is **not surfaced** and the planner proceeds with the standard local\n`/gsd-plan-phase`. The `gsd-ultraplan-phase` command itself remains installed\n(its own runtime gate already no-ops on non-Claude runtimes); this contribution\nonly governs whether the capability manifest advertises it as part of the\norchestration surface.\n"
|
|
2942
|
+
},
|
|
2943
|
+
"produces": [],
|
|
2944
|
+
"consumes": [
|
|
2945
|
+
"CONTEXT.md"
|
|
2946
|
+
],
|
|
2947
|
+
"when": "claude_orchestration.enabled",
|
|
2948
|
+
"onError": "skip"
|
|
2949
|
+
},
|
|
2714
2950
|
{
|
|
2715
2951
|
"capId": "external-job",
|
|
2716
2952
|
"point": "plan:post",
|
|
@@ -2751,6 +2987,21 @@ const byLoopPoint = {
|
|
|
2751
2987
|
"execute:wave:post": {
|
|
2752
2988
|
"steps": [],
|
|
2753
2989
|
"contributions": [
|
|
2990
|
+
{
|
|
2991
|
+
"capId": "claude-orchestration",
|
|
2992
|
+
"point": "execute:wave:post",
|
|
2993
|
+
"into": "executor",
|
|
2994
|
+
"fragment": {
|
|
2995
|
+
"path": "fragments/execute-wave-post.md",
|
|
2996
|
+
"inline": "# Claude orchestration — Workflow execution backend (BETA)\n\n> Injected at `execute:wave:post` `into: executor` only when\n> `claude_orchestration.enabled` is true. Default-off; `onError: skip`.\n\n## When this contribution is active\n\nThe Claude orchestration capability is **default-off and BETA**. It activates only\nwhen ALL of the following hold:\n\n1. `claude_orchestration.enabled` is `true` in `.planning/config.json`, AND\n2. the active runtime is **Claude Code** (the Workflow tool is Claude / Agent\n SDK-specific), AND\n3. `claude_orchestration.execution_backend` resolves to `workflow` — either\n explicitly, or via `auto` — **and** the Agent SDK version is\n `>= claude_orchestration.min_agent_sdk_version` (default `0.3.149`). The SDK\n floor applies in both `auto` and `workflow` modes (fail-closed: a pre-release\n or older SDK never activates the preview backend).\n\nDetection is fail-closed: any miss degrades to **inline, manual, one-agent-per-\nmessage dispatch** — exactly today's behaviour. On a non-Claude runtime this\ncontribution is a no-op.\n\n## What the executor does when the Workflow backend is active\n\nInstead of the orchestrator fanning out one `Agent(subagent_type=gsd-executor,\nisolation=worktree, run_in_background=true)` per message (which on Claude Code\ncannot nest further subagents — #853 — and so degrades to sequential inline\nexecution), execute-phase **emits a generated Workflow script** and lets the main\nloop orchestrate it:\n\n- **waves → one or more sequential `parallel()` barriers** — each wave is a\n barrier group; when plans within a wave share `files_modified`, they are split\n into separate sequential stages within that wave's barrier (the next wave\n still waits for the previous wave to complete).\n- **plans → `agent(brief, { agentType: 'gsd-executor', isolation: 'worktree' })`**\n — the SAME executor agent and worktree isolation the inline path uses, so the\n produced `SUMMARY.md` and commits are identical.\n- **`files_modified` overlap → separate sequential stages** — two plans that\n touch the same file are placed in different stages within the wave (the same\n overlap rule execute-phase already applies inline).\n- **`resumeFromRunId`** — wired to the phase run id, so an interrupted phase\n resumes without re-running completed plans.\n- **`budget(tokens)`** — a shared token pool across the whole phase when the\n orchestrator passes a `budgetTokens` value to `emitWorkflowScript` (it is a\n function parameter, not a config key; the orchestrator decides the budget).\n\nThe emitter is a pure function exposed through the capability command surface:\n`gsd-tools claude-orchestration emit-workflow --waves <manifest.json> --run-id <id>\n[--phase-dir <dir>] [--budget <n>]` (or `require('gsd-core/bin/lib/claude-orchestration.cjs').emitWorkflowScript`\ndirectly). It maps the phase's wave/plan manifest to the Workflow script string\nand never invokes the Workflow tool itself; the orchestrator runs the emitted\nscript. Detection is resolved by the orchestrator calling the pure\n`detectWorkflowBackend` with the LIVE host descriptor (the CLI\n`gsd-tools claude-orchestration detect-backend` is a simulation harness that\nassumes a capable host unless `--no-nested-dispatch` is passed — it does not probe\nthe real runtime; the orchestrator supplies the real descriptor).\n\n## Fallback contract\n\nIf detection resolves to `inline` (tool absent, SDK too old, runtime not Claude,\nor the capability disabled), execute-phase MUST proceed with the standard inline\nwave dispatch. The executor MUST NOT assume parallelism, a shared budget, or\nresume-from-run-id semantics in that mode.\n"
|
|
2997
|
+
},
|
|
2998
|
+
"produces": [],
|
|
2999
|
+
"consumes": [
|
|
3000
|
+
"PLAN.md"
|
|
3001
|
+
],
|
|
3002
|
+
"when": "claude_orchestration.enabled",
|
|
3003
|
+
"onError": "skip"
|
|
3004
|
+
},
|
|
2754
3005
|
{
|
|
2755
3006
|
"capId": "external-job",
|
|
2756
3007
|
"point": "execute:wave:post",
|
|
@@ -2961,6 +3212,9 @@ const byLoopPoint = {
|
|
|
2961
3212
|
const configKeys = {
|
|
2962
3213
|
"workflow.ai_integration_phase": "ai-integration",
|
|
2963
3214
|
"workflow.assumption_delta": "assumption-delta",
|
|
3215
|
+
"claude_orchestration.enabled": "claude-orchestration",
|
|
3216
|
+
"claude_orchestration.execution_backend": "claude-orchestration",
|
|
3217
|
+
"claude_orchestration.min_agent_sdk_version": "claude-orchestration",
|
|
2964
3218
|
"workflow.code_review": "code-review",
|
|
2965
3219
|
"workflow.code_review_depth": "code-review",
|
|
2966
3220
|
"workflow.drift_threshold": "drift",
|
|
@@ -3012,6 +3266,29 @@ const configSchema = {
|
|
|
3012
3266
|
"default": true,
|
|
3013
3267
|
"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)."
|
|
3014
3268
|
},
|
|
3269
|
+
"claude_orchestration.enabled": {
|
|
3270
|
+
"owner": "claude-orchestration",
|
|
3271
|
+
"type": "boolean",
|
|
3272
|
+
"default": false,
|
|
3273
|
+
"description": "Master toggle for the Claude orchestration capability. Default-off + BETA: the Workflow-tool execution backend and the ultraplan plan-offload surface are inert unless this is true. When false, loop behaviour is byte-identical to a non-Claude runtime (inline/manual dispatch)."
|
|
3274
|
+
},
|
|
3275
|
+
"claude_orchestration.execution_backend": {
|
|
3276
|
+
"owner": "claude-orchestration",
|
|
3277
|
+
"type": "enum",
|
|
3278
|
+
"default": "auto",
|
|
3279
|
+
"description": "Which execute-phase dispatch backend to use when the capability is enabled. 'auto' (default) activates the Workflow backend only when the runtime is Claude AND the Workflow tool is detected AND the Agent SDK meets claude_orchestration.min_agent_sdk_version; otherwise it falls back to inline. 'workflow' forces the Workflow backend when the tool is present AND the Agent SDK meets the floor (still fails closed to inline if the tool is absent or the SDK is too old — the floor applies in both modes). 'inline' forces today's manual one-agent-per-message dispatch regardless of tool availability.",
|
|
3280
|
+
"values": [
|
|
3281
|
+
"auto",
|
|
3282
|
+
"workflow",
|
|
3283
|
+
"inline"
|
|
3284
|
+
]
|
|
3285
|
+
},
|
|
3286
|
+
"claude_orchestration.min_agent_sdk_version": {
|
|
3287
|
+
"owner": "claude-orchestration",
|
|
3288
|
+
"type": "string",
|
|
3289
|
+
"default": "0.3.149",
|
|
3290
|
+
"description": "Minimum Agent SDK version required to activate the Workflow backend under execution_backend='auto'. Defaults to 0.3.149 (the release that introduced the Workflow tool). Raise to pin a higher floor; the detection seam fails closed to inline for any runtime reporting an older or unknown version."
|
|
3291
|
+
},
|
|
3015
3292
|
"workflow.code_review": {
|
|
3016
3293
|
"owner": "code-review",
|
|
3017
3294
|
"type": "boolean",
|
|
@@ -3258,7 +3535,7 @@ const runtimes = {
|
|
|
3258
3535
|
"antigravity": {
|
|
3259
3536
|
"id": "antigravity",
|
|
3260
3537
|
"role": "runtime",
|
|
3261
|
-
"version": "1.7.0-rc.
|
|
3538
|
+
"version": "1.7.0-rc.4",
|
|
3262
3539
|
"title": "Antigravity",
|
|
3263
3540
|
"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.",
|
|
3264
3541
|
"tier": "core",
|
|
@@ -3292,6 +3569,14 @@ const runtimes = {
|
|
|
3292
3569
|
"nesting": "flat",
|
|
3293
3570
|
"recursive": false,
|
|
3294
3571
|
"converter": "convertClaudeCommandToAntigravitySkill"
|
|
3572
|
+
},
|
|
3573
|
+
{
|
|
3574
|
+
"kind": "agents",
|
|
3575
|
+
"destSubpath": "agents",
|
|
3576
|
+
"prefix": "gsd-",
|
|
3577
|
+
"nesting": "flat",
|
|
3578
|
+
"recursive": false,
|
|
3579
|
+
"converter": "convertClaudeAgentToAntigravityAgent"
|
|
3295
3580
|
}
|
|
3296
3581
|
],
|
|
3297
3582
|
"local": [
|
|
@@ -3302,6 +3587,14 @@ const runtimes = {
|
|
|
3302
3587
|
"nesting": "flat",
|
|
3303
3588
|
"recursive": false,
|
|
3304
3589
|
"converter": "convertClaudeCommandToAntigravitySkill"
|
|
3590
|
+
},
|
|
3591
|
+
{
|
|
3592
|
+
"kind": "agents",
|
|
3593
|
+
"destSubpath": "agents",
|
|
3594
|
+
"prefix": "gsd-",
|
|
3595
|
+
"nesting": "flat",
|
|
3596
|
+
"recursive": false,
|
|
3597
|
+
"converter": "convertClaudeAgentToAntigravityAgent"
|
|
3305
3598
|
}
|
|
3306
3599
|
]
|
|
3307
3600
|
},
|
|
@@ -3336,7 +3629,7 @@ const runtimes = {
|
|
|
3336
3629
|
"augment": {
|
|
3337
3630
|
"id": "augment",
|
|
3338
3631
|
"role": "runtime",
|
|
3339
|
-
"version": "1.7.0-rc.
|
|
3632
|
+
"version": "1.7.0-rc.4",
|
|
3340
3633
|
"title": "Augment Code",
|
|
3341
3634
|
"description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
3342
3635
|
"tier": "core",
|
|
@@ -3439,7 +3732,7 @@ const runtimes = {
|
|
|
3439
3732
|
"claude": {
|
|
3440
3733
|
"id": "claude",
|
|
3441
3734
|
"role": "runtime",
|
|
3442
|
-
"version": "1.7.0-rc.
|
|
3735
|
+
"version": "1.7.0-rc.4",
|
|
3443
3736
|
"title": "Claude Code",
|
|
3444
3737
|
"description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
|
|
3445
3738
|
"tier": "core",
|
|
@@ -3523,7 +3816,7 @@ const runtimes = {
|
|
|
3523
3816
|
"cline": {
|
|
3524
3817
|
"id": "cline",
|
|
3525
3818
|
"role": "runtime",
|
|
3526
|
-
"version": "1.7.0-rc.
|
|
3819
|
+
"version": "1.7.0-rc.4",
|
|
3527
3820
|
"title": "Cline",
|
|
3528
3821
|
"description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
|
|
3529
3822
|
"tier": "core",
|
|
@@ -3584,7 +3877,7 @@ const runtimes = {
|
|
|
3584
3877
|
"codebuddy": {
|
|
3585
3878
|
"id": "codebuddy",
|
|
3586
3879
|
"role": "runtime",
|
|
3587
|
-
"version": "1.7.0-rc.
|
|
3880
|
+
"version": "1.7.0-rc.4",
|
|
3588
3881
|
"title": "CodeBuddy",
|
|
3589
3882
|
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
3590
3883
|
"tier": "core",
|
|
@@ -3687,7 +3980,7 @@ const runtimes = {
|
|
|
3687
3980
|
"codex": {
|
|
3688
3981
|
"id": "codex",
|
|
3689
3982
|
"role": "runtime",
|
|
3690
|
-
"version": "1.7.0-rc.
|
|
3983
|
+
"version": "1.7.0-rc.4",
|
|
3691
3984
|
"title": "OpenAI Codex CLI",
|
|
3692
3985
|
"description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
|
|
3693
3986
|
"tier": "core",
|
|
@@ -3758,7 +4051,7 @@ const runtimes = {
|
|
|
3758
4051
|
"copilot": {
|
|
3759
4052
|
"id": "copilot",
|
|
3760
4053
|
"role": "runtime",
|
|
3761
|
-
"version": "1.7.0-rc.
|
|
4054
|
+
"version": "1.7.0-rc.4",
|
|
3762
4055
|
"title": "GitHub Copilot",
|
|
3763
4056
|
"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.",
|
|
3764
4057
|
"tier": "core",
|
|
@@ -3786,6 +4079,14 @@ const runtimes = {
|
|
|
3786
4079
|
"nesting": "flat",
|
|
3787
4080
|
"recursive": false,
|
|
3788
4081
|
"converter": "convertClaudeCommandToCopilotSkill"
|
|
4082
|
+
},
|
|
4083
|
+
{
|
|
4084
|
+
"kind": "agents",
|
|
4085
|
+
"destSubpath": "agents",
|
|
4086
|
+
"prefix": "gsd-",
|
|
4087
|
+
"nesting": "flat",
|
|
4088
|
+
"recursive": false,
|
|
4089
|
+
"converter": "convertClaudeAgentToCopilotAgent"
|
|
3789
4090
|
}
|
|
3790
4091
|
],
|
|
3791
4092
|
"local": [
|
|
@@ -3796,6 +4097,14 @@ const runtimes = {
|
|
|
3796
4097
|
"nesting": "flat",
|
|
3797
4098
|
"recursive": false,
|
|
3798
4099
|
"converter": "convertClaudeCommandToCopilotSkill"
|
|
4100
|
+
},
|
|
4101
|
+
{
|
|
4102
|
+
"kind": "agents",
|
|
4103
|
+
"destSubpath": "agents",
|
|
4104
|
+
"prefix": "gsd-",
|
|
4105
|
+
"nesting": "flat",
|
|
4106
|
+
"recursive": false,
|
|
4107
|
+
"converter": "convertClaudeAgentToCopilotAgent"
|
|
3799
4108
|
}
|
|
3800
4109
|
]
|
|
3801
4110
|
},
|
|
@@ -3829,7 +4138,7 @@ const runtimes = {
|
|
|
3829
4138
|
"cursor": {
|
|
3830
4139
|
"id": "cursor",
|
|
3831
4140
|
"role": "runtime",
|
|
3832
|
-
"version": "1.7.0-rc.
|
|
4141
|
+
"version": "1.7.0-rc.4",
|
|
3833
4142
|
"title": "Cursor",
|
|
3834
4143
|
"description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
|
|
3835
4144
|
"tier": "core",
|
|
@@ -3932,7 +4241,7 @@ const runtimes = {
|
|
|
3932
4241
|
"hermes": {
|
|
3933
4242
|
"id": "hermes",
|
|
3934
4243
|
"role": "runtime",
|
|
3935
|
-
"version": "1.7.0-rc.
|
|
4244
|
+
"version": "1.7.0-rc.4",
|
|
3936
4245
|
"title": "Hermes Agent",
|
|
3937
4246
|
"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.",
|
|
3938
4247
|
"tier": "core",
|
|
@@ -4003,7 +4312,7 @@ const runtimes = {
|
|
|
4003
4312
|
"kilo": {
|
|
4004
4313
|
"id": "kilo",
|
|
4005
4314
|
"role": "runtime",
|
|
4006
|
-
"version": "1.7.0-rc.
|
|
4315
|
+
"version": "1.7.0-rc.4",
|
|
4007
4316
|
"title": "Kilo Code",
|
|
4008
4317
|
"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.",
|
|
4009
4318
|
"tier": "core",
|
|
@@ -4096,7 +4405,7 @@ const runtimes = {
|
|
|
4096
4405
|
"kimi": {
|
|
4097
4406
|
"id": "kimi",
|
|
4098
4407
|
"role": "runtime",
|
|
4099
|
-
"version": "1.7.0-rc.
|
|
4408
|
+
"version": "1.7.0-rc.4",
|
|
4100
4409
|
"title": "Kimi CLI",
|
|
4101
4410
|
"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.",
|
|
4102
4411
|
"tier": "core",
|
|
@@ -4170,7 +4479,7 @@ const runtimes = {
|
|
|
4170
4479
|
"opencode": {
|
|
4171
4480
|
"id": "opencode",
|
|
4172
4481
|
"role": "runtime",
|
|
4173
|
-
"version": "1.7.0-rc.
|
|
4482
|
+
"version": "1.7.0-rc.4",
|
|
4174
4483
|
"title": "OpenCode",
|
|
4175
4484
|
"description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
|
|
4176
4485
|
"tier": "core",
|
|
@@ -4259,7 +4568,7 @@ const runtimes = {
|
|
|
4259
4568
|
"qwen": {
|
|
4260
4569
|
"id": "qwen",
|
|
4261
4570
|
"role": "runtime",
|
|
4262
|
-
"version": "1.7.0-rc.
|
|
4571
|
+
"version": "1.7.0-rc.4",
|
|
4263
4572
|
"title": "Qwen Code",
|
|
4264
4573
|
"description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
4265
4574
|
"tier": "core",
|
|
@@ -4334,7 +4643,7 @@ const runtimes = {
|
|
|
4334
4643
|
"trae": {
|
|
4335
4644
|
"id": "trae",
|
|
4336
4645
|
"role": "runtime",
|
|
4337
|
-
"version": "1.7.0-rc.
|
|
4646
|
+
"version": "1.7.0-rc.4",
|
|
4338
4647
|
"title": "Trae IDE",
|
|
4339
4648
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
4340
4649
|
"tier": "core",
|
|
@@ -4420,7 +4729,7 @@ const runtimes = {
|
|
|
4420
4729
|
"windsurf": {
|
|
4421
4730
|
"id": "windsurf",
|
|
4422
4731
|
"role": "runtime",
|
|
4423
|
-
"version": "1.7.0-rc.
|
|
4732
|
+
"version": "1.7.0-rc.4",
|
|
4424
4733
|
"title": "Windsurf",
|
|
4425
4734
|
"description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; no hook surface; no hook events; tier-2 support.",
|
|
4426
4735
|
"tier": "core",
|
|
@@ -4495,6 +4804,108 @@ const runtimes = {
|
|
|
4495
4804
|
"runtime": "undocumented"
|
|
4496
4805
|
}
|
|
4497
4806
|
}
|
|
4807
|
+
},
|
|
4808
|
+
"zcode": {
|
|
4809
|
+
"id": "zcode",
|
|
4810
|
+
"role": "runtime",
|
|
4811
|
+
"version": "1.7.0-rc.4",
|
|
4812
|
+
"title": "ZCode",
|
|
4813
|
+
"description": "ZCode (Z.ai) — desktop Agentic Development Environment for GLM-5.2; Claude-shaped nested skills at ~/.zcode/skills/<name>/SKILL.md, slash commands, named subagents, native MCP; declarative plugin surface; profile-marker install; tier-2 community support.",
|
|
4814
|
+
"tier": "core",
|
|
4815
|
+
"requires": [],
|
|
4816
|
+
"engines": {
|
|
4817
|
+
"gsd": ">=1.6.0"
|
|
4818
|
+
},
|
|
4819
|
+
"runtime": {
|
|
4820
|
+
"configHome": {
|
|
4821
|
+
"kind": "dot-home",
|
|
4822
|
+
"name": ".zcode",
|
|
4823
|
+
"env": [
|
|
4824
|
+
"ZCODE_CONFIG_DIR"
|
|
4825
|
+
]
|
|
4826
|
+
},
|
|
4827
|
+
"localConfigDir": ".zcode",
|
|
4828
|
+
"configFormat": "none",
|
|
4829
|
+
"artifactLayout": {
|
|
4830
|
+
"global": [
|
|
4831
|
+
{
|
|
4832
|
+
"kind": "skills",
|
|
4833
|
+
"destSubpath": "skills",
|
|
4834
|
+
"prefix": "gsd-",
|
|
4835
|
+
"nesting": "nested",
|
|
4836
|
+
"recursive": false,
|
|
4837
|
+
"converter": "convertClaudeCommandToClaudeSkill"
|
|
4838
|
+
},
|
|
4839
|
+
{
|
|
4840
|
+
"kind": "commands",
|
|
4841
|
+
"destSubpath": "commands",
|
|
4842
|
+
"prefix": "gsd-",
|
|
4843
|
+
"nesting": "flat",
|
|
4844
|
+
"recursive": false,
|
|
4845
|
+
"converter": null
|
|
4846
|
+
},
|
|
4847
|
+
{
|
|
4848
|
+
"kind": "agents",
|
|
4849
|
+
"destSubpath": "agents",
|
|
4850
|
+
"prefix": "gsd-",
|
|
4851
|
+
"nesting": "flat",
|
|
4852
|
+
"recursive": false,
|
|
4853
|
+
"converter": null
|
|
4854
|
+
}
|
|
4855
|
+
],
|
|
4856
|
+
"local": [
|
|
4857
|
+
{
|
|
4858
|
+
"kind": "skills",
|
|
4859
|
+
"destSubpath": "skills",
|
|
4860
|
+
"prefix": "gsd-",
|
|
4861
|
+
"nesting": "nested",
|
|
4862
|
+
"recursive": false,
|
|
4863
|
+
"converter": "convertClaudeCommandToClaudeSkill"
|
|
4864
|
+
},
|
|
4865
|
+
{
|
|
4866
|
+
"kind": "commands",
|
|
4867
|
+
"destSubpath": "commands",
|
|
4868
|
+
"prefix": "gsd-",
|
|
4869
|
+
"nesting": "flat",
|
|
4870
|
+
"recursive": false,
|
|
4871
|
+
"converter": null
|
|
4872
|
+
},
|
|
4873
|
+
{
|
|
4874
|
+
"kind": "agents",
|
|
4875
|
+
"destSubpath": "agents",
|
|
4876
|
+
"prefix": "gsd-",
|
|
4877
|
+
"nesting": "flat",
|
|
4878
|
+
"recursive": false,
|
|
4879
|
+
"converter": null
|
|
4880
|
+
}
|
|
4881
|
+
]
|
|
4882
|
+
},
|
|
4883
|
+
"commandStyle": "slash-hyphen",
|
|
4884
|
+
"hooksSurface": "none",
|
|
4885
|
+
"sandboxTier": "none",
|
|
4886
|
+
"supportTier": 2,
|
|
4887
|
+
"installSurface": "profile-marker-only",
|
|
4888
|
+
"writesSharedSettings": false,
|
|
4889
|
+
"permissionWriter": null,
|
|
4890
|
+
"extendedHookEvents": [],
|
|
4891
|
+
"hostIntegration": {
|
|
4892
|
+
"embeddingMode": "declarative",
|
|
4893
|
+
"commandSurface": "slash-file",
|
|
4894
|
+
"dispatch": {
|
|
4895
|
+
"namedDispatch": true,
|
|
4896
|
+
"nested": "undocumented",
|
|
4897
|
+
"maxDepth": "undocumented",
|
|
4898
|
+
"background": false,
|
|
4899
|
+
"subagentToolkit": "full",
|
|
4900
|
+
"backgroundDispatch": false
|
|
4901
|
+
},
|
|
4902
|
+
"modelMode": "passive",
|
|
4903
|
+
"hookBus": "host",
|
|
4904
|
+
"stateIO": "filesystem",
|
|
4905
|
+
"transport": "mcp",
|
|
4906
|
+
"runtime": "electron"
|
|
4907
|
+
}
|
|
4908
|
+
}
|
|
4498
4909
|
}
|
|
4499
4910
|
};
|
|
4500
4911
|
|
|
@@ -4509,6 +4920,11 @@ const commandFamilies = {
|
|
|
4509
4920
|
"module": "audit-command-router.cjs",
|
|
4510
4921
|
"router": "routeAuditUat"
|
|
4511
4922
|
},
|
|
4923
|
+
"claude-orchestration": {
|
|
4924
|
+
"capId": "claude-orchestration",
|
|
4925
|
+
"module": "claude-orchestration-command-router.cjs",
|
|
4926
|
+
"router": "routeClaudeOrchestrationCommand"
|
|
4927
|
+
},
|
|
4512
4928
|
"extract-messages": {
|
|
4513
4929
|
"capId": "profile-pipeline",
|
|
4514
4930
|
"module": "profile-pipeline-command-router.cjs",
|
|
@@ -4648,6 +5064,7 @@ const _requiresGraph = {
|
|
|
4648
5064
|
"audit": [],
|
|
4649
5065
|
"augment": [],
|
|
4650
5066
|
"claude": [],
|
|
5067
|
+
"claude-orchestration": [],
|
|
4651
5068
|
"cline": [],
|
|
4652
5069
|
"code-review": [],
|
|
4653
5070
|
"codebuddy": [],
|
|
@@ -4676,7 +5093,8 @@ const _requiresGraph = {
|
|
|
4676
5093
|
"tdd": [],
|
|
4677
5094
|
"trae": [],
|
|
4678
5095
|
"ui": [],
|
|
4679
|
-
"windsurf": []
|
|
5096
|
+
"windsurf": [],
|
|
5097
|
+
"zcode": []
|
|
4680
5098
|
};
|
|
4681
5099
|
|
|
4682
5100
|
function requiresClosure(id) {
|