specweave 0.18.1 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/CLAUDE.md +229 -1817
  2. package/README.md +68 -0
  3. package/bin/specweave.js +62 -6
  4. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  5. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
  6. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  7. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
  8. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
  9. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
  10. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
  11. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  12. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
  13. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  14. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
  15. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
  16. package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
  17. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
  18. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
  19. package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  20. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +7 -0
  21. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -1
  22. package/dist/plugins/specweave-github/lib/epic-content-builder.js +42 -0
  23. package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -1
  24. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
  25. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  26. package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
  27. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  28. package/dist/plugins/specweave-github/lib/github-epic-sync.js +1 -1
  29. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
  30. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
  31. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
  32. package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
  33. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
  34. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  35. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
  36. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  37. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
  38. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
  39. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
  40. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
  41. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
  42. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
  43. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
  44. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
  45. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
  46. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
  47. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
  48. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
  49. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +8 -6
  50. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -1
  51. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +78 -117
  52. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -1
  53. package/dist/src/cli/commands/import-docs.js +4 -4
  54. package/dist/src/cli/commands/import-docs.js.map +1 -1
  55. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  56. package/dist/src/cli/commands/init-multiproject.js +17 -18
  57. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  58. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  59. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  60. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  61. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  62. package/dist/src/cli/commands/switch-project.js +9 -26
  63. package/dist/src/cli/commands/switch-project.js.map +1 -1
  64. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  65. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  66. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  67. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  68. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  69. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  70. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  71. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  72. package/dist/src/core/increment/active-increment-manager.js +113 -46
  73. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  74. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  75. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  76. package/dist/src/core/increment/conflict-resolver.js +219 -0
  77. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  78. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  79. package/dist/src/core/increment/discipline-checker.js +7 -1
  80. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  81. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  82. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  83. package/dist/src/core/increment/duplicate-detector.js +276 -0
  84. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  85. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  86. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  87. package/dist/src/core/increment/increment-archiver.js +368 -0
  88. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  89. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  90. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  91. package/dist/src/core/increment/increment-reopener.js +390 -0
  92. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  93. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  94. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  95. package/dist/src/core/increment/metadata-manager.js +143 -5
  96. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  97. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  98. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  99. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  100. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  101. package/dist/src/core/increment/types.d.ts +1 -0
  102. package/dist/src/core/increment/types.d.ts.map +1 -1
  103. package/dist/src/core/increment-utils.d.ts +112 -0
  104. package/dist/src/core/increment-utils.d.ts.map +1 -0
  105. package/dist/src/core/increment-utils.js +210 -0
  106. package/dist/src/core/increment-utils.js.map +1 -0
  107. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  108. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  109. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  110. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  111. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  112. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  113. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  114. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  115. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  116. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  117. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  118. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  119. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  120. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  121. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  122. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  123. package/dist/src/core/living-docs/index.d.ts +6 -0
  124. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  125. package/dist/src/core/living-docs/index.js +6 -0
  126. package/dist/src/core/living-docs/index.js.map +1 -1
  127. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  128. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  129. package/dist/src/core/living-docs/project-detector.js +35 -1
  130. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  131. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  132. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  133. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  134. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  135. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  136. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  137. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  138. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  139. package/dist/src/core/living-docs/types.d.ts +143 -0
  140. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  141. package/dist/src/core/project-manager.d.ts +2 -17
  142. package/dist/src/core/project-manager.d.ts.map +1 -1
  143. package/dist/src/core/project-manager.js +68 -48
  144. package/dist/src/core/project-manager.js.map +1 -1
  145. package/dist/src/core/spec-content-sync.d.ts +1 -1
  146. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  147. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  148. package/dist/src/core/sync/enhanced-content-builder.js +2 -1
  149. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  150. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  151. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  152. package/dist/src/core/sync/performance-optimizer.js +220 -0
  153. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  154. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  155. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  156. package/dist/src/core/sync/retry-handler.js +196 -0
  157. package/dist/src/core/sync/retry-handler.js.map +1 -0
  158. package/dist/src/core/types/config.d.ts +94 -0
  159. package/dist/src/core/types/config.d.ts.map +1 -1
  160. package/dist/src/core/types/config.js +16 -0
  161. package/dist/src/core/types/config.js.map +1 -1
  162. package/dist/src/core/types/increment-metadata.d.ts +6 -0
  163. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  164. package/dist/src/core/types/increment-metadata.js +10 -1
  165. package/dist/src/core/types/increment-metadata.js.map +1 -1
  166. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  167. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  168. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  169. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  170. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  171. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  172. package/package.json +1 -1
  173. package/plugins/specweave/COMMANDS.md +13 -4
  174. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  175. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  176. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  177. package/plugins/specweave/commands/specweave-archive.md +363 -0
  178. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  179. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  180. package/plugins/specweave/commands/specweave-increment.md +4 -3
  181. package/plugins/specweave/commands/specweave-progress.md +176 -27
  182. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  183. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  184. package/plugins/specweave/commands/specweave-restore.md +309 -0
  185. package/plugins/specweave/commands/specweave-resume.md +51 -23
  186. package/plugins/specweave/commands/specweave-status.md +41 -7
  187. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  188. package/plugins/specweave/hooks/hooks.json +4 -0
  189. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  190. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  191. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  192. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  193. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  194. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  195. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  196. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  197. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  198. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  199. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  200. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  201. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  202. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  203. package/plugins/specweave-confluent/README.md +375 -0
  204. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  205. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  206. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  207. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  208. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  209. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  210. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  211. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  212. package/plugins/specweave-github/hooks/post-task-completion.sh +10 -9
  213. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  214. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  215. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  216. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  217. package/plugins/specweave-github/lib/epic-content-builder.js +38 -0
  218. package/plugins/specweave-github/lib/epic-content-builder.ts +59 -0
  219. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  220. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  221. package/plugins/specweave-github/lib/github-epic-sync.ts +1 -1
  222. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  223. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  224. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  225. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  226. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  227. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  228. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  229. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  230. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  231. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  232. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  233. package/plugins/{specweave-ado/lib/enhanced-ado-sync.js → specweave-jira/lib/enhanced-jira-sync.js} +25 -61
  234. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  235. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  236. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  237. package/plugins/specweave-kafka/README.md +242 -0
  238. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  239. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  240. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  241. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  242. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  243. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  244. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  245. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  246. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  247. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  248. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  249. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  250. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  251. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  252. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  253. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  254. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  255. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  256. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  257. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  258. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  259. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  260. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  261. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  262. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  263. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  264. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  265. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  266. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  267. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  268. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  269. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  270. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  271. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  272. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  273. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  274. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  275. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  276. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  277. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  278. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  279. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  280. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  281. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  282. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  283. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  284. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  285. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  286. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  287. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  288. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  289. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  290. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  291. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  292. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  293. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  294. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  295. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  296. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  297. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  298. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  299. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  300. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  301. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  302. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  303. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  304. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  305. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  306. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  307. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  308. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  309. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  310. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  311. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  312. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  313. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  314. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  315. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  316. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  317. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  318. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  319. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  320. package/plugins/specweave-kafka/package.json +41 -0
  321. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  322. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  323. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  324. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  325. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  326. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  327. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  328. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  329. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  330. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  331. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  332. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  333. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  334. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  335. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  336. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  337. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  338. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  339. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  340. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  341. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  342. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  343. package/plugins/specweave-kafka/tsconfig.json +21 -0
  344. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  345. package/plugins/specweave-kafka-streams/README.md +310 -0
  346. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  347. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  348. package/plugins/specweave-n8n/README.md +354 -0
  349. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  350. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  351. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  352. package/src/templates/AGENTS.md.template +601 -7
  353. package/src/templates/CLAUDE.md.template +188 -88
  354. package/dist/locales/de/.gitkeep +0 -0
  355. package/dist/locales/de/cli.json +0 -108
  356. package/dist/locales/en/cli.json +0 -287
  357. package/dist/locales/en/errors.json +0 -7
  358. package/dist/locales/en/templates.json +0 -6
  359. package/dist/locales/es/.gitkeep +0 -0
  360. package/dist/locales/es/cli.json +0 -41
  361. package/dist/locales/fr/.gitkeep +0 -0
  362. package/dist/locales/fr/cli.json +0 -108
  363. package/dist/locales/ja/.gitkeep +0 -0
  364. package/dist/locales/ja/cli.json +0 -108
  365. package/dist/locales/ko/.gitkeep +0 -0
  366. package/dist/locales/ko/cli.json +0 -108
  367. package/dist/locales/pt/.gitkeep +0 -0
  368. package/dist/locales/pt/cli.json +0 -108
  369. package/dist/locales/ru/.gitkeep +0 -0
  370. package/dist/locales/ru/cli.json +0 -269
  371. package/dist/locales/zh/.gitkeep +0 -0
  372. package/dist/locales/zh/cli.json +0 -108
  373. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +0 -25
  374. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +0 -1
  375. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -191
  376. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +0 -1
  377. package/dist/spec-parser.js +0 -629
  378. package/dist/src/core/sync/spec-content-sync.d.ts +0 -88
  379. package/dist/src/core/sync/spec-content-sync.d.ts.map +0 -1
  380. package/dist/src/core/sync/spec-content-sync.js +0 -5
  381. package/dist/src/core/sync/spec-content-sync.js.map +0 -1
  382. package/dist/tsconfig.tsbuildinfo +0 -1
  383. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  384. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  385. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  386. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  387. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  388. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  389. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "specweave-kafka",
