@kbdavis07/openspec 1.5.0-nov.1

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 (352) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +239 -0
  3. package/bin/openspec.js +5 -0
  4. package/dist/cli/index.d.ts +10 -0
  5. package/dist/cli/index.js +544 -0
  6. package/dist/commands/change.d.ts +38 -0
  7. package/dist/commands/change.js +245 -0
  8. package/dist/commands/completion.d.ts +72 -0
  9. package/dist/commands/completion.js +264 -0
  10. package/dist/commands/config.d.ts +36 -0
  11. package/dist/commands/config.js +552 -0
  12. package/dist/commands/context.d.ts +3 -0
  13. package/dist/commands/context.js +155 -0
  14. package/dist/commands/doctor.d.ts +8 -0
  15. package/dist/commands/doctor.js +163 -0
  16. package/dist/commands/feedback.d.ts +9 -0
  17. package/dist/commands/feedback.js +183 -0
  18. package/dist/commands/schema.d.ts +6 -0
  19. package/dist/commands/schema.js +869 -0
  20. package/dist/commands/shared-gather.d.ts +14 -0
  21. package/dist/commands/shared-gather.js +31 -0
  22. package/dist/commands/shared-output.d.ts +18 -0
  23. package/dist/commands/shared-output.js +61 -0
  24. package/dist/commands/show.d.ts +19 -0
  25. package/dist/commands/show.js +177 -0
  26. package/dist/commands/spec.d.ts +19 -0
  27. package/dist/commands/spec.js +236 -0
  28. package/dist/commands/store.d.ts +3 -0
  29. package/dist/commands/store.js +547 -0
  30. package/dist/commands/validate.d.ts +34 -0
  31. package/dist/commands/validate.js +342 -0
  32. package/dist/commands/workflow/index.d.ts +17 -0
  33. package/dist/commands/workflow/index.js +12 -0
  34. package/dist/commands/workflow/instructions.d.ts +39 -0
  35. package/dist/commands/workflow/instructions.js +393 -0
  36. package/dist/commands/workflow/new-change.d.ts +20 -0
  37. package/dist/commands/workflow/new-change.js +109 -0
  38. package/dist/commands/workflow/schemas.d.ts +10 -0
  39. package/dist/commands/workflow/schemas.js +34 -0
  40. package/dist/commands/workflow/shared.d.ts +74 -0
  41. package/dist/commands/workflow/shared.js +170 -0
  42. package/dist/commands/workflow/status.d.ts +16 -0
  43. package/dist/commands/workflow/status.js +92 -0
  44. package/dist/commands/workflow/templates.d.ts +16 -0
  45. package/dist/commands/workflow/templates.js +69 -0
  46. package/dist/commands/workset-input.d.ts +19 -0
  47. package/dist/commands/workset-input.js +112 -0
  48. package/dist/commands/workset-prompts.d.ts +12 -0
  49. package/dist/commands/workset-prompts.js +143 -0
  50. package/dist/commands/workset.d.ts +25 -0
  51. package/dist/commands/workset.js +446 -0
  52. package/dist/core/archive.d.ts +22 -0
  53. package/dist/core/archive.js +496 -0
  54. package/dist/core/artifact-graph/graph.d.ts +56 -0
  55. package/dist/core/artifact-graph/graph.js +141 -0
  56. package/dist/core/artifact-graph/index.d.ts +9 -0
  57. package/dist/core/artifact-graph/index.js +14 -0
  58. package/dist/core/artifact-graph/instruction-loader.d.ts +188 -0
  59. package/dist/core/artifact-graph/instruction-loader.js +233 -0
  60. package/dist/core/artifact-graph/outputs.d.ts +14 -0
  61. package/dist/core/artifact-graph/outputs.js +39 -0
  62. package/dist/core/artifact-graph/resolver.d.ts +81 -0
  63. package/dist/core/artifact-graph/resolver.js +257 -0
  64. package/dist/core/artifact-graph/schema.d.ts +13 -0
  65. package/dist/core/artifact-graph/schema.js +108 -0
  66. package/dist/core/artifact-graph/state.d.ts +12 -0
  67. package/dist/core/artifact-graph/state.js +31 -0
  68. package/dist/core/artifact-graph/types.d.ts +40 -0
  69. package/dist/core/artifact-graph/types.js +29 -0
  70. package/dist/core/available-tools.d.ts +17 -0
  71. package/dist/core/available-tools.js +43 -0
  72. package/dist/core/change-metadata/index.d.ts +2 -0
  73. package/dist/core/change-metadata/index.js +2 -0
  74. package/dist/core/change-metadata/schema.d.ts +19 -0
  75. package/dist/core/change-metadata/schema.js +30 -0
  76. package/dist/core/change-status-policy.d.ts +37 -0
  77. package/dist/core/change-status-policy.js +35 -0
  78. package/dist/core/command-generation/adapters/amazon-q.d.ts +13 -0
  79. package/dist/core/command-generation/adapters/amazon-q.js +26 -0
  80. package/dist/core/command-generation/adapters/antigravity.d.ts +13 -0
  81. package/dist/core/command-generation/adapters/antigravity.js +26 -0
  82. package/dist/core/command-generation/adapters/auggie.d.ts +13 -0
  83. package/dist/core/command-generation/adapters/auggie.js +27 -0
  84. package/dist/core/command-generation/adapters/bob.d.ts +14 -0
  85. package/dist/core/command-generation/adapters/bob.js +32 -0
  86. package/dist/core/command-generation/adapters/claude.d.ts +13 -0
  87. package/dist/core/command-generation/adapters/claude.js +39 -0
  88. package/dist/core/command-generation/adapters/cline.d.ts +14 -0
  89. package/dist/core/command-generation/adapters/cline.js +27 -0
  90. package/dist/core/command-generation/adapters/codebuddy.d.ts +13 -0
  91. package/dist/core/command-generation/adapters/codebuddy.js +28 -0
  92. package/dist/core/command-generation/adapters/codex.d.ts +16 -0
  93. package/dist/core/command-generation/adapters/codex.js +39 -0
  94. package/dist/core/command-generation/adapters/continue.d.ts +13 -0
  95. package/dist/core/command-generation/adapters/continue.js +28 -0
  96. package/dist/core/command-generation/adapters/costrict.d.ts +13 -0
  97. package/dist/core/command-generation/adapters/costrict.js +27 -0
  98. package/dist/core/command-generation/adapters/crush.d.ts +13 -0
  99. package/dist/core/command-generation/adapters/crush.js +30 -0
  100. package/dist/core/command-generation/adapters/cursor.d.ts +14 -0
  101. package/dist/core/command-generation/adapters/cursor.js +31 -0
  102. package/dist/core/command-generation/adapters/factory.d.ts +13 -0
  103. package/dist/core/command-generation/adapters/factory.js +27 -0
  104. package/dist/core/command-generation/adapters/gemini.d.ts +13 -0
  105. package/dist/core/command-generation/adapters/gemini.js +26 -0
  106. package/dist/core/command-generation/adapters/github-copilot.d.ts +13 -0
  107. package/dist/core/command-generation/adapters/github-copilot.js +26 -0
  108. package/dist/core/command-generation/adapters/iflow.d.ts +13 -0
  109. package/dist/core/command-generation/adapters/iflow.js +29 -0
  110. package/dist/core/command-generation/adapters/index.d.ts +34 -0
  111. package/dist/core/command-generation/adapters/index.js +34 -0
  112. package/dist/core/command-generation/adapters/junie.d.ts +13 -0
  113. package/dist/core/command-generation/adapters/junie.js +26 -0
  114. package/dist/core/command-generation/adapters/kilocode.d.ts +14 -0
  115. package/dist/core/command-generation/adapters/kilocode.js +23 -0
  116. package/dist/core/command-generation/adapters/kiro.d.ts +13 -0
  117. package/dist/core/command-generation/adapters/kiro.js +26 -0
  118. package/dist/core/command-generation/adapters/lingma.d.ts +13 -0
  119. package/dist/core/command-generation/adapters/lingma.js +30 -0
  120. package/dist/core/command-generation/adapters/oh-my-pi.d.ts +21 -0
  121. package/dist/core/command-generation/adapters/oh-my-pi.js +44 -0
  122. package/dist/core/command-generation/adapters/opencode.d.ts +13 -0
  123. package/dist/core/command-generation/adapters/opencode.js +29 -0
  124. package/dist/core/command-generation/adapters/pi.d.ts +18 -0
  125. package/dist/core/command-generation/adapters/pi.js +42 -0
  126. package/dist/core/command-generation/adapters/qoder.d.ts +13 -0
  127. package/dist/core/command-generation/adapters/qoder.js +30 -0
  128. package/dist/core/command-generation/adapters/qwen.d.ts +13 -0
  129. package/dist/core/command-generation/adapters/qwen.js +26 -0
  130. package/dist/core/command-generation/adapters/roocode.d.ts +14 -0
  131. package/dist/core/command-generation/adapters/roocode.js +27 -0
  132. package/dist/core/command-generation/adapters/trae.d.ts +13 -0
  133. package/dist/core/command-generation/adapters/trae.js +48 -0
  134. package/dist/core/command-generation/adapters/windsurf.d.ts +14 -0
  135. package/dist/core/command-generation/adapters/windsurf.js +38 -0
  136. package/dist/core/command-generation/generator.d.ts +21 -0
  137. package/dist/core/command-generation/generator.js +27 -0
  138. package/dist/core/command-generation/index.d.ts +22 -0
  139. package/dist/core/command-generation/index.js +24 -0
  140. package/dist/core/command-generation/registry.d.ts +36 -0
  141. package/dist/core/command-generation/registry.js +102 -0
  142. package/dist/core/command-generation/types.d.ts +56 -0
  143. package/dist/core/command-generation/types.js +8 -0
  144. package/dist/core/command-generation/yaml.d.ts +22 -0
  145. package/dist/core/command-generation/yaml.js +38 -0
  146. package/dist/core/completions/command-registry.d.ts +3 -0
  147. package/dist/core/completions/command-registry.js +759 -0
  148. package/dist/core/completions/completion-provider.d.ts +71 -0
  149. package/dist/core/completions/completion-provider.js +129 -0
  150. package/dist/core/completions/factory.d.ts +64 -0
  151. package/dist/core/completions/factory.js +75 -0
  152. package/dist/core/completions/generators/bash-generator.d.ts +35 -0
  153. package/dist/core/completions/generators/bash-generator.js +230 -0
  154. package/dist/core/completions/generators/fish-generator.d.ts +32 -0
  155. package/dist/core/completions/generators/fish-generator.js +160 -0
  156. package/dist/core/completions/generators/powershell-generator.d.ts +36 -0
  157. package/dist/core/completions/generators/powershell-generator.js +266 -0
  158. package/dist/core/completions/generators/zsh-generator.d.ts +47 -0
  159. package/dist/core/completions/generators/zsh-generator.js +276 -0
  160. package/dist/core/completions/installers/bash-installer.d.ts +87 -0
  161. package/dist/core/completions/installers/bash-installer.js +321 -0
  162. package/dist/core/completions/installers/fish-installer.d.ts +43 -0
  163. package/dist/core/completions/installers/fish-installer.js +151 -0
  164. package/dist/core/completions/installers/powershell-installer.d.ts +102 -0
  165. package/dist/core/completions/installers/powershell-installer.js +415 -0
  166. package/dist/core/completions/installers/zsh-installer.d.ts +117 -0
  167. package/dist/core/completions/installers/zsh-installer.js +424 -0
  168. package/dist/core/completions/shared-flags.d.ts +13 -0
  169. package/dist/core/completions/shared-flags.js +33 -0
  170. package/dist/core/completions/templates/bash-templates.d.ts +6 -0
  171. package/dist/core/completions/templates/bash-templates.js +30 -0
  172. package/dist/core/completions/templates/fish-templates.d.ts +7 -0
  173. package/dist/core/completions/templates/fish-templates.js +45 -0
  174. package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
  175. package/dist/core/completions/templates/powershell-templates.js +34 -0
  176. package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
  177. package/dist/core/completions/templates/zsh-templates.js +45 -0
  178. package/dist/core/completions/types.d.ts +101 -0
  179. package/dist/core/completions/types.js +2 -0
  180. package/dist/core/config-prompts.d.ts +9 -0
  181. package/dist/core/config-prompts.js +34 -0
  182. package/dist/core/config-schema.d.ts +87 -0
  183. package/dist/core/config-schema.js +239 -0
  184. package/dist/core/config.d.ts +18 -0
  185. package/dist/core/config.js +40 -0
  186. package/dist/core/converters/json-converter.d.ts +6 -0
  187. package/dist/core/converters/json-converter.js +51 -0
  188. package/dist/core/file-state.d.ts +36 -0
  189. package/dist/core/file-state.js +112 -0
  190. package/dist/core/global-config.d.ts +51 -0
  191. package/dist/core/global-config.js +124 -0
  192. package/dist/core/id.d.ts +17 -0
  193. package/dist/core/id.js +30 -0
  194. package/dist/core/index.d.ts +6 -0
  195. package/dist/core/index.js +7 -0
  196. package/dist/core/init.d.ts +37 -0
  197. package/dist/core/init.js +614 -0
  198. package/dist/core/legacy-cleanup.d.ts +162 -0
  199. package/dist/core/legacy-cleanup.js +514 -0
  200. package/dist/core/list.d.ts +11 -0
  201. package/dist/core/list.js +214 -0
  202. package/dist/core/migration.d.ts +23 -0
  203. package/dist/core/migration.js +108 -0
  204. package/dist/core/openers.d.ts +77 -0
  205. package/dist/core/openers.js +251 -0
  206. package/dist/core/openspec-root.d.ts +45 -0
  207. package/dist/core/openspec-root.js +195 -0
  208. package/dist/core/parsers/change-parser.d.ts +13 -0
  209. package/dist/core/parsers/change-parser.js +198 -0
  210. package/dist/core/parsers/markdown-parser.d.ts +23 -0
  211. package/dist/core/parsers/markdown-parser.js +173 -0
  212. package/dist/core/parsers/requirement-blocks.d.ts +48 -0
  213. package/dist/core/parsers/requirement-blocks.js +235 -0
  214. package/dist/core/parsers/requirement-text.d.ts +55 -0
  215. package/dist/core/parsers/requirement-text.js +136 -0
  216. package/dist/core/parsers/spec-structure.d.ts +9 -0
  217. package/dist/core/parsers/spec-structure.js +88 -0
  218. package/dist/core/planning-home.d.ts +16 -0
  219. package/dist/core/planning-home.js +67 -0
  220. package/dist/core/profile-sync-drift.d.ts +38 -0
  221. package/dist/core/profile-sync-drift.js +201 -0
  222. package/dist/core/profiles.d.ts +26 -0
  223. package/dist/core/profiles.js +41 -0
  224. package/dist/core/project-config.d.ts +107 -0
  225. package/dist/core/project-config.js +373 -0
  226. package/dist/core/references.d.ts +63 -0
  227. package/dist/core/references.js +310 -0
  228. package/dist/core/relationship-health.d.ts +65 -0
  229. package/dist/core/relationship-health.js +64 -0
  230. package/dist/core/root-selection.d.ts +122 -0
  231. package/dist/core/root-selection.js +337 -0
  232. package/dist/core/schemas/base.schema.d.ts +13 -0
  233. package/dist/core/schemas/base.schema.js +18 -0
  234. package/dist/core/schemas/change.schema.d.ts +73 -0
  235. package/dist/core/schemas/change.schema.js +31 -0
  236. package/dist/core/schemas/index.d.ts +4 -0
  237. package/dist/core/schemas/index.js +4 -0
  238. package/dist/core/schemas/spec.schema.d.ts +18 -0
  239. package/dist/core/schemas/spec.schema.js +15 -0
  240. package/dist/core/shared/allowed-tools.d.ts +12 -0
  241. package/dist/core/shared/allowed-tools.js +12 -0
  242. package/dist/core/shared/index.d.ts +8 -0
  243. package/dist/core/shared/index.js +8 -0
  244. package/dist/core/shared/skill-generation.d.ts +49 -0
  245. package/dist/core/shared/skill-generation.js +100 -0
  246. package/dist/core/shared/tool-detection.d.ts +71 -0
  247. package/dist/core/shared/tool-detection.js +160 -0
  248. package/dist/core/specs-apply.d.ts +78 -0
  249. package/dist/core/specs-apply.js +428 -0
  250. package/dist/core/store/errors.d.ts +20 -0
  251. package/dist/core/store/errors.js +22 -0
  252. package/dist/core/store/foundation.d.ts +56 -0
  253. package/dist/core/store/foundation.js +251 -0
  254. package/dist/core/store/git.d.ts +23 -0
  255. package/dist/core/store/git.js +137 -0
  256. package/dist/core/store/index.d.ts +5 -0
  257. package/dist/core/store/index.js +5 -0
  258. package/dist/core/store/operations.d.ts +114 -0
  259. package/dist/core/store/operations.js +803 -0
  260. package/dist/core/store/registry.d.ts +58 -0
  261. package/dist/core/store/registry.js +275 -0
  262. package/dist/core/styles/palette.d.ts +7 -0
  263. package/dist/core/styles/palette.js +8 -0
  264. package/dist/core/templates/index.d.ts +8 -0
  265. package/dist/core/templates/index.js +9 -0
  266. package/dist/core/templates/skill-templates.d.ts +20 -0
  267. package/dist/core/templates/skill-templates.js +19 -0
  268. package/dist/core/templates/types.d.ts +19 -0
  269. package/dist/core/templates/types.js +5 -0
  270. package/dist/core/templates/workflows/apply-change.d.ts +10 -0
  271. package/dist/core/templates/workflows/apply-change.js +315 -0
  272. package/dist/core/templates/workflows/archive-change.d.ts +10 -0
  273. package/dist/core/templates/workflows/archive-change.js +278 -0
  274. package/dist/core/templates/workflows/bulk-archive-change.d.ts +10 -0
  275. package/dist/core/templates/workflows/bulk-archive-change.js +493 -0
  276. package/dist/core/templates/workflows/continue-change.d.ts +10 -0
  277. package/dist/core/templates/workflows/continue-change.js +239 -0
  278. package/dist/core/templates/workflows/explore.d.ts +10 -0
  279. package/dist/core/templates/workflows/explore.js +464 -0
  280. package/dist/core/templates/workflows/feedback.d.ts +9 -0
  281. package/dist/core/templates/workflows/feedback.js +108 -0
  282. package/dist/core/templates/workflows/ff-change.d.ts +10 -0
  283. package/dist/core/templates/workflows/ff-change.js +205 -0
  284. package/dist/core/templates/workflows/new-change.d.ts +10 -0
  285. package/dist/core/templates/workflows/new-change.js +148 -0
  286. package/dist/core/templates/workflows/onboard.d.ts +10 -0
  287. package/dist/core/templates/workflows/onboard.js +566 -0
  288. package/dist/core/templates/workflows/propose.d.ts +10 -0
  289. package/dist/core/templates/workflows/propose.js +223 -0
  290. package/dist/core/templates/workflows/store-selection.d.ts +8 -0
  291. package/dist/core/templates/workflows/store-selection.js +8 -0
  292. package/dist/core/templates/workflows/sync-specs.d.ts +10 -0
  293. package/dist/core/templates/workflows/sync-specs.js +291 -0
  294. package/dist/core/templates/workflows/update-change.d.ts +10 -0
  295. package/dist/core/templates/workflows/update-change.js +167 -0
  296. package/dist/core/templates/workflows/verify-change.d.ts +10 -0
  297. package/dist/core/templates/workflows/verify-change.js +339 -0
  298. package/dist/core/update.d.ts +82 -0
  299. package/dist/core/update.js +557 -0
  300. package/dist/core/validation/constants.d.ts +34 -0
  301. package/dist/core/validation/constants.js +40 -0
  302. package/dist/core/validation/types.d.ts +18 -0
  303. package/dist/core/validation/types.js +2 -0
  304. package/dist/core/validation/validator.d.ts +51 -0
  305. package/dist/core/validation/validator.js +498 -0
  306. package/dist/core/view.d.ts +8 -0
  307. package/dist/core/view.js +168 -0
  308. package/dist/core/working-set.d.ts +47 -0
  309. package/dist/core/working-set.js +43 -0
  310. package/dist/core/worksets.d.ts +75 -0
  311. package/dist/core/worksets.js +245 -0
  312. package/dist/core/zod-issues.d.ts +4 -0
  313. package/dist/core/zod-issues.js +10 -0
  314. package/dist/index.d.ts +3 -0
  315. package/dist/index.js +3 -0
  316. package/dist/prompts/searchable-multi-select.d.ts +28 -0
  317. package/dist/prompts/searchable-multi-select.js +159 -0
  318. package/dist/telemetry/config.d.ts +38 -0
  319. package/dist/telemetry/config.js +136 -0
  320. package/dist/telemetry/index.d.ts +31 -0
  321. package/dist/telemetry/index.js +164 -0
  322. package/dist/ui/ascii-patterns.d.ts +16 -0
  323. package/dist/ui/ascii-patterns.js +133 -0
  324. package/dist/ui/welcome-screen.d.ts +10 -0
  325. package/dist/ui/welcome-screen.js +146 -0
  326. package/dist/utils/change-metadata.d.ts +55 -0
  327. package/dist/utils/change-metadata.js +141 -0
  328. package/dist/utils/change-utils.d.ts +85 -0
  329. package/dist/utils/change-utils.js +173 -0
  330. package/dist/utils/command-references.d.ts +18 -0
  331. package/dist/utils/command-references.js +20 -0
  332. package/dist/utils/file-system.d.ts +41 -0
  333. package/dist/utils/file-system.js +320 -0
  334. package/dist/utils/index.d.ts +6 -0
  335. package/dist/utils/index.js +9 -0
  336. package/dist/utils/interactive.d.ts +18 -0
  337. package/dist/utils/interactive.js +21 -0
  338. package/dist/utils/item-discovery.d.ts +4 -0
  339. package/dist/utils/item-discovery.js +72 -0
  340. package/dist/utils/match.d.ts +3 -0
  341. package/dist/utils/match.js +22 -0
  342. package/dist/utils/shell-detection.d.ts +20 -0
  343. package/dist/utils/shell-detection.js +41 -0
  344. package/dist/utils/task-progress.d.ts +17 -0
  345. package/dist/utils/task-progress.js +100 -0
  346. package/package.json +85 -0
  347. package/schemas/spec-driven/schema.yaml +153 -0
  348. package/schemas/spec-driven/templates/design.md +19 -0
  349. package/schemas/spec-driven/templates/proposal.md +23 -0
  350. package/schemas/spec-driven/templates/spec.md +8 -0
  351. package/schemas/spec-driven/templates/tasks.md +9 -0
  352. package/scripts/postinstall.js +83 -0
