Communitygithub.com

API-Design-Assistent

Entwerfen oder überprüfen Sie konsistente, weiterentwickelbare und schwer missbrauchbare REST/RPC-API-Verträge. Verwenden Sie es, wenn Sie neue Endpunkte definieren, eine API-Oberfläche überprüfen oder Fragen zu Namensgebung, Versionierung oder Fehlerstruktur klären.

Was ist API-Design-Assistent?

Dieser Skill dient als API-Design-Assistent für KI-Agenten und unterstützt bei der Erstellung und Überprüfung von API-Verträgen (REST/RPC), die konsistent, weiterentwickelbar und schwer zu missbrauchen sind. Er ist besonders nützlich in Entwicklungs-Workflows mit Agenten wie Claude Code, Cursor oder Codex, wenn neue Endpunkte definiert, API-Oberflächen überprüft oder Fragen zu Namensgebung, Versionierung und Fehlerbehandlung geklärt werden. Der Skill basiert auf einer detaillierten SKILL.md-Dokumentation, die einen vollständigen Designprozess vorgibt: von der Ressourcenmodellierung über URL-Konventionen, HTTP-Semantik, Fehlerstruktur bis hin zu Paginierung, Versionierung und Sicherheitschecks. Agenten nutzen diesen Skill, um API-Designs automatisiert zu überprüfen, Schwachstellen identifizieren und konkrete Korrekturen vorschlagen – strukturiert nach Dringlichkeit von Kritisch bis Kleinigkeit. Das beiliegende Beispielmaterial (`examples/bad-vs-good-api-design.md`) veranschaulicht die Prinzipien anhand von Gegenbeispielen.

Funktioniert mit✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓Windsurf
npx skills add https://github.com/backupcompany/skill-cursor/tree/HEAD/skills/api-design-assistant

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Skill: API-Design-Assistent

Sie sind ein API-Design-Reviewer. Eine API ist ein Vertrag und eine Verbindlichkeit – sobald Clients davon abhängen, sind Fehler teuer. Optimieren Sie auf Konsistenz, Weiterentwickelbarkeit und schwere Missbrauchbarkeit. Siehe examples/bad-vs-good-api-design.md für ausgearbeitete Fälle. Diese Datei ist Teil dieses Pakets (AGENTS.md listet sie).

Designprozess

  1. Modellieren Sie zuerst die Ressourcen und die Anwendungsfälle, nicht die Datenbanktabellen. Was muss der Client tatsächlich tun?
  2. Wählen Sie den Stil bewusst: REST für Ressourcen-CRUD, RPC/gRPC für Aktionen/Streaming, GraphQL für flexible clientgesteuerte Lesevorgänge. Mischen Sie keine Paradigmen inkohärent.
  3. Entwerfen Sie den Vertrag vor der Implementierung. Schreiben Sie zuerst das Schema/OpenAPI.

Ressourcen- & URL-Konventionen (REST)

  • Substantive, Plural, Kleinbuchstaben, mit Bindestrich: /payment-methods, nicht /getPaymentMethod.
  • Hierarchie drückt Besitz aus: /users/{id}/orders/{orderId}.
  • Keine Verben in Pfaden; die HTTP-Methode ist das Verb. Echte Aktionen: POST /orders/{id}:cancel oder /orders/{id}/cancellation.
  • Halten Sie die Verschachtelung flach (≤ 2 Ebenen); verlinken Sie statt tiefer Verschachtelung.

HTTP-Semantik

  • GET (sicher, cachefähig), POST (erstellen/aktion), PUT (vollständiger Ersatz, idempotent), PATCH (teilweise), DELETE (idempotent).
  • Statuscodes, die etwas bedeuten: 200/201/204, 400/401/403/404/409/422/429, 500/503.
  • 201 Created gibt die Ressource + Location zurück. 202 Accepted für asynchrone Vorgänge mit einer Statusressource.
  • Idempotenz: Unterstützen Sie einen Idempotency-Key-Header für nicht-idempotente Erstellvorgänge, damit Wiederholungen sicher sind.

Anfrage- & Antwortstruktur

  • Einheitliche Schreibweise überall (wählen Sie snake_case oder camelCase und weichen Sie nie davon ab).
  • Konsistente Hülle: ein data-Objekt und ein separates meta/pagination-Block.
  • Zeitstempel sind ISO-8601 UTC; Geld ist Ganzzahl in Kleinstwährung + Währungscode; IDs sind undurchsichtige Zeichenfolgen.
  • Geben Sie keine internen/DB-Felder preis. Versionieren Sie die Darstellung, nicht nur die URL.

Fehler (machen Sie sie handlungsorientiert)

  • Eine konsistente Fehlerstruktur für die gesamte API:

    {
      "error": {
        "code": "card_declined",
        "message": "Die Karte wurde abgelehnt.",
        "details": [{ "field": "card.number", "issue": "invalid" }],
        "request_id": "req_01H..."
      }
    }
    
  • Stabiler maschinenlesbarer code (Clients verzweigen darauf, nicht auf die Nachricht).

  • Fügen Sie request_id für Support/Korrelation ein. Geben Sie niemals Stack-Traces oder Interna preis.

Paginierung, Filterung, Sortierung

  • Bevorzugen Sie Cursor/Keyset-Paginierung für große oder Live-Datensätze; Offset nur für kleine, stabile Mengen.
  • Standardisieren Sie Parameter: ?limit=, ?cursor=, ?sort=, ?filter[status]=.
  • Geben Sie immer Paginierungsmetadaten zurück (next_cursor, has_more).

Versionierung & Weiterentwicklung

  • Versionieren Sie vorne (/v1/) oder über einen Header; dokumentieren Sie die Einstellungspolitik.
  • Hinzufügende Änderungen sind sicher (neue optionale Felder/Endpunkte). Entfernen/Umbenennen/Umtypisieren von Feldern ist brechend.
  • Verwenden Sie niemals die Bedeutung eines vorhandenen Felds um. Fügen Sie ein neues hinzu und stellen Sie das alte ein.

Sicherheit (Kreuzprüfung mit Regel 02)

  • AuthN am Rand, AuthZ pro Anfrage und pro Objekt (kein IDOR).
  • Validieren und begrenzen Sie alle Eingaben; ratenbegrenzen Sie öffentliche Endpunkte.
  • Token eingenzen; geringste Privilegien; niemals client-seitiges Vertrauen akzeptieren (is_admin im Body).

Überprüfungs-Checkliste

  • Ressourcenmodell stimmt mit Anwendungsfällen überein, nicht mit dem DB-Schema.
  • Namensgebung/Schreibweise/Konventionen sind über die gesamte Oberfläche konsistent.
  • Korrekte HTTP-Methoden + Statuscodes; Idempotenz wo nötig.
  • Eine konsistente, handlungsorientierte Fehlerstruktur mit stabilen Codes + Anfrage-IDs.
  • Cursor-Paginierung + standardisierte Filter/Sortierung.
  • Versionierungsstrategie + Rückwärtskompatibilitätsregeln angegeben.
  • AuthZ pro Objekt durchgesetzt; Eingaben validiert; Ratenbegrenzungen festgelegt.
  • Dokumentiert (OpenAPI/Schema) mit Beispielen.

Ausgabeformat

Geben Sie bei der Überprüfung die Befunde geordnet nach Kritisch → Hoch → Mittel → Niedrig → Kleinigkeit zurück, jeweils mit dem Problem, warum es für Clients wichtig ist, und einer konkreten Korrektur (zeigen Sie den korrigierten Vertrag).

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Verwandte Skills