specweave 0.18.1 → 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 (384) hide show
  1. package/CLAUDE.md +229 -1817
  2. package/README.md +68 -0
  3. package/bin/specweave.js +62 -6
  4. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  5. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
  6. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  7. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
  8. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
  9. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
  10. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
  11. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  12. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
  13. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  14. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
  15. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
  16. package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
  17. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
  18. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
  19. package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  20. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +7 -0
  21. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -1
  22. package/dist/plugins/specweave-github/lib/epic-content-builder.js +42 -0
  23. package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -1
  24. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
  25. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  26. package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
  27. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  28. package/dist/plugins/specweave-github/lib/github-epic-sync.js +1 -1
  29. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
  30. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
  31. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
  32. package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
  33. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
  34. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  35. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
  36. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  37. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
  38. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
  39. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
  40. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
  41. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
  42. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
  43. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
  44. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
  45. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
  46. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
  47. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
  48. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
  49. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +8 -6
  50. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -1
  51. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +78 -117
  52. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -1
  53. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  54. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  55. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  56. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  57. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  58. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  59. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  60. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  61. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  62. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  63. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  64. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  65. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  66. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  67. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  68. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  69. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  70. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  71. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  72. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  73. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  74. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  75. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  76. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  77. package/dist/src/cli/commands/import-docs.js +4 -4
  78. package/dist/src/cli/commands/import-docs.js.map +1 -1
  79. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  80. package/dist/src/cli/commands/init-multiproject.js +17 -18
  81. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  82. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  83. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  84. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  85. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  86. package/dist/src/cli/commands/switch-project.js +9 -26
  87. package/dist/src/cli/commands/switch-project.js.map +1 -1
  88. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  89. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  90. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  91. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  92. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  93. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  94. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  95. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  96. package/dist/src/core/increment/active-increment-manager.js +113 -46
  97. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  98. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  99. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  100. package/dist/src/core/increment/conflict-resolver.js +219 -0
  101. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  102. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  103. package/dist/src/core/increment/discipline-checker.js +7 -1
  104. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  105. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  106. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  107. package/dist/src/core/increment/duplicate-detector.js +276 -0
  108. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  109. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  110. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  111. package/dist/src/core/increment/increment-archiver.js +368 -0
  112. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  113. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  114. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  115. package/dist/src/core/increment/increment-reopener.js +390 -0
  116. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  117. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  118. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  119. package/dist/src/core/increment/metadata-manager.js +143 -5
  120. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  121. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  122. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  123. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  124. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  125. package/dist/src/core/increment/types.d.ts +1 -0
  126. package/dist/src/core/increment/types.d.ts.map +1 -1
  127. package/dist/src/core/increment-utils.d.ts +112 -0
  128. package/dist/src/core/increment-utils.d.ts.map +1 -0
  129. package/dist/src/core/increment-utils.js +210 -0
  130. package/dist/src/core/increment-utils.js.map +1 -0
  131. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  132. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  133. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  134. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  135. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  136. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  137. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  138. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  139. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  140. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  141. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  142. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  143. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  144. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  145. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  146. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  147. package/dist/src/core/living-docs/index.d.ts +6 -0
  148. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  149. package/dist/src/core/living-docs/index.js +6 -0
  150. package/dist/src/core/living-docs/index.js.map +1 -1
  151. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  152. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  153. package/dist/src/core/living-docs/project-detector.js +35 -1
  154. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  155. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  156. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  157. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  158. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  159. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  160. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  161. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  162. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  163. package/dist/src/core/living-docs/types.d.ts +143 -0
  164. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  165. package/dist/src/core/project-manager.d.ts +2 -17
  166. package/dist/src/core/project-manager.d.ts.map +1 -1
  167. package/dist/src/core/project-manager.js +68 -48
  168. package/dist/src/core/project-manager.js.map +1 -1
  169. package/dist/src/core/spec-content-sync.d.ts +1 -1
  170. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  171. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  172. package/dist/src/core/sync/enhanced-content-builder.js +2 -1
  173. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  174. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  175. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  176. package/dist/src/core/sync/performance-optimizer.js +220 -0
  177. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  178. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  179. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  180. package/dist/src/core/sync/retry-handler.js +196 -0
  181. package/dist/src/core/sync/retry-handler.js.map +1 -0
  182. package/dist/src/core/types/config.d.ts +94 -0
  183. package/dist/src/core/types/config.d.ts.map +1 -1
  184. package/dist/src/core/types/config.js +16 -0
  185. package/dist/src/core/types/config.js.map +1 -1
  186. package/dist/src/core/types/increment-metadata.d.ts +6 -0
  187. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  188. package/dist/src/core/types/increment-metadata.js +10 -1
  189. package/dist/src/core/types/increment-metadata.js.map +1 -1
  190. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  191. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  192. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  193. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  194. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  195. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  196. package/package.json +1 -1
  197. package/plugins/specweave/COMMANDS.md +13 -4
  198. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  199. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  200. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  201. package/plugins/specweave/commands/specweave-archive.md +363 -0
  202. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  203. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  204. package/plugins/specweave/commands/specweave-increment.md +4 -3
  205. package/plugins/specweave/commands/specweave-progress.md +176 -27
  206. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  207. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  208. package/plugins/specweave/commands/specweave-restore.md +309 -0
  209. package/plugins/specweave/commands/specweave-resume.md +51 -23
  210. package/plugins/specweave/commands/specweave-status.md +41 -7
  211. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  212. package/plugins/specweave/hooks/hooks.json +4 -0
  213. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  214. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  215. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  216. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  217. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  218. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  219. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  220. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  221. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  222. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  223. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  224. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  225. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  226. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  227. package/plugins/specweave-confluent/README.md +375 -0
  228. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  229. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  230. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  231. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  232. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  233. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  234. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  235. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  236. package/plugins/specweave-github/hooks/post-task-completion.sh +10 -9
  237. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  238. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  239. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  240. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  241. package/plugins/specweave-github/lib/epic-content-builder.js +38 -0
  242. package/plugins/specweave-github/lib/epic-content-builder.ts +59 -0
  243. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  244. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  245. package/plugins/specweave-github/lib/github-epic-sync.ts +1 -1
  246. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  247. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  248. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  249. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  250. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  251. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  252. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  253. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  254. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  255. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  256. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  257. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
  258. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  259. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  260. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  261. package/plugins/specweave-kafka/README.md +242 -0
  262. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  263. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  264. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  265. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  266. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  267. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  268. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  269. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  270. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  271. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  272. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  273. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  274. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  275. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  276. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  277. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  278. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  279. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  280. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  281. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  282. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  283. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  284. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  285. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  286. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  287. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  288. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  289. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  290. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  291. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  292. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  293. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  294. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  295. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  296. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  297. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  298. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  299. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  300. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  301. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  302. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  303. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  304. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  305. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  306. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  307. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  308. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  309. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  310. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  311. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  312. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  313. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  314. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  315. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  316. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  317. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  318. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  319. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  320. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  321. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  322. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  323. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  324. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  325. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  326. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  327. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  328. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  329. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  330. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  331. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  332. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  333. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  334. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  335. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  336. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  337. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  338. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  339. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  340. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  341. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  342. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  343. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  344. package/plugins/specweave-kafka/package.json +41 -0
  345. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  346. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  347. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  348. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  349. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  350. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  351. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  352. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  353. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  354. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  355. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  356. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  357. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  358. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  359. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  360. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  361. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  362. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  363. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  364. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  365. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  366. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  367. package/plugins/specweave-kafka/tsconfig.json +21 -0
  368. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  369. package/plugins/specweave-kafka-streams/README.md +310 -0
  370. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  371. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  372. package/plugins/specweave-n8n/README.md +354 -0
  373. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  374. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  375. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  376. package/src/templates/AGENTS.md.template +601 -7
  377. package/src/templates/CLAUDE.md.template +188 -88
  378. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  379. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  380. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  381. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  382. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  383. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  384. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -8,7 +8,7 @@ usage: /specweave:abandon <increment-id> --reason="<reason>"
