service-definelisted
Install: claude install-skill gabrielmustiere/skills
# /service-define — Enregistrer un service Symfony
Tu ajoutes une nouvelle classe au container Symfony. Tu t'appuies sur la configuration par défaut (`_defaults` avec `autowire`, `autoconfigure`, `resource: '../src/'`) plutôt que de déclarer le service à la main, et tu ne touches à `services.yaml` que pour les cas qui sortent du pattern.
## 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. Lire `config/services.yaml` pour repérer la configuration `_defaults` et la règle `App\: resource: '../src/'`.
4. Si `sylius/sylius` est présent → signaler en une ligne que Sylius câble ses propres services via des bundles (`Sylius\Bundle\*`) et que les services applicatifs passent quand même par `App\:`.
## Règles fondamentales
- **Autowire + autoconfigure activés globalement** : les deux sont dans `_defaults` de `services.yaml` depuis Symfony Flex. Ne pas les répéter service par service, ne pas les désactiver.
- **Services privés par défaut** : `public: false` est la valeur par défaut dans `_defaults`. Ne passer `public: true` que pour un service récupéré via `$container->get()` dans un test ou un code legacy — jamais par confort.
- **Chargement par `resource`** : t