specweave 0.18.1 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) 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/src/cli/commands/import-docs.js +4 -4
  54. package/dist/src/cli/commands/import-docs.js.map +1 -1
  55. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  56. package/dist/src/cli/commands/init-multiproject.js +17 -18
  57. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  58. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  59. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  60. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  61. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  62. package/dist/src/cli/commands/switch-project.js +9 -26
  63. package/dist/src/cli/commands/switch-project.js.map +1 -1
  64. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  65. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  66. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  67. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  68. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  69. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  70. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  71. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  72. package/dist/src/core/increment/active-increment-manager.js +113 -46
  73. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  74. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  75. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  76. package/dist/src/core/increment/conflict-resolver.js +219 -0
  77. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  78. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  79. package/dist/src/core/increment/discipline-checker.js +7 -1
  80. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  81. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  82. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  83. package/dist/src/core/increment/duplicate-detector.js +276 -0
  84. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  85. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  86. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  87. package/dist/src/core/increment/increment-archiver.js +368 -0
  88. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  89. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  90. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  91. package/dist/src/core/increment/increment-reopener.js +390 -0
  92. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  93. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  94. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  95. package/dist/src/core/increment/metadata-manager.js +143 -5
  96. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  97. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  98. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  99. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  100. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  101. package/dist/src/core/increment/types.d.ts +1 -0
  102. package/dist/src/core/increment/types.d.ts.map +1 -1
  103. package/dist/src/core/increment-utils.d.ts +112 -0
  104. package/dist/src/core/increment-utils.d.ts.map +1 -0
  105. package/dist/src/core/increment-utils.js +210 -0
  106. package/dist/src/core/increment-utils.js.map +1 -0
  107. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  108. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  109. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  110. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  111. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  112. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  113. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  114. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  115. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  116. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  117. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  118. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  119. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  120. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  121. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  122. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  123. package/dist/src/core/living-docs/index.d.ts +6 -0
  124. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  125. package/dist/src/core/living-docs/index.js +6 -0
  126. package/dist/src/core/living-docs/index.js.map +1 -1
  127. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  128. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  129. package/dist/src/core/living-docs/project-detector.js +35 -1
  130. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  131. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  132. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  133. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  134. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  135. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  136. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  137. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  138. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  139. package/dist/src/core/living-docs/types.d.ts +143 -0
  140. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  141. package/dist/src/core/project-manager.d.ts +2 -17
  142. package/dist/src/core/project-manager.d.ts.map +1 -1
  143. package/dist/src/core/project-manager.js +68 -48
  144. package/dist/src/core/project-manager.js.map +1 -1
  145. package/dist/src/core/spec-content-sync.d.ts +1 -1
  146. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  147. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  148. package/dist/src/core/sync/enhanced-content-builder.js +2 -1
  149. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  150. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  151. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  152. package/dist/src/core/sync/performance-optimizer.js +220 -0
  153. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  154. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  155. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  156. package/dist/src/core/sync/retry-handler.js +196 -0
  157. package/dist/src/core/sync/retry-handler.js.map +1 -0
  158. package/dist/src/core/types/config.d.ts +94 -0
  159. package/dist/src/core/types/config.d.ts.map +1 -1
  160. package/dist/src/core/types/config.js +16 -0
  161. package/dist/src/core/types/config.js.map +1 -1
  162. package/dist/src/core/types/increment-metadata.d.ts +6 -0
  163. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  164. package/dist/src/core/types/increment-metadata.js +10 -1
  165. package/dist/src/core/types/increment-metadata.js.map +1 -1
  166. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  167. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  168. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  169. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  170. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  171. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  172. package/package.json +1 -1
  173. package/plugins/specweave/COMMANDS.md +13 -4
  174. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  175. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  176. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  177. package/plugins/specweave/commands/specweave-archive.md +363 -0
  178. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  179. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  180. package/plugins/specweave/commands/specweave-increment.md +4 -3
  181. package/plugins/specweave/commands/specweave-progress.md +176 -27
  182. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  183. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  184. package/plugins/specweave/commands/specweave-restore.md +309 -0
  185. package/plugins/specweave/commands/specweave-resume.md +51 -23
  186. package/plugins/specweave/commands/specweave-status.md +41 -7
  187. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  188. package/plugins/specweave/hooks/hooks.json +4 -0
  189. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  190. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  191. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  192. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  193. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  194. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  195. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  196. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  197. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  198. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  199. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  200. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  201. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  202. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  203. package/plugins/specweave-confluent/README.md +375 -0
  204. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  205. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  206. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  207. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  208. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  209. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  210. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  211. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  212. package/plugins/specweave-github/hooks/post-task-completion.sh +10 -9
  213. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  214. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  215. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  216. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  217. package/plugins/specweave-github/lib/epic-content-builder.js +38 -0
  218. package/plugins/specweave-github/lib/epic-content-builder.ts +59 -0
  219. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  220. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  221. package/plugins/specweave-github/lib/github-epic-sync.ts +1 -1
  222. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  223. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  224. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  225. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  226. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  227. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  228. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  229. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  230. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  231. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  232. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  233. package/plugins/{specweave-ado/lib/enhanced-ado-sync.js → specweave-jira/lib/enhanced-jira-sync.js} +25 -61
  234. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  235. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  236. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  237. package/plugins/specweave-kafka/README.md +242 -0
  238. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  239. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  240. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  241. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  242. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  243. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  244. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  245. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  246. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  247. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  248. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  249. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  250. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  251. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  252. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  253. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  254. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  255. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  256. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  257. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  258. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  259. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  260. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  261. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  262. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  263. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  264. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  265. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  266. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  267. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  268. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  269. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  270. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  271. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  272. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  273. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  274. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  275. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  276. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  277. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  278. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  279. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  280. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  281. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  282. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  283. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  284. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  285. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  286. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  287. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  288. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  289. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  290. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  291. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  292. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  293. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  294. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  295. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  296. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  297. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  298. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  299. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  300. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  301. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  302. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  303. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  304. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  305. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  306. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  307. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  308. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  309. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  310. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  311. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  312. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  313. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  314. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  315. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  316. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  317. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  318. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  319. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  320. package/plugins/specweave-kafka/package.json +41 -0
  321. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  322. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  323. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  324. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  325. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  326. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  327. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  328. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  329. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  330. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  331. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  332. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  333. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  334. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  335. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  336. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  337. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  338. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  339. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  340. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  341. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  342. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  343. package/plugins/specweave-kafka/tsconfig.json +21 -0
  344. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  345. package/plugins/specweave-kafka-streams/README.md +310 -0
  346. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  347. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  348. package/plugins/specweave-n8n/README.md +354 -0
  349. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  350. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  351. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  352. package/src/templates/AGENTS.md.template +601 -7
  353. package/src/templates/CLAUDE.md.template +188 -88
  354. package/dist/locales/de/.gitkeep +0 -0
  355. package/dist/locales/de/cli.json +0 -108
  356. package/dist/locales/en/cli.json +0 -287
  357. package/dist/locales/en/errors.json +0 -7
  358. package/dist/locales/en/templates.json +0 -6
  359. package/dist/locales/es/.gitkeep +0 -0
  360. package/dist/locales/es/cli.json +0 -41
  361. package/dist/locales/fr/.gitkeep +0 -0
  362. package/dist/locales/fr/cli.json +0 -108
  363. package/dist/locales/ja/.gitkeep +0 -0
  364. package/dist/locales/ja/cli.json +0 -108
  365. package/dist/locales/ko/.gitkeep +0 -0
  366. package/dist/locales/ko/cli.json +0 -108
  367. package/dist/locales/pt/.gitkeep +0 -0
  368. package/dist/locales/pt/cli.json +0 -108
  369. package/dist/locales/ru/.gitkeep +0 -0
  370. package/dist/locales/ru/cli.json +0 -269
  371. package/dist/locales/zh/.gitkeep +0 -0
  372. package/dist/locales/zh/cli.json +0 -108
  373. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +0 -25
  374. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +0 -1
  375. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -191
  376. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +0 -1
  377. package/dist/spec-parser.js +0 -629
  378. package/dist/src/core/sync/spec-content-sync.d.ts +0 -88
  379. package/dist/src/core/sync/spec-content-sync.d.ts.map +0 -1
  380. package/dist/src/core/sync/spec-content-sync.js +0 -5
  381. package/dist/src/core/sync/spec-content-sync.js.map +0 -1
  382. package/dist/tsconfig.tsbuildinfo +0 -1
  383. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  384. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  385. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  386. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  387. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  388. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  389. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,425 @@
