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
@@ -1,18 +1,38 @@
1
1
  ---
2
2
  name: specweave:progress
3
- description: Show current increment progress, task completion %, PM gate status, and next action
3
+ description: Show progress for ALL active increments (up to 2), task completion %, PM gates, and next actions
4
4
  ---
5
5
 
6
6
  # Progress Tracking
7
7
 
8
- **Quick Status Check**: See exactly where you are in your current increment.
8
+ **Quick Status Check**: See exactly where you are in ALL your active increments.
9
+
10
+ **NEW**: Now shows **ALL active increments** (max 2) with full progress for each!
9
11
 
10
12
  Shows:
11
- - Active increment status
12
- - Task completion percentage
13
+ - **ALL active increment statuses** (not just one!)
14
+ - Task completion percentage (per increment)
13
15
  - PM gate preview (tasks, tests, docs)
14
16
  - Next action to take
15
17
  - Time tracking
18
+ - WIP limit warnings (if >2 active)
19
+
20
+ ---
21
+
22
+ ## Quick Start
23
+
24
+ ```bash
25
+ # Check progress for all active increments (recommended)
26
+ specweave progress
27
+
28
+ # Or use the full command name
29
+ specweave status --verbose
30
+
31
+ # Filter by increment type
32
+ specweave progress --type feature
33
+ ```
34
+
35
+ **Note**: `progress` is an alias for `status --verbose` with automatic verbose mode enabled.
16
36
 
17
37
  ---
18
38
 
@@ -151,13 +171,20 @@ Next Action:
151
171
 
152
172
  ## Implementation
153
173
 
154
- **How `/progress` works**:
174
+ **How `/progress` works** (UPGRADED for multi-active support):
155
175
 
156
- ### Step 1: Find Active Increment
176
+ ### Step 1: Find ALL Active Increments (FAST!)
157
177
 
158
- ```bash
159
- # Check for in-progress increments
160
- find .specweave/increments -name "tasks.md" -exec grep -l "status: in-progress" {} \;
178
+ ```typescript
179
+ // NEW: Use ActiveIncrementManager cache (10x faster!)
180
+ import { MetadataManager } from './src/core/increment/metadata-manager.js';
181
+
182
+ // Get ALL active increments (from cache, not scan!)
183
+ const activeIncrements = MetadataManager.getActive();
184
+
185
+ // Performance:
186
+ // - OLD: Scan 31 metadata files (~50ms)
187
+ // - NEW: Read 1 cache + 1-2 metadata files (~5ms) ✅
161
188
  ```
162
189
 
163
190
  ### Step 2: Parse Tasks and Calculate %
@@ -194,19 +221,27 @@ Overall: (6 + 3 + 1) / (16 + 4.5 + 1) = 10/21.5 = 46.5%
194
221
  # - Status: ✅ updated, ⏳ partial, ❌ outdated
195
222
  ```
196
223
 
