[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSXS856JSDSPYAF1E374DB":3,"skill-same:01M6CSXS856JSDSPYAF1E374DB":163},{"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":23,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":14,"repositoryHtmlUrl":51,"repositoryHomepageUrl":52,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6CSXS856JSDSPYAF1E374DB","orchestrator:validate",null,"Vérifie la checklist (PHP, API ou sécurité) avant exécution. Effectue les vérifications automatiques (PHPStan, PSR-12, tests, Elegant Objects, sécurité) et liste les points à vérifier manuellement.","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\u002Forchestrator\u002Fskills\u002Fvalidate\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,5,26,27,28,29,30,31,32,33,34],"validate","orchestrator","directory","security","api","Bash","php","grep","read","checklist","objects","2026-11-10 10:12:30",false,"---\nname: orchestrator:validate\ndescription: Vérifie la checklist (PHP, API ou sécurité) avant exécution. Effectue les vérifications automatiques (PHPStan, PSR-12, tests, Elegant Objects, sécurité) et liste les points à vérifier manuellement.\nargument-hint: \"[--checklist=php|api|security] [--path=\u003Cdirectory>]\"\nmodel: sonnet\nallowed-tools: [Read, Bash, Grep, Glob, AskUserQuestion]\nversion: 1.0.0\nlicense: MIT\n---\n\n# orchestrator:validate\n\nValidation de checklist avant exécution du code.\n\n## Instructions à Exécuter\n\n### 1. Parser les arguments\n\n```\n\u002Forchestrator:validate [--checklist=\u003Cname>] [--path=\u003Cdirectory>]\n```\n\n- `--checklist=php` (défaut), `api`, `security`\n- `--path=src\u002F` (défaut : `src\u002F`)\n\n### 2. Lire la checklist\n\nChercher dans `prompt\u002Ftemplates\u002Fchecklists\u002F{checklist}.md` ou équivalent dans le projet.\n\n### 3. Vérifications automatiques\n\n**PHPStan :**\n```bash\n.\u002Fvendor\u002Fbin\u002Fphpstan analyse --error-format=raw 2>\u002Fdev\u002Fnull | head -20\n```\n\n**PSR-12 :**\n```bash\n.\u002Fvendor\u002Fbin\u002Fphp-cs-fixer fix --dry-run --diff 2>\u002Fdev\u002Fnull | head -20\n```\n\n**Tests :**\n```bash\n.\u002Fvendor\u002Fbin\u002Fphpunit --list-tests 2>\u002Fdev\u002Fnull | wc -l\n```\n\n**Elegant Objects (via Grep) :**\n```bash\n# Classes sans final\ngrep -r \"^class \" --include=\"*.php\" {path} | grep -v \"final\"\n# Setters\ngrep -r \"public function set\" --include=\"*.php\" {path}\n```\n\n**Sécurité (via Grep) :**\n```bash\ngrep -rn \"password\\s*=\" --include=\"*.php\" {path}\ngrep -rn \"->query(\" --include=\"*.php\" {path}\n```\n\n### 4. Générer le rapport\n\n```\nValidation : checklist-{name}.md\n\nVérifications automatiques\n\n  PHPStan niveau 9 : 0 erreur\n  PSR-12 : conforme\n  Classes non final : 3 fichiers\n  Setters détectés : 2 occurrences\n  Tests présents : 47 tests\n\nVérifications manuelles requises\n\n  - [ ] Pattern AAA dans les tests\n  - [ ] Cas edge cases couverts\n\nRésumé\n\n  | Catégorie | Passé | Echoué | Manuel |\n  |-----------|-------|--------|--------|\n  | Code      | 3     | 1      | 2      |\n\nScore : 6\u002F10 Corrections requises avant exécution\n```\n\n### 5. Recommandations si points échouent\n\n```\nCorrections suggérées :\n\n1. Classes non final :\n   -> Ajouter `final` devant `class`\n\n2. Setters détectés :\n   -> Remplacer par factory statique\n```\n\n## Codes de sortie\n\n- `0` : Tout validé\n- `1` : Avertissements — peut continuer avec prudence\n- `2` : Erreurs bloquantes — corriger avant exécution\n\n## Exemples\n\n```bash\n\u002Forchestrator:validate\n\u002Forchestrator:validate --checklist=api\n\u002Forchestrator:validate --checklist=security --path=src\u002FSecurity\u002F\n```\n","# orchestrator:validate\n\nValidation de checklist avant exécution du code.\n\n## Instructions à Exécuter\n\n### 1. Parser les arguments\n\n```\n\u002Forchestrator:validate [--checklist=\u003Cname>] [--path=\u003Cdirectory>]\n```\n\n- `--checklist=php` (défaut), `api`, `security`\n- `--path=src\u002F` (défaut : `src\u002F`)\n\n### 2. Lire la checklist\n\nChercher dans `prompt\u002Ftemplates\u002Fchecklists\u002F{checklist}.md` ou équivalent dans le projet.\n\n### 3. Vérifications automatiques\n\n**PHPStan :**\n```bash\n.\u002Fvendor\u002Fbin\u002Fphpstan analyse --error-format=raw 2>\u002Fdev\u002Fnull | head -20\n```\n\n**PSR-12 :**\n```bash\n.\u002Fvendor\u002Fbin\u002Fphp-cs-fixer fix --dry-run --diff 2>\u002Fdev\u002Fnull | head -20\n```\n\n**Tests :**\n```bash\n.\u002Fvendor\u002Fbin\u002Fphpunit --list-tests 2>\u002Fdev\u002Fnull | wc -l\n```\n\n**Elegant Objects (via Grep) :**\n```bash\n# Classes sans final\ngrep -r \"^class \" --include=\"*.php\" {path} | grep -v \"final\"\n# Setters\ngrep -r \"public function set\" --include=\"*.php\" {path}\n```\n\n**Sécurité (via Grep) :**\n```bash\ngrep -rn \"password\\s*=\" --include=\"*.php\" {path}\ngrep -rn \"->query(\" --include=\"*.php\" {path}\n```\n\n### 4. Générer le rapport\n\n```\nValidation : checklist-{name}.md\n\nVérifications automatiques\n\n  PHPStan niveau 9 : 0 erreur\n  PSR-12 : conforme\n  Classes non final : 3 fichiers\n  Setters détectés : 2 occurrences\n  Tests présents : 47 tests\n\nVérifications manuelles requises\n\n  - [ ] Pattern AAA dans les tests\n  - [ ] Cas edge cases couverts\n\nRésumé\n\n  | Catégorie | Passé | Echoué | Manuel |\n  |-----------|-------|--------|--------|\n  | Code      | 3     | 1      | 2      |\n\nScore : 6\u002F10 Corrections requises avant exécution\n```\n\n### 5. Recommandations si points échouent\n\n```\nCorrections suggérées :\n\n1. Classes non final :\n   -> Ajouter `final` devant `class`\n\n2. Setters détectés :\n   -> Remplacer par factory statique\n```\n\n## Codes de sortie\n\n- `0` : Tout validé\n- `1` : Avertissements — peut continuer avec prudence\n- `2` : Erreurs bloquantes — corriger avant exécution\n\n## Exemples\n\n```bash\n\u002Forchestrator:validate\n\u002Forchestrator:validate --checklist=api\n\u002Forchestrator:validate --checklist=security --path=src\u002FSecurity\u002F\n```\n",{"name":5,"model":40,"license":15,"version":41,"description":7,"allowed-tools":42,"argument-hint":47},"sonnet","1.0.0",[43,29,44,45,46],"Read","Grep","Glob","AskUserQuestion","[--checklist=php|api|security] [--path=\u003Cdirectory>]","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","orchestrator\u002Fskills\u002Fvalidate","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":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:validate\"",{"tool":62,"command":63},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:validate\"",{"tool":65,"command":66},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:validate\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Forchestrator\u002Fskills\u002Fvalidate\u002FSKILL.md",true,[70,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,159],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"_meta.json","REFERENCE","参考文档",390,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002F_meta.json",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"AGENTS.md",10864,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002FAGENTS.md",{"path":81,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fjavascript-ethers.md",2497,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fjavascript-ethers.md",{"path":85,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fjavascript-multichain.md",2656,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fjavascript-multichain.md",{"path":89,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fjavascript-solana.md",2022,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fjavascript-solana.md",{"path":93,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fjavascript-wagmi.md",2588,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fjavascript-wagmi.md",{"path":97,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fnextjs-ethers.md",2878,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fnextjs-ethers.md",{"path":101,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fnextjs-multichain.md",3459,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fnextjs-multichain.md",{"path":105,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fnextjs-solana.md",2541,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fnextjs-solana.md",{"path":109,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":110,"sourceHtmlUrl":111},"references\u002Fnextjs-wagmi.md",4016,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fnextjs-wagmi.md",{"path":113,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":114,"sourceHtmlUrl":115},"references\u002Fnuxt-wagmi.md",4087,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fnuxt-wagmi.md",{"path":117,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":118,"sourceHtmlUrl":119},"references\u002Freact-bitcoin.md",2078,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Freact-bitcoin.md",{"path":121,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":122,"sourceHtmlUrl":123},"references\u002Freact-ethers.md",3796,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Freact-ethers.md",{"path":125,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":126,"sourceHtmlUrl":127},"references\u002Freact-multichain.md",4251,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Freact-multichain.md",{"path":129,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":130,"sourceHtmlUrl":131},"references\u002Freact-solana.md",3256,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Freact-solana.md",{"path":133,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":134,"sourceHtmlUrl":135},"references\u002Freact-wagmi.md",3993,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Freact-wagmi.md",{"path":137,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":138,"sourceHtmlUrl":139},"references\u002Fsvelte-wagmi.md",4113,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fsvelte-wagmi.md",{"path":141,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":142,"sourceHtmlUrl":143},"references\u002Fvue-ethers.md",2272,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fvue-ethers.md",{"path":145,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":146,"sourceHtmlUrl":147},"references\u002Fvue-multichain.md",1895,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fvue-multichain.md",{"path":149,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":150,"sourceHtmlUrl":151},"references\u002Fvue-solana.md",1878,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fvue-solana.md",{"path":153,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":154,"sourceHtmlUrl":155},"references\u002Fvue-wagmi.md",2780,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002Freferences\u002Fvue-wagmi.md",{"path":157,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":158},"SOURCE.md","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002FSOURCE.md",{"path":160,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":161,"sourceHtmlUrl":162},"TRUST.auto.yaml",2182,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Freown-official-skills\u002FTRUST.auto.yaml",[164,177,215,222,230,241],{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":35},"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",[],[171,172,32,173,174,175,31,176,30,29],"twig:make component","component","edit","write","ux","template",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":197,"publishedAt":35},"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",[183,186,189,192],{"categoryNo":184,"categoryName":185,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":187,"categoryName":188,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":190,"categoryName":191,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":193,"categoryName":194,"taxonomyType":195,"taxonomyTypeDesc":196},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[198,199,200,201,202,203,204,205,206,207,208,29,209,210,211,212,32,174,213,214],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":219,"categories":220,"keywords":221,"publishedAt":35},"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",[],[217,29,31,32,174,173],{"skillNo":223,"name":224,"nameZh":6,"description":225,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":226,"categories":227,"keywords":228,"publishedAt":35},"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",[],[224,229,29,31,32,174,173],"message",{"skillNo":231,"name":232,"nameZh":6,"description":233,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":234,"categories":235,"keywords":239,"publishedAt":35},"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",[236],{"categoryNo":237,"categoryName":238,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",[232,173,240,29,176,31,32,174],"email",{"skillNo":242,"name":243,"nameZh":6,"description":244,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":245,"categories":246,"keywords":247,"publishedAt":35},"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",[],[243,29,31,32,174,173,248,207],"options"]