@@ -0,0 +1,315 @@
1
+ import { STORE_SELECTION_GUIDANCE } from './store-selection.js';
2
+ export function getApplyChangeSkillTemplate() {
3
+ return {
4
+ name: 'openspec-apply-change',
5
+ description: 'Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.',
6
+ instructions: `Implement tasks from an OpenSpec change.
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 and use the **AskUserQuestion tool** to let the user select
20
+
21
+ Always announce: "Using change: <name>" and how to override (e.g., \`/opsx:apply <other>\`).
22
+
23
+ 2. **Check status to understand the schema**
24
+ \`\`\`bash
25
+ openspec status --change "<name>" --json
26
+ \`\`\`
27
+ Parse the JSON to understand:
28
+ - \`schemaName\`: The workflow being used (e.g., "spec-driven")
29
+ - \`planningHome\`, \`changeRoot\`, and \`actionContext\`: planning scope and edit constraints
30
+ - Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)
31
+
32
+ 3. **Get apply instructions**
33
+
34
+ \`\`\`bash
35
+ openspec instructions apply --change "<name>" --json
36
+ \`\`\`
37
+
38
+ This returns:
39
+ - \`contextFiles\`: artifact ID -> array of concrete file paths (varies by schema - could be proposal/specs/design/tasks or spec/tests/implementation/docs)
40
+ - Progress (total, complete, remaining)
41
+ - Task list with status
42
+ - Dynamic instruction based on current state
43
+
44
+ **Handle states:**
45
+ - If \`state: "blocked"\` (missing artifacts): show message, suggest using openspec-continue-change
46
+ - If \`state: "all_done"\`: congratulate, suggest archive
47
+ - Otherwise: proceed to implementation
48
+
49
+ 4. **Read context files**
50
+
51
+ Read every file path listed under \`contextFiles\` from the apply instructions output.
52
+ The files depend on the schema being used:
53
+ - **spec-driven**: proposal, specs, design, tasks
54
+ - Other schemas: follow the contextFiles from CLI output
55
+
56
+ 5. **Show current progress**
57
+
58
+ Display:
59
+ - Schema being used
60
+ - Progress: "N/M tasks complete"
61
+ - Remaining tasks overview
62
+ - Dynamic instruction from CLI
63
+
64
+ 6. **Implement tasks (loop until done or blocked)**
65
+
66
+ For each pending task:
67
+ - Show which task is being worked on
68
+ - Make the code changes required
69
+ - Keep changes minimal and focused
70
+ - Mark task complete in the tasks file: \`- [ ]\` → \`- [x]\`
71
+ - Continue to next task
72
+
73
+ **Pause if:**
74
+ - Task is unclear → ask for clarification
75
+ - Implementation reveals a design issue → suggest updating artifacts
76
+ - Error or blocker encountered → report and wait for guidance
77
+ - User interrupts
78
+
79
+ 7. **On completion or pause, show status**
80
+
81
+ Display:
82
+ - Tasks completed this session
83
+ - Overall progress: "N/M tasks complete"
84
+ - If all done: suggest archive
85
+ - If paused: explain why and wait for guidance
86
+
87
+ **Output During Implementation**
88
+
89
+ \`\`\`
90
+ ## Implementing: <change-name> (schema: <schema-name>)
91
+
92
+ Working on task 3/7: <task description>
93
+ [...implementation happening...]
94
+ ✓ Task complete
95
+
96
+ Working on task 4/7: <task description>
97
+ [...implementation happening...]
98
+ ✓ Task complete
99
+ \`\`\`
100
+
101
+ **Output On Completion**
102
+
103
+ \`\`\`
104
+ ## Implementation Complete
105
+
106
+ **Change:** <change-name>
107
+ **Schema:** <schema-name>
108
+ **Progress:** 7/7 tasks complete ✓
109
+
110
+ ### Completed This Session
111
+ - [x] Task 1
112
+ - [x] Task 2
113
+ ...
114
+
115
+ All tasks complete! Ready to archive this change.
116
+ \`\`\`
117
+
118
+ **Output On Pause (Issue Encountered)**
119
+
120
+ \`\`\`
121
+ ## Implementation Paused
122
+
123
+ **Change:** <change-name>
124
+ **Schema:** <schema-name>
125
+ **Progress:** 4/7 tasks complete
126
+
127
+ ### Issue Encountered
128
+ <description of the issue>
129
+
130
+ **Options:**
131
+ 1. <option 1>
132
+ 2. <option 2>
133
+ 3. Other approach
134
+
135
+ What would you like to do?
136
+ \`\`\`
137
+
138
+ **Guardrails**
139
+ - Keep going through tasks until done or blocked
140
+ - Always read context files before starting (from the apply instructions output)
141
+ - If task is ambiguous, pause and ask before implementing
142
+ - If implementation reveals issues, pause and suggest artifact updates
143
+ - Keep code changes minimal and scoped to each task
144
+ - Update task checkbox immediately after completing each task
145
+ - Pause on errors, blockers, or unclear requirements - don't guess
146
+ - Use contextFiles from CLI output, don't assume specific file names
147
+
148
+ **Fluid Workflow Integration**
149
+
150
+ This skill supports the "actions on a change" model:
151
+
152
+ - **Can be invoked anytime**: Before all artifacts are done (if tasks exist), after partial implementation, interleaved with other actions
153
+ - **Allows artifact updates**: If implementation reveals design issues, suggest updating artifacts - not phase-locked, work fluidly`,
154
+ license: 'MIT',
155
+ compatibility: 'Requires openspec CLI.',
156
+ metadata: { author: 'openspec', version: '1.0' },
157
+ };
158
+ }
159
+ export function getOpsxApplyCommandTemplate() {
160
+ return {
161
+ name: 'OPSX: Apply',
162
+ description: 'Implement tasks from an OpenSpec change (Experimental)',
163
+ category: 'Workflow',
164
+ tags: ['workflow', 'artifacts', 'experimental'],
165
+ content: `Implement tasks from an OpenSpec change.
166
+
167
+ ${STORE_SELECTION_GUIDANCE}
168
+
169
+ **Input**: Optionally specify a change name (e.g., \`/opsx:apply add-auth\`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
170
+
171
+ **Steps**
172
+
173
+ 1. **Select the change**
174
+
175
+ If a name is provided, use it. Otherwise:
176
+ - Infer from conversation context if the user mentioned a change
177
+ - Auto-select if only one active change exists
178
+ - If ambiguous, run \`openspec list --json\` to get available changes and use the **AskUserQuestion tool** to let the user select
179
+
180
+ Always announce: "Using change: <name>" and how to override (e.g., \`/opsx:apply <other>\`).
181
+
182
+ 2. **Check status to understand the schema**
183
+ \`\`\`bash
184
+ openspec status --change "<name>" --json
185
+ \`\`\`
186
+ Parse the JSON to understand:
187
+ - \`schemaName\`: The workflow being used (e.g., "spec-driven")
188
+ - \`planningHome\`, \`changeRoot\`, and \`actionContext\`: planning scope and edit constraints
189
+ - Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)
190
+
191
+ 3. **Get apply instructions**
192
+
193
+ \`\`\`bash
194
+ openspec instructions apply --change "<name>" --json
195
+ \`\`\`
196
+
197
+ This returns:
198
+ - \`contextFiles\`: artifact ID -> array of concrete file paths (varies by schema)
199
+ - Progress (total, complete, remaining)
200
+ - Task list with status
201
+ - Dynamic instruction based on current state
202
+
203
+ **Handle states:**
204
+ - If \`state: "blocked"\` (missing artifacts): show message, suggest using \`/opsx:continue\`
205
+ - If \`state: "all_done"\`: congratulate, suggest archive
206
+ - Otherwise: proceed to implementation
207
+
208
+ 4. **Read context files**
209
+
210
+ Read every file path listed under \`contextFiles\` from the apply instructions output.
211
+ The files depend on the schema being used:
212
+ - **spec-driven**: proposal, specs, design, tasks
213
+ - Other schemas: follow the contextFiles from CLI output
214
+
215
+ 5. **Show current progress**
216
+
217
+ Display:
218
+ - Schema being used
219
+ - Progress: "N/M tasks complete"
220
+ - Remaining tasks overview
221
+ - Dynamic instruction from CLI
222
+
223
+ 6. **Implement tasks (loop until done or blocked)**
224
+
225
+ For each pending task:
226
+ - Show which task is being worked on
227
+ - Make the code changes required
228
+ - Keep changes minimal and focused
229
+ - Mark task complete in the tasks file: \`- [ ]\` → \`- [x]\`
230
+ - Continue to next task
231
+
232
+ **Pause if:**
233
+ - Task is unclear → ask for clarification
234
+ - Implementation reveals a design issue → suggest updating artifacts
235
+ - Error or blocker encountered → report and wait for guidance
236
+ - User interrupts
237
+
238
+ 7. **On completion or pause, show status**
239
+
240
+ Display:
241
+ - Tasks completed this session
242
+ - Overall progress: "N/M tasks complete"
243
+ - If all done: suggest archive
244
+ - If paused: explain why and wait for guidance
245
+
246
+ **Output During Implementation**
247
+
248
+ \`\`\`
249
+ ## Implementing: <change-name> (schema: <schema-name>)
250
+
251
+ Working on task 3/7: <task description>
252
+ [...implementation happening...]
253
+ ✓ Task complete
254
+
255
+ Working on task 4/7: <task description>
256
+ [...implementation happening...]
257
+ ✓ Task complete
258
+ \`\`\`
259
+
260
+ **Output On Completion**
261
+
262
+ \`\`\`
263
+ ## Implementation Complete
264
+
265
+ **Change:** <change-name>
266
+ **Schema:** <schema-name>
267
+ **Progress:** 7/7 tasks complete ✓
268
+
269
+ ### Completed This Session
270
+ - [x] Task 1
271
+ - [x] Task 2
272
+ ...
273
+
274
+ All tasks complete! You can archive this change with \`/opsx:archive\`.
275
+ \`\`\`
276
+
277
+ **Output On Pause (Issue Encountered)**
278
+
279
+ \`\`\`
280
+ ## Implementation Paused
281
+
282
+ **Change:** <change-name>
283
+ **Schema:** <schema-name>
284
+ **Progress:** 4/7 tasks complete
285
+
286
+ ### Issue Encountered
287
+ <description of the issue>
288
+
289
+ **Options:**
290
+ 1. <option 1>
291
+ 2. <option 2>
292
+ 3. Other approach
293
+
294
+ What would you like to do?
295
+ \`\`\`
296
+
297
+ **Guardrails**
298
+ - Keep going through tasks until done or blocked
299
+ - Always read context files before starting (from the apply instructions output)
300
+ - If task is ambiguous, pause and ask before implementing
301
+ - If implementation reveals issues, pause and suggest artifact updates
302
+ - Keep code changes minimal and scoped to each task
303
+ - Update task checkbox immediately after completing each task
304
+ - Pause on errors, blockers, or unclear requirements - don't guess
305
+ - Use contextFiles from CLI output, don't assume specific file names
306
+
307
+ **Fluid Workflow Integration**
308
+
309
+ This skill supports the "actions on a change" model:
310
+
311
+ - **Can be invoked anytime**: Before all artifacts are done (if tasks exist), after partial implementation, interleaved with other actions
312
+ - **Allows artifact updates**: If implementation reveals design issues, suggest updating artifacts - not phase-locked, work fluidly`
313
+ };
314
+ }
315
+ //# sourceMappingURL=apply-change.js.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Skill Template Workflow Modules
3
+ *
4
+ * This file is generated by splitting the legacy monolithic
5
+ * templates file into workflow-focused modules.
6
+ */
7
+ import type { SkillTemplate, CommandTemplate } from '../types.js';
8
+ export declare function getArchiveChangeSkillTemplate(): SkillTemplate;
9
+ export declare function getOpsxArchiveCommandTemplate(): CommandTemplate;
10
+ //# sourceMappingURL=archive-change.d.ts.map
@@ -0,0 +1,278 @@
1
+ import { STORE_SELECTION_GUIDANCE } from './store-selection.js';
2
+ export function getArchiveChangeSkillTemplate() {
3
+ return {
4
+ name: 'openspec-archive-change',
5
+ description: 'Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.',
6
+ instructions: `Archive a completed change in the experimental workflow.
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. **If no change name provided, prompt for selection**
15
+
16
+ Run \`openspec list --json\` to get available changes. Use the **AskUserQuestion tool** to let the user select.
17
+
18
+ Show only active changes (not already archived).
19
+ Include the schema used for each change if available.
20
+
21
+ **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose.
22
+
23
+ 2. **Check artifact completion status**
24
+
25
+ Run \`openspec status --change "<name>" --json\` to check artifact completion.
26
+
27
+ Parse the JSON to understand:
28
+ - \`schemaName\`: The workflow being used
29
+ - \`planningHome\`, \`changeRoot\`, \`artifactPaths\`, and \`actionContext\`: path and scope context
30
+ - \`artifacts\`: List of artifacts with their status (\`done\` or other)
31
+
32
+ **If any artifacts are not \`done\`:**
33
+ - Display warning listing incomplete artifacts
34
+ - Use **AskUserQuestion tool** to confirm user wants to proceed
35
+ - Proceed if user confirms
36
+
37
+ 3. **Check task completion status**
38
+
39
+ Read the tasks file (typically \`tasks.md\`) to check for incomplete tasks.
40
+
41
+ Count tasks marked with \`- [ ]\` (incomplete) vs \`- [x]\` (complete).
42
+
43
+ **If incomplete tasks found:**
44
+ - Display warning showing count of incomplete tasks
45
+ - Use **AskUserQuestion tool** to confirm user wants to proceed
46
+ - Proceed if user confirms
47
+
48
+ **If no tasks file exists:** Proceed without task-related warning.
49
+
50
+ 4. **Assess delta spec sync state**
51
+
52
+ Use \`artifactPaths.specs.existingOutputPaths\` from status JSON to check for delta specs. If none exist, proceed without sync prompt.
53
+
54
+ **If delta specs exist:**
55
+ - Compare each delta spec with its corresponding main spec at \`openspec/specs/<capability>/spec.md\`
56
+ - Determine what changes would be applied (adds, modifications, removals, renames)
57
+ - Show a combined summary before prompting
58
+
59
+ **Prompt options:**
60
+ - If changes needed: "Sync now (recommended)", "Archive without syncing"
61
+ - If already synced: "Archive now", "Sync anyway", "Cancel"
62
+
63
+ If user chooses sync, use Task tool (subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change '<name>'. Delta spec analysis: <include the analyzed delta spec summary>"). Proceed to archive regardless of choice.
64
+
65
+ 5. **Perform the archive**
66
+
67
+ Create an \`archive\` directory under \`planningHome.changesDir\` if it doesn't exist:
68
+ \`\`\`bash
69
+ mkdir -p "<planningHome.changesDir>/archive"
70
+ \`\`\`
71
+
72
+ Generate target name using current date: \`YYYY-MM-DD-<change-name>\`
73
+
74
+ **Check if target already exists:**
75
+ - If yes: Fail with error, suggest renaming existing archive or using different date
76
+ - If no: Move \`changeRoot\` to the archive directory
77
+
78
+ \`\`\`bash
79
+ mv "<changeRoot>" "<planningHome.changesDir>/archive/YYYY-MM-DD-<name>"
80
+ \`\`\`
81
+
82
+ 6. **Display summary**
83
+
84
+ Show archive completion summary including:
85
+ - Change name
86
+ - Schema that was used
87
+ - Archive location
88
+ - Whether specs were synced (if applicable)
89
+ - Note about any warnings (incomplete artifacts/tasks)
90
+
91
+ **Output On Success**
92
+
93
+ \`\`\`
94
+ ## Archive Complete
95
+
96
+ **Change:** <change-name>
97
+ **Schema:** <schema-name>
98
+ **Archived to:** the archive path derived from \`planningHome.changesDir\`/YYYY-MM-DD-<name>/
99
+ **Specs:** ✓ Synced to main specs (or "No delta specs" or "Sync skipped")
100
+
101
+ All artifacts complete. All tasks complete.
102
+ \`\`\`
103
+
104
+ **Guardrails**
105
+ - Always prompt for change selection if not provided
106
+ - Use artifact graph (openspec status --json) for completion checking
107
+ - Don't block archive on warnings - just inform and confirm
108
+ - Preserve .openspec.yaml when moving to archive (it moves with the directory)
109
+ - Show clear summary of what happened
110
+ - If sync is requested, use openspec-sync-specs approach (agent-driven)
111
+ - If delta specs exist, always run the sync assessment and show the combined summary before prompting`,
112
+ license: 'MIT',
113
+ compatibility: 'Requires openspec CLI.',
114
+ metadata: { author: 'openspec', version: '1.0' },
115
+ };
116
+ }
117
+ export function getOpsxArchiveCommandTemplate() {
118
+ return {
119
+ name: 'OPSX: Archive',
120
+ description: 'Archive a completed change in the experimental workflow',
121
+ category: 'Workflow',
122
+ tags: ['workflow', 'archive', 'experimental'],
123
+ content: `Archive a completed change in the experimental workflow.
124
+
125
+ ${STORE_SELECTION_GUIDANCE}
126
+
127
+ **Input**: Optionally specify a change name after \`/opsx:archive\` (e.g., \`/opsx:archive 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. **If no change name provided, prompt for selection**
132
+
133
+ Run \`openspec list --json\` to get available changes. Use the **AskUserQuestion tool** to let the user select.
134
+
135
+ Show only active changes (not already archived).
136
+ Include the schema used for each change if available.
137
+
138
+ **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose.
139
+
140
+ 2. **Check artifact completion status**
141
+
142
+ Run \`openspec status --change "<name>" --json\` to check artifact completion.
143
+
144
+ Parse the JSON to understand:
145
+ - \`schemaName\`: The workflow being used
146
+ - \`planningHome\`, \`changeRoot\`, \`artifactPaths\`, and \`actionContext\`: path and scope context
147
+ - \`artifacts\`: List of artifacts with their status (\`done\` or other)
148
+
149
+ **If any artifacts are not \`done\`:**
150
+ - Display warning listing incomplete artifacts
151
+ - Prompt user for confirmation to continue
152
+ - Proceed if user confirms
153
+
154
+ 3. **Check task completion status**
155
+
156
+ Read the tasks file (typically \`tasks.md\`) to check for incomplete tasks.
157
+
158
+ Count tasks marked with \`- [ ]\` (incomplete) vs \`- [x]\` (complete).
159
+
160
+ **If incomplete tasks found:**
161
+ - Display warning showing count of incomplete tasks
162
+ - Prompt user for confirmation to continue
163
+ - Proceed if user confirms
164
+
165
+ **If no tasks file exists:** Proceed without task-related warning.
166
+
167
+ 4. **Assess delta spec sync state**
168
+
169
+ Use \`artifactPaths.specs.existingOutputPaths\` from status JSON to check for delta specs. If none exist, proceed without sync prompt.
170
+
171
+ **If delta specs exist:**
172
+ - Compare each delta spec with its corresponding main spec at \`openspec/specs/<capability>/spec.md\`
173
+ - Determine what changes would be applied (adds, modifications, removals, renames)
174
+ - Show a combined summary before prompting
175
+
176
+ **Prompt options:**
177
+ - If changes needed: "Sync now (recommended)", "Archive without syncing"
178
+ - If already synced: "Archive now", "Sync anyway", "Cancel"
179
+
180
+ If user chooses sync, use Task tool (subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change '<name>'. Delta spec analysis: <include the analyzed delta spec summary>"). Proceed to archive regardless of choice.
181
+
182
+ 5. **Perform the archive**
183
+
184
+ Create an \`archive\` directory under \`planningHome.changesDir\` if it doesn't exist:
185
+ \`\`\`bash
186
+ mkdir -p "<planningHome.changesDir>/archive"
187
+ \`\`\`
188
+
189
+ Generate target name using current date: \`YYYY-MM-DD-<change-name>\`
190
+
191
+ **Check if target already exists:**
192
+ - If yes: Fail with error, suggest renaming existing archive or using different date
193
+ - If no: Move \`changeRoot\` to the archive directory
194
+
195
+ \`\`\`bash
196
+ mv "<changeRoot>" "<planningHome.changesDir>/archive/YYYY-MM-DD-<name>"
197
+ \`\`\`
198
+
199
+ 6. **Display summary**
200
+
201
+ Show archive completion summary including:
202
+ - Change name
203
+ - Schema that was used
204
+ - Archive location
205
+ - Spec sync status (synced / sync skipped / no delta specs)
206
+ - Note about any warnings (incomplete artifacts/tasks)
207
+
208
+ **Output On Success**
209
+
210
+ \`\`\`
211
+ ## Archive Complete
212
+
213
+ **Change:** <change-name>
214
+ **Schema:** <schema-name>
215
+ **Archived to:** the archive path derived from \`planningHome.changesDir\`/YYYY-MM-DD-<name>/
216
+ **Specs:** ✓ Synced to main specs
217
+
218
+ All artifacts complete. All tasks complete.
219
+ \`\`\`
220
+
221
+ **Output On Success (No Delta Specs)**
222
+
223
+ \`\`\`
224
+ ## Archive Complete
225
+
226
+ **Change:** <change-name>
227
+ **Schema:** <schema-name>
228
+ **Archived to:** the archive path derived from \`planningHome.changesDir\`/YYYY-MM-DD-<name>/
229
+ **Specs:** No delta specs
230
+
231
+ All artifacts complete. All tasks complete.
232
+ \`\`\`
233
+
234
+ **Output On Success With Warnings**
235
+
236
+ \`\`\`
237
+ ## Archive Complete (with warnings)
238
+
239
+ **Change:** <change-name>
240
+ **Schema:** <schema-name>
241
+ **Archived to:** the archive path derived from \`planningHome.changesDir\`/YYYY-MM-DD-<name>/
242
+ **Specs:** Sync skipped (user chose to skip)
243
+
244
+ **Warnings:**
245
+ - Archived with 2 incomplete artifacts
246
+ - Archived with 3 incomplete tasks
247
+ - Delta spec sync was skipped (user chose to skip)
248
+
249
+ Review the archive if this was not intentional.
250
+ \`\`\`
251
+
252
+ **Output On Error (Archive Exists)**
253
+
254
+ \`\`\`
255
+ ## Archive Failed
256
+
257
+ **Change:** <change-name>
258
+ **Target:** the archive path derived from \`planningHome.changesDir\`/YYYY-MM-DD-<name>/
259
+
260
+ Target archive directory already exists.
261
+
262
+ **Options:**
263
+ 1. Rename the existing archive
264
+ 2. Delete the existing archive if it's a duplicate
265
+ 3. Wait until a different date to archive
266
+ \`\`\`
267
+
268
+ **Guardrails**
269
+ - Always prompt for change selection if not provided
270
+ - Use artifact graph (openspec status --json) for completion checking
271
+ - Don't block archive on warnings - just inform and confirm
272
+ - Preserve .openspec.yaml when moving to archive (it moves with the directory)
273
+ - Show clear summary of what happened
274
+ - If sync is requested, use the Skill tool to invoke \`openspec-sync-specs\` (agent-driven)
275
+ - If delta specs exist, always run the sync assessment and show the combined summary before prompting`
276
+ };
277
+ }
278
+ //# sourceMappingURL=archive-change.js.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Skill Template Workflow Modules
3
+ *
4
+ * This file is generated by splitting the legacy monolithic
5
+ * templates file into workflow-focused modules.
6
+ */
7
+ import type { SkillTemplate, CommandTemplate } from '../types.js';
8
+ export declare function getBulkArchiveChangeSkillTemplate(): SkillTemplate;
9
+ export declare function getOpsxBulkArchiveCommandTemplate(): CommandTemplate;
10
+ //# sourceMappingURL=bulk-archive-change.d.ts.map