specweave 0.18.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/CLAUDE.md +229 -1817
  2. package/README.md +68 -0
  3. package/bin/specweave.js +62 -6
  4. package/dist/locales/de/.gitkeep +0 -0
  5. package/dist/locales/de/cli.json +108 -0
  6. package/dist/locales/en/cli.json +287 -0
  7. package/dist/locales/en/errors.json +7 -0
  8. package/dist/locales/en/templates.json +6 -0
  9. package/dist/locales/es/.gitkeep +0 -0
  10. package/dist/locales/es/cli.json +41 -0
  11. package/dist/locales/fr/.gitkeep +0 -0
  12. package/dist/locales/fr/cli.json +108 -0
  13. package/dist/locales/ja/.gitkeep +0 -0
  14. package/dist/locales/ja/cli.json +108 -0
  15. package/dist/locales/ko/.gitkeep +0 -0
  16. package/dist/locales/ko/cli.json +108 -0
  17. package/dist/locales/pt/.gitkeep +0 -0
  18. package/dist/locales/pt/cli.json +108 -0
  19. package/dist/locales/ru/.gitkeep +0 -0
  20. package/dist/locales/ru/cli.json +269 -0
  21. package/dist/locales/zh/.gitkeep +0 -0
  22. package/dist/locales/zh/cli.json +108 -0
  23. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  24. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
  25. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  26. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
  27. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
  28. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
  29. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
  30. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  31. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
  32. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  33. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +25 -0
  34. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +1 -0
  35. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +191 -0
  36. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +1 -0
  37. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
  38. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
  39. package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
  40. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
  41. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
  42. package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  43. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +70 -0
  44. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -0
  45. package/dist/plugins/specweave-github/lib/epic-content-builder.js +258 -0
  46. package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -0
  47. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
  48. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  49. package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
  50. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  51. package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts +2 -2
  52. package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts.map +1 -1
  53. package/dist/plugins/specweave-github/lib/github-epic-sync.js +20 -5
  54. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
  55. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
  56. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
  57. package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
  58. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
  59. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  60. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
  61. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  62. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
  63. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
  64. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
  65. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
  66. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
  67. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
  68. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
  69. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
  70. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
  71. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
  72. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
  73. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
  74. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +28 -0
  75. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -0
  76. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +156 -0
  77. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -0
  78. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  79. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  80. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  81. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  82. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  83. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  84. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  85. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  86. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  87. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  88. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  89. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  90. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  91. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  92. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  93. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  94. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  95. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  96. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  97. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  98. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  99. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  100. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  101. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  102. package/dist/spec-parser.js +629 -0
  103. package/dist/src/cli/commands/import-docs.js +4 -4
  104. package/dist/src/cli/commands/import-docs.js.map +1 -1
  105. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  106. package/dist/src/cli/commands/init-multiproject.js +17 -18
  107. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  108. package/dist/src/cli/commands/init.d.ts.map +1 -1
  109. package/dist/src/cli/commands/init.js +107 -3
  110. package/dist/src/cli/commands/init.js.map +1 -1
  111. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  112. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  113. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  114. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  115. package/dist/src/cli/commands/switch-project.js +9 -26
  116. package/dist/src/cli/commands/switch-project.js.map +1 -1
  117. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  118. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  119. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  120. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  121. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  122. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  123. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  124. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  125. package/dist/src/core/increment/active-increment-manager.js +113 -46
  126. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  127. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  128. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  129. package/dist/src/core/increment/conflict-resolver.js +219 -0
  130. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  131. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  132. package/dist/src/core/increment/discipline-checker.js +7 -1
  133. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  134. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  135. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  136. package/dist/src/core/increment/duplicate-detector.js +276 -0
  137. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  138. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  139. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  140. package/dist/src/core/increment/increment-archiver.js +368 -0
  141. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  142. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  143. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  144. package/dist/src/core/increment/increment-reopener.js +390 -0
  145. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  146. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  147. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  148. package/dist/src/core/increment/metadata-manager.js +143 -5
  149. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  150. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  151. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  152. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  153. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  154. package/dist/src/core/increment/types.d.ts +1 -0
  155. package/dist/src/core/increment/types.d.ts.map +1 -1
  156. package/dist/src/core/increment-utils.d.ts +112 -0
  157. package/dist/src/core/increment-utils.d.ts.map +1 -0
  158. package/dist/src/core/increment-utils.js +210 -0
  159. package/dist/src/core/increment-utils.js.map +1 -0
  160. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  161. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  162. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  163. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  164. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  165. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  166. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  167. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  168. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  169. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  170. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  171. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  172. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  173. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  174. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  175. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  176. package/dist/src/core/living-docs/index.d.ts +6 -0
  177. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  178. package/dist/src/core/living-docs/index.js +6 -0
  179. package/dist/src/core/living-docs/index.js.map +1 -1
  180. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  181. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  182. package/dist/src/core/living-docs/project-detector.js +35 -1
  183. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  184. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  185. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  186. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  187. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  188. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  189. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  190. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  191. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  192. package/dist/src/core/living-docs/types.d.ts +143 -0
  193. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  194. package/dist/src/core/project-manager.d.ts +2 -17
  195. package/dist/src/core/project-manager.d.ts.map +1 -1
  196. package/dist/src/core/project-manager.js +68 -48
  197. package/dist/src/core/project-manager.js.map +1 -1
  198. package/dist/src/core/spec-content-sync.d.ts +1 -1
  199. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  200. package/dist/src/core/sync/enhanced-content-builder.d.ts +32 -54
  201. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  202. package/dist/src/core/sync/enhanced-content-builder.js +142 -138
  203. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  204. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  205. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  206. package/dist/src/core/sync/performance-optimizer.js +220 -0
  207. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  208. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  209. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  210. package/dist/src/core/sync/retry-handler.js +196 -0
  211. package/dist/src/core/sync/retry-handler.js.map +1 -0
  212. package/dist/src/core/sync/spec-content-sync.d.ts +88 -0
  213. package/dist/src/core/sync/spec-content-sync.d.ts.map +1 -0
  214. package/dist/src/core/sync/spec-content-sync.js +5 -0
  215. package/dist/src/core/sync/spec-content-sync.js.map +1 -0
  216. package/dist/src/core/sync/types.d.ts +52 -0
  217. package/dist/src/core/sync/types.d.ts.map +1 -0
  218. package/dist/src/core/sync/types.js +5 -0
  219. package/dist/src/core/sync/types.js.map +1 -0
  220. package/dist/src/core/types/config.d.ts +125 -0
  221. package/dist/src/core/types/config.d.ts.map +1 -1
  222. package/dist/src/core/types/config.js +25 -0
  223. package/dist/src/core/types/config.js.map +1 -1
  224. package/dist/src/core/types/increment-metadata.d.ts +10 -0
  225. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  226. package/dist/src/core/types/increment-metadata.js +10 -1
  227. package/dist/src/core/types/increment-metadata.js.map +1 -1
  228. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  229. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  230. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  231. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  232. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  233. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  234. package/dist/tsconfig.tsbuildinfo +1 -0
  235. package/package.json +1 -1
  236. package/plugins/specweave/COMMANDS.md +13 -4
  237. package/plugins/specweave/agents/pm/AGENT.md +159 -12
  238. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  239. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  240. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  241. package/plugins/specweave/commands/specweave-archive.md +363 -0
  242. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  243. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  244. package/plugins/specweave/commands/specweave-increment.md +4 -3
  245. package/plugins/specweave/commands/specweave-progress.md +176 -27
  246. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  247. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  248. package/plugins/specweave/commands/specweave-restore.md +309 -0
  249. package/plugins/specweave/commands/specweave-resume.md +51 -23
  250. package/plugins/specweave/commands/specweave-status.md +41 -7
  251. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  252. package/plugins/specweave/commands/specweave.md +70 -405
  253. package/plugins/specweave/hooks/hooks.json +4 -0
  254. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  255. package/plugins/specweave/hooks/post-increment-planning.sh +26 -2
  256. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  257. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  258. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  259. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  260. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  261. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  262. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  263. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  264. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  265. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  266. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  267. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  268. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  269. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  270. package/plugins/specweave-confluent/README.md +375 -0
  271. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  272. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  273. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  274. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  275. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  276. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  277. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  278. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  279. package/plugins/specweave-github/hooks/post-task-completion.sh +42 -9
  280. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  281. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  282. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  283. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  284. package/plugins/specweave-github/lib/epic-content-builder.js +265 -0
  285. package/plugins/specweave-github/lib/epic-content-builder.ts +376 -0
  286. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  287. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  288. package/plugins/specweave-github/lib/github-epic-sync.js +23 -24
  289. package/plugins/specweave-github/lib/github-epic-sync.ts +30 -5
  290. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  291. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  292. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  293. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  294. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  295. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  296. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  297. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  298. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  299. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  300. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  301. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
  302. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  303. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  304. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  305. package/plugins/specweave-kafka/README.md +242 -0
  306. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  307. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  308. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  309. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  310. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  311. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  312. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  313. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  314. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  315. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  316. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  317. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  318. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  319. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  320. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  321. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  322. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  323. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  324. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  325. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  326. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  327. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  328. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  329. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  330. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  331. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  332. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  333. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  334. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  335. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  336. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  337. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  338. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  339. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  340. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  341. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  342. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  343. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  344. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  345. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  346. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  347. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  348. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  349. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  350. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  351. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  352. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  353. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  354. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  355. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  356. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  357. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  358. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  359. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  360. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  361. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  362. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  363. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  364. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  365. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  366. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  367. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  368. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  369. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  370. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  371. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  372. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  373. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  374. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  375. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  376. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  377. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  378. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  379. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  380. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  381. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  382. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  383. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  384. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  385. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  386. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  387. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  388. package/plugins/specweave-kafka/package.json +41 -0
  389. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  390. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  391. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  392. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  393. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  394. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  395. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  396. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  397. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  398. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  399. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  400. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  401. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  402. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  403. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  404. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  405. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  406. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  407. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  408. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  409. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  410. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  411. package/plugins/specweave-kafka/tsconfig.json +21 -0
  412. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  413. package/plugins/specweave-kafka-streams/README.md +310 -0
  414. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  415. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  416. package/plugins/specweave-n8n/README.md +354 -0
  417. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  418. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  419. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  420. package/src/templates/AGENTS.md.template +601 -7
  421. package/src/templates/CLAUDE.md.template +188 -88
  422. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  423. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  424. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  425. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  426. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  427. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  428. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,576 @@