1
+ ---
2
+ name: specweave:sync-specs
3
+ description: Sync only specs folder to living docs - distributes increment specs into hierarchical user stories without updating architecture, operations, or other docs
4
+ ---
5
+
6
+ # Sync Specs Only
7
+
8
+ You are executing the SpecWeave specs-only sync command. This distributes increment specs specifically into the living docs specs folder using the Universal Hierarchy (Epic → Feature → User Story → Task), without touching other documentation areas.
9
+
10
+ ---
11
+
12
+ ## STEP 1: Parse Arguments
13
+
14
+ ```
15
+ Arguments provided: [user's arguments]
16
+ ```
17
+
18
+ **Parse the input**:
19
+ - Check for increment ID: `0001`, `0002`, etc.
20
+ - If no increment ID: find the most recent increment
21
+ - Check for options: `--force`, `--dry-run`
22
+
23
+ **Find increment**:
24
+ ```bash
25
+ if [[ -z "$INCREMENT_ID" ]]; then
26
+ # Find most recent increment
27
+ INCREMENT_ID=$(ls -1 .specweave/increments/ | grep -E '^[0-9]{4}-' | sort -r | head -1)
28
+ fi
29
+
30
+ # Verify increment exists
31
+ INCREMENT_PATH=".specweave/increments/$INCREMENT_ID"
32
+ if [[ ! -d "$INCREMENT_PATH" ]]; then
33
+ echo "❌ Error: Increment $INCREMENT_ID not found"
34
+ exit 1
35
+ fi
36
+ ```
37
+
38
+ **Output**:
39
+ ```
40
+ 🎯 Target increment: {increment_id}
41
+ 📁 Increment path: .specweave/increments/{increment_id}
42
+ 🔄 Mode: Specs-only sync (Universal Hierarchy)
43
+
44
+ Processing...
45
+ ```
46
+
47
+ ---
48
+
49
+ ## STEP 2: Check Prerequisites
50
+
51
+ ### 2.1 Verify Spec File Exists
52
+
53
+ ```bash
54
+ SPEC_FILE="$INCREMENT_PATH/spec.md"
55
+ if [[ ! -f "$SPEC_FILE" ]]; then
56
+ echo "❌ Error: No spec.md found in increment $INCREMENT_ID"
57
+ echo " Cannot sync specs without a spec file"
58
+ exit 1
59
+ fi
60
+ ```
61
+
62
+ ### 2.2 Check Tasks File (for bidirectional linking)
63
+
64
+ ```bash
65
+ TASKS_FILE="$INCREMENT_PATH/tasks.md"
66
+ HAS_TASKS=false
67
+ if [[ -f "$TASKS_FILE" ]]; then
68
+ HAS_TASKS=true
69
+ echo "✅ Found tasks.md - will create bidirectional links"
70
+ else
71
+ echo "⚠️ No tasks.md - spec will sync without task links"
72
+ fi
73
+ ```
74
+
75
+ ### 2.3 Read Metadata for External Links
76
+
77
+ ```bash
78
+ METADATA_FILE="$INCREMENT_PATH/metadata.json"
79
+ if [[ -f "$METADATA_FILE" ]]; then
80
+ echo "✅ Found metadata.json - will include external links"
81
+ else
82
+ echo "⚠️ No metadata.json - no external tool links available"
83
+ fi
84
+ ```
85
+
86
+ ---
87
+
88
+ ## STEP 3: Execute Spec Distribution
89
+
90
+ ### 3.1 Run SpecDistributor
91
+
92
+ **Execute the distribution using Node.js**:
93
+
94
+ ```javascript
95
+ // Direct execution via Node.js
96
+ node -e "
97
+ import('./dist/src/core/living-docs/spec-distributor.js').then(async ({ SpecDistributor }) => {
98
+ const distributor = new SpecDistributor(process.cwd());
99
+
100
+ console.log('🚀 Starting spec distribution...');
101
+ console.log(' 📄 Reading spec.md from increment ${INCREMENT_ID}');
102
+
103
+ try {
104
+ const result = await distributor.distribute('${INCREMENT_ID}');
105
+
106
+ console.log('');
107
+ console.log('✅ Distribution successful!');
108
+ console.log(' 📊 Total stories: ' + result.totalStories);
109
+ console.log(' 📁 Total files created: ' + result.totalFiles);
110
+ console.log(' 🎯 Feature ID: ' + result.specId);
111
+
112
+ if (result.epicPath) {
113
+ console.log(' 📂 Feature path: ' + result.epicPath);
114
+ }
115
+
116
+ if (result.userStoryPaths && result.userStoryPaths.length > 0) {
117
+ console.log(' 📝 User stories created:');
118
+ result.userStoryPaths.forEach(p => console.log(' • ' + p));
119
+ }
120
+
121
+ if (result.warnings && result.warnings.length > 0) {
122
+ console.log('');
123
+ console.log('⚠️ Warnings:');
124
+ result.warnings.forEach(w => console.log(' • ' + w));
125
+ }
126
+
127
+ // Update acceptance criteria status based on completed tasks
128
+ console.log('');
129
+ console.log('📊 Updating acceptance criteria status...');
130
+ await distributor.updateAcceptanceCriteriaStatus('${INCREMENT_ID}');
131
+
132
+ } catch (error) {
133
+ console.error('❌ Distribution failed:', error.message);
134
+ process.exit(1);
135
+ }
136
+ });
137
+ "
138
+ ```
139
+
140
+ ---
141
+
142
+ ## STEP 4: Report Distribution Results
143
+
144
+ ### 4.1 Show What Was Created
145
+
146
+ ```
147
+ ═══════════════════════════════════════════════════════
148
+ ✅ SPECS-ONLY SYNC COMPLETE
149
+ ═══════════════════════════════════════════════════════
150
+
151
+ Increment: {increment_id}
152
+ Title: {title from spec.md}
153
+
154
+ ───────────────────────────────────────────────────────
155
+ 📊 UNIVERSAL HIERARCHY CREATED
156
+ ───────────────────────────────────────────────────────
157
+
158
+ 📁 Epic (Optional):
159
+ {if created}
160
+ Path: .specweave/docs/internal/specs/_epics/{EPIC-ID}/EPIC.md
161
+ Status: Created/Updated
162
+
163
+ 📁 Feature (Required):
164
+ Path: .specweave/docs/internal/specs/_features/{FS-ID}/FEATURE.md
165
+ Status: Created/Updated
166
+ Projects: {list of projects}
167
+
168
+ 📁 Project Contexts:
169
+ {for each project}
170
+ • {project}: .specweave/docs/internal/specs/{project}/{FS-ID}/README.md
171
+
172
+ 📝 User Stories:
173
+ {for each project}
174
+ {project}:
175
+ {for each story}
176
+ • {story-id}: {story-title}
177
+ Path: .specweave/docs/internal/specs/{project}/{FS-ID}/{us-id}.md
178
+
179
+ ───────────────────────────────────────────────────────
180
+ 🔗 BIDIRECTIONAL LINKING
181
+ ───────────────────────────────────────────────────────
182
+
183
+ {if tasks.md exists}
184
+ ✅ Task → User Story Links:
185
+ Updated tasks.md with user story references
186
+ Each task now links to its parent user story
187
+
188
+ ✅ User Story → Task Links:
189
+ Each user story shows implementing tasks
190
+ Tasks linked back to increment #{increment_id}
191
+ {else}
192
+ ⚠️ No tasks.md found - stories created without task links
193
+ {/if}
194
+
195
+ ───────────────────────────────────────────────────────
196
+ 📂 FILE STRUCTURE
197
+ ───────────────────────────────────────────────────────
198
+
199
+ .specweave/docs/internal/specs/
200
+ ├── _epics/ {if epic created}
201
+ │ └── {EPIC-ID}/
202
+ │ └── EPIC.md
203
+ ├── _features/
204
+ │ └── {FS-ID}/
205
+ │ └── FEATURE.md ← Cross-project feature
206
+ └── {project}/ ← Per-project stories
207
+ └── {FS-ID}/
208
+ ├── README.md ← Project context
209
+ ├── us-001-{title}.md ← User story 1
210
+ ├── us-002-{title}.md ← User story 2
211
+ └── ...
212
+
213
+ ───────────────────────────────────────────────────────
214
+ 🎯 WHAT THIS SYNC DID
215
+ ───────────────────────────────────────────────────────
216
+
217
+ ✅ Parsed increment spec.md
218
+ ✅ Detected Epic mapping (if applicable)
219
+ ✅ Detected Feature mapping (FS-YY-MM-DD pattern)
220
+ ✅ Classified content by project
221
+ ✅ Generated hierarchical structure
222
+ ✅ Created bidirectional links (if tasks.md exists)
223
+ ✅ Preserved external tool links (GitHub/Jira/ADO)
224
+
225
+ ❌ DID NOT UPDATE:
226
+ • Architecture decisions (ADRs)
227
+ • Operations docs (runbooks, deployment)
228
+ • Delivery docs (CI/CD, testing)
229
+ • Governance docs (security, compliance)
230
+ • Strategy docs (PRDs, roadmaps)
231
+
232
+ This command ONLY syncs specs folder content!
233
+
234
+ ═══════════════════════════════════════════════════════
235
+ ```
236
+
237
+ ---
238
+
239
+ ## STEP 5: Next Steps Guidance
240
+
241
+ ```
242
+ 🎯 NEXT STEPS
243
+ ───────────────────────────────────────────────────────
244
+
245
+ 1. Review generated specs:
246
+ cd .specweave/docs/internal/specs/
247
+ ls -la {project}/{FS-ID}/
248
+
249
+ 2. Verify bidirectional links (if applicable):
250
+ • Check tasks.md has "User Story:" links
251
+ • Check user stories have "Implementation:" sections
252
+
253
+ 3. Sync to external tools (if configured):
254
+ {if GitHub configured}
255
+ • GitHub: /specweave-github:sync-spec
256
+ {/if}
257
+ {if Jira configured}
258
+ • Jira: /specweave-jira:sync-spec
259
+ {/if}
260
+ {if ADO configured}
261
+ • Azure DevOps: /specweave-ado:sync-spec
262
+ {/if}
263
+
264
+ 4. Update other docs (if needed):
265
+ • Full sync: /specweave:sync-docs
266
+ • Architecture only: Update ADRs manually
267
+ • Operations only: Update runbooks manually
268
+
269
+ 5. Commit changes:
270
+ git add .specweave/docs/internal/specs/
271
+ git commit -m "docs: sync specs from increment {increment_id}"
272
+ ```
273
+
274
+ ---
275
+
276
+ ## ERROR HANDLING
277
+
278
+ ### Error: Increment Not Found
279
+ ```
280
+ ❌ Error: Increment '{increment_id}' not found
281
+
282
+ Available increments:
283
+ {list .specweave/increments/*/}
284
+
285
+ Usage: /specweave:sync-specs [increment_id] [--dry-run]
286
+ ```
287
+
288
+ ### Error: No Spec File
289
+ ```
290
+ ❌ Error: No spec.md in increment '{increment_id}'
291
+
292
+ The increment must have a spec.md file to sync specs.
293
+ Check: .specweave/increments/{increment_id}/spec.md
294
+
295
+ Cannot proceed with specs sync.
296
+ ```
297
+
298
+ ### Error: Distribution Failed
299
+ ```
300
+ ❌ Error: Failed to distribute specs
301
+
302
+ Reason: {error message}
303
+
304
+ Common causes:
305
+ • Invalid spec.md format
306
+ • Missing user stories
307
+ • Corrupted YAML frontmatter
308
+
309
+ Try: /specweave:validate {increment_id}
310
+ ```
311
+
312
+ ---
313
+
314
+ ## OPTIONS
315
+
316
+ ### --dry-run
317
+ Show what would be synced without making changes:
318
+
319
+ ```bash
320
+ /specweave:sync-specs 0031 --dry-run
321
+ ```
322
+
323
+ Output:
324
+ ```
325
+ 🔍 DRY RUN MODE - No files will be modified
326
+
327
+ Would create/update:
328
+ • Epic: _epics/EPIC-2025-Q1/EPIC.md
329
+ • Feature: _features/FS-25-11-14/FEATURE.md
330
+ • Project context: backend/FS-25-11-14/README.md
331
+ • User story: backend/FS-25-11-14/us-001-api-sync.md
332
+ • User story: backend/FS-25-11-14/us-002-status-mapping.md
333
+ • Tasks.md: Would add 5 user story links
334
+
335
+ Total: 6 files would be affected
336
+ ```
337
+
338
+ ### --force
339
+ Overwrite existing files without prompting:
340
+
341
+ ```bash
342
+ /specweave:sync-specs 0031 --force
343
+ ```
344
+
345
+ ---
346
+
347
+ ## EXAMPLES
348
+
349
+ ### Example 1: Sync Current Increment
350
+ ```
351
+ User: /specweave:sync-specs
352
+
353
+ Output:
354
+ 🎯 Target increment: 0031-external-tool-status-sync
355
+ 📁 Increment path: .specweave/increments/0031-external-tool-status-sync
356
+ 🔄 Mode: Specs-only sync (Universal Hierarchy)
357
+
358
+ Processing...
359
+ ✅ Distribution successful!
360
+ 📊 Total stories: 7
361
+ 📁 Total files created: 10
362
+ 🎯 Feature ID: FS-25-11-14-external-tool-status-sync
363
+ ```
364
+
365
+ ### Example 2: Sync Specific Increment
366
+ ```
367
+ User: /specweave:sync-specs 0025
368
+
369
+ Output:
370
+ 🎯 Target increment: 0025-per-project-resource-config
371
+ 📁 Increment path: .specweave/increments/0025-per-project-resource-config
372
+ 🔄 Mode: Specs-only sync (Universal Hierarchy)
373
+
374
+ Processing...
375
+ ✅ Distribution successful!
376
+ 📊 Total stories: 3
377
+ 📁 Total files created: 5
378
+ ```
379
+
380
+ ### Example 3: Dry Run
381
+ ```
382
+ User: /specweave:sync-specs 0031 --dry-run
383
+
384
+ Output:
385
+ 🔍 DRY RUN MODE - No files will be modified
386
+
387
+ Would sync increment: 0031-external-tool-status-sync
388
+ Would create feature: FS-25-11-14-external-tool-status-sync
389
+ Would affect 2 projects: backend, frontend
390
+ Would create 7 user stories
391
+ Would update tasks.md with bidirectional links
392
+
393
+ No changes made (dry run mode)
394
+ ```
395
+
396
+ ---
397
+
398
+ ## IMPORTANT NOTES
399
+
400
+ 1. **Specs-only**: This command ONLY updates `.specweave/docs/internal/specs/` folder
401
+ 2. **Universal Hierarchy**: Uses Epic → Feature → User Story → Task structure
402
+ 3. **Bidirectional Links**: Automatically creates if tasks.md exists
403
+ 4. **Project-aware**: Distributes stories to correct project folders
404
+ 5. **Non-destructive**: Creates backups before overwriting (unless --force)
405
+ 6. **External Links**: Preserves GitHub/Jira/ADO links from metadata.json
406
+
407
+ ---
408
+
409
+ ## WHEN TO USE THIS COMMAND
410
+
411
+ ✅ **Use `/specweave:sync-specs` when**:
412
+ - You only want to update user stories and features
413
+ - You've made changes to spec.md and want them in living docs
414
+ - You want to preserve existing architecture/operations docs
415
+ - You need quick spec sync without full documentation update
416
+
417
+ ❌ **Use `/specweave:sync-docs` instead when**:
418
+ - You want to update ALL documentation areas
419
+ - You have new architecture decisions (ADRs)
420
+ - You updated operations/deployment docs
421
+ - You need comprehensive documentation sync
422
+
423
+ ---
424
+
425
+ **You are now ready to execute this specs-only sync command. Follow the steps above precisely.**
@@ -3,6 +3,10 @@
3
3
  "UserPromptSubmit": [
4
4
  {
5
5
  "hooks": [
6
+ {
7
+ "type": "command",
8
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/pre-command-deduplication.sh"
9
+ },
6
10
  {
7
11
  "type": "command",
8
12
  "command": "${CLAUDE_PLUGIN_ROOT}/hooks/user-prompt-submit.sh"
@@ -109,7 +109,7 @@ if [[ ! "$PROVIDER" =~ ^(github|jira|ado)$ ]]; then
109
109
  fi
110
110
 
111
111
  # Check if sync CLI command exists
112
- SYNC_CLI="$PROJECT_ROOT/dist/cli/commands/sync-spec-content.js"
112
+ SYNC_CLI="$PROJECT_ROOT/dist/src/cli/commands/sync-spec-content.js"
113
113
  if [ ! -f "$SYNC_CLI" ]; then
114
114
  echo "ℹ️ Sync CLI not built, skipping spec content sync" >&2
115
115
  echo " Run: npm run build" >&2
@@ -141,7 +141,7 @@ else
141
141
  echo ""
142
142
  echo "⚠️ Spec content sync failed (exit code: $SYNC_EXIT_CODE)" >&2
143
143
  echo " This is non-blocking. You can sync manually later:" >&2
144
- echo " node dist/cli/commands/sync-spec-content.js --spec \"$SPEC_PATH\" --provider $PROVIDER" >&2
144
+ echo " node dist/src/cli/commands/sync-spec-content.js --spec \"$SPEC_PATH\" --provider $PROVIDER" >&2
145
145
  echo ""
146
146
  # Non-blocking: continue execution even if sync fails
147
147
  fi
@@ -229,6 +229,45 @@ if command -v node &> /dev/null; then
229
229
  fi
230
230
  fi
231
231
 
232
+ # ============================================================================
233
+ # UPDATE AC STATUS (NEW in v0.18.3 - Acceptance Criteria Checkbox Update)
234
+ # ============================================================================
235
+ # Updates acceptance criteria checkboxes in spec.md based on completed tasks
236
+ # - Extracts AC-IDs from completed tasks (AC-US1-01, AC-US1-02, etc.)
237
+ # - Checks off corresponding AC in spec.md
238
+ # - Ensures external tool sync reflects current AC completion status
239
+
240
+ if command -v node &> /dev/null; then
241
+ if [ -n "$CURRENT_INCREMENT" ]; then
242
+ echo "[$(date)] ✓ Updating AC status for $CURRENT_INCREMENT" >> "$DEBUG_LOG" 2>/dev/null || true
243
+
244
+ # Determine which AC update script to use (project local or global)
245
+ UPDATE_AC_SCRIPT=""
246
+ if [ -f "$PROJECT_ROOT/dist/plugins/specweave/lib/hooks/update-ac-status.js" ]; then
247
+ # Development: Use project's compiled files (has node_modules)
248
+ UPDATE_AC_SCRIPT="$PROJECT_ROOT/dist/plugins/specweave/lib/hooks/update-ac-status.js"
249
+ echo "[$(date)] Using local dist: $UPDATE_AC_SCRIPT" >> "$DEBUG_LOG" 2>/dev/null || true
250
+ elif [ -f "$PROJECT_ROOT/node_modules/specweave/dist/plugins/specweave/lib/hooks/update-ac-status.js" ]; then
251
+ # Installed as dependency: Use node_modules version
252
+ UPDATE_AC_SCRIPT="$PROJECT_ROOT/node_modules/specweave/dist/plugins/specweave/lib/hooks/update-ac-status.js"
253
+ echo "[$(date)] Using node_modules: $UPDATE_AC_SCRIPT" >> "$DEBUG_LOG" 2>/dev/null || true
254
+ elif [ -n "${CLAUDE_PLUGIN_ROOT}" ] && [ -f "${CLAUDE_PLUGIN_ROOT}/lib/hooks/update-ac-status.js" ]; then
255
+ # Fallback: Plugin marketplace (may fail if deps missing)
256
+ UPDATE_AC_SCRIPT="${CLAUDE_PLUGIN_ROOT}/lib/hooks/update-ac-status.js"
257
+ echo "[$(date)] Using plugin marketplace: $UPDATE_AC_SCRIPT" >> "$DEBUG_LOG" 2>/dev/null || true
258
+ fi
259
+
260
+ if [ -n "$UPDATE_AC_SCRIPT" ]; then
261
+ # Run AC status update (non-blocking, best-effort)
262
+ (cd "$PROJECT_ROOT" && node "$UPDATE_AC_SCRIPT" "$CURRENT_INCREMENT") 2>&1 | tee -a "$DEBUG_LOG" >/dev/null || {
263
+ echo "[$(date)] ⚠️ Failed to update AC status (non-blocking)" >> "$DEBUG_LOG" 2>/dev/null || true
264
+ }
265
+ else
266
+ echo "[$(date)] ⚠️ update-ac-status.js not found in any location" >> "$DEBUG_LOG" 2>/dev/null || true
267
+ fi
268
+ fi
269
+ fi
270
+
232
271
  # ============================================================================
233
272
  # TRANSLATE LIVING DOCS (NEW in v0.6.0 - i18n)
234
273
  # ============================================================================
@@ -0,0 +1,83 @@
1
+ #!/bin/bash
2
+
3
+ # SpecWeave Pre-Command Deduplication Hook
4
+ # Fires BEFORE any command executes (UserPromptSubmit hook)
5
+ # Purpose: Prevent duplicate command invocations within configurable time window
6
+
7
+ set -euo pipefail
8
+
9
+ # ==============================================================================
10
+ # PROJECT ROOT DETECTION
11
+ # ==============================================================================
12
+
13
+ # Find project root by searching upward for .specweave/ directory
14
+ find_project_root() {
15
+ local dir="$1"
16
+ while [ "$dir" != "/" ]; do
17
+ if [ -d "$dir/.specweave" ]; then
18
+ echo "$dir"
19
+ return 0
20
+ fi
21
+ dir="$(dirname "$dir")"
22
+ done
23
+ # Fallback: try current directory
24
+ if [ -d "$(pwd)/.specweave" ]; then
25
+ pwd
26
+ else
27
+ echo "$(pwd)"
28
+ fi
29
+ }
30
+
31
+ PROJECT_ROOT="$(find_project_root "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")"
32
+ cd "$PROJECT_ROOT" 2>/dev/null || true
33
+
34
+ # Read input JSON from stdin
35
+ INPUT=$(cat)
36
+
37
+ # ==============================================================================
38
+ # DEDUPLICATION CHECK: Block duplicate commands within 1 second
39
+ # ==============================================================================
40
+
41
+ # Check if deduplication module is available
42
+ if command -v node >/dev/null 2>&1 && [[ -f "dist/src/core/deduplication/command-deduplicator.js" ]]; then
43
+ # Use dedicated wrapper script for ES module compatibility
44
+ DEDUP_RESULT=$(echo "$INPUT" | node scripts/check-deduplication.js 2>/dev/null || echo "OK")
45
+
46
+ # Parse result
47
+ STATUS=$(echo "$DEDUP_RESULT" | head -1)
48
+
49
+ if [[ "$STATUS" == "DUPLICATE" ]]; then
50
+ # Get stats
51
+ STATS=$(echo "$DEDUP_RESULT" | tail -1)
52
+
53
+ # Extract command and stats for readable message
54
+ COMMAND=$(echo "$STATS" | grep -o '"lastCommand":"[^"]*"' | cut -d'"' -f4 || echo "unknown")
55
+ TOTAL_BLOCKED=$(echo "$STATS" | grep -o '"totalDuplicatesBlocked":[0-9]*' | cut -d':' -f2 || echo "1")
56
+ CACHE_SIZE=$(echo "$STATS" | grep -o '"currentCacheSize":[0-9]*' | cut -d':' -f2 || echo "1")
57
+
58
+ # Build error message WITHOUT embedding JSON (avoid escaping issues)
59
+ MESSAGE=$(cat <<'EOF'
60
+ {
61
+ "decision": "block",
62
+ "reason": "🚫 DUPLICATE COMMAND DETECTED\n\nCommand: `COMMAND_PLACEHOLDER`\nTime window: 1 second\n\nThis command was just executed! To prevent unintended duplicates, this invocation has been blocked.\n\n💡 If you meant to run this command again:\n 1. Wait 1 second\n 2. Run the command again\n\nDeduplication Stats:\n- Total duplicates blocked: BLOCKED_PLACEHOLDER\n- Commands in cache: CACHE_PLACEHOLDER"
63
+ }
64
+ EOF
65
+ )
66
+ # Replace placeholders (avoids JSON escaping issues)
67
+ # Use | as sed delimiter to avoid conflicts with / in command names
68
+ echo "$MESSAGE" | sed "s|COMMAND_PLACEHOLDER|$COMMAND|g" | sed "s|BLOCKED_PLACEHOLDER|$TOTAL_BLOCKED|g" | sed "s|CACHE_PLACEHOLDER|$CACHE_SIZE|g"
69
+ exit 0
70
+ fi
71
+ fi
72
+
73
+ # ==============================================================================
74
+ # PASS THROUGH: No duplicate detected, proceed with command
75
+ # ==============================================================================
76
+
77
+ cat <<EOF
78
+ {
79
+ "decision": "approve"
80
+ }
81
+ EOF
82
+
83
+ exit 0
@@ -26,7 +26,7 @@ if echo "$PROMPT" | grep -q "/specweave:increment"; then
26
26
 
27
27
  if [[ -d "$SPECWEAVE_DIR/increments" ]]; then
28
28
  # Run discipline check (exit code: 0=pass, 1=violations, 2=error)
29
- if command -v node >/dev/null 2>&1 && [[ -f "dist/cli/index.js" ]]; then
29
+ if command -v node >/dev/null 2>&1 && [[ -f "dist/src/core/increment/metadata-manager.js" ]]; then
30
30
  # Check active increments using MetadataManager
31
31
  ACTIVE_COUNT=$(node -e "
32
32
  try {
@@ -77,6 +77,8 @@ async function hierarchicalDistribution(incrementId) {
77
77
  console.log(` - ${warning}`);
78
78
  }
79
79
  }
80
+ console.log(" \u{1F4CA} Updating acceptance criteria status from completed tasks...");
81
+ await distributor.updateAcceptanceCriteriaStatus(incrementId);
80
82
  const changedFiles = [result.epicPath, ...result.userStoryPaths];
81
83
  return {
82
84
  success: true,
@@ -176,6 +176,10 @@ async function hierarchicalDistribution(
176
176
  }
177
177
  }
178
178
 
179
+ // Update acceptance criteria status based on completed tasks
180
+ console.log(' 📊 Updating acceptance criteria status from completed tasks...');
181
+ await distributor.updateAcceptanceCriteriaStatus(incrementId);
182
+
179
183
  // Collect changed file paths
180
184
  const changedFiles = [result.epicPath, ...result.userStoryPaths];
181
185