[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSY9TAPV1Q9B76R0APA5KH":3,"skill-same:01M6CSY9TAPV1Q9B76R0APA5KH":91},{"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":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":14,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6CSY9TAPV1Q9B76R0APA5KH","php:make-out",null,"Génère classe Out (DTO immuable pour output)","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\u002Fphp\u002Fskills\u002Fmake-out\u002FSKILL.md",[],[19,20,21,22,23,24,25],"php","php:make out","Bash","grep","read","write","edit","2026-11-10 10:12:30",false,"---\nname: php:make-out\ndescription: Génère classe Out (DTO immuable pour output)\nmodel: sonnet\nallowed-tools: [Bash, Read, Write, Edit, Grep, Glob]\nversion: 1.0.0\nlicense: MIT\n---\n\n# PHP Make Out Skill\n\n## Instructions à Exécuter\n\n**IMPORTANT : Exécute ce workflow étape par étape :**\n\n\n## Description\nGénère une classe Out (DTO readonly) pour représenter les données de sortie d'une entité.\n\n## Usage\n```\nUse skill php:make-out\n```\n\n## Variables requises\n- **{EntityName}** - Nom de l'entité en PascalCase (ex: Product)\n- **{entityName}** - Nom de l'entité en camelCase (ex: product)\n- **{namespace}** - Namespace du projet (défaut: App)\n\n## Dépendances\n- Entité dans `src\u002FEntity\u002F{EntityName}.php`\n\n## Outputs\n- `src\u002FOut\u002F{EntityName}Out.php`\n\n## Workflow\n\n1. Demander le nom de l'entité (EntityName)\n2. Vérifier que l'entité existe dans `src\u002FEntity\u002F{EntityName}.php`\n   - Si non : arrêter et demander de créer l'entité d'abord\n3. Générer la classe Out depuis le template `templates\u002FOut\u002F`\n4. Afficher le fichier créé\n\n## Patterns appliqués\n\n- Classe `final readonly`\n- Constructeur privé\n- Factory statique `new()` pour instanciation\n- Propriété privée de type entité\n\n## References\n\n- [Usage](references\u002Fusage.md) - Exemples et usage dans l'entité\n\n## Notes\n- Couche anti-corruption entre domaine et extérieur\n- Peut être enrichie avec méthodes pour propriétés calculées\n- Respecte le principe d'immutabilité\n","# PHP Make Out Skill\n\n## Instructions à Exécuter\n\n**IMPORTANT : Exécute ce workflow étape par étape :**\n\n\n## Description\nGénère une classe Out (DTO readonly) pour représenter les données de sortie d'une entité.\n\n## Usage\n```\nUse skill php:make-out\n```\n\n## Variables requises\n- **{EntityName}** - Nom de l'entité en PascalCase (ex: Product)\n- **{entityName}** - Nom de l'entité en camelCase (ex: product)\n- **{namespace}** - Namespace du projet (défaut: App)\n\n## Dépendances\n- Entité dans `src\u002FEntity\u002F{EntityName}.php`\n\n## Outputs\n- `src\u002FOut\u002F{EntityName}Out.php`\n\n## Workflow\n\n1. Demander le nom de l'entité (EntityName)\n2. Vérifier que l'entité existe dans `src\u002FEntity\u002F{EntityName}.php`\n   - Si non : arrêter et demander de créer l'entité d'abord\n3. Générer la classe Out depuis le template `templates\u002FOut\u002F`\n4. Afficher le fichier créé\n\n## Patterns appliqués\n\n- Classe `final readonly`\n- Constructeur privé\n- Factory statique `new()` pour instanciation\n- Propriété privée de type entité\n\n## References\n\n- [Usage](references\u002Fusage.md) - Exemples et usage dans l'entité\n\n## Notes\n- Couche anti-corruption entre domaine et extérieur\n- Peut être enrichie avec méthodes pour propriétés calculées\n- Respecte le principe d'immutabilité\n",{"name":5,"model":31,"license":15,"version":32,"description":7,"allowed-tools":33},"sonnet","1.0.0",[21,34,35,36,37,38],"Read","Write","Edit","Grep","Glob","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","php\u002Fskills\u002Fmake-out","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 \"php:make-out\"",{"tool":53,"command":54},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"php:make-out\"",{"tool":56,"command":57},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"php:make-out\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Fphp\u002Fskills\u002Fmake-out\u002FSKILL.md",true,[61,67,71,75,79,83,87],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"elements-of-style\u002F01-introductory.md","REFERENCE","参考文档",304,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fwriting-clearly-and-concisely\u002Felements-of-style\u002F01-introductory.md",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"elements-of-style\u002F02-elementary-rules-of-usage.md",12162,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fwriting-clearly-and-concisely\u002Felements-of-style\u002F02-elementary-rules-of-usage.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"elements-of-style\u002F03-elementary-principles-of-composition.md",33623,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fwriting-clearly-and-concisely\u002Felements-of-style\u002F03-elementary-principles-of-composition.md",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"elements-of-style\u002F04-a-few-matters-of-form.md",4919,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fwriting-clearly-and-concisely\u002Felements-of-style\u002F04-a-few-matters-of-form.md",{"path":80,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":81,"sourceHtmlUrl":82},"elements-of-style\u002F05-words-and-expressions-commonly-misused.md",22311,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fwriting-clearly-and-concisely\u002Felements-of-style\u002F05-words-and-expressions-commonly-misused.md",{"path":84,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":85,"sourceHtmlUrl":86},"README.md",5854,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fwriting-clearly-and-concisely\u002FREADME.md",{"path":88,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":89,"sourceHtmlUrl":90},"signs-of-ai-writing.md",94775,"https:\u002F\u002Fgithub.com\u002FMishit18\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fwriting-clearly-and-concisely\u002Fsigns-of-ai-writing.md",[92,103,143,150,158,169],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":26},"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",[],[99,100,23,25,24,101,22,102,19,21],"twig:make component","component","ux","template",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":125,"publishedAt":26},"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",[109,114,117,120],{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":115,"categoryName":116,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":118,"categoryName":119,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":121,"categoryName":122,"taxonomyType":123,"taxonomyTypeDesc":124},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[126,127,128,129,130,131,132,133,134,135,136,21,137,138,139,140,23,24,141,142],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":26},"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",[],[145,21,22,23,24,25],{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":156,"publishedAt":26},"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",[],[152,157,21,22,23,24,25],"message",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":167,"publishedAt":26},"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",[164],{"categoryNo":165,"categoryName":166,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000005","邮件与沟通",[160,25,168,21,102,22,23,24],"email",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":26},"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",[],[171,21,22,23,24,25,176,135],"options"]