specweave 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/CLAUDE.md +229 -1817
  2. package/README.md +68 -0
  3. package/bin/specweave.js +62 -6
  4. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  5. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
  6. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  7. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
  8. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
  9. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
  10. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
  11. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  12. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
  13. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  14. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
  15. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
  16. package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
  17. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
  18. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
  19. package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  20. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +7 -0
  21. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -1
  22. package/dist/plugins/specweave-github/lib/epic-content-builder.js +42 -0
  23. package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -1
  24. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
  25. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  26. package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
  27. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  28. package/dist/plugins/specweave-github/lib/github-epic-sync.js +1 -1
  29. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
  30. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
  31. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
  32. package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
  33. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
  34. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  35. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
  36. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  37. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
  38. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
  39. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
  40. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
  41. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
  42. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
  43. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
  44. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
  45. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
  46. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
  47. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
  48. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
  49. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +8 -6
  50. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -1
  51. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +78 -117
  52. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -1
  53. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  54. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  55. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  56. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  57. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  58. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  59. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  60. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  61. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  62. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  63. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  64. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  65. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  66. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  67. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  68. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  69. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  70. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  71. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  72. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  73. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  74. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  75. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  76. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  77. package/dist/src/cli/commands/import-docs.js +4 -4
  78. package/dist/src/cli/commands/import-docs.js.map +1 -1
  79. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  80. package/dist/src/cli/commands/init-multiproject.js +17 -18
  81. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  82. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  83. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  84. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  85. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  86. package/dist/src/cli/commands/switch-project.js +9 -26
  87. package/dist/src/cli/commands/switch-project.js.map +1 -1
  88. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  89. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  90. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  91. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  92. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  93. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  94. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  95. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  96. package/dist/src/core/increment/active-increment-manager.js +113 -46
  97. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  98. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  99. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  100. package/dist/src/core/increment/conflict-resolver.js +219 -0
  101. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  102. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  103. package/dist/src/core/increment/discipline-checker.js +7 -1
  104. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  105. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  106. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  107. package/dist/src/core/increment/duplicate-detector.js +276 -0
  108. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  109. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  110. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  111. package/dist/src/core/increment/increment-archiver.js +368 -0
  112. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  113. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  114. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  115. package/dist/src/core/increment/increment-reopener.js +390 -0
  116. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  117. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  118. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  119. package/dist/src/core/increment/metadata-manager.js +143 -5
  120. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  121. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  122. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  123. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  124. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  125. package/dist/src/core/increment/types.d.ts +1 -0
  126. package/dist/src/core/increment/types.d.ts.map +1 -1
  127. package/dist/src/core/increment-utils.d.ts +112 -0
  128. package/dist/src/core/increment-utils.d.ts.map +1 -0
  129. package/dist/src/core/increment-utils.js +210 -0
  130. package/dist/src/core/increment-utils.js.map +1 -0
  131. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  132. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  133. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  134. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  135. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  136. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  137. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  138. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  139. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  140. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  141. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  142. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  143. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  144. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  145. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  146. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  147. package/dist/src/core/living-docs/index.d.ts +6 -0
  148. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  149. package/dist/src/core/living-docs/index.js +6 -0
  150. package/dist/src/core/living-docs/index.js.map +1 -1
  151. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  152. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  153. package/dist/src/core/living-docs/project-detector.js +35 -1
  154. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  155. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  156. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  157. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  158. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  159. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  160. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  161. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  162. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  163. package/dist/src/core/living-docs/types.d.ts +143 -0
  164. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  165. package/dist/src/core/project-manager.d.ts +2 -17
  166. package/dist/src/core/project-manager.d.ts.map +1 -1
  167. package/dist/src/core/project-manager.js +68 -48
  168. package/dist/src/core/project-manager.js.map +1 -1
  169. package/dist/src/core/spec-content-sync.d.ts +1 -1
  170. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  171. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  172. package/dist/src/core/sync/enhanced-content-builder.js +2 -1
  173. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  174. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  175. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  176. package/dist/src/core/sync/performance-optimizer.js +220 -0
  177. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  178. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  179. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  180. package/dist/src/core/sync/retry-handler.js +196 -0
  181. package/dist/src/core/sync/retry-handler.js.map +1 -0
  182. package/dist/src/core/types/config.d.ts +94 -0
  183. package/dist/src/core/types/config.d.ts.map +1 -1
  184. package/dist/src/core/types/config.js +16 -0
  185. package/dist/src/core/types/config.js.map +1 -1
  186. package/dist/src/core/types/increment-metadata.d.ts +6 -0
  187. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  188. package/dist/src/core/types/increment-metadata.js +10 -1
  189. package/dist/src/core/types/increment-metadata.js.map +1 -1
  190. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  191. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  192. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  193. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  194. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  195. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  196. package/package.json +1 -1
  197. package/plugins/specweave/COMMANDS.md +13 -4
  198. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  199. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  200. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  201. package/plugins/specweave/commands/specweave-archive.md +363 -0
  202. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  203. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  204. package/plugins/specweave/commands/specweave-increment.md +4 -3
  205. package/plugins/specweave/commands/specweave-progress.md +176 -27
  206. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  207. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  208. package/plugins/specweave/commands/specweave-restore.md +309 -0
  209. package/plugins/specweave/commands/specweave-resume.md +51 -23
  210. package/plugins/specweave/commands/specweave-status.md +41 -7
  211. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  212. package/plugins/specweave/hooks/hooks.json +4 -0
  213. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  214. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  215. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  216. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  217. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  218. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  219. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  220. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  221. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  222. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  223. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  224. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  225. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  226. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  227. package/plugins/specweave-confluent/README.md +375 -0
  228. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  229. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  230. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  231. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  232. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  233. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  234. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  235. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  236. package/plugins/specweave-github/hooks/post-task-completion.sh +10 -9
  237. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  238. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  239. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  240. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  241. package/plugins/specweave-github/lib/epic-content-builder.js +38 -0
  242. package/plugins/specweave-github/lib/epic-content-builder.ts +59 -0
  243. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  244. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  245. package/plugins/specweave-github/lib/github-epic-sync.ts +1 -1
  246. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  247. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  248. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  249. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  250. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  251. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  252. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  253. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  254. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  255. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  256. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  257. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
  258. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  259. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  260. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  261. package/plugins/specweave-kafka/README.md +242 -0
  262. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  263. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  264. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  265. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  266. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  267. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  268. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  269. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  270. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  271. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  272. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  273. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  274. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  275. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  276. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  277. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  278. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  279. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  280. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  281. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  282. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  283. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  284. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  285. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  286. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  287. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  288. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  289. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  290. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  291. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  292. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  293. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  294. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  295. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  296. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  297. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  298. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  299. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  300. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  301. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  302. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  303. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  304. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  305. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  306. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  307. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  308. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  309. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  310. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  311. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  312. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  313. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  314. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  315. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  316. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  317. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  318. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  319. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  320. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  321. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  322. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  323. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  324. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  325. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  326. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  327. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  328. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  329. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  330. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  331. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  332. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  333. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  334. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  335. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  336. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  337. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  338. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  339. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  340. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  341. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  342. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  343. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  344. package/plugins/specweave-kafka/package.json +41 -0
  345. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  346. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  347. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  348. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  349. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  350. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  351. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  352. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  353. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  354. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  355. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  356. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  357. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  358. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  359. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  360. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  361. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  362. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  363. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  364. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  365. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  366. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  367. package/plugins/specweave-kafka/tsconfig.json +21 -0
  368. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  369. package/plugins/specweave-kafka-streams/README.md +310 -0
  370. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  371. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  372. package/plugins/specweave-n8n/README.md +354 -0
  373. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  374. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  375. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  376. package/src/templates/AGENTS.md.template +601 -7
  377. package/src/templates/CLAUDE.md.template +188 -88
  378. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  379. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  380. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  381. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  382. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  383. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  384. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,453 @@
