specweave 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/CLAUDE.md +229 -1817
  2. package/README.md +68 -0
  3. package/bin/specweave.js +62 -6
  4. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  5. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
  6. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  7. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
  8. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
  9. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
  10. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
  11. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  12. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
  13. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  14. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
  15. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
  16. package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
  17. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
  18. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
  19. package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  20. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +7 -0
  21. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -1
  22. package/dist/plugins/specweave-github/lib/epic-content-builder.js +42 -0
  23. package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -1
  24. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
  25. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  26. package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
  27. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  28. package/dist/plugins/specweave-github/lib/github-epic-sync.js +1 -1
  29. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
  30. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
  31. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
  32. package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
  33. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
  34. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  35. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
  36. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  37. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
  38. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
  39. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
  40. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
  41. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
  42. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
  43. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
  44. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
  45. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
  46. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
  47. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
  48. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
  49. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +8 -6
  50. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -1
  51. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +78 -117
  52. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -1
  53. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  54. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  55. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  56. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  57. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  58. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  59. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  60. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  61. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  62. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  63. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  64. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  65. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  66. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  67. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  68. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  69. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  70. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  71. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  72. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  73. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  74. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  75. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  76. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  77. package/dist/src/cli/commands/import-docs.js +4 -4
  78. package/dist/src/cli/commands/import-docs.js.map +1 -1
  79. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  80. package/dist/src/cli/commands/init-multiproject.js +17 -18
  81. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  82. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  83. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  84. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  85. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  86. package/dist/src/cli/commands/switch-project.js +9 -26
  87. package/dist/src/cli/commands/switch-project.js.map +1 -1
  88. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  89. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  90. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  91. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  92. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  93. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  94. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  95. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  96. package/dist/src/core/increment/active-increment-manager.js +113 -46
  97. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  98. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  99. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  100. package/dist/src/core/increment/conflict-resolver.js +219 -0
  101. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  102. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  103. package/dist/src/core/increment/discipline-checker.js +7 -1
  104. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  105. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  106. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  107. package/dist/src/core/increment/duplicate-detector.js +276 -0
  108. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  109. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  110. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  111. package/dist/src/core/increment/increment-archiver.js +368 -0
  112. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  113. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  114. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  115. package/dist/src/core/increment/increment-reopener.js +390 -0
  116. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  117. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  118. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  119. package/dist/src/core/increment/metadata-manager.js +143 -5
  120. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  121. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  122. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  123. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  124. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  125. package/dist/src/core/increment/types.d.ts +1 -0
  126. package/dist/src/core/increment/types.d.ts.map +1 -1
  127. package/dist/src/core/increment-utils.d.ts +112 -0
  128. package/dist/src/core/increment-utils.d.ts.map +1 -0
  129. package/dist/src/core/increment-utils.js +210 -0
  130. package/dist/src/core/increment-utils.js.map +1 -0
  131. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  132. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  133. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  134. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  135. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  136. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  137. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  138. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  139. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  140. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  141. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  142. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  143. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  144. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  145. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  146. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  147. package/dist/src/core/living-docs/index.d.ts +6 -0
  148. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  149. package/dist/src/core/living-docs/index.js +6 -0
  150. package/dist/src/core/living-docs/index.js.map +1 -1
  151. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  152. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  153. package/dist/src/core/living-docs/project-detector.js +35 -1
  154. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  155. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  156. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  157. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  158. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  159. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  160. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  161. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  162. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  163. package/dist/src/core/living-docs/types.d.ts +143 -0
  164. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  165. package/dist/src/core/project-manager.d.ts +2 -17
  166. package/dist/src/core/project-manager.d.ts.map +1 -1
  167. package/dist/src/core/project-manager.js +68 -48
  168. package/dist/src/core/project-manager.js.map +1 -1
  169. package/dist/src/core/spec-content-sync.d.ts +1 -1
  170. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  171. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  172. package/dist/src/core/sync/enhanced-content-builder.js +2 -1
  173. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  174. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  175. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  176. package/dist/src/core/sync/performance-optimizer.js +220 -0
  177. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  178. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  179. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  180. package/dist/src/core/sync/retry-handler.js +196 -0
  181. package/dist/src/core/sync/retry-handler.js.map +1 -0
  182. package/dist/src/core/types/config.d.ts +94 -0
  183. package/dist/src/core/types/config.d.ts.map +1 -1
  184. package/dist/src/core/types/config.js +16 -0
  185. package/dist/src/core/types/config.js.map +1 -1
  186. package/dist/src/core/types/increment-metadata.d.ts +6 -0
  187. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  188. package/dist/src/core/types/increment-metadata.js +10 -1
  189. package/dist/src/core/types/increment-metadata.js.map +1 -1
  190. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  191. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  192. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  193. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  194. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  195. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  196. package/package.json +1 -1
  197. package/plugins/specweave/COMMANDS.md +13 -4
  198. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  199. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  200. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  201. package/plugins/specweave/commands/specweave-archive.md +363 -0
  202. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  203. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  204. package/plugins/specweave/commands/specweave-increment.md +4 -3
  205. package/plugins/specweave/commands/specweave-progress.md +176 -27
  206. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  207. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  208. package/plugins/specweave/commands/specweave-restore.md +309 -0
  209. package/plugins/specweave/commands/specweave-resume.md +51 -23
  210. package/plugins/specweave/commands/specweave-status.md +41 -7
  211. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  212. package/plugins/specweave/hooks/hooks.json +4 -0
  213. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  214. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  215. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  216. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  217. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  218. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  219. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  220. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  221. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  222. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  223. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  224. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  225. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  226. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  227. package/plugins/specweave-confluent/README.md +375 -0
  228. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  229. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  230. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  231. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  232. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  233. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  234. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  235. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  236. package/plugins/specweave-github/hooks/post-task-completion.sh +10 -9
  237. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  238. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  239. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  240. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  241. package/plugins/specweave-github/lib/epic-content-builder.js +38 -0
  242. package/plugins/specweave-github/lib/epic-content-builder.ts +59 -0
  243. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  244. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  245. package/plugins/specweave-github/lib/github-epic-sync.ts +1 -1
  246. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  247. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  248. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  249. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  250. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  251. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  252. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  253. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  254. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  255. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  256. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  257. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
  258. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  259. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  260. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  261. package/plugins/specweave-kafka/README.md +242 -0
  262. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  263. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  264. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  265. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  266. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  267. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  268. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  269. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  270. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  271. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  272. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  273. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  274. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  275. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  276. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  277. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  278. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  279. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  280. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  281. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  282. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  283. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  284. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  285. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  286. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  287. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  288. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  289. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  290. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  291. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  292. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  293. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  294. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  295. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  296. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  297. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  298. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  299. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  300. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  301. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  302. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  303. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  304. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  305. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  306. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  307. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  308. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  309. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  310. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  311. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  312. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  313. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  314. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  315. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  316. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  317. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  318. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  319. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  320. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  321. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  322. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  323. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  324. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  325. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  326. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  327. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  328. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  329. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  330. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  331. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  332. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  333. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  334. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  335. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  336. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  337. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  338. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  339. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  340. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  341. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  342. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  343. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  344. package/plugins/specweave-kafka/package.json +41 -0
  345. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  346. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  347. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  348. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  349. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  350. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  351. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  352. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  353. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  354. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  355. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  356. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  357. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  358. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  359. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  360. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  361. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  362. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  363. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  364. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  365. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  366. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  367. package/plugins/specweave-kafka/tsconfig.json +21 -0
  368. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  369. package/plugins/specweave-kafka-streams/README.md +310 -0
  370. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  371. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  372. package/plugins/specweave-n8n/README.md +354 -0
  373. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  374. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  375. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  376. package/src/templates/AGENTS.md.template +601 -7
  377. package/src/templates/CLAUDE.md.template +188 -88
  378. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  379. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  380. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  381. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  382. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  383. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  384. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,148 @@
