ADR-1239 Phase B (parent #1679). getDirName was a hand-maintained 15-branch if-chain mapping each runtime to its local content-rewrite dot-dir. Relocate those values into a documented runtime.localConfigDir descriptor field; derive getDirName from registry.runtimes[id].runtime.localConfigDir (fallback .claude). - 16 capability.json gain runtime.localConfigDir (byte-identical values) - capability-validator.cjs requires it (non-empty dot-dir); registry regenerated - docs/reference/capability-manifest.md documents the field + the three divergent values (copilot=.github, antigravity=.agents, kimi=.kimi-code) - drift-guard test: golden value map + key-set equality both ways Byte-identical install output for all 16 runtimes (golden-parity harness #1730). Closes #1756 Co-authored-by: review-bot <review-bot@gsd> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
81 lines
2.2 KiB
JSON
81 lines
2.2 KiB
JSON
{
|
|
"id": "cursor",
|
|
"role": "runtime",
|
|
"version": "1.6.0",
|
|
"title": "Cursor",
|
|
"description": "Cursor IDE — skills + converted commands artifact layout; hooks.json surface; Claude hook event dialect; recursive skill loader (flat nesting); tier-2 support.",
|
|
"tier": "core",
|
|
"requires": [],
|
|
"engines": {
|
|
"gsd": ">=1.6.0"
|
|
},
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".cursor",
|
|
"env": [
|
|
"CURSOR_CONFIG_DIR"
|
|
]
|
|
},
|
|
"localConfigDir": ".cursor",
|
|
"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": [],
|
|
"hostIntegration": {
|
|
"embeddingMode": "imperative",
|
|
"commandSurface": "slash-file",
|
|
"dispatch": { "namedDispatch": true, "nested": true, "maxDepth": 2, "background": true, "subagentToolkit": "full", "backgroundDispatch": true },
|
|
"modelMode": "passive",
|
|
"hookBus": "host",
|
|
"stateIO": "filesystem",
|
|
"transport": "mcp",
|
|
"runtime": "node"
|
|
}
|
|
}
|
|
}
|