Our review
Audits an existing API Platform project and produces a structured report on best practices, security, performance, and configuration consistency.
Strengths
- Comprehensive coverage of critical aspects: configuration, security, performance
- Automatic detection of resources and their operations
- Generates a detailed report with scores and recommendations
Limitations
- Only works with API Platform projects following standard conventions
- May miss advanced custom configurations
- Security analysis is limited to configuration-level checks, not penetration testing
During code review or before deploying an API Platform project to production to ensure compliance with standards.
If the project does not use API Platform or requires deeper security testing with external tools.
Security analysis
SafeThe skill performs a read-only audit of an API Platform project using standard developer tools (grep, composer, etc.). No destructive commands, network calls, or exfiltration are instructed. The risk is minimal.
No concerns found
Examples
Run the API Platform audit skill on the current project and produce a full report.Audit the API Platform project located at /var/www/my-api and check for best practices.name: api-platform:audit description: Audite un projet API Platform existant et produit un rapport de bonnes pratiques, performances et sécurité model: sonnet allowed-tools: [Read, Grep, Glob, Bash] version: 1.0.0 license: MIT
API Platform Audit
Audite un projet API Platform existant pour vérifier les bonnes pratiques, la sécurité, les performances et la cohérence de configuration.
Instructions à Exécuter
IMPORTANT : Exécute ce workflow étape par étape :
1. Détecter la configuration API Platform
- Vérifier
composer.jsonpour la version d'API Platform installée - Chercher la configuration dans
config/packages/api_platform.yamlouconfig/packages/api_platform.php - Identifier le format de configuration utilisé (attributs PHP, YAML, XML)
2. Inventorier les resources API
- Chercher tous les fichiers avec
#[ApiResource]via Grep - Chercher les configurations YAML/XML si utilisées
- Pour chaque resource, noter :
- Opérations exposées
- Groupes de sérialisation
- Filtres configurés
- Configuration de sécurité
- State providers/processors personnalisés
3. Audit des bonnes pratiques
Vérifier pour chaque resource :
Configuration :
- [ ] Opérations explicitement déclarées (pas les opérations par défaut implicites)
- [ ] Groupes de sérialisation configurés (read/write séparés)
- [ ] Pagination configurée (pas de pagination désactivée sans raison)
- [ ] Format de réponse cohérent (JSON-LD, JSON:API, HAL)
Sécurité :
- [ ] Attribut
securitydéfini sur les opérations sensibles (POST, PUT, PATCH, DELETE) - [ ] Pas d'exposition de données sensibles (mots de passe, tokens, données internes)
- [ ] Validation configurée sur les opérations d'écriture
- [ ] CORS correctement configuré (
nelmio_cors) - [ ] Rate limiting si exposé publiquement
Performances :
- [ ] HTTP caching configuré (Cache-Control, ETag, Vary)
- [ ] Eager loading pour éviter les requêtes N+1 (forceEager, fetchEager)
- [ ] Index Doctrine sur les colonnes filtrées/triées
- [ ] Pagination activée avec une taille de page raisonnable (pas de
pagination_enabled: falsesur de grandes collections) - [ ] Groupes de sérialisation limitant les données retournées
Architecture :
- [ ] DTOs utilisés quand la représentation diffère de l'entité
- [ ] State Providers/Processors pour la logique métier complexe
- [ ] Pas de logique métier dans les entités Doctrine
- [ ] Extensions Doctrine pour le filtrage global (soft delete, tenant)
4. Audit de la configuration globale
Vérifier dans config/packages/api_platform.yaml :
api_platform:
title: 'Mon API' # Titre défini
version: '1.0.0' # Version définie
formats: # Formats explicites
jsonld: ['application/ld+json']
defaults:
pagination_items_per_page: 30 # Pagination par défaut raisonnable
pagination_client_enabled: true # Contrôle client de la pagination
mapping:
paths: ['%kernel.project_dir%/src/Entity']
5. Audit des tests
- Chercher les tests API dans
tests/avec Grep - Vérifier la couverture de tests :
- [ ] Tests pour chaque resource exposée
- [ ] Tests de validation
- [ ] Tests de sécurité (accès non autorisé)
- [ ] Tests de filtres
6. Audit des dépendances
- Vérifier les versions des packages API Platform dans
composer.lock - Identifier les versions obsolètes
- Vérifier la compatibilité entre packages
7. Produire le rapport d'audit
Générer un rapport structuré :
## Rapport d'audit API Platform
### Résumé
- Resources API : {nombre}
- Opérations totales : {nombre}
- Score global : {score}/100
### Resources auditées
| Resource | Opérations | Sécurité | Sérialisation | Filtres | Tests |
|----------|-----------|----------|---------------|---------|-------|
| Product | 6/6 | OK | OK | 3 | Oui |
| User | 4/6 | WARN | MISSING | 0 | Non |
### Problèmes critiques
1. [CRITIQUE] Resource User sans sécurité sur POST
2. [CRITIQUE] Mot de passe exposé dans la sérialisation User
### Avertissements
1. [WARN] Pas de groupes de sérialisation sur Product
2. [WARN] Pagination désactivée sur LargeCollection
### Recommandations
1. Ajouter security: "is_granted('ROLE_ADMIN')" sur User POST
2. Ajouter #[Groups(['user:read'])] et exclure le mot de passe
3. Configurer le HTTP caching pour les resources en lecture seule
### Couverture de tests
- Resources testées : {x}/{total}
- Tests manquants : {liste}
### Versions
- api-platform/core: {version} (dernière: {dernière})
- symfony/framework-bundle: {version}
Critères d'audit
Score de sécurité (sur 40)
| Critère | Points | |---------|--------| | Security sur opérations d'écriture | 15 | | Pas de données sensibles exposées | 10 | | Validation sur les inputs | 10 | | CORS configuré | 5 |
Score de qualité (sur 30)
| Critère | Points | |---------|--------| | Groupes de sérialisation | 10 | | Opérations explicites | 10 | | DTOs quand nécessaire | 5 | | Documentation OpenAPI | 5 |
Score de performance (sur 15)
| Critère | Points | |---------|--------| | HTTP caching | 5 | | Pagination configurée | 5 | | Pas de N+1 queries | 5 |
Score de tests (sur 15)
| Critère | Points | |---------|--------| | Couverture des resources | 10 | | Tests de sécurité | 5 |
Notes
- L'audit est en lecture seule, aucune modification n'est effectuée
- Le rapport peut être sauvegardé dans
docs/audit/si demandé - Les scores sont indicatifs et basés sur les bonnes pratiques API Platform
- Relancer l'audit après corrections pour vérifier l'amélioration
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.