specky-sdd 3.7.2 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/.apm/agents/{design-architect.agent.md → specky-design-architect.agent.md} +2 -2
  2. package/.apm/agents/{implementer.agent.md → specky-implementer.agent.md} +2 -2
  3. package/.apm/agents/specky-onboarding.agent.md +1 -1
  4. package/.apm/agents/specky-orchestrator.agent.md +10 -10
  5. package/.apm/agents/{quality-reviewer.agent.md → specky-quality-reviewer.agent.md} +2 -2
  6. package/.apm/agents/{release-engineer.agent.md → specky-release-engineer.agent.md} +4 -4
  7. package/.apm/agents/{requirements-engineer.agent.md → specky-requirements-engineer.agent.md} +2 -2
  8. package/.apm/agents/{research-analyst.agent.md → specky-research-analyst.agent.md} +2 -2
  9. package/.apm/agents/{sdd-clarify.agent.md → specky-sdd-clarify.agent.md} +2 -2
  10. package/.apm/agents/{sdd-init.agent.md → specky-sdd-init.agent.md} +3 -3
  11. package/.apm/agents/{spec-engineer.agent.md → specky-spec-engineer.agent.md} +2 -2
  12. package/.apm/agents/{task-planner.agent.md → specky-task-planner.agent.md} +2 -2
  13. package/.apm/agents/{test-verifier.agent.md → specky-test-verifier.agent.md} +2 -2
  14. package/.apm/hooks/scripts/{artifact-validator.sh → specky-artifact-validator.sh} +11 -11
  15. package/.apm/hooks/scripts/{auto-checkpoint.sh → specky-auto-checkpoint.sh} +1 -1
  16. package/.apm/hooks/scripts/{branch-validator.sh → specky-branch-validator.sh} +3 -3
  17. package/.apm/hooks/scripts/{cognitive-debt-alert.sh → specky-cognitive-debt-alert.sh} +1 -1
  18. package/.apm/hooks/scripts/{drift-monitor.sh → specky-drift-monitor.sh} +1 -1
  19. package/.apm/hooks/scripts/{ears-validator.sh → specky-ears-validator.sh} +1 -1
  20. package/.apm/hooks/scripts/{lgtm-gate.sh → specky-lgtm-gate.sh} +1 -1
  21. package/.apm/hooks/scripts/{metrics-dashboard.sh → specky-metrics-dashboard.sh} +2 -2
  22. package/.apm/hooks/scripts/{phase-gate.sh → specky-phase-gate.sh} +1 -1
  23. package/.apm/hooks/scripts/{pipeline-guard.sh → specky-pipeline-guard.sh} +3 -3
  24. package/.apm/hooks/scripts/{release-gate.sh → specky-release-gate.sh} +1 -1
  25. package/.apm/hooks/scripts/{security-scan.sh → specky-security-scan.sh} +2 -2
  26. package/.apm/hooks/scripts/{session-banner.sh → specky-session-banner.sh} +4 -4
  27. package/.apm/hooks/scripts/{spec-quality.sh → specky-spec-quality.sh} +1 -1
  28. package/.apm/hooks/scripts/{spec-sync.sh → specky-spec-sync.sh} +2 -2
  29. package/.apm/hooks/scripts/{task-tracer.sh → specky-task-tracer.sh} +1 -1
  30. package/.apm/hooks/sdd-hooks.json +51 -51
  31. package/.apm/instructions/copilot-instructions.instructions.md +17 -17
  32. package/.apm/prompts/specky-api.prompt.md +2 -2
  33. package/.apm/prompts/specky-brownfield.prompt.md +2 -2
  34. package/.apm/prompts/specky-clarify.prompt.md +1 -1
  35. package/.apm/prompts/specky-debug-hook.prompt.md +1 -1
  36. package/.apm/prompts/specky-deploy.prompt.md +1 -1
  37. package/.apm/prompts/specky-design.prompt.md +1 -1
  38. package/.apm/prompts/specky-from-meeting.prompt.md +1 -1
  39. package/.apm/prompts/specky-greenfield.prompt.md +2 -2
  40. package/.apm/prompts/specky-implement.prompt.md +1 -1
  41. package/.apm/prompts/specky-migration.prompt.md +3 -3
  42. package/.apm/prompts/specky-release.prompt.md +1 -1
  43. package/.apm/prompts/specky-research.prompt.md +1 -1
  44. package/.apm/prompts/specky-specify.prompt.md +1 -1
  45. package/.apm/prompts/specky-tasks.prompt.md +1 -1
  46. package/.apm/prompts/specky-verify.prompt.md +1 -1
  47. package/.apm/skills/{implementer → specky-implementer}/SKILL.md +3 -3
  48. package/.apm/skills/specky-onboarding/SKILL.md +29 -29
  49. package/.apm/skills/specky-orchestrator/SKILL.md +28 -28
  50. package/.apm/skills/{release-engineer → specky-release-engineer}/SKILL.md +7 -7
  51. package/.apm/skills/{research-analyst → specky-research-analyst}/SKILL.md +2 -2
  52. package/.apm/skills/{sdd-markdown-standard → specky-sdd-markdown-standard}/SKILL.md +2 -2
  53. package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/SKILL.md +30 -30
  54. package/.apm/skills/{test-verifier → specky-test-verifier}/SKILL.md +2 -2
  55. package/CHANGELOG.md +76 -0
  56. package/README.md +24 -17
  57. package/apm-policy.yml +53 -0
  58. package/apm.lock.yaml +71 -0
  59. package/apm.yml +32 -2
  60. package/config.yml +31 -31
  61. package/dist/claude-hooks.json +51 -51
  62. package/dist/cli/commands/apm.d.ts +2 -0
  63. package/dist/cli/commands/apm.d.ts.map +1 -0
  64. package/dist/cli/commands/apm.js +139 -0
  65. package/dist/cli/commands/apm.js.map +1 -0
  66. package/dist/cli/commands/compile.d.ts +7 -0
  67. package/dist/cli/commands/compile.d.ts.map +1 -0
  68. package/dist/cli/commands/compile.js +106 -0
  69. package/dist/cli/commands/compile.js.map +1 -0
  70. package/dist/cli/commands/doctor.d.ts.map +1 -1
  71. package/dist/cli/commands/doctor.js +35 -13
  72. package/dist/cli/commands/doctor.js.map +1 -1
  73. package/dist/cli/commands/init.d.ts +1 -0
  74. package/dist/cli/commands/init.d.ts.map +1 -1
  75. package/dist/cli/commands/init.js +114 -15
  76. package/dist/cli/commands/init.js.map +1 -1
  77. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  78. package/dist/cli/commands/upgrade.js +5 -2
  79. package/dist/cli/commands/upgrade.js.map +1 -1
  80. package/dist/cli/index.js +30 -2
  81. package/dist/cli/index.js.map +1 -1
  82. package/dist/cli/lib/apm/lock.d.ts +23 -0
  83. package/dist/cli/lib/apm/lock.d.ts.map +1 -0
  84. package/dist/cli/lib/apm/lock.js +90 -0
  85. package/dist/cli/lib/apm/lock.js.map +1 -0
  86. package/dist/cli/lib/apm/manifest.d.ts +31 -0
  87. package/dist/cli/lib/apm/manifest.d.ts.map +1 -0
  88. package/dist/cli/lib/apm/manifest.js +65 -0
  89. package/dist/cli/lib/apm/manifest.js.map +1 -0
  90. package/dist/cli/lib/apm/policy.d.ts +23 -0
  91. package/dist/cli/lib/apm/policy.d.ts.map +1 -0
  92. package/dist/cli/lib/apm/policy.js +99 -0
  93. package/dist/cli/lib/apm/policy.js.map +1 -0
  94. package/dist/cli/lib/asset-copier.d.ts +13 -0
  95. package/dist/cli/lib/asset-copier.d.ts.map +1 -1
  96. package/dist/cli/lib/asset-copier.js +46 -126
  97. package/dist/cli/lib/asset-copier.js.map +1 -1
  98. package/dist/cli/lib/gitignore-writer.d.ts.map +1 -1
  99. package/dist/cli/lib/gitignore-writer.js +10 -0
  100. package/dist/cli/lib/gitignore-writer.js.map +1 -1
  101. package/dist/cli/lib/harness/compilers/agent-skills.d.ts +7 -0
  102. package/dist/cli/lib/harness/compilers/agent-skills.d.ts.map +1 -0
  103. package/dist/cli/lib/harness/compilers/agent-skills.js +23 -0
  104. package/dist/cli/lib/harness/compilers/agent-skills.js.map +1 -0
  105. package/dist/cli/lib/harness/compilers/claude.d.ts +10 -0
  106. package/dist/cli/lib/harness/compilers/claude.d.ts.map +1 -0
  107. package/dist/cli/lib/harness/compilers/claude.js +29 -0
  108. package/dist/cli/lib/harness/compilers/claude.js.map +1 -0
  109. package/dist/cli/lib/harness/compilers/common.d.ts +14 -0
  110. package/dist/cli/lib/harness/compilers/common.d.ts.map +1 -0
  111. package/dist/cli/lib/harness/compilers/common.js +43 -0
  112. package/dist/cli/lib/harness/compilers/common.js.map +1 -0
  113. package/dist/cli/lib/harness/compilers/copilot.d.ts +10 -0
  114. package/dist/cli/lib/harness/compilers/copilot.d.ts.map +1 -0
  115. package/dist/cli/lib/harness/compilers/copilot.js +32 -0
  116. package/dist/cli/lib/harness/compilers/copilot.js.map +1 -0
  117. package/dist/cli/lib/harness/compilers/cursor.d.ts +8 -0
  118. package/dist/cli/lib/harness/compilers/cursor.d.ts.map +1 -0
  119. package/dist/cli/lib/harness/compilers/cursor.js +27 -0
  120. package/dist/cli/lib/harness/compilers/cursor.js.map +1 -0
  121. package/dist/cli/lib/harness/compilers/opencode.d.ts +7 -0
  122. package/dist/cli/lib/harness/compilers/opencode.d.ts.map +1 -0
  123. package/dist/cli/lib/harness/compilers/opencode.js +26 -0
  124. package/dist/cli/lib/harness/compilers/opencode.js.map +1 -0
  125. package/dist/cli/lib/harness/index.d.ts +12 -0
  126. package/dist/cli/lib/harness/index.d.ts.map +1 -0
  127. package/dist/cli/lib/harness/index.js +24 -0
  128. package/dist/cli/lib/harness/index.js.map +1 -0
  129. package/dist/cli/lib/harness/tool-map.d.ts +15 -0
  130. package/dist/cli/lib/harness/tool-map.d.ts.map +1 -0
  131. package/dist/cli/lib/harness/tool-map.js +114 -0
  132. package/dist/cli/lib/harness/tool-map.js.map +1 -0
  133. package/dist/cli/lib/harness/types.d.ts +42 -0
  134. package/dist/cli/lib/harness/types.d.ts.map +1 -0
  135. package/dist/cli/lib/harness/types.js +12 -0
  136. package/dist/cli/lib/harness/types.js.map +1 -0
  137. package/dist/cli/lib/mcp-writer.d.ts +1 -0
  138. package/dist/cli/lib/mcp-writer.d.ts.map +1 -1
  139. package/dist/cli/lib/mcp-writer.js +5 -1
  140. package/dist/cli/lib/mcp-writer.js.map +1 -1
  141. package/dist/cli/lib/paths.d.ts +16 -0
  142. package/dist/cli/lib/paths.d.ts.map +1 -1
  143. package/dist/cli/lib/paths.js +18 -0
  144. package/dist/cli/lib/paths.js.map +1 -1
  145. package/dist/copilot-hooks.json +46 -46
  146. package/dist/services/state-machine.d.ts +4 -3
  147. package/dist/services/state-machine.d.ts.map +1 -1
  148. package/dist/services/state-machine.js +17 -9
  149. package/dist/services/state-machine.js.map +1 -1
  150. package/package.json +6 -4
  151. /package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/references/ears-notation.md +0 -0
  152. /package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/references/model-routing.md +0 -0
