[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSXF4S79NWPVRYJ3EWPR8P":3,"skill-same:01M6CSXF4S79NWPVRYJ3EWPR8P":119},{"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":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6CSXF4S79NWPVRYJ3EWPR8P","orchestrator:ralph",null,"Setup du loop autonome de développement Ralph. Crée la structure .claude\u002Fralph\u002F, génère le PRD interactivement ou pour une feature spécifique, et affiche la commande à exécuter. NE lance jamais ralph.sh automatiquement.","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\u002Fralph\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[24,25,5,26,27,28,29,30,31,32,33,34],"ralph","orchestrator","setup","prd","Bash","loop","read","write","edit","interactive","structure","2026-11-10 10:12:30",false,"---\nname: orchestrator:ralph\ndescription: Setup du loop autonome de développement Ralph. Crée la structure .claude\u002Fralph\u002F, génère le PRD interactivement ou pour une feature spécifique, et affiche la commande à exécuter. NE lance jamais ralph.sh automatiquement.\nargument-hint: \"[project-path] [-i\u002F--interactive] [-f\u002F--feature \u003Cname>]\"\nmodel: sonnet\nallowed-tools: [Read, Write, Edit, Bash, Glob, AskUserQuestion]\nversion: 1.0.0\nlicense: MIT\n---\n\n# orchestrator:ralph\n\nSetup du loop autonome de développement Ralph. **Ce skill ONLY configure Ralph — l'utilisateur lance les commandes lui-même.**\n\n## Règle critique\n\n- NEVER lancer ralph.sh ou des commandes d'exécution automatiquement\n- NEVER exécuter le loop — seulement créer les fichiers et afficher les instructions\n- ALWAYS laisser l'utilisateur copier et exécuter les commandes lui-même\n- ALWAYS terminer en affichant la commande exacte à exécuter\n\n## Paramètres\n\n| Flag | Description |\n|------|-------------|\n| `\u003Cproject-path>` | Chemin vers le projet (défaut: répertoire courant) |\n| `-i, --interactive` | Mode interactif: brainstorm PRD avec assistance IA |\n| `-f, --feature \u003Cname>` | Nom du dossier feature (ex: `01-add-auth`) |\n\n## Instructions à Exécuter\n\n### 1. Parser les arguments\n\nExtraire depuis `$ARGUMENTS` :\n- `project_path` : chemin projet (défaut: `.`)\n- `interactive_mode` : true si `-i` ou `--interactive`\n- `feature_name` : valeur après `-f` ou `--feature`\n\n### 2. Créer la structure Ralph\n\n```bash\nmkdir -p {project_path}\u002F.claude\u002Fralph\n```\n\nCréer les fichiers Ralph nécessaires :\n- `ralph.sh` : script principal du loop\n- Structure de feature si `feature_name` fourni\n\n### 3. Mode interactif (si -i)\n\nBrainstormer le PRD avec l'utilisateur via AskUserQuestion :\n- Objectif de la feature\n- User stories principales\n- Critères d'acceptation\n- Contraintes techniques\n\n### 4. Transformer le PRD en user stories\n\nCréer `{feature_dir}\u002Fprd.json` avec les user stories formatées.\n\n### 5. Afficher la commande à exécuter\n\n```\nSetup Ralph terminé\n\nStructure créée :\n  {project_path}\u002F.claude\u002Fralph\u002F\n\nPour lancer Ralph :\n  bun run .claude\u002Fralph\u002Fralph.sh -f {feature_name}\n```\n\n## Résultat attendu\n\n- Structure `.claude\u002Fralph\u002F` créée dans le projet\n- Dossier feature avec PRD.md, prd.json, progress.txt\n- User stories correctement formatées dans prd.json\n- Commande claire fournie à l'utilisateur (il l'exécute lui-même)\n","# orchestrator:ralph\n\nSetup du loop autonome de développement Ralph. **Ce skill ONLY configure Ralph — l'utilisateur lance les commandes lui-même.**\n\n## Règle critique\n\n- NEVER lancer ralph.sh ou des commandes d'exécution automatiquement\n- NEVER exécuter le loop — seulement créer les fichiers et afficher les instructions\n- ALWAYS laisser l'utilisateur copier et exécuter les commandes lui-même\n- ALWAYS terminer en affichant la commande exacte à exécuter\n\n## Paramètres\n\n| Flag | Description |\n|------|-------------|\n| `\u003Cproject-path>` | Chemin vers le projet (défaut: répertoire courant) |\n| `-i, --interactive` | Mode interactif: brainstorm PRD avec assistance IA |\n| `-f, --feature \u003Cname>` | Nom du dossier feature (ex: `01-add-auth`) |\n\n## Instructions à Exécuter\n\n### 1. Parser les arguments\n\nExtraire depuis `$ARGUMENTS` :\n- `project_path` : chemin projet (défaut: `.`)\n- `interactive_mode` : true si `-i` ou `--interactive`\n- `feature_name` : valeur après `-f` ou `--feature`\n\n### 2. Créer la structure Ralph\n\n```bash\nmkdir -p {project_path}\u002F.claude\u002Fralph\n```\n\nCréer les fichiers Ralph nécessaires :\n- `ralph.sh` : script principal du loop\n- Structure de feature si `feature_name` fourni\n\n### 3. Mode interactif (si -i)\n\nBrainstormer le PRD avec l'utilisateur via AskUserQuestion :\n- Objectif de la feature\n- User stories principales\n- Critères d'acceptation\n- Contraintes techniques\n\n### 4. Transformer le PRD en user stories\n\nCréer `{feature_dir}\u002Fprd.json` avec les user stories formatées.\n\n### 5. Afficher la commande à exécuter\n\n```\nSetup Ralph terminé\n\nStructure créée :\n  {project_path}\u002F.claude\u002Fralph\u002F\n\nPour lancer Ralph :\n  bun run .claude\u002Fralph\u002Fralph.sh -f {feature_name}\n```\n\n## Résultat attendu\n\n- Structure `.claude\u002Fralph\u002F` créée dans le projet\n- Dossier feature avec PRD.md, prd.json, progress.txt\n- User stories correctement formatées dans prd.json\n- Commande claire fournie à l'utilisateur (il l'exécute lui-même)\n",{"name":5,"model":40,"license":15,"version":41,"description":7,"allowed-tools":42,"argument-hint":48},"sonnet","1.0.0",[43,44,45,28,46,47],"Read","Write","Edit","Glob","AskUserQuestion","[project-path] [-i\u002F--interactive] [-f\u002F--feature \u003Cname>]","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","orchestrator\u002Fskills\u002Fralph","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":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:ralph\"",{"tool":63,"command":64},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:ralph\"",{"tool":66,"command":67},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"orchestrator:ralph\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Forchestrator\u002Fskills\u002Fralph\u002FSKILL.md",true,[71,77,81,87,91,95,99,103,107,111,115],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"evals\u002Fmodel-expectations.md","REFERENCE","参考文档",5758,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Fevals\u002Fmodel-expectations.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"evals\u002Fresults-opus-baseline.md",2705,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Fevals\u002Fresults-opus-baseline.md",{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"evals\u002Fsetup_test_env.py","SCRIPT","脚本",10294,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Fevals\u002Fsetup_test_env.py",{"path":88,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":89,"sourceHtmlUrl":90},"evals\u002Ftest-scenarios.md",5307,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Fevals\u002Ftest-scenarios.md",{"path":92,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":93,"sourceHtmlUrl":94},"README.md",7034,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002FREADME.md",{"path":96,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fhandoff-template.md",3964,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Freferences\u002Fhandoff-template.md",{"path":100,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fresume-checklist.md",2783,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Freferences\u002Fresume-checklist.md",{"path":104,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":105,"sourceHtmlUrl":106},"scripts\u002Fcheck_staleness.py",12975,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Fscripts\u002Fcheck_staleness.py",{"path":108,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Fcreate_handoff.py",10667,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Fscripts\u002Fcreate_handoff.py",{"path":112,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":113,"sourceHtmlUrl":114},"scripts\u002Flist_handoffs.py",3814,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Fscripts\u002Flist_handoffs.py",{"path":116,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":117,"sourceHtmlUrl":118},"scripts\u002Fvalidate_handoff.py",10822,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fsession-handoff\u002Fscripts\u002Fvalidate_handoff.py",[120,133,171,178,186,197],{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"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",[],[127,128,30,32,31,129,130,131,132,28],"twig:make component","component","ux","grep","template","php",{"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":153,"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",[139,144,147,150],{"categoryNo":140,"categoryName":141,"taxonomyType":142,"taxonomyTypeDesc":143},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":145,"categoryName":146,"taxonomyType":142,"taxonomyTypeDesc":143},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":148,"categoryName":149,"taxonomyType":142,"taxonomyTypeDesc":143},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":151,"categoryName":152,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000032","设计师",[154,155,156,157,158,159,160,161,162,163,164,28,165,166,167,168,30,31,169,170],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"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",[],[173,28,130,30,31,32],{"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":184,"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",[],[180,185,28,130,30,31,32],"message",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":195,"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",[192],{"categoryNo":193,"categoryName":194,"taxonomyType":142,"taxonomyTypeDesc":143},"01JBSEEDCAT000000000000005","邮件与沟通",[188,32,196,28,131,130,30,31],"email",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":203,"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",[],[199,28,130,30,31,32,204,163],"options"]