3
+ "version": "1.0.0",
4
+ "description": "Apache Kafka event streaming integration plugin for SpecWeave",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "test": "jest",
10
+ "test:watch": "jest --watch",
11
+ "test:coverage": "jest --coverage",
12
+ "lint": "eslint lib/**/*.ts",
13
+ "format": "prettier --write lib/**/*.ts"
14
+ },
15
+ "keywords": [
16
+ "kafka",
17
+ "specweave",
18
+ "event-streaming",
19
+ "mcp",
20
+ "terraform"
21
+ ],
22
+ "author": "SpecWeave Team",
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "kafkajs": "^2.2.4",
26
+ "@types/node": "^18.0.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/jest": "^29.5.0",
30
+ "jest": "^29.5.0",
31
+ "ts-jest": "^29.1.0",
32
+ "typescript": "^5.0.0",
33
+ "eslint": "^8.40.0",
34
+ "@typescript-eslint/eslint-plugin": "^5.59.0",
35
+ "@typescript-eslint/parser": "^5.59.0",
36
+ "prettier": "^2.8.8"
37
+ },
38
+ "peerDependencies": {
39
+ "specweave": ">=0.18.0"
40
+ }
41
+ }
@@ -0,0 +1,647 @@
1
+ ---
2
+ name: kafka-architecture
3
+ description: Expert knowledge of Apache Kafka architecture, cluster design, capacity planning, partitioning strategies, replication, and high availability. Auto-activates on keywords kafka architecture, cluster sizing, partition strategy, replication factor, kafka ha, kafka scalability, broker count, topic design, kafka performance, kafka capacity planning.
4
+ ---
5
+
6
+ # Kafka Architecture & Design Expert
7
+
8
+ Comprehensive knowledge of Apache Kafka architecture patterns, cluster design principles, and production best practices for building resilient, scalable event streaming platforms.
9
+
10
+ ## Core Architecture Concepts
11
+
12
+ ### Kafka Cluster Components
13
+
14
+ **Brokers**:
15
+ - Individual Kafka servers that store and serve data
16
+ - Each broker handles thousands of partitions
17
+ - Typical: 3-10 brokers per cluster (small), 10-100+ (large enterprises)
18
+
19
+ **Controller**:
20
+ - One broker elected as controller (via KRaft or ZooKeeper)
21
+ - Manages partition leaders and replica assignments
22
+ - Failure triggers automatic re-election
23
+
24
+ **Topics**:
25
+ - Logical channels for message streams
26
+ - Divided into partitions for parallelism
27
+ - Can have different retention policies per topic
28
+
29
+ **Partitions**:
30
+ - Ordered, immutable sequence of records
31
+ - Unit of parallelism (1 partition = 1 consumer in a group)
32
+ - Distributed across brokers for load balancing
33
+
34
+ **Replicas**:
35
+ - Copies of partitions across multiple brokers
36
+ - 1 leader replica (serves reads/writes)
37
+ - N-1 follower replicas (replication only)
38
+ - In-Sync Replicas (ISR): Followers caught up with leader
39
+
40
+ ### KRaft vs ZooKeeper Mode
41
+
42
+ **KRaft Mode** (Recommended, Kafka 3.3+):
43
+ ```yaml
44
+ Cluster Metadata:
45
+ - Stored in Kafka itself (no external ZooKeeper)
46
+ - Metadata topic: __cluster_metadata
47
+ - Controller quorum (3 or 5 nodes)
48
+ - Faster failover (<1s vs 10-30s)
49
+ - Simplified operations
50
+ ```
51
+
52
+ **ZooKeeper Mode** (Legacy, deprecated in 4.0):
53
+ ```yaml
54
+ External Coordination:
55
+ - Requires separate ZooKeeper ensemble (3-5 nodes)
56
+ - Stores cluster metadata, configs, ACLs
57
+ - Slower failover (10-30 seconds)
58
+ - More complex to operate
59
+ ```
60
+
61
+ **Migration**: ZooKeeper → KRaft migration supported in Kafka 3.6+
62
+
63
+ ## Cluster Sizing Guidelines
64
+
65
+ ### Small Cluster (Development/Testing)
66
+
67
+ ```yaml
68
+ Configuration:
69
+ Brokers: 3
70
+ Partitions per broker: ~100-500
71
+ Total partitions: 300-1500
72
+ Replication factor: 3
73
+ Hardware:
74
+ - CPU: 4-8 cores
75
+ - RAM: 8-16 GB
76
+ - Disk: 500 GB - 1 TB SSD
77
+ - Network: 1 Gbps
78
+
79
+ Use Cases:
80
+ - Development environments
81
+ - Low-volume production (<10 MB/s)
82
+ - Proof of concepts
83
+ - Single datacenter
84
+
85
+ Example Workload:
86
+ - 50 topics
87
+ - 5-10 partitions per topic
88
+ - 1 million messages/day
89
+ - 7-day retention
90
+ ```
91
+
92
+ ### Medium Cluster (Standard Production)
93
+
94
+ ```yaml
95
+ Configuration:
96
+ Brokers: 6-12
97
+ Partitions per broker: 500-2000
98
+ Total partitions: 3K-24K
99
+ Replication factor: 3
100
+ Hardware:
101
+ - CPU: 16-32 cores
102
+ - RAM: 64-128 GB
103
+ - Disk: 2-8 TB NVMe SSD
104
+ - Network: 10 Gbps
105
+
106
+ Use Cases:
107
+ - Standard production workloads
108
+ - Multi-team environments
109
+ - Regional deployments
110
+ - Up to 500 MB/s throughput
111
+
112
+ Example Workload:
113
+ - 200-500 topics
114
+ - 10-50 partitions per topic
115
+ - 100 million messages/day
116
+ - 30-day retention
117
+ ```
118
+
119
+ ### Large Cluster (High-Scale Production)
120
+
121
+ ```yaml
122
+ Configuration:
123
+ Brokers: 20-100+
124
+ Partitions per broker: 2000-4000
125
+ Total partitions: 40K-400K+
126
+ Replication factor: 3
127
+ Hardware:
128
+ - CPU: 32-64 cores
129
+ - RAM: 128-256 GB
130
+ - Disk: 8-20 TB NVMe SSD
131
+ - Network: 25-100 Gbps
132
+
133
+ Use Cases:
134
+ - Large enterprises
135
+ - Multi-region deployments
136
+ - Event-driven architectures
137
+ - 1+ GB/s throughput
138
+
139
+ Example Workload:
140
+ - 1000+ topics
141
+ - 50-200 partitions per topic
142
+ - 1+ billion messages/day
143
+ - 90-365 day retention
144
+ ```
145
+
146
+ ### Kafka Streams / Exactly-Once Semantics (EOS) Clusters
147
+
148
+ ```yaml
149
+ Configuration:
150
+ Brokers: 6-12+ (same as standard, but more control plane load)
151
+ Partitions per broker: 500-1500 (fewer due to transaction overhead)
152
+ Total partitions: 3K-18K
153
+ Replication factor: 3
154
+ Hardware:
155
+ - CPU: 16-32 cores (more CPU for transactions)
156
+ - RAM: 64-128 GB
157
+ - Disk: 4-12 TB NVMe SSD (more for transaction logs)
158
+ - Network: 10-25 Gbps
159
+
160
+ Special Considerations:
161
+ - More brokers due to transaction coordinator load
162
+ - Lower partition count per broker (transactions = more overhead)
163
+ - Higher disk IOPS for transaction logs
164
+ - min.insync.replicas=2 mandatory for EOS
165
+ - acks=all required for producers
166
+
167
+ Use Cases:
168
+ - Stream processing with exactly-once guarantees
169
+ - Financial transactions
170
+ - Event sourcing with strict ordering
171
+ - Multi-step workflows requiring atomicity
172
+ ```
173
+
174
+ ## Partitioning Strategy
175
+
176
+ ### How Many Partitions?
177
+
178
+ **Formula**:
179
+ ```
180
+ Partitions = max(
181
+ Target Throughput / Single Partition Throughput,
182
+ Number of Consumers (for parallelism),
183
+ Future Growth Factor (2-3x)
184
+ )
185
+
186
+ Single Partition Limits:
187
+ - Write throughput: ~10-50 MB/s
188
+ - Read throughput: ~30-100 MB/s
189
+ - Message rate: ~10K-100K msg/s
190
+ ```
191
+
192
+ **Examples**:
193
+
194
+ **High Throughput Topic** (Logs, Events):
195
+ ```yaml
196
+ Requirements:
197
+ - Write: 200 MB/s
198
+ - Read: 500 MB/s (multiple consumers)
199
+ - Expected growth: 3x in 1 year
200
+
201
+ Calculation:
202
+ Write partitions: 200 MB/s ÷ 20 MB/s = 10
203
+ Read partitions: 500 MB/s ÷ 40 MB/s = 13
204
+ Growth factor: 13 × 3 = 39
205
+
206
+ Recommendation: 40-50 partitions
207
+ ```
208
+
209
+ **Low-Latency Topic** (Commands, Requests):
210
+ ```yaml
211
+ Requirements:
212
+ - Write: 5 MB/s
213
+ - Read: 10 MB/s
214
+ - Latency: <10ms p99
215
+ - Order preservation: By user ID
216
+
217
+ Calculation:
218
+ Throughput partitions: 5 MB/s ÷ 20 MB/s = 1
219
+ Parallelism: 4 (for redundancy)
220
+
221
+ Recommendation: 4-6 partitions (keyed by user ID)
222
+ ```
223
+
224
+ **Dead Letter Queue**:
225
+ ```yaml
226
+ Recommendation: 1-3 partitions
227
+ Reason: Low volume, order less important
228
+ ```
229
+
230
+ ### Partition Key Selection
231
+
232
+ **Good Keys** (High Cardinality, Even Distribution):
233
+ ```yaml
234
+ ✅ User ID (UUIDs):
235
+ - Millions of unique values
236
+ - Even distribution
237
+ - Example: "user-123e4567-e89b-12d3-a456-426614174000"
238
+
239
+ ✅ Device ID (IoT):
240
+ - Unique per device
241
+ - Natural sharding
242
+ - Example: "device-sensor-001-zone-a"
243
+
244
+ ✅ Order ID (E-commerce):
245
+ - Unique per transaction
246
+ - Even temporal distribution
247
+ - Example: "order-2024-11-15-abc123"
248
+ ```
249
+
250
+ **Bad Keys** (Low Cardinality, Hotspots):
251
+ ```yaml
252
+ ❌ Country Code:
253
+ - Only ~200 values
254
+ - Uneven (US, CN >> others)
255
+ - Creates partition hotspots
256
+
257
+ ❌ Boolean Flags:
258
+ - Only 2 values (true/false)
259
+ - Severe imbalance
260
+
261
+ ❌ Date (YYYY-MM-DD):
262
+ - All today's traffic → 1 partition
263
+ - Temporal hotspot
264
+ ```
265
+
266
+ **Compound Keys** (Best of Both):
267
+ ```yaml
268
+ ✅ Country + User ID:
269
+ - Partition by country for locality
270
+ - Sub-partition by user for distribution
271
+ - Example: "US:user-123" → hash("US:user-123")
272
+
273
+ ✅ Tenant + Event Type + Timestamp:
274
+ - Multi-tenant isolation
275
+ - Event type grouping
276
+ - Temporal ordering
277
+ ```
278
+
279
+ ## Replication & High Availability
280
+
281
+ ### Replication Factor Guidelines
282
+
283
+ ```yaml
284
+ Development:
285
+ Replication Factor: 1
286
+ Reason: Fast, no durability needed
287
+
288
+ Production (Standard):
289
+ Replication Factor: 3
290
+ Reason: Balance durability vs cost
291
+ Tolerates: 2 broker failures (with min.insync.replicas=2)
292
+
293
+ Production (Critical):
294
+ Replication Factor: 5
295
+ Reason: Maximum durability
296
+ Tolerates: 4 broker failures (with min.insync.replicas=3)
297
+ Use Cases: Financial transactions, audit logs
298
+
299
+ Multi-Datacenter:
300
+ Replication Factor: 3 per DC (6 total)
301
+ Reason: DC-level fault tolerance
302
+ Requires: MirrorMaker 2 or Confluent Replicator
303
+ ```
304
+
305
+ ### min.insync.replicas
306
+
307
+ **Configuration**:
308
+ ```yaml
309
+ min.insync.replicas=2:
310
+ - At least 2 replicas must acknowledge writes
311
+ - Typical for replication.factor=3
312
+ - Prevents data loss if 1 broker fails
313
+
314
+ min.insync.replicas=1:
315
+ - Only leader must acknowledge (dangerous!)
316
+ - Use only for non-critical topics
317
+
318
+ min.insync.replicas=3:
319
+ - At least 3 replicas must acknowledge
320
+ - For replication.factor=5 (critical systems)
321
+ ```
322
+
323
+ **Rule**: `min.insync.replicas ≤ replication.factor - 1` (to allow 1 replica failure)
324
+
325
+ ### Rack Awareness
326
+
327
+ ```yaml
328
+ Configuration:
329
+ broker.rack=rack1 # Broker 1
330
+ broker.rack=rack2 # Broker 2
331
+ broker.rack=rack3 # Broker 3
332
+
333
+ Benefit:
334
+ - Replicas spread across racks
335
+ - Survives rack-level failures (power, network)
336
+ - Example: Topic with RF=3 → 1 replica per rack
337
+
338
+ Placement:
339
+ Leader: rack1
340
+ Follower 1: rack2
341
+ Follower 2: rack3
342
+ ```
343
+
344
+ ## Retention Strategies
345
+
346
+ ### Time-Based Retention
347
+
348
+ ```yaml
349
+ Short-Term (Events, Logs):
350
+ retention.ms: 86400000 # 1 day
351
+ Use Cases: Real-time analytics, monitoring
352
+
353
+ Medium-Term (Transactions):
354
+ retention.ms: 604800000 # 7 days
355
+ Use Cases: Standard business events
356
+
357
+ Long-Term (Audit, Compliance):
358
+ retention.ms: 31536000000 # 365 days
359
+ Use Cases: Regulatory requirements, event sourcing
360
+
361
+ Infinite (Event Sourcing):
362
+ retention.ms: -1 # Forever
363
+ cleanup.policy: compact
364
+ Use Cases: Source of truth, state rebuilding
365
+ ```
366
+
367
+ ### Size-Based Retention
368
+
369
+ ```yaml
370
+ retention.bytes: 10737418240 # 10 GB per partition
371
+
372
+ Combined (Time OR Size):
373
+ retention.ms: 604800000 # 7 days
374
+ retention.bytes: 107374182400 # 100 GB
375
+ # Whichever limit is reached first
376
+ ```
377
+
378
+ ### Compaction (Log Compaction)
379
+
380
+ ```yaml
381
+ cleanup.policy: compact
382
+
383
+ How It Works:
384
+ - Keeps only latest value per key
385
+ - Deletes old versions
386
+ - Preserves full history initially, compacts later
387
+
388
+ Use Cases:
389
+ - Database changelogs (CDC)
390
+ - User profile updates
391
+ - Configuration management
392
+ - State stores
393
+
394
+ Example:
395
+ Before Compaction:
396
+ user:123 → {name: "Alice", v:1}
397
+ user:123 → {name: "Alice", v:2, email: "alice@ex.com"}
398
+ user:123 → {name: "Alice A.", v:3}
399
+
400
+ After Compaction:
401
+ user:123 → {name: "Alice A.", v:3} # Latest only
402
+ ```
403
+
404
+ ## Performance Optimization
405
+
406
+ ### Broker Configuration
407
+
408
+ ```yaml
409
+ # Network threads (handle client connections)
410
+ num.network.threads: 8 # Increase for high connection count
411
+
412
+ # I/O threads (disk operations)
413
+ num.io.threads: 16 # Set to number of disks × 2
414
+
415
+ # Replica fetcher threads
416
+ num.replica.fetchers: 4 # Increase for many partitions
417
+
418
+ # Socket buffer sizes
419
+ socket.send.buffer.bytes: 1048576 # 1 MB
420
+ socket.receive.buffer.bytes: 1048576 # 1 MB
421
+
422
+ # Log flush (default: OS handles flushing)
423
+ log.flush.interval.messages: 10000 # Flush every 10K messages
424
+ log.flush.interval.ms: 1000 # Or every 1 second
425
+ ```
426
+
427
+ ### Producer Optimization
428
+
429
+ ```yaml
430
+ High Throughput:
431
+ batch.size: 65536 # 64 KB
432
+ linger.ms: 100 # Wait 100ms for batching
433
+ compression.type: lz4 # Fast compression
434
+ acks: 1 # Leader only
435
+
436
+ Low Latency:
437
+ batch.size: 16384 # 16 KB (default)
438
+ linger.ms: 0 # Send immediately
439
+ compression.type: none
440
+ acks: 1
441
+
442
+ Durability (Exactly-Once):
443
+ batch.size: 16384
444
+ linger.ms: 10
445
+ compression.type: lz4
446
+ acks: all
447
+ enable.idempotence: true
448
+ transactional.id: "producer-1"
449
+ ```
450
+
451
+ ### Consumer Optimization
452
+
453
+ ```yaml
454
+ High Throughput:
455
+ fetch.min.bytes: 1048576 # 1 MB
456
+ fetch.max.wait.ms: 500 # Wait 500ms to accumulate
457
+
458
+ Low Latency:
459
+ fetch.min.bytes: 1 # Immediate fetch
460
+ fetch.max.wait.ms: 100 # Short wait
461
+
462
+ Max Parallelism:
463
+ # Deploy consumers = number of partitions
464
+ # More consumers than partitions = idle consumers
465
+ ```
466
+
467
+ ## Multi-Datacenter Patterns
468
+
469
+ ### Active-Passive (Disaster Recovery)
470
+
471
+ ```yaml
472
+ Architecture:
473
+ Primary DC: Full Kafka cluster
474
+ Secondary DC: Replica cluster (MirrorMaker 2)
475
+
476
+ Configuration:
477
+ - Producers → Primary only
478
+ - Consumers → Primary only
479
+ - MirrorMaker 2: Primary → Secondary (async replication)
480
+
481
+ Failover:
482
+ 1. Detect primary failure
483
+ 2. Switch producers/consumers to secondary
484
+ 3. Promote secondary to primary
485
+
486
+ Recovery Time: 5-30 minutes (manual)
487
+ Data Loss: Potential (async replication lag)
488
+ ```
489
+
490
+ ### Active-Active (Geo-Replication)
491
+
492
+ ```yaml
493
+ Architecture:
494
+ DC1: Kafka cluster (region A)
495
+ DC2: Kafka cluster (region B)
496
+ Bidirectional replication via MirrorMaker 2
497
+
498
+ Configuration:
499
+ - Producers → Nearest DC
500
+ - Consumers → Nearest DC or both
501
+ - Conflict resolution: Last-write-wins or custom
502
+
503
+ Challenges:
504
+ - Duplicate messages (at-least-once delivery)
505
+ - Ordering across DCs not guaranteed
506
+ - Circular replication prevention
507
+
508
+ Use Cases:
509
+ - Global applications
510
+ - Regional compliance (GDPR)
511
+ - Load distribution
512
+ ```
513
+
514
+ ### Stretch Cluster (Synchronous Replication)
515
+
516
+ ```yaml
517
+ Architecture:
518
+ Single Kafka cluster spanning 2 DCs
519
+ Rack awareness: DC1 = rack1, DC2 = rack2
520
+
521
+ Configuration:
522
+ min.insync.replicas: 2
523
+ replication.factor: 4 (2 per DC)
524
+ acks: all
525
+
526
+ Requirements:
527
+ - Low latency between DCs (<10ms)
528
+ - High bandwidth link (10+ Gbps)
529
+ - Dedicated fiber
530
+
531
+ Trade-offs:
532
+ Pros: Synchronous replication, zero data loss
533
+ Cons: Latency penalty, network dependency
534
+ ```
535
+
536
+ ## Monitoring & Observability
537
+
538
+ ### Key Metrics
539
+
540
+ **Broker Metrics**:
541
+ ```yaml
542
+ UnderReplicatedPartitions:
543
+ Alert: > 0 for > 5 minutes
544
+ Indicates: Replica lag, broker failure
545
+
546
+ OfflinePartitionsCount:
547
+ Alert: > 0
548
+ Indicates: No leader elected (critical!)
549
+
550
+ ActiveControllerCount:
551
+ Alert: != 1 (should be exactly 1)
552
+ Indicates: Split brain or no controller
553
+
554
+ RequestHandlerAvgIdlePercent:
555
+ Alert: < 20%
556
+ Indicates: Broker CPU saturation
557
+ ```
558
+
559
+ **Topic Metrics**:
560
+ ```yaml
561
+ MessagesInPerSec:
562
+ Monitor: Throughput trends
563
+ Alert: Sudden drops (producer failure)
564
+
565
+ BytesInPerSec / BytesOutPerSec:
566
+ Monitor: Network utilization
567
+ Alert: Approaching NIC limits
568
+
569
+ RecordsLagMax (Consumer):
570
+ Alert: > 10000 or growing
571
+ Indicates: Consumer can't keep up
572
+ ```
573
+
574
+ **Disk Metrics**:
575
+ ```yaml
576
+ LogSegmentSize:
577
+ Monitor: Disk usage trends
578
+ Alert: > 80% capacity
579
+
580
+ LogFlushRateAndTimeMs:
581
+ Monitor: Disk write latency
582
+ Alert: > 100ms p99 (slow disk)
583
+ ```
584
+
585
+ ## Security Patterns
586
+
587
+ ### Authentication & Authorization
588
+
589
+ ```yaml
590
+ SASL/SCRAM-SHA-512:
591
+ - Industry standard
592
+ - User/password authentication
593
+ - Stored in ZooKeeper/KRaft
594
+
595
+ ACLs (Access Control Lists):
596
+ - Per-topic, per-group permissions
597
+ - Operations: READ, WRITE, CREATE, DELETE, ALTER
598
+ - Example:
599
+ bin/kafka-acls.sh --add \
600
+ --allow-principal User:alice \
601
+ --operation READ \
602
+ --topic orders
603
+
604
+ mTLS (Mutual TLS):
605
+ - Certificate-based auth
606
+ - Strong cryptographic identity
607
+ - Best for service-to-service
608
+ ```
609
+
610
+ ## Integration with SpecWeave
611
+
612
+ **Automatic Architecture Detection**:
613
+ ```typescript
614
+ import { ClusterSizingCalculator } from './lib/utils/sizing';
615
+
616
+ const calculator = new ClusterSizingCalculator();
617
+ const recommendation = calculator.calculate({
618
+ throughputMBps: 200,
619
+ retentionDays: 30,
620
+ replicationFactor: 3,
621
+ topicCount: 100
622
+ });
623
+
624
+ console.log(recommendation);
625
+ // {
626
+ // brokers: 8,
627
+ // partitionsPerBroker: 1500,
628
+ // diskPerBroker: 6000 GB,
629
+ // ramPerBroker: 64 GB
630
+ // }
631
+ ```
632
+
633
+ **SpecWeave Commands**:
634
+ - `/specweave-kafka:deploy` - Validates cluster sizing before deployment
635
+ - `/specweave-kafka:monitor-setup` - Configures metrics for key indicators
636
+
637
+ ## Related Skills
638
+
639
+ - `/specweave-kafka:kafka-mcp-integration` - MCP server setup
640
+ - `/specweave-kafka:kafka-cli-tools` - CLI operations
641
+
642
+ ## External Links
643
+
644
+ - [Kafka Documentation - Architecture](https://kafka.apache.org/documentation/#design)
645
+ - [Confluent - Kafka Sizing](https://www.confluent.io/blog/how-to-choose-the-number-of-topics-partitions-in-a-kafka-cluster/)
646
+ - [KRaft Mode Overview](https://kafka.apache.org/documentation/#kraft)
647
+ - [LinkedIn Engineering - Kafka at Scale](https://engineering.linkedin.com/kafka/running-kafka-scale)