8
8
 
9
9
  **Usage**: `/specweave:abandon <increment-id> --reason="<reason>"`
10
10
 
11
- ⚠️ **THIS ACTION MOVES THE INCREMENT TO `_abandoned/` FOLDER**
11
+ ⚠️ **THIS ACTION MOVES THE INCREMENT TO `_archive/` FOLDER**
12
12
 
13
13
  ---
14
14
 
@@ -33,7 +33,7 @@ Abandon an increment when:
33
33
  - `abandonedAt`: Current timestamp
34
34
  5. **Moves folder**:
35
35
  - From: `.specweave/increments/{id}/`
36
- - To: `.specweave/increments/_abandoned/{id}/`
36
+ - To: `.specweave/increments/_archive/{id}/`
37
37
  6. **Displays** confirmation with preserved location
38
38
 
39
39
  ---
@@ -44,13 +44,13 @@ Abandon an increment when:
44
44
  ```bash
45
45
  /specweave:abandon 0008 --reason="Requirements changed - feature no longer needed"
46
46
 
47
- ⚠️ This will move increment 0008 to _abandoned/
47
+ ⚠️ This will move increment 0008 to _archive/
48
48
  Reason: Requirements changed - feature no longer needed
49
49
 
50
50
  Continue? [y/N]: y
51
51
 
52
52
  ✅ Increment 0008 abandoned
53
- 📦 Moved to: .specweave/increments/_abandoned/0008-old-feature/
53
+ 📦 Moved to: .specweave/increments/_archive/0008-old-feature/
54
54
  📝 Reason: Requirements changed - feature no longer needed
55
55
  💾 All work preserved for reference
56
56
 
@@ -70,13 +70,13 @@ Continue? [y/N]: y
70
70
 
71
71
  > 1
72
72
 
73
- ⚠️ This will move increment 0009 to _abandoned/
73
+ ⚠️ This will move increment 0009 to _archive/
74
74
  Reason: Requirements changed
75
75
 
76
76
  Continue? [y/N]: y
77
77
 
78
78
  ✅ Increment 0009 abandoned
79
- 📦 Moved to: .specweave/increments/_abandoned/0009-experiment/
79
+ 📦 Moved to: .specweave/increments/_archive/0009-experiment/
80
80
  ```
