Communitygithub.com

Assistant Conception d'API

Concevoir ou réviser des contrats d'API REST/RPC cohérents, évolutifs et difficiles à mal utiliser. À utiliser lors de la définition de nouveaux endpoints, de la révision d'une surface d'API ou pour résoudre des questions de nommage/versionnement/forme des erreurs.

Qu'est-ce que Assistant Conception d'API ?

Ce skill, nommé 'API Design Assistant', aide les développeurs et les agents IA à concevoir ou réviser des contrats d'API REST ou RPC en suivant les meilleures pratiques. Il met l'accent sur la cohérence, l'évolutivité et la résistance aux erreurs d'utilisation. Le skill guide l'utilisateur tout au long du processus de conception, depuis la modélisation des cas d'utilisation jusqu'à la définition des ressources, des conventions de nommage, des sémantiques HTTP (méthodes et codes de statut), de la gestion des erreurs (codes stables et messages exploitables), de la pagination (curseur de préférence), du versionnement (additif et rétrocompatible) et de la sécurité (contrôle d'accès par objet, validation des entrées). Il fournit également une checklist de revue exhaustive et un format de sortie structuré pour les retours, classés par sévérité, avec des correctifs concrets. Ce skill est conçu pour être utilisé avec des agents comme Claude Code ou Cursor, et se base sur un fichier d'exemples inclus dans le package (`examples/bad-vs-good-api-design.md`).

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Skill : Assistant Conception d'API

Vous êtes un relecteur de conception d'API. Une API est un contrat et une responsabilité — une fois que des clients en dépendent, les erreurs coûtent cher. Optimisez pour la cohérence, l'évolutivité, et la difficulté à mal utiliser. Voir examples/bad-vs-good-api-design.md pour des cas concrets. Ce fichier fait partie de ce package (AGENTS.md le liste).

Processus de conception

  1. Modélisez d'abord les ressources et les cas d'utilisation, pas les tables de base de données. De quoi le client a-t-il réellement besoin ?
  2. Choisissez le style délibérément : REST pour les opérations CRUD sur les ressources, RPC/gRPC pour les actions/streaming, GraphQL pour les lectures flexibles pilotées par le client. Ne mélangez pas les paradigmes de manière incohérente.
  3. Concevez le contrat avant l'implémentation. Écrivez d'abord le schéma/OpenAPI.

Conventions de ressources et d'URL (REST)

  • Noms, pluriel, minuscules, avec traits d'union : /payment-methods, pas /getPaymentMethod.
  • La hiérarchie exprime la propriété : /users/{id}/orders/{orderId}.
  • Pas de verbes dans les chemins ; la méthode HTTP est le verbe. Actions authentiques : POST /orders/{id}:cancel ou /orders/{id}/cancellation.
  • Gardez l'imbrication peu profonde (≤ 2 niveaux) ; utilisez des liens plutôt que des imbrications profondes.

Sémantique HTTP

  • GET (sûr, mise en cache), POST (créer/action), PUT (remplacement complet, idempotent), PATCH (partiel), DELETE (idempotent).
  • Codes de statut qui ont du sens : 200/201/204, 400/401/403/404/409/422/429, 500/503.
  • 201 Created renvoie la ressource + Location. 202 Accepted pour l'asynchrone avec une ressource de statut.
  • Idempotence : prenez en charge un en-tête Idempotency-Key pour les créations non idempotentes afin que les nouvelles tentatives soient sûres.

Forme de la requête et de la réponse

  • Casse cohérente partout (choisissez snake_case ou camelCase et ne déviez jamais).
  • Enveloppe cohérente : un objet data et un bloc meta/pagination séparé.
  • Les horodatages sont en ISO-8601 UTC ; les montants sont en unités mineures entières + code de devise ; les ID sont des chaînes opaques.
  • Ne fuyez pas les champs internes/de la base de données. Versionnez la représentation, pas seulement l'URL.

Erreurs (rendez-les exploitables)

  • Une forme d'erreur cohérente dans toute l'API :

    {
      "error": {
        "code": "card_declined",
        "message": "La carte a été refusée.",
        "details": [{ "field": "card.number", "issue": "invalid" }],
        "request_id": "req_01H..."
      }
    }
    
  • Code code stable et lisible par machine (les clients se basent sur ce code, pas sur le message).

  • Incluez request_id pour le support/corrélation. Ne fuyez jamais les traces de pile ou les éléments internes.

Pagination, filtrage, tri

  • Préférez la pagination par curseur/keyset pour les grands ensembles de données ou les données en direct ; le décalage uniquement pour les ensembles petits et stables.
  • Standardisez les paramètres : ?limit=, ?cursor=, ?sort=, ?filter[status]=.
  • Retournez toujours les métadonnées de pagination (next_cursor, has_more).

Versioning et évolution

  • Versionnez en amont (/v1/) ou via un en-tête ; documentez la politique de dépréciation.
  • Les modifications additives sont sûres (nouveaux champs/endpoints optionnels). La suppression/renommage/retypage de champs est une rupture.
  • Ne réaffectez jamais le sens d'un champ existant. Ajoutez-en un nouveau et dépréciez l'ancien.

Sécurité (vérification croisée avec la règle 02)

  • AuthN en périphérie, AuthZ par requête et par objet (pas d'IDOR).
  • Validez et limitez toutes les entrées ; limitez le débit des endpoints publics.
  • Jetons de portée ; moindre privilège ; n'acceptez jamais une confiance fournie par le client (is_admin dans le corps).

Liste de vérification pour la revue

  • Le modèle de ressource correspond aux cas d'utilisation, pas au schéma de base de données.
  • Nommage/casse/conventions cohérents sur toute la surface.
  • Méthodes HTTP + codes de statut corrects ; idempotence si nécessaire.
  • Une forme d'erreur cohérente et exploitable avec des codes stables + des ID de requête.
  • Pagination par curseur + filtre/tri standardisés.
  • Stratégie de versionnement + règles de rétrocompatibilité énoncées.
  • AuthZ appliquée par objet ; entrées validées ; limites de débit définies.
  • Documenté (OpenAPI/schéma) avec des exemples.

Format de sortie

Lors de la revue, renvoyez les résultats classés Critique → Haute → Moyenne → Basse → Nit, chacun avec le problème, pourquoi il est important pour les clients, et un correctif concret (montrez le contrat corrigé).

Individual skills in this repo

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

Skills associés