'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": [] } }, "code-review": { "id": "code-review", "role": "feature", "title": "Code review", "description": "Source-file code review and review-fix workflow support for completed execution work.", "tier": "full", "requires": [], "skills": [ "code-review" ], "agents": [ "gsd-code-reviewer", "gsd-code-fixer" ], "hooks": [], "config": { "workflow.code_review": { "type": "boolean", "default": true, "description": "Enable code-review participation in post-execution review flows." }, "workflow.code_review_depth": { "type": "enum", "values": [ "quick", "standard", "deep" ], "default": "standard", "description": "Default depth for code review when no --depth override is supplied." } }, "steps": [ { "point": "execute:post", "ref": { "skill": "code-review" }, "produces": [ "REVIEW.md" ], "consumes": [ "SUMMARY.md" ], "when": "workflow.code_review", "onError": "skip" } ], "contributions": [], "gates": [] }, "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": [] } }, "nyquist": { "id": "nyquist", "role": "feature", "title": "Nyquist validation", "description": "Validation coverage audit that maps executed work back to tests and manual-only evidence.", "tier": "full", "requires": [], "skills": [ "validate-phase" ], "agents": [ "gsd-nyquist-auditor" ], "hooks": [], "config": { "workflow.nyquist_validation": { "type": "boolean", "default": true, "description": "Enable Nyquist validation coverage auditing." } }, "steps": [ { "point": "verify:post", "ref": { "skill": "validate-phase" }, "produces": [ "VALIDATION.md" ], "consumes": [ "SUMMARY.md" ], "when": "workflow.nyquist_validation", "onError": "halt" } ], "contributions": [], "gates": [] }, "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": "\n**Phase:** {phase_number} - {phase_name}\n**Phase directory:** {phase_dir}\n**Padded phase:** {padded_phase}\n\n\n- {context_path} (USER DECISIONS from /gsd:discuss-phase)\n- {research_path} (Technical Research)\n\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\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": "\nResearch how to implement Phase {phase_number}: {phase_name}\nAnswer: \"What do I need to know to PLAN this phase well?\"\n\n\n\n- {context_path} (USER DECISIONS from /gsd:discuss-phase)\n- {requirements_path} (Project requirements)\n- {state_path} (Project decisions and history)\n\n\n${AGENT_SKILLS_RESEARCHER}\n\n\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\n\n\nWrite to: {phase_dir}/{phase_num}-RESEARCH.md\n\n" }, "produces": [ "RESEARCH.md" ], "consumes": [ "CONTEXT.md" ], "when": "workflow.research", "onError": "skip" } ], "contributions": [], "gates": [] }, "security": { "id": "security", "role": "feature", "title": "Security enforcement", "description": "Threat mitigation verification and ship-time security blocking for phases with security enforcement enabled.", "tier": "full", "requires": [], "skills": [ "secure-phase" ], "agents": [ "gsd-security-auditor" ], "hooks": [], "config": { "workflow.security_enforcement": { "type": "boolean", "default": true, "description": "Enable security threat-mitigation verification before phase advancement." }, "workflow.security_asvs_level": { "type": "number", "default": 1, "description": "OWASP ASVS level used by security review guidance." }, "workflow.security_block_on": { "type": "enum", "values": [ "critical", "high", "medium", "low", "none" ], "default": "high", "description": "Minimum open threat severity that blocks advancement." } }, "steps": [ { "point": "verify:post", "ref": { "skill": "secure-phase" }, "produces": [ "SECURITY.md" ], "consumes": [ "SUMMARY.md" ], "when": "workflow.security_enforcement", "onError": "halt" } ], "contributions": [ { "point": "plan:pre", "into": "planner", "fragment": { "inline": "Each PLAN.md must include a block when security enforcement is active. Use the configured ASVS level and blocking threshold from workflow.security_asvs_level and workflow.security_block_on." }, "produces": [], "consumes": [ "CONTEXT.md" ], "when": "workflow.security_enforcement" } ], "gates": [ { "point": "ship:pre", "check": { "predicate": { "kind": "artifact-frontmatter-equals", "artifact": "SECURITY.md", "field": "threats_open", "equals": 0 } }, "when": "workflow.security_enforcement", "blocking": true, "onError": "halt" } ] }, "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", "code-review": "code-review", "graphify": "graphify", "validate-phase": "nyquist", "secure-phase": "security", "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-code-reviewer": "code-review", "gsd-code-fixer": "code-review", "gsd-nyquist-auditor": "nyquist", "gsd-pattern-mapper": "pattern-mapper", "gsd-phase-researcher": "research", "gsd-security-auditor": "security", "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": "\nResearch how to implement Phase {phase_number}: {phase_name}\nAnswer: \"What do I need to know to PLAN this phase well?\"\n\n\n\n- {context_path} (USER DECISIONS from /gsd:discuss-phase)\n- {requirements_path} (Project requirements)\n- {state_path} (Project decisions and history)\n\n\n${AGENT_SKILLS_RESEARCHER}\n\n\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\n\n\nWrite to: {phase_dir}/{phase_num}-RESEARCH.md\n\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": "\n**Phase:** {phase_number} - {phase_name}\n**Phase directory:** {phase_dir}\n**Padded phase:** {padded_phase}\n\n\n- {context_path} (USER DECISIONS from /gsd:discuss-phase)\n- {research_path} (Technical Research)\n\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\n" }, "produces": [ "PATTERNS.md" ], "consumes": [ "RESEARCH.md" ], "when": "workflow.pattern_mapper", "onError": "skip" } ], "contributions": [ { "capId": "security", "point": "plan:pre", "into": "planner", "fragment": { "inline": "Each PLAN.md must include a block when security enforcement is active. Use the configured ASVS level and blocking threshold from workflow.security_asvs_level and workflow.security_block_on." }, "produces": [], "consumes": [ "CONTEXT.md" ], "when": "workflow.security_enforcement" } ], "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": [ { "capId": "code-review", "point": "execute:post", "ref": { "skill": "code-review" }, "produces": [ "REVIEW.md" ], "consumes": [ "SUMMARY.md" ], "when": "workflow.code_review", "onError": "skip" } ], "contributions": [], "gates": [] }, "verify:pre": { "steps": [], "contributions": [], "gates": [] }, "verify:post": { "steps": [ { "capId": "nyquist", "point": "verify:post", "ref": { "skill": "validate-phase" }, "produces": [ "VALIDATION.md" ], "consumes": [ "SUMMARY.md" ], "when": "workflow.nyquist_validation", "onError": "halt" }, { "capId": "security", "point": "verify:post", "ref": { "skill": "secure-phase" }, "produces": [ "SECURITY.md" ], "consumes": [ "SUMMARY.md" ], "when": "workflow.security_enforcement", "onError": "halt" }, { "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": [ { "capId": "security", "point": "ship:pre", "check": { "predicate": { "kind": "artifact-frontmatter-equals", "artifact": "SECURITY.md", "field": "threats_open", "equals": 0 } }, "when": "workflow.security_enforcement", "blocking": true, "onError": "halt" } ] }, "ship:post": { "steps": [], "contributions": [], "gates": [] } }; const configKeys = { "workflow.ai_integration_phase": "ai-integration", "workflow.code_review": "code-review", "workflow.code_review_depth": "code-review", "graphify.enabled": "graphify", "intel.enabled": "intel", "workflow.nyquist_validation": "nyquist", "workflow.pattern_mapper": "pattern-mapper", "workflow.research": "research", "workflow.security_enforcement": "security", "workflow.security_asvs_level": "security", "workflow.security_block_on": "security", "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." }, "workflow.code_review": { "owner": "code-review", "type": "boolean", "default": true, "description": "Enable code-review participation in post-execution review flows." }, "workflow.code_review_depth": { "owner": "code-review", "type": "enum", "default": "standard", "description": "Default depth for code review when no --depth override is supplied.", "values": [ "quick", "standard", "deep" ] }, "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.nyquist_validation": { "owner": "nyquist", "type": "boolean", "default": true, "description": "Enable Nyquist validation coverage auditing." }, "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.security_enforcement": { "owner": "security", "type": "boolean", "default": true, "description": "Enable security threat-mitigation verification before phase advancement." }, "workflow.security_asvs_level": { "owner": "security", "type": "number", "default": 1, "description": "OWASP ASVS level used by security review guidance." }, "workflow.security_block_on": { "owner": "security", "type": "enum", "default": "high", "description": "Minimum open threat severity that blocks advancement.", "values": [ "critical", "high", "medium", "low", "none" ] }, "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" ], "code-review": [ "code-review" ], "graphify": [ "graphify" ], "nyquist": [ "validate-phase" ], "security": [ "secure-phase" ], "ui": [ "ui-phase", "ui-review" ] }; const profileMembership = { "ai-integration": { "tier": "full", "profiles": [ "full" ] }, "code-review": { "tier": "full", "profiles": [ "full" ] }, "graphify": { "tier": "full", "profiles": [ "full" ] }, "nyquist": { "tier": "full", "profiles": [ "full" ] }, "security": { "tier": "full", "profiles": [ "full" ] }, "ui": { "tier": "full", "profiles": [ "full" ] } }; const _requiresGraph = { "ai-integration": [], "antigravity": [], "audit": [], "augment": [], "claude": [], "cline": [], "code-review": [], "codebuddy": [], "codex": [], "copilot": [], "cursor": [], "gemini": [], "graphify": [], "hermes": [], "intel": [], "kilo": [], "kimi": [], "nyquist": [], "opencode": [], "pattern-mapper": [ "research" ], "qwen": [], "research": [], "security": [], "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, };