[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSX7MHG7Y3JRCGCEKEN818":3,"skill-same:01M6CSX7MHG7Y3JRCGCEKEN818":150},{"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":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":14,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6CSX7MHG7Y3JRCGCEKEN818","orchestrator:feature",null,"Workflow complet de développement de feature. Mode interactif (description texte) avec 8 phases et checkpoints utilisateur. Mode automatique (numéro issue GitHub) avec 10 phases sans interaction. Utilise worktrees, task management et agents spécialisés.","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\u002Ffeature\u002FSKILL.md",[],[19,5,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"orchestrator","github","workflow","sans","Bash","task management","grep","read","write","edit","management","auto","issue","worktrees","task","2026-11-10 10:12:30",false,"---\nname: orchestrator:feature\ndescription: Workflow complet de développement de feature. Mode interactif (description texte) avec 8 phases et checkpoints utilisateur. Mode automatique (numéro issue GitHub) avec 10 phases sans interaction. Utilise worktrees, task management et agents spécialisés.\nargument-hint: \u003Cdescription-feature> | \u003Cissue-number> [--auto]\nmodel: sonnet\nallowed-tools: [Read, Write, Edit, Grep, Glob, Task, TaskCreate, TaskUpdate, TaskList, AskUserQuestion, Bash, Skill]\nversion: 1.0.0\nlicense: MIT\n---\n\n# orchestrator:feature\n\nOrchestrateur du workflow de développement. Selon les arguments, lance le mode interactif ou automatique.\n\n## Détection du mode\n\n- Si l'argument est un numéro entier ou contient `--auto` : **mode automatique** (10 phases, 0 interaction)\n- Sinon : **mode interactif** (8 phases, checkpoints utilisateur)\n\n## Mode Interactif\n\nWorkflow en 8 phases avec checkpoints. Feature décrite en texte libre.\n\n### Initialisation\n\n1. Proposer création d'un worktree (optionnel) via AskUserQuestion\n2. Créer `.claude\u002Fdata\u002F.dev-workflow-state.json`\n3. Créer les tâches du workflow via TaskCreate :\n   - #0 Discover, #1 Explore, #2 Clarify, #3 Design, #4 Plan, #5 Code, #6 Review, #7 Summary\n   - #8 Cleanup (uniquement si worktree créé)\n\n### Phases (0 → 7)\n\nAvant chaque phase : `TaskUpdate` → `in_progress`, enregistrer timestamp.\nAprès chaque phase : calculer durée, `TaskUpdate` → `completed`.\n\n- **Phase 0 Discover** : Comprendre le besoin. Checkpoint : confirmer compréhension.\n- **Phase 1 Explore** : Explorer le codebase.\n- **Phase 2 Clarify** : Questions de clarification. Checkpoint : attendre toutes les réponses.\n- **Phase 3 Design** : Proposer architectures. Checkpoint : attendre choix d'architecture.\n- **Phase 4 Plan** : Générer les specs.\n- **Phase 5 Code** : Checkpoint approbation → implémenter.\n- **Phase 6 Review** : QA complète. Checkpoint : fix now \u002F fix later \u002F proceed.\n- **Phase 7 Summary** : Résumé final avec récapitulatif des temps.\n- **Phase 8 Cleanup** (si worktree) : Proposer nettoyage.\n\n### Checkpoints obligatoires\n\nPhases 0, 2, 3, 5, 6. Ne jamais sauter de phase.\n\n## Mode Automatique\n\nWorkflow en 10 phases SANS interaction utilisateur. Input : numéro issue GitHub.\n\n### Prérequis\n\nExécuter `orchestrator:check-prerequisites`. Exit 1 si quelque chose manque.\n\n### Phases (0 → 10)\n\n- **Phase 0** : Vérifier prérequis via `orchestrator:check-prerequisites`\n- **Phase 1** : Fetch issue via `orchestrator:fetch-issue $ARGUMENTS`\n- **Phase 2** : Worktree OBLIGATOIRE créé automatiquement\n- **Phase 3** : Discover (heuristiques, pas d'interaction)\n- **Phase 4** : Explore (time-box 5 minutes)\n- **Phase 5** : Clarify (heuristiques automatiques)\n- **Phase 6** : Design (choisit Pragmatic Balance automatiquement)\n- **Phase 7** : Plan (sans interaction)\n- **Phase 8** : Code (implémente directement)\n- **Phase 9** : Review (boucle auto-fix max 3 tentatives)\n- **Phase 10** : Cleanup worktree + créer PR via git:pr\n\n### Règles mode auto\n\n- 0 checkpoints utilisateur\n- Worktree OBLIGATOIRE (création + cleanup automatiques)\n- CI DOIT PASSER (PHPStan niveau 9, tests)\n- Rollback automatique en cas d'erreur bloquante\n- PR créée automatiquement\n\n### Gestion des erreurs (mode auto)\n\nSi une phase échoue :\n1. Logger dans `.claude\u002Fdata\u002Fworkflows\u002Fissue-{N}-dev-workflow-state.json`\n2. `git reset --hard HEAD@{0}`\n3. Supprimer le worktree\n4. Exit code 1 avec message explicite\n\n## Affichage du statut\n\nÀ chaque transition de phase, afficher :\n\n```\n? Workflow : {feature}\n\n  ✅ 0. Discover   (1m 23s)\n  ? 1. Explore    ← En cours\n  ⬜ 2. Clarify\n  ...\n```\n\n## Format des durées\n\n- `\u003C 60s` → `{X}s`\n- `\u003C 60min` → `{X}m {Y}s`\n- `>= 60min` → `{X}h {Y}m`\n\n## Fichier d'état\n\nMode interactif : `.claude\u002Fdata\u002F.dev-workflow-state.json`\nMode auto : `.claude\u002Fdata\u002Fworkflows\u002Fissue-{N}-dev-workflow-state.json`\n\n## Sans arguments\n\nAfficher l'aide complète avec exemples d'utilisation.\n","# orchestrator:feature\n\nOrchestrateur du workflow de développement. Selon les arguments, lance le mode interactif ou automatique.\n\n## Détection du mode\n\n- Si l'argument est un numéro entier ou contient `--auto` : **mode automatique** (10 phases, 0 interaction)\n- Sinon : **mode interactif** (8 phases, checkpoints utilisateur)\n\n## Mode Interactif\n\nWorkflow en 8 phases avec checkpoints. Feature décrite en texte libre.\n\n### Initialisation\n\n1. Proposer création d'un worktree (optionnel) via AskUserQuestion\n2. Créer `.claude\u002Fdata\u002F.dev-workflow-state.json`\n3. Créer les tâches du workflow via TaskCreate :\n   - #0 Discover, #1 Explore, #2 Clarify, #3 Design, #4 Plan, #5 Code, #6 Review, #7 Summary\n   - #8 Cleanup (uniquement si worktree créé)\n\n### Phases (0 → 7)\n\nAvant chaque phase : `TaskUpdate` → `in_progress`, enregistrer timestamp.\nAprès chaque phase : calculer durée, `TaskUpdate` → `completed`.\n\n- **Phase 0 Discover** : Comprendre le besoin. Checkpoint : confirmer compréhension.\n- **Phase 1 Explore** : Explorer le codebase.\n- **Phase 2 Clarify** : Questions de clarification. Checkpoint : attendre toutes les réponses.\n- **Phase 3 Design** : Proposer architectures. Checkpoint : attendre choix d'architecture.\n- **Phase 4 Plan** : Générer les specs.\n- **Phase 5 Code** : Checkpoint approbation → implémenter.\n- **Phase 6 Review** : QA complète. Checkpoint : fix now \u002F fix later \u002F proceed.\n- **Phase 7 Summary** : Résumé final avec récapitulatif des temps.\n- **Phase 8 Cleanup** (si worktree) : Proposer nettoyage.\n\n### Checkpoints obligatoires\n\nPhases 0, 2, 3, 5, 6. Ne jamais sauter de phase.\n\n## Mode Automatique\n\nWorkflow en 10 phases SANS interaction utilisateur. Input : numéro issue GitHub.\n\n### Prérequis\n\nExécuter `orchestrator:check-prerequisites`. Exit 1 si quelque chose manque.\n\n### Phases (0 → 10)\n\n- **Phase 0** : Vérifier prérequis via `orchestrator:check-prerequisites`\n- **Phase 1** : Fetch issue via `orchestrator:fetch-issue $ARGUMENTS`\n- **Phase 2** : Worktree OBLIGATOIRE créé automatiquement\n- **Phase 3** : Discover (heuristiques, pas d'interaction)\n- **Phase 4** : Explore (time-box 5 minutes)\n- **Phase 5** : Clarify (heuristiques automatiques)\n- **Phase 6** : Design (choisit Pragmatic Balance automatiquement)\n- **Phase 7** : Plan (sans interaction)\n- **Phase 8** : Code (implémente directement)\n- **Phase 9** : Review (boucle auto-fix max 3 tentatives)\n- **Phase 10** : Cleanup worktree + créer PR via git:pr\n\n### Règles mode auto\n\n- 0 checkpoints utilisateur\n- Worktree OBLIGATOIRE (création + cleanup automatiques)\n- CI DOIT PASSER (PHPStan niveau 9, tests)\n- Rollback automatique en cas d'erreur bloquante\n- PR créée automatiquement\n\n### Gestion des erreurs (mode auto)\n\nSi une phase échoue :\n1. Logger dans `.claude\u002Fdata\u002Fworkflows\u002Fissue-{N}-dev-workflow-state.json`\n2. `git reset --hard HEAD@{0}`\n3. Supprimer le worktree\n4. Exit code 1 avec message explicite\n\n## Affichage du statut\n\nÀ chaque transition de phase, afficher :\n\n```\n? Workflow : {feature}\n\n  ✅ 0. Discover   (1m 23s)\n  ? 1. Explore    ← En cours\n  ⬜ 2. Clarify\n  ...\n```\n\n## Format des durées\n\n- `\u003C 60s` → `{X}s`\n- `\u003C 60min` → `{X}m {Y}s`\n- `>= 60min` → `{X}h {Y}m`\n\n## Fichier d'état\n\nMode interactif : `.claude\u002Fdata\u002F.dev-workflow-state.json`\nMode auto : `.claude\u002Fdata\u002Fworkflows\u002Fissue-{N}-dev-workflow-state.json`\n\n## Sans arguments\n\nAfficher l'aide complète avec exemples d'utilisation.\n",{"name":5,"model":39,"license":15,"version":40,"description":7,"allowed-tools":41,"argument-hint":53},"sonnet","1.0.0",[42,43,44,45,46,47,48,49,50,51,23,52],"Read","Write","Edit","Grep","Glob","Task","TaskCreate","TaskUpdate","TaskList","AskUserQuestion","Skill","\u003Cdescription-feature> | \u003Cissue-number> [--auto]","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","orchestrator\u002Fskills\u002Ffeature","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":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:feature\"",{"tool":68,"command":69},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:feature\"",{"tool":71,"command":72},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:feature\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Forchestrator\u002Fskills\u002Ffeature\u002FSKILL.md",true,[76,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"Examples\u002Fcanonical-isa.md","REFERENCE","参考文档",18388,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fcanonical-isa.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"Examples\u002Fe1-minimal.md",1647,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe1-minimal.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"Examples\u002Fe2-backup-verify.md",5575,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe2-backup-verify.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"Examples\u002Fe2-rotate-credential.md",5579,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe2-rotate-credential.md",{"path":95,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":97},"Examples\u002Fe3-essay.md",13331,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe3-essay.md",{"path":99,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":100,"sourceHtmlUrl":101},"Examples\u002Fe3-help-redesign.md",13034,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe3-help-redesign.md",{"path":103,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":104,"sourceHtmlUrl":105},"Examples\u002Fe3-project.md",4156,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe3-project.md",{"path":107,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":108,"sourceHtmlUrl":109},"Examples\u002Fe4-api-migration.md",25952,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe4-api-migration.md",{"path":111,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":112,"sourceHtmlUrl":113},"Examples\u002Fe4-brand-identity.md",24927,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe4-brand-identity.md",{"path":115,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":116,"sourceHtmlUrl":117},"Examples\u002Fe5-album.md",21673,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe5-album.md",{"path":119,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":120,"sourceHtmlUrl":121},"Examples\u002Fe5-desktop-app.md",21626,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe5-desktop-app.md",{"path":123,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":124,"sourceHtmlUrl":125},"Examples\u002Fe5-enterprise.md",38008,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FExamples\u002Fe5-enterprise.md",{"path":127,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":128,"sourceHtmlUrl":129},"Workflows\u002FAppend.md",5799,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FWorkflows\u002FAppend.md",{"path":131,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":132,"sourceHtmlUrl":133},"Workflows\u002FCheckCompleteness.md",5363,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FWorkflows\u002FCheckCompleteness.md",{"path":135,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":136,"sourceHtmlUrl":137},"Workflows\u002FInterview.md",4565,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FWorkflows\u002FInterview.md",{"path":139,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":140,"sourceHtmlUrl":141},"Workflows\u002FReconcile.md",5881,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FWorkflows\u002FReconcile.md",{"path":143,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":144,"sourceHtmlUrl":145},"Workflows\u002FScaffold.md",5917,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FWorkflows\u002FScaffold.md",{"path":147,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":148,"sourceHtmlUrl":149},"Workflows\u002FSeed.md",6979,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FISA\u002Fsrc\u002FWorkflows\u002FSeed.md",[151,163,203,210,218,229],{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":34},"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",[],[158,159,26,28,27,160,25,161,162,23],"twig:make component","component","ux","template","php",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":185,"publishedAt":34},"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",[169,174,177,180],{"categoryNo":170,"categoryName":171,"taxonomyType":172,"taxonomyTypeDesc":173},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":175,"categoryName":176,"taxonomyType":172,"taxonomyTypeDesc":173},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":178,"categoryName":179,"taxonomyType":172,"taxonomyTypeDesc":173},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":181,"categoryName":182,"taxonomyType":183,"taxonomyTypeDesc":184},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[186,187,188,189,190,191,192,193,194,195,196,23,197,198,199,200,26,27,201,202],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":209,"publishedAt":34},"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",[],[205,23,25,26,27,28],{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":216,"publishedAt":34},"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",[],[212,217,23,25,26,27,28],"message",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":222,"categories":223,"keywords":227,"publishedAt":34},"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",[224],{"categoryNo":225,"categoryName":226,"taxonomyType":172,"taxonomyTypeDesc":173},"01JBSEEDCAT000000000000005","邮件与沟通",[220,28,228,23,161,25,26,27],"email",{"skillNo":230,"name":231,"nameZh":6,"description":232,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":233,"categories":234,"keywords":235,"publishedAt":34},"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",[],[231,23,25,26,27,28,236,195],"options"]