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,267 +0,0 @@
1
- ---
2
- name: specweave-jira-sync-epic
3
- description: Sync SpecWeave Epic folder to JIRA (Epic + Stories with Epic Link). Implements Universal Hierarchy architecture - Epic → JIRA Epic, Increments → Stories.
4
- ---
5
-
6
- # Sync Epic to JIRA (Universal Hierarchy)
7
-
8
- **Architecture**: Hierarchical sync using Epic folder structure
9
-
10
- - **Epic (FS-001)** → **JIRA Epic**
11
- - **Increment (0001-core-framework)** → **JIRA Story** (Epic Link field)
12
-
13
- ## Usage
14
-
15
- ```bash
16
- /specweave-jira:sync-epic <epic-id> [--project <project-key>]
17
- ```
18
-
19
- ## What It Does
20
-
21
- **Hierarchical Sync Process**:
22
-
23
- 1. **Load Epic folder** from `.specweave/docs/internal/specs/FS-XXX-name/`
24
- 2. **Parse Epic README.md** to get Epic metadata (title, increments, status)
25
- 3. **Create or update JIRA Epic**:
26
- - Summary: `[FS-001] Epic Title`
27
- - Description: Epic overview + progress stats
28
- - Priority: Mapped from P0→Highest, P1→High, etc.
29
- - Labels: `epic-sync`, `fs-001`
30
- 4. **Sync each increment as JIRA Story**:
31
- - Summary: `[INC-0001-core-framework] Title`
32
- - Description: Increment overview
33
- - Epic Link: Links to Epic via `epicKey` field
34
- - Labels: `increment`, `epic-sync`
35
- 5. **Update frontmatter** in Epic README.md and increment files
36
-
37
- ## Examples
38
-
39
- ### Sync Epic FS-001 (Core Framework Architecture)
40
-
41
- ```bash
42
- /specweave-jira:sync-epic FS-001 --project SPEC
43
- ```
44
-
45
- **Output**:
46
- ```
47
- 🔄 Syncing Epic FS-001 to JIRA...
48
- 📦 Epic: Core Framework Architecture
49
- 📊 Increments: 4
50
- 🚀 Creating JIRA Epic...
51
- ✅ Created Epic SPEC-100
52
-
53
- 📝 Syncing 4 increments...
54
- ✅ Created Story SPEC-101 for 0001-core-framework
55
- ✅ Created Story SPEC-102 for 0002-core-enhancements
56
- ✅ Created Story SPEC-103 for 0004-plugin-architecture
57
- ✅ Created Story SPEC-104 for 0005-cross-platform-cli
58
-
59
- ✅ Epic sync complete!
60
- Epic: https://mycompany.atlassian.net/browse/SPEC-100
61
- Stories created: 4
62
- Stories updated: 0
63
- ```
64
-
65
- ### Sync Epic with short ID
66
-
67
- ```bash
68
- /specweave-jira:sync-epic 031 --project SPEC
69
- ```
70
-
71
- ### Re-sync Epic (updates existing)
72
-
73
- ```bash
74
- /specweave-jira:sync-epic FS-001 --project SPEC
75
- ```
76
-
77
- **Output**:
78
- ```
79
- 🔄 Syncing Epic FS-001 to JIRA...
80
- ♻️ Updating existing Epic SPEC-100...
81
- ✅ Updated Epic SPEC-100
82
-
83
- 📝 Syncing 4 increments...
84
- ♻️ Updated Story SPEC-101 for 0001-core-framework
85
- ♻️ Updated Story SPEC-102 for 0002-core-enhancements
86
- ♻️ Updated Story SPEC-103 for 0004-plugin-architecture
87
- ♻️ Updated Story SPEC-104 for 0005-cross-platform-cli
88
-
89
- ✅ Epic sync complete!
90
- Epic: https://mycompany.atlassian.net/browse/SPEC-100
91
- Stories created: 0
92
- Stories updated: 4
93
- ```
94
-
95
- ## Arguments
96
-
97
- - `<epic-id>` - Epic ID (e.g., `FS-001` or just `001`)
98
- - `--project <key>` - JIRA project key (e.g., `SPEC`, `PROJ`, `DEV`)
99
-
100
- ## What Gets Created
101
-
102
- ### JIRA Epic (Epic-level)
103
-
104
- ```
105
- Key: SPEC-100
106
- Summary: [FS-001] Core Framework Architecture
107
-
108
- Description:
109
- Epic: Core Framework Architecture
110
-
111
- Progress: 4/4 increments (100%)
112
-
113
- Priority: P0
114
- Status: complete
115
-
116
- Labels: epic-sync, fs-001
117
- Priority: Highest (P0 → Highest)
118
- ```
119
-
120
- ### JIRA Story (Increment-level)
121
-
122
- ```
123
- Key: SPEC-101
124
- Summary: [INC-0001-core-framework] Core Framework
125
-
126
- Description:
127
- Foundation framework with CLI, plugin system, and agent architecture...
128
-
129
- ---
130
-
131
- **Increment**: 0001-core-framework
132
- **Epic**: SPEC-100
133
-
134
- 🤖 Auto-created by SpecWeave Epic Sync
135
-
136
- Epic Link: SPEC-100 (linked via Epic Link field)
137
- Labels: increment, epic-sync
138
- ```
139
-
140
- ## Frontmatter Updates
141
-
142
- ### Epic README.md (after sync)
143
-
144
- ```yaml
145
- ---
146
- id: FS-001
147
- title: "Core Framework Architecture"
148
- external_tools:
149
- jira:
150
- type: epic
151
- key: SPEC-100 # ← Added
152
- url: https://mycompany.atlassian.net/browse/SPEC-100 # ← Added
153
- increments:
154
- - id: 0001-core-framework
155
- external:
156
- jira: SPEC-101 # ← Added
157
- - id: 0002-core-enhancements
158
- external:
159
- jira: SPEC-102 # ← Added
160
- ---
161
- ```
162
-
163
- ### Increment file (0001-core-framework.md)
164
-
165
- ```yaml
166
- ---
167
- id: 0001-core-framework
168
- epic: FS-001
169
- external:
170
- jira:
171
- story: SPEC-101 # ← Added
172
- url: https://mycompany.atlassian.net/browse/SPEC-101 # ← Added
173
- ---
174
- ```
175
-
176
- ## Benefits
177
-
178
- ✅ **Hierarchical tracking**: JIRA Epics group related Stories
179
- ✅ **Epic-level progress**: See completion in Epic details
180
- ✅ **Automatic linking**: Epic Link field links Stories to Epic
181
- ✅ **Idempotent**: Safe to re-run (updates existing Epic/Stories)
182
- ✅ **Brownfield-ready**: Links existing JIRA Epics/Stories
183
-
184
- ## Requirements
185
-
186
- 1. **JIRA credentials** in `.env`:
187
- ```
188
- JIRA_DOMAIN=mycompany.atlassian.net
189
- JIRA_EMAIL=user@mycompany.com
190
- JIRA_API_TOKEN=your-api-token
191
- ```
192
- 2. **Project exists** in JIRA
193
- 3. **Write access** to project (for creating Epics/Stories)
194
- 4. **Epic folder exists** at `.specweave/docs/internal/specs/FS-XXX-name/`
195
-
196
- ## Architecture: Why Epic Link?
197
-
198
- **JIRA's Hierarchy**:
199
- - JIRA Epics = Top-level grouping
200
- - JIRA Stories = Implementation work
201
- - Epic Link field = Links Stories to Epic
202
-
203
- **Comparison with GitHub/ADO**:
204
- - GitHub: Epic → Milestone, Increment → Issue (Milestone link)
205
- - JIRA: Epic → Epic, Increment → Story (Epic Link field)
206
- - ADO: Epic → Feature, Increment → User Story (Parent link)
207
-
208
- All three implement the same Universal Hierarchy, just with different fields/terminology.
209
-
210
- ## Priority Mapping
211
-
212
- | SpecWeave | JIRA |
213
- |-----------|------|
214
- | P0 | Highest |
215
- | P1 | High |
216
- | P2 | Medium |
217
- | P3 | Low |
218
-
219
- ## Troubleshooting
220
-
221
- **"Epic FS-001 not found"**:
222
- - Check Epic folder exists: `ls .specweave/docs/internal/specs/`
223
- - Verify Epic ID format: `FS-001-epic-name/`
224
-
225
- **"Epic README.md missing YAML frontmatter"**:
226
- - Ensure Epic was migrated with `migrate-to-epic-folders.ts`
227
- - Frontmatter must start with `---` on line 1
228
-
229
- **"Failed to create JIRA Epic"**:
230
- - Check credentials: `echo $JIRA_API_TOKEN`
231
- - Verify project exists in JIRA
232
- - Check write permissions
233
-
234
- **"Epic Link field not found"**:
235
- - Some JIRA instances use custom field for Epic Link
236
- - Check with JIRA admin for custom field ID
237
- - May need configuration update
238
-
239
- ## Related Commands
240
-
241
- - `/specweave-github:sync-epic` - Sync to GitHub Milestone + Issues
242
- - `/specweave-ado:sync-epic` - Sync to ADO Feature + User Stories
243
- - `/specweave-jira:sync-spec` - OLD (flat spec → epic) - DEPRECATED
244
-
245
- ## Implementation
246
-
247
- **File**: `plugins/specweave-jira/lib/jira-epic-sync.ts`
248
-
249
- **Core Class**: `JiraEpicSync`
250
-
251
- **Methods**:
252
- - `syncEpicToJira(epicId)` - Main sync logic
253
- - `createEpic(epic)` - Create JIRA Epic
254
- - `updateEpic(key, epic)` - Update existing Epic
255
- - `createStory(increment, epicKey)` - Create JIRA Story
256
- - `updateStory(key, increment, epicKey)` - Update existing Story
257
- - `updateEpicReadme(path, jira)` - Update frontmatter
258
- - `updateIncrementExternalLink(...)` - Update increment frontmatter
259
-
260
- ## Next Steps
261
-
262
- After syncing Epic to JIRA:
263
-
264
- 1. **View Epic**: Open in JIRA browser
265
- 2. **List Stories**: Filter by Epic Link field
266
- 3. **Track completion**: JIRA shows Epic progress automatically
267
- 4. **Link to Sprint**: Drag Stories into Sprint planning
@@ -1,240 +0,0 @@
1
- ---
2
- name: specweave-jira-sync-spec
3
- description: Sync SpecWeave spec to Jira Epic (bidirectional). Use when syncing .specweave/docs/internal/specs/spec-*.md files with Jira Epics for permanent feature tracking.
4
- ---
5
-
6
- # Sync Spec to Jira Epic
7
-
8
- **CORRECT ARCHITECTURE**: This command syncs `.specweave/docs/internal/specs/spec-*.md` files (PERMANENT living docs) to Jira Epics, NOT increments to issues.
9
-
10
- ## Usage
11
-
12
- ```bash
13
- /specweave-jira:sync-spec <spec-id> [--direction <to-jira|from-jira|bidirectional>]
14
- ```
15
-
16
- ## What It Does
17
-
18
- **Architecture**:
19
- - **Spec → Jira Epic** (not increment → issue!)
20
- - **User Story → Jira Story** (subtask of epic)
21
- - **Acceptance Criteria → Checklist** (in story description)
22
-
23
- **Sync Process**:
24
-
25
- 1. **Load spec** from `.specweave/docs/internal/specs/spec-{id}.md`
26
- 2. **Load Jira configuration** from `.env` (domain, email, API token, project key)
27
- 3. **Create or update Jira Epic**:
28
- - Summary: `[SPEC-001] Feature Title`
29
- - Description: Spec overview + progress
30
- - Status: Matches spec status
31
- 4. **Sync user stories as Jira Stories**:
32
- - Create stories for new user stories
33
- - Update existing stories
34
- - Transition stories based on user story status
35
- 5. **Link spec to epic** (update frontmatter)
36
-
37
- ## Examples
38
-
39
- ### Sync spec to Jira (create or update)
40
-
41
- ```bash
42
- /specweave-jira:sync-spec spec-001
43
- ```
44
-
45
- **Output**:
46
- ```
47
- 🔄 Syncing spec spec-001 to Jira Epic...
48
- Creating new Jira Epic...
49
- ✅ Created Jira Epic SPEC-1: https://company.atlassian.net/browse/SPEC-1
50
- Syncing 35 user stories...
51
- ✅ Created US-001 → Story SPEC-2
52
- ✅ Created US-002 → Story SPEC-3
53
- ...
54
- ✅ Sync complete!
55
- Created: 35 user stories
56
- Jira Epic: https://company.atlassian.net/browse/SPEC-1
57
- ```
58
-
59
- ### Sync FROM Jira to spec (bidirectional)
60
-
61
- ```bash
62
- /specweave-jira:sync-spec spec-001 --direction from-jira
63
- ```
64
-
65
- **Output**:
66
- ```
67
- 🔄 Syncing FROM Jira to spec spec-001...
68
- Fetching Jira Epic SPEC-1...
69
- ⚠️ Detected 3 conflict(s)
70
- 🔄 Resolving: US-002 marked Done in Jira (Jira wins)
71
- 🔄 Resolving: US-005 marked In Progress in Jira (Jira wins)
72
- ✅ Sync FROM Jira complete!
73
- Updated: 3 user stories
74
- ```
75
-
76
- ## Arguments
77
-
78
- - `<spec-id>` - Spec ID (e.g., `spec-001` or just `001`)
79
- - `--direction <mode>` - Sync direction (default: `to-jira`)
80
- - `to-jira` - Push local spec to Jira
81
- - `from-jira` - Pull Jira state to spec
82
- - `bidirectional` - Sync both ways (conflict resolution)
83
-
84
- ## Configuration
85
-
86
- **Required `.env` variables**:
87
-
88
- ```bash
89
- # Jira Configuration
90
- JIRA_DOMAIN=company.atlassian.net
91
- JIRA_EMAIL=your-email@company.com
92
- JIRA_API_TOKEN=your_api_token_here
93
- JIRA_PROJECT_KEY=SPEC
94
- ```
95
-
96
- **How to get API token**:
97
- 1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
98
- 2. Click "Create API token"
99
- 3. Copy token to `.env`
100
-
101
- ## Conflict Resolution
102
-
103
- When syncing FROM Jira, conflicts are resolved as follows:
104
-
105
- **Jira wins** (default):
106
- - User story status changes → update spec
107
- - Acceptance criteria status → update spec
108
- - Story completion → mark user story done
109
-
110
- **Local wins** (future):
111
- - Spec changes take precedence
112
- - Push to Jira
113
-
114
- ## Requirements
115
-
116
- 1. **Jira account** with API access
117
- 2. **Jira API token** (from https://id.atlassian.com/manage-profile/security/api-tokens)
118
- 3. **Project permissions** (create epics, create stories)
119
- 4. **Spec file exists** at `.specweave/docs/internal/specs/spec-{id}.md`
120
-
121
- ## What Gets Synced
122
-
123
- ### Spec → Jira Epic
124
-
125
- - ✅ Summary: `[SPEC-001] Feature Area Title`
126
- - ✅ Description: Overview + progress stats (Jira wiki markup)
127
- - ✅ Labels: `spec:spec-001`, `priority:P1`
128
- - ✅ Status: To Do/In Progress/Done based on spec
129
-
130
- ### User Story → Jira Story
131
-
132
- - ✅ Summary: `[US-001] As a user, I want...`
133
- - ✅ Description: User story + acceptance criteria checklist
134
- - ✅ Labels: `user-story`, `spec:spec-001`, `priority:P1`
135
- - ✅ Epic Link: Links story to epic
136
- - ✅ Status: To Do (todo) / In Progress (in-progress) / Done (done)
137
-
138
- ### Acceptance Criteria → Checklist
139
-
140
- ```
141
- h2. Acceptance Criteria
142
-
143
- * (/) User can log in with email/password
144
- * (x) Invalid credentials show error message
145
- * (x) Account locks after 5 failed attempts
146
- ```
147
-
148
- *Note*: Jira uses `(/)` for checked, `(x)` for unchecked.
149
-
150
- ## Architecture
151
-
152
- **Why This Architecture?**
153
-
154
- ✅ **Permanent tracking**: Specs never deleted, Jira links remain valid
155
- ✅ **Feature-level granularity**: One Jira Epic per feature (not per increment)
156
- ✅ **PM-friendly**: Stakeholders see progress in Jira board
157
- ✅ **Brownfield-ready**: Existing Jira epics map to specs
158
-
159
- **What's WRONG?**
160
-
161
- ❌ Increment → Jira Issue (increments are temporary!)
162
- ❌ Tasks → Jira Issues (too granular, implementation details)
163
- ❌ Multiple epics per feature (split across increments)
164
-
165
- ## Metadata
166
-
167
- After sync, spec frontmatter is updated:
168
-
169
- ```yaml
170
- ---
171
- id: spec-001
172
- title: Core Framework Architecture
173
- status: in-progress
174
- priority: P0
175
- externalLinks:
176
- jira:
177
- epicKey: SPEC-1
178
- epicUrl: https://company.atlassian.net/browse/SPEC-1
179
- syncedAt: "2025-11-10T12:00:00Z"
180
- projectKey: SPEC
181
- domain: company.atlassian.net
182
- ---
183
- ```
184
-
185
- ## Troubleshooting
186
-
187
- **"Jira API authentication failed"**:
188
- - Check `.env` has correct `JIRA_DOMAIN`, `JIRA_EMAIL`, `JIRA_API_TOKEN`
189
- - Verify API token is valid (not expired)
190
- - Test authentication: `curl -u email:token https://company.atlassian.net/rest/api/3/myself`
191
-
192
- **"Spec not found"**:
193
- - Check spec exists: `ls .specweave/docs/internal/specs/`
194
- - Use correct ID: `spec-001` or `001`
195
-
196
- **"Cannot create epic"**:
197
- - Ensure you have permissions to create epics in the project
198
- - Check project key is correct in `.env`
199
-
200
- **"Epic Link field not found"**:
201
- - Epic Link field ID varies by Jira configuration
202
- - Default: `customfield_10014`
203
- - Find your field: Go to Jira → Settings → Issues → Custom fields → Find "Epic Link"
204
- - Update code if needed
205
-
206
- **"No user stories to sync"**:
207
- - Add user stories to spec.md:
208
- ```markdown
209
- **US-001**: As a user, I want...
210
- - [ ] **AC-001-01**: Acceptance criteria 1
211
- ```
212
-
213
- ## Related
214
-
215
- - `/specweave-github:sync-spec` - Sync to GitHub Project
216
- - `/specweave-ado:sync-spec` - Sync to Azure DevOps Feature
217
- - `/specweave:sync-docs` - Sync living docs from increments to specs
218
-
219
- ## Implementation
220
-
221
- **File**: `plugins/specweave-jira/lib/jira-spec-sync.ts`
222
-
223
- **Core Class**: `JiraSpecSync`
224
-
225
- **Methods**:
226
- - `syncSpecToJira(specId)` - Push to Jira
227
- - `syncFromJira(specId)` - Pull from Jira
228
- - `detectConflicts(spec, epic)` - Compare states
229
- - `resolveConflicts(spec, conflicts)` - Apply resolution strategy
230
-
231
- ## Jira API Reference
232
-
233
- **Endpoints used**:
234
- - `POST /rest/api/3/issue` - Create epic/story
235
- - `PUT /rest/api/3/issue/{key}` - Update epic/story
236
- - `GET /rest/api/3/issue/{key}` - Fetch epic/story
237
- - `GET /rest/api/3/search?jql=...` - Search for stories
238
- - `POST /rest/api/3/issue/{key}/transitions` - Transition story status
239
-
240
- **Authentication**: Basic auth with email + API token