Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Schema Registry Evolution

ASecurity

Playbook for managing Avro/Protobuf/JSON Schema schemas in a registry — choosing a compatibility mode, executing safe schema changes, and handling breaking changes without consumer downtime.

7 stars
0 votes
0 copies
0 views
Added 9/23/2026
ai-agentsrustbashawsdatabasedocumentation

Security Analysis

A96/100
mediumUses curl or wget to download content

Pro shows the line behind each finding and how to fix it

Scanned 9/23/2026

$npx -y skills add mcorbett51090/RavenClaude --skill schema-registry-evolution --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Schema Registry Evolution?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Schema Registry Evolution
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mcorbett51090-schema-registry-evolution/badge)](https://www.skillsdirectory.com/skills/mcorbett51090-schema-registry-evolution)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: schema-registry-evolution
description: "Playbook for managing Avro/Protobuf/JSON Schema schemas in a registry — choosing a compatibility mode, executing safe schema changes, and handling breaking changes without consumer downtime."
---

# Schema Registry Evolution

## When to Use This Skill

Any time a schema change is proposed on a Kafka topic, or when a team is choosing a compatibility mode for a new subject in Confluent Schema Registry or AWS Glue Schema Registry.

## Compatibility Mode Selection

| Mode | What it allows | Use when |
|---|---|---|
| `BACKWARD` | New schema reads data written with old schema | Consumers upgrade first; producer adds optional fields |
| `FORWARD` | Old schema reads data written with new schema | Producers upgrade first; adds fields consumers ignore |
| `FULL` | Both backward + forward | You need rolling deploys with mixed versions in flight |
| `NONE` | No compatibility check | Internal dev topics only — never production |

**Default recommendation:** `FULL` for any topic consumed by multiple independent teams. `BACKWARD` for tightly-coupled producer/consumer pairs where you always update consumers first.

## Safe Change Checklist

**Adding a field (safe):**

1. Add with a default value in the schema (`"default": null` for Avro unions; `optional` in Protobuf).
2. Register the new schema version in the registry; confirm compatibility check passes.
3. Deploy the producer that starts writing the new field.
4. Deploy consumers that read the new field.
5. After all consumers are deployed, remove the default if the field is now required.

**Removing a field (requires care):**

1. First mark it as deprecated in documentation; don't remove yet.
2. Deploy all consumers to stop reading the field.
3. Once no consumer reads it, register the schema without the field (only safe under `BACKWARD` or `FULL`).
4. Never remove a field in the same release that adds another field — one change per version.

**Renaming a field (breaking under all modes):**

- Avro/JSON Schema have no rename primitive. Treat as add + deprecate: add the new name (with default), migrate consumers, then remove the old name across two separate schema versions.

## Breaking Change Protocol

When a breaking change is unavoidable (type change, semantic reinterpretation):

1. Create a **new subject** (new topic name or `<topic>-v2` convention).
2. Run the old and new topics in parallel; dual-publish from the producer if needed.
3. Migrate consumers to the new topic.
4. Retire the old topic after a migration window.

Never mutate the meaning of an existing field name — consumers can't distinguish a type change from a bug.

## Registry Operations Quick Reference

```bash
# Check compatibility before registering
curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" \
  --data '{"schema": "<escaped-schema>"}' \
  http://registry:8081/compatibility/subjects/<topic>-value/versions/latest

# List versions for a subject
curl http://registry:8081/subjects/<topic>-value/versions

# Fetch a specific version
curl http://registry:8081/subjects/<topic>-value/versions/3
```

## Pitfalls

- Registering a schema without checking compatibility first — the producer deploys, breaks consumers, and you discover it in prod.
- Using `NONE` mode on a shared topic because "it's easier" — any producer deploy can silently corrupt consumer deserialization.
- Storing the schema ID in a sidecar database instead of trusting the registry wire format — the magic byte + schema ID header in every Kafka message is the contract; don't duplicate it.
- Forgetting that `null` is a type in Avro — a nullable field must be a union `["null", "string"]`, not just `"string"` with a null default.

## See also

- [../../agents/kafka-pipeline-engineer.md](../../agents/kafka-pipeline-engineer.md) — owns schema registry and producer/consumer compatibility
- [../../agents/streaming-architect.md](../../agents/streaming-architect.md) — picks delivery semantics and CDC approach
- [../../CLAUDE.md](../../CLAUDE.md) — house opinions on schema evolution

Attribution

mcorbett51090mcorbett51090
View sourceSee grades on GitHubMore from mcorbett51090 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →