Synthèse automatique
Guide de conventions pas à pas pour ajouter un nouvel endpoint API dans le projet BookingSystem.Api (DTO, service, contrôleur, autorisation, tests).
Points forts
- Séquence ordonnée et explicite (DTOs → service → contrôleur → autorisation → tests) qui rend le travail reproductible
- Inclut une règle concrète sur les lectures-écritures concurrentes avec renvoi d'un résultat « conflit » plutôt qu'une exception
- Précise les codes de statut attendus (Ok/Created/Conflict/NotFound) et interdit le 500 nu pour un cas prévisible
- Rappelle les tests xUnit obligatoires, y compris un test de concurrence basé sur ConcurrencyTests.cs
Limites
- Fortement couplé à l'architecture et aux noms de fichiers d'un projet précis (BookingSystem.Api), peu réutilisable tel quel ailleurs
- Ne détaille pas la syntaxe exacte des DTOs, services ou du pattern d'update conditionnel, il faut se référer au code existant
- L'étape frontend reste vague et suppose le helper api() déjà présent dans frontend/app.js
À utiliser lorsqu'on ajoute ou modifie un endpoint dans BookingSystem.Api et qu'on veut respecter les conventions existantes du dépôt.
À éviter pour un autre projet, une autre stack, ou pour des tâches sans rapport avec la création d'endpoints (refonte de schéma, CI, documentation).
Analyse de sécurité
SûrThis is a pure procedural/editorial guideline document describing how to add an endpoint in a .NET codebase. It declares no tools, contains no executable commands beyond standard `dotnet build && dotnet test` verification, and performs no network, filesystem-destructive, obfuscated, or exfiltration actions. No prompt-injection or instruction-override attempts were present in the content.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Add a POST /api/bookings/{id}/cancel endpoint to BookingSystem.Api, following the project conventions.Add an admin-only GET endpoint that lists all bookings for a given slot, with authorization and tests.Add an endpoint that reassigns a booking to another slot, make it safe against concurrent writes, and cover it with a concurrency test.name: add-booking-endpoint description: Use when adding a new API endpoint to BookingSystem.Api, to keep controller/service/DTO/test structure consistent with the rest of the codebase.
Adding a new endpoint to BookingSystem.Api
Follow this sequence so new endpoints match the codebase's conventions (see CLAUDE.md):
- DTOs first. Add request/response
recordtypes to the relevant file inDTOs/(e.g.BookingDtos.cs). Never expose an EF entity directly from a controller. - Service method. If the endpoint does anything beyond a simple CRUD read, add the
logic to the matching interface + implementation in
Services/(e.g.IBookingService/BookingService), not directly in the controller.- If the new logic reads then writes state that another request could also be
writing concurrently, do NOT use a plain read-then-write. Use an atomic
conditional
UPDATE ... WHERE(seeBookingService.CreateBookingAsync) or an EF Core concurrency token, and return a distinguishable "conflict" outcome rather than throwing.
- If the new logic reads then writes state that another request could also be
writing concurrently, do NOT use a plain read-then-write. Use an atomic
conditional
- Controller action. Thin method: model-bind the request DTO, call the service,
map the result to the response DTO / appropriate status code
(
Ok/Created/Conflict/NotFound— never a bare 500 for an expected outcome like "lost the race"). - Authorization. Add
[Authorize](already on the controller by default) and[Authorize(Roles = Roles.Admin)]on the action if it's an admin-only operation. - Test. Add an xUnit test in
BookingSystem.Testsfor the happy path and for the conflict/error path. If the endpoint touches shared mutable state (like a booking or slot), add or extend a concurrency test modeled onConcurrencyTests.cs: fire several requests withTask.WhenAlland assert exactly one wins. - Frontend (optional). If the endpoint needs a UI, add a small function to
frontend/app.jsfollowing the existingapi()helper pattern — no new frontend framework or build step.
Run dotnet build && dotnet test before considering the change done.
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/add-a-bookingsystem-api-endpoint-mvda873q/download' --output '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md.part' && mv '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md.part' '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md' && test -s '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/add-booking-endpoint' && cp -R '.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q' '.claude/skills/add-booking-endpoint'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q'openskills read 'add-a-bookingsystem-api-endpoint-mvda873q'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/add-a-bookingsystem-api-endpoint-mvda873q/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.