[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSSSP3SNMGTWBY6XZAH8WG":3,"skill-same:01M6CSSSP3SNMGTWBY6XZAH8WG":107},{"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":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":14,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6CSSSP3SNMGTWBY6XZAH8WG","analyst:explore",null,"Explorer le codebase avec agents parallèles - Phase 1 (supporte le mode automatique)","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\u002Fanalyst\u002Fskills\u002Fexplore\u002FSKILL.md",[],[19,5,20,21,22,23],"explore","grep","read","explorer","task","2026-11-10 10:12:30",false,"---\nname: analyst:explore\ndescription: Explorer le codebase avec agents parallèles - Phase 1 (supporte le mode automatique)\nmodel: sonnet\nallowed-tools: [Task, Read, Glob, Grep, TaskCreate, TaskUpdate, TaskList]\nversion: 1.0.0\nlicense: MIT\n---\n\n# Explorer le codebase (Phase 1)\n\n## Instructions à Exécuter\n\n**IMPORTANT : Exécute ce workflow étape par étape :**\n\nPhase 1 du workflow de développement : explorer le codebase pour comprendre les patterns existants.\n\n# Instructions\n\n## 1. Lire le contexte\n\n- Lire `.claude\u002Fdata\u002F.dev-workflow-state.json` pour connaître la feature en cours\n- Si le fichier n'existe pas, demander à l'utilisateur de lancer `\u002Fanalyst:discover` d'abord\n  (en mode automatique : exit avec erreur code 1)\n\n## 2. Créer les tâches d'exploration (mode interactif)\n\nEn mode interactif, utiliser `TaskCreate` pour chaque agent :\n\n```\nTaskCreate #1: Explorer features similaires (explore-codebase)\nTaskCreate #2: Mapper architecture et abstractions (explore-codebase)\nTaskCreate #3: Analyser intégrations (explore-codebase) - optionnel\nTaskCreate #4: Consolider résultats et présenter résumé\n```\n\n- Tâche #3 optionnelle selon pertinence de la feature\n- Tâche #4 bloquée par les agents 1-3 (utiliser `addBlockedBy`)\n- Les agents 1-3 se lancent en parallèle\n\n## 3. Lancer les agents d'exploration\n\nLancer **2-3 agents en parallèle** avec des focus différents.\n\n**Limites d'exploration :**\n- `max_turns: 10` pour chaque agent\n- Si un agent atteint sa limite sans résultats, marquer tâche comme completed avec résultats partiels\n- Chaque prompt agent doit inclure : \"Tu as maximum 10 tours. Retourne tes meilleurs résultats partiels si tu atteins la limite.\"\n\n### Agent 1 : Features similaires\n```\nTu as maximum 10 tours. Retourne tes meilleurs résultats partiels si tu atteins la limite.\n\nTrouve des features similaires à \"{feature}\" dans le codebase.\nTrace leur implémentation de bout en bout.\nRetourne les 5-10 fichiers clés à lire.\n```\n\n### Agent 2 : Architecture\n```\nTu as maximum 10 tours. Retourne tes meilleurs résultats partiels si tu atteins la limite.\n\nMappe l'architecture et les abstractions pour la zone concernée par \"{feature}\".\nIdentifie les patterns utilisés (repositories, services, events, etc.).\nRetourne les 5-10 fichiers clés à lire.\n```\n\n### Agent 3 : Intégrations (si pertinent)\n```\nTu as maximum 10 tours. Retourne tes meilleurs résultats partiels si tu atteins la limite.\n\nAnalyse les points d'intégration existants (APIs, events, commands).\nIdentifie comment les features communiquent entre elles.\nRetourne les 5-10 fichiers clés à lire.\n```\n\n## 4. Consolider les résultats\n\n- Fusionner les listes de fichiers identifiés\n- Lire les fichiers clés pour construire une compréhension profonde\n- Identifier les patterns récurrents\n\n## 5. Présenter le résumé\n\n```\nExploration du codebase\n\n**Features similaires trouvées :**\n- {feature 1} ({chemin}) : {description courte}\n- {feature 2} ({chemin}) : {description courte}\n\n**Patterns architecturaux identifiés :**\n- {pattern 1} : utilisé dans {fichiers}\n- {pattern 2} : utilisé dans {fichiers}\n\n**Fichiers clés à connaître :**\n1. `{fichier}:{ligne}` - {rôle}\n2. `{fichier}:{ligne}` - {rôle}\n...\n\n**Points d'attention :**\n- {observation 1}\n- {observation 2}\n```\n\n## 6. Finaliser\n\nMettre à jour `.claude\u002Fdata\u002F.dev-workflow-state.json`\n\n```json\n{\n  \"currentPhase\": 1,\n  \"phases\": {\n    \"1\": {\n      \"status\": \"completed\",\n      \"completedAt\": \"{ISO timestamp}\",\n      \"durationMs\": \"{durée}\",\n      \"keyFiles\": [\"{liste des fichiers clés}\"],\n      \"patterns\": [\"{patterns identifiés}\"],\n      \"findings\": \"{résumé des découvertes}\"\n    }\n  }\n}\n```\n\n# Règles\n\n- Lancer les agents en parallèle si disponibles\n- Documenter les patterns trouvés\n- En mode automatique : aucune interaction, exit 1 si erreur\n- En mode interactif : utiliser TaskCreate\u002FTaskUpdate pour suivi de progression\n\n# Prochaine étape\n\n```\nExploration terminée\n\nProchaine étape : \u002Fanalyst:clarify pour poser les questions de clarification\n```\n","# Explorer le codebase (Phase 1)\n\n## Instructions à Exécuter\n\n**IMPORTANT : Exécute ce workflow étape par étape :**\n\nPhase 1 du workflow de développement : explorer le codebase pour comprendre les patterns existants.\n\n# Instructions\n\n## 1. Lire le contexte\n\n- Lire `.claude\u002Fdata\u002F.dev-workflow-state.json` pour connaître la feature en cours\n- Si le fichier n'existe pas, demander à l'utilisateur de lancer `\u002Fanalyst:discover` d'abord\n  (en mode automatique : exit avec erreur code 1)\n\n## 2. Créer les tâches d'exploration (mode interactif)\n\nEn mode interactif, utiliser `TaskCreate` pour chaque agent :\n\n```\nTaskCreate #1: Explorer features similaires (explore-codebase)\nTaskCreate #2: Mapper architecture et abstractions (explore-codebase)\nTaskCreate #3: Analyser intégrations (explore-codebase) - optionnel\nTaskCreate #4: Consolider résultats et présenter résumé\n```\n\n- Tâche #3 optionnelle selon pertinence de la feature\n- Tâche #4 bloquée par les agents 1-3 (utiliser `addBlockedBy`)\n- Les agents 1-3 se lancent en parallèle\n\n## 3. Lancer les agents d'exploration\n\nLancer **2-3 agents en parallèle** avec des focus différents.\n\n**Limites d'exploration :**\n- `max_turns: 10` pour chaque agent\n- Si un agent atteint sa limite sans résultats, marquer tâche comme completed avec résultats partiels\n- Chaque prompt agent doit inclure : \"Tu as maximum 10 tours. Retourne tes meilleurs résultats partiels si tu atteins la limite.\"\n\n### Agent 1 : Features similaires\n```\nTu as maximum 10 tours. Retourne tes meilleurs résultats partiels si tu atteins la limite.\n\nTrouve des features similaires à \"{feature}\" dans le codebase.\nTrace leur implémentation de bout en bout.\nRetourne les 5-10 fichiers clés à lire.\n```\n\n### Agent 2 : Architecture\n```\nTu as maximum 10 tours. Retourne tes meilleurs résultats partiels si tu atteins la limite.\n\nMappe l'architecture et les abstractions pour la zone concernée par \"{feature}\".\nIdentifie les patterns utilisés (repositories, services, events, etc.).\nRetourne les 5-10 fichiers clés à lire.\n```\n\n### Agent 3 : Intégrations (si pertinent)\n```\nTu as maximum 10 tours. Retourne tes meilleurs résultats partiels si tu atteins la limite.\n\nAnalyse les points d'intégration existants (APIs, events, commands).\nIdentifie comment les features communiquent entre elles.\nRetourne les 5-10 fichiers clés à lire.\n```\n\n## 4. Consolider les résultats\n\n- Fusionner les listes de fichiers identifiés\n- Lire les fichiers clés pour construire une compréhension profonde\n- Identifier les patterns récurrents\n\n## 5. Présenter le résumé\n\n```\nExploration du codebase\n\n**Features similaires trouvées :**\n- {feature 1} ({chemin}) : {description courte}\n- {feature 2} ({chemin}) : {description courte}\n\n**Patterns architecturaux identifiés :**\n- {pattern 1} : utilisé dans {fichiers}\n- {pattern 2} : utilisé dans {fichiers}\n\n**Fichiers clés à connaître :**\n1. `{fichier}:{ligne}` - {rôle}\n2. `{fichier}:{ligne}` - {rôle}\n...\n\n**Points d'attention :**\n- {observation 1}\n- {observation 2}\n```\n\n## 6. Finaliser\n\nMettre à jour `.claude\u002Fdata\u002F.dev-workflow-state.json`\n\n```json\n{\n  \"currentPhase\": 1,\n  \"phases\": {\n    \"1\": {\n      \"status\": \"completed\",\n      \"completedAt\": \"{ISO timestamp}\",\n      \"durationMs\": \"{durée}\",\n      \"keyFiles\": [\"{liste des fichiers clés}\"],\n      \"patterns\": [\"{patterns identifiés}\"],\n      \"findings\": \"{résumé des découvertes}\"\n    }\n  }\n}\n```\n\n# Règles\n\n- Lancer les agents en parallèle si disponibles\n- Documenter les patterns trouvés\n- En mode automatique : aucune interaction, exit 1 si erreur\n- En mode interactif : utiliser TaskCreate\u002FTaskUpdate pour suivi de progression\n\n# Prochaine étape\n\n```\nExploration terminée\n\nProchaine étape : \u002Fanalyst:clarify pour poser les questions de clarification\n```\n",{"name":5,"model":29,"license":15,"version":30,"description":7,"allowed-tools":31},"sonnet","1.0.0",[32,33,34,35,36,37,38],"Task","Read","Glob","Grep","TaskCreate","TaskUpdate","TaskList","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","analyst\u002Fskills\u002Fexplore","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":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add atournayre\u002Fclaude-personas --skill \"analyst:explore\"",{"tool":53,"command":54},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"analyst:explore\"",{"tool":56,"command":57},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"analyst:explore\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fanalyst\u002Fskills\u002Fexplore\u002FSKILL.md",true,[61,67,71,75,79,83,87,91,95,99,103],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"README.md","REFERENCE","参考文档",1697,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FREADME.md",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"Recipes\u002FFormFill.md",937,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FRecipes\u002FFormFill.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"Recipes\u002FREADME.md",1981,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FRecipes\u002FREADME.md",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"Recipes\u002FScreenshotCompare.md",802,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FRecipes\u002FScreenshotCompare.md",{"path":80,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":81,"sourceHtmlUrl":82},"Recipes\u002FSummarizePage.md",553,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FRecipes\u002FSummarizePage.md",{"path":84,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":85,"sourceHtmlUrl":86},"Stories\u002FExampleApp.yaml",1101,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FStories\u002FExampleApp.yaml",{"path":88,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":89,"sourceHtmlUrl":90},"Stories\u002FHackerNews.yaml",941,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FStories\u002FHackerNews.yaml",{"path":92,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":93,"sourceHtmlUrl":94},"Stories\u002FREADME.md",2817,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FStories\u002FREADME.md",{"path":96,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":97,"sourceHtmlUrl":98},"Workflows\u002FAutomate.md",3679,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FWorkflows\u002FAutomate.md",{"path":100,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":101,"sourceHtmlUrl":102},"Workflows\u002FReviewStories.md",3432,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FWorkflows\u002FReviewStories.md",{"path":104,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":105,"sourceHtmlUrl":106},"Workflows\u002FUpdate.md",1519,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FBrowser\u002Fsrc\u002FWorkflows\u002FUpdate.md",[108,123,163,170,178,189],{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":24},"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",[],[115,116,21,117,118,119,20,120,121,122],"twig:make component","component","edit","write","ux","template","php","Bash",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":145,"publishedAt":24},"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",[129,134,137,140],{"categoryNo":130,"categoryName":131,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":135,"categoryName":136,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":138,"categoryName":139,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":141,"categoryName":142,"taxonomyType":143,"taxonomyTypeDesc":144},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[146,147,148,149,150,151,152,153,154,155,156,122,157,158,159,160,21,118,161,162],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"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":169,"publishedAt":24},"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",[],[165,122,20,21,118,117],{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":24},"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",[],[172,177,122,20,21,118,117],"message",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":187,"publishedAt":24},"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",[184],{"categoryNo":185,"categoryName":186,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000005","邮件与沟通",[180,117,188,122,120,20,21,118],"email",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":195,"publishedAt":24},"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",[],[191,122,20,21,118,117,196,155],"options"]