@opengsd/gsd-core 1.20.0 → 1.20.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 (43) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/bin/install.js +36 -40
  4. package/commands/gsd/new-milestone.md +2 -2
  5. package/commands/gsd/new-project.md +2 -2
  6. package/gsd-core/bin/gsd-tools.cjs +104 -70
  7. package/gsd-core/bin/lib/capability-registry.cjs +64 -64
  8. package/gsd-core/bin/lib/commands.cjs +19 -0
  9. package/gsd-core/bin/lib/gsd-tool-dir.cjs +134 -0
  10. package/gsd-core/bin/lib/init.cjs +7 -7
  11. package/gsd-core/bin/lib/install-engine.cjs +9 -9
  12. package/gsd-core/bin/lib/install-manifest-record.cjs +86 -0
  13. package/gsd-core/bin/lib/install-profiles.cjs +4 -2
  14. package/gsd-core/bin/lib/phase-id.cjs +26 -9
  15. package/gsd-core/bin/lib/phase.cjs +64 -15
  16. package/gsd-core/bin/lib/planning-snapshot.cjs +2 -2
  17. package/gsd-core/bin/lib/roadmap-parser.cjs +29 -0
  18. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +310 -130
  19. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +6 -0
  20. package/gsd-core/bin/lib/state-transition.cjs +12 -5
  21. package/gsd-core/bin/lib/state.cjs +2 -2
  22. package/gsd-core/bin/lib/workstream-inventory.cjs +4 -4
  23. package/gsd-core/bin/lib/worktree-base-ref.cjs +32 -2
  24. package/hooks/dist/gsd-agent-isolation-guard.js +1 -1
  25. package/hooks/dist/gsd-cursor-subagent-start.js +1 -1
  26. package/hooks/dist/lib/isolation-sentinel.js +77 -2
  27. package/hooks/gsd-agent-isolation-guard.js +1 -1
  28. package/hooks/gsd-cursor-subagent-start.js +1 -1
  29. package/hooks/lib/isolation-sentinel.js +77 -2
  30. package/package.json +1 -1
  31. package/pi/package-skills/gsd-new-milestone/SKILL.md +1 -1
  32. package/pi/package-skills/gsd-new-project/SKILL.md +1 -1
  33. package/scripts/changeset/lint.cjs +28 -3
  34. package/scripts/lib/macos-conformance-tier.generated.cjs +4 -0
  35. package/scripts/lib/platform-conformance-tier.generated.cjs +4 -0
  36. package/scripts/merge-commit-pr.cjs +186 -0
  37. package/scripts/release-ancestry.cjs +86 -0
  38. package/scripts/release-pipeline-pr.cjs +92 -0
  39. package/scripts/require-issue-link-policy.cjs +18 -9
  40. package/scripts/sync-next-version.cjs +11 -2
  41. package/skills/gsd-new-milestone/SKILL.md +1 -1
  42. package/skills/gsd-new-project/SKILL.md +1 -1
  43. package/vscode/package.json +1 -1
