feat(#1430): versioned capability manifest + native stamping (ADR-1244 Phase 1) (#1436)

* feat(#1430): versioned capability manifest + native stamping (ADR-1244 Phase 1)

Make the capability manifest versioned — the data substrate the Capability
Ecosystem (ADR-1244) keys off:

- capability.json gains a REQUIRED semver `version` plus the optional
  ecosystem envelope (`engines.gsd`, `compatVersions`, `integrity`,
  `provenance`); the build-time conformance validator enforces them via a new
  `validateVersionEnvelope()` (exported for the Phase 2 runtime overlay).
- All 32 native capabilities stamped with `version` (= package version,
  lockstep) + `engines.gsd`; `sync-manifest-versions.cjs` gains a glob sweep
  that keeps them in sync, and the issue-844 regression guard is extended.
- Strict SemVer 2.0.0 grammar blocks metacharacter/space/unicode smuggling in
  version strings; range/integrity fields are shape-validated (satisfaction
  and the load-time gate are deferred to Phase 2/4).
- Capability rel-paths emitted forward-slash for cross-platform git correctness.

Closes #1430

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs(#1430): add changeset for versioned capability manifest

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-06-18 10:45:53 -04:00
committed by GitHub
parent 8040a6bac0
commit 2421cf1b4a
40 changed files with 1321 additions and 115 deletions

View File

@@ -1,12 +1,23 @@
{
"id": "ai-integration",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "AI design contract",
"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.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"skills": ["ai-integration-phase"],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [
"ai-integration-phase"
],
"agents": [
"gsd-framework-selector",
"gsd-ai-researcher",
@@ -24,9 +35,15 @@
"steps": [
{
"point": "plan:pre",
"ref": { "skill": "ai-integration-phase" },
"produces": ["AI-SPEC.md"],
"consumes": ["CONTEXT.md"],
"ref": {
"skill": "ai-integration-phase"
},
"produces": [
"AI-SPEC.md"
],
"consumes": [
"CONTEXT.md"
],
"when": "workflow.ai_integration_phase",
"onError": "skip"
}

View File

@@ -1,17 +1,27 @@
{
"id": "antigravity",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Antigravity",
"description": "Google Antigravity IDE — nested under ~/.gemini/antigravity; probed across 1.x and 2.x layouts; Gemini hook event dialect; nested skill layout; tier-1 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home-nested",
"name": "antigravity",
"parent": ".gemini",
"env": ["ANTIGRAVITY_CONFIG_DIR"],
"probe": ["antigravity", "antigravity-ide", "antigravity-cli"]
"env": [
"ANTIGRAVITY_CONFIG_DIR"
],
"probe": [
"antigravity",
"antigravity-ide",
"antigravity-cli"
]
},
"configFormat": "settings-json",
"artifactLayout": {

View File

@@ -1,11 +1,20 @@
{
"id": "audit",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Audit",
"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).",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [],
"agents": [],
"config": {},

View File

@@ -1,15 +1,21 @@
{
"id": "augment",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Augment Code",
"description": "Augment Code CLI — commands + nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".augment",
"env": ["AUGMENT_CONFIG_DIR"]
"env": [
"AUGMENT_CONFIG_DIR"
]
},
"configFormat": "settings-json",
"artifactLayout": {

View File

@@ -1,15 +1,21 @@
{
"id": "claude",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Claude Code",
"description": "Anthropic Claude Code — primary development runtime; tier-1 support with full hook surface and skills-based global install.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".claude",
"env": ["CLAUDE_CONFIG_DIR"]
"env": [
"CLAUDE_CONFIG_DIR"
]
},
"configFormat": "settings-json",
"artifactLayout": {
@@ -50,6 +56,11 @@
"installSurface": "settings-json",
"writesSharedSettings": true,
"permissionWriter": null,
"extendedHookEvents": ["SubagentStop", "Stop", "PreCompact", "FileChanged"]
"extendedHookEvents": [
"SubagentStop",
"Stop",
"PreCompact",
"FileChanged"
]
}
}

View File

@@ -1,15 +1,21 @@
{
"id": "cline",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Cline",
"description": "Cline (VS Code extension) — global-only nested-skill layout; cline-rules hook surface (.clinerules); no hook events emitted; tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".cline",
"env": ["CLINE_CONFIG_DIR"]
"env": [
"CLINE_CONFIG_DIR"
]
},
"configFormat": "markdown-dir",
"artifactLayout": {

View File

@@ -1,13 +1,27 @@
{
"id": "code-review",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Code review",
"description": "Source-file code review and review-fix workflow support for completed execution work.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"skills": ["code-review"],
"agents": ["gsd-code-reviewer", "gsd-code-fixer"],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [
"code-review"
],
"agents": [
"gsd-code-reviewer",
"gsd-code-fixer"
],
"hooks": [],
"config": {
"workflow.code_review": {
@@ -17,7 +31,11 @@
},
"workflow.code_review_depth": {
"type": "enum",
"values": ["quick", "standard", "deep"],
"values": [
"quick",
"standard",
"deep"
],
"default": "standard",
"description": "Default depth for code review when no --depth override is supplied."
}
@@ -25,9 +43,15 @@
"steps": [
{
"point": "execute:post",
"ref": { "skill": "code-review" },
"produces": ["REVIEW.md"],
"consumes": ["SUMMARY.md"],
"ref": {
"skill": "code-review"
},
"produces": [
"REVIEW.md"
],
"consumes": [
"SUMMARY.md"
],
"when": "workflow.code_review",
"onError": "skip"
}

View File

@@ -1,15 +1,21 @@
{
"id": "codebuddy",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "CodeBuddy",
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".codebuddy",
"env": ["CODEBUDDY_CONFIG_DIR"]
"env": [
"CODEBUDDY_CONFIG_DIR"
]
},
"configFormat": "settings-json",
"artifactLayout": {

View File

@@ -1,15 +1,21 @@
{
"id": "codex",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "OpenAI Codex CLI",
"description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".codex",
"env": ["CODEX_HOME"]
"env": [
"CODEX_HOME"
]
},
"configFormat": "toml",
"artifactLayout": {

View File

@@ -1,15 +1,22 @@
{
"id": "copilot",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "GitHub Copilot",
"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.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".copilot",
"env": ["COPILOT_CONFIG_DIR", "COPILOT_HOME"]
"env": [
"COPILOT_CONFIG_DIR",
"COPILOT_HOME"
]
},
"configFormat": "markdown",
"artifactLayout": {

View File

@@ -1,15 +1,21 @@
{
"id": "cursor",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Cursor",
"description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".cursor",
"env": ["CURSOR_CONFIG_DIR"]
"env": [
"CURSOR_CONFIG_DIR"
]
},
"configFormat": "none",
"artifactLayout": {

View File

@@ -1,11 +1,20 @@
{
"id": "drift",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Drift detection gates",
"description": "Post-execution drift detection gates that run after each wave completes. Provides two gates 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).",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [],
"agents": [],
"hooks": [],
@@ -17,7 +26,10 @@
},
"workflow.drift_action": {
"type": "enum",
"values": ["warn", "auto-remap"],
"values": [
"warn",
"auto-remap"
],
"default": "warn",
"description": "Action taken by the codebase drift gate when the threshold is exceeded: warn (advisory message) or auto-remap (spawn gsd-codebase-mapper agent to refresh STRUCTURE.md)."
},
@@ -32,14 +44,18 @@
"gates": [
{
"point": "execute:wave:post",
"check": { "query": "verify.schema-drift" },
"check": {
"query": "verify.schema-drift"
},
"when": "workflow.schema_drift_gate",
"blocking": true,
"onError": "skip"
},
{
"point": "execute:wave:post",
"check": { "query": "verify.codebase-drift" },
"check": {
"query": "verify.codebase-drift"
},
"when": "workflow.schema_drift_gate",
"blocking": false,
"onError": "skip"

View File

@@ -1,11 +1,20 @@
{
"id": "gap-analysis",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Post-planning gap analysis",
"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.",
"tier": "standard",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [],
"agents": [],
"hooks": [],

View File

@@ -1,15 +1,21 @@
{
"id": "gemini",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Gemini CLI",
"description": "Google Gemini CLI — commands-only artifact layout (TOML); Gemini hook event dialect; settings-json hook surface; tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".gemini",
"env": ["GEMINI_CONFIG_DIR"]
"env": [
"GEMINI_CONFIG_DIR"
]
},
"configFormat": "settings-json",
"artifactLayout": {
@@ -42,6 +48,10 @@
"installSurface": "settings-json",
"writesSharedSettings": true,
"permissionWriter": null,
"extendedHookEvents": ["BeforeAgent", "AfterAgent", "BeforeModel"]
"extendedHookEvents": [
"BeforeAgent",
"AfterAgent",
"BeforeModel"
]
}
}

View File

@@ -1,12 +1,23 @@
{
"id": "graphify",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Knowledge graph",
"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.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"skills": ["graphify"],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [
"graphify"
],
"agents": [],
"activationKey": "graphify.enabled",
"config": {

View File

@@ -1,15 +1,21 @@
{
"id": "hermes",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Hermes Agent",
"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.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".hermes",
"env": ["HERMES_HOME"]
"env": [
"HERMES_HOME"
]
},
"configFormat": "settings-json",
"artifactLayout": {

View File

@@ -1,11 +1,20 @@
{
"id": "intel",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Codebase intelligence",
"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`.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [],
"agents": [],
"activationKey": "intel.enabled",
@@ -27,8 +36,12 @@
"steps": [
{
"point": "plan:pre",
"ref": { "command": "intel api-surface" },
"produces": [".planning/intel/API-SURFACE.md"],
"ref": {
"command": "intel api-surface"
},
"produces": [
".planning/intel/API-SURFACE.md"
],
"consumes": [],
"when": "intel.enabled",
"onError": "skip"

View File

@@ -1,15 +1,23 @@
{
"id": "kilo",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Kilo Code",
"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.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "xdg",
"name": "kilo",
"env": ["KILO_CONFIG_DIR", "KILO_CONFIG", "XDG_CONFIG_HOME"],
"env": [
"KILO_CONFIG_DIR",
"KILO_CONFIG",
"XDG_CONFIG_HOME"
],
"skillsHome": {
"kind": "dot-home",
"name": ".kilo",

View File

@@ -1,16 +1,25 @@
{
"id": "kimi",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Kimi CLI",
"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.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "generic-agents-root",
"name": "agents",
"env": ["KIMI_CONFIG_DIR"],
"probe": ["~/.config/agents", "~/.agents"],
"env": [
"KIMI_CONFIG_DIR"
],
"probe": [
"~/.config/agents",
"~/.agents"
],
"probeExists": "skills"
},
"configFormat": "none",

View File

@@ -1,13 +1,27 @@
{
"id": "mempalace",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "MemPalace memory",
"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.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"skills": ["mempalace-recall", "mempalace-capture"],
"agents": ["gsd-mempalace-curator"],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [
"mempalace-recall",
"mempalace-capture"
],
"agents": [
"gsd-mempalace-curator"
],
"hooks": [],
"config": {
"mempalace.enabled": {
@@ -17,7 +31,11 @@
},
"mempalace.memory_mode": {
"type": "enum",
"values": ["augment", "kg_backend", "replace"],
"values": [
"augment",
"kg_backend",
"replace"
],
"default": "augment",
"description": "How MemPalace relates to GSD native memory. Only 'augment' (additive) is implemented today; 'kg_backend' and 'replace' are forward-declared (routing seam not yet built) and currently behave as 'augment'."
},
@@ -65,41 +83,63 @@
"steps": [
{
"point": "discuss:post",
"ref": { "skill": "mempalace-capture" },
"ref": {
"skill": "mempalace-capture"
},
"produces": [],
"consumes": ["CONTEXT.md"],
"consumes": [
"CONTEXT.md"
],
"when": "mempalace.enabled",
"onError": "skip"
},
{
"point": "plan:pre",
"ref": { "skill": "mempalace-recall" },
"produces": ["MEMORY-RECALL.md"],
"consumes": ["CONTEXT.md"],
"ref": {
"skill": "mempalace-recall"
},
"produces": [
"MEMORY-RECALL.md"
],
"consumes": [
"CONTEXT.md"
],
"when": "mempalace.enabled",
"onError": "skip"
},
{
"point": "plan:post",
"ref": { "skill": "mempalace-capture" },
"ref": {
"skill": "mempalace-capture"
},
"produces": [],
"consumes": ["PLAN.md"],
"consumes": [
"PLAN.md"
],
"when": "mempalace.enabled",
"onError": "skip"
},
{
"point": "verify:post",
"ref": { "skill": "mempalace-capture" },
"ref": {
"skill": "mempalace-capture"
},
"produces": [],
"consumes": ["SUMMARY.md"],
"consumes": [
"SUMMARY.md"
],
"when": "mempalace.enabled",
"onError": "skip"
},
{
"point": "ship:post",
"ref": { "agent": "gsd-mempalace-curator" },
"ref": {
"agent": "gsd-mempalace-curator"
},
"produces": [],
"consumes": ["UAT.md"],
"consumes": [
"UAT.md"
],
"when": "mempalace.enabled",
"onError": "skip"
}
@@ -108,7 +148,9 @@
{
"point": "discuss:pre",
"into": "orchestrator",
"fragment": { "path": "fragments/recall-discuss.md" },
"fragment": {
"path": "fragments/recall-discuss.md"
},
"produces": [],
"consumes": [],
"when": "mempalace.enabled",
@@ -117,7 +159,9 @@
{
"point": "execute:wave:post",
"into": "verifier",
"fragment": { "path": "fragments/capture-problems.md" },
"fragment": {
"path": "fragments/capture-problems.md"
},
"produces": [],
"consumes": [],
"when": "mempalace.enabled",

View File

@@ -1,13 +1,26 @@
{
"id": "nyquist",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Nyquist validation",
"description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"skills": ["validate-phase"],
"agents": ["gsd-nyquist-auditor"],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [
"validate-phase"
],
"agents": [
"gsd-nyquist-auditor"
],
"hooks": [],
"config": {
"workflow.nyquist_validation": {
@@ -19,9 +32,15 @@
"steps": [
{
"point": "verify:post",
"ref": { "skill": "validate-phase" },
"produces": ["VALIDATION.md"],
"consumes": ["SUMMARY.md"],
"ref": {
"skill": "validate-phase"
},
"produces": [
"VALIDATION.md"
],
"consumes": [
"SUMMARY.md"
],
"when": "workflow.nyquist_validation",
"onError": "halt"
}

View File

@@ -1,15 +1,23 @@
{
"id": "opencode",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "OpenCode",
"description": "OpenCode — XDG-based config dir; flat command/ + skills artifact layout; settings-json config format; no lifecycle hook registration; tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "xdg",
"name": "opencode",
"env": ["OPENCODE_CONFIG_DIR", "OPENCODE_CONFIG", "XDG_CONFIG_HOME"]
"env": [
"OPENCODE_CONFIG_DIR",
"OPENCODE_CONFIG",
"XDG_CONFIG_HOME"
]
},
"configFormat": "settings-json",
"artifactLayout": {

View File

@@ -1,13 +1,26 @@
{
"id": "pattern-mapper",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Pattern mapping",
"description": "Optional codebase-pattern mapping before planning; owns the pattern mapper agent and workflow.pattern_mapper activation key.",
"tier": "full",
"requires": ["research"],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"requires": [
"research"
],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [],
"agents": ["gsd-pattern-mapper"],
"agents": [
"gsd-pattern-mapper"
],
"hooks": [],
"config": {
"workflow.pattern_mapper": {
@@ -19,10 +32,18 @@
"steps": [
{
"point": "plan:pre",
"ref": { "agent": "gsd-pattern-mapper" },
"fragment": { "path": "fragments/plan-pre.md" },
"produces": ["PATTERNS.md"],
"consumes": ["RESEARCH.md"],
"ref": {
"agent": "gsd-pattern-mapper"
},
"fragment": {
"path": "fragments/plan-pre.md"
},
"produces": [
"PATTERNS.md"
],
"consumes": [
"RESEARCH.md"
],
"when": "workflow.pattern_mapper",
"onError": "skip"
}

View File

@@ -1,13 +1,26 @@
{
"id": "profile-pipeline",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Developer profiling pipeline",
"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.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"skills": ["profile-user"],
"agents": ["gsd-user-profiler"],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [
"profile-user"
],
"agents": [
"gsd-user-profiler"
],
"config": {
"profile-pipeline.enabled": {
"type": "boolean",

View File

@@ -1,15 +1,21 @@
{
"id": "qwen",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Qwen Code",
"description": "Qwen Code (Alibaba) — nested-skill artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".qwen",
"env": ["QWEN_CONFIG_DIR"]
"env": [
"QWEN_CONFIG_DIR"
]
},
"configFormat": "settings-json",
"artifactLayout": {
@@ -42,6 +48,10 @@
"installSurface": "settings-json",
"writesSharedSettings": true,
"permissionWriter": null,
"extendedHookEvents": ["SubagentStop", "Stop", "PreCompact"]
"extendedHookEvents": [
"SubagentStop",
"Stop",
"PreCompact"
]
}
}

View File

@@ -1,13 +1,24 @@
{
"id": "research",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Phase research",
"description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
"tier": "standard",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [],
"agents": ["gsd-phase-researcher"],
"agents": [
"gsd-phase-researcher"
],
"hooks": [],
"config": {
"workflow.research": {
@@ -19,10 +30,18 @@
"steps": [
{
"point": "plan:pre",
"ref": { "agent": "gsd-phase-researcher" },
"fragment": { "path": "fragments/plan-pre.md" },
"produces": ["RESEARCH.md"],
"consumes": ["CONTEXT.md"],
"ref": {
"agent": "gsd-phase-researcher"
},
"fragment": {
"path": "fragments/plan-pre.md"
},
"produces": [
"RESEARCH.md"
],
"consumes": [
"CONTEXT.md"
],
"when": "workflow.research",
"onError": "skip"
}

View File

@@ -1,11 +1,20 @@
{
"id": "schema-gate",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Schema push detection gate",
"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.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [],
"agents": [],
"hooks": [],
@@ -21,9 +30,13 @@
{
"point": "plan:pre",
"into": "planner",
"fragment": { "path": "fragments/plan-pre.md" },
"fragment": {
"path": "fragments/plan-pre.md"
},
"produces": [],
"consumes": ["CONTEXT.md"],
"consumes": [
"CONTEXT.md"
],
"when": "workflow.schema_push_detection",
"onError": "skip"
}

View File

@@ -1,13 +1,26 @@
{
"id": "security",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Security enforcement",
"description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"skills": ["secure-phase"],
"agents": ["gsd-security-auditor"],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [
"secure-phase"
],
"agents": [
"gsd-security-auditor"
],
"hooks": [],
"config": {
"workflow.security_enforcement": {
@@ -22,7 +35,13 @@
},
"workflow.security_block_on": {
"type": "enum",
"values": ["critical", "high", "medium", "low", "none"],
"values": [
"critical",
"high",
"medium",
"low",
"none"
],
"default": "high",
"description": "Minimum open threat severity that blocks advancement."
}
@@ -30,9 +49,15 @@
"steps": [
{
"point": "verify:post",
"ref": { "skill": "secure-phase" },
"produces": ["SECURITY.md"],
"consumes": ["SUMMARY.md"],
"ref": {
"skill": "secure-phase"
},
"produces": [
"SECURITY.md"
],
"consumes": [
"SUMMARY.md"
],
"when": "workflow.security_enforcement",
"onError": "halt"
}
@@ -49,7 +74,9 @@
"security_block_on": "workflow.security_block_on"
},
"produces": [],
"consumes": ["CONTEXT.md"],
"consumes": [
"CONTEXT.md"
],
"when": "workflow.security_enforcement"
}
],

View File

@@ -1,11 +1,20 @@
{
"id": "tdd",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "Test-driven development",
"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.",
"tier": "full",
"requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [],
"agents": [],
"hooks": [],

View File

@@ -1,15 +1,21 @@
{
"id": "trae",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Trae IDE",
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home",
"name": ".trae",
"env": ["TRAE_CONFIG_DIR"]
"env": [
"TRAE_CONFIG_DIR"
]
},
"configFormat": "none",
"artifactLayout": {

View File

@@ -1,23 +1,95 @@
{
"id": "ui", "role": "feature", "title": "UI design contracts",
"id": "ui",
"role": "feature",
"version": "1.5.1-dev.0",
"title": "UI design contracts",
"description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
"tier": "full", "requires": [],
"runtimeCompat": { "supported": ["*"], "unsupported": [] },
"skills": ["ui-phase", "ui-review"],
"agents": ["gsd-ui-checker", "gsd-ui-auditor"],
"tier": "full",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtimeCompat": {
"supported": [
"*"
],
"unsupported": []
},
"skills": [
"ui-phase",
"ui-review"
],
"agents": [
"gsd-ui-checker",
"gsd-ui-auditor"
],
"hooks": [],
"config": {
"workflow.ui_phase": { "type": "boolean", "default": true, "description": "Enable the UI design-contract gate during planning." },
"workflow.ui_review": { "type": "boolean", "default": true, "description": "Enable the retrospective UI audit." },
"workflow.ui_safety_gate": { "type": "boolean", "default": true, "description": "Block execution on unmet UI-SPEC contracts." }
"workflow.ui_phase": {
"type": "boolean",
"default": true,
"description": "Enable the UI design-contract gate during planning."
},
"workflow.ui_review": {
"type": "boolean",
"default": true,
"description": "Enable the retrospective UI audit."
},
"workflow.ui_safety_gate": {
"type": "boolean",
"default": true,
"description": "Block execution on unmet UI-SPEC contracts."
}
},
"steps": [
{ "point": "plan:pre", "ref": { "skill": "ui-phase" }, "produces": ["UI-SPEC.md"], "consumes": ["CONTEXT.md"], "when": "workflow.ui_phase", "onError": "skip" },
{ "point": "verify:post", "ref": { "skill": "ui-review" }, "produces": ["UI-REVIEW.md"], "consumes": ["UI-SPEC.md"], "when": "workflow.ui_review", "onError": "skip" }
{
"point": "plan:pre",
"ref": {
"skill": "ui-phase"
},
"produces": [
"UI-SPEC.md"
],
"consumes": [
"CONTEXT.md"
],
"when": "workflow.ui_phase",
"onError": "skip"
},
{
"point": "verify:post",
"ref": {
"skill": "ui-review"
},
"produces": [
"UI-REVIEW.md"
],
"consumes": [
"UI-SPEC.md"
],
"when": "workflow.ui_review",
"onError": "skip"
}
],
"contributions": [],
"gates": [
{ "point": "plan:pre", "check": { "query": "ui.plan-gate" }, "when": "workflow.ui_safety_gate", "blocking": true, "onError": "halt" },
{ "point": "execute:wave:post", "check": { "query": "ui.safety-gate" }, "when": "workflow.ui_safety_gate", "blocking": true, "onError": "halt" }
{
"point": "plan:pre",
"check": {
"query": "ui.plan-gate"
},
"when": "workflow.ui_safety_gate",
"blocking": true,
"onError": "halt"
},
{
"point": "execute:wave:post",
"check": {
"query": "ui.safety-gate"
},
"when": "workflow.ui_safety_gate",
"blocking": true,
"onError": "halt"
}
]
}

View File

@@ -1,16 +1,22 @@
{
"id": "windsurf",
"role": "runtime",
"version": "1.5.1-dev.0",
"title": "Windsurf",
"description": "Windsurf (Codeium) — nested under ~/.codeium/windsurf; skills-only artifact layout; no hook surface; no hook events; tier-2 support.",
"tier": "core",
"requires": [],
"engines": {
"gsd": ">=1.6.0"
},
"runtime": {
"configHome": {
"kind": "dot-home-nested",
"name": "windsurf",
"parent": ".codeium",
"env": ["WINDSURF_CONFIG_DIR"]
"env": [
"WINDSURF_CONFIG_DIR"
]
},
"configFormat": "none",
"artifactLayout": {