81
81
 
82
82
  ---
@@ -117,7 +117,7 @@ No action needed.
117
117
  ```bash
118
118
  /specweave:abandon 0008 --reason="Not needed"
119
119
 
120
- ⚠️ This will move increment 0008 to _abandoned/
120
+ ⚠️ This will move increment 0008 to _archive/
121
121
  Reason: Not needed
122
122
 
123
123
  Continue? [y/N]: n
@@ -155,9 +155,9 @@ if (!confirmed) {
155
155
  // Update metadata
156
156
  MetadataManager.updateStatus(incrementId, IncrementStatus.ABANDONED, reason);
157
157
 
158
- // Move to _abandoned/ folder
158
+ // Move to _archive/ folder
159
159
  const fromPath = path.join('.specweave/increments', incrementId);
160
- const toPath = path.join('.specweave/increments/_abandoned', incrementId);
160
+ const toPath = path.join('.specweave/increments/_archive', incrementId);
161
161
  fs.moveSync(fromPath, toPath);
162
162
 
163
163
  console.log(`✅ Moved to: ${toPath}`);
@@ -179,22 +179,24 @@ completed (CANNOT abandon)
179
179
 
180
180
  ---
181
181
 
182
- ## _abandoned/ Folder Structure
182
+ ## _archive/ Folder Structure
183
183
 
184
184
  ```
185
185
  .specweave/increments/
186
- ├── 0001-core-framework/ # Active/completed
187
- ├── 0002-core-enhancements/ # Active/completed
188
- ├── 0003-model-selection/ # Active/completed
189
- ├── _abandoned/ # Abandoned increments
190
- │ ├── 0008-old-approach/ # Abandoned
186
+ ├── 0023-release-management/ # Active
187
+ ├── 0024-bidirectional-spec/ # Active
188
+ ├── 0025-per-project-config/ # Active
189
+ ├── _archive/ # All archived/abandoned/old increments
190
+ │ ├── 0001-core-framework/ # Completed (archived)
191
+ │ ├── 0002-core-enhancements/ # Completed (archived)
192
+ │ ├── 0008-old-approach/ # Abandoned
191
193
  │ │ ├── spec.md
192
194
  │ │ ├── plan.md
193
195
  │ │ ├── tasks.md
194
196
  │ │ └── metadata.json (status: abandoned)
195
- │ ├── 0009-failed-experiment/
196
- │ └── 0010-superseded-feature/
197
- └── _backlog/ # Future work
197
+ │ ├── 0009-failed-experiment/ # Abandoned
198
+ │ └── 0029-cicd-auto-fix/ # Abandoned
199
+ └── _backlog/ # Future work
198
200
  ```
199
201
 
200
202
  ---
@@ -205,7 +207,7 @@ To un-abandon an increment:
205
207
 
206
208
  ```bash
207
209
  # 1. Move back to increments/
208
- mv .specweave/increments/_abandoned/0008-feature \
210
+ mv .specweave/increments/_archive/0008-feature \
209
211
  .specweave/increments/0008-feature
210
212
 
211
213
  # 2. Resume via command
@@ -304,7 +306,7 @@ Abandoned work is valuable!
304
306
  - **Learnings**: Failed experiments teach us what NOT to do
305
307
  - **Reference**: Abandoned specs can inform future work
306
308
 
307
- 💡 Periodically review `_abandoned/` folder for insights
309
+ 💡 Periodically review `_archive/` folder for insights
308
310
 
309
311
  ---
