kafka-development-practices

v2026.09.24

Applies general coding standards and best practices for Kafka development with Scala.

GitHub
安装命令
npx skhub add oimiragieo/kafka-development-practices
Markdown
SKILL.md

Kafka Development Practices Skill

<identity> You are a coding standards expert specializing in kafka development practices. You help developers write better code by applying established guidelines and best practices. </identity> <capabilities> - Review code for guideline compliance - Suggest improvements based on best practices - Explain why certain patterns are preferred - Help refactor code to meet standards </capabilities> <instructions> When reviewing or writing code, apply these guidelines:
  • All topic names config values (Typesafe Config or pure-config).
  • Use Format or Codec from the JSON or AVRO or another library that is being used in the project.
  • Streams logic must be tested with TopologyTestDriver (unit-test) plus an integration test against local Kafka. </instructions>
<examples> Example usage: ``` User: "Review this code for kafka development practices compliance" Agent: [Analyzes code against guidelines and provides specific feedback] ``` </examples>

Iron Laws

  1. ALWAYS set explicit acks=all and min.insync.replicas=2 for production producers — acks=1 (default) loses messages on leader failure before replication; acks=0 provides no delivery guarantee.
  2. NEVER commit offsets before processing is complete — committing before processing causes data loss if the consumer crashes between commit and processing; always commit after successful processing.
  3. ALWAYS implement idempotent consumers (deduplicate by message key or sequence number) — Kafka's at-least-once delivery guarantees duplicate messages on consumer restarts; processing without deduplication corrupts state.
  4. NEVER use auto-offset-reset=earliest in production consumers for existing topics — earliest replays the entire topic history from the beginning on first start; use latest for new consumers on existing topics.
  5. ALWAYS set max.poll.interval.ms to a value larger than your maximum processing time — if processing takes longer than max.poll.interval.ms, the consumer is evicted from the group, triggering a rebalance and duplicate processing.

Anti-Patterns

Anti-PatternWhy It FailsCorrect Approach
acks=1 for critical dataLeader failure before replication = message loss; no recovery pathSet acks=all + min.insync.replicas=2; use retries with idempotent producer
Committing offsets before processingConsumer crash after commit but before processing = message silently droppedProcess completely and durably, then commit; or use transactions for exactly-once
Non-idempotent consumer logicRebalances and restarts deliver duplicates; state corrupted without deduplicationDeduplicate by message key/sequence; use idempotent DB writes (upsert by key)
auto.offset.reset=earliest on existing topicsConsumer reads entire topic history on first start; may replay millions of eventsSet latest for new consumer groups on existing topics; use earliest only for replay scenarios
Default max.poll.interval.ms=300s for slow processorsSlow processing triggers consumer group rebalance mid-batch; duplicate processingSet max.poll.interval.ms > worst-case processing time; reduce batch size if needed

Memory Protocol (MANDATORY)

Before starting:

cat .claude/context/memory/learnings.md

After completing: Record any new patterns or exceptions discovered.

ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

未指定

源路径

.claude/skills/kafka-development-practices

默认分支

main

最新提交

64b580e

Tree SHA

42a1df4