Zurück zu Fähigkeiten

design-serialization-schema

pjt222
Aktualisiert 2 days ago
7 Ansichten
17
2
17
Auf GitHub ansehen
Designdesign

Über

Diese Fähigkeit unterstützt Entwickler beim Entwurf von Serialisierungsschemas mit JSON Schema, Protocol Buffers oder Apache Avro. Sie konzentriert sich auf die Erstellung versionierter, langlebiger Datenformate mit robusten Entwicklungsstrategien und Abwärtskompatibilität. Nutzen Sie sie bei der Definition neuer API-Verträge oder bei der Änderung bestehender Schemas, um Felder hinzuzufügen, während Validierungsregeln beibehalten werden.

Schnellinstallation

Claude Code

Empfohlen
Primär
npx skills add pjt222/agent-almanac -a claude-code
Plugin-BefehlAlternativ
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativ
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/design-serialization-schema

Kopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren

Dokumentation


name: design-serialization-schema description: > Serialisierungsschemata mit JSON Schema, Protocol-Buffer-Definitionen oder Apache Avro entwerfen. Umfasst Schema-Versionierung, Rueckwaertskompatibilitaet, Validierungsregeln und Evolutionsstrategien fuer langlebige Datenformate. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: data-serialization complexity: intermediate language: multi tags: json-schema, protobuf, avro, schema-evolution, versioning, compatibility locale: de source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16

Serialisierungsschema entwerfen

Gut versionierte Serialisierungsschemata erstellen, die sich elegant weiterentwickeln, ohne Konsumenten zu brechen.

Wann verwenden

  • Einen neuen API-Vertrag oder ein Datenaustauschformat definieren
  • Felder zu einem bestehenden Schema hinzufuegen, ohne Konsumenten zu brechen
  • Zwischen Schema-Versionen migrieren
  • Zwischen Schema-Systemen waehlen (JSON Schema, Protobuf, Avro)
  • Datenvalidierungsregeln fuer automatisierte Durchsetzung dokumentieren

Eingaben

  • Erforderlich: Datenmodell (Entitaetsbeziehungen, Feldtypen, Beschraenkungen)
  • Erforderlich: Kompatibilitaetsanforderungen (wer konsumiert diese Daten, wie lange muessen alte Formate lesbar sein)
  • Optional: Bestehendes Schema zur Weiterentwicklung
  • Optional: Performance-Anforderungen (Validierungsgeschwindigkeit, Schema-Registry-Integration)
  • Optional: Zielserialisierungsformat (JSON, binaer, spaltenbasiert)

Vorgehensweise

Schritt 1: Ein Schema-System waehlen

SystemFormatStaerkenAm besten fuer
JSON SchemaJSONBreit unterstuetzt, flexible ValidierungREST-APIs, Konfigvalidierung
Protocol BuffersBinaerKompakt, schnell, starke Typisierung, eingebaute EvolutiongRPC, Microservices
Apache AvroBinaer/JSONSchema in Daten, hervorragende EvolutionsunterstuetzungKafka, Datenpipelines
XML Schema (XSD)XMLUmfassende Typisierung, Namespace-UnterstuetzungEnterprise/Legacy SOAP
TypeBox/ZodTypeScriptTypinferenz, LaufzeitvalidierungTypeScript-APIs

Erwartet: Schema-System basierend auf Oekosystem, Performance-Beduerfnissen und Evolutionsanforderungen ausgewaehlt. Bei Fehler: Im Zweifelsfall mit JSON Schema beginnen -- es hat die breiteste Werkzeugunterstuetzung und kann auf bestehende JSON-APIs aufgesetzt werden.

Schritt 2: Das Kernschema entwerfen

JSON-Schema-Beispiel:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://example.com/schemas/measurement/v1",
  "title": "Measurement",
  "description": "Eine Sensormessung",
  "type": "object",
  "required": ["sensor_id", "value", "unit", "timestamp"],
  "properties": {
    "sensor_id": {
      "type": "string",
      "pattern": "^[a-z]+-[0-9]+$",
      "description": "Eindeutige Sensorkennung (Kleinbuchstaben-Ziffern-Format)"
    },
    "value": {
      "type": "number",
      "description": "Messwert"
    },
    "unit": {
      "type": "string",
      "enum": ["celsius", "fahrenheit", "kelvin", "percent", "ppm"],
      "description": "Masseinheit"
    },
    "timestamp": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 Zeitstempel mit Zeitzone"
    },
    "metadata": {
      "type": "object",
      "additionalProperties": true,
      "description": "Optionale Schluessel-Wert-Metadaten"
    }
  },
  "additionalProperties": false
}

