[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSXCBYGGBZ57NJSYP1QGV9":3,"skill-same:01M6CSXCBYGGBZ57NJSYP1QGV9":76},{"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":54,"commitSha":55,"skillDirectory":56,"forksCount":14,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6CSXCBYGGBZ57NJSYP1QGV9","orchestrator:parallel",null,"Implémentation parallèle de N issues GitHub via worktrees isolés. Chaque issue est traitée par un agent indépendant. Max 3 agents simultané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\u002Fparallel\u002FSKILL.md",[],[19,20,5,21,22,23,24,25,26,27,28,29,30,31],"parallel","orchestrator","github","issues","Bash","grep","read","write","edit","issue","worktrees","max","task","2026-11-10 10:12:30",false,"---\nname: orchestrator:parallel\ndescription: Implémentation parallèle de N issues GitHub via worktrees isolés. Chaque issue est traitée par un agent indépendant. Max 3 agents simultanés.\nargument-hint: \u003Cissue1> \u003Cissue2> [issue3...]\nmodel: sonnet\nallowed-tools: [Task, TaskCreate, TaskUpdate, TaskList, TeamCreate, TeamDelete, SendMessage, Bash, Read, Write, Edit, Grep, Glob, Skill]\nversion: 1.0.0\nlicense: MIT\n---\n\n# orchestrator:parallel\n\nImplémentation parallèle de N issues via worktrees isolés.\n\n## Instructions à Exécuter\n\n### 1. Parser les numéros d'issues\n\n```bash\nISSUES=($ARGUMENTS)\n```\n\nValider que chaque argument est un numéro valide.\n\n### 2. Health check RAM\n\n```bash\nAVAILABLE_RAM=$(free -m | grep Mem | awk '{print $7}')\n```\n\n- RAM \u003C 2 GB : abort avec message\n- Max 3 agents parallèles (même si plus d'issues)\n- Si plus de 3 issues : traiter par lots de 3\n\n### 3. Créer les worktrees\n\nPour chaque issue :\n\n```bash\nISSUE_TITLE=$(gh issue view $ISSUE_NUMBER --json title -q '.title')\nSLUG=$(echo \"$ISSUE_TITLE\" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd 'a-z0-9-')\ngit worktree add \".worktrees\u002Fissue-${ISSUE_NUMBER}-${SLUG}\" -b \"feature\u002Fissue-${ISSUE_NUMBER}\"\n```\n\n### 4. Créer l'équipe et les tâches\n\n```\nTeamCreate(\"parallel-impl\")\n```\n\nPour chaque issue, créer une tâche :\n```\nTaskCreate : \"Issue #N - {titre}\"\n```\n\n### 5. Spawner les agents (max 3 en parallèle)\n\nPour chaque issue :\n\n```\nTask(\n  subagent_type=\"general-purpose\",\n  team_name=\"parallel-impl\",\n  name=\"impl-{issue_number}\",\n  max_turns=30,\n  prompt=\"\n    Tu travailles dans le worktree .worktrees\u002Fissue-{issue_number}-{slug}.\n    Exécute \u002Forchestrator:feature {issue_number} --auto\n    Quand terminé, signale-le au team lead.\n  \"\n)\n```\n\n### 6. Surveiller la progression\n\n- Attendre les messages des agents\n- Suivre la progression via TaskList\n- Gérer les erreurs (retry ou skip)\n\n### 7. Créer les PRs\n\nPour chaque issue complétée :\n\n```bash\ncd \".worktrees\u002Fissue-${ISSUE_NUMBER}-${SLUG}\"\ngit push -u origin \"feature\u002Fissue-${ISSUE_NUMBER}\"\ngh pr create --title \"feat: ${ISSUE_TITLE}\" --body \"Closes #${ISSUE_NUMBER}\"\n```\n\n### 8. Cleanup\n\n```bash\ngit worktree prune\nTeamDelete()\n```\n\n## Rapport final\n\n```\nImplémentation parallèle terminée\n\n  Issues traitées : X\u002FY\n  PRs créées :\n  - PR #N1 : Issue #101 - {titre} -> {url}\n\n  Echecs : (aucun | liste avec raisons)\n```\n\n## Règles\n\n- Max 3 agents parallèles\n- Worktree isolé par issue\n- Cleanup obligatoire des worktrees\n- TeamDelete après fin de tous les agents\n- Ne jamais créer de commits Git directement (seulement via les agents)\n","# orchestrator:parallel\n\nImplémentation parallèle de N issues via worktrees isolés.\n\n## Instructions à Exécuter\n\n### 1. Parser les numéros d'issues\n\n```bash\nISSUES=($ARGUMENTS)\n```\n\nValider que chaque argument est un numéro valide.\n\n### 2. Health check RAM\n\n```bash\nAVAILABLE_RAM=$(free -m | grep Mem | awk '{print $7}')\n```\n\n- RAM \u003C 2 GB : abort avec message\n- Max 3 agents parallèles (même si plus d'issues)\n- Si plus de 3 issues : traiter par lots de 3\n\n### 3. Créer les worktrees\n\nPour chaque issue :\n\n```bash\nISSUE_TITLE=$(gh issue view $ISSUE_NUMBER --json title -q '.title')\nSLUG=$(echo \"$ISSUE_TITLE\" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd 'a-z0-9-')\ngit worktree add \".worktrees\u002Fissue-${ISSUE_NUMBER}-${SLUG}\" -b \"feature\u002Fissue-${ISSUE_NUMBER}\"\n```\n\n### 4. Créer l'équipe et les tâches\n\n```\nTeamCreate(\"parallel-impl\")\n```\n\nPour chaque issue, créer une tâche :\n```\nTaskCreate : \"Issue #N - {titre}\"\n```\n\n### 5. Spawner les agents (max 3 en parallèle)\n\nPour chaque issue :\n\n```\nTask(\n  subagent_type=\"general-purpose\",\n  team_name=\"parallel-impl\",\n  name=\"impl-{issue_number}\",\n  max_turns=30,\n  prompt=\"\n    Tu travailles dans le worktree .worktrees\u002Fissue-{issue_number}-{slug}.\n    Exécute \u002Forchestrator:feature {issue_number} --auto\n    Quand terminé, signale-le au team lead.\n  \"\n)\n```\n\n### 6. Surveiller la progression\n\n- Attendre les messages des agents\n- Suivre la progression via TaskList\n- Gérer les erreurs (retry ou skip)\n\n### 7. Créer les PRs\n\nPour chaque issue complétée :\n\n```bash\ncd \".worktrees\u002Fissue-${ISSUE_NUMBER}-${SLUG}\"\ngit push -u origin \"feature\u002Fissue-${ISSUE_NUMBER}\"\ngh pr create --title \"feat: ${ISSUE_TITLE}\" --body \"Closes #${ISSUE_NUMBER}\"\n```\n\n### 8. Cleanup\n\n```bash\ngit worktree prune\nTeamDelete()\n```\n\n## Rapport final\n\n```\nImplémentation parallèle terminée\n\n  Issues traitées : X\u002FY\n  PRs créées :\n  - PR #N1 : Issue #101 - {titre} -> {url}\n\n  Echecs : (aucun | liste avec raisons)\n```\n\n## Règles\n\n- Max 3 agents parallèles\n- Worktree isolé par issue\n- Cleanup obligatoire des worktrees\n- TeamDelete après fin de tous les agents\n- Ne jamais créer de commits Git directement (seulement via les agents)\n",{"name":5,"model":37,"license":15,"version":38,"description":7,"allowed-tools":39,"argument-hint":53},"sonnet","1.0.0",[40,41,42,43,44,45,46,23,47,48,49,50,51,52],"Task","TaskCreate","TaskUpdate","TaskList","TeamCreate","TeamDelete","SendMessage","Read","Write","Edit","Grep","Glob","Skill","\u003Cissue1> \u003Cissue2> [issue3...]","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","orchestrator\u002Fskills\u002Fparallel","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:parallel\"",{"tool":68,"command":69},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:parallel\"",{"tool":71,"command":72},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:parallel\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Forchestrator\u002Fskills\u002Fparallel\u002FSKILL.md",true,[],[77,89,129,136,144,155],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"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",[],[84,85,25,27,26,86,24,87,88,23],"twig:make component","component","ux","template","php",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":111,"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",[95,100,103,106],{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":101,"categoryName":102,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":104,"categoryName":105,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[112,113,114,115,116,117,118,119,120,121,122,23,123,124,125,126,25,26,127,128],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"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",[],[131,23,24,25,26,27],{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"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",[],[138,143,23,24,25,26,27],"message",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":153,"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",[150],{"categoryNo":151,"categoryName":152,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000005","邮件与沟通",[146,27,154,23,87,24,25,26],"email",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"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",[],[157,23,24,25,26,27,162,121],"options"]