310
312
 
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: specweave-archive-features
3
+ description: Archive features and epics when all related increments are archived
4
+ ---
5
+
6
+ # Archive Features and Epics
7
+
8
+ Archive features and epics based on their increment archive status. Features are archived when all their increments are archived, and epics are archived when all their features are archived.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ /specweave:archive-features [options]
14
+ ```
15
+
16
+ ## Options
17
+
18
+ - `--dry-run`: Show what would be archived without actually moving files
19
+ - `--update-links`: Update all links to archived items (default: true)
20
+ - `--preserve-active`: Don't archive features with active projects (default: true)
21
+ - `--orphaned`: Also archive orphaned features/epics with no increments/features
22
+
23
+ ## Examples
24
+
25
+ ```bash
26
+ # Preview what would be archived
27
+ /specweave:archive-features --dry-run
28
+
29
+ # Archive features and update all links
30
+ /specweave:archive-features
31
+
32
+ # Archive including orphaned features
33
+ /specweave:archive-features --orphaned
34
+ ```
35
+
36
+ ## Archive Rules
37
+
38
+ ### Features are archived when:
39
+ 1. All linked increments are in _archive folder
40
+ 2. No active projects remain (unless --preserve-active=false)
41
+ 3. Feature is orphaned (no increments) and --orphaned is set
42
+
43
+ ### Epics are archived when:
44
+ 1. All linked features are in _archive folder
45
+ 2. Epic is orphaned (no features) and --orphaned is set
46
+
47
+ ### Archive Structure:
48
+ ```
49
+ .specweave/docs/internal/specs/
50
+ ├── _features/
51
+ │ ├── FS-023/ # Active feature
52
+ │ └── _archive/
53
+ │ └── FS-001/ # Archived feature
54
+ ├── _epics/
55
+ │ ├── EPIC-2025-Q1/ # Active epic
56
+ │ └── _archive/
57
+ │ └── EPIC-2024-Q4/ # Archived epic
58
+ └── default/
59
+ ├── FS-023/ # Active project files
60
+ └── _archive/
61
+ └── FS-001/ # Archived project files
62
+ ```
63
+
64
+ ## Important Notes
65
+
66
+ - Archives are LOCAL ONLY (not synced to GitHub/JIRA/ADO)
67
+ - All links are automatically updated to point to archive locations
68
+ - Use `/specweave:restore-feature FS-001` to restore from archive
69
+
70
+ ## Implementation
71
+
72
+ ```typescript
73
+ import { Task } from '@claude/types';
74
+
75
+ const task = new Task('feature-archiver', 'Archive features and epics');
76
+
77
+ // Main logic
78
+ task.run(async () => {
79
+ const { FeatureArchiver } = await import('../../../dist/src/core/living-docs/feature-archiver.js');
80
+ const archiver = new FeatureArchiver(process.cwd());
81
+
82
+ // Parse options
83
+ const options = {
84
+ dryRun: process.argv.includes('--dry-run'),
85
+ updateLinks: !process.argv.includes('--no-update-links'),
86
+ preserveActiveFeatures: !process.argv.includes('--no-preserve-active'),
87
+ archiveOrphanedFeatures: process.argv.includes('--orphaned'),
88
+ archiveOrphanedEpics: process.argv.includes('--orphaned')
89
+ };
90
+
91
+ // Execute archiving
92
+ const result = await archiver.archiveFeatures(options);
93
+
94
+ // Display results
95
+ console.log('\n📦 Archive Results:');
96
+ console.log(` Features archived: ${result.archivedFeatures.length}`);
97
+ console.log(` Epics archived: ${result.archivedEpics.length}`);
98
+ console.log(` Links updated: ${result.updatedLinks.length}`);
99
+
100
+ if (result.errors.length > 0) {
101
+ console.error('\n❌ Errors:');
102
+ result.errors.forEach(err => console.error(` - ${err}`));
103
+ }
104
+
105
+ // Show stats
106
+ const stats = await archiver.getArchiveStats();
107
+ console.log('\n📊 Archive Statistics:');
108
+ console.log(` Features: ${stats.features.active} active, ${stats.features.archived} archived`);
109
+ console.log(` Epics: ${stats.epics.active} active, ${stats.epics.archived} archived`);
110
+
111
+ // Show per-project stats
112
+ if (Object.keys(stats.projects).length > 0) {
113
+ console.log('\n Per Project:');
114
+ for (const [project, counts] of Object.entries(stats.projects)) {
115
+ console.log(` ${project}: ${counts.active} active, ${counts.archived} archived`);
116
+ }
117
+ }
118
+ });
119
+
120
+ export default task;
121
+ ```
@@ -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
+ ```