← ClaudeAtlas

service-definelisted

Déclare un service Symfony/Sylius — autowiring, autoconfiguration, `resource`, privé/public, env (`#[When]`). Déclenche sur "créer service", "enregistrer service", "autowire", "services.yaml". Impose injection constructeur.
gabrielmustiere/skills · ★ 1 · AI & Automation · score 73
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