197
- ### Step 4: Determine Next Action
198
-
199
- ```bash
200
- if [[ $in_progress_count -eq 0 ]]; then
201
- echo "Run \`/inc\` to start new feature"
202
- elif [[ $in_progress_count -gt 1 ]]; then
203
- echo "⚠️ Multiple increments active. Focus on completing one."
204
- echo "Run \`/do $oldest_increment\`"
205
- elif [[ $next_task != "" ]]; then
206
- echo "Run \`/do $increment_id\` to resume at $next_task"
207
- else
208
- echo "All tasks complete! Run \`/done $increment_id\` to close."
209
- fi
224
+ ### Step 4: Display ALL Active Increments
225
+
226
+ ```typescript
227
+ // NEW: Display progress for EACH active increment
228
+ for (const increment of activeIncrements) {
229
+ console.log(`\n📊 ${increment.id}`);
230
+ console.log(`Status: ${increment.status}`);
231
+ console.log(`Task Progress: ${completed}/${total} (${percent}%)`);
232
+ console.log(`Next: /specweave:do ${increment.id}`);
233
+ }
234
+
235
+ // Show WIP limit info
236
+ if (activeIncrements.length === 0) {
237
+ console.log('No active increments. Run /specweave:increment to start new work.');
238
+ } else if (activeIncrements.length === 1) {
239
+ console.log('✅ 1 active increment (optimal focus)');
240
+ } else if (activeIncrements.length === 2) {
241
+ console.log('✅ 2 active increments (at WIP limit, but OK)');
242
+ } else if (activeIncrements.length > 2) {
243
+ console.log('⚠️ >2 active increments (exceeds WIP limit!)');
244
+ }
210
245
  ```
211
246
 
212
247
  ---
@@ -238,11 +273,12 @@ Use `/specweave:progress` when you:
238
273
 
239
274
  ## Pro Tips
240
275
 
241
- 1. **No increment ID needed** - `/specweave:progress` automatically finds active increment
242
- 2. **Smart resume** - `/specweave:do` picks up where you left off (no task ID needed)
243
- 3. **WIP limits** - Keep 1-2 increments active max for focus
244
- 4. **Completion %** - P1 tasks weighted higher (they're critical path)
245
- 5. **Time tracking** - Warns if tasks are stuck (>2 hours inactive)
276
+ 1. **Shows ALL active increments** - `/specweave:progress` displays up to 2 active increments with full progress
277
+ 2. **10x faster** - Uses cache instead of scanning 31 metadata files (5ms vs 50ms)
278
+ 3. **Smart resume** - `/specweave:do` picks up where you left off (no task ID needed)
279
+ 4. **WIP limits** - 2 active increments allowed (feature + hotfix/bug)
280
+ 5. **Completion %** - P1 tasks weighted higher (they're critical path)
281
+ 6. **Time tracking** - Warns if tasks are stuck (>2 hours inactive)
246
282
 
247
283
  ---
248
284
 
@@ -256,3 +292,116 @@ Use `/specweave:progress` when you:
256
292
  ---
257
293
 
258
294
  **💡 Remember**: `/progress` is your "where am I?" command. Use it anytime you need orientation!
295
+
296
+ ---
297
+
298
+ ## Executable Implementation
299
+
300
+ ```typescript
301
+ import { Task } from '@claude/types';
302
+
303
+ const task = new Task('progress-check', 'Show progress for all active increments');
304
+
305
+ task.run(async () => {
306
+ const { MetadataManager } = await import('../../../dist/src/core/increment/metadata-manager.js');
307
+ const fs = await import('fs-extra');
308
+ const path = await import('path');
309
+
310
+ // Step 1: Get ALL active increments (FAST via cache!)
311
+ const activeIncrements = MetadataManager.getActive();
312
+
313
+ // Step 2: Check if specific increment requested
314
+ const requestedId = process.argv[2]?.replace(/^0+/, '').padStart(4, '0');
315
+ const increments = requestedId
316
+ ? activeIncrements.filter(inc => inc.id === requestedId)
317
+ : activeIncrements;
318
+
319
+ // Step 3: Display results
320
+ console.log('\n📊 Current Progress\n');
321
+
322
+ if (increments.length === 0) {
323
+ if (requestedId) {
324
+ console.log(`❌ Increment ${requestedId} is not active`);
325
+ } else {
326
+ console.log('No active increments found.\n');
327
+ console.log('Recent Increments:');
328
+ const allIncrements = MetadataManager.getAll()
329
+ .filter(m => m.status === 'completed' || m.status === 'closed')
330
+ .sort((a, b) => new Date(b.lastActivity).getTime() - new Date(a.lastActivity).getTime())
331
+ .slice(0, 3);
332
+
333
+ allIncrements.forEach(inc => {
334
+ const age = Math.floor((Date.now() - new Date(inc.lastActivity).getTime()) / (1000 * 60 * 60 * 24));
335
+ console.log(`├─ ${inc.id} (${inc.status}) - ${age} day${age === 1 ? '' : 's'} ago`);
336
+ });
337
+
338
+ console.log('\nNext Action: Run /specweave:increment "feature description" to start new work');
339
+ }
340
+ return;
341
+ }
342
+
343
+ // Step 4: Show progress for each active increment
344
+ for (const increment of increments) {
345
+ console.log(`📦 Increment: ${increment.id}`);
346
+ console.log(`Status: ${increment.status}`);
347
+
348
+ const started = new Date(increment.created);
349
+ const lastActivity = new Date(increment.lastActivity);
350
+ const ageHours = Math.floor((Date.now() - started.getTime()) / (1000 * 60 * 60));
351
+ const lastActivityHours = Math.floor((Date.now() - lastActivity.getTime()) / (1000 * 60 * 60));
352
+
353
+ console.log(`Started: ${ageHours} hours ago`);
354
+ console.log(`Last Activity: ${lastActivityHours} hours ago`);
355
+
356
+ // Try to read tasks.md for progress
357
+ const incrementPath = path.default.join(process.cwd(), '.specweave/increments', increment.id);
358
+ const tasksPath = path.default.join(incrementPath, 'tasks.md');
359
+
360
+ if (await fs.default.pathExists(tasksPath)) {
361
+ const tasksContent = await fs.default.readFile(tasksPath, 'utf-8');
362
+
363
+ // Count tasks
364
+ const taskLines = tasksContent.split('\n').filter(line =>
365
+ line.match(/^#+\s+(T-?\d+|Task-?\d+):/i)
366
+ );
367
+ const completedTasks = tasksContent.split('\n').filter(line =>
368
+ line.includes('[✅]') || line.includes('[x]') || line.includes('[X]')
369
+ );
370
+
371
+ const total = taskLines.length;
372
+ const completed = completedTasks.length;
373
+ const percent = total > 0 ? Math.round((completed / total) * 100) : 0;
374
+
375
+ console.log(`\nTask Progress: ${completed}/${total} completed (${percent}%)`);
376
+
377
+ if (total > 0) {
378
+ console.log('\nTasks:');
379
+ taskLines.slice(0, 10).forEach(line => {
380
+ const isComplete = line.includes('[✅]') || line.includes('[x]') || line.includes('[X]');
381
+ const marker = isComplete ? '✅' : '⏳';
382
+ const taskName = line.replace(/^#+\s+/, '').replace(/\s*\[.*?\]\s*/, '').trim();
383
+ console.log(` ${marker} ${taskName}`);
384
+ });
385
+
386
+ if (taskLines.length > 10) {
387
+ console.log(` ... and ${taskLines.length - 10} more tasks`);
388
+ }
389
+ }
390
+ }
391
+
392
+ console.log(`\nNext Action: Run /specweave:do ${increment.id} to continue work\n`);
393
+ }
394
+
395
+ // Step 5: Show WIP limit warnings
396
+ if (activeIncrements.length > 2) {
397
+ console.log('⚠️ Warning: More than 2 active increments (exceeds WIP limit)');
398
+ console.log('💡 Recommendation: Focus on completing one increment before starting new work\n');
399
+ } else if (activeIncrements.length === 2) {
400
+ console.log('✅ 2 active increments (at WIP limit, but OK)\n');
401
+ } else if (activeIncrements.length === 1) {
402
+ console.log('✅ 1 active increment (optimal focus)\n');
403
+ }
404
+ });
405
+
406
+ export default task;
407
+ ```
@@ -0,0 +1,391 @@
1
+ ---
2
+ name: specweave-reopen
3
+ description: |
4
+ Reopen completed increments, tasks, or user stories when issues are discovered.
5
+ Validates WIP limits, creates audit trail, and syncs to external tools.
6
+ Use when recently completed work has issues that need fixing.
7
+ ---
8
+
9
+ # Reopen Increment, Task, or User Story
10
+
11
+ Reopen completed work when issues are discovered after completion.
12
+
13
+ ## Quick Start
14
+
15
+ ```bash
16
+ # Reopen entire increment
17
+ /specweave:reopen 0031 --reason "GitHub sync failing"
18
+
19
+ # Reopen specific task
20
+ /specweave:reopen 0031 --task T-003 --reason "API integration broken"
21
+
22
+ # Reopen user story (all related tasks)
23
+ /specweave:reopen 0031 --user-story US-001 --reason "Acceptance criteria not met"
24
+ ```
25
+
26
+ ## Smart Detection First!
27
+
28
+ **Before using this command manually**, try reporting your issue naturally:
29
+ ```
30
+ "The GitHub sync isn't working"
31
+ ```
32
+
33
+ The `smart-reopen-detector` skill will:
34
+ 1. 🔍 Scan recent work
35
+ 2. 🎯 Find related items
36
+ 3. 💡 Suggest the exact command to run
37
+
38
+ ## Usage
39
+
40
+ ### Reopen Entire Increment
41
+
42
+ Reopens the increment and marks all tasks as active.
43
+
44
+ ```bash
45
+ /specweave:reopen <increment-id> --reason "Why reopening"
46
+ ```
47
+
48
+ **Example**:
49
+ ```bash
50
+ /specweave:reopen 0031-external-tool-status-sync --reason "GitHub sync failing in production"
51
+ ```
52
+
53
+ **What happens**:
54
+ 1. ✅ Changes status: COMPLETED → ACTIVE
55
+ 2. 📋 Reopens all completed tasks: [x] → [ ]
56
+ 3. ⚠️ Checks WIP limits (warns if exceeded)
57
+ 4. 📝 Creates audit trail in metadata.json
58
+ 5. 🔄 Syncs to external tools (GitHub/JIRA/ADO)
59
+ 6. 📊 Updates status line
60
+
61
+ ### Reopen Specific Task
62
+
63
+ Reopens a single task without changing increment status.
64
+
65
+ ```bash
66
+ /specweave:reopen <increment-id> --task <task-id> --reason "Why reopening"
67
+ ```
68
+
69
+ **Example**:
70
+ ```bash
71
+ /specweave:reopen 0031 --task T-003 --reason "GitHub API returning 500 errors"
72
+ ```
73
+
74
+ **What happens**:
75
+ 1. ✅ Updates task status: [x] → [ ]
76
+ 2. 📝 Adds annotation: "Reopened: YYYY-MM-DD - reason"
77
+ 3. 🔄 Unchecks task checkbox in external issue (if synced)
78
+ 4. 📊 Updates status line progress
79
+
80
+ ### Reopen User Story
81
+
82
+ Reopens a user story and all its related tasks.
83
+
84
+ ```bash
85
+ /specweave:reopen <increment-id> --user-story <us-id> --reason "Why reopening"
86
+ ```
87
+
88
+ **Example**:
89
+ ```bash
90
+ /specweave:reopen 0031 --user-story US-001 --reason "Authentication not working as specified"
91
+ ```
92
+
93
+ **What happens**:
94
+ 1. ✅ Finds all tasks with AC-US1-XX
95
+ 2. 📋 Reopens each task: [x] → [ ]
96
+ 3. 📄 Updates user story status in living docs
97
+ 4. 🔄 Syncs to external tools
98
+
99
+ ### Force Reopen (Bypass WIP Limits)
100
+
101
+ Use `--force` to bypass WIP limit checks (use sparingly!).
102
+
103
+ ```bash
104
+ /specweave:reopen <increment-id> --force --reason "Critical production issue"
105
+ ```
106
+
107
+ **Example**:
108
+ ```bash
109
+ /specweave:reopen 0031 --force --reason "Production down, need immediate fix"
110
+ ```
111
+
112
+ **⚠️ Warning**: This can violate WIP limits. Use only for:
113
+ - Critical production incidents
114
+ - Hotfixes
115
+ - When no other increment can be paused
116
+
117
+ ## Parameters
118
+
119
+ | Parameter | Required | Description |
120
+ |-----------|----------|-------------|
121
+ | `<increment-id>` | Yes | Increment to reopen (e.g., `0031` or `0031-external-tool-status-sync`) |
122
+ | `--reason <text>` | Yes | Why reopening (for audit trail) |
123
+ | `--task <id>` | No | Reopen specific task (e.g., `T-003`) |
124
+ | `--user-story <id>` | No | Reopen user story + related tasks (e.g., `US-001`) |
125
+ | `--force` | No | Bypass WIP limit checks |
126
+
127
+ ## WIP Limit Validation
128
+
129
+ The command automatically checks WIP limits before reopening increments.
130
+
131
+ **Example (limit exceeded)**:
132
+ ```
133
+ ⚠️ WIP LIMIT WARNING:
134
+ Current active: 2 features
135
+ Limit: 2 features
136
+ Reopening 0031 will EXCEED the limit (3/2)!
137
+
138
+ Options:
139
+ 1. Pause another feature: /specweave:pause 0030 --reason "Paused for critical fix"
140
+ 2. Complete another feature: /specweave:done 0029
141
+ 3. Force reopen: /specweave:reopen 0031 --force --reason "Production critical"
142
+
143
+ Continue? (y/n)
144
+ ```
145
+
146
+ **Unlimited types** (no WIP check):
147
+ - `hotfix` - Critical production fixes
148
+ - `bug` - Production bug investigations
149
+ - `experiment` - POCs and spikes
150
+
151
+ ## Audit Trail
152
+
153
+ Every reopen is tracked in the increment's metadata.json:
154
+
155
+ ```json
156
+ {
157
+ "id": "0031-external-tool-status-sync",
158
+ "status": "active",
159
+ "reopened": {
160
+ "count": 1,
161
+ "history": [
162
+ {
163
+ "date": "2025-11-14T15:30:00Z",
164
+ "reason": "GitHub sync failing",
165
+ "previousStatus": "completed",
166
+ "by": "user"
167
+ }
168
+ ]
169
+ }
170
+ }
171
+ ```
172
+
173
+ Tasks are also annotated:
174
+
175
+ ```markdown
176
+ ### T-003: GitHub Content Sync
177
+
178
+ **Status**: [ ] (Reopened: 2025-11-14 - GitHub sync failing)
179
+
180
+ **Previous Completions**:
181
+ - Completed: 2025-11-12T10:00:00Z
182
+ - Reopened: 2025-11-14T15:30:00Z - GitHub sync failing
183
+ ```
184
+
185
+ ## External Tool Sync
186
+
187
+ When you reopen an increment/task, it syncs to external tools:
188
+
189
+ ### GitHub
190
+ - Reopens closed issue
191
+ - Updates issue body: "⚠️ **Reopened**: [reason]"
192
+ - Unchecks completed task checkboxes
193
+ - Adds label: `reopened`
194
+
195
+ ### JIRA
196
+ - Transitions issue: Done → In Progress
197
+ - Adds comment: "Reopened: [reason]"
198
+ - Updates resolution: None
199
+
200
+ ### Azure DevOps
201
+ - Updates work item state: Closed → Active
202
+ - Adds comment: "Reopened: [reason]"
203
+
204
+ ## Examples
205
+
206
+ ### Example 1: Production Bug
207
+ ```bash
208
+ # Discover via smart detector
209
+ "The payment processing is broken after deployment"
210
+
211
+ # Suggested command (from smart detector)
212
+ /specweave:reopen 0028-payment-integration --reason "Payment processing failing in prod"
213
+
214
+ # Result
215
+ ✅ Increment 0028 reopened
216
+ ⚠️ WIP LIMIT: 3/2 active features (EXCEEDED)
217
+ 📋 Reopened 5 tasks
218
+ 🔄 Synced to GitHub issue #123
219
+ 💡 Continue work: /specweave:do 0028
220
+ ```
221
+
222
+ ### Example 2: Specific Task Fix
223
+ ```bash
224
+ # Surgical reopen (just one task)
225
+ /specweave:reopen 0031 --task T-003 --reason "GitHub API rate limiting not handled"
226
+
227
+ # Result
228
+ ✅ Task T-003 reopened
229
+ 📊 Progress: 23/24 tasks (95%)
230
+ 💡 Fix and mark complete: [x] in tasks.md
231
+ ```
232
+
233
+ ### Example 3: User Story Not Met
234
+ ```bash
235
+ # Reopen entire user story
236
+ /specweave:reopen 0025 --user-story US-002 --reason "Security requirements not satisfied"
237
+
238
+ # Result
239
+ ✅ User story US-002 reopened
240
+ 📋 Reopened 3 related tasks: T-004, T-005, T-006
241
+ 📄 Updated living docs: us-002-security-requirements.md
242
+ 🔄 Synced to JIRA story AUTH-123
243
+ ```
244
+
245
+ ## Status Line Integration
246
+
247
+ After reopening, the status line shows:
248
+
249
+ ```
250
+ 📊 0031-external-tool-status-sync | ⚠️ REOPENED | 23/24 tasks (95%) | GitHub sync failing
251
+ ```
252
+
253
+ The `⚠️ REOPENED` badge indicates the increment was previously completed.
254
+
255
+ ## Common Scenarios
256
+
257
+ ### Scenario 1: Tests Passing Locally, Failing in CI
258
+
259
+ ```bash
260
+ # Reopen increment to investigate
261
+ /specweave:reopen 0032 --reason "CI tests failing, passing locally"
262
+
263
+ # Debug CI config
264
+ # Fix issue
265
+ # Mark complete again
266
+ ```
267
+
268
+ ### Scenario 2: Feature Works but Acceptance Criteria Not Met
269
+
270
+ ```bash
271
+ # Reopen specific user story
272
+ /specweave:reopen 0029 --user-story US-003 --reason "Missing error handling requirement"
273
+
274
+ # Implement missing AC
275
+ # Complete user story
276
+ ```
277
+
278
+ ### Scenario 3: Regression Found
279
+
280
+ ```bash
281
+ # Reopen old increment (if within 7 days)
282
+ /specweave:reopen 0027 --task T-012 --reason "Regression: login timeout increased"
283
+
284
+ # Fix regression
285
+ # Add regression test
286
+ # Complete
287
+ ```
288
+
289
+ ## Integration with Workflow
290
+
291
+ **Full workflow**:
292
+ ```bash
293
+ # 1. Report issue (triggers smart detector)
294
+ "The GitHub sync is broken"
295
+
296
+ # 2. Smart detector suggests
297
+ # /specweave:reopen 0031 --task T-003 --reason "GitHub sync broken"
298
+
299
+ # 3. Execute reopen
300
+ /specweave:reopen 0031 --task T-003 --reason "GitHub sync broken"
301
+
302
+ # 4. Check status
303
+ /specweave:status
304
+
305
+ # 5. Fix the issue
306
+ # Edit code...
307
+
308
+ # 6. Mark complete
309
+ # Update tasks.md: [ ] → [x]
310
+
311
+ # 7. Close increment (if all tasks done)
312
+ /specweave:done 0031
313
+ ```
314
+
315
+ ## Best Practices
316
+
317
+ ### ✅ Do
318
+ - Always provide a clear `--reason`
319
+ - Check WIP limits first (`/specweave:status`)
320
+ - Use task-level reopen for surgical fixes
321
+ - Use increment reopen for systemic issues
322
+ - Add reopened annotation to tasks.md
323
+
324
+ ### ❌ Don't
325
+ - Abuse `--force` (respect WIP limits)
326
+ - Reopen old increments (>7 days) without investigation
327
+ - Reopen without understanding the issue
328
+ - Skip the reason (audit trail is critical)
329
+
330
+ ## Troubleshooting
331
+
332
+ **Problem**: "Cannot reopen: increment status is active, not completed"
333
+
334
+ **Solution**: Increment is already active, no need to reopen. Just continue work.
335
+
336
+ ---
337
+
338
+ **Problem**: "WIP limit exceeded"
339
+
340
+ **Solution**: Pause or complete another increment first:
341
+ ```bash
342
+ /specweave:pause 0030 --reason "Paused for critical fix"
343
+ /specweave:reopen 0031 --reason "Production issue"
344
+ ```
345
+
346
+ ---
347
+
348
+ **Problem**: "Task T-003 not found in tasks.md"
349
+
350
+ **Solution**: Check task ID spelling:
351
+ ```bash
352
+ # List all tasks
353
+ cat .specweave/increments/0031-external-tool-status-sync/tasks.md | grep "^##"
354
+ ```
355
+
356
+ ---
357
+
358
+ **Problem**: "User story US-001 not found"
359
+
360
+ **Solution**: Check spec.md for correct user story ID.
361
+
362
+ ## Related Commands
363
+
364
+ - `/specweave:status` - Check WIP limits
365
+ - `/specweave:progress` - See increment progress
366
+ - `/specweave:do` - Continue work after reopening
367
+ - `/specweave:pause` - Pause another increment to make room
368
+ - `/specweave:done` - Close increment when fixed
369
+
370
+ ## Technical Details
371
+
372
+ **Implementation**:
373
+ - Core logic: `src/core/increment/increment-reopener.ts`
374
+ - Smart detection: `src/core/increment/recent-work-scanner.ts`
375
+ - Status transitions: Updated in `increment-metadata.ts`
376
+
377
+ **Validation**:
378
+ - ✅ Increment exists
379
+ - ✅ Current status is COMPLETED
380
+ - ✅ WIP limits (unless --force)
381
+ - ✅ Task/User story exists
382
+
383
+ **External Sync**:
384
+ - GitHub: `plugins/specweave-github/hooks/post-task-completion.sh`
385
+ - JIRA: `plugins/specweave-jira/hooks/post-task-completion.sh`
386
+ - ADO: `plugins/specweave-ado/hooks/post-task-completion.sh`
387
+
388
+ ---
389
+
390
+ **Related Skills**: `smart-reopen-detector`
391
+ **Auto-activation**: Report issues like "not working", "broken", "failing"