1
+ ---
2
+ name: confluent-kafka-connect
3
+ description: Kafka Connect integration expert. Covers source and sink connectors, JDBC, Elasticsearch, S3, Debezium CDC, SMT (Single Message Transforms), connector configuration, and data pipeline patterns. Activates for kafka connect, connectors, source connector, sink connector, jdbc connector, debezium, smt, data pipeline, cdc.
4
+ ---
5
+
6
+ # Confluent Kafka Connect Skill
7
+
8
+ Expert knowledge of Kafka Connect for building data pipelines with source and sink connectors.
9
+
10
+ ## What I Know
11
+
12
+ ### Connector Types
13
+
14
+ **Source Connectors** (External System → Kafka):
15
+ - JDBC Source: Databases → Kafka
16
+ - Debezium: CDC (MySQL, PostgreSQL, MongoDB) → Kafka
17
+ - S3 Source: AWS S3 files → Kafka
18
+ - File Source: Local files → Kafka
19
+
20
+ **Sink Connectors** (Kafka → External System):
21
+ - JDBC Sink: Kafka → Databases
22
+ - Elasticsearch Sink: Kafka → Elasticsearch
23
+ - S3 Sink: Kafka → AWS S3
24
+ - HDFS Sink: Kafka → Hadoop HDFS
25
+
26
+ **Single Message Transforms (SMTs)**:
27
+ - Field operations: Insert, Mask, Replace, TimestampConverter
28
+ - Routing: RegexRouter, TimestampRouter
29
+ - Filtering: Filter, Predicates
30
+
31
+ ## When to Use This Skill
32
+
33
+ Activate me when you need help with:
34
+ - Connector setup ("Configure JDBC connector")
35
+ - CDC patterns ("Debezium MySQL CDC")
36
+ - Data pipelines ("Stream database changes to Kafka")
37
+ - SMT transforms ("Mask sensitive fields")
38
+ - Connector troubleshooting ("Connector task failed")
39
+
40
+ ## Common Patterns
41
+
42
+ ### Pattern 1: JDBC Source (Database → Kafka)
43
+
44
+ **Use Case**: Stream database table changes to Kafka
45
+
46
+ **Configuration**:
47
+ ```json
48
+ {
49
+ "name": "jdbc-source-users",
50
+ "config": {
51
+ "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
52
+ "tasks.max": "1",
53
+ "connection.url": "jdbc:postgresql://localhost:5432/mydb",
54
+ "connection.user": "postgres",
55
+ "connection.password": "password",
56
+ "mode": "incrementing",
57
+ "incrementing.column.name": "id",
58
+ "topic.prefix": "postgres-",
59
+ "table.whitelist": "users,orders",
60
+ "poll.interval.ms": "5000"
61
+ }
62
+ }
63
+ ```
64
+
65
+ **Modes**:
66
+ - `incrementing`: Track by auto-increment ID
67
+ - `timestamp`: Track by timestamp column
68
+ - `timestamp+incrementing`: Both (most reliable)
69
+
70
+ ### Pattern 2: Debezium CDC (MySQL → Kafka)
71
+
72
+ **Use Case**: Capture all database changes (INSERT/UPDATE/DELETE)
73
+
74
+ **Configuration**:
75
+ ```json
76
+ {
77
+ "name": "debezium-mysql-cdc",
78
+ "config": {
79
+ "connector.class": "io.debezium.connector.mysql.MySqlConnector",
80
+ "tasks.max": "1",
81
+ "database.hostname": "localhost",
82
+ "database.port": "3306",
83
+ "database.user": "debezium",
84
+ "database.password": "password",
85
+ "database.server.id": "1",
86
+ "database.server.name": "mysql",
87
+ "database.include.list": "mydb",
88
+ "table.include.list": "mydb.users,mydb.orders",
89
+ "schema.history.internal.kafka.bootstrap.servers": "localhost:9092",
90
+ "schema.history.internal.kafka.topic": "schema-changes.mydb"
91
+ }
92
+ }
93
+ ```
94
+
95
+ **Output Format** (Debezium Envelope):
96
+ ```json
97
+ {
98
+ "before": null,
99
+ "after": {
100
+ "id": 1,
101
+ "name": "John Doe",
102
+ "email": "john@example.com"
103
+ },
104
+ "source": {
105
+ "version": "1.9.0",
106
+ "connector": "mysql",
107
+ "name": "mysql",
108
+ "ts_ms": 1620000000000,
109
+ "snapshot": "false",
110
+ "db": "mydb",
111
+ "table": "users",
112
+ "server_id": 1,
113
+ "gtid": null,
114
+ "file": "mysql-bin.000001",
115
+ "pos": 12345,
116
+ "row": 0,
117
+ "thread": null,
118
+ "query": null
119
+ },
120
+ "op": "c", // c=CREATE, u=UPDATE, d=DELETE, r=READ
121
+ "ts_ms": 1620000000000
122
+ }
123
+ ```
124
+
125
+ ### Pattern 3: JDBC Sink (Kafka → Database)
126
+
127
+ **Use Case**: Write Kafka events to PostgreSQL
128
+
129
+ **Configuration**:
130
+ ```json
131
+ {
132
+ "name": "jdbc-sink-enriched-orders",
133
+ "config": {
134
+ "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
135
+ "tasks.max": "3",
136
+ "topics": "enriched-orders",
137
+ "connection.url": "jdbc:postgresql://localhost:5432/analytics",
138
+ "connection.user": "postgres",
139
+ "connection.password": "password",
140
+ "auto.create": "true",
141
+ "auto.evolve": "true",
142
+ "insert.mode": "upsert",
143
+ "pk.mode": "record_value",
144
+ "pk.fields": "order_id",
145
+ "table.name.format": "orders_${topic}"
146
+ }
147
+ }
148
+ ```
149
+
150
+ **Insert Modes**:
151
+ - `insert`: Append only (fails on duplicate)
152
+ - `update`: Update only (requires PK)
153
+ - `upsert`: INSERT or UPDATE (recommended)
154
+
155
+ ### Pattern 4: S3 Sink (Kafka → AWS S3)
156
+
157
+ **Use Case**: Archive Kafka topics to S3
158
+
159
+ **Configuration**:
160
+ ```json
161
+ {
162
+ "name": "s3-sink-events",
163
+ "config": {
164
+ "connector.class": "io.confluent.connect.s3.S3SinkConnector",
165
+ "tasks.max": "3",
166
+ "topics": "user-events,order-events",
167
+ "s3.region": "us-east-1",
168
+ "s3.bucket.name": "my-kafka-archive",
169
+ "s3.part.size": "5242880",
170
+ "flush.size": "1000",
171
+ "rotate.interval.ms": "60000",
172
+ "rotate.schedule.interval.ms": "3600000",
173
+ "timezone": "UTC",
174
+ "format.class": "io.confluent.connect.s3.format.json.JsonFormat",
175
+ "partitioner.class": "io.confluent.connect.storage.partitioner.TimeBasedPartitioner",
176
+ "path.format": "'year'=YYYY/'month'=MM/'day'=dd/'hour'=HH",
177
+ "locale": "US",
178
+ "timestamp.extractor": "Record"
179
+ }
180
+ }
181
+ ```
182
+
183
+ **Partitioning** (S3 folder structure):
184
+ ```
185
+ s3://my-kafka-archive/
186
+ topics/user-events/year=2025/month=01/day=15/hour=10/
187
+ user-events+0+0000000000.json
188
+ user-events+0+0000001000.json
189
+ topics/order-events/year=2025/month=01/day=15/hour=10/
190
+ order-events+0+0000000000.json
191
+ ```
192
+
193
+ ### Pattern 5: Elasticsearch Sink (Kafka → Elasticsearch)
194
+
195
+ **Use Case**: Index Kafka events for search
196
+
197
+ **Configuration**:
198
+ ```json
199
+ {
200
+ "name": "elasticsearch-sink-logs",
201
+ "config": {
202
+ "connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
203
+ "tasks.max": "3",
204
+ "topics": "application-logs",
205
+ "connection.url": "http://localhost:9200",
206
+ "connection.username": "elastic",
207
+ "connection.password": "password",
208
+ "key.ignore": "true",
209
+ "schema.ignore": "true",
210
+ "type.name": "_doc",
211
+ "index.write.wait_for_active_shards": "1"
212
+ }
213
+ }
214
+ ```
215
+
216
+ ## Single Message Transforms (SMTs)
217
+
218
+ ### Transform 1: Mask Sensitive Fields
219
+
220
+ **Use Case**: Hide email/phone in Kafka topics
221
+
222
+ **Configuration**:
223
+ ```json
224
+ {
225
+ "transforms": "maskEmail",
226
+ "transforms.maskEmail.type": "org.apache.kafka.connect.transforms.MaskField$Value",
227
+ "transforms.maskEmail.fields": "email,phone"
228
+ }
229
+ ```
230
+
231
+ **Before**:
232
+ ```json
233
+ {"id": 1, "name": "John", "email": "john@example.com", "phone": "555-1234"}
234
+ ```
235
+
236
+ **After**:
237
+ ```json
238
+ {"id": 1, "name": "John", "email": null, "phone": null}
239
+ ```
240
+
241
+ ### Transform 2: Add Timestamp
242
+
243
+ **Use Case**: Add processing timestamp to all messages
244
+
245
+ **Configuration**:
246
+ ```json
247
+ {
248
+ "transforms": "insertTimestamp",
249
+ "transforms.insertTimestamp.type": "org.apache.kafka.connect.transforms.InsertField$Value",
250
+ "transforms.insertTimestamp.timestamp.field": "processed_at"
251
+ }
252
+ ```
253
+
254
+ ### Transform 3: Route by Field Value
255
+
256
+ **Use Case**: Route high-value orders to separate topic
257
+
258
+ **Configuration**:
259
+ ```json
260
+ {
261
+ "transforms": "routeByValue",
262
+ "transforms.routeByValue.type": "org.apache.kafka.connect.transforms.RegexRouter",
263
+ "transforms.routeByValue.regex": "(.*)",
264
+ "transforms.routeByValue.replacement": "$1-high-value",
265
+ "transforms.routeByValue.predicate": "isHighValue",
266
+ "predicates": "isHighValue",
267
+ "predicates.isHighValue.type": "org.apache.kafka.connect.transforms.predicates.TopicNameMatches",
268
+ "predicates.isHighValue.pattern": "orders"
269
+ }
270
+ ```
271
+
272
+ ### Transform 4: Flatten Nested JSON
273
+
274
+ **Use Case**: Flatten nested structures for JDBC sink
275
+
276
+ **Configuration**:
277
+ ```json
278
+ {
279
+ "transforms": "flatten",
280
+ "transforms.flatten.type": "org.apache.kafka.connect.transforms.Flatten$Value",
281
+ "transforms.flatten.delimiter": "_"
282
+ }
283
+ ```
284
+
285
+ **Before**:
286
+ ```json
287
+ {
288
+ "user": {
289
+ "id": 1,
290
+ "profile": {
291
+ "name": "John",
292
+ "email": "john@example.com"
293
+ }
294
+ }
295
+ }
296
+ ```
297
+
298
+ **After**:
299
+ ```json
300
+ {
301
+ "user_id": 1,
302
+ "user_profile_name": "John",
303
+ "user_profile_email": "john@example.com"
304
+ }
305
+ ```
306
+
307
+ ## Best Practices
308
+
309
+ ### 1. Use Idempotent Connectors
310
+
311
+ ✅ **DO**:
312
+ ```json
313
+ // JDBC Sink with upsert mode
314
+ {
315
+ "insert.mode": "upsert",
316
+ "pk.mode": "record_value",
317
+ "pk.fields": "id"
318
+ }
319
+ ```
320
+
321
+ ❌ **DON'T**:
322
+ ```json
323
+ // WRONG: insert mode (duplicates on restart!)
324
+ {
325
+ "insert.mode": "insert"
326
+ }
327
+ ```
328
+
329
+ ### 2. Monitor Connector Status
330
+
331
+ ```bash
332
+ # Check connector status
333
+ curl http://localhost:8083/connectors/jdbc-source-users/status
334
+
335
+ # Check task status
336
+ curl http://localhost:8083/connectors/jdbc-source-users/tasks/0/status
337
+ ```
338
+
339
+ ### 3. Use Schema Registry
340
+
341
+ ✅ **DO**:
342
+ ```json
343
+ {
344
+ "value.converter": "io.confluent.connect.avro.AvroConverter",
345
+ "value.converter.schema.registry.url": "http://localhost:8081"
346
+ }
347
+ ```
348
+
349
+ ### 4. Configure Error Handling
350
+
351
+ ```json
352
+ {
353
+ "errors.tolerance": "all",
354
+ "errors.log.enable": "true",
355
+ "errors.log.include.messages": "true",
356
+ "errors.deadletterqueue.topic.name": "dlq-jdbc-sink",
357
+ "errors.deadletterqueue.context.headers.enable": "true"
358
+ }
359
+ ```
360
+
361
+ ## Connector Management
362
+
363
+ ### Deploy Connector
364
+
365
+ ```bash
366
+ # Create connector via REST API
367
+ curl -X POST http://localhost:8083/connectors \
368
+ -H "Content-Type: application/json" \
369
+ -d @jdbc-source.json
370
+
371
+ # Update connector
372
+ curl -X PUT http://localhost:8083/connectors/jdbc-source-users/config \
373
+ -H "Content-Type: application/json" \
374
+ -d @jdbc-source.json
375
+ ```
376
+
377
+ ### Monitor Connectors
378
+
379
+ ```bash
380
+ # List all connectors
381
+ curl http://localhost:8083/connectors
382
+
383
+ # Get connector info
384
+ curl http://localhost:8083/connectors/jdbc-source-users
385
+
386
+ # Get connector status
387
+ curl http://localhost:8083/connectors/jdbc-source-users/status
388
+
389
+ # Get connector tasks
390
+ curl http://localhost:8083/connectors/jdbc-source-users/tasks
391
+ ```
392
+
393
+ ### Pause/Resume Connectors
394
+
395
+ ```bash
396
+ # Pause connector
397
+ curl -X PUT http://localhost:8083/connectors/jdbc-source-users/pause
398
+
399
+ # Resume connector
400
+ curl -X PUT http://localhost:8083/connectors/jdbc-source-users/resume
401
+
402
+ # Restart connector
403
+ curl -X POST http://localhost:8083/connectors/jdbc-source-users/restart
404
+
405
+ # Restart task
406
+ curl -X POST http://localhost:8083/connectors/jdbc-source-users/tasks/0/restart
407
+ ```
408
+
409
+ ## Common Issues & Solutions
410
+
411
+ ### Issue 1: Connector Task Failed
412
+
413
+ **Symptoms**: Task state = FAILED
414
+
415
+ **Solutions**:
416
+ 1. Check connector logs: `docker logs connect-worker`
417
+ 2. Validate configuration: `curl http://localhost:8083/connector-plugins/<class>/config/validate`
418
+ 3. Restart task: `curl -X POST .../tasks/0/restart`
419
+
420
+ ### Issue 2: Schema Evolution Error
421
+
422
+ **Error**: `Incompatible schema detected`
423
+
424
+ **Solution**: Enable auto-evolution:
425
+ ```json
426
+ {
427
+ "auto.create": "true",
428
+ "auto.evolve": "true"
429
+ }
430
+ ```
431
+
432
+ ### Issue 3: JDBC Connection Pool Exhausted
433
+
434
+ **Error**: `Could not get JDBC connection`
435
+
436
+ **Solution**: Increase pool size:
437
+ ```json
438
+ {
439
+ "connection.attempts": "3",
440
+ "connection.backoff.ms": "10000"
441
+ }
442
+ ```
443
+
444
+ ## References
445
+
446
+ - Kafka Connect Documentation: https://kafka.apache.org/documentation/#connect
447
+ - Confluent Hub: https://www.confluent.io/hub/
448
+ - Debezium Documentation: https://debezium.io/documentation/
449
+ - Transform Reference: https://kafka.apache.org/documentation/#connect_transforms
450
+
451
+ ---
452
+
453
+ **Invoke me when you need Kafka Connect, connectors, CDC, or data pipeline expertise!**