Protocol-Buffers-Beispiel:

syntax = "proto3";
package sensors.v1;

import "google/protobuf/timestamp.proto";

message Measurement {
  string sensor_id = 1;
  double value = 2;
  Unit unit = 3;
  google.protobuf.Timestamp timestamp = 4;
  map<string, string> metadata = 5;
}

enum Unit {
  UNIT_UNSPECIFIED = 0;
  UNIT_CELSIUS = 1;
  UNIT_FAHRENHEIT = 2;
  UNIT_KELVIN = 3;
  UNIT_PERCENT = 4;
  UNIT_PPM = 5;
}

Erwartet: Schema ist selbstdokumentierend mit Beschreibungen, Beschraenkungen und klaren Typdefinitionen. Bei Fehler: Falls das Datenmodell noch nicht stabil ist, das Schema als draft markieren und die Veroeffentlichung in einer Registry vermeiden.

Schritt 3: Schema-Evolution planen

Kompatibilitaetsregeln:

AenderungRueckwaerts-kompatibel?Vorwaerts-kompatibel?Sicher?
Optionales Feld hinzufuegenJaJaJa
Pflichtfeld hinzufuegenNeinJaNein (bricht bestehende Konsumenten)
Optionales Feld entfernenJaNeinVorsicht (Produzenten senden moeglicherweise noch)
Pflichtfeld entfernenJaNeinVorsicht
Feld umbenennenNeinNeinNein (Alias + Deprecation verwenden)
Feldtyp aendernNeinNeinNein (neues Feld hinzufuegen, altes deprecaten)
Enum-Wert hinzufuegenJa (wenn Konsumenten unbekannte ignorieren)NeinImplementierungsabhaengig
Enum-Wert entfernenNeinJaNein

Sichere Evolutionsstrategie:

  1. Nur optionale Felder hinzufuegen mit sinnvollen Standardwerten
  2. Niemals entfernen oder umbenennen -- stattdessen deprecaten
  3. Schema versionieren im Bezeichner (v1, v2)
  4. Schema-Registry verwenden fuer Binaerformate (Confluent Schema Registry fuer Avro/Protobuf)

Erwartet: Evolutionsplan dokumentiert: welche Aenderungen sicher sind, welche neue Versionen erfordern. Bei Fehler: Falls eine brechende Aenderung unvermeidlich ist, das Schema versionieren (v1 -> v2) und parallele Unterstuetzung waehrend der Migration aufrechterhalten.

Schritt 4: Schema-Validierung implementieren

# JSON-Schema-Validierung (Python)
from jsonschema import validate, ValidationError
import json

schema = json.load(open("measurement_v1.json"))

def validate_measurement(data: dict) -> list[str]:
    """Messung gegen das Schema validieren. Gibt Liste von Fehlern zurueck."""
    errors = []
    try:
        validate(instance=data, schema=schema)
    except ValidationError as e:
        errors.append(f"{e.json_path}: {e.message}")
    return errors

# Verwendung
errors = validate_measurement({"sensor_id": "s-01", "value": "not_a_number"})
# -> ["$.value: 'not_a_number' is not of type 'number'"]
// TypeScript mit Zod (Laufzeit + Kompilierzeit)
import { z } from 'zod';

const MeasurementSchema = z.object({
  sensor_id: z.string().regex(/^[a-z]+-[0-9]+$/),
  value: z.number(),
  unit: z.enum(['celsius', 'fahrenheit', 'kelvin', 'percent', 'ppm']),
  timestamp: z.string().datetime(),
  metadata: z.record(z.string()).optional(),
});

type Measurement = z.infer<typeof MeasurementSchema>;

// Validierung
const result = MeasurementSchema.safeParse(inputData);
if (!result.success) {
  console.error(result.error.issues);
}

Erwartet: Validierung laeuft auf allen eingehenden Daten an Systemgrenzen (API-Endpunkte, Dateieinlesung). Bei Fehler: Validierungsfehler mit vollstaendiger Nutzlast (sensible Felder schwaeraen) fuer Debugging protokollieren.

Schritt 5: Schema dokumentieren

Eine Schema-Dokumentationsseite erstellen mit Uebersicht, Feldbeschreibungen, Aenderungsprotokoll und Kompatibilitaetsrichtlinie.

