openspecui 0.0.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 (311) hide show
  1. package/.gitmodules +3 -0
  2. package/CHAT.md +3 -0
  3. package/package.json +12 -0
  4. package/references/openspec/.changeset/README.md +6 -0
  5. package/references/openspec/.changeset/config.json +12 -0
  6. package/references/openspec/.coderabbit.yaml +11 -0
  7. package/references/openspec/.devcontainer/README.md +92 -0
  8. package/references/openspec/.devcontainer/devcontainer.json +68 -0
  9. package/references/openspec/.github/CODEOWNERS +2 -0
  10. package/references/openspec/.github/workflows/ci.yml +222 -0
  11. package/references/openspec/.github/workflows/release-prepare.yml +50 -0
  12. package/references/openspec/AGENTS.md +18 -0
  13. package/references/openspec/CHANGELOG.md +205 -0
  14. package/references/openspec/LICENSE +22 -0
  15. package/references/openspec/README.md +374 -0
  16. package/references/openspec/assets/openspec_dashboard.png +0 -0
  17. package/references/openspec/assets/openspec_pixel_dark.svg +89 -0
  18. package/references/openspec/assets/openspec_pixel_light.svg +89 -0
  19. package/references/openspec/bin/openspec.js +3 -0
  20. package/references/openspec/build.js +31 -0
  21. package/references/openspec/openspec/AGENTS.md +454 -0
  22. package/references/openspec/openspec/changes/IMPLEMENTATION_ORDER.md +68 -0
  23. package/references/openspec/openspec/changes/add-antigravity-support/proposal.md +11 -0
  24. package/references/openspec/openspec/changes/add-antigravity-support/specs/cli-init/spec.md +9 -0
  25. package/references/openspec/openspec/changes/add-antigravity-support/specs/cli-update/spec.md +8 -0
  26. package/references/openspec/openspec/changes/add-antigravity-support/tasks.md +12 -0
  27. package/references/openspec/openspec/changes/add-scaffold-command/proposal.md +11 -0
  28. package/references/openspec/openspec/changes/add-scaffold-command/specs/cli-scaffold/spec.md +36 -0
  29. package/references/openspec/openspec/changes/add-scaffold-command/tasks.md +12 -0
  30. package/references/openspec/openspec/changes/archive/2025-01-11-add-update-command/design.md +86 -0
  31. package/references/openspec/openspec/changes/archive/2025-01-11-add-update-command/proposal.md +29 -0
  32. package/references/openspec/openspec/changes/archive/2025-01-11-add-update-command/specs/cli-update/spec.md +59 -0
  33. package/references/openspec/openspec/changes/archive/2025-01-11-add-update-command/tasks.md +20 -0
  34. package/references/openspec/openspec/changes/archive/2025-01-13-add-list-command/proposal.md +20 -0
  35. package/references/openspec/openspec/changes/archive/2025-01-13-add-list-command/specs/cli-list/spec.md +69 -0
  36. package/references/openspec/openspec/changes/archive/2025-01-13-add-list-command/tasks.md +26 -0
  37. package/references/openspec/openspec/changes/archive/2025-08-05-initialize-typescript-project/design.md +64 -0
  38. package/references/openspec/openspec/changes/archive/2025-08-05-initialize-typescript-project/proposal.md +18 -0
  39. package/references/openspec/openspec/changes/archive/2025-08-05-initialize-typescript-project/tasks.md +25 -0
  40. package/references/openspec/openspec/changes/archive/2025-08-06-add-init-command/design.md +104 -0
  41. package/references/openspec/openspec/changes/archive/2025-08-06-add-init-command/proposal.md +30 -0
  42. package/references/openspec/openspec/changes/archive/2025-08-06-add-init-command/specs/cli-init/spec.md +148 -0
  43. package/references/openspec/openspec/changes/archive/2025-08-06-add-init-command/tasks.md +38 -0
  44. package/references/openspec/openspec/changes/archive/2025-08-06-adopt-future-state-storage/proposal.md +24 -0
  45. package/references/openspec/openspec/changes/archive/2025-08-06-adopt-future-state-storage/specs/openspec-conventions/spec.md +120 -0
  46. package/references/openspec/openspec/changes/archive/2025-08-06-adopt-future-state-storage/tasks.md +38 -0
  47. package/references/openspec/openspec/changes/archive/2025-08-11-add-complexity-guidelines/proposal.md +13 -0
  48. package/references/openspec/openspec/changes/archive/2025-08-11-add-complexity-guidelines/specs/openspec-docs/README.md +472 -0
  49. package/references/openspec/openspec/changes/archive/2025-08-11-add-complexity-guidelines/tasks.md +9 -0
  50. package/references/openspec/openspec/changes/archive/2025-08-13-add-archive-command/proposal.md +15 -0
  51. package/references/openspec/openspec/changes/archive/2025-08-13-add-archive-command/specs/cli-archive/spec.md +111 -0
  52. package/references/openspec/openspec/changes/archive/2025-08-13-add-archive-command/tasks.md +44 -0
  53. package/references/openspec/openspec/changes/archive/2025-08-13-add-diff-command/proposal.md +19 -0
  54. package/references/openspec/openspec/changes/archive/2025-08-13-add-diff-command/specs/cli-diff/spec.md +77 -0
  55. package/references/openspec/openspec/changes/archive/2025-08-13-add-diff-command/tasks.md +23 -0
  56. package/references/openspec/openspec/changes/archive/2025-08-19-add-change-commands/design.md +56 -0
  57. package/references/openspec/openspec/changes/archive/2025-08-19-add-change-commands/proposal.md +17 -0
  58. package/references/openspec/openspec/changes/archive/2025-08-19-add-change-commands/specs/cli-change/spec.md +48 -0
  59. package/references/openspec/openspec/changes/archive/2025-08-19-add-change-commands/specs/cli-list/spec.md +12 -0
  60. package/references/openspec/openspec/changes/archive/2025-08-19-add-change-commands/tasks.md +34 -0
  61. package/references/openspec/openspec/changes/archive/2025-08-19-add-interactive-show-command/proposal.md +20 -0
  62. package/references/openspec/openspec/changes/archive/2025-08-19-add-interactive-show-command/specs/cli-change/spec.md +23 -0
  63. package/references/openspec/openspec/changes/archive/2025-08-19-add-interactive-show-command/specs/cli-show/spec.md +83 -0
  64. package/references/openspec/openspec/changes/archive/2025-08-19-add-interactive-show-command/specs/cli-spec/spec.md +23 -0
  65. package/references/openspec/openspec/changes/archive/2025-08-19-add-interactive-show-command/tasks.md +142 -0
  66. package/references/openspec/openspec/changes/archive/2025-08-19-add-skip-specs-archive-option/proposal.md +13 -0
  67. package/references/openspec/openspec/changes/archive/2025-08-19-add-skip-specs-archive-option/specs/cli-archive/spec.md +191 -0
  68. package/references/openspec/openspec/changes/archive/2025-08-19-add-skip-specs-archive-option/tasks.md +57 -0
  69. package/references/openspec/openspec/changes/archive/2025-08-19-add-spec-commands/design.md +45 -0
  70. package/references/openspec/openspec/changes/archive/2025-08-19-add-spec-commands/proposal.md +19 -0
  71. package/references/openspec/openspec/changes/archive/2025-08-19-add-spec-commands/specs/cli-spec/spec.md +43 -0
  72. package/references/openspec/openspec/changes/archive/2025-08-19-add-spec-commands/tasks.md +22 -0
  73. package/references/openspec/openspec/changes/archive/2025-08-19-add-zod-validation/design.md +104 -0
  74. package/references/openspec/openspec/changes/archive/2025-08-19-add-zod-validation/proposal.md +22 -0
  75. package/references/openspec/openspec/changes/archive/2025-08-19-add-zod-validation/specs/cli-archive/spec.md +18 -0
  76. package/references/openspec/openspec/changes/archive/2025-08-19-add-zod-validation/specs/cli-diff/spec.md +12 -0
  77. package/references/openspec/openspec/changes/archive/2025-08-19-add-zod-validation/tasks.md +59 -0
  78. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/proposal.md +93 -0
  79. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/specs/cli-archive/spec.md +48 -0
  80. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/specs/cli-diff/spec.md +45 -0
  81. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/specs/openspec-conventions/spec.md +101 -0
  82. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-delta-based-changes/tasks.md +55 -0
  83. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/design.md +19 -0
  84. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/proposal.md +67 -0
  85. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/specs/cli-list/spec.md +57 -0
  86. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/specs/openspec-conventions/spec.md +23 -0
  87. package/references/openspec/openspec/changes/archive/2025-08-19-adopt-verb-noun-cli-structure/tasks.md +27 -0
  88. package/references/openspec/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/proposal.md +20 -0
  89. package/references/openspec/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/specs/cli-change/spec.md +22 -0
  90. package/references/openspec/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/specs/cli-spec/spec.md +23 -0
  91. package/references/openspec/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/specs/cli-validate/spec.md +149 -0
  92. package/references/openspec/openspec/changes/archive/2025-08-19-bulk-validation-interactive-selection/tasks.md +81 -0
  93. package/references/openspec/openspec/changes/archive/2025-08-19-fix-update-tool-selection/proposal.md +40 -0
  94. package/references/openspec/openspec/changes/archive/2025-08-19-fix-update-tool-selection/specs/cli-update/spec.md +23 -0
  95. package/references/openspec/openspec/changes/archive/2025-08-19-fix-update-tool-selection/tasks.md +21 -0
  96. package/references/openspec/openspec/changes/archive/2025-08-19-improve-validate-error-messages/proposal.md +25 -0
  97. package/references/openspec/openspec/changes/archive/2025-08-19-improve-validate-error-messages/specs/cli-validate/spec.md +55 -0
  98. package/references/openspec/openspec/changes/archive/2025-08-19-improve-validate-error-messages/tasks.md +21 -0
  99. package/references/openspec/openspec/changes/archive/2025-08-19-structured-spec-format/proposal.md +36 -0
  100. package/references/openspec/openspec/changes/archive/2025-08-19-structured-spec-format/specs/openspec-conventions/spec.md +192 -0
  101. package/references/openspec/openspec/changes/archive/2025-08-19-structured-spec-format/tasks.md +19 -0
  102. package/references/openspec/openspec/changes/archive/2025-09-12-add-view-dashboard-command/proposal.md +38 -0
  103. package/references/openspec/openspec/changes/archive/2025-09-12-add-view-dashboard-command/specs/cli-view/spec.md +109 -0
  104. package/references/openspec/openspec/changes/archive/2025-09-12-add-view-dashboard-command/tasks.md +47 -0
  105. package/references/openspec/openspec/changes/archive/2025-09-29-add-agents-md-config/proposal.md +28 -0
  106. package/references/openspec/openspec/changes/archive/2025-09-29-add-agents-md-config/specs/cli-init/spec.md +71 -0
  107. package/references/openspec/openspec/changes/archive/2025-09-29-add-agents-md-config/specs/cli-update/spec.md +41 -0
  108. package/references/openspec/openspec/changes/archive/2025-09-29-add-agents-md-config/tasks.md +17 -0
  109. package/references/openspec/openspec/changes/archive/2025-09-29-add-multi-agent-init/proposal.md +35 -0
  110. package/references/openspec/openspec/changes/archive/2025-09-29-add-multi-agent-init/specs/cli-init/spec.md +45 -0
  111. package/references/openspec/openspec/changes/archive/2025-09-29-add-multi-agent-init/tasks.md +16 -0
  112. package/references/openspec/openspec/changes/archive/2025-09-29-add-slash-command-support/proposal.md +119 -0
  113. package/references/openspec/openspec/changes/archive/2025-09-29-add-slash-command-support/specs/cli-init/spec.md +21 -0
  114. package/references/openspec/openspec/changes/archive/2025-09-29-add-slash-command-support/specs/cli-update/spec.md +22 -0
  115. package/references/openspec/openspec/changes/archive/2025-09-29-add-slash-command-support/tasks.md +20 -0
  116. package/references/openspec/openspec/changes/archive/2025-09-29-improve-cli-e2e-plan/proposal.md +19 -0
  117. package/references/openspec/openspec/changes/archive/2025-09-29-improve-cli-e2e-plan/tasks.md +9 -0
  118. package/references/openspec/openspec/changes/archive/2025-09-29-improve-deterministic-tests/proposal.md +78 -0
  119. package/references/openspec/openspec/changes/archive/2025-09-29-improve-deterministic-tests/tasks.md +25 -0
  120. package/references/openspec/openspec/changes/archive/2025-09-29-improve-init-onboarding/proposal.md +13 -0
  121. package/references/openspec/openspec/changes/archive/2025-09-29-improve-init-onboarding/specs/cli-init/spec.md +92 -0
  122. package/references/openspec/openspec/changes/archive/2025-09-29-improve-init-onboarding/tasks.md +12 -0
  123. package/references/openspec/openspec/changes/archive/2025-09-29-remove-diff-command/proposal.md +81 -0
  124. package/references/openspec/openspec/changes/archive/2025-09-29-remove-diff-command/tasks.md +37 -0
  125. package/references/openspec/openspec/changes/archive/2025-09-29-sort-active-changes-by-progress/proposal.md +25 -0
  126. package/references/openspec/openspec/changes/archive/2025-09-29-sort-active-changes-by-progress/specs/cli-view/spec.md +9 -0
  127. package/references/openspec/openspec/changes/archive/2025-09-29-sort-active-changes-by-progress/tasks.md +8 -0
  128. package/references/openspec/openspec/changes/archive/2025-09-29-update-agent-file-name/proposal.md +29 -0
  129. package/references/openspec/openspec/changes/archive/2025-09-29-update-agent-file-name/specs/cli-init/spec.md +40 -0
  130. package/references/openspec/openspec/changes/archive/2025-09-29-update-agent-file-name/specs/cli-update/spec.md +22 -0
  131. package/references/openspec/openspec/changes/archive/2025-09-29-update-agent-file-name/specs/openspec-conventions/spec.md +27 -0
  132. package/references/openspec/openspec/changes/archive/2025-09-29-update-agent-file-name/tasks.md +22 -0
  133. package/references/openspec/openspec/changes/archive/2025-09-29-update-agent-instructions/design.md +130 -0
  134. package/references/openspec/openspec/changes/archive/2025-09-29-update-agent-instructions/proposal.md +117 -0
  135. package/references/openspec/openspec/changes/archive/2025-09-29-update-agent-instructions/tasks.md +69 -0
  136. package/references/openspec/openspec/changes/archive/2025-09-29-update-markdown-parser-crlf/proposal.md +19 -0
  137. package/references/openspec/openspec/changes/archive/2025-09-29-update-markdown-parser-crlf/specs/cli-validate/spec.md +9 -0
  138. package/references/openspec/openspec/changes/archive/2025-09-29-update-markdown-parser-crlf/tasks.md +11 -0
  139. package/references/openspec/openspec/changes/archive/2025-10-14-add-codex-slash-command-support/proposal.md +25 -0
  140. package/references/openspec/openspec/changes/archive/2025-10-14-add-codex-slash-command-support/specs/cli-init/spec.md +56 -0
  141. package/references/openspec/openspec/changes/archive/2025-10-14-add-codex-slash-command-support/specs/cli-update/spec.md +41 -0
  142. package/references/openspec/openspec/changes/archive/2025-10-14-add-codex-slash-command-support/tasks.md +19 -0
  143. package/references/openspec/openspec/changes/archive/2025-10-14-add-github-copilot-prompts/proposal.md +25 -0
  144. package/references/openspec/openspec/changes/archive/2025-10-14-add-github-copilot-prompts/specs/cli-init/spec.md +48 -0
  145. package/references/openspec/openspec/changes/archive/2025-10-14-add-github-copilot-prompts/specs/cli-update/spec.md +48 -0
  146. package/references/openspec/openspec/changes/archive/2025-10-14-add-github-copilot-prompts/tasks.md +30 -0
  147. package/references/openspec/openspec/changes/archive/2025-10-14-add-kilocode-workflows/proposal.md +17 -0
  148. package/references/openspec/openspec/changes/archive/2025-10-14-add-kilocode-workflows/specs/cli-init/spec.md +43 -0
  149. package/references/openspec/openspec/changes/archive/2025-10-14-add-kilocode-workflows/specs/cli-update/spec.md +27 -0
  150. package/references/openspec/openspec/changes/archive/2025-10-14-add-kilocode-workflows/tasks.md +15 -0
  151. package/references/openspec/openspec/changes/archive/2025-10-14-add-non-interactive-init-options/proposal.md +12 -0
  152. package/references/openspec/openspec/changes/archive/2025-10-14-add-non-interactive-init-options/specs/cli-init/spec.md +39 -0
  153. package/references/openspec/openspec/changes/archive/2025-10-14-add-non-interactive-init-options/tasks.md +17 -0
  154. package/references/openspec/openspec/changes/archive/2025-10-14-add-windsurf-workflows/proposal.md +17 -0
  155. package/references/openspec/openspec/changes/archive/2025-10-14-add-windsurf-workflows/specs/cli-init/spec.md +42 -0
  156. package/references/openspec/openspec/changes/archive/2025-10-14-add-windsurf-workflows/specs/cli-update/spec.md +27 -0
  157. package/references/openspec/openspec/changes/archive/2025-10-14-add-windsurf-workflows/tasks.md +17 -0
  158. package/references/openspec/openspec/changes/archive/2025-10-14-enhance-validation-error-messages/proposal.md +12 -0
  159. package/references/openspec/openspec/changes/archive/2025-10-14-enhance-validation-error-messages/specs/cli-validate/spec.md +39 -0
  160. package/references/openspec/openspec/changes/archive/2025-10-14-enhance-validation-error-messages/tasks.md +12 -0
  161. package/references/openspec/openspec/changes/archive/2025-10-14-improve-agent-instruction-usability/proposal.md +12 -0
  162. package/references/openspec/openspec/changes/archive/2025-10-14-improve-agent-instruction-usability/specs/docs-agent-instructions/spec.md +33 -0
  163. package/references/openspec/openspec/changes/archive/2025-10-14-improve-agent-instruction-usability/tasks.md +11 -0
  164. package/references/openspec/openspec/changes/archive/2025-10-14-slim-root-agents-file/proposal.md +13 -0
  165. package/references/openspec/openspec/changes/archive/2025-10-14-slim-root-agents-file/tasks.md +15 -0
  166. package/references/openspec/openspec/changes/archive/2025-10-14-update-cli-init-enter-selection/proposal.md +14 -0
  167. package/references/openspec/openspec/changes/archive/2025-10-14-update-cli-init-enter-selection/specs/cli-init/spec.md +10 -0
  168. package/references/openspec/openspec/changes/archive/2025-10-14-update-cli-init-enter-selection/tasks.md +8 -0
  169. package/references/openspec/openspec/changes/archive/2025-10-14-update-cli-init-root-agents/proposal.md +15 -0
  170. package/references/openspec/openspec/changes/archive/2025-10-14-update-cli-init-root-agents/specs/cli-init/spec.md +32 -0
  171. package/references/openspec/openspec/changes/archive/2025-10-14-update-cli-init-root-agents/specs/cli-update/spec.md +10 -0
  172. package/references/openspec/openspec/changes/archive/2025-10-14-update-cli-init-root-agents/tasks.md +11 -0
  173. package/references/openspec/openspec/changes/archive/2025-10-14-update-release-automation/proposal.md +49 -0
  174. package/references/openspec/openspec/changes/archive/2025-10-14-update-release-automation/tasks.md +12 -0
  175. package/references/openspec/openspec/changes/archive/2025-10-22-add-archive-command-arguments/proposal.md +17 -0
  176. package/references/openspec/openspec/changes/archive/2025-10-22-add-archive-command-arguments/specs/cli-update/spec.md +32 -0
  177. package/references/openspec/openspec/changes/archive/2025-10-22-add-archive-command-arguments/tasks.md +15 -0
  178. package/references/openspec/openspec/changes/archive/2025-10-22-add-cline-support/proposal.md +15 -0
  179. package/references/openspec/openspec/changes/archive/2025-10-22-add-cline-support/specs/cli-init/spec.md +97 -0
  180. package/references/openspec/openspec/changes/archive/2025-10-22-add-cline-support/tasks.md +19 -0
  181. package/references/openspec/openspec/changes/archive/2025-10-22-add-crush-support/proposal.md +13 -0
  182. package/references/openspec/openspec/changes/archive/2025-10-22-add-crush-support/specs/cli-init/spec.md +67 -0
  183. package/references/openspec/openspec/changes/archive/2025-10-22-add-crush-support/tasks.md +7 -0
  184. package/references/openspec/openspec/changes/archive/2025-10-22-add-factory-slash-commands/proposal.md +12 -0
  185. package/references/openspec/openspec/changes/archive/2025-10-22-add-factory-slash-commands/specs/cli-init/spec.md +54 -0
  186. package/references/openspec/openspec/changes/archive/2025-10-22-add-factory-slash-commands/specs/cli-update/spec.md +54 -0
  187. package/references/openspec/openspec/changes/archive/2025-10-22-add-factory-slash-commands/tasks.md +11 -0
  188. package/references/openspec/openspec/changes/fix-cline-workflows-implementation/proposal.md +13 -0
  189. package/references/openspec/openspec/changes/fix-cline-workflows-implementation/specs/cli-init/spec.md +11 -0
  190. package/references/openspec/openspec/changes/fix-cline-workflows-implementation/tasks.md +13 -0
  191. package/references/openspec/openspec/changes/make-validation-scope-aware/proposal.md +12 -0
  192. package/references/openspec/openspec/changes/make-validation-scope-aware/specs/cli-validate/spec.md +25 -0
  193. package/references/openspec/openspec/changes/make-validation-scope-aware/tasks.md +16 -0
  194. package/references/openspec/openspec/project.md +53 -0
  195. package/references/openspec/openspec/specs/cli-archive/spec.md +210 -0
  196. package/references/openspec/openspec/specs/cli-change/spec.md +91 -0
  197. package/references/openspec/openspec/specs/cli-init/spec.md +311 -0
  198. package/references/openspec/openspec/specs/cli-list/spec.md +103 -0
  199. package/references/openspec/openspec/specs/cli-show/spec.md +85 -0
  200. package/references/openspec/openspec/specs/cli-spec/spec.md +87 -0
  201. package/references/openspec/openspec/specs/cli-update/spec.md +190 -0
  202. package/references/openspec/openspec/specs/cli-validate/spec.md +218 -0
  203. package/references/openspec/openspec/specs/cli-view/spec.md +105 -0
  204. package/references/openspec/openspec/specs/docs-agent-instructions/spec.md +38 -0
  205. package/references/openspec/openspec/specs/openspec-conventions/spec.md +474 -0
  206. package/references/openspec/openspec-parallel-merge-plan.md +98 -0
  207. package/references/openspec/package.json +73 -0
  208. package/references/openspec/pnpm-lock.yaml +2324 -0
  209. package/references/openspec/scripts/pack-version-check.mjs +111 -0
  210. package/references/openspec/src/cli/index.ts +253 -0
  211. package/references/openspec/src/commands/change.ts +291 -0
  212. package/references/openspec/src/commands/show.ts +139 -0
  213. package/references/openspec/src/commands/spec.ts +250 -0
  214. package/references/openspec/src/commands/validate.ts +305 -0
  215. package/references/openspec/src/core/archive.ts +606 -0
  216. package/references/openspec/src/core/config.ts +41 -0
  217. package/references/openspec/src/core/configurators/agents.ts +23 -0
  218. package/references/openspec/src/core/configurators/base.ts +6 -0
  219. package/references/openspec/src/core/configurators/claude.ts +23 -0
  220. package/references/openspec/src/core/configurators/cline.ts +23 -0
  221. package/references/openspec/src/core/configurators/codebuddy.ts +24 -0
  222. package/references/openspec/src/core/configurators/costrict.ts +23 -0
  223. package/references/openspec/src/core/configurators/iflow.ts +23 -0
  224. package/references/openspec/src/core/configurators/qoder.ts +53 -0
  225. package/references/openspec/src/core/configurators/qwen.ts +47 -0
  226. package/references/openspec/src/core/configurators/registry.ts +49 -0
  227. package/references/openspec/src/core/configurators/slash/amazon-q.ts +51 -0
  228. package/references/openspec/src/core/configurators/slash/antigravity.ts +28 -0
  229. package/references/openspec/src/core/configurators/slash/auggie.ts +37 -0
  230. package/references/openspec/src/core/configurators/slash/base.ts +95 -0
  231. package/references/openspec/src/core/configurators/slash/claude.ts +42 -0
  232. package/references/openspec/src/core/configurators/slash/cline.ts +27 -0
  233. package/references/openspec/src/core/configurators/slash/codebuddy.ts +43 -0
  234. package/references/openspec/src/core/configurators/slash/codex.ts +126 -0
  235. package/references/openspec/src/core/configurators/slash/costrict.ts +36 -0
  236. package/references/openspec/src/core/configurators/slash/crush.ts +42 -0
  237. package/references/openspec/src/core/configurators/slash/cursor.ts +42 -0
  238. package/references/openspec/src/core/configurators/slash/factory.ts +41 -0
  239. package/references/openspec/src/core/configurators/slash/gemini.ts +27 -0
  240. package/references/openspec/src/core/configurators/slash/github-copilot.ts +39 -0
  241. package/references/openspec/src/core/configurators/slash/iflow.ts +42 -0
  242. package/references/openspec/src/core/configurators/slash/kilocode.ts +21 -0
  243. package/references/openspec/src/core/configurators/slash/opencode.ts +83 -0
  244. package/references/openspec/src/core/configurators/slash/qoder.ts +84 -0
  245. package/references/openspec/src/core/configurators/slash/qwen.ts +55 -0
  246. package/references/openspec/src/core/configurators/slash/registry.ts +81 -0
  247. package/references/openspec/src/core/configurators/slash/roocode.ts +27 -0
  248. package/references/openspec/src/core/configurators/slash/toml-base.ts +66 -0
  249. package/references/openspec/src/core/configurators/slash/windsurf.ts +27 -0
  250. package/references/openspec/src/core/converters/json-converter.ts +61 -0
  251. package/references/openspec/src/core/index.ts +2 -0
  252. package/references/openspec/src/core/init.ts +986 -0
  253. package/references/openspec/src/core/list.ts +104 -0
  254. package/references/openspec/src/core/parsers/change-parser.ts +234 -0
  255. package/references/openspec/src/core/parsers/markdown-parser.ts +237 -0
  256. package/references/openspec/src/core/parsers/requirement-blocks.ts +234 -0
  257. package/references/openspec/src/core/schemas/base.schema.ts +20 -0
  258. package/references/openspec/src/core/schemas/change.schema.ts +42 -0
  259. package/references/openspec/src/core/schemas/index.ts +20 -0
  260. package/references/openspec/src/core/schemas/spec.schema.ts +17 -0
  261. package/references/openspec/src/core/styles/palette.ts +8 -0
  262. package/references/openspec/src/core/templates/agents-root-stub.ts +16 -0
  263. package/references/openspec/src/core/templates/agents-template.ts +457 -0
  264. package/references/openspec/src/core/templates/claude-template.ts +1 -0
  265. package/references/openspec/src/core/templates/cline-template.ts +1 -0
  266. package/references/openspec/src/core/templates/costrict-template.ts +1 -0
  267. package/references/openspec/src/core/templates/index.ts +50 -0
  268. package/references/openspec/src/core/templates/project-template.ts +38 -0
  269. package/references/openspec/src/core/templates/slash-command-templates.ts +60 -0
  270. package/references/openspec/src/core/update.ts +129 -0
  271. package/references/openspec/src/core/validation/constants.ts +48 -0
  272. package/references/openspec/src/core/validation/types.ts +19 -0
  273. package/references/openspec/src/core/validation/validator.ts +448 -0
  274. package/references/openspec/src/core/view.ts +189 -0
  275. package/references/openspec/src/index.ts +2 -0
  276. package/references/openspec/src/utils/file-system.ts +187 -0
  277. package/references/openspec/src/utils/index.ts +2 -0
  278. package/references/openspec/src/utils/interactive.ts +7 -0
  279. package/references/openspec/src/utils/item-discovery.ts +45 -0
  280. package/references/openspec/src/utils/match.ts +26 -0
  281. package/references/openspec/src/utils/task-progress.ts +43 -0
  282. package/references/openspec/test/cli-e2e/basic.test.ts +156 -0
  283. package/references/openspec/test/commands/change.interactive-show.test.ts +45 -0
  284. package/references/openspec/test/commands/change.interactive-validate.test.ts +48 -0
  285. package/references/openspec/test/commands/show.test.ts +123 -0
  286. package/references/openspec/test/commands/spec.interactive-show.test.ts +44 -0
  287. package/references/openspec/test/commands/spec.interactive-validate.test.ts +44 -0
  288. package/references/openspec/test/commands/spec.test.ts +324 -0
  289. package/references/openspec/test/commands/validate.enriched-output.test.ts +49 -0
  290. package/references/openspec/test/commands/validate.test.ts +133 -0
  291. package/references/openspec/test/core/archive.test.ts +680 -0
  292. package/references/openspec/test/core/commands/change-command.list.test.ts +76 -0
  293. package/references/openspec/test/core/commands/change-command.show-validate.test.ts +111 -0
  294. package/references/openspec/test/core/converters/json-converter.test.ts +184 -0
  295. package/references/openspec/test/core/init.test.ts +1710 -0
  296. package/references/openspec/test/core/list.test.ts +165 -0
  297. package/references/openspec/test/core/parsers/change-parser.test.ts +52 -0
  298. package/references/openspec/test/core/parsers/markdown-parser.test.ts +291 -0
  299. package/references/openspec/test/core/update.test.ts +1642 -0
  300. package/references/openspec/test/core/validation.enriched-messages.test.ts +74 -0
  301. package/references/openspec/test/core/validation.test.ts +489 -0
  302. package/references/openspec/test/core/view.test.ts +79 -0
  303. package/references/openspec/test/fixtures/tmp-init/openspec/changes/c1/proposal.md +7 -0
  304. package/references/openspec/test/fixtures/tmp-init/openspec/changes/c1/specs/alpha/spec.md +8 -0
  305. package/references/openspec/test/fixtures/tmp-init/openspec/specs/alpha/spec.md +12 -0
  306. package/references/openspec/test/helpers/run-cli.ts +139 -0
  307. package/references/openspec/test/utils/file-system.test.ts +211 -0
  308. package/references/openspec/test/utils/marker-updates.test.ts +287 -0
  309. package/references/openspec/tsconfig.json +21 -0
  310. package/references/openspec/vitest.config.ts +25 -0
  311. package/references/openspec/vitest.setup.ts +6 -0
