specweave 0.18.0 → 0.20.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 (428) hide show
  1. package/CLAUDE.md +229 -1817
  2. package/README.md +68 -0
  3. package/bin/specweave.js +62 -6
  4. package/dist/locales/de/.gitkeep +0 -0
  5. package/dist/locales/de/cli.json +108 -0
  6. package/dist/locales/en/cli.json +287 -0
  7. package/dist/locales/en/errors.json +7 -0
  8. package/dist/locales/en/templates.json +6 -0
  9. package/dist/locales/es/.gitkeep +0 -0
  10. package/dist/locales/es/cli.json +41 -0
  11. package/dist/locales/fr/.gitkeep +0 -0
  12. package/dist/locales/fr/cli.json +108 -0
  13. package/dist/locales/ja/.gitkeep +0 -0
  14. package/dist/locales/ja/cli.json +108 -0
  15. package/dist/locales/ko/.gitkeep +0 -0
  16. package/dist/locales/ko/cli.json +108 -0
  17. package/dist/locales/pt/.gitkeep +0 -0
  18. package/dist/locales/pt/cli.json +108 -0
  19. package/dist/locales/ru/.gitkeep +0 -0
  20. package/dist/locales/ru/cli.json +269 -0
  21. package/dist/locales/zh/.gitkeep +0 -0
  22. package/dist/locales/zh/cli.json +108 -0
  23. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  24. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
  25. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  26. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
  27. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
  28. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
  29. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
  30. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  31. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
  32. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  33. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +25 -0
  34. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +1 -0
  35. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +191 -0
  36. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +1 -0
  37. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
  38. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
  39. package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
  40. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
  41. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
  42. package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  43. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +70 -0
  44. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -0
  45. package/dist/plugins/specweave-github/lib/epic-content-builder.js +258 -0
  46. package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -0
  47. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
  48. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  49. package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
  50. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  51. package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts +2 -2
  52. package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts.map +1 -1
  53. package/dist/plugins/specweave-github/lib/github-epic-sync.js +20 -5
  54. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
  55. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
  56. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
  57. package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
  58. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
  59. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  60. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
  61. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  62. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
  63. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
  64. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
  65. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
  66. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
  67. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
  68. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
  69. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
  70. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
  71. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
  72. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
  73. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
  74. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +28 -0
  75. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -0
  76. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +156 -0
  77. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -0
  78. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  79. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  80. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  81. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  82. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  83. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  84. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  85. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  86. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  87. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  88. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  89. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  90. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  91. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  92. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  93. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  94. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  95. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  96. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  97. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  98. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  99. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  100. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  101. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  102. package/dist/spec-parser.js +629 -0
  103. package/dist/src/cli/commands/import-docs.js +4 -4
  104. package/dist/src/cli/commands/import-docs.js.map +1 -1
  105. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  106. package/dist/src/cli/commands/init-multiproject.js +17 -18
  107. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  108. package/dist/src/cli/commands/init.d.ts.map +1 -1
  109. package/dist/src/cli/commands/init.js +107 -3
  110. package/dist/src/cli/commands/init.js.map +1 -1
  111. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  112. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  113. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  114. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  115. package/dist/src/cli/commands/switch-project.js +9 -26
  116. package/dist/src/cli/commands/switch-project.js.map +1 -1
  117. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  118. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  119. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  120. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  121. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  122. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  123. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  124. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  125. package/dist/src/core/increment/active-increment-manager.js +113 -46
  126. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  127. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  128. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  129. package/dist/src/core/increment/conflict-resolver.js +219 -0
  130. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  131. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  132. package/dist/src/core/increment/discipline-checker.js +7 -1
  133. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  134. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  135. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  136. package/dist/src/core/increment/duplicate-detector.js +276 -0
  137. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  138. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  139. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  140. package/dist/src/core/increment/increment-archiver.js +368 -0
  141. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  142. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  143. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  144. package/dist/src/core/increment/increment-reopener.js +390 -0
  145. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  146. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  147. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  148. package/dist/src/core/increment/metadata-manager.js +143 -5
  149. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  150. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  151. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  152. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  153. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  154. package/dist/src/core/increment/types.d.ts +1 -0
  155. package/dist/src/core/increment/types.d.ts.map +1 -1
  156. package/dist/src/core/increment-utils.d.ts +112 -0
  157. package/dist/src/core/increment-utils.d.ts.map +1 -0
  158. package/dist/src/core/increment-utils.js +210 -0
  159. package/dist/src/core/increment-utils.js.map +1 -0
  160. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  161. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  162. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  163. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  164. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  165. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  166. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  167. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  168. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  169. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  170. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  171. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  172. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  173. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  174. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  175. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  176. package/dist/src/core/living-docs/index.d.ts +6 -0
  177. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  178. package/dist/src/core/living-docs/index.js +6 -0
  179. package/dist/src/core/living-docs/index.js.map +1 -1
  180. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  181. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  182. package/dist/src/core/living-docs/project-detector.js +35 -1
  183. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  184. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  185. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  186. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  187. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  188. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  189. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  190. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  191. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  192. package/dist/src/core/living-docs/types.d.ts +143 -0
  193. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  194. package/dist/src/core/project-manager.d.ts +2 -17
  195. package/dist/src/core/project-manager.d.ts.map +1 -1
  196. package/dist/src/core/project-manager.js +68 -48
  197. package/dist/src/core/project-manager.js.map +1 -1
  198. package/dist/src/core/spec-content-sync.d.ts +1 -1
  199. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  200. package/dist/src/core/sync/enhanced-content-builder.d.ts +32 -54
  201. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  202. package/dist/src/core/sync/enhanced-content-builder.js +142 -138
  203. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  204. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  205. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  206. package/dist/src/core/sync/performance-optimizer.js +220 -0
  207. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  208. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  209. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  210. package/dist/src/core/sync/retry-handler.js +196 -0
  211. package/dist/src/core/sync/retry-handler.js.map +1 -0
  212. package/dist/src/core/sync/spec-content-sync.d.ts +88 -0
  213. package/dist/src/core/sync/spec-content-sync.d.ts.map +1 -0
  214. package/dist/src/core/sync/spec-content-sync.js +5 -0
  215. package/dist/src/core/sync/spec-content-sync.js.map +1 -0
  216. package/dist/src/core/sync/types.d.ts +52 -0
  217. package/dist/src/core/sync/types.d.ts.map +1 -0
  218. package/dist/src/core/sync/types.js +5 -0
  219. package/dist/src/core/sync/types.js.map +1 -0
  220. package/dist/src/core/types/config.d.ts +125 -0
  221. package/dist/src/core/types/config.d.ts.map +1 -1
  222. package/dist/src/core/types/config.js +25 -0
  223. package/dist/src/core/types/config.js.map +1 -1
  224. package/dist/src/core/types/increment-metadata.d.ts +10 -0
  225. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  226. package/dist/src/core/types/increment-metadata.js +10 -1
  227. package/dist/src/core/types/increment-metadata.js.map +1 -1
  228. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  229. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  230. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  231. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  232. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  233. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  234. package/dist/tsconfig.tsbuildinfo +1 -0
  235. package/package.json +1 -1
  236. package/plugins/specweave/COMMANDS.md +13 -4
  237. package/plugins/specweave/agents/pm/AGENT.md +159 -12
  238. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  239. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  240. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  241. package/plugins/specweave/commands/specweave-archive.md +363 -0
  242. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  243. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  244. package/plugins/specweave/commands/specweave-increment.md +4 -3
  245. package/plugins/specweave/commands/specweave-progress.md +176 -27
  246. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  247. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  248. package/plugins/specweave/commands/specweave-restore.md +309 -0
  249. package/plugins/specweave/commands/specweave-resume.md +51 -23
  250. package/plugins/specweave/commands/specweave-status.md +41 -7
  251. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  252. package/plugins/specweave/commands/specweave.md +70 -405
  253. package/plugins/specweave/hooks/hooks.json +4 -0
  254. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  255. package/plugins/specweave/hooks/post-increment-planning.sh +26 -2
  256. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  257. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  258. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  259. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  260. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  261. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  262. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  263. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  264. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  265. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  266. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  267. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  268. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  269. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  270. package/plugins/specweave-confluent/README.md +375 -0
  271. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  272. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  273. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  274. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  275. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  276. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  277. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  278. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  279. package/plugins/specweave-github/hooks/post-task-completion.sh +42 -9
  280. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  281. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  282. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  283. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  284. package/plugins/specweave-github/lib/epic-content-builder.js +265 -0
  285. package/plugins/specweave-github/lib/epic-content-builder.ts +376 -0
  286. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  287. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  288. package/plugins/specweave-github/lib/github-epic-sync.js +23 -24
  289. package/plugins/specweave-github/lib/github-epic-sync.ts +30 -5
  290. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  291. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  292. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  293. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  294. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  295. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  296. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  297. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  298. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  299. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  300. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  301. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
  302. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  303. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  304. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  305. package/plugins/specweave-kafka/README.md +242 -0
  306. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  307. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  308. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  309. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  310. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  311. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  312. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  313. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  314. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  315. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  316. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  317. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  318. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  319. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  320. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  321. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  322. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  323. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  324. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  325. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  326. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  327. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  328. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  329. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  330. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  331. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  332. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  333. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  334. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  335. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  336. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  337. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  338. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  339. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  340. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  341. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  342. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  343. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  344. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  345. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  346. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  347. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  348. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  349. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  350. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  351. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  352. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  353. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  354. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  355. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  356. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  357. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  358. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  359. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  360. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  361. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  362. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  363. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  364. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  365. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  366. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  367. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  368. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  369. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  370. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  371. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  372. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  373. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  374. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  375. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  376. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  377. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  378. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  379. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  380. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  381. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  382. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  383. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  384. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  385. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  386. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  387. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  388. package/plugins/specweave-kafka/package.json +41 -0
  389. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  390. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  391. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  392. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  393. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  394. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  395. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  396. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  397. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  398. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  399. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  400. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  401. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  402. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  403. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  404. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  405. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  406. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  407. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  408. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  409. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  410. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  411. package/plugins/specweave-kafka/tsconfig.json +21 -0
  412. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  413. package/plugins/specweave-kafka-streams/README.md +310 -0
  414. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  415. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  416. package/plugins/specweave-n8n/README.md +354 -0
  417. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  418. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  419. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  420. package/src/templates/AGENTS.md.template +601 -7
  421. package/src/templates/CLAUDE.md.template +188 -88
  422. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  423. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  424. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  425. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  426. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  427. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  428. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: specweave-archive-increments
