@codewalla_india/openspec 1.3.0 → 1.3.2

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 (333) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +272 -230
  3. package/bin/openspec.js +5 -5
  4. package/dist/cli/index.js +99 -62
  5. package/dist/commands/change.d.ts +0 -2
  6. package/dist/commands/change.js +107 -86
  7. package/dist/commands/config.js +14 -16
  8. package/dist/commands/doctor.js +9 -4
  9. package/dist/commands/feedback.js +79 -30
  10. package/dist/commands/modify.d.ts +26 -0
  11. package/dist/commands/modify.js +147 -0
  12. package/dist/commands/schema.js +170 -91
  13. package/dist/commands/show.js +5 -2
  14. package/dist/commands/spec.js +49 -29
  15. package/dist/commands/store.js +15 -21
  16. package/dist/commands/validate.d.ts +8 -0
  17. package/dist/commands/validate.js +43 -20
  18. package/dist/commands/workflow/index.d.ts +2 -2
  19. package/dist/commands/workflow/index.js +1 -1
  20. package/dist/commands/workflow/instructions.d.ts +6 -26
  21. package/dist/commands/workflow/instructions.js +183 -376
  22. package/dist/commands/workflow/new-change.d.ts +0 -4
  23. package/dist/commands/workflow/new-change.js +10 -28
  24. package/dist/commands/workflow/shared.d.ts +34 -19
  25. package/dist/commands/workflow/shared.js +34 -4
  26. package/dist/commands/workflow/status.js +10 -32
  27. package/dist/commands/workflow/templates.js +15 -5
  28. package/dist/commands/workset.d.ts +2 -2
  29. package/dist/commands/workset.js +19 -22
  30. package/dist/comprehension-quiz/fingerprint.d.ts +39 -0
  31. package/dist/comprehension-quiz/fingerprint.js +84 -0
  32. package/dist/comprehension-quiz/index.d.ts +42 -0
  33. package/dist/comprehension-quiz/index.js +47 -0
  34. package/dist/comprehension-quiz/pass-record.d.ts +44 -0
  35. package/dist/comprehension-quiz/pass-record.js +98 -0
  36. package/dist/comprehension-quiz/providers/anthropic.d.ts +34 -0
  37. package/dist/comprehension-quiz/providers/anthropic.js +53 -0
  38. package/dist/comprehension-quiz/providers/factory.d.ts +44 -0
  39. package/dist/comprehension-quiz/providers/factory.js +174 -0
  40. package/dist/comprehension-quiz/providers/interface.d.ts +59 -0
  41. package/dist/comprehension-quiz/providers/interface.js +63 -0
  42. package/dist/comprehension-quiz/providers/local.d.ts +34 -0
  43. package/dist/comprehension-quiz/providers/local.js +53 -0
  44. package/dist/comprehension-quiz/providers/ollama.d.ts +34 -0
  45. package/dist/comprehension-quiz/providers/ollama.js +53 -0
  46. package/dist/comprehension-quiz/providers/openai.d.ts +34 -0
  47. package/dist/comprehension-quiz/providers/openai.js +53 -0
  48. package/dist/comprehension-quiz/question-generator.d.ts +69 -0
  49. package/dist/comprehension-quiz/question-generator.js +141 -0
  50. package/dist/comprehension-quiz/quiz-executor.d.ts +70 -0
  51. package/dist/comprehension-quiz/quiz-executor.js +165 -0
  52. package/dist/comprehension-quiz/types.d.ts +115 -0
  53. package/dist/comprehension-quiz/types.js +11 -0
  54. package/dist/core/archive.d.ts +14 -1
  55. package/dist/core/archive.js +1350 -190
  56. package/dist/core/artifact-graph/graph.d.ts +28 -9
  57. package/dist/core/artifact-graph/graph.js +94 -43
  58. package/dist/core/artifact-graph/index.d.ts +1 -1
  59. package/dist/core/artifact-graph/index.js +1 -1
  60. package/dist/core/artifact-graph/instruction-loader.d.ts +30 -3
  61. package/dist/core/artifact-graph/instruction-loader.js +70 -12
  62. package/dist/core/artifact-graph/outputs.d.ts +1 -0
  63. package/dist/core/artifact-graph/outputs.js +67 -5
  64. package/dist/core/artifact-graph/resolver.d.ts +14 -0
  65. package/dist/core/artifact-graph/resolver.js +69 -15
  66. package/dist/core/artifact-graph/types.js +21 -3
  67. package/dist/core/available-tools.d.ts +2 -2
  68. package/dist/core/available-tools.js +14 -3
  69. package/dist/core/change-metadata/schema.d.ts +2 -0
  70. package/dist/core/change-metadata/schema.js +13 -0
  71. package/dist/core/change-status-policy.d.ts +10 -1
  72. package/dist/core/change-status-policy.js +30 -2
  73. package/dist/core/command-generation/adapters/amazon-q.d.ts +4 -0
  74. package/dist/core/command-generation/adapters/amazon-q.js +11 -5
  75. package/dist/core/command-generation/adapters/antigravity.js +6 -5
  76. package/dist/core/command-generation/adapters/auggie.js +7 -6
  77. package/dist/core/command-generation/adapters/bob.d.ts +5 -1
  78. package/dist/core/command-generation/adapters/bob.js +11 -10
  79. package/dist/core/command-generation/adapters/claude.d.ts +1 -1
  80. package/dist/core/command-generation/adapters/claude.js +12 -17
  81. package/dist/core/command-generation/adapters/cline.js +5 -5
  82. package/dist/core/command-generation/adapters/codebuddy.js +8 -7
  83. package/dist/core/command-generation/adapters/continue.js +8 -7
  84. package/dist/core/command-generation/adapters/costrict.js +7 -6
  85. package/dist/core/command-generation/adapters/crush.js +9 -9
  86. package/dist/core/command-generation/adapters/cursor.js +8 -8
  87. package/dist/core/command-generation/adapters/devin.d.ts +19 -0
  88. package/dist/core/command-generation/adapters/devin.js +36 -0
  89. package/dist/core/command-generation/adapters/factory.js +7 -6
  90. package/dist/core/command-generation/adapters/gemini.js +40 -5
  91. package/dist/core/command-generation/adapters/github-copilot.js +6 -5
  92. package/dist/core/command-generation/adapters/iflow.js +9 -8
  93. package/dist/core/command-generation/adapters/index.d.ts +4 -2
  94. package/dist/core/command-generation/adapters/index.js +4 -2
  95. package/dist/core/command-generation/adapters/junie.js +6 -5
  96. package/dist/core/command-generation/adapters/kilocode.js +1 -1
  97. package/dist/core/command-generation/adapters/kiro.js +6 -5
  98. package/dist/core/command-generation/adapters/lingma.js +9 -9
  99. package/dist/core/command-generation/adapters/oh-my-pi.d.ts +21 -0
  100. package/dist/core/command-generation/adapters/oh-my-pi.js +42 -0
  101. package/dist/core/command-generation/adapters/opencode.js +6 -8
  102. package/dist/core/command-generation/adapters/pi.d.ts +2 -2
  103. package/dist/core/command-generation/adapters/pi.js +7 -10
  104. package/dist/core/command-generation/adapters/qoder.js +9 -9
  105. package/dist/core/command-generation/adapters/qwen.d.ts +7 -3
  106. package/dist/core/command-generation/adapters/qwen.js +14 -9
  107. package/dist/core/command-generation/adapters/roocode.d.ts +4 -4
  108. package/dist/core/command-generation/adapters/roocode.js +9 -9
  109. package/dist/core/command-generation/adapters/trae.d.ts +13 -0
  110. package/dist/core/command-generation/adapters/trae.js +28 -0
  111. package/dist/core/command-generation/adapters/zcode.d.ts +16 -0
  112. package/dist/core/command-generation/adapters/zcode.js +33 -0
  113. package/dist/core/command-generation/generator.d.ts +8 -0
  114. package/dist/core/command-generation/generator.js +15 -1
  115. package/dist/core/command-generation/index.d.ts +1 -1
  116. package/dist/core/command-generation/index.js +1 -1
  117. package/dist/core/command-generation/invocation.d.ts +73 -0
  118. package/dist/core/command-generation/invocation.js +77 -0
  119. package/dist/core/command-generation/registry.js +8 -4
  120. package/dist/core/command-generation/types.d.ts +9 -2
  121. package/dist/core/command-generation/yaml.d.ts +20 -6
  122. package/dist/core/command-generation/yaml.js +31 -21
  123. package/dist/core/command-surface.d.ts +15 -0
  124. package/dist/core/command-surface.js +33 -0
  125. package/dist/core/completions/command-registry.js +16 -61
  126. package/dist/core/completions/generators/bash-generator.js +41 -41
  127. package/dist/core/completions/generators/fish-generator.js +7 -7
  128. package/dist/core/completions/generators/powershell-generator.js +44 -37
  129. package/dist/core/completions/generators/zsh-generator.js +33 -33
  130. package/dist/core/completions/installers/zsh-installer.d.ts +9 -0
  131. package/dist/core/completions/installers/zsh-installer.js +20 -4
  132. package/dist/core/completions/templates/bash-templates.js +24 -24
  133. package/dist/core/completions/templates/fish-templates.js +38 -38
  134. package/dist/core/completions/templates/powershell-templates.js +28 -28
  135. package/dist/core/completions/templates/zsh-templates.js +39 -39
  136. package/dist/core/config-prompts.d.ts +1 -1
  137. package/dist/core/config-prompts.js +14 -1
  138. package/dist/core/config-schema.d.ts +10 -1
  139. package/dist/core/config-schema.js +67 -1
  140. package/dist/core/config.d.ts +15 -0
  141. package/dist/core/config.js +46 -5
  142. package/dist/core/file-state.js +56 -24
  143. package/dist/core/github-copilot/cloud-agent.d.ts +95 -0
  144. package/dist/core/github-copilot/cloud-agent.js +497 -0
  145. package/dist/core/global-config.d.ts +16 -0
  146. package/dist/core/init.d.ts +58 -0
  147. package/dist/core/init.js +474 -73
  148. package/dist/core/legacy-cleanup.d.ts +59 -0
  149. package/dist/core/legacy-cleanup.js +253 -24
  150. package/dist/core/list.js +23 -16
  151. package/dist/core/migration.d.ts +73 -1
  152. package/dist/core/migration.js +360 -11
  153. package/dist/core/modify/conflict-detector.d.ts +26 -0
  154. package/dist/core/modify/conflict-detector.js +62 -0
  155. package/dist/core/modify/dependency-propagator.d.ts +38 -0
  156. package/dist/core/modify/dependency-propagator.js +103 -0
  157. package/dist/core/modify/history-tracker.d.ts +34 -0
  158. package/dist/core/modify/history-tracker.js +114 -0
  159. package/dist/core/modify/index.d.ts +7 -0
  160. package/dist/core/modify/index.js +7 -0
  161. package/dist/core/onboarding-commands.d.ts +30 -0
  162. package/dist/core/onboarding-commands.js +38 -0
  163. package/dist/core/openspec-root.js +18 -15
  164. package/dist/core/parsers/change-parser.d.ts +17 -2
  165. package/dist/core/parsers/change-parser.js +35 -21
  166. package/dist/core/parsers/code-fence.d.ts +15 -0
  167. package/dist/core/parsers/code-fence.js +49 -0
  168. package/dist/core/parsers/markdown-parser.d.ts +0 -3
  169. package/dist/core/parsers/markdown-parser.js +7 -60
  170. package/dist/core/parsers/requirement-blocks.d.ts +29 -0
  171. package/dist/core/parsers/requirement-blocks.js +150 -31
  172. package/dist/core/parsers/requirement-text.d.ts +48 -0
  173. package/dist/core/parsers/requirement-text.js +98 -0
  174. package/dist/core/parsers/spec-structure.d.ts +1 -1
  175. package/dist/core/parsers/spec-structure.js +20 -30
  176. package/dist/core/profile-sync-drift.d.ts +0 -8
  177. package/dist/core/profile-sync-drift.js +49 -50
  178. package/dist/core/profiles.d.ts +2 -2
  179. package/dist/core/profiles.js +2 -2
  180. package/dist/core/project-config.d.ts +27 -18
  181. package/dist/core/project-config.js +101 -34
  182. package/dist/core/references.js +42 -4
  183. package/dist/core/relationship-health.d.ts +8 -0
  184. package/dist/core/relationship-health.js +13 -0
  185. package/dist/core/root-selection.d.ts +9 -6
  186. package/dist/core/root-selection.js +42 -5
  187. package/dist/core/schemas/base.schema.js +7 -2
  188. package/dist/core/shared/allowed-tools.d.ts +12 -0
  189. package/dist/core/shared/allowed-tools.js +12 -0
  190. package/dist/core/shared/index.d.ts +1 -0
  191. package/dist/core/shared/index.js +1 -0
  192. package/dist/core/shared/skill-content-equivalence.d.ts +7 -0
  193. package/dist/core/shared/skill-content-equivalence.js +41 -0
  194. package/dist/core/shared/skill-generation.js +17 -13
  195. package/dist/core/shared/skill-paths.d.ts +13 -0
  196. package/dist/core/shared/skill-paths.js +23 -0
  197. package/dist/core/shared/tool-detection.d.ts +27 -7
  198. package/dist/core/shared/tool-detection.js +167 -37
  199. package/dist/core/shared-skill-target.d.ts +16 -0
  200. package/dist/core/shared-skill-target.js +156 -0
  201. package/dist/core/specs-apply.d.ts +80 -33
  202. package/dist/core/specs-apply.js +667 -145
  203. package/dist/core/store/git.d.ts +13 -0
  204. package/dist/core/store/git.js +24 -0
  205. package/dist/core/store/operations.js +20 -0
  206. package/dist/core/templates/skill-templates.d.ts +3 -2
  207. package/dist/core/templates/skill-templates.js +3 -2
  208. package/dist/core/templates/workflows/apply-change.d.ts +10 -0
  209. package/dist/core/templates/workflows/apply-change.js +186 -323
  210. package/dist/core/templates/workflows/archive-change.js +387 -260
  211. package/dist/core/templates/workflows/bulk-archive-change.js +655 -475
  212. package/dist/core/templates/workflows/continue-change.js +210 -219
  213. package/dist/core/templates/workflows/explore.js +479 -443
  214. package/dist/core/templates/workflows/feedback.js +97 -97
  215. package/dist/core/templates/workflows/ff-change.js +200 -191
  216. package/dist/core/templates/workflows/modify-change.d.ts +4 -1
  217. package/dist/core/templates/workflows/modify-change.js +237 -115
  218. package/dist/core/templates/workflows/new-change.js +127 -134
  219. package/dist/core/templates/workflows/onboard.js +548 -542
  220. package/dist/core/templates/workflows/propose.js +273 -217
  221. package/dist/core/templates/workflows/store-selection.d.ts +1 -1
  222. package/dist/core/templates/workflows/store-selection.js +1 -1
  223. package/dist/core/templates/workflows/sync-specs.js +500 -273
  224. package/dist/core/templates/workflows/update-change.d.ts +10 -0
  225. package/dist/core/templates/workflows/update-change.js +177 -0
  226. package/dist/core/templates/workflows/verify-change.js +324 -326
  227. package/dist/core/update.d.ts +40 -5
  228. package/dist/core/update.js +411 -96
  229. package/dist/core/validation/constants.d.ts +4 -1
  230. package/dist/core/validation/constants.js +4 -1
  231. package/dist/core/validation/plan-validator.d.ts +8 -0
  232. package/dist/core/validation/plan-validator.js +45 -0
  233. package/dist/core/validation/task-numbering.d.ts +16 -0
  234. package/dist/core/validation/task-numbering.js +57 -0
  235. package/dist/core/validation/validator.d.ts +27 -3
  236. package/dist/core/validation/validator.js +337 -48
  237. package/dist/core/version-check.d.ts +152 -0
  238. package/dist/core/version-check.js +731 -0
  239. package/dist/core/view.js +13 -18
  240. package/dist/prompts/searchable-multi-select.js +1 -1
  241. package/dist/telemetry/caller-detection.d.ts +27 -0
  242. package/dist/telemetry/caller-detection.js +85 -0
  243. package/dist/telemetry/caller-detection.test.d.ts +5 -0
  244. package/dist/telemetry/config.d.ts +48 -2
  245. package/dist/telemetry/config.js +113 -11
  246. package/dist/telemetry/config.test.d.ts +5 -0
  247. package/dist/telemetry/deduplication.d.ts +35 -0
  248. package/dist/telemetry/deduplication.js +82 -0
  249. package/dist/telemetry/deduplication.test.d.ts +5 -0
  250. package/dist/telemetry/identity.d.ts +62 -22
  251. package/dist/telemetry/identity.js +147 -102
  252. package/dist/telemetry/index.d.ts +126 -15
  253. package/dist/telemetry/index.js +569 -37
  254. package/dist/telemetry/sanitization.d.ts +40 -0
  255. package/dist/telemetry/sanitization.js +114 -0
  256. package/dist/telemetry/sanitization.test.d.ts +5 -0
  257. package/dist/telemetry/throttling.d.ts +20 -0
  258. package/dist/telemetry/throttling.js +70 -0
  259. package/dist/ui/welcome-screen.d.ts +9 -1
  260. package/dist/ui/welcome-screen.js +91 -38
  261. package/dist/utils/change-metadata.d.ts +43 -0
  262. package/dist/utils/change-metadata.js +123 -7
  263. package/dist/utils/change-utils.d.ts +10 -4
  264. package/dist/utils/change-utils.js +20 -13
  265. package/dist/utils/ci.d.ts +12 -0
  266. package/dist/utils/ci.js +16 -0
  267. package/dist/utils/command-references.d.ts +92 -6
  268. package/dist/utils/command-references.js +180 -7
  269. package/dist/utils/date.d.ts +8 -0
  270. package/dist/utils/date.js +13 -0
  271. package/dist/utils/file-system.d.ts +10 -0
  272. package/dist/utils/file-system.js +70 -0
  273. package/dist/utils/index.d.ts +1 -1
  274. package/dist/utils/index.js +1 -1
  275. package/dist/utils/interactive.d.ts +23 -0
  276. package/dist/utils/interactive.js +32 -0
  277. package/dist/utils/item-discovery.d.ts +19 -0
  278. package/dist/utils/item-discovery.js +30 -48
  279. package/dist/utils/shell-detection.d.ts +1 -1
  280. package/dist/utils/shell-detection.js +64 -11
  281. package/dist/utils/spec-discovery.d.ts +40 -0
  282. package/dist/utils/spec-discovery.js +115 -0
  283. package/dist/utils/task-progress.d.ts +29 -1
  284. package/dist/utils/task-progress.js +109 -15
  285. package/package.json +96 -84
  286. package/schemas/spec-driven/schema.yaml +252 -184
  287. package/schemas/spec-driven/templates/design.md +19 -19
  288. package/schemas/spec-driven/templates/plan-template.md +91 -0
  289. package/schemas/spec-driven/templates/proposal.md +29 -24
  290. package/schemas/spec-driven/templates/spec.md +11 -8
  291. package/schemas/spec-driven/templates/tasks.md +9 -9
  292. package/scripts/postinstall.js +83 -83
  293. package/dist/core/command-generation/adapters/codex.d.ts +0 -16
  294. package/dist/core/command-generation/adapters/codex.js +0 -39
  295. package/dist/core/command-generation/adapters/windsurf.d.ts +0 -14
  296. package/dist/core/command-generation/adapters/windsurf.js +0 -38
  297. package/dist/core/comprehension/config.d.ts +0 -20
  298. package/dist/core/comprehension/config.js +0 -23
  299. package/dist/core/comprehension/fingerprint.d.ts +0 -14
  300. package/dist/core/comprehension/fingerprint.js +0 -33
  301. package/dist/core/comprehension/index.d.ts +0 -57
  302. package/dist/core/comprehension/index.js +0 -87
  303. package/dist/core/comprehension/pass-record.d.ts +0 -29
  304. package/dist/core/comprehension/pass-record.js +0 -64
  305. package/dist/core/comprehension/stats.d.ts +0 -35
  306. package/dist/core/comprehension/stats.js +0 -133
  307. package/dist/core/templates/workflows/comprehension-guidance.d.ts +0 -9
  308. package/dist/core/templates/workflows/comprehension-guidance.js +0 -71
  309. package/dist/core/templates/workflows/mcp-guidance.d.ts +0 -13
  310. package/dist/core/templates/workflows/mcp-guidance.js +0 -131
  311. package/dist/core/templates/workflows/user-prompt-guidance.d.ts +0 -16
  312. package/dist/core/templates/workflows/user-prompt-guidance.js +0 -48
  313. package/dist/telemetry/caller.d.ts +0 -5
  314. package/dist/telemetry/caller.js +0 -29
  315. package/dist/telemetry/client.d.ts +0 -27
  316. package/dist/telemetry/client.js +0 -127
  317. package/dist/telemetry/command-context.d.ts +0 -13
  318. package/dist/telemetry/command-context.js +0 -59
  319. package/dist/telemetry/comprehension.d.ts +0 -44
  320. package/dist/telemetry/comprehension.js +0 -105
  321. package/dist/telemetry/content.d.ts +0 -10
  322. package/dist/telemetry/content.js +0 -56
  323. package/dist/telemetry/git-stats.d.ts +0 -12
  324. package/dist/telemetry/git-stats.js +0 -69
  325. package/dist/telemetry/identify-cache.d.ts +0 -7
  326. package/dist/telemetry/identify-cache.js +0 -47
  327. package/dist/telemetry/input.d.ts +0 -17
  328. package/dist/telemetry/input.js +0 -68
  329. package/dist/telemetry/marker.d.ts +0 -37
  330. package/dist/telemetry/marker.js +0 -67
  331. package/dist/telemetry/workflow.d.ts +0 -85
  332. package/dist/telemetry/workflow.js +0 -318
  333. package/schemas/spec-driven/templates/plan.md +0 -19
