specweave 0.18.1 → 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +229 -1817
- package/README.md +68 -0
- package/bin/specweave.js +62 -6
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
- package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
- package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
- package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
- package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
- package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +7 -0
- package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/epic-content-builder.js +42 -0
- package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-epic-sync.js +1 -1
- package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
- package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
- package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
- package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
- package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
- package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +8 -6
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +78 -117
- package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -1
- package/dist/src/cli/commands/import-docs.js +4 -4
- package/dist/src/cli/commands/import-docs.js.map +1 -1
- package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
- package/dist/src/cli/commands/init-multiproject.js +17 -18
- package/dist/src/cli/commands/init-multiproject.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
- package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
- package/dist/src/cli/commands/switch-project.js +9 -26
- package/dist/src/cli/commands/switch-project.js.map +1 -1
- package/dist/src/cli/commands/sync-spec-content.js +3 -0
- package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
- package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
- package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
- package/dist/src/core/deduplication/command-deduplicator.js +254 -0
- package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
- package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
- package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
- package/dist/src/core/increment/active-increment-manager.js +113 -46
- package/dist/src/core/increment/active-increment-manager.js.map +1 -1
- package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
- package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
- package/dist/src/core/increment/conflict-resolver.js +219 -0
- package/dist/src/core/increment/conflict-resolver.js.map +1 -0
- package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
- package/dist/src/core/increment/discipline-checker.js +7 -1
- package/dist/src/core/increment/discipline-checker.js.map +1 -1
- package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
- package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
- package/dist/src/core/increment/duplicate-detector.js +276 -0
- package/dist/src/core/increment/duplicate-detector.js.map +1 -0
- package/dist/src/core/increment/increment-archiver.d.ts +90 -0
- package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
- package/dist/src/core/increment/increment-archiver.js +368 -0
- package/dist/src/core/increment/increment-archiver.js.map +1 -0
- package/dist/src/core/increment/increment-reopener.d.ts +165 -0
- package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
- package/dist/src/core/increment/increment-reopener.js +390 -0
- package/dist/src/core/increment/increment-reopener.js.map +1 -0
- package/dist/src/core/increment/metadata-manager.d.ts +26 -1
- package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
- package/dist/src/core/increment/metadata-manager.js +143 -5
- package/dist/src/core/increment/metadata-manager.js.map +1 -1
- package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
- package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
- package/dist/src/core/increment/recent-work-scanner.js +303 -0
- package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
- package/dist/src/core/increment/types.d.ts +1 -0
- package/dist/src/core/increment/types.d.ts.map +1 -1
- package/dist/src/core/increment-utils.d.ts +112 -0
- package/dist/src/core/increment-utils.d.ts.map +1 -0
- package/dist/src/core/increment-utils.js +210 -0
- package/dist/src/core/increment-utils.js.map +1 -0
- package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
- package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
- package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
- package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
- package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
- package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
- package/dist/src/core/living-docs/feature-archiver.js +549 -0
- package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
- package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
- package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
- package/dist/src/core/living-docs/feature-id-manager.js +339 -0
- package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/index.d.ts +6 -0
- package/dist/src/core/living-docs/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/index.js +6 -0
- package/dist/src/core/living-docs/index.js.map +1 -1
- package/dist/src/core/living-docs/project-detector.d.ts +6 -0
- package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/project-detector.js +35 -1
- package/dist/src/core/living-docs/project-detector.js.map +1 -1
- package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
- package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
- package/dist/src/core/living-docs/spec-distributor.js +1275 -258
- package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
- package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
- package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
- package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
- package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
- package/dist/src/core/living-docs/types.d.ts +143 -0
- package/dist/src/core/living-docs/types.d.ts.map +1 -1
- package/dist/src/core/project-manager.d.ts +2 -17
- package/dist/src/core/project-manager.d.ts.map +1 -1
- package/dist/src/core/project-manager.js +68 -48
- package/dist/src/core/project-manager.js.map +1 -1
- package/dist/src/core/spec-content-sync.d.ts +1 -1
- package/dist/src/core/spec-content-sync.d.ts.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.js +2 -1
- package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
- package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
- package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
- package/dist/src/core/sync/performance-optimizer.js +220 -0
- package/dist/src/core/sync/performance-optimizer.js.map +1 -0
- package/dist/src/core/sync/retry-handler.d.ts +98 -0
- package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
- package/dist/src/core/sync/retry-handler.js +196 -0
- package/dist/src/core/sync/retry-handler.js.map +1 -0
- package/dist/src/core/types/config.d.ts +94 -0
- package/dist/src/core/types/config.d.ts.map +1 -1
- package/dist/src/core/types/config.js +16 -0
- package/dist/src/core/types/config.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +6 -0
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
- package/dist/src/core/types/increment-metadata.js +10 -1
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
- package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-mapper.js +4 -8
- package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/COMMANDS.md +13 -4
- package/plugins/specweave/commands/specweave-abandon.md +22 -20
- package/plugins/specweave/commands/specweave-archive-features.md +121 -0
- package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
- package/plugins/specweave/commands/specweave-archive.md +363 -0
- package/plugins/specweave/commands/specweave-backlog.md +211 -0
- package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
- package/plugins/specweave/commands/specweave-increment.md +4 -3
- package/plugins/specweave/commands/specweave-progress.md +176 -27
- package/plugins/specweave/commands/specweave-reopen.md +391 -0
- package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
- package/plugins/specweave/commands/specweave-restore.md +309 -0
- package/plugins/specweave/commands/specweave-resume.md +51 -23
- package/plugins/specweave/commands/specweave-status.md +41 -7
- package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
- package/plugins/specweave/hooks/hooks.json +4 -0
- package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
- package/plugins/specweave/hooks/post-task-completion.sh +39 -0
- package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
- package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
- package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
- package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
- package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
- package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
- package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
- package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
- package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
- package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
- package/plugins/specweave-confluent/README.md +375 -0
- package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
- package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
- package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
- package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
- package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
- package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
- package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
- package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
- package/plugins/specweave-github/hooks/post-task-completion.sh +10 -9
- package/plugins/specweave-github/lib/completion-calculator.js +262 -0
- package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
- package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
- package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
- package/plugins/specweave-github/lib/epic-content-builder.js +38 -0
- package/plugins/specweave-github/lib/epic-content-builder.ts +59 -0
- package/plugins/specweave-github/lib/github-client-v2.js +49 -0
- package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
- package/plugins/specweave-github/lib/github-epic-sync.ts +1 -1
- package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
- package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
- package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
- package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
- package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
- package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
- package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
- package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
- package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
- package/plugins/{specweave-ado/lib/enhanced-ado-sync.js → specweave-jira/lib/enhanced-jira-sync.js} +25 -61
- package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
- package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
- package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
- package/plugins/specweave-kafka/README.md +242 -0
- package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
- package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
- package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
- package/plugins/specweave-kafka/commands/deploy.md +99 -0
- package/plugins/specweave-kafka/commands/dev-env.md +176 -0
- package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
- package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
- package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
- package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
- package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
- package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
- package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
- package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
- package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
- package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
- package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
- package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
- package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
- package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
- package/plugins/specweave-kafka/lib/cli/types.js +10 -0
- package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
- package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
- package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
- package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
- package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
- package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
- package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
- package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
- package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
- package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
- package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
- package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
- package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
- package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
- package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
- package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
- package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
- package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
- package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
- package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
- package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
- package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
- package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
- package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
- package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
- package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
- package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
- package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
- package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
- package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
- package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
- package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
- package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
- package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
- package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
- package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
- package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
- package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
- package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
- package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
- package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
- package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
- package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
- package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
- package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
- package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
- package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
- package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
- package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
- package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
- package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
- package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
- package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
- package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
- package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
- package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
- package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
- package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
- package/plugins/specweave-kafka/package.json +41 -0
- package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
- package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
- package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
- package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
- package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
- package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
- package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
- package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
- package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
- package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
- package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
- package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
- package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
- package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
- package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
- package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
- package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
- package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
- package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
- package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
- package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
- package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
- package/plugins/specweave-kafka/tsconfig.json +21 -0
- package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
- package/plugins/specweave-kafka-streams/README.md +310 -0
- package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
- package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
- package/plugins/specweave-n8n/README.md +354 -0
- package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
- package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
- package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
- package/src/templates/AGENTS.md.template +601 -7
- package/src/templates/CLAUDE.md.template +188 -88
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +0 -108
- package/dist/locales/en/cli.json +0 -287
- package/dist/locales/en/errors.json +0 -7
- package/dist/locales/en/templates.json +0 -6
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +0 -41
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +0 -108
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +0 -108
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +0 -108
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +0 -108
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +0 -269
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +0 -108
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +0 -25
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -191
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +0 -1
- package/dist/spec-parser.js +0 -629
- package/dist/src/core/sync/spec-content-sync.d.ts +0 -88
- package/dist/src/core/sync/spec-content-sync.d.ts.map +0 -1
- package/dist/src/core/sync/spec-content-sync.js +0 -5
- package/dist/src/core/sync/spec-content-sync.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
- package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
- package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
- package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
- package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
- package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
- package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: kafka-cli-tools
|
|
3
|
+
description: Expert knowledge of Kafka CLI tools (kcat, kcli, kaf, kafkactl). Auto-activates on keywords kcat, kafkacat, kcli, kaf, kafkactl, kafka cli, kafka command line, produce message, consume topic, list topics, kafka metadata. Provides command examples, installation guides, and tool comparisons.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Kafka CLI Tools Expert
|
|
7
|
+
|
|
8
|
+
Comprehensive knowledge of modern Kafka CLI tools for production operations, development, and troubleshooting.
|
|
9
|
+
|
|
10
|
+
## Supported CLI Tools
|
|
11
|
+
|
|
12
|
+
### 1. kcat (kafkacat) - The Swiss Army Knife
|
|
13
|
+
|
|
14
|
+
**Installation**:
|
|
15
|
+
```bash
|
|
16
|
+
# macOS
|
|
17
|
+
brew install kcat
|
|
18
|
+
|
|
19
|
+
# Ubuntu/Debian
|
|
20
|
+
apt-get install kafkacat
|
|
21
|
+
|
|
22
|
+
# From source
|
|
23
|
+
git clone https://github.com/edenhill/kcat.git
|
|
24
|
+
cd kcat
|
|
25
|
+
./configure && make && sudo make install
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Core Operations**:
|
|
29
|
+
|
|
30
|
+
**Produce Messages**:
|
|
31
|
+
```bash
|
|
32
|
+
# Simple produce
|
|
33
|
+
echo "Hello Kafka" | kcat -P -b localhost:9092 -t my-topic
|
|
34
|
+
|
|
35
|
+
# Produce with key (key:value format)
|
|
36
|
+
echo "user123:Login event" | kcat -P -b localhost:9092 -t events -K:
|
|
37
|
+
|
|
38
|
+
# Produce from file
|
|
39
|
+
cat events.json | kcat -P -b localhost:9092 -t events
|
|
40
|
+
|
|
41
|
+
# Produce with headers
|
|
42
|
+
echo "msg" | kcat -P -b localhost:9092 -t my-topic -H "source=app1" -H "version=1.0"
|
|
43
|
+
|
|
44
|
+
# Produce with compression
|
|
45
|
+
echo "data" | kcat -P -b localhost:9092 -t my-topic -z gzip
|
|
46
|
+
|
|
47
|
+
# Produce with acks=all
|
|
48
|
+
echo "critical-data" | kcat -P -b localhost:9092 -t my-topic -X acks=all
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Consume Messages**:
|
|
52
|
+
```bash
|
|
53
|
+
# Consume from beginning
|
|
54
|
+
kcat -C -b localhost:9092 -t my-topic -o beginning
|
|
55
|
+
|
|
56
|
+
# Consume from end (latest)
|
|
57
|
+
kcat -C -b localhost:9092 -t my-topic -o end
|
|
58
|
+
|
|
59
|
+
# Consume specific partition
|
|
60
|
+
kcat -C -b localhost:9092 -t my-topic -p 0 -o beginning
|
|
61
|
+
|
|
62
|
+
# Consume with consumer group
|
|
63
|
+
kcat -C -b localhost:9092 -G my-group my-topic
|
|
64
|
+
|
|
65
|
+
# Consume N messages and exit
|
|
66
|
+
kcat -C -b localhost:9092 -t my-topic -c 10
|
|
67
|
+
|
|
68
|
+
# Custom format (topic:partition:offset:key:value)
|
|
69
|
+
kcat -C -b localhost:9092 -t my-topic -f 'Topic: %t, Partition: %p, Offset: %o, Key: %k, Value: %s\n'
|
|
70
|
+
|
|
71
|
+
# JSON output
|
|
72
|
+
kcat -C -b localhost:9092 -t my-topic -J
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Metadata & Admin**:
|
|
76
|
+
```bash
|
|
77
|
+
# List all topics
|
|
78
|
+
kcat -L -b localhost:9092
|
|
79
|
+
|
|
80
|
+
# Get topic metadata (JSON)
|
|
81
|
+
kcat -L -b localhost:9092 -t my-topic -J
|
|
82
|
+
|
|
83
|
+
# Query topic offsets
|
|
84
|
+
kcat -Q -b localhost:9092 -t my-topic
|
|
85
|
+
|
|
86
|
+
# Check broker health
|
|
87
|
+
kcat -L -b localhost:9092 | grep "broker\|topic"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**SASL/SSL Authentication**:
|
|
91
|
+
```bash
|
|
92
|
+
# SASL/PLAINTEXT
|
|
93
|
+
kcat -b localhost:9092 \
|
|
94
|
+
-X security.protocol=SASL_PLAINTEXT \
|
|
95
|
+
-X sasl.mechanism=PLAIN \
|
|
96
|
+
-X sasl.username=admin \
|
|
97
|
+
-X sasl.password=admin-secret \
|
|
98
|
+
-L
|
|
99
|
+
|
|
100
|
+
# SASL/SSL
|
|
101
|
+
kcat -b localhost:9093 \
|
|
102
|
+
-X security.protocol=SASL_SSL \
|
|
103
|
+
-X sasl.mechanism=SCRAM-SHA-256 \
|
|
104
|
+
-X sasl.username=admin \
|
|
105
|
+
-X sasl.password=admin-secret \
|
|
106
|
+
-X ssl.ca.location=/path/to/ca-cert \
|
|
107
|
+
-L
|
|
108
|
+
|
|
109
|
+
# mTLS (mutual TLS)
|
|
110
|
+
kcat -b localhost:9093 \
|
|
111
|
+
-X security.protocol=SSL \
|
|
112
|
+
-X ssl.ca.location=/path/to/ca-cert \
|
|
113
|
+
-X ssl.certificate.location=/path/to/client-cert.pem \
|
|
114
|
+
-X ssl.key.location=/path/to/client-key.pem \
|
|
115
|
+
-L
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 2. kcli - Kubernetes-Native Kafka CLI
|
|
119
|
+
|
|
120
|
+
**Installation**:
|
|
121
|
+
```bash
|
|
122
|
+
# Install via krew (Kubernetes plugin manager)
|
|
123
|
+
kubectl krew install kcli
|
|
124
|
+
|
|
125
|
+
# Or download binary
|
|
126
|
+
curl -LO https://github.com/cswank/kcli/releases/latest/download/kcli-linux-amd64
|
|
127
|
+
chmod +x kcli-linux-amd64
|
|
128
|
+
sudo mv kcli-linux-amd64 /usr/local/bin/kcli
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Kubernetes Integration**:
|
|
132
|
+
```bash
|
|
133
|
+
# Connect to Kafka running in k8s
|
|
134
|
+
kcli --context my-cluster --namespace kafka
|
|
135
|
+
|
|
136
|
+
# Produce to topic in k8s
|
|
137
|
+
echo "msg" | kcli produce --topic my-topic --brokers kafka-broker:9092
|
|
138
|
+
|
|
139
|
+
# Consume from k8s Kafka
|
|
140
|
+
kcli consume --topic my-topic --brokers kafka-broker:9092 --from-beginning
|
|
141
|
+
|
|
142
|
+
# List topics in k8s cluster
|
|
143
|
+
kcli topics list --brokers kafka-broker:9092
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Best For**:
|
|
147
|
+
- Kubernetes-native deployments
|
|
148
|
+
- Helmfile/Kustomize workflows
|
|
149
|
+
- GitOps with ArgoCD/Flux
|
|
150
|
+
|
|
151
|
+
### 3. kaf - Modern Terminal UI
|
|
152
|
+
|
|
153
|
+
**Installation**:
|
|
154
|
+
```bash
|
|
155
|
+
# macOS
|
|
156
|
+
brew install kaf
|
|
157
|
+
|
|
158
|
+
# Linux (via snap)
|
|
159
|
+
snap install kaf
|
|
160
|
+
|
|
161
|
+
# From source
|
|
162
|
+
go install github.com/birdayz/kaf/cmd/kaf@latest
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Interactive Features**:
|
|
166
|
+
```bash
|
|
167
|
+
# Configure cluster
|
|
168
|
+
kaf config add-cluster local --brokers localhost:9092
|
|
169
|
+
|
|
170
|
+
# Use cluster
|
|
171
|
+
kaf config use-cluster local
|
|
172
|
+
|
|
173
|
+
# Interactive topic browsing (TUI)
|
|
174
|
+
kaf topics
|
|
175
|
+
|
|
176
|
+
# Interactive consume (arrow keys to navigate)
|
|
177
|
+
kaf consume my-topic
|
|
178
|
+
|
|
179
|
+
# Produce interactively
|
|
180
|
+
kaf produce my-topic
|
|
181
|
+
|
|
182
|
+
# Consumer group management
|
|
183
|
+
kaf groups
|
|
184
|
+
kaf group describe my-group
|
|
185
|
+
kaf group reset my-group --topic my-topic --offset earliest
|
|
186
|
+
|
|
187
|
+
# Schema Registry integration
|
|
188
|
+
kaf schemas
|
|
189
|
+
kaf schema get my-schema
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Best For**:
|
|
193
|
+
- Development workflows
|
|
194
|
+
- Quick topic exploration
|
|
195
|
+
- Consumer group debugging
|
|
196
|
+
- Schema Registry management
|
|
197
|
+
|
|
198
|
+
### 4. kafkactl - Advanced Admin Tool
|
|
199
|
+
|
|
200
|
+
**Installation**:
|
|
201
|
+
```bash
|
|
202
|
+
# macOS
|
|
203
|
+
brew install deviceinsight/packages/kafkactl
|
|
204
|
+
|
|
205
|
+
# Linux
|
|
206
|
+
curl -L https://github.com/deviceinsight/kafkactl/releases/latest/download/kafkactl_linux_amd64 -o kafkactl
|
|
207
|
+
chmod +x kafkactl
|
|
208
|
+
sudo mv kafkactl /usr/local/bin/
|
|
209
|
+
|
|
210
|
+
# Via Docker
|
|
211
|
+
docker run --rm -it deviceinsight/kafkactl:latest
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Advanced Operations**:
|
|
215
|
+
```bash
|
|
216
|
+
# Configure context
|
|
217
|
+
kafkactl config add-context local --brokers localhost:9092
|
|
218
|
+
|
|
219
|
+
# Topic management
|
|
220
|
+
kafkactl create topic my-topic --partitions 3 --replication-factor 2
|
|
221
|
+
kafkactl alter topic my-topic --config retention.ms=86400000
|
|
222
|
+
kafkactl delete topic my-topic
|
|
223
|
+
|
|
224
|
+
# Consumer group operations
|
|
225
|
+
kafkactl describe consumer-group my-group
|
|
226
|
+
kafkactl reset consumer-group my-group --topic my-topic --offset earliest
|
|
227
|
+
kafkactl delete consumer-group my-group
|
|
228
|
+
|
|
229
|
+
# ACL management
|
|
230
|
+
kafkactl create acl --allow --principal User:alice --operation READ --topic my-topic
|
|
231
|
+
kafkactl list acls
|
|
232
|
+
|
|
233
|
+
# Quota management
|
|
234
|
+
kafkactl alter client-quota --user alice --producer-byte-rate 1048576
|
|
235
|
+
|
|
236
|
+
# Reassign partitions
|
|
237
|
+
kafkactl alter partition --topic my-topic --partition 0 --replicas 1,2,3
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**Best For**:
|
|
241
|
+
- Production cluster management
|
|
242
|
+
- ACL administration
|
|
243
|
+
- Partition reassignment
|
|
244
|
+
- Quota management
|
|
245
|
+
|
|
246
|
+
## Tool Comparison Matrix
|
|
247
|
+
|
|
248
|
+
| Feature | kcat | kcli | kaf | kafkactl |
|
|
249
|
+
|---------|------|------|-----|----------|
|
|
250
|
+
| **Installation** | Easy | Medium | Easy | Easy |
|
|
251
|
+
| **Produce** | ✅ Advanced | ✅ Basic | ✅ Interactive | ✅ Basic |
|
|
252
|
+
| **Consume** | ✅ Advanced | ✅ Basic | ✅ Interactive | ✅ Basic |
|
|
253
|
+
| **Metadata** | ✅ JSON | ✅ Basic | ✅ TUI | ✅ Detailed |
|
|
254
|
+
| **TUI** | ❌ | ❌ | ✅ | ✅ Limited |
|
|
255
|
+
| **Admin** | ❌ | ❌ | ⚠️ Limited | ✅ Advanced |
|
|
256
|
+
| **SASL/SSL** | ✅ | ✅ | ✅ | ✅ |
|
|
257
|
+
| **K8s Native** | ❌ | ✅ | ❌ | ❌ |
|
|
258
|
+
| **Schema Reg** | ❌ | ❌ | ✅ | ❌ |
|
|
259
|
+
| **ACLs** | ❌ | ❌ | ❌ | ✅ |
|
|
260
|
+
| **Quotas** | ❌ | ❌ | ❌ | ✅ |
|
|
261
|
+
| **Best For** | Scripting, ops | Kubernetes | Development | Production admin |
|
|
262
|
+
|
|
263
|
+
## Common Patterns
|
|
264
|
+
|
|
265
|
+
### 1. Topic Creation with Optimal Settings
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
# Using kafkactl (recommended for production)
|
|
269
|
+
kafkactl create topic orders \
|
|
270
|
+
--partitions 12 \
|
|
271
|
+
--replication-factor 3 \
|
|
272
|
+
--config retention.ms=604800000 \
|
|
273
|
+
--config compression.type=lz4 \
|
|
274
|
+
--config min.insync.replicas=2
|
|
275
|
+
|
|
276
|
+
# Verify with kcat
|
|
277
|
+
kcat -L -b localhost:9092 -t orders -J | jq '.topics[0]'
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### 2. Dead Letter Queue Pattern
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
# Produce failed message to DLQ
|
|
284
|
+
echo "failed-msg" | kcat -P -b localhost:9092 -t orders-dlq \
|
|
285
|
+
-H "original-topic=orders" \
|
|
286
|
+
-H "error=DeserializationException" \
|
|
287
|
+
-H "timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
288
|
+
|
|
289
|
+
# Monitor DLQ
|
|
290
|
+
kcat -C -b localhost:9092 -t orders-dlq -f 'Headers: %h\nValue: %s\n\n'
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 3. Consumer Group Lag Monitoring
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# Using kafkactl
|
|
297
|
+
kafkactl describe consumer-group my-app | grep LAG
|
|
298
|
+
|
|
299
|
+
# Using kcat (via external tool like kcat-lag)
|
|
300
|
+
kcat -L -b localhost:9092 -J | jq '.topics[].partitions[] | select(.topic=="my-topic")'
|
|
301
|
+
|
|
302
|
+
# Using kaf (interactive)
|
|
303
|
+
kaf groups
|
|
304
|
+
# Then select group to see lag in TUI
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### 4. Multi-Cluster Replication Testing
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
# Produce to source cluster
|
|
311
|
+
echo "test" | kcat -P -b source-kafka:9092 -t replicated-topic
|
|
312
|
+
|
|
313
|
+
# Consume from target cluster
|
|
314
|
+
kcat -C -b target-kafka:9092 -t replicated-topic -o end -c 1
|
|
315
|
+
|
|
316
|
+
# Compare offsets
|
|
317
|
+
kcat -Q -b source-kafka:9092 -t replicated-topic
|
|
318
|
+
kcat -Q -b target-kafka:9092 -t replicated-topic
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### 5. Performance Testing
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
# Produce 10,000 messages with kcat
|
|
325
|
+
seq 1 10000 | kcat -P -b localhost:9092 -t perf-test
|
|
326
|
+
|
|
327
|
+
# Consume and measure throughput
|
|
328
|
+
time kcat -C -b localhost:9092 -t perf-test -c 10000 -o beginning > /dev/null
|
|
329
|
+
|
|
330
|
+
# Test with compression
|
|
331
|
+
seq 1 10000 | kcat -P -b localhost:9092 -t perf-test -z lz4
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## Troubleshooting
|
|
335
|
+
|
|
336
|
+
### Connection Issues
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# Test broker connectivity
|
|
340
|
+
kcat -L -b localhost:9092
|
|
341
|
+
|
|
342
|
+
# Check SSL/TLS connection
|
|
343
|
+
openssl s_client -connect localhost:9093 -showcerts
|
|
344
|
+
|
|
345
|
+
# Verify SASL authentication
|
|
346
|
+
kcat -b localhost:9092 \
|
|
347
|
+
-X security.protocol=SASL_PLAINTEXT \
|
|
348
|
+
-X sasl.mechanism=PLAIN \
|
|
349
|
+
-X sasl.username=admin \
|
|
350
|
+
-X sasl.password=wrong-password \
|
|
351
|
+
-L
|
|
352
|
+
# Should fail with authentication error
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Message Not Appearing
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
# Check topic exists
|
|
359
|
+
kcat -L -b localhost:9092 | grep my-topic
|
|
360
|
+
|
|
361
|
+
# Check partition count
|
|
362
|
+
kcat -L -b localhost:9092 -t my-topic -J | jq '.topics[0].partition_count'
|
|
363
|
+
|
|
364
|
+
# Query all partition offsets
|
|
365
|
+
kcat -Q -b localhost:9092 -t my-topic
|
|
366
|
+
|
|
367
|
+
# Consume from all partitions
|
|
368
|
+
for i in {0..11}; do
|
|
369
|
+
echo "Partition $i:"
|
|
370
|
+
kcat -C -b localhost:9092 -t my-topic -p $i -c 1 -o end
|
|
371
|
+
done
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### Consumer Group Stuck
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
# Check consumer group state
|
|
378
|
+
kafkactl describe consumer-group my-app
|
|
379
|
+
|
|
380
|
+
# Reset to beginning
|
|
381
|
+
kafkactl reset consumer-group my-app --topic my-topic --offset earliest
|
|
382
|
+
|
|
383
|
+
# Reset to specific offset
|
|
384
|
+
kafkactl reset consumer-group my-app --topic my-topic --partition 0 --offset 12345
|
|
385
|
+
|
|
386
|
+
# Delete consumer group (all consumers must be stopped first)
|
|
387
|
+
kafkactl delete consumer-group my-app
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
## Integration with SpecWeave
|
|
391
|
+
|
|
392
|
+
**Automatic CLI Tool Detection**:
|
|
393
|
+
SpecWeave auto-detects installed CLI tools and recommends best tool for the operation:
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
import { CLIToolDetector } from './lib/cli/detector';
|
|
397
|
+
|
|
398
|
+
const detector = new CLIToolDetector();
|
|
399
|
+
const available = await detector.detectAll();
|
|
400
|
+
|
|
401
|
+
// Recommended tool for produce operation
|
|
402
|
+
if (available.includes('kcat')) {
|
|
403
|
+
console.log('Use kcat for produce (fastest)');
|
|
404
|
+
} else if (available.includes('kaf')) {
|
|
405
|
+
console.log('Use kaf for produce (interactive)');
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
**SpecWeave Commands**:
|
|
410
|
+
- `/specweave-kafka:dev-env` - Uses Docker Compose + kcat for local testing
|
|
411
|
+
- `/specweave-kafka:monitor-setup` - Sets up kcat-based lag monitoring
|
|
412
|
+
- `/specweave-kafka:mcp-configure` - Validates CLI tools are installed
|
|
413
|
+
|
|
414
|
+
## Security Best Practices
|
|
415
|
+
|
|
416
|
+
1. **Never hardcode credentials** - Use environment variables or secrets management
|
|
417
|
+
2. **Use SSL/TLS in production** - Configure `-X security.protocol=SASL_SSL`
|
|
418
|
+
3. **Prefer SCRAM over PLAIN** - Use `-X sasl.mechanism=SCRAM-SHA-256`
|
|
419
|
+
4. **Rotate credentials regularly** - Update passwords and certificates
|
|
420
|
+
5. **Least privilege** - Grant only necessary ACLs to users
|
|
421
|
+
|
|
422
|
+
## Related Skills
|
|
423
|
+
|
|
424
|
+
- `/specweave-kafka:kafka-mcp-integration` - MCP server setup and configuration
|
|
425
|
+
- `/specweave-kafka:kafka-architecture` - Cluster design and sizing
|
|
426
|
+
|
|
427
|
+
## External Links
|
|
428
|
+
|
|
429
|
+
- [kcat GitHub](https://github.com/edenhill/kcat)
|
|
430
|
+
- [kcli GitHub](https://github.com/cswank/kcli)
|
|
431
|
+
- [kaf GitHub](https://github.com/birdayz/kaf)
|
|
432
|
+
- [kafkactl GitHub](https://github.com/deviceinsight/kafkactl)
|
|
433
|
+
- [Apache Kafka Documentation](https://kafka.apache.org/documentation/)
|