1
+ # Azure Event Hubs Terraform Module - Variables
2
+
3
+ variable "environment" {
4
+ description = "Environment name (dev, staging, prod)"
5
+ type = string
6
+ }
7
+
8
+ variable "namespace_name" {
9
+ description = "Event Hubs namespace name"
10
+ type = string
11
+ }
12
+
13
+ variable "location" {
14
+ description = "Azure region"
15
+ type = string
16
+ }
17
+
18
+ variable "resource_group_name" {
19
+ description = "Resource group name"
20
+ type = string
21
+ }
22
+
23
+ variable "sku" {
24
+ description = "Event Hubs SKU (Basic, Standard, Premium)"
25
+ type = string
26
+ default = "Standard"
27
+
28
+ validation {
29
+ condition = contains(["Basic", "Standard", "Premium"], var.sku)
30
+ error_message = "SKU must be Basic, Standard, or Premium."
31
+ }
32
+ }
33
+
34
+ variable "capacity" {
35
+ description = "Throughput units (1-40 for Standard, 1-10 for Premium)"
36
+ type = number
37
+ default = 2
38
+ }
39
+
40
+ variable "auto_inflate_enabled" {
41
+ description = "Enable auto-inflate (Standard/Premium only)"
42
+ type = bool
43
+ default = false
44
+ }
45
+
46
+ variable "maximum_throughput_units" {
47
+ description = "Maximum throughput units for auto-inflate"
48
+ type = number
49
+ default = 20
50
+ }
51
+
52
+ variable "zone_redundant" {
53
+ description = "Enable zone redundancy (Premium only)"
54
+ type = bool
55
+ default = true
56
+ }
57
+
58
+ variable "public_network_access_enabled" {
59
+ description = "Enable public network access"
60
+ type = bool
61
+ default = true
62
+ }
63
+
64
+ variable "allowed_ip_addresses" {
65
+ description = "Allowed IP addresses (CIDR format)"
66
+ type = list(string)
67
+ default = []
68
+ }
69
+
70
+ variable "allowed_subnet_ids" {
71
+ description = "Allowed subnet IDs"
72
+ type = list(string)
73
+ default = []
74
+ }
75
+
76
+ variable "event_hubs" {
77
+ description = "List of Event Hubs (topics) to create"
78
+ type = list(object({
79
+ name = string
80
+ partition_count = number
81
+ message_retention_days = number
82
+ consumer_groups = optional(list(string), [])
83
+ capture_enabled = optional(bool, false)
84
+ capture_container_name = optional(string, null)
85
+ capture_storage_account_id = optional(string, null)
86
+ }))
87
+ default = []
88
+ }
89
+
90
+ variable "create_listen_authorization_rule" {
91
+ description = "Create listen-only authorization rule"
92
+ type = bool
93
+ default = true
94
+ }
95
+
96
+ variable "create_send_authorization_rule" {
97
+ description = "Create send-only authorization rule"
98
+ type = bool
99
+ default = true
100
+ }
101
+
102
+ variable "create_manage_authorization_rule" {
103
+ description = "Create manage authorization rule"
104
+ type = bool
105
+ default = false
106
+ }
107
+
108
+ variable "enable_diagnostic_logs" {
109
+ description = "Enable diagnostic logs"
110
+ type = bool
111
+ default = true
112
+ }
113
+
114
+ variable "log_analytics_workspace_id" {
115
+ description = "Log Analytics workspace ID"
116
+ type = string
117
+ default = null
118
+ }
119
+
120
+ variable "enable_private_endpoint" {
121
+ description = "Enable private endpoint (Premium only)"
122
+ type = bool
123
+ default = false
124
+ }
125
+
126
+ variable "private_endpoint_subnet_id" {
127
+ description = "Subnet ID for private endpoint"
128
+ type = string
129
+ default = null
130
+ }
131
+
132
+ variable "enable_alerts" {
133
+ description = "Enable metric alerts"
134
+ type = bool
135
+ default = true
136
+ }
137
+
138
+ variable "action_group_id" {
139
+ description = "Action group ID for alerts"
140
+ type = string
141
+ default = null
142
+ }
143
+
144
+ variable "tags" {
145
+ description = "Additional tags for all resources"
146
+ type = map(string)
147
+ default = {}
148
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "commonjs",
5
+ "lib": ["ES2020"],
6
+ "outDir": "./dist",
7
+ "rootDir": "./lib",
8
+ "declaration": true,
9
+ "declarationMap": true,
10
+ "sourceMap": true,
11
+ "strict": true,
12
+ "esModuleInterop": true,
13
+ "skipLibCheck": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "resolveJsonModule": true,
16
+ "moduleResolution": "node",
17
+ "types": ["node", "jest"]
18
+ },
19
+ "include": ["lib/**/*"],
20
+ "exclude": ["node_modules", "dist", "**/*.test.ts"]
21
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "specweave-kafka-streams",
3
+ "description": "Kafka Streams library integration for SpecWeave - Stream processing with Java/Kotlin, topology patterns, state stores, windowing, joins, and testing frameworks",
4
+ "version": "1.0.0",
5
+ "author": {
6
+ "name": "SpecWeave Team",
7
+ "url": "https://spec-weave.com"
8
+ },
9
+ "repository": "https://github.com/anton-abyzov/specweave",
10
+ "homepage": "https://spec-weave.com/docs/plugins/kafka-streams",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "kafka-streams",
14
+ "stream-processing",
15
+ "kstream",
16
+ "ktable",
17
+ "topology",
18
+ "state-store",
19
+ "windowing",
20
+ "java",
21
+ "kotlin"
22
+ ]
23
+ }
@@ -0,0 +1,310 @@
1
+ # specweave-kafka-streams
2
+
3
+ **Kafka Streams Library Integration Plugin for SpecWeave**
4
+
5
+ Stream processing with Java/Kotlin using Kafka Streams library - topology patterns, state management, windowing, joins, and testing frameworks.
6
+
7
+ ## Features
8
+
9
+ ### 🚀 Core Capabilities
10
+
11
+ - **Topology Design**: KStream, KTable, GlobalKTable abstractions
12
+ - **Stream Operations**: Filter, map, flatMap, branch, merge
13
+ - **Joins**: Stream-Stream, Stream-Table, Table-Table, Stream-GlobalKTable
14
+ - **Windowing**: Tumbling, hopping, session, sliding windows
15
+ - **State Stores**: Key-value, window, session stores
16
+ - **Exactly-Once Semantics**: EOS v2 for reliable processing
17
+ - **Testing**: Topology Test Driver for unit testing
18
+
19
+ ### 📚 Skills (1)
20
+
21
+ - `kafka-streams-topology` - Topology design, KStream/KTable, joins, windowing, exactly-once semantics
22
+
23
+ ### 🤖 Agents (0)
24
+
25
+ *Agents coming in future releases*
26
+
27
+ ### ⚡ Commands (0)
28
+
29
+ *Commands coming in future releases*
30
+
31
+ ## Installation
32
+
33
+ ### Prerequisites
34
+
35
+ - Java 11+ or Kotlin 1.5+
36
+ - Apache Kafka 2.8+ cluster
37
+ - Gradle or Maven build tool
38
+
39
+ ### Install Plugin
40
+
41
+ ```bash
42
+ # Via SpecWeave marketplace
43
+ specweave plugin install specweave-kafka-streams
44
+
45
+ # Or via Claude Code plugin system
46
+ /plugin install specweave-kafka-streams
47
+ ```
48
+
49
+ ## Quick Start
50
+
51
+ ### 1. Basic Kafka Streams Application
52
+
53
+ ```java
54
+ import org.apache.kafka.streams.*;
55
+ import org.apache.kafka.streams.kstream.*;
56
+
57
+ public class WordCountApp {
58
+ public static void main(String[] args) {
59
+ StreamsBuilder builder = new StreamsBuilder();
60
+
61
+ // Input stream
62
+ KStream<String, String> text = builder.stream("text-input");
63
+
64
+ // Word count topology
65
+ KTable<String, Long> wordCounts = text
66
+ .flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\s+")))
67
+ .groupBy((key, word) -> word)
68
+ .count(Materialized.as("word-counts"));
69
+
70
+ // Output stream
71
+ wordCounts.toStream().to("word-counts-output");
72
+
73
+ // Start streams
74
+ Properties props = new Properties();
75
+ props.put(StreamsConfig.APPLICATION_ID_CONFIG, "word-count-app");
76
+ props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
77
+
78
+ KafkaStreams streams = new KafkaStreams(builder.build(), props);
79
+ streams.start();
80
+ }
81
+ }
82
+ ```
83
+
84
+ ### 2. Stream-Table Join (Event Enrichment)
85
+
86
+ ```java
87
+ // Users table (current state)
88
+ KTable<Long, User> users = builder.table("users");
89
+
90
+ // Click events
91
+ KStream<Long, ClickEvent> clicks = builder.stream("clicks");
92
+
93
+ // Enrich clicks with user data
94
+ KStream<Long, EnrichedClick> enriched = clicks.leftJoin(
95
+ users,
96
+ (click, user) -> new EnrichedClick(
97
+ click.getPage(),
98
+ user != null ? user.getName() : "unknown",
99
+ user != null ? user.getEmail() : "unknown"
100
+ )
101
+ );
102
+
103
+ enriched.to("enriched-clicks");
104
+ ```
105
+
106
+ ### 3. Windowed Aggregation
107
+
108
+ ```java
109
+ // Count clicks per user, per 5-minute window
110
+ KTable<Windowed<Long>, Long> clickCounts = clicks
111
+ .groupByKey()
112
+ .windowedBy(TimeWindows.ofSizeWithNoGrace(Duration.ofMinutes(5)))
113
+ .count(Materialized.as("click-counts"));
114
+
115
+ // Convert to stream for output
116
+ clickCounts.toStream()
117
+ .map((windowedKey, count) -> {
118
+ Long userId = windowedKey.key();
119
+ Instant start = windowedKey.window().startTime();
120
+ return KeyValue.pair(userId, new WindowedCount(userId, start, count));
121
+ })
122
+ .to("click-counts-output");
123
+ ```
124
+
125
+ ## Architecture
126
+
127
+ ### Topology Patterns
128
+
129
+ **Filter and Transform**:
130
+ ```java
131
+ KStream<Long, Event> filtered = events
132
+ .filter((key, value) -> value.isValid())
133
+ .mapValues(value -> value.toUpperCase());
134
+ ```
135
+
136
+ **Branch by Condition**:
137
+ ```java
138
+ Map<String, KStream<Long, Order>> branches = orders
139
+ .split(Named.as("order-"))
140
+ .branch((k, v) -> v.getTotal() > 1000, Branched.as("high"))
141
+ .branch((k, v) -> v.getTotal() > 100, Branched.as("medium"))
142
+ .defaultBranch(Branched.as("low"));
143
+ ```
144
+
145
+ **Stateful Processing**:
146
+ ```java
147
+ KStream<Long, Event> deduplicated = events
148
+ .transformValues(
149
+ () -> new DeduplicationTransformer(),
150
+ "dedup-store"
151
+ );
152
+ ```
153
+
154
+ ### State Store Types
155
+
156
+ **Key-Value Store**:
157
+ ```java
158
+ StoreBuilder<KeyValueStore<Long, User>> storeBuilder =
159
+ Stores.keyValueStoreBuilder(
160
+ Stores.persistentKeyValueStore("users-store"),
161
+ Serdes.Long(),
162
+ userSerde
163
+ );
164
+ ```
165
+
166
+ **Window Store**:
167
+ ```java
168
+ StoreBuilder<WindowStore<Long, Long>> windowStoreBuilder =
169
+ Stores.windowStoreBuilder(
170
+ Stores.persistentWindowStore("window-store", Duration.ofMinutes(10), Duration.ofMinutes(1), false),
171
+ Serdes.Long(),
172
+ Serdes.Long()
173
+ );
174
+ ```
175
+
176
+ **Session Store**:
177
+ ```java
178
+ StoreBuilder<SessionStore<Long, Long>> sessionStoreBuilder =
179
+ Stores.sessionStoreBuilder(
180
+ Stores.persistentSessionStore("session-store", Duration.ofMinutes(30)),
181
+ Serdes.Long(),
182
+ Serdes.Long()
183
+ );
184
+ ```
185
+
186
+ ## Usage Examples
187
+
188
+ ### Exactly-Once Semantics
189
+
190
+ ```java
191
+ Properties props = new Properties();
192
+ props.put(StreamsConfig.APPLICATION_ID_CONFIG, "my-app");
193
+ props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
194
+
195
+ // Enable EOS v2 (recommended)
196
+ props.put(StreamsConfig.PROCESSING_GUARANTEE_CONFIG,
197
+ StreamsConfig.EXACTLY_ONCE_V2);
198
+
199
+ // Commit frequently for low latency
200
+ props.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 100);
201
+
202
+ KafkaStreams streams = new KafkaStreams(topology, props);
203
+ ```
204
+
205
+ ### Interactive Queries
206
+
207
+ ```java
208
+ // Materialized store for queries
209
+ KTable<Long, Long> counts = events
210
+ .groupByKey()
211
+ .count(Materialized.as("user-counts"));
212
+
213
+ // Query from REST API
214
+ ReadOnlyKeyValueStore<Long, Long> store =
215
+ streams.store(StoreQueryParameters.fromNameAndType(
216
+ "user-counts",
217
+ QueryableStoreTypes.keyValueStore()
218
+ ));
219
+
220
+ Long count = store.get(userId);
221
+ ```
222
+
223
+ ### Testing with Topology Test Driver
224
+
225
+ ```java
226
+ @Test
227
+ public void testWordCount() {
228
+ // Build topology
229
+ StreamsBuilder builder = new StreamsBuilder();
230
+ // ... topology code ...
231
+
232
+ // Create test driver
233
+ TopologyTestDriver testDriver = new TopologyTestDriver(
234
+ builder.build(),
235
+ props
236
+ );
237
+
238
+ // Input topic
239
+ TestInputTopic<String, String> inputTopic =
240
+ testDriver.createInputTopic(
241
+ "text-input",
242
+ Serdes.String().serializer(),
243
+ Serdes.String().serializer()
244
+ );
245
+
246
+ // Output topic
247
+ TestOutputTopic<String, Long> outputTopic =
248
+ testDriver.createOutputTopic(
249
+ "word-counts-output",
250
+ Serdes.String().deserializer(),
251
+ Serdes.Long().deserializer()
252
+ );
253
+
254
+ // Send test data
255
+ inputTopic.pipeInput("hello world hello");
256
+
257
+ // Assert output
258
+ Map<String, Long> output = outputTopic.readKeyValuesToMap();
259
+ assertEquals(2L, output.get("hello"));
260
+ assertEquals(1L, output.get("world"));
261
+
262
+ testDriver.close();
263
+ }
264
+ ```
265
+
266
+ ## Testing
267
+
268
+ ```bash
269
+ # Unit tests with Topology Test Driver
270
+ ./gradlew test
271
+
272
+ # Integration tests (requires Kafka cluster)
273
+ ./gradlew integrationTest
274
+
275
+ # Coverage report
276
+ ./gradlew jacocoTestReport
277
+ ```
278
+
279
+ ## Documentation
280
+
281
+ - **Getting Started**: `.specweave/docs/public/guides/kafka-streams-getting-started.md`
282
+ - **Topology Patterns**: `.specweave/docs/public/guides/kafka-streams-patterns.md`
283
+ - **State Stores**: `.specweave/docs/public/guides/kafka-streams-state.md`
284
+ - **Testing Guide**: `.specweave/docs/public/guides/kafka-streams-testing.md`
285
+
286
+ ## Contributing
287
+
288
+ See [CONTRIBUTING.md](../../CONTRIBUTING.md) for development setup and guidelines.
289
+
290
+ ## Related Plugins
291
+
292
+ - **specweave-kafka** - Core Kafka plugin (Apache Kafka, producers, consumers)
293
+ - **specweave-confluent** - Confluent Cloud features (Schema Registry, ksqlDB)
294
+ - **specweave-n8n** - n8n workflow automation with Kafka integration
295
+
296
+ ## License
297
+
298
+ MIT License - see [LICENSE](../../LICENSE)
299
+
300
+ ## Support
301
+
302
+ - **Documentation**: https://spec-weave.com/docs/plugins/kafka-streams
303
+ - **Issues**: https://github.com/anton-abyzov/specweave/issues
304
+ - **Discussions**: https://github.com/anton-abyzov/specweave/discussions
305
+
306
+ ---
307
+
308
+ **Version**: 1.0.0
309
+ **Last Updated**: 2025-11-15
310
+ **Status**: ✅ Production Ready