3
+ description: Archive completed increments to keep workspace clean
4
+ ---
5
+
6
+ # Archive Increments Command
7
+
8
+ Archives completed increments to `_archive/` folder, keeping only the most recent N increments in the main folder.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ # Interactive mode - prompts for options
14
+ /specweave:archive-increments
15
+
16
+ # Keep last 5 increments, archive the rest
17
+ /specweave:archive-increments --keep-last 5
18
+
19
+ # Archive specific increments
20
+ /specweave:archive-increments --increments 0001,0002,0003
21
+
22
+ # Dry run - see what would be archived without moving
23
+ /specweave:archive-increments --dry-run
24
+
25
+ # Archive all completed increments older than 30 days
26
+ /specweave:archive-increments --older-than 30d
27
+
28
+ # Keep only active/paused, archive all completed
29
+ /specweave:archive-increments --archive-completed
30
+ ```
31
+
32
+ ## Default Behavior
33
+
34
+ - Keeps last 10 increments by default
35
+ - Preserves all active/paused increments
36
+ - Never archives abandoned increments (they stay in `_abandoned/`)
37
+ - Creates `_archive/` folder if it doesn't exist
38
+ - Preserves increment structure and all contents
39
+
40
+ ## Smart Detection
41
+
42
+ The command intelligently:
43
+ - Checks increment status from metadata.json
44
+ - Preserves increments with active GitHub/JIRA/ADO issues
45
+ - Warns before archiving increments with uncommitted changes
46
+ - Groups related increments (e.g., all v0.8.0 stabilization increments)
47
+
48
+ ## Configuration
49
+
50
+ Set defaults in `.specweave/config.json`:
51
+
52
+ ```json
53
+ {
54
+ "archiving": {
55
+ "keepLast": 10,
56
+ "autoArchive": true,
57
+ "archiveAfterDays": 60,
58
+ "preserveActive": true,
59
+ "archiveCompleted": true
60
+ }
61
+ }
62
+ ```
63
+
64
+ ## Examples
65
+
66
+ ### Keep workspace clean
67
+ ```bash
68
+ # Archive all but last 5 increments
69
+ /specweave:archive-increments --keep-last 5
70
+ ```
71
+
72
+ ### Prepare for release
73
+ ```bash
74
+ # Archive all v0.7.x increments after v0.8.0 release
75
+ /specweave:archive-increments --pattern "v0.7"
76
+ ```
77
+
78
+ ### Clean old work
79
+ ```bash
80
+ # Archive increments older than 2 months
81
+ /specweave:archive-increments --older-than 60d
82
+ ```
@@ -0,0 +1,363 @@
1
+ ---
2
+ name: specweave:archive
3
+ description: Manually archive completed increments - NEVER auto-archives, explicit user action only
4
+ ---
5
+
6
+ # Archive Increments (Manual Only)
7
+
8
+ **CRITICAL POLICY**: Increments are **NEVER** auto-archived. Archiving is **MANUAL ONLY** and requires explicit user action via this command.
9
+
10
+ ## Philosophy
11
+
12
+ **Keep recent work visible** - Completed increments remain in the main folder for easy reference until you explicitly archive them. This allows:
13
+ - ✅ Quick reference to recent implementations
14
+ - ✅ Easy linking in new increments
15
+ - ✅ Visible completion history
16
+ - ✅ ~10-20 completed increments available without searching archives
17
+
18
+ ## Usage
19
+
20
+ ```bash
21
+ # Archive specific increment
22
+ /specweave:archive 0031
23
+
24
+ # Archive multiple increments
25
+ /specweave:archive 0001 0002 0003
26
+
27
+ # Archive all completed increments older than N days
28
+ /specweave:archive --older-than 90
29
+
30
+ # Keep last N increments, archive the rest
31
+ /specweave:archive --keep-last 10
32
+
33
+ # Archive by pattern
34
+ /specweave:archive --pattern "auth-*"
35
+
36
+ # Dry run (preview without archiving)
37
+ /specweave:archive --dry-run --older-than 90
38
+ ```
39
+
40
+ ## Options
41
+
42
+ - `<increment-ids>`: Specific increment IDs to archive (e.g., "1", "0001", "0031")
43
+ - `--older-than <days>`: Archive increments older than N days
44
+ - `--keep-last <n>`: Keep last N increments, archive the rest (default: 10)
45
+ - `--pattern <regex>`: Archive increments matching pattern
46
+ - `--archive-completed`: Archive all completed increments (use with caution!)
47
+ - `--preserve-active`: Never archive active/paused increments (default: true)
48
+ - `--dry-run`: Show what would be archived without moving files
49
+
50
+ ## Archive Rules
51
+
52
+ ### Increments are archived when:
53
+ 1. Explicitly specified by ID (e.g., `/specweave:archive 0031`)
54
+ 2. Match age criteria (e.g., `--older-than 90`)
55
+ 3. Match pattern criteria (e.g., `--pattern "old-*"`)
56
+ 4. Not in last N increments (e.g., `--keep-last 10`)
57
+
58
+ ### Safety Checks (Always Applied):
59
+ - ✅ **Active/paused protection**: Never archive active or paused increments
60
+ - ✅ **External sync protection**: Skip increments with open GitHub/JIRA/ADO issues
61
+ - ✅ **Uncommitted changes**: Warn if git has uncommitted changes
62
+ - ✅ **Duplicate prevention**: Refuse if increment already exists in archive
63
+
64
+ ### Archive Structure:
65
+ ```
66
+ .specweave/increments/
67
+ ├── 0030-recent-work/ # Active/recent increments
68
+ ├── 0031-recent-work/ # Stay visible for reference
69
+ ├── 0032-recent-work/
70
+ ├── 0033-recent-work/
71
+
72
+ ├── _archive/ # Archived increments
73
+ │ ├── 0001-old-work/ # Manually archived
74
+ │ ├── 0002-old-work/
75
+ │ └── 0003-old-work/
76
+
77
+ └── _abandoned/ # Abandoned work (separate)
78
+ └── 0004-abandoned-work/
79
+ ```
80
+
81
+ ## Examples
82
+
83
+ ### Example 1: Archive Specific Increment
84
+
85
+ ```bash
86
+ /specweave:archive 0031
87
+ ```
88
+
89
+ **Output**:
90
+ ```
91
+ 📦 Archiving increments...
92
+
93
+ Checking increment 0031-external-tool-status-sync...
94
+ ✓ Status: completed
95
+ ✓ No active external sync
96
+ ✓ No uncommitted changes
97
+ ✓ Not already in archive
98
+
99
+ ✅ Archived: 0031-external-tool-status-sync
100
+ Location: .specweave/increments/_archive/0031-external-tool-status-sync/
101
+
102
+ 📊 Archive Statistics:
103
+ Active: 32 increments
104
+ Archived: 31 increments (+ 1 new)
105
+
106
+ Next: /specweave:restore 0031 (if you need to unarchive)
107
+ ```
108
+
109
+ ### Example 2: Archive Old Increments (Keep Last 10)
110
+
111
+ ```bash
112
+ /specweave:archive --keep-last 10
113
+ ```
114
+
115
+ **Output**:
116
+ ```
117
+ 📦 Archiving increments (keeping last 10)...
118
+
119
+ Found 33 total increments
120
+ Keeping: 0024-0033 (last 10)
121
+ Candidates for archive: 0001-0023 (23 increments)
122
+
123
+ Filtering by status and safety checks...
124
+ ✓ 0001-core-framework (completed, no blockers)
125
+ ✓ 0002-plugin-system (completed, no blockers)
126
+ ...
127
+ ⚠ 0015-auth-service (GitHub issue still open) - SKIPPED
128
+ ✓ 0016-payment-integration (completed, no blockers)
129
+ ...
130
+
131
+ ✅ Archived: 22 increments
132
+ ⚠️ Skipped: 1 increment (external sync active)
133
+
134
+ 📊 Archive Statistics:
135
+ Active: 11 increments (10 recent + 1 with open issue)
136
+ Archived: 53 increments (+ 22 new)
137
+ Total size: 245 MB
138
+ ```
139
+
140
+ ### Example 3: Dry Run (Preview)
141
+
142
+ ```bash
143
+ /specweave:archive --older-than 90 --dry-run
144
+ ```
145
+
146
+ **Output**:
147
+ ```
148
+ 🔍 DRY RUN - No files will be moved
149
+
150
+ Increments older than 90 days:
151
+ [DRY RUN] Would archive: 0001-core-framework (152 days old)
152
+ [DRY RUN] Would archive: 0002-plugin-system (148 days old)
153
+ [DRY RUN] Would archive: 0003-auth-service (145 days old)
154
+ [DRY RUN] Would skip: 0004-payment (GitHub issue open)
155
+
156
+ Summary:
157
+ Would archive: 18 increments
158
+ Would skip: 5 increments (active sync)
159
+ Total size: 180 MB
160
+
161
+ Run without --dry-run to proceed:
162
+ /specweave:archive --older-than 90
163
+ ```
164
+
165
+ ### Example 4: Archive by Pattern
166
+
167
+ ```bash
168
+ /specweave:archive --pattern "auth-|payment-|legacy-"
169
+ ```
170
+
171
+ **Output**:
172
+ ```
173
+ 📦 Archiving increments matching pattern: auth-|payment-|legacy-
174
+
175
+ Found matches:
176
+ ✓ 0015-auth-service
177
+ ✓ 0016-payment-integration
178
+ ✓ 0007-legacy-migration
179
+ ⚠ 0025-auth-enhancements (still active) - SKIPPED
180
+
181
+ ✅ Archived: 3 increments
182
+ ⚠️ Skipped: 1 increment (active)
183
+
184
+ 📊 Archive Statistics:
185
+ Active: 30 increments
186
+ Archived: 34 increments (+ 3 new)
187
+ ```
188
+
189
+ ## Error Handling
190
+
191
+ ### Increment Already Archived
192
+
193
+ ```
194
+ ❌ Error: Increment 0031 already exists in archive
195
+
196
+ Location: .specweave/increments/_archive/0031-external-tool-status-sync/
197
+
198
+ Options:
199
+ 1. Delete from archive first, then retry
200
+ 2. Restore from archive: /specweave:restore 0031
201
+ 3. Resolve duplicates: /specweave:fix-duplicates
202
+ ```
203
+
204
+ ### Active Increment Protection
205
+
206
+ ```
207
+ ⚠️ Cannot archive active increments
208
+
209
+ Skipped:
210
+ • 0032-duplicate-prevention (status: active)
211
+ • 0033-current-work (status: in-progress)
212
+
213
+ Recommendation:
214
+ 1. Close increments first: /specweave:done 0032
215
+ 2. Then archive: /specweave:archive 0032
216
+ ```
217
+
218
+ ### External Sync Active
219
+
220
+ ```
221
+ ⚠️ Cannot archive increments with active external sync
222
+
223
+ Skipped:
224
+ • 0031-external-tool-sync (GitHub issue #45 still open)
225
+ • 0030-jira-integration (JIRA PROJ-123 In Progress)
226
+
227
+ Recommendation:
228
+ 1. Close external issues first
229
+ 2. Then retry: /specweave:archive 0031 0030
230
+
231
+ Or force archive (not recommended):
232
+ /specweave:archive 0031 --force
233
+ ```
234
+
235
+ ## Related Commands
236
+
237
+ - `/specweave:restore <increment-id>` - Restore increment from archive
238
+ - `/specweave:done <increment-id>` - Close increment (does NOT archive!)
239
+ - `/specweave:archive-features` - Archive features/epics (separate system)
240
+ - `/specweave:status` - View archive statistics
241
+
242
+ ## Important Notes
243
+
244
+ ### ⚠️ Manual Only Policy
245
+
246
+ **Increments are NEVER auto-archived!** This is a deliberate design decision:
247
+ - ✅ `/specweave:done` closes increments but leaves them visible
248
+ - ✅ You control when increments are archived
249
+ - ✅ Keep ~10-20 recent increments visible for reference
250
+ - ✅ Archive older work when you're ready
251
+
252
+ ### 🔗 Feature Archiving (Automatic)
253
+
254
+ **Features/epics ARE auto-archived** when all their increments are archived:
255
+ - After archiving increment 0031, run: `/specweave:archive-features`
256
+ - This updates living docs and archives orphaned features
257
+ - Keeps feature docs in sync with increment archives
258
+
259
+ ### 📦 Archive is Local Only
260
+
261
+ Archives are **NOT** synced to GitHub/JIRA/ADO. They're local file management only.
262
+
263
+ ## Implementation
264
+
265
+ ```typescript
266
+ import { Task } from '@claude/types';
267
+
268
+ const task = new Task('archive-increments', 'Archive completed increments');
269
+
270
+ task.run(async () => {
271
+ const { IncrementArchiver } = await import('../../../dist/src/core/increment/increment-archiver.js');
272
+ const archiver = new IncrementArchiver(process.cwd());
273
+
274
+ // Parse arguments
275
+ const args = process.argv.slice(2);
276
+ const incrementIds = args.filter(arg => !arg.startsWith('--'));
277
+
278
+ // Parse options
279
+ const options = {
280
+ increments: incrementIds.length > 0 ? incrementIds : undefined,
281
+ olderThanDays: parseOption(args, '--older-than'),
282
+ keepLast: parseOption(args, '--keep-last') || 10,
283
+ archiveCompleted: args.includes('--archive-completed'),
284
+ preserveActive: !args.includes('--no-preserve-active'),
285
+ pattern: parseOption(args, '--pattern'),
286
+ dryRun: args.includes('--dry-run')
287
+ };
288
+
289
+ // Execute archiving
290
+ const result = await archiver.archive(options);
291
+
292
+ // Display results
293
+ if (options.dryRun) {
294
+ console.log('\n🔍 DRY RUN - No files will be moved\n');
295
+ }
296
+
297
+ console.log(`✅ Archived: ${result.archived.length} increments`);
298
+ if (result.skipped.length > 0) {
299
+ console.log(`⚠️ Skipped: ${result.skipped.length} increments`);
300
+ }
301
+ if (result.errors.length > 0) {
302
+ console.error(`❌ Errors: ${result.errors.length} increments`);
303
+ }
304
+
305
+ // Show statistics
306
+ const stats = await archiver.getStats();
307
+ console.log('\n📊 Archive Statistics:');
308
+ console.log(` Active: ${stats.active} increments`);
309
+ console.log(` Archived: ${stats.archived} increments`);
310
+ console.log(` Abandoned: ${stats.abandoned} increments`);
311
+ console.log(` Total archive size: ${formatSize(stats.totalSize)}`);
312
+
313
+ // Suggest next steps
314
+ if (result.archived.length > 0 && !options.dryRun) {
315
+ console.log('\n💡 Next: Run /specweave:archive-features to sync feature docs');
316
+ }
317
+ });
318
+
319
+ function parseOption(args: string[], flag: string): number | string | undefined {
320
+ const index = args.indexOf(flag);
321
+ if (index !== -1 && index + 1 < args.length) {
322
+ const value = args[index + 1];
323
+ return isNaN(Number(value)) ? value : Number(value);
324
+ }
325
+ return undefined;
326
+ }
327
+
328
+ function formatSize(bytes: number): string {
329
+ const mb = bytes / (1024 * 1024);
330
+ return mb < 1 ? `${Math.round(bytes / 1024)} KB` : `${Math.round(mb)} MB`;
331
+ }
332
+
333
+ export default task;
334
+ ```
335
+
336
+ ## Configuration
337
+
338
+ No configuration needed - all options are provided via command-line flags.
339
+
340
+ Default behavior:
341
+ - Preserves active/paused increments
342
+ - Skips increments with open external issues
343
+ - Warns about uncommitted changes
344
+ - Requires explicit user action (no auto-archiving)
345
+
346
+ ---
347
+
348
+ **Best Practice**: Archive completed increments periodically (e.g., monthly or quarterly) to keep your workspace clean while preserving all history.
349
+
350
+ **Recommended Workflow**:
351
+ ```bash
352
+ # 1. Check what would be archived
353
+ /specweave:archive --keep-last 10 --dry-run
354
+
355
+ # 2. Archive old increments
356
+ /specweave:archive --keep-last 10
357
+
358
+ # 3. Archive related features
359
+ /specweave:archive-features
360
+
361
+ # 4. Check results
362
+ /specweave:status
363
+ ```
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: specweave:backlog
3
+ description: Move an increment to backlog (planned but not ready to start)
4
+ usage: /specweave:backlog <increment-id> --reason="<reason>"
5
+ ---
6
+
7
+ # Backlog Increment Command
8
+
9
+ **Usage**: `/specweave:backlog <increment-id> --reason="<reason>"`
10
+
11
+ ---
12
+
13
+ ## Purpose
14
+
15
+ Move an increment to backlog when:
16
+ - **Planned** but not ready to start yet
17
+ - **Low priority** compared to other work
18
+ - **Waiting** for decisions or approvals before starting
19
+ - **Multiple ideas** you want to plan without violating WIP limits
20
+
21
+ **Key Difference**:
22
+ - **Backlog** = Never started, planned for future (does NOT count towards WIP)
23
+ - **Paused** = Started but blocked (does NOT count towards WIP)
24
+
25
+ ---
26
+
27
+ ## Behavior
28
+
29
+ 1. **Validates** increment exists and is "active"
30
+ 2. **Prompts** for reason if not provided via --reason flag
31
+ 3. **Updates** metadata.json:
32
+ - `status`: "active" → "backlog"
33
+ - `backlogReason`: User-provided reason
34
+ - `backlogAt`: Current timestamp
35
+ 4. **Displays** confirmation message
36
+ 5. **Suggests** next actions (`/specweave:resume` to start work)
37
+
38
+ ---
39
+
40
+ ## Examples
41
+
42
+ ### Move to backlog with reason
43
+ ```bash
44
+ /specweave:backlog 0032 --reason="Low priority, focus on 0031 first"
45
+
46
+ ✅ Increment 0032 moved to backlog
47
+ 📝 Reason: Low priority, focus on 0031 first
48
+ 🗂️ No longer counts toward WIP limits
49
+ 💡 Start work with: /specweave:resume 0032
50
+ ```
51
+
52
+ ### Move to backlog without reason (prompts)
53
+ ```bash
54
+ /specweave:backlog 0032
55
+
56
+ ❓ Why are you moving this to backlog?
57
+ 1. Low priority
58
+ 2. Waiting for decisions/approvals
59
+ 3. Multiple planned ideas
60
+ 4. Other (type reason)
61
+
62
+ > 1
63
+
64
+ ✅ Increment 0032 moved to backlog
65
+ 📝 Reason: Low priority
66
+ 💡 Start work with: /specweave:resume 0032
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Edge Cases
72
+
73
+ ### Already in Backlog
74
+ ```bash
75
+ /specweave:backlog 0032 --reason="Different reason"
76
+
77
+ ⚠️ Increment 0032 is already in backlog
78
+ Previous reason: Low priority
79
+ New reason: Different reason
80
+
81
+ Update reason? [Y/n]: y
82
+
83
+ ✅ Reason updated
84
+ 📝 New reason: Different reason
85
+ ```
86
+
87
+ ### Cannot Backlog Completed
88
+ ```bash
89
+ /specweave:backlog 0005
90
+
91
+ ❌ Cannot move increment 0005 to backlog
92
+ Status: completed
93
+ Completed increments cannot be moved to backlog
94
+ ```
95
+
96
+ ### Cannot Backlog Paused
97
+ ```bash
98
+ /specweave:backlog 0008
99
+
100
+ ❌ Cannot move increment 0008 to backlog
101
+ Status: paused
102
+ Paused work should be resumed or abandoned, not moved to backlog
103
+ Resume it: /specweave:resume 0008
104
+ ```
105
+
106
+ ### Increment Not Found
107
+ ```bash
108
+ /specweave:backlog 9999
109
+
110
+ ❌ Increment not found: 9999
111
+ 💡 Check available increments: /specweave:status
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Implementation
117
+
118
+ This command uses the MetadataManager to update increment status:
119
+
120
+ ```typescript
121
+ import { MetadataManager, IncrementStatus } from '../src/core/increment/metadata-manager';
122
+
123
+ // Read current metadata
124
+ const metadata = MetadataManager.read(incrementId);
125
+
126
+ // Validate can move to backlog
127
+ if (metadata.status !== IncrementStatus.ACTIVE) {
128
+ throw new Error(`Cannot move increment with status: ${metadata.status}`);
129
+ }
130
+
131
+ // Update status
132
+ MetadataManager.updateStatus(incrementId, IncrementStatus.BACKLOG, reason);
133
+ ```
134
+
135
+ ---
136
+
137
+ ## Status Flow
138
+
139
+ ```
140
+ active ──backlog──> backlog
141
+
142
+ └──resume──> active
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Related Commands
148
+
149
+ - `/specweave:resume <id>` - Move from backlog to active (start work)
150
+ - `/specweave:pause <id>` - Pause active work (different from backlog)
151
+ - `/specweave:status` - Show all increment statuses including backlog
152
+ - `/specweave:abandon <id>` - Abandon increment (permanent)
153
+
154
+ ---
155
+
156
+ ## Best Practices
157
+
158
+ ✅ **Use backlog for planning** - Plan multiple increments without violating WIP
159
+
160
+ ✅ **Prioritize backlog regularly** - Review and reorder based on value
161
+
162
+ ✅ **Clear reasons** - Helps with prioritization decisions
163
+
164
+ ✅ **Start when ready** - Use `/specweave:resume` to move from backlog to active
165
+
166
+ ❌ **Don't confuse with paused** - Backlog = never started, Paused = started but blocked
167
+
168
+ ❌ **Don't let backlog grow unbounded** - Review and abandon obsolete items
169
+
170
+ ---
171
+
172
+ ## Backlog vs Paused
173
+
174
+ | Aspect | Backlog | Paused |
175
+ |--------|---------|--------|
176
+ | **Definition** | Planned but not started | Started but blocked |
177
+ | **WIP Count** | NO | NO |
178
+ | **Use Case** | Low priority, future work | Blocked, deprioritized |
179
+ | **Resume** | Start from beginning | Continue where left off |
180
+
181
+ ---
182
+
183
+ ## Warning: Large Backlog
184
+
185
+ If your backlog grows too large (10+ increments), `/specweave:status` will warn:
186
+
187
+ ```bash
188
+ /specweave:status
189
+
190
+ 🗂️ Backlog (12):
191
+ 📦 0032-feature-a [feature] - Low priority
192
+ 📦 0033-feature-b [feature] - Waiting for decisions
193
+ 📦 0034-feature-c [feature] - Multiple planned ideas
194
+ ... (9 more)
195
+
196
+ ⚠️ Large backlog! Consider:
197
+ - Abandoning obsolete items
198
+ - Consolidating similar features
199
+ - Reviewing priorities
200
+
201
+ 💡 Actions:
202
+ /specweave:resume <id> # Start work on highest priority
203
+ /specweave:abandon <id> # Remove obsolete items
204
+ ```
205
+
206
+ ---
207
+
208
+ **Command**: `/specweave:backlog`
209
+ **Plugin**: specweave (core)
210
+ **Version**: v0.19.0+
211
+ **Part of**: Backlog Support Feature