[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSW5GE1FFQ0GXBNWFST0A6":3,"skill-same:01M6CSW5GE1FFQ0GXBNWFST0A6":73},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":14,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":6,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6CSW5GE1FFQ0GXBNWFST0A6","implementer:fix-issue",null,"Corriger une issue GitHub avec workflow structuré et efficace","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\u002Fimplementer\u002Fskills\u002Ffix-issue\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"fix issue","fix","implementer","issue","implementer:fix issue","github","workflow","Bash","grep","read","write","edit","task","2026-11-10 10:12:30",false,"---\nname: implementer:fix-issue\ndescription: Corriger une issue GitHub avec workflow structuré et efficace\nargument-hint: [issue-number]\nmodel: sonnet\nallowed-tools: [Bash, Read, Write, Edit, Grep, Glob, Task, TaskCreate, TaskUpdate, TaskList]\nversion: 1.0.0\nlicense: MIT\n---\n\n# Correction d'Issue GitHub\n\nCorriger une issue GitHub de manière structurée et efficace.\n\n## Variables\n\nISSUE_NUMBER: $ARGUMENTS (obligatoire)\n\n## Instructions à Exécuter\n\n**IMPORTANT : Exécute ce workflow étape par étape :**\n\n### Initialisation\n\nCréer les tâches du workflow :\n\n```\nTaskCreate #1: Analyse de l'issue\nTaskCreate #2: Préparation de l'environnement (branche)\nTaskCreate #3: Investigation du code\nTaskCreate #4: Implémentation de la solution\nTaskCreate #5: Validation et tests\nTaskCreate #6: Finalisation (informer utilisateur)\n```\n\n- Utiliser `activeForm` pour chaque tâche (ex: \"Analysant l'issue\", \"Implémentant la solution\")\n- Chaque tâche doit être marquée `in_progress` puis `completed`\n\n### Phase 1 : Analyse de l'issue\n\n`TaskUpdate` #1 → `in_progress`\n\n- Récupérer les détails : `gh issue view $ISSUE_NUMBER`\n- Analyser le problème : type (bug, feature, enhancement), priorité, description\n- Identifier les fichiers\u002Fmodules concernés\n\n`TaskUpdate` #1 → `completed`\n\n### Phase 2 : Préparation de l'environnement\n\n`TaskUpdate` #2 → `in_progress`\n\n- Vérifier le statut git actuel\n- S'assurer d'être sur la bonne branche de base (develop\u002Fmain)\n- Créer une branche de travail : `issue\u002F$ISSUE_NUMBER-{description-courte}`\n\n`TaskUpdate` #2 → `completed`\n\n### Phase 3 : Investigation du code\n\n`TaskUpdate` #3 → `in_progress`\n\n- Localiser les fichiers concernés par l'issue\n- Comprendre le code existant et identifier la cause du problème\n- Analyser l'impact de la modification sur les autres parties du système\n- Identifier les dépendances et side-effects potentiels\n\n`TaskUpdate` #3 → `completed`\n\n### Phase 4 : Implémentation de la solution\n\n`TaskUpdate` #4 → `in_progress`\n\n- Implémenter la correction en respectant :\n  - Standards PHP 8.2+ avec typage strict\n  - Conventions de nommage du projet\n  - Documentation des exceptions avec `@throws`\n- Éviter les changements inutiles ou trop larges\n- Maintenir la cohérence avec l'architecture existante\n\n`TaskUpdate` #4 → `completed`\n\n### Phase 5 : Validation et tests\n\n`TaskUpdate` #5 → `in_progress`\n\n- Exécuter les tests existants : `make run-unit-php` (ou équivalent)\n- Ajouter des tests si nécessaire pour couvrir le nouveau code\n- Vérifier avec PHPStan : ZÉRO erreur acceptée\n- Tester la solution manuellement si applicable\n\n`TaskUpdate` #5 → `completed`\n\n### Phase 6 : Finalisation\n\n`TaskUpdate` #6 → `in_progress`\n\n- Informer l'utilisateur du résultat\n- Ne pas faire de commit\n\n`TaskUpdate` #6 → `completed`\n\n## Rapport\n\n```\nIssue #X analysée : {titre} ({type})\nBranche créée : issue\u002F$ISSUE_NUMBER-{description}\nFichiers modifiés :\n- [fichier] : [résumé des changements]\nTests : verts\nPHPStan : 0 erreur\n```\n\n## Règles\n\n- `ISSUE_NUMBER` doit être fourni et exister sur GitHub\n- Branche de travail créée avec convention de nommage\n- Solution respectant les standards du projet\n- PHPStan passe sans erreur (CRITIQUE)\n- Tests unitaires passent\n- Ne JAMAIS créer de commits Git\n","# Correction d'Issue GitHub\n\nCorriger une issue GitHub de manière structurée et efficace.\n\n## Variables\n\nISSUE_NUMBER: $ARGUMENTS (obligatoire)\n\n## Instructions à Exécuter\n\n**IMPORTANT : Exécute ce workflow étape par étape :**\n\n### Initialisation\n\nCréer les tâches du workflow :\n\n```\nTaskCreate #1: Analyse de l'issue\nTaskCreate #2: Préparation de l'environnement (branche)\nTaskCreate #3: Investigation du code\nTaskCreate #4: Implémentation de la solution\nTaskCreate #5: Validation et tests\nTaskCreate #6: Finalisation (informer utilisateur)\n```\n\n- Utiliser `activeForm` pour chaque tâche (ex: \"Analysant l'issue\", \"Implémentant la solution\")\n- Chaque tâche doit être marquée `in_progress` puis `completed`\n\n### Phase 1 : Analyse de l'issue\n\n`TaskUpdate` #1 → `in_progress`\n\n- Récupérer les détails : `gh issue view $ISSUE_NUMBER`\n- Analyser le problème : type (bug, feature, enhancement), priorité, description\n- Identifier les fichiers\u002Fmodules concernés\n\n`TaskUpdate` #1 → `completed`\n\n### Phase 2 : Préparation de l'environnement\n\n`TaskUpdate` #2 → `in_progress`\n\n- Vérifier le statut git actuel\n- S'assurer d'être sur la bonne branche de base (develop\u002Fmain)\n- Créer une branche de travail : `issue\u002F$ISSUE_NUMBER-{description-courte}`\n\n`TaskUpdate` #2 → `completed`\n\n### Phase 3 : Investigation du code\n\n`TaskUpdate` #3 → `in_progress`\n\n- Localiser les fichiers concernés par l'issue\n- Comprendre le code existant et identifier la cause du problème\n- Analyser l'impact de la modification sur les autres parties du système\n- Identifier les dépendances et side-effects potentiels\n\n`TaskUpdate` #3 → `completed`\n\n### Phase 4 : Implémentation de la solution\n\n`TaskUpdate` #4 → `in_progress`\n\n- Implémenter la correction en respectant :\n  - Standards PHP 8.2+ avec typage strict\n  - Conventions de nommage du projet\n  - Documentation des exceptions avec `@throws`\n- Éviter les changements inutiles ou trop larges\n- Maintenir la cohérence avec l'architecture existante\n\n`TaskUpdate` #4 → `completed`\n\n### Phase 5 : Validation et tests\n\n`TaskUpdate` #5 → `in_progress`\n\n- Exécuter les tests existants : `make run-unit-php` (ou équivalent)\n- Ajouter des tests si nécessaire pour couvrir le nouveau code\n- Vérifier avec PHPStan : ZÉRO erreur acceptée\n- Tester la solution manuellement si applicable\n\n`TaskUpdate` #5 → `completed`\n\n### Phase 6 : Finalisation\n\n`TaskUpdate` #6 → `in_progress`\n\n- Informer l'utilisateur du résultat\n- Ne pas faire de commit\n\n`TaskUpdate` #6 → `completed`\n\n## Rapport\n\n```\nIssue #X analysée : {titre} ({type})\nBranche créée : issue\u002F$ISSUE_NUMBER-{description}\nFichiers modifiés :\n- [fichier] : [résumé des changements]\nTests : verts\nPHPStan : 0 erreur\n```\n\n## Règles\n\n- `ISSUE_NUMBER` doit être fourni et exister sur GitHub\n- Branche de travail créée avec convention de nommage\n- Solution respectant les standards du projet\n- PHPStan passe sans erreur (CRITIQUE)\n- Tests unitaires passent\n- Ne JAMAIS créer de commits Git\n",{"name":5,"model":37,"license":15,"version":38,"description":7,"allowed-tools":39,"argument-hint":49},"sonnet","1.0.0",[26,40,41,42,43,44,45,46,47,48],"Read","Write","Edit","Grep","Glob","Task","TaskCreate","TaskUpdate","TaskList",[50],"issue-number","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","implementer\u002Fskills\u002Ffix-issue","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":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add atournayre\u002Fclaude-personas --skill \"implementer:fix-issue\"",{"tool":65,"command":66},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"implementer:fix-issue\"",{"tool":68,"command":69},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"implementer:fix-issue\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fimplementer\u002Fskills\u002Ffix-issue\u002FSKILL.md",true,[],[74,86,126,133,141,152],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":32},"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",[],[81,82,28,30,29,83,27,84,85,26],"twig:make component","component","ux","template","php",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":108,"publishedAt":32},"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",[92,97,100,103],{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":98,"categoryName":99,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":101,"categoryName":102,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[109,110,111,112,113,114,115,116,117,118,119,26,120,121,122,123,28,29,124,125],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":32},"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",[],[128,26,27,28,29,30],{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":32},"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",[],[135,140,26,27,28,29,30],"message",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":150,"publishedAt":32},"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",[147],{"categoryNo":148,"categoryName":149,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000005","邮件与沟通",[143,30,151,26,84,27,28,29],"email",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":32},"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",[],[154,26,27,28,29,30,159,118],"options"]