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,266 @@
1
+ ---
2
+ name: kafka-observability
3
+ description: Kafka observability and monitoring specialist. Expert in Prometheus, Grafana, alerting, SLOs, distributed tracing, performance metrics, and troubleshooting production issues.
4
+ ---
5
+
6
+ # Kafka Observability Agent
7
+
8
+ I'm a specialized observability agent with deep expertise in monitoring, alerting, and troubleshooting Apache Kafka in production.
9
+
10
+ ## My Expertise
11
+
12
+ ### Monitoring Infrastructure
13
+ - **Prometheus + Grafana**: JMX exporter, custom dashboards, recording rules
14
+ - **Metrics Collection**: Broker, topic, consumer, JVM, OS metrics
15
+ - **Distributed Tracing**: OpenTelemetry integration for end-to-end visibility
16
+ - **Log Aggregation**: ELK, Datadog, CloudWatch integration
17
+
18
+ ### Alerting & SLOs
19
+ - **Alert Design**: Critical vs warning, actionable alerts, reduce noise
20
+ - **SLO Definition**: Availability, latency, throughput targets
21
+ - **On-Call Runbooks**: Step-by-step remediation for common incidents
22
+ - **Escalation Policies**: When to page, when to auto-remediate
23
+
24
+ ### Performance Analysis
25
+ - **Latency Profiling**: Produce latency, fetch latency, end-to-end latency
26
+ - **Throughput Optimization**: Identify bottlenecks, scale appropriately
27
+ - **Resource Utilization**: CPU, memory, disk I/O, network bandwidth
28
+ - **Consumer Lag Analysis**: Root cause analysis, scaling recommendations
29
+
30
+ ## When to Invoke Me
31
+
32
+ I activate for:
33
+ - **Monitoring setup**: "Configure Prometheus for Kafka", "create Grafana dashboards"
34
+ - **Alert configuration**: "Set up critical alerts", "SLO for 99.9% availability"
35
+ - **Troubleshooting**: "High latency", "consumer lag spiking", "broker CPU at 100%"
36
+ - **Performance analysis**: "Why is Kafka slow?", "optimize throughput", "reduce latency"
37
+ - **Incident response**: "Under-replicated partitions", "offline partitions", "broker down"
38
+
39
+ ## My Tools
40
+
41
+ **Dashboards**:
42
+ - kafka-cluster-overview: Cluster health, throughput, ISR changes
43
+ - kafka-broker-metrics: CPU, memory, network, request handlers
44
+ - kafka-consumer-lag: Lag per group/topic, offset tracking
45
+ - kafka-topic-metrics: Partition count, replication, log size
46
+ - kafka-jvm-metrics: Heap, GC, threads, file descriptors
47
+
48
+ **Alerting Rules** (14 alerts):
49
+ - CRITICAL: Under-replicated partitions, offline partitions, no controller, unclean leader elections
50
+ - HIGH: Consumer lag, ISR shrinks, leader election rate
51
+ - WARNING: CPU, memory, GC time, disk usage, file descriptors
52
+
53
+ ## Example Workflows
54
+
55
+ ### Workflow 1: Set Up Complete Monitoring Stack
56
+ ```
57
+ User: "Set up monitoring for Kafka cluster on Kubernetes"
58
+
59
+ Me:
60
+ 1. JMX Exporter Configuration:
61
+ - Create ConfigMap with kafka-jmx-exporter.yml
62
+ - Add to Kafka CR: metricsConfig.type=jmxPrometheusExporter
63
+ - Metrics exposed on port 9404 (Strimzi default)
64
+
65
+ 2. Prometheus Integration:
66
+ - Create PodMonitor for Kafka pods
67
+ - Scrape interval: 30s
68
+ - Target: strimzi.io/kind=Kafka pods
69
+
70
+ 3. Grafana Dashboard Provisioning:
71
+ - Create ConfigMaps for 5 dashboards
72
+ - Label with grafana_dashboard=1
73
+ - Auto-import within 60 seconds
74
+
75
+ 4. Alerting Rules:
76
+ - Deploy PrometheusRule with 14 alerts
77
+ - Configure Alertmanager for Slack/PagerDuty
78
+ - Test: Stop a broker, verify alert fires
79
+
80
+ 5. Verification:
81
+ - Open Grafana (kubectl port-forward 3000:80)
82
+ - Check metrics: kafka_server_broker_topic_metrics_bytesin_total
83
+ - View dashboards: Cluster Overview, Broker Metrics, Consumer Lag
84
+ ```
85
+
86
+ ### Workflow 2: Troubleshoot High Consumer Lag
87
+ ```
88
+ User: "Consumer group 'orders-processor' has 50K messages lag, why?"
89
+
90
+ Me:
91
+ 1. Immediate Metrics Check:
92
+ - kafka_consumergroup_lag{consumergroup="orders-processor"} = 50,000
93
+ - kafka_consumergroup_current_offset (where are consumers?)
94
+ - kafka_consumergroup_log_end_offset (where are producers?)
95
+
96
+ 2. Consumer Health Check:
97
+ - kafka_consumergroup_members = ? (how many active consumers?)
98
+ - Partition count = 12
99
+ - Expected: 12 consumers (1 per partition)
100
+ - If < 12 → Scale up consumers
101
+
102
+ 3. Processing Time Analysis:
103
+ - Check application metrics: message processing time
104
+ - If > 100ms → Optimize processing logic
105
+ - If database calls → Add caching, connection pooling
106
+
107
+ 4. Producer Rate vs Consumer Rate:
108
+ - Producer: rate(kafka_topic_partition_current_offset[5m]) = 500 msg/sec
109
+ - Consumer: rate(kafka_consumergroup_current_offset[5m]) = 200 msg/sec
110
+ - Gap: 300 msg/sec → Consumers too slow!
111
+
112
+ 5. Remediation Options:
113
+ a. Scale consumers: 12 → 24 (but limited by 12 partitions)
114
+ b. Increase partitions: 12 → 24 (allows more consumers)
115
+ c. Optimize processing: Reduce per-message latency
116
+ d. Batch processing: Process 10 messages at once
117
+
118
+ 6. Long-term Fix:
119
+ - Increase partitions (requires re-partitioning)
120
+ - Optimize consumer code (reduce latency)
121
+ - Add more consumer instances
122
+ - Monitor: kafka_consumergroup_lag < 1000 (SLO)
123
+ ```
124
+
125
+ ### Workflow 3: Investigate Broker Performance Degradation
126
+ ```
127
+ User: "Broker CPU spiked to 100%, latency increased, what's wrong?"
128
+
129
+ Me:
130
+ 1. Metrics Timeline Analysis:
131
+ - os_process_cpu_load{instance="kafka-broker-2"} = 1.0 (100%)
132
+ - kafka_network_request_metrics_totaltime_total{request="Produce"} spike
133
+ - kafka_server_request_handler_avg_idle_percent = 0.05 (95% busy!)
134
+
135
+ 2. Correlation Check (find root cause):
136
+ - kafka_server_broker_topic_metrics_messagesin_total → No spike
137
+ - kafka_log_flush_time_ms_p99 → Spike from 10ms to 500ms (disk I/O issue!)
138
+ - iostat (via node exporter) → Disk queue depth = 50 (saturation)
139
+
140
+ 3. Root Cause Identified: Disk I/O Saturation
141
+ - Likely cause: Log flush taking too long
142
+ - Check: log.flush.interval.messages and log.flush.interval.ms
143
+
144
+ 4. Immediate Mitigation:
145
+ - Check disk health: SMART errors?
146
+ - Check IOPS limits: GP2 exhausted? Upgrade to GP3
147
+ - Increase provisioned IOPS: 3000 → 10,000
148
+
149
+ 5. Configuration Tuning:
150
+ - Increase log.flush.interval.messages (flush less frequently)
151
+ - Reduce log.segment.bytes (smaller segments = less data per flush)
152
+ - Use faster storage class (io2 for critical production)
153
+
154
+ 6. Monitoring:
155
+ - Set alert: kafka_log_flush_time_ms_p99 > 100ms for 5m
156
+ - Track: iostat iowait% < 20% (SLO)
157
+ ```
158
+
159
+ ## Critical Metrics I Monitor
160
+
161
+ ### Cluster Health
162
+ - `kafka_controller_active_controller_count` = 1 (exactly one)
163
+ - `kafka_server_replica_manager_under_replicated_partitions` = 0
164
+ - `kafka_controller_offline_partitions_count` = 0
165
+ - `kafka_controller_unclean_leader_elections_total` = 0
166
+
167
+ ### Broker Performance
168
+ - `os_process_cpu_load` < 0.8 (80% CPU)
169
+ - `jvm_memory_heap_used_bytes / jvm_memory_heap_max_bytes` < 0.85 (85% heap)
170
+ - `kafka_server_request_handler_avg_idle_percent` > 0.3 (30% idle)
171
+ - `os_open_file_descriptors / os_max_file_descriptors` < 0.8 (80% FD)
172
+
173
+ ### Throughput & Latency
174
+ - `kafka_server_broker_topic_metrics_bytesin_total` (bytes in/sec)
175
+ - `kafka_server_broker_topic_metrics_bytesout_total` (bytes out/sec)
176
+ - `kafka_network_request_metrics_totaltime_total{request="Produce"}` (produce latency)
177
+ - `kafka_network_request_metrics_totaltime_total{request="FetchConsumer"}` (fetch latency)
178
+
179
+ ### Consumer Lag
180
+ - `kafka_consumergroup_lag` < 1000 messages (SLO)
181
+ - `rate(kafka_consumergroup_current_offset[5m])` = consumer throughput
182
+ - `rate(kafka_topic_partition_current_offset[5m])` = producer throughput
183
+
184
+ ### JVM Health
185
+ - `jvm_gc_collection_time_ms_total` < 500ms/sec (GC time)
186
+ - `jvm_threads_count` < 500 (thread count)
187
+ - `rate(jvm_gc_collection_count_total[5m])` < 1/sec (GC frequency)
188
+
189
+ ## Alerting Best Practices
190
+
191
+ ### Alert Severity Levels
192
+
193
+ **CRITICAL** (Page On-Call Immediately):
194
+ - Under-replicated partitions > 0 for 5 minutes
195
+ - Offline partitions > 0 for 1 minute
196
+ - No active controller for 1 minute
197
+ - Unclean leader elections > 0
198
+
199
+ **HIGH** (Notify During Business Hours):
200
+ - Consumer lag > 10,000 messages for 10 minutes
201
+ - ISR shrinks > 5/sec for 5 minutes
202
+ - Leader election rate > 0.5/sec for 5 minutes
203
+
204
+ **WARNING** (Create Ticket, Investigate Next Day):
205
+ - CPU usage > 80% for 5 minutes
206
+ - Heap memory > 85% for 5 minutes
207
+ - GC time > 500ms/sec for 5 minutes
208
+ - Disk usage > 85% for 5 minutes
209
+
210
+ ### Alert Design Principles
211
+ - ✅ **Actionable**: Alert must require human intervention
212
+ - ✅ **Specific**: Include exact metric value and threshold
213
+ - ✅ **Runbook**: Link to step-by-step remediation guide
214
+ - ✅ **Context**: Include related metrics for correlation
215
+ - ❌ **Avoid Noise**: Don't alert on normal fluctuations
216
+
217
+ ## SLO Definitions
218
+
219
+ ### Example SLOs for Kafka
220
+ ```yaml
221
+ # Availability SLO
222
+ - objective: "99.9% of produce requests succeed"
223
+ measurement: success_rate(kafka_network_request_metrics_totaltime_total{request="Produce"})
224
+ target: 0.999
225
+
226
+ # Latency SLO
227
+ - objective: "p99 produce latency < 100ms"
228
+ measurement: histogram_quantile(0.99, kafka_network_request_metrics_totaltime_total{request="Produce"})
229
+ target: 0.1 # 100ms
230
+
231
+ # Consumer Lag SLO
232
+ - objective: "95% of consumer groups have lag < 1000 messages"
233
+ measurement: count(kafka_consumergroup_lag < 1000) / count(kafka_consumergroup_lag)
234
+ target: 0.95
235
+ ```
236
+
237
+ ## Troubleshooting Decision Tree
238
+
239
+ ```
240
+ High Latency Detected
241
+ ├─ Check Broker CPU
242
+ │ └─ High (>80%) → Scale horizontally, optimize config
243
+
244
+ ├─ Check Disk I/O
245
+ │ └─ High (iowait >20%) → Upgrade storage (GP3/io2), tune flush settings
246
+
247
+ ├─ Check Network
248
+ │ └─ High RTT → Check inter-broker network, increase socket buffers
249
+
250
+ ├─ Check GC Time
251
+ │ └─ High (>500ms/sec) → Increase heap, tune GC (G1GC)
252
+
253
+ └─ Check Request Handler Idle %
254
+ └─ Low (<30%) → Increase num.network.threads, num.io.threads
255
+ ```
256
+
257
+ ## References
258
+
259
+ - Prometheus JMX Exporter: https://github.com/prometheus/jmx_exporter
260
+ - Grafana Dashboards: `plugins/specweave-kafka/monitoring/grafana/dashboards/`
261
+ - Alerting Rules: `plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml`
262
+ - Kafka Metrics Guide: https://kafka.apache.org/documentation/#monitoring
263
+
264
+ ---
265
+
266
+ **Invoke me when you need observability, monitoring, alerting, or performance troubleshooting expertise!**
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: specweave-kafka:deploy
3
+ description: Deploy Apache Kafka cluster using Terraform (Apache Kafka, AWS MSK, or Azure Event Hubs). Guides platform selection, sizing, and deployment.
4
+ ---
5
+
6
+ # Deploy Kafka Cluster
7
+
8
+ Deploy Apache Kafka using Infrastructure as Code (Terraform).
9
+
10
+ ## What This Command Does
11
+
12
+ 1. **Platform Selection**: Helps you choose the right Kafka platform
13
+ 2. **Cluster Sizing**: Calculates broker count, instance types, storage
14
+ 3. **Terraform Generation**: Creates or uses existing Terraform modules
15
+ 4. **Deployment**: Guides through terraform init/plan/apply
16
+ 5. **Verification**: Tests cluster connectivity and basic operations
17
+
18
+ ## Interactive Workflow
19
+
20
+ I'll ask you a few questions to determine the best deployment approach:
21
+
22
+ ### Question 1: Which platform?
23
+ - **Apache Kafka** (self-hosted on AWS EC2, KRaft mode)
24
+ - **AWS MSK** (managed Kafka service)
25
+ - **Azure Event Hubs** (Kafka-compatible API)
26
+
27
+ ### Question 2: What's your use case?
28
+ - **Development/Testing** (1 broker, small instance)
29
+ - **Staging** (3 brokers, medium instances)
30
+ - **Production** (3-5 brokers, large instances, multi-AZ)
31
+
32
+ ### Question 3: Expected throughput?
33
+ - Messages per second (peak)
34
+ - Average message size
35
+ - Retention period (hours/days)
36
+
37
+ Based on your answers, I'll:
38
+ - ✅ Recommend broker count and instance types
39
+ - ✅ Calculate storage requirements
40
+ - ✅ Generate Terraform configuration
41
+ - ✅ Guide deployment
42
+
43
+ ## Example Usage
44
+
45
+ ```bash
46
+ # Start deployment wizard
47
+ /specweave-kafka:deploy
48
+
49
+ # I'll activate kafka-iac-deployment skill and guide you through:
50
+ # 1. Platform selection
51
+ # 2. Sizing calculation (using ClusterSizingCalculator)
52
+ # 3. Terraform module selection (apache-kafka, aws-msk, or azure-event-hubs)
53
+ # 4. Deployment execution
54
+ # 5. Post-deployment verification
55
+ ```
56
+
57
+ ## What Gets Created
58
+
59
+ **Apache Kafka Deployment** (AWS EC2):
60
+ - 3-5 EC2 instances (m5.xlarge or larger)
61
+ - EBS volumes (GP3, 100Gi+ per broker)
62
+ - Security groups (SASL_SSL on port 9093)
63
+ - IAM roles for S3 backups
64
+ - CloudWatch alarms
65
+ - Load balancer (optional)
66
+
67
+ **AWS MSK Deployment**:
68
+ - MSK cluster (3-6 brokers)
69
+ - VPC, subnets, security groups
70
+ - IAM authentication
71
+ - CloudWatch monitoring
72
+ - Auto-scaling (optional)
73
+
74
+ **Azure Event Hubs Deployment**:
75
+ - Event Hubs namespace (Premium SKU)
76
+ - Event hubs (topics)
77
+ - Private endpoints
78
+ - Auto-inflate enabled
79
+ - Zone redundancy
80
+
81
+ ## Prerequisites
82
+
83
+ - Terraform 1.5+ installed
84
+ - AWS CLI (for AWS deployments) or Azure CLI (for Azure)
85
+ - Appropriate cloud credentials configured
86
+ - VPC and subnets created (if deploying to cloud)
87
+
88
+ ## Post-Deployment
89
+
90
+ After deployment succeeds, I'll:
91
+ 1. ✅ Output bootstrap servers
92
+ 2. ✅ Provide connection examples
93
+ 3. ✅ Suggest running `/specweave-kafka:monitor-setup` for Prometheus + Grafana
94
+ 4. ✅ Suggest testing with `/specweave-kafka:dev-env` locally
95
+
96
+ ---
97
+
98
+ **Skills Activated**: kafka-iac-deployment, kafka-architecture
99
+ **Related Commands**: /specweave-kafka:monitor-setup, /specweave-kafka:dev-env
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: specweave-kafka:dev-env
3
+ description: Set up local Kafka development environment using Docker Compose. Includes Kafka (KRaft mode), Schema Registry, Kafka UI, Prometheus, and Grafana.
4
+ ---
5
+
6
+ # Set Up Local Kafka Dev Environment
7
+
8
+ Spin up a complete local Kafka development environment with one command.
9
+
10
+ ## What This Command Does
11
+
12
+ 1. **Docker Compose Selection**: Choose Kafka or Redpanda
13
+ 2. **Service Configuration**: Kafka + Schema Registry + UI + Monitoring
14
+ 3. **Environment Setup**: Generate docker-compose.yml
15
+ 4. **Start Services**: `docker-compose up -d`
16
+ 5. **Verification**: Test cluster and provide connection details
17
+
18
+ ## Two Options Available
19
+
20
+ ### Option 1: Apache Kafka (KRaft Mode)
21
+ **Services**:
22
+ - ✅ Kafka broker (KRaft mode, no ZooKeeper)
23
+ - ✅ Schema Registry (Avro schemas)
24
+ - ✅ Kafka UI (web interface, port 8080)
25
+ - ✅ Prometheus (metrics, port 9090)
26
+ - ✅ Grafana (dashboards, port 3000)
27
+
28
+ **Use When**: Testing Apache Kafka specifically, need Schema Registry
29
+
30
+ ### Option 2: Redpanda (3-Node Cluster)
31
+ **Services**:
32
+ - ✅ Redpanda (3 brokers, Kafka-compatible)
33
+ - ✅ Redpanda Console (web UI, port 8080)
34
+ - ✅ Prometheus (metrics, port 9090)
35
+ - ✅ Grafana (dashboards, port 3000)
36
+
37
+ **Use When**: Testing high-performance alternative, need multi-broker cluster locally
38
+
39
+ ## Example Usage
40
+
41
+ ```bash
42
+ # Start dev environment setup
43
+ /specweave-kafka:dev-env
44
+
45
+ # I'll ask:
46
+ # 1. Which stack? (Kafka or Redpanda)
47
+ # 2. Where to create files? (current directory or specify path)
48
+ # 3. Custom ports? (use defaults or customize)
49
+
50
+ # Then I'll:
51
+ # - Generate docker-compose.yml
52
+ # - Start all services
53
+ # - Wait for health checks
54
+ # - Provide connection details
55
+ # - Open Kafka UI in browser
56
+ ```
57
+
58
+ ## What Gets Created
59
+
60
+ **Directory Structure**:
61
+ ```
62
+ ./kafka-dev/
63
+ ├── docker-compose.yml # Main compose file
64
+ ├── .env # Environment variables
65
+ ├── data/ # Persistent volumes
66
+ │ ├── kafka/
67
+ │ ├── prometheus/
68
+ │ └── grafana/
69
+ └── config/
70
+ ├── prometheus.yml # Prometheus config
71
+ └── grafana/ # Dashboard provisioning
72
+ ```
73
+
74
+ **Services Running**:
75
+ - Kafka: localhost:9092 (plaintext) or localhost:9093 (SASL_SSL)
76
+ - Schema Registry: localhost:8081
77
+ - Kafka UI: http://localhost:8080
78
+ - Prometheus: http://localhost:9090
79
+ - Grafana: http://localhost:3000 (admin/admin)
80
+
81
+ ## Connection Examples
82
+
83
+ **After setup, connect with**:
84
+
85
+ ### Producer (Node.js):
86
+ ```javascript
87
+ const { Kafka } = require('kafkajs');
88
+
89
+ const kafka = new Kafka({
90
+ clientId: 'my-app',
91
+ brokers: ['localhost:9092']
92
+ });
93
+
94
+ const producer = kafka.producer();
95
+ await producer.connect();
96
+ await producer.send({
97
+ topic: 'test-topic',
98
+ messages: [{ value: 'Hello Kafka!' }]
99
+ });
100
+ ```
101
+
102
+ ### Consumer (Python):
103
+ ```python
104
+ from kafka import KafkaConsumer
105
+
106
+ consumer = KafkaConsumer(
107
+ 'test-topic',
108
+ bootstrap_servers=['localhost:9092'],
109
+ group_id='my-group',
110
+ auto_offset_reset='earliest'
111
+ )
112
+
113
+ for message in consumer:
114
+ print(f"Received: {message.value}")
115
+ ```
116
+
117
+ ### kcat (CLI):
118
+ ```bash
119
+ # Produce message
120
+ echo "Hello Kafka" | kcat -P -b localhost:9092 -t test-topic
121
+
122
+ # Consume messages
123
+ kcat -C -b localhost:9092 -t test-topic -o beginning
124
+ ```
125
+
126
+ ## Sample Producer/Consumer
127
+
128
+ I'll also create sample code templates:
129
+ - `producer-nodejs.js` - Production-ready Node.js producer
130
+ - `consumer-nodejs.js` - Production-ready Node.js consumer
131
+ - `producer-python.py` - Python producer with error handling
132
+ - `consumer-python.py` - Python consumer with DLQ
133
+
134
+ ## Prerequisites
135
+
136
+ - Docker 20+ installed
137
+ - Docker Compose v2+
138
+ - 4GB+ free RAM (for Redpanda 3-node cluster)
139
+ - Ports available: 8080, 8081, 9090, 9092, 9093, 3000
140
+
141
+ ## Post-Setup
142
+
143
+ After environment starts, I'll:
144
+ 1. ✅ Open Kafka UI in browser (http://localhost:8080)
145
+ 2. ✅ Create a test topic via UI
146
+ 3. ✅ Show producer/consumer examples
147
+ 4. ✅ Provide kcat commands for testing
148
+ 5. ✅ Show Grafana dashboards (http://localhost:3000)
149
+
150
+ ## Useful Commands
151
+
152
+ ```bash
153
+ # Start environment
154
+ docker-compose up -d
155
+
156
+ # Stop environment
157
+ docker-compose down
158
+
159
+ # Stop and remove data
160
+ docker-compose down -v
161
+
162
+ # View logs
163
+ docker-compose logs -f kafka
164
+
165
+ # Restart Kafka only
166
+ docker-compose restart kafka
167
+
168
+ # Check health
169
+ docker-compose ps
170
+ ```
171
+
172
+ ---
173
+
174
+ **Skills Activated**: kafka-cli-tools
175
+ **Docker Compose Location**: `plugins/specweave-kafka/docker/`
176
+ **Sample Code**: `plugins/specweave-kafka/docker/templates/`
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: specweave-kafka:mcp-configure
3
+ description: Configure MCP (Model Context Protocol) server for Kafka integration. Auto-detects and configures kanapuli, tuannvm, Joel-hanson, or Confluent MCP servers.
4
+ ---
5
+
6
+ # Configure Kafka MCP Server
7
+
8
+ Set up MCP (Model Context Protocol) server integration for natural language Kafka operations.
9
+
10
+ ## What This Command Does
11
+
12
+ 1. **MCP Server Detection**: Auto-detect installed MCP servers
13
+ 2. **Server Ranking**: Recommend best server for your needs
14
+ 3. **Configuration**: Generate Claude Desktop config
15
+ 4. **Testing**: Verify MCP server connectivity
16
+ 5. **Usage Guide**: Show natural language examples
17
+
18
+ ## Supported MCP Servers
19
+
20
+ | Server | Language | Features | Best For |
21
+ |--------|----------|----------|----------|
22
+ | **Confluent Official** | - | Natural language, Flink SQL, Enterprise | Production + Confluent Cloud |
23
+ | **tuannvm/kafka-mcp-server** | Go | Advanced SASL (SCRAM-SHA-256/512) | Security-focused deployments |
24
+ | **kanapuli/mcp-kafka** | Node.js | Basic operations, SASL_PLAINTEXT | Quick start, dev environments |
25
+ | **Joel-hanson/kafka-mcp-server** | Python | Claude Desktop integration | Desktop AI workflows |
26
+
27
+ ## Example Usage
28
+
29
+ ```bash
30
+ # Start MCP configuration wizard
31
+ /specweave-kafka:mcp-configure
32
+
33
+ # I'll:
34
+ # 1. Detect installed MCP servers (npm, go, pip, CLI)
35
+ # 2. Rank servers (Confluent > tuannvm > kanapuli > Joel-hanson)
36
+ # 3. Generate Claude Desktop config (~/.claude/settings.json)
37
+ # 4. Test connection to Kafka
38
+ # 5. Show natural language examples
39
+ ```
40
+
41
+ ## What Gets Configured
42
+
43
+ **Claude Desktop Config** (`~/.claude/settings.json`):
44
+ ```json
45
+ {
46
+ "mcpServers": {
47
+ "kafka": {
48
+ "command": "npx",
49
+ "args": ["mcp-kafka"],
50
+ "env": {
51
+ "KAFKA_BROKERS": "localhost:9092",
52
+ "KAFKA_SASL_USERNAME": "admin",
53
+ "KAFKA_SASL_PASSWORD": "admin-secret"
54
+ }
55
+ }
56
+ }
57
+ }
58
+ ```
59
+
60
+ ## Natural Language Examples
61
+
62
+ After MCP is configured, you can use natural language with Claude:
63
+
64
+ ```
65
+ You: "List all Kafka topics"
66
+ Claude: [Uses MCP to call listTopics()]
67
+ Output: user-events, order-events, payment-events
68
+
69
+ You: "Create a topic called 'analytics' with 12 partitions and RF=3"
70
+ Claude: [Uses MCP to call createTopic()]
71
+ Output: Topic 'analytics' created successfully
72
+
73
+ You: "What's the consumer lag for group 'orders-consumer'?"
74
+ Claude: [Uses MCP to call getConsumerGroupOffsets()]
75
+ Output: Total lag: 1,234 messages across 6 partitions
76
+
77
+ You: "Send a test message to 'user-events' topic"
78
+ Claude: [Uses MCP to call produceMessage()]
79
+ Output: Message sent to partition 3, offset 12345
80
+ ```
81
+
82
+ ## Prerequisites
83
+
84
+ - Node.js 18+ (for kanapuli or Joel-hanson)
85
+ - Go 1.20+ (for tuannvm)
86
+ - Confluent Cloud account (for Confluent MCP)
87
+ - Kafka cluster accessible from your machine
88
+
89
+ ## Post-Configuration
90
+
91
+ After MCP is configured, I'll:
92
+ 1. ✅ Restart Claude Desktop (required for MCP changes)
93
+ 2. ✅ Test MCP server with simple command
94
+ 3. ✅ Show 10+ natural language examples
95
+ 4. ✅ Provide troubleshooting tips if connection fails
96
+
97
+ ---
98
+
99
+ **Skills Activated**: kafka-mcp-integration
100
+ **Related Commands**: /specweave-kafka:deploy, /specweave-kafka:dev-env
101
+ **MCP Docs**: https://modelcontextprotocol.io/