@@ -0,0 +1,24 @@
1
+ /**
2
+ * harness/index.ts — the harness compiler registry.
3
+ *
4
+ * `getCompiler(target)` returns the compiler that renders Specky's canonical
5
+ * `.apm` primitives into a harness's native form. Register new harnesses here.
6
+ */
7
+ import { copilotCompiler } from "./compilers/copilot.js";
8
+ import { claudeCompiler } from "./compilers/claude.js";
9
+ import { cursorCompiler } from "./compilers/cursor.js";
10
+ import { opencodeCompiler } from "./compilers/opencode.js";
11
+ import { agentSkillsCompiler } from "./compilers/agent-skills.js";
12
+ const COMPILERS = {
13
+ copilot: copilotCompiler,
14
+ claude: claudeCompiler,
15
+ cursor: cursorCompiler,
16
+ opencode: opencodeCompiler,
17
+ "agent-skills": agentSkillsCompiler,
18
+ };
19
+ export function getCompiler(target) {
20
+ return COMPILERS[target];
21
+ }
22
+ export const SUPPORTED_TARGETS = Object.keys(COMPILERS);
23
+ export { mapTool, normalizeToLogical, logicalToNative } from "./tool-map.js";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/lib/harness/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,SAAS,GAA2C;IACtD,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,gBAAgB;IAC1B,cAAc,EAAE,mBAAmB;CACtC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,MAAqB;IAC7C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAoB,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * harness/tool-map.ts — logical↔native tool vocabulary.
3
+ *
4
+ * A single source of truth for how Specky's canonical tool ids map to each
5
+ * harness's native tool tokens. Copilot and Claude outputs produced here are
6
+ * byte-for-byte identical to the legacy inline transforms in asset-copier.ts.
7
+ */
8
+ import type { HarnessTarget, LogicalTool } from "./types.js";
9
+ /** Fold any known native/source token into a canonical logical tool id. */
10
+ export declare function normalizeToLogical(token: string): LogicalTool;
11
+ /** Render a logical tool id into the native token(s) for a harness. */
12
+ export declare function logicalToNative(logical: LogicalTool, target: HarnessTarget): string[];
13
+ /** Map a single source/native token to the native token(s) for a harness. */
14
+ export declare function mapTool(token: string, target: HarnessTarget): string[];
15
+ //# sourceMappingURL=tool-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-map.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/harness/tool-map.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK7D,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAsC7D;AA0DD,uEAAuE;AACvE,wBAAgB,eAAe,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,aAAa,GACtB,MAAM,EAAE,CAQV;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAEtE"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * harness/tool-map.ts — logical↔native tool vocabulary.
3
+ *
4
+ * A single source of truth for how Specky's canonical tool ids map to each
5
+ * harness's native tool tokens. Copilot and Claude outputs produced here are
6
+ * byte-for-byte identical to the legacy inline transforms in asset-copier.ts.
7
+ */
8
+ const MCP_PREFIX = "mcp.specky.";
9
+ const RAW_PREFIX = "raw:";
10
+ /** Fold any known native/source token into a canonical logical tool id. */
11
+ export function normalizeToLogical(token) {
12
+ if (token.startsWith("specky/")) {
13
+ return `${MCP_PREFIX}${token.slice("specky/".length)}`;
14
+ }
15
+ if (token.startsWith("mcp__specky__")) {
16
+ return `${MCP_PREFIX}${token.slice("mcp__specky__".length)}`;
17
+ }
18
+ if (token.startsWith("sdd_")) {
19
+ return `${MCP_PREFIX}${token}`;
20
+ }
21
+ switch (token) {
22
+ case "Read":
23
+ case "Glob":
24
+ case "Grep":
25
+ case "search":
26
+ return "workspace.search";
27
+ case "Edit":
28
+ case "Write":
29
+ case "MultiEdit":
30
+ case "edit":
31
+ return "workspace.edit";
32
+ case "Bash":
33
+ case "runCommands":
34
+ return "workspace.command";
35
+ case "WebFetch":
36
+ case "WebSearch":
37
+ case "fetch":
38
+ return "web.fetch";
39
+ case "Task":
40
+ case "agent":
41
+ return "agent.delegate";
42
+ case "TodoWrite":
43
+ case "todos":
44
+ return "todo.write";
45
+ default:
46
+ return `${RAW_PREFIX}${token}`;
47
+ }
48
+ }
49
+ const NATIVE = {
50
+ "workspace.search": {
51
+ copilot: ["search"],
52
+ claude: ["Read", "Glob", "Grep"],
53
+ cursor: ["Read", "Glob", "Grep"],
54
+ opencode: ["read"],
55
+ "agent-skills": ["workspace.search"],
56
+ },
57
+ "workspace.edit": {
58
+ copilot: ["edit"],
59
+ claude: ["Edit", "Write"],
60
+ cursor: ["Edit", "Write"],
61
+ opencode: ["edit"],
62
+ "agent-skills": ["workspace.edit"],
63
+ },
64
+ "workspace.command": {
65
+ copilot: ["runCommands"],
66
+ claude: ["Bash"],
67
+ cursor: ["Bash"],
68
+ opencode: ["bash"],
69
+ "agent-skills": ["workspace.command"],
70
+ },
71
+ "web.fetch": {
72
+ copilot: ["fetch"],
73
+ claude: ["WebFetch", "WebSearch"],
74
+ cursor: ["WebFetch", "WebSearch"],
75
+ opencode: ["fetch"],
76
+ "agent-skills": ["web.fetch"],
77
+ },
78
+ "agent.delegate": {
79
+ copilot: ["agent"],
80
+ claude: ["Task"],
81
+ cursor: ["Task"],
82
+ opencode: ["agent"],
83
+ "agent-skills": ["agent.delegate"],
84
+ },
85
+ "todo.write": {
86
+ copilot: ["todos"],
87
+ claude: ["TodoWrite"],
88
+ cursor: ["TodoWrite"],
89
+ opencode: ["todo"],
90
+ "agent-skills": ["todo.write"],
91
+ },
92
+ };
93
+ function speckyMcpToken(tool, target) {
94
+ if (target === "claude" || target === "cursor")
95
+ return `mcp__specky__${tool}`;
96
+ if (target === "agent-skills")
97
+ return tool;
98
+ return `specky/${tool}`;
99
+ }
100
+ /** Render a logical tool id into the native token(s) for a harness. */
101
+ export function logicalToNative(logical, target) {
102
+ if (logical.startsWith(MCP_PREFIX)) {
103
+ return [speckyMcpToken(logical.slice(MCP_PREFIX.length), target)];
104
+ }
105
+ if (logical.startsWith(RAW_PREFIX)) {
106
+ return [logical.slice(RAW_PREFIX.length)];
107
+ }
108
+ return NATIVE[logical][target];
109
+ }
110
+ /** Map a single source/native token to the native token(s) for a harness. */
111
+ export function mapTool(token, target) {
112
+ return logicalToNative(normalizeToLogical(token), target);
113
+ }
114
+ //# sourceMappingURL=tool-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-map.js","sourceRoot":"","sources":["../../../../src/cli/lib/harness/tool-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * harness/types.ts — Primitive Intermediate Representation (IR) and the
3
+ * per-harness compiler contract.
4
+ *
5
+ * Specky keeps a single canonical primitive source in `.apm/`. Each supported
6
+ * agent harness (GitHub Copilot, Claude Code, and future targets) has a
7
+ * compiler that renders those primitives into that harness's native file
8
+ * layout and tool vocabulary. Adding a new harness means adding a new
9
+ * `HarnessCompiler` — never hand-editing agents/prompts per platform.
10
+ */
11
+ /**
12
+ * Supported harness targets. Extend this union and register a compiler in
13
+ * `harness/index.ts` to add a new harness (e.g. "codex", "gemini", "kiro").
14
+ * New targets must also add native tool mappings in `harness/tool-map.ts`.
15
+ */
16
+ export type HarnessTarget = "copilot" | "claude" | "cursor" | "opencode" | "agent-skills";
17
+ /**
18
+ * Canonical, harness-agnostic tool vocabulary. Primitive sources are authored
19
+ * against native Copilot tokens today; `normalizeToLogical` folds any known
20
+ * native token into one of these logical ids, and `logicalToNative` renders a
21
+ * logical id back into the tokens a specific harness understands.
22
+ */
23
+ export type LogicalTool = "workspace.search" | "workspace.edit" | "workspace.command" | "web.fetch" | "agent.delegate" | "todo.write" | `mcp.specky.${string}` | `raw:${string}`;
24
+ /**
25
+ * A compiler renders canonical primitive files into one harness's native
26
+ * form. Content transforms operate on raw file text (frontmatter + body);
27
+ * renamers map source filenames to the harness's expected extension.
28
+ */
29
+ export interface HarnessCompiler {
30
+ readonly target: HarnessTarget;
31
+ /** Transform an agent markdown file (frontmatter `tools:` line, etc.). */
32
+ compileAgent(content: string): string;
33
+ /** Transform a prompt/command markdown file. */
34
+ compilePrompt(content: string): string;
35
+ /** Transform an instruction/rules markdown file. */
36
+ compileInstruction(content: string): string;
37
+ /** Map an agent source filename to the harness's expected filename. */
38
+ renameAgent(fileName: string): string;
39
+ /** Map a prompt source filename to the harness's expected filename. */
40
+ renamePrompt(fileName: string): string;
41
+ }
42
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACnB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,cAAc,CAAC;AAErB;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,WAAW,GACX,gBAAgB,GAChB,YAAY,GACZ,cAAc,MAAM,EAAE,GACtB,OAAO,MAAM,EAAE,CAAC;AAEtB;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,0EAA0E;IAC1E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,gDAAgD;IAChD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,oDAAoD;IACpD,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5C,uEAAuE;IACvE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,uEAAuE;IACvE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * harness/types.ts — Primitive Intermediate Representation (IR) and the
3
+ * per-harness compiler contract.
4
+ *
5
+ * Specky keeps a single canonical primitive source in `.apm/`. Each supported
6
+ * agent harness (GitHub Copilot, Claude Code, and future targets) has a
7
+ * compiler that renders those primitives into that harness's native file
8
+ * layout and tool vocabulary. Adding a new harness means adding a new
9
+ * `HarnessCompiler` — never hand-editing agents/prompts per platform.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/cli/lib/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -8,6 +8,7 @@ export declare function writeMcpRegistration(path: string, opts: {
8
8
  dryRun: boolean;
9
9
  serverName?: string;
10
10
  useVscodeSchema?: boolean;
11
+ useOpenCodeSchema?: boolean;
11
12
  }): {
12
13
  path: string;
13
14
  written: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/mcp-writer.ts"],"names":[],"mappings":"AA8CA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;CAAE,CAoBhF"}
1
+ {"version":3,"file":"mcp-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/mcp-writer.ts"],"names":[],"mappings":"AA+CA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GACrG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;CAAE,CAuBhF"}
@@ -43,7 +43,11 @@ export function writeMcpRegistration(path, opts) {
43
43
  const name = opts.serverName ?? "specky";
44
44
  const existing = readJson(path);
45
45
  const before = JSON.stringify(existing);
46
- if (opts.useVscodeSchema) {
46
+ if (opts.useOpenCodeSchema) {
47
+ existing.mcp = existing.mcp ?? {};
48
+ existing.mcp[name] = DEFAULT_SERVER;
49
+ }
50
+ else if (opts.useVscodeSchema) {
47
51
  existing.servers = existing.servers ?? {};
48
52
  existing.servers[name] = DEFAULT_SERVER;
49
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-writer.js","sourceRoot":"","sources":["../../../src/cli/lib/mcp-writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAa7C,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAC1E,MAAM,cAAc,GAAmB;IACrC,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,OAAO,EAAE,EAAE,OAAO,CAAC;CAC/C,CAAC;AAEF,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,IAAe,EAAE,MAAe;IAC/D,IAAI,MAAM;QAAE,OAAO;IACnB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,IAAyE;IAEzE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC;IACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QAC1C,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;QAChD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAyB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"mcp-writer.js","sourceRoot":"","sources":["../../../src/cli/lib/mcp-writer.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export declare function sourcePaths(pkgRoot: string): {
17
17
  copilotHooksManifest: string;
18
18
  configYml: string;
19
19
  apmYml: string;
20
+ apmPolicyYml: string;
20
21
  };
21
22
  export interface Targets {
22
23
  claude: {
@@ -37,9 +38,24 @@ export interface Targets {
37
38
  hooksManifest: string;
38
39
  instructions: string;
39
40
  };
41
+ cursor: {
42
+ root: string;
43
+ agents: string;
44
+ commands: string;
45
+ rules: string;
46
+ hooksManifest: string;
47
+ mcp: string;
48
+ };
49
+ opencode: {
50
+ root: string;
51
+ agents: string;
52
+ commands: string;
53
+ mcp: string;
54
+ };
40
55
  shared: {
41
56
  specky: string;
42
57
  specs: string;
58
+ agentSkills: string;
43
59
  vscodeMcp: string;
44
60
  claudeMcp: string;
45
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CASpC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAeA;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA6BtD"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CASpC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAgBA;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA8CtD"}
@@ -41,11 +41,14 @@ export function sourcePaths(pkgRoot) {
41
41
  copilotHooksManifest: resolve(pkgRoot, "dist/copilot-hooks.json"),
42
42
  configYml: resolve(pkgRoot, "config.yml"),
43
43
  apmYml: resolve(pkgRoot, "apm.yml"),
44
+ apmPolicyYml: resolve(pkgRoot, "apm-policy.yml"),
44
45
  };
45
46
  }
46
47
  export function targetPaths(workspace) {
47
48
  const claude = resolve(workspace, ".claude");
48
49
  const github = resolve(workspace, ".github");
50
+ const cursor = resolve(workspace, ".cursor");
51
+ const opencode = resolve(workspace, ".opencode");
49
52
  return {
50
53
  claude: {
51
54
  root: claude,
@@ -65,9 +68,24 @@ export function targetPaths(workspace) {
65
68
  hooksManifest: resolve(github, "hooks/specky/sdd-hooks.json"),
66
69
  instructions: resolve(github, "instructions"),
67
70
  },
71
+ cursor: {
72
+ root: cursor,
73
+ agents: resolve(cursor, "agents"),
74
+ commands: resolve(cursor, "commands"),
75
+ rules: resolve(cursor, "rules"),
76
+ hooksManifest: resolve(cursor, "hooks.json"),
77
+ mcp: resolve(cursor, "mcp.json"),
78
+ },
79
+ opencode: {
80
+ root: opencode,
81
+ agents: resolve(opencode, "agents"),
82
+ commands: resolve(opencode, "commands"),
83
+ mcp: resolve(workspace, "opencode.json"),
84
+ },
68
85
  shared: {
69
86
  specky: resolve(workspace, ".specky"),
70
87
  specs: resolve(workspace, ".specs"),
88
+ agentSkills: resolve(workspace, ".agents/skills"),
71
89
  vscodeMcp: resolve(workspace, ".vscode/mcp.json"),
72
90
  claudeMcp: resolve(workspace, ".mcp.json"),
73
91
  },
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"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"}