* feat(#1135): migrate planning hooks to capabilities * chore(#1135): add phase 6 planning capabilities changeset * fix(#1135): satisfy lint for agent hook rendering
2459 lines
67 KiB
JavaScript
2459 lines
67 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* capability-registry.cjs — generated by scripts/gen-capability-registry.cjs
|
|
* DO NOT EDIT BY HAND. Run: node scripts/gen-capability-registry.cjs --write
|
|
* ADR-894 §5 — role-partitioned Capability Registry.
|
|
*/
|
|
|
|
const capabilities = {
|
|
"ai-integration": {
|
|
"id": "ai-integration",
|
|
"role": "feature",
|
|
"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": [],
|
|
"skills": [
|
|
"ai-integration-phase"
|
|
],
|
|
"agents": [
|
|
"gsd-framework-selector",
|
|
"gsd-ai-researcher",
|
|
"gsd-domain-researcher",
|
|
"gsd-eval-planner"
|
|
],
|
|
"hooks": [],
|
|
"config": {
|
|
"workflow.ai_integration_phase": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Prompt for an AI-SPEC design contract before planning phases that involve AI systems."
|
|
}
|
|
},
|
|
"steps": [
|
|
{
|
|
"point": "plan:pre",
|
|
"ref": {
|
|
"skill": "ai-integration-phase"
|
|
},
|
|
"produces": [
|
|
"AI-SPEC.md"
|
|
],
|
|
"consumes": [
|
|
"CONTEXT.md"
|
|
],
|
|
"when": "workflow.ai_integration_phase",
|
|
"onError": "skip"
|
|
}
|
|
],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"antigravity": {
|
|
"id": "antigravity",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home-nested",
|
|
"name": "antigravity",
|
|
"parent": ".gemini",
|
|
"env": [
|
|
"ANTIGRAVITY_CONFIG_DIR"
|
|
],
|
|
"probe": [
|
|
"antigravity",
|
|
"antigravity-ide",
|
|
"antigravity-cli"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToAntigravitySkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToAntigravitySkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "gemini",
|
|
"sandboxTier": "none",
|
|
"supportTier": 1,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"audit": {
|
|
"id": "audit",
|
|
"role": "feature",
|
|
"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": [],
|
|
"skills": [],
|
|
"agents": [],
|
|
"config": {},
|
|
"commands": [
|
|
{
|
|
"family": "audit-uat",
|
|
"module": "audit-command-router.cjs",
|
|
"router": "routeAuditUat"
|
|
},
|
|
{
|
|
"family": "audit-open",
|
|
"module": "audit-command-router.cjs",
|
|
"router": "routeAuditOpen"
|
|
}
|
|
],
|
|
"hooks": [],
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"augment": {
|
|
"id": "augment",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".augment",
|
|
"env": [
|
|
"AUGMENT_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToAugmentSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToAugmentSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"claude": {
|
|
"id": "claude",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".claude",
|
|
"env": [
|
|
"CLAUDE_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "agents",
|
|
"destSubpath": "agents",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 1,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": [
|
|
"SubagentStop",
|
|
"Stop",
|
|
"PreCompact",
|
|
"FileChanged"
|
|
]
|
|
}
|
|
},
|
|
"cline": {
|
|
"id": "cline",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".cline",
|
|
"env": [
|
|
"CLINE_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "markdown-dir",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClineSkill"
|
|
}
|
|
],
|
|
"local": []
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "cline-rules",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "cline-rules",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"codebuddy": {
|
|
"id": "codebuddy",
|
|
"role": "runtime",
|
|
"title": "CodeBuddy",
|
|
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
"tier": "core",
|
|
"requires": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".codebuddy",
|
|
"env": [
|
|
"CODEBUDDY_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodebuddyCommand"
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodebuddySkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodebuddyCommand"
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodebuddySkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"codex": {
|
|
"id": "codex",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".codex",
|
|
"env": [
|
|
"CODEX_HOME"
|
|
]
|
|
},
|
|
"configFormat": "toml",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodexSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodexSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "shell-var",
|
|
"hooksSurface": "codex-hooks-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "codex-agent-sandbox",
|
|
"supportTier": 1,
|
|
"installSurface": "codex-toml",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"copilot": {
|
|
"id": "copilot",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".copilot",
|
|
"env": [
|
|
"COPILOT_CONFIG_DIR",
|
|
"COPILOT_HOME"
|
|
]
|
|
},
|
|
"configFormat": "markdown",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCopilotSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCopilotSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "copilot-inline",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "copilot-instructions",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"cursor": {
|
|
"id": "cursor",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".cursor",
|
|
"env": [
|
|
"CURSOR_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToCursorSkill"
|
|
},
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCursorCommand"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToCursorSkill"
|
|
},
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCursorCommand"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "cursor-hooks-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "cursor-hooks-json",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"gemini": {
|
|
"id": "gemini",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".gemini",
|
|
"env": [
|
|
"GEMINI_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "gemini",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": [
|
|
"BeforeAgent",
|
|
"AfterAgent",
|
|
"BeforeModel"
|
|
]
|
|
}
|
|
},
|
|
"graphify": {
|
|
"id": "graphify",
|
|
"role": "feature",
|
|
"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": [],
|
|
"skills": [
|
|
"graphify"
|
|
],
|
|
"agents": [],
|
|
"config": {
|
|
"graphify.enabled": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Enable the graphify knowledge-graph command + skill."
|
|
}
|
|
},
|
|
"commands": [
|
|
{
|
|
"family": "graphify",
|
|
"module": "graphify-command-router.cjs",
|
|
"router": "routeGraphifyCommand"
|
|
}
|
|
],
|
|
"hooks": [],
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"hermes": {
|
|
"id": "hermes",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".hermes",
|
|
"env": [
|
|
"HERMES_HOME"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"intel": {
|
|
"id": "intel",
|
|
"role": "feature",
|
|
"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": [],
|
|
"skills": [],
|
|
"agents": [],
|
|
"config": {
|
|
"intel.enabled": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Enable the intel code-intelligence command."
|
|
}
|
|
},
|
|
"commands": [
|
|
{
|
|
"family": "intel",
|
|
"module": "intel-command-router.cjs",
|
|
"router": "routeIntelCommand"
|
|
}
|
|
],
|
|
"hooks": [],
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"kilo": {
|
|
"id": "kilo",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "xdg",
|
|
"name": "kilo",
|
|
"env": [
|
|
"KILO_CONFIG_DIR",
|
|
"KILO_CONFIG",
|
|
"XDG_CONFIG_HOME"
|
|
],
|
|
"skillsHome": {
|
|
"kind": "dot-home",
|
|
"name": ".kilo",
|
|
"env": []
|
|
}
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "command",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToKiloSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "command",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToKiloSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": "kilo",
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"kimi": {
|
|
"id": "kimi",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "generic-agents-root",
|
|
"name": "agents",
|
|
"env": [
|
|
"KIMI_CONFIG_DIR"
|
|
],
|
|
"probe": [
|
|
"~/.config/agents",
|
|
"~/.agents"
|
|
],
|
|
"probeExists": "skills"
|
|
},
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToKimiSkill"
|
|
},
|
|
{
|
|
"kind": "kimi-agents",
|
|
"destSubpath": "agents",
|
|
"prefix": "gsd",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
}
|
|
],
|
|
"local": []
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "profile-marker-only",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"opencode": {
|
|
"id": "opencode",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "xdg",
|
|
"name": "opencode",
|
|
"env": [
|
|
"OPENCODE_CONFIG_DIR",
|
|
"OPENCODE_CONFIG",
|
|
"XDG_CONFIG_HOME"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "command",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToOpencodeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "command",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToOpencodeSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": "opencode",
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"pattern-mapper": {
|
|
"id": "pattern-mapper",
|
|
"role": "feature",
|
|
"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"
|
|
],
|
|
"skills": [],
|
|
"agents": [
|
|
"gsd-pattern-mapper"
|
|
],
|
|
"hooks": [],
|
|
"config": {
|
|
"workflow.pattern_mapper": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Run the pattern mapper before planning when context or research is available."
|
|
}
|
|
},
|
|
"steps": [
|
|
{
|
|
"point": "plan:pre",
|
|
"ref": {
|
|
"agent": "gsd-pattern-mapper"
|
|
},
|
|
"fragment": {
|
|
"path": "fragments/plan-pre.md",
|
|
"inline": "<pattern_mapping_context>\n**Phase:** {phase_number} - {phase_name}\n**Phase directory:** {phase_dir}\n**Padded phase:** {padded_phase}\n\n<files_to_read>\n- {context_path} (USER DECISIONS from /gsd:discuss-phase)\n- {research_path} (Technical Research)\n</files_to_read>\n\n**Output file:** {phase_dir}/{padded_phase}-PATTERNS.md\n\nExtract the list of files to be created/modified from CONTEXT.md and RESEARCH.md. For each file, classify by role and data flow, find the closest existing analog in the codebase, extract concrete code excerpts, and produce PATTERNS.md.\n</pattern_mapping_context>\n"
|
|
},
|
|
"produces": [
|
|
"PATTERNS.md"
|
|
],
|
|
"consumes": [
|
|
"RESEARCH.md"
|
|
],
|
|
"when": "workflow.pattern_mapper",
|
|
"onError": "skip"
|
|
}
|
|
],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"qwen": {
|
|
"id": "qwen",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".qwen",
|
|
"env": [
|
|
"QWEN_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": [
|
|
"SubagentStop",
|
|
"Stop",
|
|
"PreCompact"
|
|
]
|
|
}
|
|
},
|
|
"research": {
|
|
"id": "research",
|
|
"role": "feature",
|
|
"title": "Phase research",
|
|
"description": "Optional phase research before planning; owns the phase researcher agent and workflow.research activation key.",
|
|
"tier": "standard",
|
|
"requires": [],
|
|
"skills": [],
|
|
"agents": [
|
|
"gsd-phase-researcher"
|
|
],
|
|
"hooks": [],
|
|
"config": {
|
|
"workflow.research": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Run phase research before planning when research artifacts are missing or explicitly refreshed."
|
|
}
|
|
},
|
|
"steps": [
|
|
{
|
|
"point": "plan:pre",
|
|
"ref": {
|
|
"agent": "gsd-phase-researcher"
|
|
},
|
|
"fragment": {
|
|
"path": "fragments/plan-pre.md",
|
|
"inline": "<objective>\nResearch how to implement Phase {phase_number}: {phase_name}\nAnswer: \"What do I need to know to PLAN this phase well?\"\n</objective>\n\n<files_to_read>\n- {context_path} (USER DECISIONS from /gsd:discuss-phase)\n- {requirements_path} (Project requirements)\n- {state_path} (Project decisions and history)\n</files_to_read>\n\n${AGENT_SKILLS_RESEARCHER}\n\n<additional_context>\n**Phase description:** {phase_description}\n**Phase requirement IDs (MUST address):** {phase_req_ids}\n\n**Project instructions:** Read ./CLAUDE.md or ./.claude/CLAUDE.md if either exists; follow project-specific guidelines.\n**Project skills:** Check .claude/skills/ or .agents/skills/ directory if either exists. Read SKILL.md files and account for project skill patterns.\n</additional_context>\n\n<output>\nWrite to: {phase_dir}/{phase_num}-RESEARCH.md\n</output>\n"
|
|
},
|
|
"produces": [
|
|
"RESEARCH.md"
|
|
],
|
|
"consumes": [
|
|
"CONTEXT.md"
|
|
],
|
|
"when": "workflow.research",
|
|
"onError": "skip"
|
|
}
|
|
],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"trae": {
|
|
"id": "trae",
|
|
"role": "runtime",
|
|
"title": "Trae IDE",
|
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
"tier": "core",
|
|
"requires": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".trae",
|
|
"env": [
|
|
"TRAE_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToTraeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToTraeSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "profile-marker-only",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"ui": {
|
|
"id": "ui",
|
|
"role": "feature",
|
|
"title": "UI design contracts",
|
|
"description": "UI-SPEC design contract + retrospective UI audit for frontend phases.",
|
|
"tier": "full",
|
|
"requires": [],
|
|
"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."
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
],
|
|
"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"
|
|
}
|
|
]
|
|
},
|
|
"windsurf": {
|
|
"id": "windsurf",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home-nested",
|
|
"name": "windsurf",
|
|
"parent": ".codeium",
|
|
"env": [
|
|
"WINDSURF_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToWindsurfSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToWindsurfSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "profile-marker-only",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
}
|
|
};
|
|
|
|
const bySkill = {
|
|
"ai-integration-phase": "ai-integration",
|
|
"graphify": "graphify",
|
|
"ui-phase": "ui",
|
|
"ui-review": "ui"
|
|
};
|
|
|
|
const byAgent = {
|
|
"gsd-framework-selector": "ai-integration",
|
|
"gsd-ai-researcher": "ai-integration",
|
|
"gsd-domain-researcher": "ai-integration",
|
|
"gsd-eval-planner": "ai-integration",
|
|
"gsd-pattern-mapper": "pattern-mapper",
|
|
"gsd-phase-researcher": "research",
|
|
"gsd-ui-checker": "ui",
|
|
"gsd-ui-auditor": "ui"
|
|
};
|
|
|
|
const byLoopPoint = {
|
|
"discuss:pre": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"discuss:post": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"plan:pre": {
|
|
"steps": [
|
|
{
|
|
"capId": "ai-integration",
|
|
"point": "plan:pre",
|
|
"ref": {
|
|
"skill": "ai-integration-phase"
|
|
},
|
|
"produces": [
|
|
"AI-SPEC.md"
|
|
],
|
|
"consumes": [
|
|
"CONTEXT.md"
|
|
],
|
|
"when": "workflow.ai_integration_phase",
|
|
"onError": "skip"
|
|
},
|
|
{
|
|
"capId": "research",
|
|
"point": "plan:pre",
|
|
"ref": {
|
|
"agent": "gsd-phase-researcher"
|
|
},
|
|
"fragment": {
|
|
"path": "fragments/plan-pre.md",
|
|
"inline": "<objective>\nResearch how to implement Phase {phase_number}: {phase_name}\nAnswer: \"What do I need to know to PLAN this phase well?\"\n</objective>\n\n<files_to_read>\n- {context_path} (USER DECISIONS from /gsd:discuss-phase)\n- {requirements_path} (Project requirements)\n- {state_path} (Project decisions and history)\n</files_to_read>\n\n${AGENT_SKILLS_RESEARCHER}\n\n<additional_context>\n**Phase description:** {phase_description}\n**Phase requirement IDs (MUST address):** {phase_req_ids}\n\n**Project instructions:** Read ./CLAUDE.md or ./.claude/CLAUDE.md if either exists; follow project-specific guidelines.\n**Project skills:** Check .claude/skills/ or .agents/skills/ directory if either exists. Read SKILL.md files and account for project skill patterns.\n</additional_context>\n\n<output>\nWrite to: {phase_dir}/{phase_num}-RESEARCH.md\n</output>\n"
|
|
},
|
|
"produces": [
|
|
"RESEARCH.md"
|
|
],
|
|
"consumes": [
|
|
"CONTEXT.md"
|
|
],
|
|
"when": "workflow.research",
|
|
"onError": "skip"
|
|
},
|
|
{
|
|
"capId": "ui",
|
|
"point": "plan:pre",
|
|
"ref": {
|
|
"skill": "ui-phase"
|
|
},
|
|
"produces": [
|
|
"UI-SPEC.md"
|
|
],
|
|
"consumes": [
|
|
"CONTEXT.md"
|
|
],
|
|
"when": "workflow.ui_phase",
|
|
"onError": "skip"
|
|
},
|
|
{
|
|
"capId": "pattern-mapper",
|
|
"point": "plan:pre",
|
|
"ref": {
|
|
"agent": "gsd-pattern-mapper"
|
|
},
|
|
"fragment": {
|
|
"path": "fragments/plan-pre.md",
|
|
"inline": "<pattern_mapping_context>\n**Phase:** {phase_number} - {phase_name}\n**Phase directory:** {phase_dir}\n**Padded phase:** {padded_phase}\n\n<files_to_read>\n- {context_path} (USER DECISIONS from /gsd:discuss-phase)\n- {research_path} (Technical Research)\n</files_to_read>\n\n**Output file:** {phase_dir}/{padded_phase}-PATTERNS.md\n\nExtract the list of files to be created/modified from CONTEXT.md and RESEARCH.md. For each file, classify by role and data flow, find the closest existing analog in the codebase, extract concrete code excerpts, and produce PATTERNS.md.\n</pattern_mapping_context>\n"
|
|
},
|
|
"produces": [
|
|
"PATTERNS.md"
|
|
],
|
|
"consumes": [
|
|
"RESEARCH.md"
|
|
],
|
|
"when": "workflow.pattern_mapper",
|
|
"onError": "skip"
|
|
}
|
|
],
|
|
"contributions": [],
|
|
"gates": [
|
|
{
|
|
"capId": "ui",
|
|
"point": "plan:pre",
|
|
"check": {
|
|
"query": "ui.plan-gate"
|
|
},
|
|
"when": "workflow.ui_safety_gate",
|
|
"blocking": true,
|
|
"onError": "halt"
|
|
}
|
|
]
|
|
},
|
|
"plan:post": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"execute:pre": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"execute:wave:pre": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"execute:wave:post": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": [
|
|
{
|
|
"capId": "ui",
|
|
"point": "execute:wave:post",
|
|
"check": {
|
|
"query": "ui.safety-gate"
|
|
},
|
|
"when": "workflow.ui_safety_gate",
|
|
"blocking": true,
|
|
"onError": "halt"
|
|
}
|
|
]
|
|
},
|
|
"execute:post": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"verify:pre": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"verify:post": {
|
|
"steps": [
|
|
{
|
|
"capId": "ui",
|
|
"point": "verify:post",
|
|
"ref": {
|
|
"skill": "ui-review"
|
|
},
|
|
"produces": [
|
|
"UI-REVIEW.md"
|
|
],
|
|
"consumes": [
|
|
"UI-SPEC.md"
|
|
],
|
|
"when": "workflow.ui_review",
|
|
"onError": "skip"
|
|
}
|
|
],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"ship:pre": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
},
|
|
"ship:post": {
|
|
"steps": [],
|
|
"contributions": [],
|
|
"gates": []
|
|
}
|
|
};
|
|
|
|
const configKeys = {
|
|
"workflow.ai_integration_phase": "ai-integration",
|
|
"graphify.enabled": "graphify",
|
|
"intel.enabled": "intel",
|
|
"workflow.pattern_mapper": "pattern-mapper",
|
|
"workflow.research": "research",
|
|
"workflow.ui_phase": "ui",
|
|
"workflow.ui_review": "ui",
|
|
"workflow.ui_safety_gate": "ui"
|
|
};
|
|
|
|
const configSchema = {
|
|
"workflow.ai_integration_phase": {
|
|
"owner": "ai-integration",
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Prompt for an AI-SPEC design contract before planning phases that involve AI systems."
|
|
},
|
|
"graphify.enabled": {
|
|
"owner": "graphify",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Enable the graphify knowledge-graph command + skill."
|
|
},
|
|
"intel.enabled": {
|
|
"owner": "intel",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Enable the intel code-intelligence command."
|
|
},
|
|
"workflow.pattern_mapper": {
|
|
"owner": "pattern-mapper",
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Run the pattern mapper before planning when context or research is available."
|
|
},
|
|
"workflow.research": {
|
|
"owner": "research",
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Run phase research before planning when research artifacts are missing or explicitly refreshed."
|
|
},
|
|
"workflow.ui_phase": {
|
|
"owner": "ui",
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Enable the UI design-contract gate during planning."
|
|
},
|
|
"workflow.ui_review": {
|
|
"owner": "ui",
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Enable the retrospective UI audit."
|
|
},
|
|
"workflow.ui_safety_gate": {
|
|
"owner": "ui",
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Block execution on unmet UI-SPEC contracts."
|
|
}
|
|
};
|
|
|
|
const runtimes = {
|
|
"antigravity": {
|
|
"id": "antigravity",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home-nested",
|
|
"name": "antigravity",
|
|
"parent": ".gemini",
|
|
"env": [
|
|
"ANTIGRAVITY_CONFIG_DIR"
|
|
],
|
|
"probe": [
|
|
"antigravity",
|
|
"antigravity-ide",
|
|
"antigravity-cli"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToAntigravitySkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToAntigravitySkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "gemini",
|
|
"sandboxTier": "none",
|
|
"supportTier": 1,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"augment": {
|
|
"id": "augment",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".augment",
|
|
"env": [
|
|
"AUGMENT_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToAugmentSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToAugmentSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"claude": {
|
|
"id": "claude",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".claude",
|
|
"env": [
|
|
"CLAUDE_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "agents",
|
|
"destSubpath": "agents",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 1,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": [
|
|
"SubagentStop",
|
|
"Stop",
|
|
"PreCompact",
|
|
"FileChanged"
|
|
]
|
|
}
|
|
},
|
|
"cline": {
|
|
"id": "cline",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".cline",
|
|
"env": [
|
|
"CLINE_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "markdown-dir",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClineSkill"
|
|
}
|
|
],
|
|
"local": []
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "cline-rules",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "cline-rules",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"codebuddy": {
|
|
"id": "codebuddy",
|
|
"role": "runtime",
|
|
"title": "CodeBuddy",
|
|
"description": "CodeBuddy (Tencent) — converted commands + skills artifact layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
|
"tier": "core",
|
|
"requires": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".codebuddy",
|
|
"env": [
|
|
"CODEBUDDY_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodebuddyCommand"
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodebuddySkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodebuddyCommand"
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodebuddySkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"codex": {
|
|
"id": "codex",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".codex",
|
|
"env": [
|
|
"CODEX_HOME"
|
|
]
|
|
},
|
|
"configFormat": "toml",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodexSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodexSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "shell-var",
|
|
"hooksSurface": "codex-hooks-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "codex-agent-sandbox",
|
|
"supportTier": 1,
|
|
"installSurface": "codex-toml",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"copilot": {
|
|
"id": "copilot",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".copilot",
|
|
"env": [
|
|
"COPILOT_CONFIG_DIR",
|
|
"COPILOT_HOME"
|
|
]
|
|
},
|
|
"configFormat": "markdown",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCopilotSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCopilotSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "copilot-inline",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "copilot-instructions",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"cursor": {
|
|
"id": "cursor",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".cursor",
|
|
"env": [
|
|
"CURSOR_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToCursorSkill"
|
|
},
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCursorCommand"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToCursorSkill"
|
|
},
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCursorCommand"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "cursor-hooks-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "cursor-hooks-json",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"gemini": {
|
|
"id": "gemini",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".gemini",
|
|
"env": [
|
|
"GEMINI_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "commands/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "gemini",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": [
|
|
"BeforeAgent",
|
|
"AfterAgent",
|
|
"BeforeModel"
|
|
]
|
|
}
|
|
},
|
|
"hermes": {
|
|
"id": "hermes",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".hermes",
|
|
"env": [
|
|
"HERMES_HOME"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills/gsd",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"kilo": {
|
|
"id": "kilo",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "xdg",
|
|
"name": "kilo",
|
|
"env": [
|
|
"KILO_CONFIG_DIR",
|
|
"KILO_CONFIG",
|
|
"XDG_CONFIG_HOME"
|
|
],
|
|
"skillsHome": {
|
|
"kind": "dot-home",
|
|
"name": ".kilo",
|
|
"env": []
|
|
}
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "command",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToKiloSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "command",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToKiloSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": "kilo",
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"kimi": {
|
|
"id": "kimi",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "generic-agents-root",
|
|
"name": "agents",
|
|
"env": [
|
|
"KIMI_CONFIG_DIR"
|
|
],
|
|
"probe": [
|
|
"~/.config/agents",
|
|
"~/.agents"
|
|
],
|
|
"probeExists": "skills"
|
|
},
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToKimiSkill"
|
|
},
|
|
{
|
|
"kind": "kimi-agents",
|
|
"destSubpath": "agents",
|
|
"prefix": "gsd",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
}
|
|
],
|
|
"local": []
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "profile-marker-only",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"opencode": {
|
|
"id": "opencode",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "xdg",
|
|
"name": "opencode",
|
|
"env": [
|
|
"OPENCODE_CONFIG_DIR",
|
|
"OPENCODE_CONFIG",
|
|
"XDG_CONFIG_HOME"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "command",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToOpencodeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "commands",
|
|
"destSubpath": "command",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": null
|
|
},
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": true,
|
|
"converter": "convertClaudeCommandToOpencodeSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": "opencode",
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"qwen": {
|
|
"id": "qwen",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".qwen",
|
|
"env": [
|
|
"QWEN_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "settings-json",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToClaudeSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "settings-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "settings-json",
|
|
"writesSharedSettings": true,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": [
|
|
"SubagentStop",
|
|
"Stop",
|
|
"PreCompact"
|
|
]
|
|
}
|
|
},
|
|
"trae": {
|
|
"id": "trae",
|
|
"role": "runtime",
|
|
"title": "Trae IDE",
|
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
"tier": "core",
|
|
"requires": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".trae",
|
|
"env": [
|
|
"TRAE_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToTraeSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToTraeSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "profile-marker-only",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
},
|
|
"windsurf": {
|
|
"id": "windsurf",
|
|
"role": "runtime",
|
|
"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": [],
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home-nested",
|
|
"name": "windsurf",
|
|
"parent": ".codeium",
|
|
"env": [
|
|
"WINDSURF_CONFIG_DIR"
|
|
]
|
|
},
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToWindsurfSkill"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToWindsurfSkill"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "profile-marker-only",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": []
|
|
}
|
|
}
|
|
};
|
|
|
|
const commandFamilies = {
|
|
"audit-open": {
|
|
"capId": "audit",
|
|
"module": "audit-command-router.cjs",
|
|
"router": "routeAuditOpen"
|
|
},
|
|
"audit-uat": {
|
|
"capId": "audit",
|
|
"module": "audit-command-router.cjs",
|
|
"router": "routeAuditUat"
|
|
},
|
|
"graphify": {
|
|
"capId": "graphify",
|
|
"module": "graphify-command-router.cjs",
|
|
"router": "routeGraphifyCommand"
|
|
},
|
|
"intel": {
|
|
"capId": "intel",
|
|
"module": "intel-command-router.cjs",
|
|
"router": "routeIntelCommand"
|
|
}
|
|
};
|
|
|
|
const capabilityClusters = {
|
|
"ai-integration": [
|
|
"ai-integration-phase"
|
|
],
|
|
"graphify": [
|
|
"graphify"
|
|
],
|
|
"ui": [
|
|
"ui-phase",
|
|
"ui-review"
|
|
]
|
|
};
|
|
|
|
const profileMembership = {
|
|
"ai-integration": {
|
|
"tier": "full",
|
|
"profiles": [
|
|
"full"
|
|
]
|
|
},
|
|
"graphify": {
|
|
"tier": "full",
|
|
"profiles": [
|
|
"full"
|
|
]
|
|
},
|
|
"ui": {
|
|
"tier": "full",
|
|
"profiles": [
|
|
"full"
|
|
]
|
|
}
|
|
};
|
|
|
|
const _requiresGraph = {
|
|
"ai-integration": [],
|
|
"antigravity": [],
|
|
"audit": [],
|
|
"augment": [],
|
|
"claude": [],
|
|
"cline": [],
|
|
"codebuddy": [],
|
|
"codex": [],
|
|
"copilot": [],
|
|
"cursor": [],
|
|
"gemini": [],
|
|
"graphify": [],
|
|
"hermes": [],
|
|
"intel": [],
|
|
"kilo": [],
|
|
"kimi": [],
|
|
"opencode": [],
|
|
"pattern-mapper": [
|
|
"research"
|
|
],
|
|
"qwen": [],
|
|
"research": [],
|
|
"trae": [],
|
|
"ui": [],
|
|
"windsurf": []
|
|
};
|
|
|
|
function requiresClosure(id) {
|
|
const visited = new Set();
|
|
const queue = [id];
|
|
while (queue.length > 0) {
|
|
const current = queue.shift();
|
|
const reqs = _requiresGraph[current] || [];
|
|
for (const req of reqs) {
|
|
if (!visited.has(req)) {
|
|
visited.add(req);
|
|
queue.push(req);
|
|
}
|
|
}
|
|
}
|
|
return visited;
|
|
}
|
|
|
|
module.exports = {
|
|
version: '1',
|
|
capabilities,
|
|
bySkill,
|
|
byAgent,
|
|
byLoopPoint,
|
|
configKeys,
|
|
configSchema,
|
|
runtimes,
|
|
commandFamilies,
|
|
capabilityClusters,
|
|
profileMembership,
|
|
requiresClosure,
|
|
};
|