1
+ ---
2
+ name: kafka-observability
3
+ description: Kafka monitoring and observability expert. Guides Prometheus + Grafana setup, JMX metrics, alerting rules, and dashboard configuration. Activates for kafka monitoring, prometheus, grafana, kafka metrics, jmx exporter, kafka observability, monitoring setup, kafka dashboards, alerting, kafka performance monitoring, metrics collection.
4
+ ---
5
+
6
+ # Kafka Monitoring & Observability
7
+
8
+ Expert guidance for implementing comprehensive monitoring and observability for Apache Kafka using Prometheus and Grafana.
9
+
10
+ ## When to Use This Skill
11
+
12
+ I activate when you need help with:
13
+ - **Monitoring setup**: "Set up Kafka monitoring", "configure Prometheus for Kafka", "Grafana dashboards for Kafka"
14
+ - **Metrics collection**: "Kafka JMX metrics", "export Kafka metrics to Prometheus"
15
+ - **Alerting**: "Kafka alerting rules", "alert on under-replicated partitions", "critical Kafka metrics"
16
+ - **Troubleshooting**: "Monitor Kafka performance", "track consumer lag", "broker health monitoring"
17
+
18
+ ## What I Know
19
+
20
+ ### Available Monitoring Components
21
+
22
+ This plugin provides a complete monitoring stack:
23
+
24
+ #### 1. **Prometheus JMX Exporter Configuration**
25
+ - **Location**: `plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml`
26
+ - **Purpose**: Export Kafka JMX metrics to Prometheus format
27
+ - **Metrics Exported**:
28
+ - Broker topic metrics (bytes in/out, messages in, request rate)
29
+ - Replica manager (under-replicated partitions, ISR shrinks/expands)
30
+ - Controller metrics (active controller, offline partitions, leader elections)
31
+ - Request metrics (produce/fetch latency)
32
+ - Log metrics (flush rate, flush latency)
33
+ - JVM metrics (heap, GC, threads, file descriptors)
34
+
35
+ #### 2. **Grafana Dashboards** (5 Dashboards)
36
+ - **Location**: `plugins/specweave-kafka/monitoring/grafana/dashboards/`
37
+ - **Dashboards**:
38
+ 1. **kafka-cluster-overview.json** - Cluster health and throughput
39
+ 2. **kafka-broker-metrics.json** - Per-broker performance
40
+ 3. **kafka-consumer-lag.json** - Consumer lag monitoring
41
+ 4. **kafka-topic-metrics.json** - Topic-level metrics
42
+ 5. **kafka-jvm-metrics.json** - JVM health (heap, GC, threads)
43
+
44
+ #### 3. **Grafana Provisioning**
45
+ - **Location**: `plugins/specweave-kafka/monitoring/grafana/provisioning/`
46
+ - **Files**:
47
+ - `dashboards/kafka.yml` - Dashboard provisioning config
48
+ - `datasources/prometheus.yml` - Prometheus datasource config
49
+
50
+ ## Setup Workflow 1: JMX Exporter (Self-Hosted Kafka)
51
+
52
+ For Kafka running on VMs or bare metal (non-Kubernetes).
53
+
54
+ ### Step 1: Download JMX Prometheus Agent
55
+
56
+ ```bash
57
+ # Download JMX Prometheus agent JAR
58
+ cd /opt
59
+ wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jar
60
+
61
+ # Copy JMX Exporter config
62
+ cp plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml /opt/kafka-jmx-exporter.yml
63
+ ```
64
+
65
+ ### Step 2: Configure Kafka Broker
66
+
67
+ Add JMX exporter to Kafka startup script:
68
+
69
+ ```bash
70
+ # Edit Kafka startup (e.g., /etc/systemd/system/kafka.service)
71
+ [Service]
72
+ Environment="KAFKA_OPTS=-javaagent:/opt/jmx_prometheus_javaagent-0.20.0.jar=7071:/opt/kafka-jmx-exporter.yml"
73
+ ```
74
+
75
+ Or add to `kafka-server-start.sh`:
76
+
77
+ ```bash
78
+ export KAFKA_OPTS="-javaagent:/opt/jmx_prometheus_javaagent-0.20.0.jar=7071:/opt/kafka-jmx-exporter.yml"
79
+ ```
80
+
81
+ ### Step 3: Restart Kafka and Verify
82
+
83
+ ```bash
84
+ # Restart Kafka broker
85
+ sudo systemctl restart kafka
86
+
87
+ # Verify JMX exporter is running (port 7071)
88
+ curl localhost:7071/metrics | grep kafka_server
89
+
90
+ # Expected output: kafka_server_broker_topic_metrics_bytesin_total{...} 12345
91
+ ```
92
+
93
+ ### Step 4: Configure Prometheus Scraping
94
+
95
+ Add Kafka brokers to Prometheus config:
96
+
97
+ ```yaml
98
+ # prometheus.yml
99
+ scrape_configs:
100
+ - job_name: 'kafka'
101
+ static_configs:
102
+ - targets:
103
+ - 'kafka-broker-1:7071'
104
+ - 'kafka-broker-2:7071'
105
+ - 'kafka-broker-3:7071'
106
+ scrape_interval: 30s
107
+ ```
108
+
109
+ ```bash
110
+ # Reload Prometheus
111
+ sudo systemctl reload prometheus
112
+
113
+ # OR send SIGHUP
114
+ kill -HUP $(pidof prometheus)
115
+
116
+ # Verify scraping
117
+ curl http://localhost:9090/api/v1/targets | jq '.data.activeTargets[] | select(.job=="kafka")'
118
+ ```
119
+
120
+ ## Setup Workflow 2: Strimzi (Kubernetes)
121
+
122
+ For Kafka running on Kubernetes with Strimzi Operator.
123
+
124
+ ### Step 1: Create JMX Exporter ConfigMap
125
+
126
+ ```bash
127
+ # Create ConfigMap from JMX exporter config
128
+ kubectl create configmap kafka-metrics \
129
+ --from-file=kafka-metrics-config.yml=plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml \
130
+ -n kafka
131
+ ```
132
+
133
+ ### Step 2: Configure Kafka CR with Metrics
134
+
135
+ ```yaml
136
+ # kafka-cluster.yaml (add metricsConfig section)
137
+ apiVersion: kafka.strimzi.io/v1beta2
138
+ kind: Kafka
139
+ metadata:
140
+ name: my-kafka-cluster
141
+ namespace: kafka
142
+ spec:
143
+ kafka:
144
+ version: 3.7.0
145
+ replicas: 3
146
+
147
+ # ... other config ...
148
+
149
+ metricsConfig:
150
+ type: jmxPrometheusExporter
151
+ valueFrom:
152
+ configMapKeyRef:
153
+ name: kafka-metrics
154
+ key: kafka-metrics-config.yml
155
+ ```
156
+
157
+ ```bash
158
+ # Apply updated Kafka CR
159
+ kubectl apply -f kafka-cluster.yaml
160
+
161
+ # Verify metrics endpoint (wait for rolling restart)
162
+ kubectl exec -it kafka-my-kafka-cluster-0 -n kafka -- curl localhost:9404/metrics | grep kafka_server
163
+ ```
164
+
165
+ ### Step 3: Install Prometheus Operator (if not installed)
166
+
167
+ ```bash
168
+ # Add Prometheus Community Helm repo
169
+ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
170
+ helm repo update
171
+
172
+ # Install kube-prometheus-stack (Prometheus + Grafana + Alertmanager)
173
+ helm install prometheus prometheus-community/kube-prometheus-stack \
174
+ --namespace monitoring \
175
+ --create-namespace \
176
+ --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false \
177
+ --set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false
178
+ ```
179
+
180
+ ### Step 4: Create PodMonitor for Kafka
181
+
182
+ ```yaml
183
+ # kafka-podmonitor.yaml
184
+ apiVersion: monitoring.coreos.com/v1
185
+ kind: PodMonitor
186
+ metadata:
187
+ name: kafka-metrics
188
+ namespace: kafka
189
+ labels:
190
+ app: strimzi
191
+ spec:
192
+ selector:
193
+ matchLabels:
194
+ strimzi.io/kind: Kafka
195
+ podMetricsEndpoints:
196
+ - port: tcp-prometheus
197
+ interval: 30s
198
+ ```
199
+
200
+ ```bash
201
+ # Apply PodMonitor
202
+ kubectl apply -f kafka-podmonitor.yaml
203
+
204
+ # Verify Prometheus is scraping Kafka
205
+ kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090
206
+ # Open: http://localhost:9090/targets
207
+ # Should see kafka-metrics/* targets
208
+ ```
209
+
210
+ ## Setup Workflow 3: Grafana Dashboards
211
+
212
+ ### Installation (Docker Compose)
213
+
214
+ If using Docker Compose for local development:
215
+
216
+ ```yaml
217
+ # docker-compose.yml (add to existing Kafka setup)
218
+ version: '3.8'
219
+ services:
220
+ # ... Kafka services ...
221
+
222
+ prometheus:
223
+ image: prom/prometheus:v2.48.0
224
+ ports:
225
+ - "9090:9090"
226
+ volumes:
227
+ - ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
228
+ - prometheus-data:/prometheus
229
+ command:
230
+ - '--config.file=/etc/prometheus/prometheus.yml'
231
+ - '--storage.tsdb.path=/prometheus'
232
+
233
+ grafana:
234
+ image: grafana/grafana:10.2.0
235
+ ports:
236
+ - "3000:3000"
237
+ environment:
238
+ - GF_SECURITY_ADMIN_PASSWORD=admin
239
+ volumes:
240
+ - ./monitoring/grafana/provisioning:/etc/grafana/provisioning
241
+ - ./monitoring/grafana/dashboards:/var/lib/grafana/dashboards
242
+ - grafana-data:/var/lib/grafana
243
+
244
+ volumes:
245
+ prometheus-data:
246
+ grafana-data:
247
+ ```
248
+
249
+ ```bash
250
+ # Start monitoring stack
251
+ docker-compose up -d prometheus grafana
252
+
253
+ # Access Grafana
254
+ # URL: http://localhost:3000
255
+ # Username: admin
256
+ # Password: admin
257
+ ```
258
+
259
+ ### Installation (Kubernetes)
260
+
261
+ Dashboards are auto-provisioned if using kube-prometheus-stack:
262
+
263
+ ```bash
264
+ # Create ConfigMaps for each dashboard
265
+ for dashboard in plugins/specweave-kafka/monitoring/grafana/dashboards/*.json; do
266
+ name=$(basename "$dashboard" .json)
267
+ kubectl create configmap "kafka-dashboard-$name" \
268
+ --from-file="$dashboard" \
269
+ -n monitoring \
270
+ --dry-run=client -o yaml | kubectl apply -f -
271
+ done
272
+
273
+ # Label ConfigMaps for Grafana auto-discovery
274
+ kubectl label configmap -n monitoring kafka-dashboard-* grafana_dashboard=1
275
+
276
+ # Grafana will auto-import dashboards (wait 30-60 seconds)
277
+
278
+ # Access Grafana
279
+ kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80
280
+ # URL: http://localhost:3000
281
+ # Username: admin
282
+ # Password: prom-operator (default kube-prometheus-stack password)
283
+ ```
284
+
285
+ ### Manual Dashboard Import
286
+
287
+ If auto-provisioning doesn't work:
288
+
289
+ ```bash
290
+ # 1. Access Grafana UI
291
+ # 2. Go to: Dashboards → Import
292
+ # 3. Upload JSON files from:
293
+ # plugins/specweave-kafka/monitoring/grafana/dashboards/
294
+
295
+ # Or use Grafana API
296
+ for dashboard in plugins/specweave-kafka/monitoring/grafana/dashboards/*.json; do
297
+ curl -X POST http://admin:admin@localhost:3000/api/dashboards/db \
298
+ -H "Content-Type: application/json" \
299
+ -d @"$dashboard"
300
+ done
301
+ ```
302
+
303
+ ## Dashboard Overview
304
+
305
+ ### 1. **Kafka Cluster Overview** (`kafka-cluster-overview.json`)
306
+
307
+ **Purpose**: High-level cluster health
308
+
309
+ **Key Metrics**:
310
+ - Active Controller Count (should be exactly 1)
311
+ - Under-Replicated Partitions (should be 0) ⚠️ CRITICAL
312
+ - Offline Partitions Count (should be 0) ⚠️ CRITICAL
313
+ - Unclean Leader Elections (should be 0)
314
+ - Cluster Throughput (bytes in/out per second)
315
+ - Request Rate (produce, fetch requests per second)
316
+ - ISR Changes (shrinks/expands)
317
+ - Leader Election Rate
318
+
319
+ **Use When**: Checking overall cluster health
320
+
321
+ ### 2. **Kafka Broker Metrics** (`kafka-broker-metrics.json`)
322
+
323
+ **Purpose**: Per-broker performance
324
+
325
+ **Key Metrics**:
326
+ - Broker CPU Usage (% utilization)
327
+ - Broker Heap Memory Usage
328
+ - Broker Network Throughput (bytes in/out)
329
+ - Request Handler Idle Percentage (low = CPU saturation)
330
+ - File Descriptors (open vs max)
331
+ - Log Flush Latency (p50, p99)
332
+ - JVM GC Collection Count/Time
333
+
334
+ **Use When**: Investigating broker performance issues
335
+
336
+ ### 3. **Kafka Consumer Lag** (`kafka-consumer-lag.json`)
337
+
338
+ **Purpose**: Consumer lag monitoring
339
+
340
+ **Key Metrics**:
341
+ - Consumer Lag per Topic/Partition
342
+ - Total Lag per Consumer Group
343
+ - Offset Commit Rate
344
+ - Current Consumer Offset
345
+ - Log End Offset (producer offset)
346
+ - Consumer Group Members
347
+
348
+ **Use When**: Troubleshooting slow consumers or lag spikes
349
+
350
+ ### 4. **Kafka Topic Metrics** (`kafka-topic-metrics.json`)
351
+
352
+ **Purpose**: Topic-level metrics
353
+
354
+ **Key Metrics**:
355
+ - Messages Produced per Topic
356
+ - Bytes per Topic (in/out)
357
+ - Partition Count per Topic
358
+ - Replication Factor
359
+ - In-Sync Replicas
360
+ - Log Size per Partition
361
+ - Current Offset per Partition
362
+ - Partition Leader Distribution
363
+
364
+ **Use When**: Analyzing topic throughput and hotspots
365
+
366
+ ### 5. **Kafka JVM Metrics** (`kafka-jvm-metrics.json`)
367
+
368
+ **Purpose**: JVM health monitoring
369
+
370
+ **Key Metrics**:
371
+ - Heap Memory Usage (used vs max)
372
+ - Heap Utilization Percentage
373
+ - GC Collection Rate (collections/sec)
374
+ - GC Collection Time (ms/sec)
375
+ - JVM Thread Count
376
+ - Heap Memory by Pool (young gen, old gen, survivor)
377
+ - Off-Heap Memory Usage (metaspace, code cache)
378
+ - GC Pause Time Percentiles (p50, p95, p99)
379
+
380
+ **Use When**: Investigating memory leaks or GC pauses
381
+
382
+ ## Critical Alerts Configuration
383
+
384
+ Create Prometheus alerting rules for critical Kafka metrics:
385
+
386
+ ```yaml
387
+ # kafka-alerts.yml
388
+ apiVersion: monitoring.coreos.com/v1
389
+ kind: PrometheusRule
390
+ metadata:
391
+ name: kafka-alerts
392
+ namespace: monitoring
393
+ spec:
394
+ groups:
395
+ - name: kafka.rules
396
+ interval: 30s
397
+ rules:
398
+ # CRITICAL: Under-Replicated Partitions
399
+ - alert: KafkaUnderReplicatedPartitions
400
+ expr: sum(kafka_server_replica_manager_under_replicated_partitions) > 0
401
+ for: 5m
402
+ labels:
403
+ severity: critical
404
+ annotations:
405
+ summary: "Kafka has under-replicated partitions"
406
+ description: "{{ $value }} partitions are under-replicated. Data loss risk!"
407
+
408
+ # CRITICAL: Offline Partitions
409
+ - alert: KafkaOfflinePartitions
410
+ expr: kafka_controller_offline_partitions_count > 0
411
+ for: 1m
412
+ labels:
413
+ severity: critical
414
+ annotations:
415
+ summary: "Kafka has offline partitions"
416
+ description: "{{ $value }} partitions are offline. Service degradation!"
417
+
418
+ # CRITICAL: No Active Controller
419
+ - alert: KafkaNoActiveController
420
+ expr: kafka_controller_active_controller_count == 0
421
+ for: 1m
422
+ labels:
423
+ severity: critical
424
+ annotations:
425
+ summary: "No active Kafka controller"
426
+ description: "Cluster has no active controller. Cannot perform administrative operations!"
427
+
428
+ # WARNING: High Consumer Lag
429
+ - alert: KafkaConsumerLagHigh
430
+ expr: sum by (consumergroup) (kafka_consumergroup_lag) > 10000
431
+ for: 10m
432
+ labels:
433
+ severity: warning
434
+ annotations:
435
+ summary: "Consumer group {{ $labels.consumergroup }} has high lag"
436
+ description: "Lag is {{ $value }} messages. Consumers may be slow."
437
+
438
+ # WARNING: High CPU Usage
439
+ - alert: KafkaBrokerHighCPU
440
+ expr: os_process_cpu_load{job="kafka"} > 0.8
441
+ for: 5m
442
+ labels:
443
+ severity: warning
444
+ annotations:
445
+ summary: "Broker {{ $labels.instance }} has high CPU usage"
446
+ description: "CPU usage is {{ $value | humanizePercentage }}. Consider scaling."
447
+
448
+ # WARNING: Low Heap Memory
449
+ - alert: KafkaBrokerLowHeapMemory
450
+ expr: jvm_memory_heap_used_bytes{job="kafka"} / jvm_memory_heap_max_bytes{job="kafka"} > 0.9
451
+ for: 5m
452
+ labels:
453
+ severity: warning
454
+ annotations:
455
+ summary: "Broker {{ $labels.instance }} has low heap memory"
456
+ description: "Heap usage is {{ $value | humanizePercentage }}. Risk of OOM!"
457
+
458
+ # WARNING: High GC Time
459
+ - alert: KafkaBrokerHighGCTime
460
+ expr: rate(jvm_gc_collection_time_ms_total{job="kafka"}[5m]) > 500
461
+ for: 5m
462
+ labels:
463
+ severity: warning
464
+ annotations:
465
+ summary: "Broker {{ $labels.instance }} spending too much time in GC"
466
+ description: "GC time is {{ $value }}ms/sec. Application pauses likely."
467
+ ```
468
+
469
+ ```bash
470
+ # Apply alerts (Kubernetes)
471
+ kubectl apply -f kafka-alerts.yml
472
+
473
+ # Verify alerts loaded
474
+ kubectl get prometheusrules -n monitoring
475
+ ```
476
+
477
+ ## Troubleshooting
478
+
479
+ ### "Prometheus not scraping Kafka metrics"
480
+
481
+ **Symptoms**: No Kafka metrics in Prometheus
482
+
483
+ **Fix**:
484
+ ```bash
485
+ # 1. Verify JMX exporter is running
486
+ curl http://kafka-broker:7071/metrics
487
+
488
+ # 2. Check Prometheus targets
489
+ curl http://localhost:9090/api/v1/targets | jq '.data.activeTargets[] | select(.job=="kafka")'
490
+
491
+ # 3. Check Prometheus logs
492
+ kubectl logs -n monitoring prometheus-kube-prometheus-prometheus-0
493
+
494
+ # Common issues:
495
+ # - Firewall blocking port 7071
496
+ # - Incorrect scrape config
497
+ # - Kafka broker not running
498
+ ```
499
+
500
+ ### "Grafana dashboards not loading"
501
+
502
+ **Symptoms**: Dashboards show "No data"
503
+
504
+ **Fix**:
505
+ ```bash
506
+ # 1. Verify Prometheus datasource
507
+ # Grafana UI → Configuration → Data Sources → Prometheus → Test
508
+
509
+ # 2. Check if Kafka metrics exist in Prometheus
510
+ # Prometheus UI → Graph → Enter: kafka_server_broker_topic_metrics_bytesin_total
511
+
512
+ # 3. Verify dashboard queries match your Prometheus job name
513
+ # Dashboard panels use job="kafka" by default
514
+ # If your job name is different, update dashboard JSON
515
+ ```
516
+
517
+ ### "Consumer lag metrics missing"
518
+
519
+ **Symptoms**: Consumer lag dashboard empty
520
+
521
+ **Fix**:
522
+ Consumer lag metrics require **Kafka Exporter** (separate from JMX Exporter):
523
+
524
+ ```bash
525
+ # Install Kafka Exporter (Kubernetes)
526
+ helm install kafka-exporter prometheus-community/prometheus-kafka-exporter \
527
+ --namespace monitoring \
528
+ --set kafkaServer={kafka-bootstrap:9092}
529
+
530
+ # Or run as Docker container
531
+ docker run -d -p 9308:9308 \
532
+ danielqsj/kafka-exporter \
533
+ --kafka.server=kafka:9092 \
534
+ --web.listen-address=:9308
535
+
536
+ # Add to Prometheus scrape config
537
+ scrape_configs:
538
+ - job_name: 'kafka-exporter'
539
+ static_configs:
540
+ - targets: ['kafka-exporter:9308']
541
+ ```
542
+
543
+ ## Integration with Other Skills
544
+
545
+ - **kafka-iac-deployment**: Set up monitoring during Terraform deployment
546
+ - **kafka-kubernetes**: Configure monitoring for Strimzi Kafka on K8s
547
+ - **kafka-architecture**: Use cluster sizing metrics to validate capacity planning
548
+ - **kafka-cli-tools**: Use kcat to generate test traffic and verify metrics
549
+
550
+ ## Quick Reference Commands
551
+
552
+ ```bash
553
+ # Check JMX exporter metrics
554
+ curl http://localhost:7071/metrics | grep -E "(kafka_server|kafka_controller)"
555
+
556
+ # Prometheus query examples
557
+ curl -g 'http://localhost:9090/api/v1/query?query=kafka_server_replica_manager_under_replicated_partitions'
558
+
559
+ # Grafana dashboard export
560
+ curl http://admin:admin@localhost:3000/api/dashboards/uid/kafka-cluster-overview | jq .dashboard > backup.json
561
+
562
+ # Reload Prometheus config
563
+ kill -HUP $(pidof prometheus)
564
+
565
+ # Check Prometheus targets
566
+ curl http://localhost:9090/api/v1/targets | jq '.data.activeTargets[] | select(.job=="kafka")'
567
+ ```
568
+
569
+ ---
570
+
571
+ **Next Steps After Monitoring Setup**:
572
+ 1. Review all 5 Grafana dashboards to familiarize yourself with metrics
573
+ 2. Set up alerting (Slack, PagerDuty, email)
574
+ 3. Create runbooks for critical alerts (under-replicated partitions, offline partitions, no controller)
575
+ 4. Monitor for 7 days to establish baseline metrics
576
+ 5. Tune JVM settings based on GC metrics