@@ -1,118 +1,113 @@
1
1
  import { STORE_SELECTION_GUIDANCE } from './store-selection.js';
2
- import { PROMPT_SELECT_CHANGE_RECENT } from './user-prompt-guidance.js';
3
2
  export function getContinueChangeSkillTemplate() {
4
3
  return {
5
4
  name: 'openspec-continue-change',
6
5
  description: 'Continue working on an OpenSpec change by creating the next artifact. Use when the user wants to progress their change, create the next artifact, or continue their workflow.',
7
- instructions: `Continue working on a change by creating the next artifact.
8
-
9
- ${STORE_SELECTION_GUIDANCE}
10
-
11
- **Input**: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
12
-
13
- **Steps**
14
-
15
- 1. **If no change name provided, prompt for selection**
16
-
17
- ${PROMPT_SELECT_CHANGE_RECENT}
18
-
19
- Present the top 3-4 most recently modified changes as options, showing:
20
- - Change name
21
- - Schema (from \`schema\` field if present, otherwise "spec-driven")
22
- - Status (e.g., "0/5 tasks", "complete", "no tasks")
23
- - How recently it was modified (from \`lastModified\` field)
24
-
25
- Mark the most recently modified change as "(Recommended)" since it's likely what the user wants to continue.
26
-
27
- **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose.
28
-
29
- 2. **Check current status**
30
- \`\`\`bash
31
- openspec status --change "<name>" --json
32
- \`\`\`
33
- Parse the JSON to understand current state. The response includes:
34
- - \`schemaName\`: The workflow schema being used (e.g., "spec-driven")
35
- - \`artifacts\`: Array of artifacts with their status ("done", "ready", "blocked")
36
- - \`isComplete\`: Boolean indicating if all artifacts are complete
37
- - \`planningHome\`, \`changeRoot\`, \`artifactPaths\`, and \`actionContext\`: path and scope context. Use these instead of assuming repo-local paths.
38
-
39
- 3. **Act based on status**:
40
-
41
- ---
42
-
43
- **If all artifacts are complete (\`isComplete: true\`)**:
44
- - Congratulate the user
45
- - Show final status including the schema used
46
- - Suggest: "All artifacts created! You can now implement this change or archive it."
47
- - STOP
48
-
49
- ---
50
-
51
- **If artifacts are ready to create** (status shows artifacts with \`status: "ready"\`):
52
- - Pick the FIRST artifact with \`status: "ready"\` from the status output
53
- - Get its instructions:
54
- \`\`\`bash
55
- openspec instructions <artifact-id> --change "<name>" --json
56
- \`\`\`
57
- - Parse the JSON. The key fields are:
58
- - \`context\`: Project background (constraints for you - do NOT include in output)
59
- - \`rules\`: Artifact-specific rules (constraints for you - do NOT include in output)
60
- - \`template\`: The structure to use for your output file
61
- - \`instruction\`: Schema-specific guidance
62
- - \`resolvedOutputPath\`: Resolved path or pattern to write the artifact
63
- - \`dependencies\`: Completed artifacts to read for context
64
- - **Create the artifact file**:
65
- - Read any completed dependency files for context
66
- - Use \`template\` as the structure - fill in its sections
67
- - Apply \`context\` and \`rules\` as constraints when writing - but do NOT copy them into the file
68
- - Write to the \`resolvedOutputPath\` specified in instructions. If it is a glob pattern, choose the concrete file path using the schema instruction and the change's context
69
- - Show what was created and what's now unlocked
70
- - STOP after creating ONE artifact
71
-
72
- ---
73
-
74
- **If no artifacts are ready (all blocked)**:
75
- - This shouldn't happen with a valid schema
76
- - Show status and suggest checking for issues
77
-
78
- 4. **After creating an artifact, show progress**
79
- \`\`\`bash
80
- openspec status --change "<name>"
81
- \`\`\`
82
-
83
- **Output**
84
-
85
- After each invocation, show:
86
- - Which artifact was created
87
- - Schema workflow being used
88
- - Current progress (N/M complete)
89
- - What artifacts are now unlocked
90
- - Prompt: "Want to continue? Just ask me to continue or tell me what to do next."
91
-
92
- **Artifact Creation Guidelines**
93
-
94
- The artifact types and their purpose depend on the schema. Use the \`instruction\` field from the instructions output to understand what to create.
95
-
96
- Common artifact patterns:
97
-
98
- **spec-driven schema** (proposal → specs → design → plan → tasks):
99
- - **proposal.md**: Ask user about the change if not clear. Fill in Why, What Changes, Capabilities, Impact.
100
- - The Capabilities section is critical - each capability listed will need a spec file.
101
- - **specs/<capability>/spec.md**: Create one spec per capability listed in the proposal's Capabilities section (use the capability name, not the change name).
102
- - **design.md**: Document technical decisions, architecture, and implementation approach.
103
- - **tasks.md**: Break down implementation into checkboxed tasks.
104
-
105
- For other schemas, follow the \`instruction\` field from the CLI output.
106
-
107
- **Guardrails**
108
- - Create ONE artifact per invocation
109
- - Always read dependency artifacts before creating a new one
110
- - Never skip artifacts or create out of order
111
- - If context is unclear, ask the user before creating
112
- - Verify the artifact file exists after writing before marking progress
113
- - Use the schema's artifact sequence, don't assume specific artifact names
114
- - **IMPORTANT**: \`context\` and \`rules\` are constraints for YOU, not content for the file
115
- - Do NOT copy \`<context>\`, \`<rules>\`, \`<project_context>\` blocks into the artifact
6
+ instructions: `Continue working on a change by creating the next artifact.
7
+
8
+ ${STORE_SELECTION_GUIDANCE}
9
+
10
+ **Input**: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
11
+
12
+ **Steps**
13
+
14
+ 1. **Select the change**
15
+
16
+ If a name is provided, use it. Otherwise:
17
+ - Infer from conversation context if the user mentioned a change
18
+ - Auto-select if only one active change exists
19
+ - If ambiguous, run \`openspec list --json\` to get available changes sorted by most recently modified, and ask the user to select one
20
+
21
+ When prompting, present the top 3-4 most recently modified changes as options, showing:
22
+ - Change name
23
+ - Schema (from \`schema\` field if present, otherwise "spec-driven")
24
+ - Status (e.g., "0/5 tasks", "complete", "no tasks")
25
+ - How recently it was modified (from \`lastModified\` field)
26
+
27
+ Mark the most recently modified change as "(Recommended)" since it's likely what the user wants to continue.
28
+
29
+ Always announce: "Using change: <name>" and how to override (e.g., \`/opsx:continue <other>\`).
30
+
31
+ 2. **Check current status**
32
+ \`\`\`bash
33
+ openspec status --change "<name>" --json
34
+ \`\`\`
35
+ Parse the JSON to understand current state. The response includes:
36
+ - \`schemaName\`: The workflow schema being used (e.g., "spec-driven")
37
+ - \`artifacts\`: Array of artifacts with their status ("done", "skipped", "ready", "blocked")
38
+ - \`isPlanningComplete\`: Boolean indicating if all planning artifacts are complete. Older CLI versions expose the same value as \`isComplete\`.
39
+ - \`planningHome\`, \`changeRoot\`, \`artifactPaths\`, and \`actionContext\`: path and scope context. Use these instead of assuming repo-local paths.
40
+
41
+ 3. **Act based on status**:
42
+
43
+ ---
44
+
45
+ **If all planning artifacts are complete (\`isPlanningComplete: true\`, or legacy \`isComplete: true\`)**:
46
+ - Congratulate the user
47
+ - Show final status including the schema used
48
+ - Suggest: "Planning is complete! You can now implement this change. Once implementation and any tracked work are complete, archive it."
49
+ - STOP
50
+
51
+ ---
52
+
53
+ **If artifacts are ready to create** (status shows artifacts with \`status: "ready"\`):
54
+ - Pick the FIRST artifact with \`status: "ready"\` from the status output
55
+ - Get its instructions:
56
+ \`\`\`bash
57
+ openspec instructions <artifact-id> --change "<name>" --json
58
+ \`\`\`
59
+ - Parse the JSON. The key fields are:
60
+ - \`context\`: Project background (constraints for you - do NOT include in output)
61
+ - \`rules\`: Artifact-specific rules (constraints for you - do NOT include in output)
62
+ - \`template\`: The structure to use for your output file
63
+ - \`instruction\`: Schema-specific guidance
64
+ - \`resolvedOutputPath\`: Resolved path or pattern to write the artifact
65
+ - \`dependencies\`: Completed artifacts to read for context (entries with \`skipped: true\` have no files - do not look for them)
66
+ - \`skipped\`/\`warning\`: present when the change declares skip_specs and this artifact must NOT be created - pick another artifact
67
+ - **Create the artifact file**:
68
+ - Read any completed dependency files for context - always re-read them from disk, even if you saw them earlier in the conversation (the user may have edited them)
69
+ - If the \`instruction\` field delegates creation to a specific skill or command, invoke it to produce the artifact instead of writing the file yourself, then verify the artifact file exists at \`resolvedOutputPath\`
70
+ - Otherwise use \`template\` as the structure - fill in its sections
71
+ - Apply \`context\` and \`rules\` as constraints when writing - but do NOT copy them into the file
72
+ - Write to the \`resolvedOutputPath\` specified in instructions. If it is a glob pattern, choose the concrete file path using the schema instruction and the change's context
73
+ - Show what was created and what's now unlocked
74
+ - STOP after creating ONE artifact
75
+
76
+ ---
77
+
78
+ **If no artifacts are ready (all blocked)**:
79
+ - This shouldn't happen with a valid schema
80
+ - Show status and suggest checking for issues
81
+
82
+ 4. **After creating an artifact, show progress**
83
+ \`\`\`bash
84
+ openspec status --change "<name>"
85
+ \`\`\`
86
+
87
+ **Output**
88
+
89
+ After each invocation, show:
90
+ - Which artifact was created
91
+ - Schema workflow being used
92
+ - Current progress (N/M complete)
93
+ - What artifacts are now unlocked
94
+ - Prompt: "Want to continue? Just ask me to continue or tell me what to do next."
95
+
96
+ **Artifact Creation Guidelines**
97
+
98
+ The artifact types and their purpose depend on the schema. The \`instruction\` field from the instructions output is the authoritative guidance for each artifact - follow it even when the artifact has a familiar name (proposal.md, tasks.md, etc.), since custom schemas may define different content or a different process for the same file names.
99
+
100
+ If the \`instruction\` field directs you to use a specific skill or command to create the artifact, invoke it instead of writing the artifact directly.
101
+
102
+ **Guardrails**
103
+ - Create ONE artifact per invocation
104
+ - Always read dependency artifacts before creating a new one - re-read from disk, not from conversation memory (files may have changed since you last saw them)
105
+ - Never skip artifacts or create out of order
106
+ - If context is unclear, ask the user before creating
107
+ - Verify the artifact file exists after writing before marking progress
108
+ - Use the schema's artifact sequence, don't assume specific artifact names
109
+ - **IMPORTANT**: \`context\` and \`rules\` are constraints for YOU, not content for the file
110
+ - Do NOT copy \`<context>\`, \`<rules>\`, \`<project_context>\` blocks into the artifact
116
111
  - These guide what you write, but should never appear in the output`,
117
112
  license: 'MIT',
118
113
  compatibility: 'Requires openspec CLI.',
@@ -125,115 +120,111 @@ export function getOpsxContinueCommandTemplate() {
125
120
  description: 'Continue working on a change - create the next artifact (Experimental)',
126
121
  category: 'Workflow',
127
122
  tags: ['workflow', 'artifacts', 'experimental'],
128
- content: `Continue working on a change by creating the next artifact.
129
-
130
- ${STORE_SELECTION_GUIDANCE}
131
-
132
- **Input**: Optionally specify a change name after \`/opsx:continue\` (e.g., \`/opsx:continue add-auth\`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
133
-
134
- **Steps**
135
-
136
- 1. **If no change name provided, prompt for selection**
137
-
138
- ${PROMPT_SELECT_CHANGE_RECENT}
139
-
140
- Present the top 3-4 most recently modified changes as options, showing:
141
- - Change name
142
- - Schema (from \`schema\` field if present, otherwise "spec-driven")
143
- - Status (e.g., "0/5 tasks", "complete", "no tasks")
144
- - How recently it was modified (from \`lastModified\` field)
145
-
146
- Mark the most recently modified change as "(Recommended)" since it's likely what the user wants to continue.
147
-
148
- **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose.
149
-
150
- 2. **Check current status**
151
- \`\`\`bash
152
- openspec status --change "<name>" --json
153
- \`\`\`
154
- Parse the JSON to understand current state. The response includes:
155
- - \`schemaName\`: The workflow schema being used (e.g., "spec-driven")
156
- - \`artifacts\`: Array of artifacts with their status ("done", "ready", "blocked")
157
- - \`isComplete\`: Boolean indicating if all artifacts are complete
158
- - \`planningHome\`, \`changeRoot\`, \`artifactPaths\`, and \`actionContext\`: path and scope context. Use these instead of assuming repo-local paths.
159
-
160
- 3. **Act based on status**:
161
-
162
- ---
163
-
164
- **If all artifacts are complete (\`isComplete: true\`)**:
165
- - Congratulate the user
166
- - Show final status including the schema used
167
- - Suggest: "All artifacts created! You can now implement this change with \`/opsx:apply\` or archive it with \`/opsx:archive\`."
168
- - STOP
169
-
170
- ---
171
-
172
- **If artifacts are ready to create** (status shows artifacts with \`status: "ready"\`):
173
- - Pick the FIRST artifact with \`status: "ready"\` from the status output
174
- - Get its instructions:
175
- \`\`\`bash
176
- openspec instructions <artifact-id> --change "<name>" --json
177
- \`\`\`
178
- - Parse the JSON. The key fields are:
179
- - \`context\`: Project background (constraints for you - do NOT include in output)
180
- - \`rules\`: Artifact-specific rules (constraints for you - do NOT include in output)
181
- - \`template\`: The structure to use for your output file
182
- - \`instruction\`: Schema-specific guidance
183
- - \`resolvedOutputPath\`: Resolved path or pattern to write the artifact
184
- - \`dependencies\`: Completed artifacts to read for context
185
- - **Create the artifact file**:
186
- - Read any completed dependency files for context
187
- - Use \`template\` as the structure - fill in its sections
188
- - Apply \`context\` and \`rules\` as constraints when writing - but do NOT copy them into the file
189
- - Write to the \`resolvedOutputPath\` specified in instructions. If it is a glob pattern, choose the concrete file path using the schema instruction and the change's context
190
- - Show what was created and what's now unlocked
191
- - STOP after creating ONE artifact
192
-
193
- ---
194
-
195
- **If no artifacts are ready (all blocked)**:
196
- - This shouldn't happen with a valid schema
197
- - Show status and suggest checking for issues
198
-
199
- 4. **After creating an artifact, show progress**
200
- \`\`\`bash
201
- openspec status --change "<name>"
202
- \`\`\`
203
-
204
- **Output**
205
-
206
- After each invocation, show:
207
- - Which artifact was created
208
- - Schema workflow being used
209
- - Current progress (N/M complete)
210
- - What artifacts are now unlocked
211
- - Prompt: "Run \`/opsx:continue\` to create the next artifact"
212
-
213
- **Artifact Creation Guidelines**
214
-
215
- The artifact types and their purpose depend on the schema. Use the \`instruction\` field from the instructions output to understand what to create.
216
-
217
- Common artifact patterns:
218
-
219
- **spec-driven schema** (proposal → specs → design → plan → tasks):
220
- - **proposal.md**: Ask user about the change if not clear. Fill in Why, What Changes, Capabilities, Impact.
221
- - The Capabilities section is critical - each capability listed will need a spec file.
222
- - **specs/<capability>/spec.md**: Create one spec per capability listed in the proposal's Capabilities section (use the capability name, not the change name).
223
- - **design.md**: Document technical decisions, architecture, and implementation approach.
224
- - **tasks.md**: Break down implementation into checkboxed tasks.
225
-
226
- For other schemas, follow the \`instruction\` field from the CLI output.
227
-
228
- **Guardrails**
229
- - Create ONE artifact per invocation
230
- - Always read dependency artifacts before creating a new one
231
- - Never skip artifacts or create out of order
232
- - If context is unclear, ask the user before creating
233
- - Verify the artifact file exists after writing before marking progress
234
- - Use the schema's artifact sequence, don't assume specific artifact names
235
- - **IMPORTANT**: \`context\` and \`rules\` are constraints for YOU, not content for the file
236
- - Do NOT copy \`<context>\`, \`<rules>\`, \`<project_context>\` blocks into the artifact
123
+ content: `Continue working on a change by creating the next artifact.
124
+
125
+ ${STORE_SELECTION_GUIDANCE}
126
+
127
+ **Input**: Optionally specify a change name after \`/opsx:continue\` (e.g., \`/opsx:continue add-auth\`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
128
+
129
+ **Steps**
130
+
131
+ 1. **Select the change**
132
+
133
+ If a name is provided, use it. Otherwise:
134
+ - Infer from conversation context if the user mentioned a change
135
+ - Auto-select if only one active change exists
136
+ - If ambiguous, run \`openspec list --json\` to get available changes sorted by most recently modified, and ask the user to select one
137
+
138
+ When prompting, present the top 3-4 most recently modified changes as options, showing:
139
+ - Change name
140
+ - Schema (from \`schema\` field if present, otherwise "spec-driven")
141
+ - Status (e.g., "0/5 tasks", "complete", "no tasks")
142
+ - How recently it was modified (from \`lastModified\` field)
143
+
144
+ Mark the most recently modified change as "(Recommended)" since it's likely what the user wants to continue.
145
+
146
+ Always announce: "Using change: <name>" and how to override (e.g., \`/opsx:continue <other>\`).
147
+
148
+ 2. **Check current status**
149
+ \`\`\`bash
150
+ openspec status --change "<name>" --json
151
+ \`\`\`
152
+ Parse the JSON to understand current state. The response includes:
153
+ - \`schemaName\`: The workflow schema being used (e.g., "spec-driven")
154
+ - \`artifacts\`: Array of artifacts with their status ("done", "skipped", "ready", "blocked")
155
+ - \`isPlanningComplete\`: Boolean indicating if all planning artifacts are complete. Older CLI versions expose the same value as \`isComplete\`.
156
+ - \`planningHome\`, \`changeRoot\`, \`artifactPaths\`, and \`actionContext\`: path and scope context. Use these instead of assuming repo-local paths.
157
+
158
+ 3. **Act based on status**:
159
+
160
+ ---
161
+
162
+ **If all planning artifacts are complete (\`isPlanningComplete: true\`, or legacy \`isComplete: true\`)**:
163
+ - Congratulate the user
164
+ - Show final status including the schema used
165
+ - Suggest: "Planning is complete! You can now implement this change with \`/opsx:apply\`. Once implementation and any tracked work are complete, archive it with \`/opsx:archive\`."
166
+ - STOP
167
+
168
+ ---
169
+
170
+ **If artifacts are ready to create** (status shows artifacts with \`status: "ready"\`):
171
+ - Pick the FIRST artifact with \`status: "ready"\` from the status output
172
+ - Get its instructions:
173
+ \`\`\`bash
174
+ openspec instructions <artifact-id> --change "<name>" --json
175
+ \`\`\`
176
+ - Parse the JSON. The key fields are:
177
+ - \`context\`: Project background (constraints for you - do NOT include in output)
178
+ - \`rules\`: Artifact-specific rules (constraints for you - do NOT include in output)
179
+ - \`template\`: The structure to use for your output file
180
+ - \`instruction\`: Schema-specific guidance
181
+ - \`resolvedOutputPath\`: Resolved path or pattern to write the artifact
182
+ - \`dependencies\`: Completed artifacts to read for context (entries with \`skipped: true\` have no files - do not look for them)
183
+ - \`skipped\`/\`warning\`: present when the change declares skip_specs and this artifact must NOT be created - pick another artifact
184
+ - **Create the artifact file**:
185
+ - Read any completed dependency files for context - always re-read them from disk, even if you saw them earlier in the conversation (the user may have edited them)
186
+ - If the \`instruction\` field delegates creation to a specific skill or command, invoke it to produce the artifact instead of writing the file yourself, then verify the artifact file exists at \`resolvedOutputPath\`
187
+ - Otherwise use \`template\` as the structure - fill in its sections
188
+ - Apply \`context\` and \`rules\` as constraints when writing - but do NOT copy them into the file
189
+ - Write to the \`resolvedOutputPath\` specified in instructions. If it is a glob pattern, choose the concrete file path using the schema instruction and the change's context
190
+ - Show what was created and what's now unlocked
191
+ - STOP after creating ONE artifact
192
+
193
+ ---
194
+
195
+ **If no artifacts are ready (all blocked)**:
196
+ - This shouldn't happen with a valid schema
197
+ - Show status and suggest checking for issues
198
+
199
+ 4. **After creating an artifact, show progress**
200
+ \`\`\`bash
201
+ openspec status --change "<name>"
202
+ \`\`\`
203
+
204
+ **Output**
205
+
206
+ After each invocation, show:
207
+ - Which artifact was created
208
+ - Schema workflow being used
209
+ - Current progress (N/M complete)
210
+ - What artifacts are now unlocked
211
+ - Prompt: "Run \`/opsx:continue\` to create the next artifact"
212
+
213
+ **Artifact Creation Guidelines**
214
+
215
+ The artifact types and their purpose depend on the schema. The \`instruction\` field from the instructions output is the authoritative guidance for each artifact - follow it even when the artifact has a familiar name (proposal.md, tasks.md, etc.), since custom schemas may define different content or a different process for the same file names.
216
+
217
+ If the \`instruction\` field directs you to use a specific skill or command to create the artifact, invoke it instead of writing the artifact directly.
218
+
219
+ **Guardrails**
220
+ - Create ONE artifact per invocation
221
+ - Always read dependency artifacts before creating a new one - re-read from disk, not from conversation memory (files may have changed since you last saw them)
222
+ - Never skip artifacts or create out of order
223
+ - If context is unclear, ask the user before creating
224
+ - Verify the artifact file exists after writing before marking progress
225
+ - Use the schema's artifact sequence, don't assume specific artifact names
226
+ - **IMPORTANT**: \`context\` and \`rules\` are constraints for YOU, not content for the file
227
+ - Do NOT copy \`<context>\`, \`<rules>\`, \`<project_context>\` blocks into the artifact
237
228
  - These guide what you write, but should never appear in the output`
238
229
  };
239
230
  }