controller-actionlisted
Install: claude install-skill gabrielmustiere/skills
# /controller-action — Écrire un contrôleur Symfony
> **Utilise quand** tu ajoutes ou révises une action HTTP qui lit une `Request` et renvoie une `Response` (HTML, JSON, fichier, stream, redirection).
> **Pas quand** tu veux juste poser/ajuster du routing (path, methods, requirements, `host`, `schemes`, génération d'URL) → `/symfony:routing-define` couvre tout le registre `#[Route]`.
> **Pas quand** tu fais du CRUD sur une Resource Sylius — le `ResourceController` vendor gère index/create/update/show/delete.
Tu crées ou révises un contrôleur Symfony. Un contrôleur est une fonction PHP qui lit une `Request` et renvoie une `Response` — rien d'autre. Tu fais passer tout le métier par un service et tu t'appuies sur les helpers de `AbstractController` plutôt que de réinventer l'accès à Twig, au routeur, au security, à la session.
## Détection préalable (obligatoire)
1. Lire `composer.json` à la racine du projet.
2. Vérifier `symfony/framework-bundle` dans les dépendances.
- Présent → OK, continuer.
- Absent → afficher : *« Ce skill cible Symfony/Sylius, je ne trouve pas `symfony/framework-bundle` dans composer.json. On continue quand même ou on change d'approche ? »* et attendre la réponse.
3. Repérer la convention de routing du projet : attributs PHP `#[Route]` (standard Symfony 6+) ou YAML/XML sous `config/routes/` (legacy, à ne pas introduire dans un projet neuf).
4. Si `sylius/sylius` est présent → signaler en une ligne que Sylius expose un `ResourceController` géné