[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSX0FCCR9RJAN5DMJ141NP":3,"skill-same:01M6CSX0FCCR9RJAN5DMJ141NP":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":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":14,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6CSX0FCCR9RJAN5DMJ141NP","infra:memory",null,"Crée et optimise les fichiers de mémoire Claude Code (CLAUDE.md ou .claude\u002Frules\u002F). Couvre la hiérarchie de fichiers, la structure du contenu, les règles path-scoped, les bonnes pratiques et les anti-patterns. Utiliser pour CLAUDE.md, .claude\u002Frules\u002F, nouveaux projets, ou améliorer la conscience contextuelle.","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\u002Finfra\u002Fskills\u002Fmemory\u002FSKILL.md",[],[19,20,5,21,22,23,24,25,26,27,28,29,30],"memory","infra","code","Bash","Rules","read","write","edit","anti-patterns","task","patterns","structure","2026-11-10 10:12:30",false,"---\nname: infra:memory\ndescription: Crée et optimise les fichiers de mémoire Claude Code (CLAUDE.md ou .claude\u002Frules\u002F). Couvre la hiérarchie de fichiers, la structure du contenu, les règles path-scoped, les bonnes pratiques et les anti-patterns. Utiliser pour CLAUDE.md, .claude\u002Frules\u002F, nouveaux projets, ou améliorer la conscience contextuelle.\nargument-hint: \"[task description]\"\nmodel: sonnet\nallowed-tools: [Read, Write, Edit, Glob, Bash, AskUserQuestion]\nversion: 1.0.0\nlicense: MIT\n---\n\n# infra:memory\n\nMaîtrise du système de mémoire Claude Code via CLAUDE.md ou `.claude\u002Frules\u002F`.\n\n## Décision initiale obligatoire\n\n**TOUJOURS DEMANDER EN PREMIER : Stratégie de stockage**\n\nAvant de créer ou modifier des fichiers mémoire, demander via AskUserQuestion :\n\n- **Option 1 : CLAUDE.md unique** — Toutes les instructions dans un fichier (plus simple, petits projets)\n- **Option 2 : .claude\u002Frules\u002F modulaire** — Fichiers séparés par thème avec path-scoping optionnel (grands projets)\n\nGuide de décision :\n- CLAUDE.md si : \u003C 100 lignes d'instructions, projet simple, règles universelles\n- .claude\u002Frules\u002F si : 100+ lignes, plusieurs types de fichiers, équipe maintient différentes zones\n\n## Hiérarchie de chargement\n\n| Priorité | Emplacement | Portée |\n|----------|-------------|--------|\n| 1 (haute) | CLAUDE.md projet | Équipe via git |\n| 1 | .claude\u002Frules\u002F*.md | Équipe via git |\n| 2 | ~\u002F.claude\u002FCLAUDE.md | Tous tes projets |\n| 3 (basse) | CLAUDE.local.md | Toi seul |\n\n## Structure du contenu (WHAT-WHY-HOW)\n\n- **WHAT** : Stack technique, architecture du projet\n- **WHY** : Décisions architecturales, pourquoi les patterns existent\n- **HOW** : Commandes, tests, git workflow, étapes de vérification\n\n## Path-scoping (.claude\u002Frules\u002F)\n\n```yaml\n---\npaths:\n  - \"src\u002Fapi\u002F**\u002F*.ts\"\n---\n# Règles API\n```\n\n## Emphase pour règles critiques\n\n| Mot-clé | Usage |\n|---------|-------|\n| **CRITICAL** | Règles non-négociables |\n| **NEVER** | Prohibitions absolues |\n| **ALWAYS** | Comportements obligatoires |\n| **IMPORTANT** | Guidance significative |\n\n## Limites de taille\n\n- Idéal : 100-200 lignes maximum\n- Max pratique : 300 lignes avant de découper\n- Au-delà : déplacer les détails vers des fichiers séparés et lier\n\n## Anti-patterns à éviter\n\n- Règles de style de code (utiliser des linters)\n- Secrets \u002F API keys (JAMAIS)\n- Trop de contenu (lier vers des docs externes)\n- Instructions vagues (\"formater correctement\" → \"exécuter `pnpm lint`\")\n\n## Workflow de création\n\n### Nouveau projet (CLAUDE.md)\n\n1. Commencer avec le template minimal\n2. Ajouter stack et commandes en premier\n3. Ajouter conventions au fur et à mesure\n4. Tester sur des tâches réelles\n\n### Nouveau projet (.claude\u002Frules\u002F)\n\n1. Créer `.claude\u002Frules\u002F`\n2. Un fichier par thème : `general.md`, `testing.md`, `code-style.md`\n3. Ajouter path-scoping selon les besoins\n4. Tester dans différents contextes de fichiers\n\n## Template minimal CLAUDE.md\n\n```markdown\n# Nom du projet\n\n## Stack\n- [Framework principal]\n- [Bibliothèques clés]\n\n## Commandes\n- `{cmd}` - Démarrer le dev\n- `{cmd}` - Lancer les tests\n\n## Conventions\n- [2-3 conventions critiques]\n```\n","# infra:memory\n\nMaîtrise du système de mémoire Claude Code via CLAUDE.md ou `.claude\u002Frules\u002F`.\n\n## Décision initiale obligatoire\n\n**TOUJOURS DEMANDER EN PREMIER : Stratégie de stockage**\n\nAvant de créer ou modifier des fichiers mémoire, demander via AskUserQuestion :\n\n- **Option 1 : CLAUDE.md unique** — Toutes les instructions dans un fichier (plus simple, petits projets)\n- **Option 2 : .claude\u002Frules\u002F modulaire** — Fichiers séparés par thème avec path-scoping optionnel (grands projets)\n\nGuide de décision :\n- CLAUDE.md si : \u003C 100 lignes d'instructions, projet simple, règles universelles\n- .claude\u002Frules\u002F si : 100+ lignes, plusieurs types de fichiers, équipe maintient différentes zones\n\n## Hiérarchie de chargement\n\n| Priorité | Emplacement | Portée |\n|----------|-------------|--------|\n| 1 (haute) | CLAUDE.md projet | Équipe via git |\n| 1 | .claude\u002Frules\u002F*.md | Équipe via git |\n| 2 | ~\u002F.claude\u002FCLAUDE.md | Tous tes projets |\n| 3 (basse) | CLAUDE.local.md | Toi seul |\n\n## Structure du contenu (WHAT-WHY-HOW)\n\n- **WHAT** : Stack technique, architecture du projet\n- **WHY** : Décisions architecturales, pourquoi les patterns existent\n- **HOW** : Commandes, tests, git workflow, étapes de vérification\n\n## Path-scoping (.claude\u002Frules\u002F)\n\n```yaml\n---\npaths:\n  - \"src\u002Fapi\u002F**\u002F*.ts\"\n---\n# Règles API\n```\n\n## Emphase pour règles critiques\n\n| Mot-clé | Usage |\n|---------|-------|\n| **CRITICAL** | Règles non-négociables |\n| **NEVER** | Prohibitions absolues |\n| **ALWAYS** | Comportements obligatoires |\n| **IMPORTANT** | Guidance significative |\n\n## Limites de taille\n\n- Idéal : 100-200 lignes maximum\n- Max pratique : 300 lignes avant de découper\n- Au-delà : déplacer les détails vers des fichiers séparés et lier\n\n## Anti-patterns à éviter\n\n- Règles de style de code (utiliser des linters)\n- Secrets \u002F API keys (JAMAIS)\n- Trop de contenu (lier vers des docs externes)\n- Instructions vagues (\"formater correctement\" → \"exécuter `pnpm lint`\")\n\n## Workflow de création\n\n### Nouveau projet (CLAUDE.md)\n\n1. Commencer avec le template minimal\n2. Ajouter stack et commandes en premier\n3. Ajouter conventions au fur et à mesure\n4. Tester sur des tâches réelles\n\n### Nouveau projet (.claude\u002Frules\u002F)\n\n1. Créer `.claude\u002Frules\u002F`\n2. Un fichier par thème : `general.md`, `testing.md`, `code-style.md`\n3. Ajouter path-scoping selon les besoins\n4. Tester dans différents contextes de fichiers\n\n## Template minimal CLAUDE.md\n\n```markdown\n# Nom du projet\n\n## Stack\n- [Framework principal]\n- [Bibliothèques clés]\n\n## Commandes\n- `{cmd}` - Démarrer le dev\n- `{cmd}` - Lancer les tests\n\n## Conventions\n- [2-3 conventions critiques]\n```\n",{"name":5,"model":36,"license":15,"version":37,"description":7,"allowed-tools":38,"argument-hint":44},"sonnet","1.0.0",[39,40,41,42,22,43],"Read","Write","Edit","Glob","AskUserQuestion","[task description]","main","bb0335112ea0991dc1dc6a29fa5a861397a5a6f6","infra\u002Fskills\u002Fmemory","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":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add atournayre\u002Fclaude-personas --skill \"infra:memory\"",{"tool":59,"command":60},"bunx","bunx skills add atournayre\u002Fclaude-personas --skill \"infra:memory\"",{"tool":62,"command":63},"pnpm","pnpm dlx skills add atournayre\u002Fclaude-personas --skill \"infra:memory\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fatournayre\u002Fclaude-personas\u002Fblob\u002Fmain\u002Finfra\u002Fskills\u002Fmemory\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"evals\u002Fevals.json","REFERENCE","参考文档",947,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Frice-prioritization\u002Fevals\u002Fevals.json",[74,87,127,134,142,153],{"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":31},"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,24,26,25,83,84,85,86,22],"twig:make component","component","ux","grep","template","php",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":109,"publishedAt":31},"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",[93,98,101,104],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":99,"categoryName":100,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":102,"categoryName":103,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[110,111,112,113,114,115,116,117,118,119,120,22,121,122,123,124,24,25,125,126],"test","ui","tester","ui test","tester:ui test","MCP","debug","create","update","validation","messages","plan","tool","page","find","javascript","chrome",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":31},"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",[],[129,22,84,24,25,26],{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":31},"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",[],[136,141,22,84,24,25,26],"message",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":151,"publishedAt":31},"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",[148],{"categoryNo":149,"categoryName":150,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000005","邮件与沟通",[144,26,152,22,85,84,24,25],"email",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":31},"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",[],[155,22,84,24,25,26,160,119],"options"]