* 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:
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {},
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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": [],
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -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": [],
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
Reference in New Issue
Block a user