@@ -10,7 +10,7 @@ const capabilities = {
10
10
  "ai-integration": {
11
11
  "id": "ai-integration",
12
12
  "role": "feature",
13
- "version": "1.20.0",
13
+ "version": "1.20.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",
@@ -95,7 +95,7 @@ const capabilities = {
95
95
  "antigravity": {
96
96
  "id": "antigravity",
97
97
  "role": "runtime",
98
- "version": "1.20.0",
98
+ "version": "1.20.1",
99
99
  "title": "Antigravity",
100
100
  "description": "Google Antigravity IDE — config/settings home nested under ~/.gemini/antigravity (probed across 1.x and 2.x layouts); global skills/agents install under ~/.gemini/config, the dir AGY scans for global discovery (#3738); Gemini hook event dialect; flat skill layout; tier-1 support.",
101
101
  "tier": "core",
@@ -270,7 +270,7 @@ const capabilities = {
270
270
  "assumption-delta": {
271
271
  "id": "assumption-delta",
272
272
  "role": "feature",
273
- "version": "1.20.0",
273
+ "version": "1.20.1",
274
274
  "title": "Assumption-delta architecture checkpoint",
275
275
  "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.",
276
276
  "tier": "full",
@@ -316,7 +316,7 @@ const capabilities = {
316
316
  "audit": {
317
317
  "id": "audit",
318
318
  "role": "feature",
319
- "version": "1.20.0",
319
+ "version": "1.20.1",
320
320
  "title": "Audit",
321
321
  "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).",
322
322
  "tier": "full",
@@ -353,7 +353,7 @@ const capabilities = {
353
353
  "augment": {
354
354
  "id": "augment",
355
355
  "role": "runtime",
356
- "version": "1.20.0",
356
+ "version": "1.20.1",
357
357
  "title": "Augment Code",
358
358
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
359
359
  "tier": "core",
@@ -471,7 +471,7 @@ const capabilities = {
471
471
  "broken-windows": {
472
472
  "id": "broken-windows",
473
473
  "role": "feature",
474
- "version": "1.20.0",
474
+ "version": "1.20.1",
475
475
  "title": "Broken-windows ledger",
476
476
  "description": "Cross-phase defect register accumulating stubs, TODOs, skipped tests, unrun verifies, and unmet truths into .planning/WINDOWS.md. When enforcement is enabled, it blocks /gsd-ship while any window is open unless explicitly waived with a recorded reason. Operationalizes GSD's no-defer discipline as a tracked artifact (issue #1950).",
477
477
  "tier": "full",
@@ -517,7 +517,7 @@ const capabilities = {
517
517
  "claude": {
518
518
  "id": "claude",
519
519
  "role": "runtime",
520
- "version": "1.20.0",
520
+ "version": "1.20.1",
521
521
  "title": "Claude Code",
522
522
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
523
523
  "tier": "core",
@@ -712,7 +712,7 @@ const capabilities = {
712
712
  "claude-orchestration": {
713
713
  "id": "claude-orchestration",
714
714
  "role": "feature",
715
- "version": "1.20.0",
715
+ "version": "1.20.1",
716
716
  "title": "Claude orchestration (Workflow backend)",
717
717
  "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.",
718
718
  "tier": "full",
@@ -786,7 +786,7 @@ const capabilities = {
786
786
  "cline": {
787
787
  "id": "cline",
788
788
  "role": "runtime",
789
- "version": "1.20.0",
789
+ "version": "1.20.1",
790
790
  "title": "Cline",
791
791
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
792
792
  "tier": "core",
@@ -880,7 +880,7 @@ const capabilities = {
880
880
  "code-review": {
881
881
  "id": "code-review",
882
882
  "role": "feature",
883
- "version": "1.20.0",
883
+ "version": "1.20.1",
884
884
  "title": "Code review",
885
885
  "description": "Source-file code review and review-fix workflow support for completed execution work.",
886
886
  "tier": "full",
@@ -966,7 +966,7 @@ const capabilities = {
966
966
  "codebuddy": {
967
967
  "id": "codebuddy",
968
968
  "role": "runtime",
969
- "version": "1.20.0",
969
+ "version": "1.20.1",
970
970
  "title": "CodeBuddy",
971
971
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
972
972
  "tier": "core",
@@ -1088,7 +1088,7 @@ const capabilities = {
1088
1088
  "coderabbit": {
1089
1089
  "id": "coderabbit",
1090
1090
  "role": "reviewer",
1091
- "version": "1.20.0",
1091
+ "version": "1.20.1",
1092
1092
  "title": "CodeRabbit",
1093
1093
  "description": "CodeRabbit CLI — cross-AI /gsd-review reviewer lane only; not a GSD install target (no runtime body, no artifacts). Reviews the working-tree diff (`coderabbit review --prompt-only`), not the source tree, and accepts neither a prompt nor a model flag; findings are down-weighted in consensus (evidenceClass: diff-only).",
1094
1094
  "tier": "full",
@@ -1142,7 +1142,7 @@ const capabilities = {
1142
1142
  "codex": {
1143
1143
  "id": "codex",
1144
1144
  "role": "runtime",
1145
- "version": "1.20.0",
1145
+ "version": "1.20.1",
1146
1146
  "title": "OpenAI Codex CLI",
1147
1147
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
1148
1148
  "tier": "core",
@@ -1336,7 +1336,7 @@ const capabilities = {
1336
1336
  "copilot": {
1337
1337
  "id": "copilot",
1338
1338
  "role": "runtime",
1339
- "version": "1.20.0",
1339
+ "version": "1.20.1",
1340
1340
  "title": "GitHub Copilot",
1341
1341
  "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.",
1342
1342
  "tier": "core",
@@ -1438,7 +1438,7 @@ const capabilities = {
1438
1438
  "cursor": {
1439
1439
  "id": "cursor",
1440
1440
  "role": "runtime",
1441
- "version": "1.20.0",
1441
+ "version": "1.20.1",
1442
1442
  "title": "Cursor",
1443
1443
  "description": "Cursor IDE — skills-only workflow surface; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
1444
1444
  "tier": "core",
@@ -1615,7 +1615,7 @@ const capabilities = {
1615
1615
  "drift": {
1616
1616
  "id": "drift",
1617
1617
  "role": "feature",
1618
- "version": "1.20.0",
1618
+ "version": "1.20.1",
1619
1619
  "title": "Drift detection gates",
1620
1620
  "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 outside the codebase map and modified or deleted files inside it). 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.",
1621
1621
  "tier": "full",
@@ -1716,7 +1716,7 @@ const capabilities = {
1716
1716
  "external-job": {
1717
1717
  "id": "external-job",
1718
1718
  "role": "feature",
1719
- "version": "1.20.0",
1719
+ "version": "1.20.1",
1720
1720
  "title": "Async external-job scheduler adapter",
1721
1721
  "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 classification at execute:wave:pre and recording at execute:wave:post. This capability still contributes executor guidance at wave:post; execute-phase now renders wave:pre entries and dispatches generic step hooks there independently. Moving external-job classification to wave:pre is a separate capability change, not part of #4148. 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).",
1722
1722
  "tier": "full",
@@ -1799,7 +1799,7 @@ const capabilities = {
1799
1799
  "gap-analysis": {
1800
1800
  "id": "gap-analysis",
1801
1801
  "role": "feature",
1802
- "version": "1.20.0",
1802
+ "version": "1.20.1",
1803
1803
  "title": "Post-planning gap analysis",
1804
1804
  "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.",
1805
1805
  "tier": "standard",
@@ -1840,7 +1840,7 @@ const capabilities = {
1840
1840
  "graphify": {
1841
1841
  "id": "graphify",
1842
1842
  "role": "feature",
1843
- "version": "1.20.0",
1843
+ "version": "1.20.1",
1844
1844
  "title": "Knowledge graph",
1845
1845
  "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.",
1846
1846
  "tier": "full",
@@ -1881,7 +1881,7 @@ const capabilities = {
1881
1881
  "hermes": {
1882
1882
  "id": "hermes",
1883
1883
  "role": "runtime",
1884
- "version": "1.20.0",
1884
+ "version": "1.20.1",
1885
1885
  "title": "Hermes Agent",
1886
1886
  "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.",
1887
1887
  "tier": "core",
@@ -2000,7 +2000,7 @@ const capabilities = {
2000
2000
  "intel": {
2001
2001
  "id": "intel",
2002
2002
  "role": "feature",
2003
- "version": "1.20.0",
2003
+ "version": "1.20.1",
2004
2004
  "title": "Codebase intelligence",
2005
2005
  "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`.",
2006
2006
  "tier": "full",
@@ -2052,7 +2052,7 @@ const capabilities = {
2052
2052
  "kilo": {
2053
2053
  "id": "kilo",
2054
2054
  "role": "runtime",
2055
- "version": "1.20.0",
2055
+ "version": "1.20.1",
2056
2056
  "title": "Kilo Code",
2057
2057
  "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.",
2058
2058
  "tier": "core",
@@ -2186,7 +2186,7 @@ const capabilities = {
2186
2186
  "kimi": {
2187
2187
  "id": "kimi",
2188
2188
  "role": "runtime",
2189
- "version": "1.20.0",
2189
+ "version": "1.20.1",
2190
2190
  "title": "Kimi CLI",
2191
2191
  "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.",
2192
2192
  "tier": "core",
@@ -2296,7 +2296,7 @@ const capabilities = {
2296
2296
  "kimi-code": {
2297
2297
  "id": "kimi-code",
2298
2298
  "role": "runtime",
2299
- "version": "1.20.0",
2299
+ "version": "1.20.1",
2300
2300
  "title": "Kimi Code CLI",
2301
2301
  "description": "Kimi Code CLI (Moonshot AI, Node) — Agent Skills auto-discovered at ~/.kimi-code/skills; global AGENTS.md at ~/.kimi-code/AGENTS.md; native config.toml + [[hooks]] bus; three built-in subagents (coder/explore/plan), NO custom named subagents; background dispatch; tier-2 support. Distinct from Python kimi-cli (the 'kimi' capability) per ADR-1239 EoS — Kimi Code cannot dispatch named subagents so the kimi-agents YAML layout does NOT apply; persona injection rides the existing ${AGENT_SKILLS_*} workflow fallback. Install-layout, agent-install-check, and install-time decision (kimi vs kimi-code) land in follow-up PRs; this descriptor is the EoS foundation.",
2302
2302
  "tier": "core",
@@ -2474,7 +2474,7 @@ const capabilities = {
2474
2474
  "live-dom-uat": {
2475
2475
  "id": "live-dom-uat",
2476
2476
  "role": "feature",
2477
- "version": "1.20.0",
2477
+ "version": "1.20.1",
2478
2478
  "title": "Live-DOM UAT",
2479
2479
  "description": "Default-off live-DOM verification (#2856). Confines browser MCP reach to one purpose-built agent (gsd-dom-verifier) that carries the browser globs in its own tools: line, registered as an additive step hook at execute:wave:post. agents/gsd-executor.md is deliberately NOT widened: for a first-party agent the static tool list is the only control that exists, no capability can grant tools to one (ADR-1244 D2), no hook kind grants tool permissions (ADR-857 D4), and there is no per-dispatch tool override. Gated by activationKey workflow.live_dom_uat (default false), so with the key off the capability resolves inactive and the hook does not render at all. NOTE on the browser profile lock: chrome-devtools-mcp holds an exclusive lock on $HOME/.cache/chrome-devtools-mcp/chrome-profile, and --isolated is a flag on the user's own MCP-server registration that GSD cannot pass. Concurrent execution waves sharing one profile will therefore collide; the step tolerates and reports that (onError: skip, never blocking) rather than pretending to coordinate a resource it does not own.",
2480
2480
  "tier": "full",
@@ -2527,7 +2527,7 @@ const capabilities = {
2527
2527
  "llama-cpp": {
2528
2528
  "id": "llama-cpp",
2529
2529
  "role": "reviewer",
2530
- "version": "1.20.0",
2530
+ "version": "1.20.1",
2531
2531
  "title": "llama.cpp",
2532
2532
  "description": "llama.cpp server — cross-AI /gsd-review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.llama_cpp_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`llama-cpp`, required by KEBAB_RE); `reviewer.slug` stays snake (`llama_cpp`) to match the shipped roster and the `review.llama_cpp_host` config key (ADR-2782's three-namespace trap).",
2533
2533
  "tier": "full",
@@ -2600,7 +2600,7 @@ const capabilities = {
2600
2600
  "lm-studio": {
2601
2601
  "id": "lm-studio",
2602
2602
  "role": "reviewer",
2603
- "version": "1.20.0",
2603
+ "version": "1.20.1",
2604
2604
  "title": "LM Studio",
2605
2605
  "description": "LM Studio local model server — cross-AI /gsd-review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.lm_studio_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`lm-studio`, required by KEBAB_RE); `reviewer.slug` stays snake (`lm_studio`) to match the shipped roster and the `review.lm_studio_host` config key (ADR-2782's three-namespace trap).",
2606
2606
  "tier": "full",
@@ -2673,7 +2673,7 @@ const capabilities = {
2673
2673
  "mempalace": {
2674
2674
  "id": "mempalace",
2675
2675
  "role": "feature",
2676
- "version": "1.20.0",
2676
+ "version": "1.20.1",
2677
2677
  "title": "MemPalace memory",
2678
2678
  "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.",
2679
2679
  "tier": "full",
@@ -2847,7 +2847,7 @@ const capabilities = {
2847
2847
  "nyquist": {
2848
2848
  "id": "nyquist",
2849
2849
  "role": "feature",
2850
- "version": "1.20.0",
2850
+ "version": "1.20.1",
2851
2851
  "title": "Nyquist validation",
2852
2852
  "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.",
2853
2853
  "tier": "full",
@@ -2897,7 +2897,7 @@ const capabilities = {
2897
2897
  "ollama": {
2898
2898
  "id": "ollama",
2899
2899
  "role": "reviewer",
2900
- "version": "1.20.0",
2900
+ "version": "1.20.1",
2901
2901
  "title": "Ollama",
2902
2902
  "description": "Ollama local model server — cross-AI /gsd-review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.ollama_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq.",
2903
2903
  "tier": "full",
@@ -2970,7 +2970,7 @@ const capabilities = {
2970
2970
  "opencode": {
2971
2971
  "id": "opencode",
2972
2972
  "role": "runtime",
2973
- "version": "1.20.0",
2973
+ "version": "1.20.1",
2974
2974
  "title": "OpenCode",
2975
2975
  "description": "OpenCode — XDG-based config dir; flat commands/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
2976
2976
  "tier": "core",
@@ -3181,7 +3181,7 @@ const capabilities = {
3181
3181
  "pattern-mapper": {
3182
3182
  "id": "pattern-mapper",
3183
3183
  "role": "feature",
3184
- "version": "1.20.0",
3184
+ "version": "1.20.1",
3185
3185
  "title": "Pattern mapping",
3186
3186
  "description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
3187
3187
  "tier": "full",
@@ -3235,7 +3235,7 @@ const capabilities = {
3235
3235
  "pi": {
3236
3236
  "id": "pi",
3237
3237
  "role": "runtime",
3238
- "version": "1.20.0",
3238
+ "version": "1.20.1",
3239
3239
  "title": "pi",
3240
3240
  "description": "pi (pi.dev) — node-runtime programmatic-CLI (managed pi 1.3.0 install); TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.",
3241
3241
  "tier": "core",
@@ -3346,7 +3346,7 @@ const capabilities = {
3346
3346
  "profile-pipeline": {
3347
3347
  "id": "profile-pipeline",
3348
3348
  "role": "feature",
3349
- "version": "1.20.0",
3349
+ "version": "1.20.1",
3350
3350
  "title": "Developer profiling pipeline",
3351
3351
  "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.",
3352
3352
  "tier": "full",
@@ -3423,7 +3423,7 @@ const capabilities = {
3423
3423
  "qwen": {
3424
3424
  "id": "qwen",
3425
3425
  "role": "runtime",
3426
- "version": "1.20.0",
3426
+ "version": "1.20.1",
3427
3427
  "title": "Qwen Code",
3428
3428
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
3429
3429
  "tier": "core",
@@ -3584,7 +3584,7 @@ const capabilities = {
3584
3584
  "refactor-trigger": {
3585
3585
  "id": "refactor-trigger",
3586
3586
  "role": "feature",
3587
- "version": "1.20.0",
3587
+ "version": "1.20.1",
3588
3588
  "title": "Complexity-triggered refactor",
3589
3589
  "description": "Measures the complexity of the code a phase touched and, when a function crosses a configured threshold or jumps past its recorded anchor, surfaces a scoped refactor proposal at .planning/phases/<N>/<NN>-REFACTOR.md. Advisory by default — it never edits code and never blocks. Opt-in strict mode blocks /gsd-ship while a proposal is untriaged; a declined proposal is recorded in the broken-windows ledger when that capability is present. Operationalizes 'refactor early, refactor often' as continuous pressure instead of a thing you have to remember (issue #1953).",
3590
3590
  "tier": "full",
@@ -3651,7 +3651,7 @@ const capabilities = {
3651
3651
  "research": {
3652
3652
  "id": "research",
3653
3653
  "role": "feature",
3654
- "version": "1.20.0",
3654
+ "version": "1.20.1",
3655
3655
  "title": "Phase research",
3656
3656
  "description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
3657
3657
  "tier": "standard",
@@ -3703,7 +3703,7 @@ const capabilities = {
3703
3703
  "schema-gate": {
3704
3704
  "id": "schema-gate",
3705
3705
  "role": "feature",
3706
- "version": "1.20.0",
3706
+ "version": "1.20.1",
3707
3707
  "title": "Schema push detection gate",
3708
3708
  "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.",
3709
3709
  "tier": "full",
@@ -3749,7 +3749,7 @@ const capabilities = {
3749
3749
  "security": {
3750
3750
  "id": "security",
3751
3751
  "role": "feature",
3752
- "version": "1.20.0",
3752
+ "version": "1.20.1",
3753
3753
  "title": "Security enforcement",
3754
3754
  "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
3755
3755
  "tier": "full",
@@ -3848,7 +3848,7 @@ const capabilities = {
3848
3848
  "tdd": {
3849
3849
  "id": "tdd",
3850
3850
  "role": "feature",
3851
- "version": "1.20.0",
3851
+ "version": "1.20.1",
3852
3852
  "title": "Test-driven development",
3853
3853
  "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.",
3854
3854
  "tier": "full",
@@ -3901,7 +3901,7 @@ const capabilities = {
3901
3901
  "trae": {
3902
3902
  "id": "trae",
3903
3903
  "role": "runtime",
3904
- "version": "1.20.0",
3904
+ "version": "1.20.1",
3905
3905
  "title": "Trae IDE",
3906
3906
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
3907
3907
  "tier": "core",
@@ -4000,7 +4000,7 @@ const capabilities = {
4000
4000
  "ui": {
4001
4001
  "id": "ui",
4002
4002
  "role": "feature",
4003
- "version": "1.20.0",
4003
+ "version": "1.20.1",
4004
4004
  "title": "UI design contracts",
4005
4005
  "description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
4006
4006
  "tier": "full",
@@ -4100,7 +4100,7 @@ const capabilities = {
4100
4100
  "vscode": {
4101
4101
  "id": "vscode",
4102
4102
  "role": "runtime",
4103
- "version": "1.20.0",
4103
+ "version": "1.20.1",
4104
4104
  "title": "VS Code",
4105
4105
  "description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).",
4106
4106
  "tier": "core",
@@ -4158,7 +4158,7 @@ const capabilities = {
4158
4158
  "windsurf": {
4159
4159
  "id": "windsurf",
4160
4160
  "role": "runtime",
4161
- "version": "1.20.0",
4161
+ "version": "1.20.1",
4162
4162
  "title": "Windsurf",
4163
4163
  "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.",
4164
4164
  "tier": "core",
@@ -4251,7 +4251,7 @@ const capabilities = {
4251
4251
  "zcode": {
4252
4252
  "id": "zcode",
4253
4253
  "role": "runtime",
4254
- "version": "1.20.0",
4254
+ "version": "1.20.1",
4255
4255
  "title": "ZCode",
4256
4256
  "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.",
4257
4257
  "tier": "core",
@@ -5717,7 +5717,7 @@ const runtimes = {
5717
5717
  "antigravity": {
5718
5718
  "id": "antigravity",
5719
5719
  "role": "runtime",
5720
- "version": "1.20.0",
5720
+ "version": "1.20.1",
5721
5721
  "title": "Antigravity",
5722
5722
  "description": "Google Antigravity IDE — config/settings home nested under ~/.gemini/antigravity (probed across 1.x and 2.x layouts); global skills/agents install under ~/.gemini/config, the dir AGY scans for global discovery (#3738); Gemini hook event dialect; flat skill layout; tier-1 support.",
5723
5723
  "tier": "core",
@@ -5892,7 +5892,7 @@ const runtimes = {
5892
5892
  "augment": {
5893
5893
  "id": "augment",
5894
5894
  "role": "runtime",
5895
- "version": "1.20.0",
5895
+ "version": "1.20.1",
5896
5896
  "title": "Augment Code",
5897
5897
  "description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
5898
5898
  "tier": "core",
@@ -6010,7 +6010,7 @@ const runtimes = {
6010
6010
  "claude": {
6011
6011
  "id": "claude",
6012
6012
  "role": "runtime",
6013
- "version": "1.20.0",
6013
+ "version": "1.20.1",
6014
6014
  "title": "Claude Code",
6015
6015
  "description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
6016
6016
  "tier": "core",
@@ -6205,7 +6205,7 @@ const runtimes = {
6205
6205
  "cline": {
6206
6206
  "id": "cline",
6207
6207
  "role": "runtime",
6208
- "version": "1.20.0",
6208
+ "version": "1.20.1",
6209
6209
  "title": "Cline",
6210
6210
  "description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
6211
6211
  "tier": "core",
@@ -6299,7 +6299,7 @@ const runtimes = {
6299
6299
  "codebuddy": {
6300
6300
  "id": "codebuddy",
6301
6301
  "role": "runtime",
6302
- "version": "1.20.0",
6302
+ "version": "1.20.1",
6303
6303
  "title": "CodeBuddy",
6304
6304
  "description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
6305
6305
  "tier": "core",
@@ -6421,7 +6421,7 @@ const runtimes = {
6421
6421
  "codex": {
6422
6422
  "id": "codex",
6423
6423
  "role": "runtime",
6424
- "version": "1.20.0",
6424
+ "version": "1.20.1",
6425
6425
  "title": "OpenAI Codex CLI",
6426
6426
  "description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
6427
6427
  "tier": "core",
@@ -6615,7 +6615,7 @@ const runtimes = {
6615
6615
  "copilot": {
6616
6616
  "id": "copilot",
6617
6617
  "role": "runtime",
6618
- "version": "1.20.0",
6618
+ "version": "1.20.1",
6619
6619
  "title": "GitHub Copilot",
6620
6620
  "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.",
6621
6621
  "tier": "core",
@@ -6717,7 +6717,7 @@ const runtimes = {
6717
6717
  "cursor": {
6718
6718
  "id": "cursor",
6719
6719
  "role": "runtime",
6720
- "version": "1.20.0",
6720
+ "version": "1.20.1",
6721
6721
  "title": "Cursor",
6722
6722
  "description": "Cursor IDE — skills-only workflow surface; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
6723
6723
  "tier": "core",
@@ -6894,7 +6894,7 @@ const runtimes = {
6894
6894
  "hermes": {
6895
6895
  "id": "hermes",
6896
6896
  "role": "runtime",
6897
- "version": "1.20.0",
6897
+ "version": "1.20.1",
6898
6898
  "title": "Hermes Agent",
6899
6899
  "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.",
6900
6900
  "tier": "core",
@@ -7013,7 +7013,7 @@ const runtimes = {
7013
7013
  "kilo": {
7014
7014
  "id": "kilo",
7015
7015
  "role": "runtime",
7016
- "version": "1.20.0",
7016
+ "version": "1.20.1",
7017
7017
  "title": "Kilo Code",
7018
7018
  "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.",
7019
7019
  "tier": "core",
@@ -7147,7 +7147,7 @@ const runtimes = {
7147
7147
  "kimi": {
7148
7148
  "id": "kimi",
7149
7149
  "role": "runtime",
7150
- "version": "1.20.0",
7150
+ "version": "1.20.1",
7151
7151
  "title": "Kimi CLI",
7152
7152
  "description": "Kimi CLI (Moonshot AI) — generic agents root at ~/.config/agents; skills + kimi-agents artifact layout; native config.toml [[hooks]] bus at ~/.kimi/config.toml; background dispatch; tier-2 support.",
7153
7153
  "tier": "core",
@@ -7257,7 +7257,7 @@ const runtimes = {
7257
7257
  "kimi-code": {
7258
7258
  "id": "kimi-code",
7259
7259
  "role": "runtime",
7260
- "version": "1.20.0",
7260
+ "version": "1.20.1",
7261
7261
  "title": "Kimi Code CLI",
7262
7262
  "description": "Kimi Code CLI (Moonshot AI, Node) — Agent Skills auto-discovered at ~/.kimi-code/skills; global AGENTS.md at ~/.kimi-code/AGENTS.md; native config.toml + [[hooks]] bus; three built-in subagents (coder/explore/plan), NO custom named subagents; background dispatch; tier-2 support. Distinct from Python kimi-cli (the 'kimi' capability) per ADR-1239 EoS — Kimi Code cannot dispatch named subagents so the kimi-agents YAML layout does NOT apply; persona injection rides the existing ${AGENT_SKILLS_*} workflow fallback. Install-layout, agent-install-check, and install-time decision (kimi vs kimi-code) land in follow-up PRs; this descriptor is the EoS foundation.",
7263
7263
  "tier": "core",
@@ -7435,7 +7435,7 @@ const runtimes = {
7435
7435
  "opencode": {
7436
7436
  "id": "opencode",
7437
7437
  "role": "runtime",
7438
- "version": "1.20.0",
7438
+ "version": "1.20.1",
7439
7439
  "title": "OpenCode",
7440
7440
  "description": "OpenCode — XDG-based config dir; flat commands/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
7441
7441
  "tier": "core",
@@ -7646,7 +7646,7 @@ const runtimes = {
7646
7646
  "pi": {
7647
7647
  "id": "pi",
7648
7648
  "role": "runtime",
7649
- "version": "1.20.0",
7649
+ "version": "1.20.1",
7650
7650
  "title": "pi",
7651
7651
  "description": "pi (pi.dev) — node-runtime programmatic-CLI (managed pi 1.3.0 install); TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.",
7652
7652
  "tier": "core",
@@ -7757,7 +7757,7 @@ const runtimes = {
7757
7757
  "qwen": {
7758
7758
  "id": "qwen",
7759
7759
  "role": "runtime",
7760
- "version": "1.20.0",
7760
+ "version": "1.20.1",
7761
7761
  "title": "Qwen Code",
7762
7762
  "description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
7763
7763
  "tier": "core",
@@ -7918,7 +7918,7 @@ const runtimes = {
7918
7918
  "trae": {
7919
7919
  "id": "trae",
7920
7920
  "role": "runtime",
7921
- "version": "1.20.0",
7921
+ "version": "1.20.1",
7922
7922
  "title": "Trae IDE",
7923
7923
  "description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
7924
7924
  "tier": "core",
@@ -8017,7 +8017,7 @@ const runtimes = {
8017
8017
  "vscode": {
8018
8018
  "id": "vscode",
8019
8019
  "role": "runtime",
8020
- "version": "1.20.0",
8020
+ "version": "1.20.1",
8021
8021
  "title": "VS Code",
8022
8022
  "description": "VS Code — Marketplace/VSIX extension; no file-projected config directory; IDE-profile reference host (active vscode.lm model, engine-owned hook bus, sandboxed globalState/workspaceState stateIO).",
8023
8023
  "tier": "core",
@@ -8075,7 +8075,7 @@ const runtimes = {
8075
8075
  "windsurf": {
8076
8076
  "id": "windsurf",
8077
8077
  "role": "runtime",
8078
- "version": "1.20.0",
8078
+ "version": "1.20.1",
8079
8079
  "title": "Windsurf",
8080
8080
  "description": "Windsurf (Codeium) — workspace workflow artifact layout for slash commands; Cascade native hooks.json blocking hook bus (pre_write_code, pre_run_command); tier-2 support.",
8081
8081
  "tier": "core",
@@ -8168,7 +8168,7 @@ const runtimes = {
8168
8168
  "zcode": {
8169
8169
  "id": "zcode",
8170
8170
  "role": "runtime",
8171
- "version": "1.20.0",
8171
+ "version": "1.20.1",
8172
8172
  "title": "ZCode",
8173
8173
  "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.",
8174
8174
  "tier": "core",