@@ -0,0 +1,89 @@
1
+ <svg width="640" height="80" viewBox="0 0 640 80" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M32 0H16V16H32V0Z" fill="white"/>
3
+ <path d="M48 0H32V16H48V0Z" fill="white"/>
4
+ <path d="M16 16H0V32H16V16Z" fill="white"/>
5
+ <path d="M64 16H48V32H64V16Z" fill="white"/>
6
+ <path d="M16 32H0V48H16V32Z" fill="white"/>
7
+ <path d="M64 32H48V48H64V32Z" fill="white"/>
8
+ <path d="M16 48H0V64H16V48Z" fill="white"/>
9
+ <path d="M64 48H48V64H64V48Z" fill="white"/>
10
+ <path d="M32 64H16V80H32V64Z" fill="white"/>
11
+ <path d="M48 64H32V80H48V64Z" fill="white"/>
12
+ <path d="M96 0H80V16H96V0Z" fill="white"/>
13
+ <path d="M112 0H96V16H112V0Z" fill="white"/>
14
+ <path d="M128 0H112V16H128V0Z" fill="white"/>
15
+ <path d="M96 16H80V32H96V16Z" fill="white"/>
16
+ <path d="M144 16H128V32H144V16Z" fill="white"/>
17
+ <path d="M96 32H80V48H96V32Z" fill="white"/>
18
+ <path d="M112 32H96V48H112V32Z" fill="white"/>
19
+ <path d="M128 32H112V48H128V32Z" fill="white"/>
20
+ <path d="M144 32H128V48H144V32Z" fill="white"/>
21
+ <path d="M96 48H80V64H96V48Z" fill="white"/>
22
+ <path d="M96 64H80V80H96V64Z" fill="white"/>
23
+ <path d="M176 0H160V16H176V0Z" fill="white"/>
24
+ <path d="M192 0H176V16H192V0Z" fill="white"/>
25
+ <path d="M208 0H192V16H208V0Z" fill="white"/>
26
+ <path d="M224 0H208V16H224V0Z" fill="white"/>
27
+ <path d="M176 16H160V32H176V16Z" fill="white"/>
28
+ <path d="M176 32H160V48H176V32Z" fill="white"/>
29
+ <path d="M192 32H176V48H192V32Z" fill="white"/>
30
+ <path d="M208 32H192V48H208V32Z" fill="white"/>
31
+ <path d="M176 48H160V64H176V48Z" fill="white"/>
32
+ <path d="M176 64H160V80H176V64Z" fill="white"/>
33
+ <path d="M192 64H176V80H192V64Z" fill="white"/>
34
+ <path d="M208 64H192V80H208V64Z" fill="white"/>
35
+ <path d="M224 64H208V80H224V64Z" fill="white"/>
36
+ <path d="M256 0H240V16H256V0Z" fill="white"/>
37
+ <path d="M304 0H288V16H304V0Z" fill="white"/>
38
+ <path d="M256 16H240V32H256V16Z" fill="white"/>
39
+ <path d="M272 16H256V32H272V16Z" fill="white"/>
40
+ <path d="M304 16H288V32H304V16Z" fill="white"/>
41
+ <path d="M256 32H240V48H256V32Z" fill="white"/>
42
+ <path d="M288 32H272V48H288V32Z" fill="white"/>
43
+ <path d="M304 32H288V48H304V32Z" fill="white"/>
44
+ <path d="M256 48H240V64H256V48Z" fill="white"/>
45
+ <path d="M304 48H288V64H304V48Z" fill="white"/>
46
+ <path d="M256 64H240V80H256V64Z" fill="white"/>
47
+ <path d="M304 64H288V80H304V64Z" fill="white"/>
48
+ <path d="M352 0H336V16H352V0Z" fill="white"/>
49
+ <path d="M368 0H352V16H368V0Z" fill="white"/>
50
+ <path d="M384 0H368V16H384V0Z" fill="white"/>
51
+ <path d="M336 16H320V32H336V16Z" fill="white"/>
52
+ <path d="M352 32H336V48H352V32Z" fill="white"/>
53
+ <path d="M368 32H352V48H368V32Z" fill="white"/>
54
+ <path d="M384 48H368V64H384V48Z" fill="white"/>
55
+ <path d="M336 64H320V80H336V64Z" fill="white"/>
56
+ <path d="M352 64H336V80H352V64Z" fill="white"/>
57
+ <path d="M368 64H352V80H368V64Z" fill="white"/>
58
+ <path d="M416 0H400V16H416V0Z" fill="white"/>
59
+ <path d="M432 0H416V16H432V0Z" fill="white"/>
60
+ <path d="M448 0H432V16H448V0Z" fill="white"/>
61
+ <path d="M416 16H400V32H416V16Z" fill="white"/>
62
+ <path d="M464 16H448V32H464V16Z" fill="white"/>
63
+ <path d="M416 32H400V48H416V32Z" fill="white"/>
64
+ <path d="M432 32H416V48H432V32Z" fill="white"/>
65
+ <path d="M448 32H432V48H448V32Z" fill="white"/>
66
+ <path d="M464 32H448V48H464V32Z" fill="white"/>
67
+ <path d="M416 48H400V64H416V48Z" fill="white"/>
68
+ <path d="M416 64H400V80H416V64Z" fill="white"/>
69
+ <path d="M496 0H480V16H496V0Z" fill="white"/>
70
+ <path d="M512 0H496V16H512V0Z" fill="white"/>
71
+ <path d="M528 0H512V16H528V0Z" fill="white"/>
72
+ <path d="M544 0H528V16H544V0Z" fill="white"/>
73
+ <path d="M496 16H480V32H496V16Z" fill="white"/>
74
+ <path d="M496 32H480V48H496V32Z" fill="white"/>
75
+ <path d="M512 32H496V48H512V32Z" fill="white"/>
76
+ <path d="M528 32H512V48H528V32Z" fill="white"/>
77
+ <path d="M496 48H480V64H496V48Z" fill="white"/>
78
+ <path d="M496 64H480V80H496V64Z" fill="white"/>
79
+ <path d="M512 64H496V80H512V64Z" fill="white"/>
80
+ <path d="M528 64H512V80H528V64Z" fill="white"/>
81
+ <path d="M544 64H528V80H544V64Z" fill="white"/>
82
+ <path d="M592 0H576V16H592V0Z" fill="white"/>
83
+ <path d="M608 0H592V16H608V0Z" fill="white"/>
84
+ <path d="M576 16H560V32H576V16Z" fill="white"/>
85
+ <path d="M576 32H560V48H576V32Z" fill="white"/>
86
+ <path d="M576 48H560V64H576V48Z" fill="white"/>
87
+ <path d="M592 64H576V80H592V64Z" fill="white"/>
88
+ <path d="M608 64H592V80H608V64Z" fill="white"/>
89
+ </svg>
@@ -0,0 +1,89 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="640" height="80" viewBox="0 0 640 80">
2
+ <rect x="16" y="0" width="16" height="16" fill="black" />
3
+ <rect x="32" y="0" width="16" height="16" fill="black" />
4
+ <rect x="0" y="16" width="16" height="16" fill="black" />
5
+ <rect x="48" y="16" width="16" height="16" fill="black" />
6
+ <rect x="0" y="32" width="16" height="16" fill="black" />
7
+ <rect x="48" y="32" width="16" height="16" fill="black" />
8
+ <rect x="0" y="48" width="16" height="16" fill="black" />
9
+ <rect x="48" y="48" width="16" height="16" fill="black" />
10
+ <rect x="16" y="64" width="16" height="16" fill="black" />
11
+ <rect x="32" y="64" width="16" height="16" fill="black" />
12
+ <rect x="80" y="0" width="16" height="16" fill="black" />
13
+ <rect x="96" y="0" width="16" height="16" fill="black" />
14
+ <rect x="112" y="0" width="16" height="16" fill="black" />
15
+ <rect x="80" y="16" width="16" height="16" fill="black" />
16
+ <rect x="128" y="16" width="16" height="16" fill="black" />
17
+ <rect x="80" y="32" width="16" height="16" fill="black" />
18
+ <rect x="96" y="32" width="16" height="16" fill="black" />
19
+ <rect x="112" y="32" width="16" height="16" fill="black" />
20
+ <rect x="128" y="32" width="16" height="16" fill="black" />
21
+ <rect x="80" y="48" width="16" height="16" fill="black" />
22
+ <rect x="80" y="64" width="16" height="16" fill="black" />
23
+ <rect x="160" y="0" width="16" height="16" fill="black" />
24
+ <rect x="176" y="0" width="16" height="16" fill="black" />
25
+ <rect x="192" y="0" width="16" height="16" fill="black" />
26
+ <rect x="208" y="0" width="16" height="16" fill="black" />
27
+ <rect x="160" y="16" width="16" height="16" fill="black" />
28
+ <rect x="160" y="32" width="16" height="16" fill="black" />
29
+ <rect x="176" y="32" width="16" height="16" fill="black" />
30
+ <rect x="192" y="32" width="16" height="16" fill="black" />
31
+ <rect x="160" y="48" width="16" height="16" fill="black" />
32
+ <rect x="160" y="64" width="16" height="16" fill="black" />
33
+ <rect x="176" y="64" width="16" height="16" fill="black" />
34
+ <rect x="192" y="64" width="16" height="16" fill="black" />
35
+ <rect x="208" y="64" width="16" height="16" fill="black" />
36
+ <rect x="240" y="0" width="16" height="16" fill="black" />
37
+ <rect x="288" y="0" width="16" height="16" fill="black" />
38
+ <rect x="240" y="16" width="16" height="16" fill="black" />
39
+ <rect x="256" y="16" width="16" height="16" fill="black" />
40
+ <rect x="288" y="16" width="16" height="16" fill="black" />
41
+ <rect x="240" y="32" width="16" height="16" fill="black" />
42
+ <rect x="272" y="32" width="16" height="16" fill="black" />
43
+ <rect x="288" y="32" width="16" height="16" fill="black" />
44
+ <rect x="240" y="48" width="16" height="16" fill="black" />
45
+ <rect x="288" y="48" width="16" height="16" fill="black" />
46
+ <rect x="240" y="64" width="16" height="16" fill="black" />
47
+ <rect x="288" y="64" width="16" height="16" fill="black" />
48
+ <rect x="336" y="0" width="16" height="16" fill="black" />
49
+ <rect x="352" y="0" width="16" height="16" fill="black" />
50
+ <rect x="368" y="0" width="16" height="16" fill="black" />
51
+ <rect x="320" y="16" width="16" height="16" fill="black" />
52
+ <rect x="336" y="32" width="16" height="16" fill="black" />
53
+ <rect x="352" y="32" width="16" height="16" fill="black" />
54
+ <rect x="368" y="48" width="16" height="16" fill="black" />
55
+ <rect x="320" y="64" width="16" height="16" fill="black" />
56
+ <rect x="336" y="64" width="16" height="16" fill="black" />
57
+ <rect x="352" y="64" width="16" height="16" fill="black" />
58
+ <rect x="400" y="0" width="16" height="16" fill="black" />
59
+ <rect x="416" y="0" width="16" height="16" fill="black" />
60
+ <rect x="432" y="0" width="16" height="16" fill="black" />
61
+ <rect x="400" y="16" width="16" height="16" fill="black" />
62
+ <rect x="448" y="16" width="16" height="16" fill="black" />
63
+ <rect x="400" y="32" width="16" height="16" fill="black" />
64
+ <rect x="416" y="32" width="16" height="16" fill="black" />
65
+ <rect x="432" y="32" width="16" height="16" fill="black" />
66
+ <rect x="448" y="32" width="16" height="16" fill="black" />
67
+ <rect x="400" y="48" width="16" height="16" fill="black" />
68
+ <rect x="400" y="64" width="16" height="16" fill="black" />
69
+ <rect x="480" y="0" width="16" height="16" fill="black" />
70
+ <rect x="496" y="0" width="16" height="16" fill="black" />
71
+ <rect x="512" y="0" width="16" height="16" fill="black" />
72
+ <rect x="528" y="0" width="16" height="16" fill="black" />
73
+ <rect x="480" y="16" width="16" height="16" fill="black" />
74
+ <rect x="480" y="32" width="16" height="16" fill="black" />
75
+ <rect x="496" y="32" width="16" height="16" fill="black" />
76
+ <rect x="512" y="32" width="16" height="16" fill="black" />
77
+ <rect x="480" y="48" width="16" height="16" fill="black" />
78
+ <rect x="480" y="64" width="16" height="16" fill="black" />
79
+ <rect x="496" y="64" width="16" height="16" fill="black" />
80
+ <rect x="512" y="64" width="16" height="16" fill="black" />
81
+ <rect x="528" y="64" width="16" height="16" fill="black" />
82
+ <rect x="576" y="0" width="16" height="16" fill="black" />
83
+ <rect x="592" y="0" width="16" height="16" fill="black" />
84
+ <rect x="560" y="16" width="16" height="16" fill="black" />
85
+ <rect x="560" y="32" width="16" height="16" fill="black" />
86
+ <rect x="560" y="48" width="16" height="16" fill="black" />
87
+ <rect x="576" y="64" width="16" height="16" fill="black" />
88
+ <rect x="592" y="64" width="16" height="16" fill="black" />
89
+ </svg>
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import '../dist/cli/index.js';
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { execFileSync } from 'child_process';
4
+ import { existsSync, rmSync } from 'fs';
5
+ import { createRequire } from 'module';
6
+
7
+ const require = createRequire(import.meta.url);
8
+
9
+ const runTsc = (args = []) => {
10
+ const tscPath = require.resolve('typescript/bin/tsc');
11
+ execFileSync(process.execPath, [tscPath, ...args], { stdio: 'inherit' });
12
+ };
13
+
14
+ console.log('🔨 Building OpenSpec...\n');
15
+
16
+ // Clean dist directory
17
+ if (existsSync('dist')) {
18
+ console.log('Cleaning dist directory...');
19
+ rmSync('dist', { recursive: true, force: true });
20
+ }
21
+
22
+ // Run TypeScript compiler (use local version explicitly)
23
+ console.log('Compiling TypeScript...');
24
+ try {
25
+ runTsc(['--version']);
26
+ runTsc();
27
+ console.log('\n✅ Build completed successfully!');
28
+ } catch (error) {
29
+ console.error('\n❌ Build failed!');
30
+ process.exit(1);
31
+ }
@@ -0,0 +1,454 @@
1
+ # OpenSpec Instructions
2
+
3
+ Instructions for AI coding assistants using OpenSpec for spec-driven development.
4
+
5
+ ## TL;DR Quick Checklist
6
+
7
+ - Search existing work: `openspec spec list --long`, `openspec list` (use `rg` only for full-text search)
8
+ - Decide scope: new capability vs modify existing capability
9
+ - Pick a unique `change-id`: kebab-case, verb-led (`add-`, `update-`, `remove-`, `refactor-`)
10
+ - Scaffold: `proposal.md`, `tasks.md`, `design.md` (only if needed), and delta specs per affected capability
11
+ - Write deltas: use `## ADDED|MODIFIED|REMOVED|RENAMED Requirements`; include at least one `#### Scenario:` per requirement
12
+ - Validate: `openspec validate [change-id] --strict` and fix issues
13
+ - Request approval: Do not start implementation until proposal is approved
14
+
15
+ ## Three-Stage Workflow
16
+
17
+ ### Stage 1: Creating Changes
18
+ Create proposal when you need to:
19
+ - Add features or functionality
20
+ - Make breaking changes (API, schema)
21
+ - Change architecture or patterns
22
+ - Optimize performance (changes behavior)
23
+ - Update security patterns
24
+
25
+ Triggers (examples):
26
+ - "Help me create a change proposal"
27
+ - "Help me plan a change"
28
+ - "Help me create a proposal"
29
+ - "I want to create a spec proposal"
30
+ - "I want to create a spec"
31
+
32
+ Loose matching guidance:
33
+ - Contains one of: `proposal`, `change`, `spec`
34
+ - With one of: `create`, `plan`, `make`, `start`, `help`
35
+
36
+ Skip proposal for:
37
+ - Bug fixes (restore intended behavior)
38
+ - Typos, formatting, comments
39
+ - Dependency updates (non-breaking)
40
+ - Configuration changes
41
+ - Tests for existing behavior
42
+
43
+ **Workflow**
44
+ 1. Review `openspec/project.md`, `openspec list`, and `openspec list --specs` to understand current context.
45
+ 2. Choose a unique verb-led `change-id` and scaffold `proposal.md`, `tasks.md`, optional `design.md`, and spec deltas under `openspec/changes/<id>/`.
46
+ 3. Draft spec deltas using `## ADDED|MODIFIED|REMOVED Requirements` with at least one `#### Scenario:` per requirement.
47
+ 4. Run `openspec validate <id> --strict` and resolve any issues before sharing the proposal.
48
+
49
+ ### Stage 2: Implementing Changes
50
+ Track these steps as TODOs and complete them one by one.
51
+ 1. **Read proposal.md** - Understand what's being built
52
+ 2. **Read design.md** (if exists) - Review technical decisions
53
+ 3. **Read tasks.md** - Get implementation checklist
54
+ 4. **Implement tasks sequentially** - Complete in order
55
+ 5. **Confirm completion** - Ensure every item in `tasks.md` is finished before updating statuses
56
+ 6. **Update checklist** - After all work is done, set every task to `- [x]` so the list reflects reality
57
+ 7. **Approval gate** - Do not start implementation until the proposal is reviewed and approved
58
+
59
+ ### Stage 3: Archiving Changes
60
+ After deployment, create separate PR to:
61
+ - Move `changes/[name]/` → `changes/archive/YYYY-MM-DD-[name]/`
62
+ - Update `specs/` if capabilities changed
63
+ - Use `openspec archive <change-id> --skip-specs --yes` for tooling-only changes (always pass the change ID explicitly)
64
+ - Run `openspec validate --strict` to confirm the archived change passes checks
65
+
66
+ ## Before Any Task
67
+
68
+ **Context Checklist:**
69
+ - [ ] Read relevant specs in `specs/[capability]/spec.md`
70
+ - [ ] Check pending changes in `changes/` for conflicts
71
+ - [ ] Read `openspec/project.md` for conventions
72
+ - [ ] Run `openspec list` to see active changes
73
+ - [ ] Run `openspec list --specs` to see existing capabilities
74
+
75
+ **Before Creating Specs:**
76
+ - Always check if capability already exists
77
+ - Prefer modifying existing specs over creating duplicates
78
+ - Use `openspec show [spec]` to review current state
79
+ - If request is ambiguous, ask 1–2 clarifying questions before scaffolding
80
+
81
+ ### Search Guidance
82
+ - Enumerate specs: `openspec spec list --long` (or `--json` for scripts)
83
+ - Enumerate changes: `openspec list` (or `openspec change list --json` - deprecated but available)
84
+ - Show details:
85
+ - Spec: `openspec show <spec-id> --type spec` (use `--json` for filters)
86
+ - Change: `openspec show <change-id> --json --deltas-only`
87
+ - Full-text search (use ripgrep): `rg -n "Requirement:|Scenario:" openspec/specs`
88
+
89
+ ## Quick Start
90
+
91
+ ### CLI Commands
92
+
93
+ ```bash
94
+ # Essential commands
95
+ openspec list # List active changes
96
+ openspec list --specs # List specifications
97
+ openspec show [item] # Display change or spec
98
+ openspec validate [item] # Validate changes or specs
99
+ openspec archive <change-id> [--yes|-y] # Archive after deployment (add --yes for non-interactive runs)
100
+
101
+ # Project management
102
+ openspec init [path] # Initialize OpenSpec
103
+ openspec update [path] # Update instruction files
104
+
105
+ # Interactive mode
106
+ openspec show # Prompts for selection
107
+ openspec validate # Bulk validation mode
108
+
109
+ # Debugging
110
+ openspec show [change] --json --deltas-only
111
+ openspec validate [change] --strict
112
+ ```
113
+
114
+ ### Command Flags
115
+
116
+ - `--json` - Machine-readable output
117
+ - `--type change|spec` - Disambiguate items
118
+ - `--strict` - Comprehensive validation
119
+ - `--no-interactive` - Disable prompts
120
+ - `--skip-specs` - Archive without spec updates
121
+ - `--yes`/`-y` - Skip confirmation prompts (non-interactive archive)
122
+
123
+ ## Directory Structure
124
+
125
+ ```
126
+ openspec/
127
+ ├── project.md # Project conventions
128
+ ├── specs/ # Current truth - what IS built
129
+ │ └── [capability]/ # Single focused capability
130
+ │ ├── spec.md # Requirements and scenarios
131
+ │ └── design.md # Technical patterns
132
+ ├── changes/ # Proposals - what SHOULD change
133
+ │ ├── [change-name]/
134
+ │ │ ├── proposal.md # Why, what, impact
135
+ │ │ ├── tasks.md # Implementation checklist
136
+ │ │ ├── design.md # Technical decisions (optional; see criteria)
137
+ │ │ └── specs/ # Delta changes
138
+ │ │ └── [capability]/
139
+ │ │ └── spec.md # ADDED/MODIFIED/REMOVED
140
+ │ └── archive/ # Completed changes
141
+ ```
142
+
143
+ ## Creating Change Proposals
144
+
145
+ ### Decision Tree
146
+
147
+ ```
148
+ New request?
149
+ ├─ Bug fix restoring spec behavior? → Fix directly
150
+ ├─ Typo/format/comment? → Fix directly
151
+ ├─ New feature/capability? → Create proposal
152
+ ├─ Breaking change? → Create proposal
153
+ ├─ Architecture change? → Create proposal
154
+ └─ Unclear? → Create proposal (safer)
155
+ ```
156
+
157
+ ### Proposal Structure
158
+
159
+ 1. **Create directory:** `changes/[change-id]/` (kebab-case, verb-led, unique)
160
+
161
+ 2. **Write proposal.md:**
162
+ ```markdown
163
+ ## Why
164
+ [1-2 sentences on problem/opportunity]
165
+
166
+ ## What Changes
167
+ - [Bullet list of changes]
168
+ - [Mark breaking changes with **BREAKING**]
169
+
170
+ ## Impact
171
+ - Affected specs: [list capabilities]
172
+ - Affected code: [key files/systems]
173
+ ```
174
+
175
+ 3. **Create spec deltas:** `specs/[capability]/spec.md`
176
+ ```markdown
177
+ ## ADDED Requirements
178
+ ### Requirement: New Feature
179
+ The system SHALL provide...
180
+
181
+ #### Scenario: Success case
182
+ - **WHEN** user performs action
183
+ - **THEN** expected result
184
+
185
+ ## MODIFIED Requirements
186
+ ### Requirement: Existing Feature
187
+ [Complete modified requirement]
188
+
189
+ ## REMOVED Requirements
190
+ ### Requirement: Old Feature
191
+ **Reason**: [Why removing]
192
+ **Migration**: [How to handle]
193
+ ```
194
+ If multiple capabilities are affected, create multiple delta files under `changes/[change-id]/specs/<capability>/spec.md`—one per capability.
195
+
196
+ 4. **Create tasks.md:**
197
+ ```markdown
198
+ ## 1. Implementation
199
+ - [ ] 1.1 Create database schema
200
+ - [ ] 1.2 Implement API endpoint
201
+ - [ ] 1.3 Add frontend component
202
+ - [ ] 1.4 Write tests
203
+ ```
204
+
205
+ 5. **Create design.md when needed:**
206
+ Create `design.md` if any of the following apply; otherwise omit it:
207
+ - Cross-cutting change (multiple services/modules) or a new architectural pattern
208
+ - New external dependency or significant data model changes
209
+ - Security, performance, or migration complexity
210
+ - Ambiguity that benefits from technical decisions before coding
211
+
212
+ Minimal `design.md` skeleton:
213
+ ```markdown
214
+ ## Context
215
+ [Background, constraints, stakeholders]
216
+
217
+ ## Goals / Non-Goals
218
+ - Goals: [...]
219
+ - Non-Goals: [...]
220
+
221
+ ## Decisions
222
+ - Decision: [What and why]
223
+ - Alternatives considered: [Options + rationale]
224
+
225
+ ## Risks / Trade-offs
226
+ - [Risk] → Mitigation
227
+
228
+ ## Migration Plan
229
+ [Steps, rollback]
230
+
231
+ ## Open Questions
232
+ - [...]
233
+ ```
234
+
235
+ ## Spec File Format
236
+
237
+ ### Critical: Scenario Formatting
238
+
239
+ **CORRECT** (use #### headers):
240
+ ```markdown
241
+ #### Scenario: User login success
242
+ - **WHEN** valid credentials provided
243
+ - **THEN** return JWT token
244
+ ```
245
+
246
+ **WRONG** (don't use bullets or bold):
247
+ ```markdown
248
+ - **Scenario: User login** ❌
249
+ **Scenario**: User login ❌
250
+ ### Scenario: User login ❌
251
+ ```
252
+
253
+ Every requirement MUST have at least one scenario.
254
+
255
+ ### Requirement Wording
256
+ - Use SHALL/MUST for normative requirements (avoid should/may unless intentionally non-normative)
257
+
258
+ ### Delta Operations
259
+
260
+ - `## ADDED Requirements` - New capabilities
261
+ - `## MODIFIED Requirements` - Changed behavior
262
+ - `## REMOVED Requirements` - Deprecated features
263
+ - `## RENAMED Requirements` - Name changes
264
+
265
+ Headers matched with `trim(header)` - whitespace ignored.
266
+
267
+ #### When to use ADDED vs MODIFIED
268
+ - ADDED: Introduces a new capability or sub-capability that can stand alone as a requirement. Prefer ADDED when the change is orthogonal (e.g., adding "Slash Command Configuration") rather than altering the semantics of an existing requirement.
269
+ - MODIFIED: Changes the behavior, scope, or acceptance criteria of an existing requirement. Always paste the full, updated requirement content (header + all scenarios). The archiver will replace the entire requirement with what you provide here; partial deltas will drop previous details.
270
+ - RENAMED: Use when only the name changes. If you also change behavior, use RENAMED (name) plus MODIFIED (content) referencing the new name.
271
+
272
+ Common pitfall: Using MODIFIED to add a new concern without including the previous text. This causes loss of detail at archive time. If you aren’t explicitly changing the existing requirement, add a new requirement under ADDED instead.
273
+
274
+ Authoring a MODIFIED requirement correctly:
275
+ 1) Locate the existing requirement in `openspec/specs/<capability>/spec.md`.
276
+ 2) Copy the entire requirement block (from `### Requirement: ...` through its scenarios).
277
+ 3) Paste it under `## MODIFIED Requirements` and edit to reflect the new behavior.
278
+ 4) Ensure the header text matches exactly (whitespace-insensitive) and keep at least one `#### Scenario:`.
279
+
280
+ Example for RENAMED:
281
+ ```markdown
282
+ ## RENAMED Requirements
283
+ - FROM: `### Requirement: Login`
284
+ - TO: `### Requirement: User Authentication`
285
+ ```
286
+
287
+ ## Troubleshooting
288
+
289
+ ### Common Errors
290
+
291
+ **"Change must have at least one delta"**
292
+ - Check `changes/[name]/specs/` exists with .md files
293
+ - Verify files have operation prefixes (## ADDED Requirements)
294
+
295
+ **"Requirement must have at least one scenario"**
296
+ - Check scenarios use `#### Scenario:` format (4 hashtags)
297
+ - Don't use bullet points or bold for scenario headers
298
+
299
+ **Silent scenario parsing failures**
300
+ - Exact format required: `#### Scenario: Name`
301
+ - Debug with: `openspec show [change] --json --deltas-only`
302
+
303
+ ### Validation Tips
304
+
305
+ ```bash
306
+ # Always use strict mode for comprehensive checks
307
+ openspec validate [change] --strict
308
+
309
+ # Debug delta parsing
310
+ openspec show [change] --json | jq '.deltas'
311
+
312
+ # Check specific requirement
313
+ openspec show [spec] --json -r 1
314
+ ```
315
+
316
+ ## Happy Path Script
317
+
318
+ ```bash
319
+ # 1) Explore current state
320
+ openspec spec list --long
321
+ openspec list
322
+ # Optional full-text search:
323
+ # rg -n "Requirement:|Scenario:" openspec/specs
324
+ # rg -n "^#|Requirement:" openspec/changes
325
+
326
+ # 2) Choose change id and scaffold
327
+ CHANGE=add-two-factor-auth
328
+ mkdir -p openspec/changes/$CHANGE/{specs/auth}
329
+ printf "## Why\n...\n\n## What Changes\n- ...\n\n## Impact\n- ...\n" > openspec/changes/$CHANGE/proposal.md
330
+ printf "## 1. Implementation\n- [ ] 1.1 ...\n" > openspec/changes/$CHANGE/tasks.md
331
+
332
+ # 3) Add deltas (example)
333
+ cat > openspec/changes/$CHANGE/specs/auth/spec.md << 'EOF'
334
+ ## ADDED Requirements
335
+ ### Requirement: Two-Factor Authentication
336
+ Users MUST provide a second factor during login.
337
+
338
+ #### Scenario: OTP required
339
+ - **WHEN** valid credentials are provided
340
+ - **THEN** an OTP challenge is required
341
+ EOF
342
+
343
+ # 4) Validate
344
+ openspec validate $CHANGE --strict
345
+ ```
346
+
347
+ ## Multi-Capability Example
348
+
349
+ ```
350
+ openspec/changes/add-2fa-notify/
351
+ ├── proposal.md
352
+ ├── tasks.md
353
+ └── specs/
354
+ ├── auth/
355
+ │ └── spec.md # ADDED: Two-Factor Authentication
356
+ └── notifications/
357
+ └── spec.md # ADDED: OTP email notification
358
+ ```
359
+
360
+ auth/spec.md
361
+ ```markdown
362
+ ## ADDED Requirements
363
+ ### Requirement: Two-Factor Authentication
364
+ ...
365
+ ```
366
+
367
+ notifications/spec.md
368
+ ```markdown
369
+ ## ADDED Requirements
370
+ ### Requirement: OTP Email Notification
371
+ ...
372
+ ```
373
+
374
+ ## Best Practices
375
+
376
+ ### Simplicity First
377
+ - Default to <100 lines of new code
378
+ - Single-file implementations until proven insufficient
379
+ - Avoid frameworks without clear justification
380
+ - Choose boring, proven patterns
381
+
382
+ ### Complexity Triggers
383
+ Only add complexity with:
384
+ - Performance data showing current solution too slow
385
+ - Concrete scale requirements (>1000 users, >100MB data)
386
+ - Multiple proven use cases requiring abstraction
387
+
388
+ ### Clear References
389
+ - Use `file.ts:42` format for code locations
390
+ - Reference specs as `specs/auth/spec.md`
391
+ - Link related changes and PRs
392
+
393
+ ### Capability Naming
394
+ - Use verb-noun: `user-auth`, `payment-capture`
395
+ - Single purpose per capability
396
+ - 10-minute understandability rule
397
+ - Split if description needs "AND"
398
+
399
+ ### Change ID Naming
400
+ - Use kebab-case, short and descriptive: `add-two-factor-auth`
401
+ - Prefer verb-led prefixes: `add-`, `update-`, `remove-`, `refactor-`
402
+ - Ensure uniqueness; if taken, append `-2`, `-3`, etc.
403
+
404
+ ## Tool Selection Guide
405
+
406
+ | Task | Tool | Why |
407
+ |------|------|-----|
408
+ | Find files by pattern | Glob | Fast pattern matching |
409
+ | Search code content | Grep | Optimized regex search |
410
+ | Read specific files | Read | Direct file access |
411
+ | Explore unknown scope | Task | Multi-step investigation |
412
+
413
+ ## Error Recovery
414
+
415
+ ### Change Conflicts
416
+ 1. Run `openspec list` to see active changes
417
+ 2. Check for overlapping specs
418
+ 3. Coordinate with change owners
419
+ 4. Consider combining proposals
420
+
421
+ ### Validation Failures
422
+ 1. Run with `--strict` flag
423
+ 2. Check JSON output for details
424
+ 3. Verify spec file format
425
+ 4. Ensure scenarios properly formatted
426
+
427
+ ### Missing Context
428
+ 1. Read project.md first
429
+ 2. Check related specs
430
+ 3. Review recent archives
431
+ 4. Ask for clarification
432
+
433
+ ## Quick Reference
434
+
435
+ ### Stage Indicators
436
+ - `changes/` - Proposed, not yet built
437
+ - `specs/` - Built and deployed
438
+ - `archive/` - Completed changes
439
+
440
+ ### File Purposes
441
+ - `proposal.md` - Why and what
442
+ - `tasks.md` - Implementation steps
443
+ - `design.md` - Technical decisions
444
+ - `spec.md` - Requirements and behavior
445
+
446
+ ### CLI Essentials
447
+ ```bash
448
+ openspec list # What's in progress?
449
+ openspec show [item] # View details
450
+ openspec validate --strict # Is it correct?
451
+ openspec archive <change-id> [--yes|-y] # Mark complete (add --yes for automation)
452
+ ```
453
+
454
+ Remember: Specs are truth. Changes are proposals. Keep them in sync.