[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CST7NSRME9KG3FF40MAR87":3,"skill-same:01M6CST7NSRME9KG3FF40MAR87":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":14,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6CST7NSRME9KG3FF40MAR87","api-platform:make-provider",null,"Génère un State Provider API Platform pour personnaliser la récupération de données","atournayre\u002Fclaude-personas","atournayre","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4262077?v=4","01M6CSSGYW0E0D0M3E2T6J9X2Z","Aurélien Tournayre","01M6CSSH3DENJF2XWZ41H0F43K",0,"MIT","https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fapi-platform\u002Fskills\u002Fmake-provider\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37],"api","provider","api platform:make provider","state","Bash","grep","read","write","edit","2026-11-10 10:12:30",false,"---\nname: api-platform:make-provider\ndescription: Génère un State Provider API Platform pour personnaliser la récupération de données\nargument-hint: \u003Cnom-resource>\nmodel: sonnet\nallowed-tools: [AskUserQuestion, Bash, Read, Write, Edit, Grep, Glob]\nversion: 1.0.0\nlicense: MIT\n---\n\n# API Platform Make Provider\n\nGénère un State Provider personnalisé pour API Platform. Les providers sont responsables de la récupération des données pour les opérations de lecture (GET, GetCollection).\n\n## Variables\n- **{ResourceName}** - Nom de la resource en PascalCase\n- **{providerType}** - Type : item, collection, ou les deux\n- **{namespace}** - Namespace du projet (défaut: App)\n\n## Outputs\n- `src\u002FState\u002F{ResourceName}Provider.php`\n\n## Instructions à Exécuter\n\n**IMPORTANT : Exécute ce workflow étape par étape :**\n\n### 1. Identifier la resource cible\n\n- Si `$ARGUMENTS` est fourni, utiliser comme nom de la resource\n- Sinon, utiliser AskUserQuestion :\n  ```\n  Question: \"Pour quelle resource créer un State Provider ?\"\n  Header: \"Resource\"\n  ```\n\n### 2. Vérifier la resource existante\n\n- Chercher `src\u002FEntity\u002F{ResourceName}.php` ou `src\u002FApiResource\u002F{ResourceName}.php` avec Glob\n- Si la resource existe, lire le fichier pour comprendre sa structure\n- Si la resource n'existe pas, informer l'utilisateur et proposer `\u002Fapi-platform:make-resource`\n\n### 3. Choisir le type de provider\n\n- Utiliser AskUserQuestion :\n  ```\n  Question: \"Quel type de provider créer ?\"\n  Header: \"Type\"\n  Options:\n    - \"Complet (Recommandé)\" : \"Gère à la fois les items (Get) et les collections (GetCollection)\"\n    - \"Item uniquement\" : \"Gère uniquement la récupération d'un item (Get)\"\n    - \"Collection uniquement\" : \"Gère uniquement la récupération de collections (GetCollection)\"\n  ```\n\n### 4. Choisir la source de données\n\n- Utiliser AskUserQuestion :\n  ```\n  Question: \"Quelle est la source de données ?\"\n  Header: \"Source\"\n  Options:\n    - \"Doctrine (Recommandé)\" : \"Décorer le provider Doctrine existant pour ajouter de la logique\"\n    - \"Service externe\" : \"API tierce, microservice, ou autre source\"\n    - \"Custom\" : \"Logique métier complexe, agrégation de sources multiples\"\n  ```\n\n### 5. Détecter le namespace du projet\n\n- Lire `composer.json` avec Read\n- Extraire le namespace depuis `autoload.psr-4`\n- Si non trouvé, utiliser `App` par défaut\n\n### 6. Générer le State Provider\n\n**Provider décorant Doctrine :**\n\n```php\n\u003C?php\n\ndeclare(strict_types=1);\n\nnamespace {namespace}\\State;\n\nuse ApiPlatform\\Metadata\\CollectionOperationInterface;\nuse ApiPlatform\\Metadata\\Operation;\nuse ApiPlatform\\State\\ProviderInterface;\n\n\u002F**\n * @implements ProviderInterface\u003C{ResourceName}>\n *\u002F\nfinal readonly class {ResourceName}Provider implements ProviderInterface\n{\n    public function __construct(\n        private ProviderInterface $decorated,\n    ) {\n    }\n\n    public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null\n    {\n        if ($operation instanceof CollectionOperationInterface) {\n            return $this->provideCollection($operation, $uriVariables, $context);\n        }\n\n        return $this->provideItem($operation, $uriVariables, $context);\n    }\n\n    private function provideCollection(Operation $operation, array $uriVariables, array $context): iterable\n    {\n        $items = $this->decorated->provide($operation, $uriVariables, $context);\n\n        \u002F\u002F Logique personnalisée sur la collection\n        return $items;\n    }\n\n    private function provideItem(Operation $operation, array $uriVariables, array $context): ?object\n    {\n        $item = $this->decorated->provide($operation, $uriVariables, $context);\n\n        \u002F\u002F Logique personnalisée sur l'item\n        return $item;\n    }\n}\n```\n\n**Provider depuis source externe :**\n\n```php\n\u003C?php\n\ndeclare(strict_types=1);\n\nnamespace {namespace}\\State;\n\nuse ApiPlatform\\Metadata\\CollectionOperationInterface;\nuse ApiPlatform\\Metadata\\Operation;\nuse ApiPlatform\\State\\ProviderInterface;\nuse {namespace}\\ApiResource\\{ResourceName};\n\n\u002F**\n * @implements ProviderInterface\u003C{ResourceName}>\n *\u002F\nfinal readonly class {ResourceName}Provider implements ProviderInterface\n{\n    public function __construct(\n        \u002F\u002F Injecter le client HTTP ou le service métier\n    ) {\n    }\n\n    public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null\n    {\n        if ($operation instanceof CollectionOperationInterface) {\n            \u002F\u002F Récupérer et retourner la collection\n            return [];\n        }\n\n        \u002F\u002F Récupérer et retourner un item\n        $id = $uriVariables['id'] ?? null;\n\n        return null;\n    }\n}\n```\n\n### 7. Configurer le service (si décoration Doctrine)\n\n- Vérifier si `config\u002Fservices.yaml` existe\n- Informer l'utilisateur de la configuration nécessaire si autoconfiguration Symfony :\n\n```yaml\n# config\u002Fservices.yaml\nservices:\n    App\\State\\{ResourceName}Provider:\n        arguments:\n            $decorated: '@api_platform.doctrine.orm.state.item_provider'\n        # Ou pour décorer le collection provider :\n        # $decorated: '@api_platform.doctrine.orm.state.collection_provider'\n```\n\n### 8. Mettre à jour la resource\n\n- Lire la resource avec Read\n- Ajouter le provider dans l'attribut `#[ApiResource]` :\n\n```php\n#[ApiResource(\n    provider: {ResourceName}Provider::class,\n)]\n```\n\n### 9. Afficher le résumé\n\n```\nState Provider {ResourceName}Provider généré\n\nFichiers créés :\n- src\u002FState\u002F{ResourceName}Provider.php\n\nConfiguration requise :\n- Vérifier config\u002Fservices.yaml (si décoration Doctrine)\n\nResource mise à jour :\n- provider: {ResourceName}Provider::class ajouté\n\nProchaines étapes :\n- Implémenter la logique métier dans provide()\n- Créer le processor associé : \u002Fapi-platform:make-processor {ResourceName}\n- Tester : \u002Fapi-platform:make-test {ResourceName}\n```\n\n## Patterns appliqués\n\n### State Provider\n- Implémente `ProviderInterface`\n- Classe `final readonly`\n- Séparation item\u002Fcollection dans des méthodes privées\n- Décoration du provider Doctrine pour ajouter de la logique\n\n### Bonnes pratiques\n- Ne pas dupliquer la logique Doctrine si elle peut être décorée\n- Utiliser `CollectionOperationInterface` pour distinguer item\u002Fcollection\n- Typer le template générique `ProviderInterface\u003CResourceName>`\n- Retourner `null` pour un item non trouvé (API Platform gère le 404)\n\n## Notes\n- Le provider est appelé pour toutes les opérations de lecture (GET)\n- Pour les opérations d'écriture, utiliser un State Processor\n- La pagination est gérée automatiquement si le provider retourne un `Paginator`\n- Le provider Doctrine peut être décoré pour ajouter des filtres custom, du contrôle d'accès, etc.\n","# API Platform Make Provider\n\nGénère un State Provider personnalisé pour API Platform. Les providers sont responsables de la récupération des données pour les opérations de lecture (GET, GetCollection).\n\n## Variables\n- **{ResourceName}** - Nom de la resource en PascalCase\n- **{providerType}** - Type : item, collection, ou les deux\n- **{namespace}** - Namespace du projet (défaut: App)\n\n## Outputs\n- `src\u002FState\u002F{ResourceName}Provider.php`\n\n## Instructions à Exécuter\n\n**IMPORTANT : Exécute ce workflow étape par étape :**\n\n### 1. Identifier la resource cible\n\n- Si `$ARGUMENTS` est fourni, utiliser comme nom de la resource\n- Sinon, utiliser AskUserQuestion :\n  ```\n  Question: \"Pour quelle resource créer un State Provider ?\"\n  Header: \"Resource\"\n  ```\n\n### 2. Vérifier la resource existante\n\n- Chercher `src\u002FEntity\u002F{ResourceName}.php` ou `src\u002FApiResource\u002F{ResourceName}.php` avec Glob\n- Si la resource existe, lire le fichier pour comprendre sa structure\n- Si la resource n'existe pas, informer l'utilisateur et proposer `\u002Fapi-platform:make-resource`\n\n### 3. Choisir le type de provider\n\n- Utiliser AskUserQuestion :\n  ```\n  Question: \"Quel type de provider créer ?\"\n  Header: \"Type\"\n  Options:\n    - \"Complet (Recommandé)\" : \"Gère à la fois les items (Get) et les collections (GetCollection)\"\n    - \"Item uniquement\" : \"Gère uniquement la récupération d'un item (Get)\"\n    - \"Collection uniquement\" : \"Gère uniquement la récupération de collections (GetCollection)\"\n  ```\n\n### 4. Choisir la source de données\n\n- Utiliser AskUserQuestion :\n  ```\n  Question: \"Quelle est la source de données ?\"\n  Header: \"Source\"\n  Options:\n    - \"Doctrine (Recommandé)\" : \"Décorer le provider Doctrine existant pour ajouter de la logique\"\n    - \"Service externe\" : \"API tierce, microservice, ou autre source\"\n    - \"Custom\" : \"Logique métier complexe, agrégation de sources multiples\"\n  ```\n\n### 5. Détecter le namespace du projet\n\n- Lire `composer.json` avec Read\n- Extraire le namespace depuis `autoload.psr-4`\n- Si non trouvé, utiliser `App` par défaut\n\n### 6. Générer le State Provider\n\n**Provider décorant Doctrine :**\n\n```php\n\u003C?php\n\ndeclare(strict_types=1);\n\nnamespace {namespace}\\State;\n\nuse ApiPlatform\\Metadata\\CollectionOperationInterface;\nuse ApiPlatform\\Metadata\\Operation;\nuse ApiPlatform\\State\\ProviderInterface;\n\n\u002F**\n * @implements ProviderInterface\u003C{ResourceName}>\n *\u002F\nfinal readonly class {ResourceName}Provider implements ProviderInterface\n{\n    public function __construct(\n        private ProviderInterface $decorated,\n    ) {\n    }\n\n    public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null\n    {\n        if ($operation instanceof CollectionOperationInterface) {\n            return $this->provideCollection($operation, $uriVariables, $context);\n        }\n\n        return $this->provideItem($operation, $uriVariables, $context);\n    }\n\n    private function provideCollection(Operation $operation, array $uriVariables, array $context): iterable\n    {\n        $items = $this->decorated->provide($operation, $uriVariables, $context);\n\n        \u002F\u002F Logique personnalisée sur la collection\n        return $items;\n    }\n\n    private function provideItem(Operation $operation, array $uriVariables, array $context): ?object\n    {\n        $item = $this->decorated->provide($operation, $uriVariables, $context);\n\n        \u002F\u002F Logique personnalisée sur l'item\n        return $item;\n    }\n}\n```\n\n**Provider depuis source externe :**\n\n```php\n\u003C?php\n\ndeclare(strict_types=1);\n\nnamespace {namespace}\\State;\n\nuse ApiPlatform\\Metadata\\CollectionOperationInterface;\nuse ApiPlatform\\Metadata\\Operation;\nuse ApiPlatform\\State\\ProviderInterface;\nuse {namespace}\\ApiResource\\{ResourceName};\n\n\u002F**\n * @implements ProviderInterface\u003C{ResourceName}>\n *\u002F\nfinal readonly class {ResourceName}Provider implements ProviderInterface\n{\n    public function __construct(\n        \u002F\u002F Injecter le client HTTP ou le service métier\n    ) {\n    }\n\n    public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null\n    {\n        if ($operation instanceof CollectionOperationInterface) {\n            \u002F\u002F Récupérer et retourner la collection\n            return [];\n        }\n\n        \u002F\u002F Récupérer et retourner un item\n        $id = $uriVariables['id'] ?? null;\n\n        return null;\n    }\n}\n```\n\n### 7. Configurer le service (si décoration Doctrine)\n\n- Vérifier si `config\u002Fservices.yaml` existe\n- Informer l'utilisateur de la configuration nécessaire si autoconfiguration Symfony :\n\n```yaml\n# config\u002Fservices.yaml\nservices:\n    App\\State\\{ResourceName}Provider:\n        arguments:\n            $decorated: '@api_platform.doctrine.orm.state.item_provider'\n        # Ou pour décorer le collection provider :\n        # $decorated: '@api_platform.doctrine.orm.state.collection_provider'\n```\n\n### 8. Mettre à jour la resource\n\n- Lire la resource avec Read\n- Ajouter le provider dans l'attribut `#[ApiResource]` :\n\n```php\n#[ApiResource(\n    provider: {ResourceName}Provider::class,\n)]\n```\n\n### 9. Afficher le résumé\n\n```\nState Provider {ResourceName}Provider généré\n\nFichiers créés :\n- src\u002FState\u002F{ResourceName}Provider.php\n\nConfiguration requise :\n- Vérifier config\u002Fservices.yaml (si décoration Doctrine)\n\nResource mise à jour :\n- provider: {ResourceName}Provider::class ajouté\n\nProchaines étapes :\n- Implémenter la logique métier dans provide()\n- Créer le processor associé : \u002Fapi-platform:make-processor {ResourceName}\n- Tester : \u002Fapi-platform:make-test {ResourceName}\n```\n\n## Patterns appliqués\n\n### State Provider\n- Implémente `ProviderInterface`\n- Classe `final readonly`\n- Séparation item\u002Fcollection dans des méthodes privées\n- Décoration du provider Doctrine pour ajouter de la logique\n\n### Bonnes pratiques\n- Ne pas dupliquer la logique Doctrine si elle peut être décorée\n- Utiliser `CollectionOperationInterface` pour distinguer item\u002Fcollection\n- Typer le template générique `ProviderInterface\u003CResourceName>`\n- Retourner `null` pour un item non trouvé (API Platform gère le 404)\n\n## Notes\n- Le provider est appelé pour toutes les opérations de lecture (GET)\n- Pour les opérations d'écriture, utiliser un State Processor\n- La pagination est gérée automatiquement si le provider retourne un `Paginator`\n- Le provider Doctrine peut être décoré pour ajouter des filtres custom, du contrôle d'accès, etc.\n",{"name":5,"model":43,"license":15,"version":44,"description":7,"allowed-tools":45,"argument-hint":52},"sonnet","1.0.0",[46,33,47,48,49,50,51],"AskUserQuestion","Read","Write","Edit","Grep","Glob","\u003Cnom-resource>","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","api-platform\u002Fskills\u002Fmake-provider","https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas","https:\u002F\u002Fatournayre.github.io\u002Fclaude-personas\u002F","https:\u002F\u002Fgithub.com\u002Fatournayre","🔵, Back End Developer, @symfony  :heart:, @rectorphp :heart:,  \r\n:bug: fixer (creator sometimes 🤫), member of @afup","2026-03-02 23:42:20",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add atournayre\u002Fclaude-personas --skill \"api-platform:make-provider\"",{"tool":67,"command":68},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"api-platform:make-provider\"",{"tool":70,"command":71},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"api-platform:make-provider\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fapi-platform\u002Fskills\u002Fmake-provider\u002FSKILL.md",true,[],[76,88,124,131,139,150],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":38},"01M6CSZPR0W1K1S9BX3247CZJ1","twig:make-component","Génère un Twig Component Symfony UX (classe PHP + template Twig)","https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Ftwig\u002Fskills\u002Fmake-component\u002FSKILL.md",[],[83,84,35,37,36,85,34,86,87,33],"twig:make component","component","ux","template","php",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":106,"publishedAt":38},"01M6CSZKCYYT4EAW4CDSTS3TSH","tester:ui-test","Teste automatiquement une interface utilisateur dans Chrome : navigation, clics, validation visuelle, tests fonctionnels, responsive, comportement et debug. Génère un rapport détaillé avec screenshots et optionnellement un GIF du parcours.","https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Ftester\u002Fskills\u002Fui-test\u002FSKILL.md",[94,97,100,103],{"categoryNo":95,"categoryName":96,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":101,"categoryName":102,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":104,"categoryName":105,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师",[107,108,109,110,111,112,113,114,115,116,117,33,118,119,120,121,35,36,122,123],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":38},"01M6CSZGQ8X9XNXRBYX0AA3CYE","symfony:voter","Genere un Voter de securite Symfony pour le controle d'acces granulaire","https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fsymfony\u002Fskills\u002Fvoter\u002FSKILL.md",[],[126,33,34,35,36,37],{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":38},"01M6CSZEJ3BNHCNZT18SYFGDME","symfony:message","Genere un Message Symfony Messenger avec son Handler pour traitement asynchrone","https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fsymfony\u002Fskills\u002Fmessage\u002FSKILL.md",[],[133,138,33,34,35,36,37],"message",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":148,"publishedAt":38},"01M6CSZBWSK9M6YMJX886BVWYF","symfony:mailer","Genere un email Symfony (TemplatedEmail ou Notification) avec template Twig","https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fsymfony\u002Fskills\u002Fmailer\u002FSKILL.md",[145],{"categoryNo":146,"categoryName":147,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",[141,37,149,33,86,34,35,36],"email",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":156,"publishedAt":38},"01M6CSZ9DXMYZ9HTRE8A324AWG","symfony:form","Genere un FormType Symfony avec contraintes de validation et options","https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fsymfony\u002Fskills\u002Fform\u002FSKILL.md",[],[152,33,34,35,36,37,157,116],"options"]