Erwartet: Dokumentation ist automatisch generiert oder bleibt mit der Schema-Definition synchron. Bei Fehler: Falls Dokumentation vom Schema abweicht, einen CI-Check hinzufuegen, der die Dokumentation gegen die Schema-Quelle validiert.

Validierung

  • Schema verwendet ein dem Anwendungsfall angemessenes System (JSON Schema, Protobuf, Avro)
  • Alle Felder haben Typen, Beschreibungen und Beschraenkungen
  • Pflicht- vs. optionale Felder sind explizit definiert
  • Evolutionsstrategie dokumentiert (sichere Aenderungen, Versionierungsrichtlinie)
  • Validierung an Systemgrenzen implementiert
  • Schema ist mit einem Aenderungsprotokoll versioniert
  • Roundtrip-Test: serialisieren -> deserialisieren -> vergleichen bestaetigt keinen Datenverlust

Haeufige Fehler

  • Zu fruehes Ueberbeschraenken: Strikte Validierung auf einem neuen Schema blockiert Iteration. Permissiv starten (additionalProperties: true), spaeter verschaerfen.
  • Keine Standardwerte: Hinzufuegen eines Pflichtfelds ohne Standard bricht alle bestehenden Daten. Immer Standards fuer neue Felder bereitstellen.
  • Null ignorieren: Viele Schemata behandeln null/fehlende Felder nicht klar. Explizit sein ueber nullable vs. optional.
  • Version in der Nutzlast, nicht der URL: Fuer langlebige Daten (Speicherung, Events) die Schema-Version in die Daten selbst einbetten, nicht nur in die Endpunkt-URL.
  • Enum-Vollstaendigkeit: Hinzufuegen eines neuen Enum-Werts kann Konsumenten zum Absturz bringen, die erschoepfende Switch-Anweisungen verwenden. Dokumentieren, dass unbekannte Werte graceful behandelt werden sollten.

Verwandte Skills

  • serialize-data-formats -- Formatauswahl und Kodierungs-/Dekodierungsimplementierung
  • implement-pharma-serialisation -- Pharmazeutische Serialisierung (regulatorische Schemata)
  • write-validation-documentation -- Validierungsdokumentation fuer regulierte Schemata

GitHub Repository

pjt222/agent-almanac
Pfad: i18n/de/skills/design-serialization-schema
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Verwandte Skills

executing-plans

Design

Verwenden Sie die Fähigkeit "executing-plans", wenn Sie einen vollständigen Implementierungsplan zur Ausführung in kontrollierten Batches mit Überprüfungspunkten vorliegen haben. Sie lädt den Plan und überprüft ihn kritisch, führt dann Aufgaben in kleinen Batches (standardmäßig 3 Aufgaben) aus und meldet den Fortschritt zwischen jedem Batch zur Überprüfung durch den Architekten. Dies gewährleistet eine systematische Implementierung mit integrierten Qualitätskontrollpunkten.

Skill ansehen

requesting-code-review

Design

Diese Fähigkeit sendet einen Unteragenten für Code-Review, um Codeänderungen anhand der Anforderungen zu analysieren, bevor fortgefahren wird. Sie sollte nach dem Abschließen von Aufgaben, der Implementierung größerer Funktionen oder vor dem Zusammenführen in den Hauptzweig verwendet werden. Die Überprüfung hilft dabei, Probleme frühzeitig zu erkennen, indem die aktuelle Implementierung mit dem ursprünglichen Plan verglichen wird.

Skill ansehen

connect-mcp-server

Design

Diese Fähigkeit bietet Entwicklern eine umfassende Anleitung, um MCP-Server über HTTP-, stdio- oder SSE-Transports mit Claude Code zu verbinden. Sie behandelt Installation, Konfiguration, Authentifizierung und Sicherheit für die Integration externer Dienste wie GitHub, Notion und benutzerdefinierter APIs. Nutzen Sie sie beim Einrichten von MCP-Integrationen, bei der Konfiguration externer Tools oder bei der Arbeit mit Claude's Model Context Protocol.

Skill ansehen

web-cli-teleport

Design

Diese Fähigkeit unterstützt Entwickler bei der Wahl zwischen Claude Code Web- und CLI-Schnittstellen basierend auf Aufgabenanalysen und ermöglicht nahtloses Session-Teleporting zwischen diesen Umgebungen. Sie optimiert den Workflow, indem sie den Sitzungsstatus und Kontext beim Wechsel zwischen Web, CLI oder Mobilgeräten verwaltet. Nutzen Sie sie für komplexe Projekte, die in verschiedenen Phasen unterschiedliche Werkzeuge erfordern.

Skill ansehen