[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PQMMB949D7RY0SC690VDJ5":3,"skill-same:01M6PQMMB949D7RY0SC690VDJ5":114},{"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":28,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":79,"commitSha":80,"skillDirectory":81,"forksCount":14,"repositoryHtmlUrl":82,"repositoryHomepageUrl":6,"ownerHtmlUrl":83,"ownerBlogUrl":6,"ownerDescription":84,"updatedAt":85,"install":86,"resources":99},"01M6PQMMB949D7RY0SC690VDJ5","volontariapp-meta-mods",null,"Utiliser, ajouter ou modifier les mods Claude Code distribués par meta (statut du verrou STOP, garde-fous emoji et tiret cadratin, panneau \u002Frepos, indicateur de skills et \u002Fskill-search) : catalogue marketplace, activation par .claude\u002Fsettings.json, validation et tests.","Volontariapp\u002Fmeta","Volontariapp","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F263673138?v=4","01M6CSQNQ3J4SKRWA512JQF5K7","VolontariApp","01M6CSQNV8T2M4PR5A22DKHY5T",0,"MIT","https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-meta-mods\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"volontariapp meta mods","mods","Meta","2026","code","claude-code","activation","agent skill","tests","repos","settings.json","meta-mods","validation","settings","search","json","du","marketplace","de","plugin","draft","2026-11-10 10:12:30",false,"---\nname: volontariapp-meta-mods\ndescription: \"Utiliser, ajouter ou modifier les mods Claude Code distribués par meta (statut du verrou STOP, garde-fous emoji et tiret cadratin, panneau \u002Frepos, indicateur de skills et \u002Fskill-search) : catalogue marketplace, activation par .claude\u002Fsettings.json, validation et tests.\"\ntype: Agent Skill\ntitle: Mods Claude Code de meta\ntags: [meta-mods]\nstatus: draft\npaths:\n  - \".claude\u002Fmods\u002F**\"\n  - .claude-plugin\u002Fmarketplace.json\n  - .claude\u002Fsettings.json\nmesh_keys:\n  - meta-mods\n  - volontariapp-meta\ngenerated:\n  by: claude-code\u002Fagent\n  at: \"2026-11-05T13:14:14Z\"\nverified:\n  - by: claude-code\u002Fagent\n    at: \"2026-11-05T13:14:14Z\"\n  - by: claude-code\u002Fagent\n    at: \"2026-11-05T13:16:27Z\"\n    digest: bf19a8706dceebc2\n  - by: claude-code\u002Fagent\n    at: \"2026-11-05T14:46:09Z\"\n    digest: b6c286aaab95b8d4\n  - by: claude-code\u002Fagent\n    at: \"2026-11-08T12:02:25Z\"\n    digest: ec99654cd21421f0\nsources: []\n---\n\n# Mods Claude Code de meta\n\n## Quand utiliser cette skill\n\nAjouter ou modifier un mod de `.claude\u002Fmods\u002F`, comprendre pourquoi un mod refuse une édition (`meta-guards`) ou affiche un STOP (`meta-stop-lock`), onboarder un dev, ou publier un changement de mod. Un mod est un plugin Claude Code à hooks fonctions : il complète les hooks shell de `.claude\u002Fhooks\u002F` en rendant visibles des états et en mécanisant des conventions écrites. Le détail utilisateur est dans `.claude\u002Fmods\u002FREADME.md`.\n\n## Le dispositif\n\n| Mod | Hooks | Commande | Lit |\n| :--- | :--- | :--- | :--- |\n| `meta-stop-lock` | `session.start`, `tool.call` (Write, Edit, NotebookEdit), `turn.complete`, `prompt.submit` | aucune | marqueur `\u003Cgit-common-dir>\u002Fvolontariapp-stop-guard\u002F\u003Csession>` posé par `post-edit.sh` |\n| `meta-guards` | `tool.call` (Edit, Write, Bash `git commit` et `gh pr create\u002Fedit\u002Fcomment`) | aucune | le contenu ajouté, comparé à l'ancien |\n| `meta-repos` | `session.start`, `command.run`, `ui.render` (Pane) | `\u002Frepos` | `repos.json`, `git worktree list`, `git status`, `gh pr list --author @me` |\n| `meta-skills` | `session.start`, `turn.complete`, `command.run`, `ui.render` (AbovePrompt) | `\u002Fskill-search \u003Cmots>` | `.agents\u002Fskills\u002F*\u002FSKILL.md`, `evolve.py status --json` |\n\nDistribution : le catalogue `.claude-plugin\u002Fmarketplace.json` (marketplace `volontariapp-meta`) liste les quatre mods par chemin relatif ; `.claude\u002Fsettings.json` le déclare (`extraKnownMarketplaces`, source GitHub `Volontariapp\u002Fmeta`) et les active (`enabledPlugins`, clés `\u003Cmod>@volontariapp-meta`). Chaque dev doit accepter la confiance du dossier ; la source étant GitHub, un changement n'atteint les devs qu'une fois mergé sur `main`.\n\n## Règles\n\n- **Un mod ne pose et ne lève jamais le verrou STOP.** `meta-stop-lock` ne fait que lire le marqueur ; le verrou reste l'affaire de `post-edit.sh`, `stop-rule-guard.sh` et du Lead Dev (`AGENTS.md` section 1).\n- **`meta-guards` ne juge que l'ajout** (après moins avant) : éditer une ligne qui contient déjà un emoji ou un tiret cadratin passe. Fichiers exemptés : `node_modules`, `.git`, lockfiles, binaires. Un `Write` sur un fichier existant illisible passe (le garde-fou ne devine pas).\n- **Aucun emoji ni tiret cadratin littéral dans les sources des mods** : construire les caractères par code (`String.fromCharCode(0x2014)`, `String.fromCodePoint`), car même une séquence d'échappement `\\u` écrite par un outil peut être convertie en vrai caractère. La politique de `CLAUDE.md` s'applique à eux aussi, et `meta-guards` les refuserait.\n- **Fonction qui reçoit `$` : au niveau du module**, jamais dans la closure de `register` ; l'état partagé est une variable de module. Le validateur refuse sinon (`$ is passed to ... which is not a function declared at the top of this file`).\n- **Vérifier chaque nom de commande avec `claude plugin validate`.** `\u002Fskills` est réservé : le `$.command.register` est refusé et tout le hook qui l'appelle est ignoré, y compris le reste de `session.start`.\n- **Matcher `tool` : une liste** (`{ tool: ['Write', 'Edit'] }`), pas une variable de type union (erreur TS2345).\n- **Incrémenter `version` dans `plugin.json`** à chaque changement : sans cela, les devs ne reçoivent pas la mise à jour.\n- **L'API des mods est en accès anticipé** (écrits contre Claude Code 2.1.318) : après une mise à jour de Claude Code, relancer validate et test sur les quatre mods.\n- **Une logique testable va dans `hooks\u002F\u003Cnom>.ts`** (fonctions pures), le branchement dans `hooks\u002Fregister.ts[x]` ; les tests simulent les appels `$` par `on('\u003Copération>', ...)` et un hook `tool.call` tient lieu de l'outil.\n\n## À vérifier au premier clone d'un dev\n\nL'activation par `extraKnownMarketplaces` (source GitHub) n'a pas pu être testée de bout en bout avant le merge, le catalogue n'étant pas encore sur `main`. Constaté : l'installation des quatre mods depuis le clone local (`claude plugin marketplace add \u003Cmeta>` puis `install`) réussit, les mods sont lus depuis le dossier du clone. Non constaté : que `enabledPlugins` charge les mods sans installation manuelle (la doc dit qu'un plugin de source externe attend une installation explicite). Si un dev voit un mod \"not installed\", la section Activation du README donne les commandes ; une fois le comportement constaté, remplacer ce paragraphe par le résultat.\n\n## Vérifier un mod\n\n```bash\nclaude plugin validate .claude\u002Fmods\u002F\u003Cmod>\nclaude plugin test .claude\u002Fmods\u002F\u003Cmod>\nclaude plugin validate .            # le catalogue marketplace, depuis la racine de meta\ntsc -p \u003Ctsconfig>                   # include : types claude-code.d.ts du skill plugin-authoring + .claude\u002Fmods\u002F*\u002Fhooks et tests\n```\n\nLe typage demande le `claude-code.d.ts` que la skill `plugin-authoring` écrit au chargement (son chemin est donné par cette skill) : il n'est pas dans le repo.\n\nQuand un mod est chargé depuis son dossier (`claude --plugin-dir`, ou installation lue depuis le clone), le moteur écrit lui-même `\u003Cmod>\u002Ftsconfig.json` (`extends .\u002F.claude-plugin\u002Ftypes\u002Ftsconfig.json`) et pose les types dans `\u003Cmod>\u002F.claude-plugin\u002Ftypes\u002F`, dossier ignoré par git. Le `tsconfig.json` est commité (inférence : il a été écrit au chargement des mods depuis le clone ; non revérifié sur une version plus récente de Claude Code) ; ensuite `tsc -p .claude\u002Fmods\u002F\u003Cmod>` type le mod sans configuration.\n\n## Références\n\n- [Leçons apprises](\u002Fvolontariapp-meta-mods\u002Freferences\u002Flessons.md)\n- `.claude\u002Fmods\u002FREADME.md` : usage, activation, développement\n- `.claude\u002Fhooks\u002Fstop-rule-guard.sh` et `post-edit.sh` : écriture du marqueur lu par `meta-stop-lock`\n- `AGENTS.md` sections 1 (STOP) et 7 (PR prête : sans conflit et CI verte, repris par `\u002Frepos`)\n\n## Scripts\n\n- Aucun script propre : la vérification est `claude plugin validate` et `claude plugin test` (ci-dessus).\n","# Mods Claude Code de meta\n\n## Quand utiliser cette skill\n\nAjouter ou modifier un mod de `.claude\u002Fmods\u002F`, comprendre pourquoi un mod refuse une édition (`meta-guards`) ou affiche un STOP (`meta-stop-lock`), onboarder un dev, ou publier un changement de mod. Un mod est un plugin Claude Code à hooks fonctions : il complète les hooks shell de `.claude\u002Fhooks\u002F` en rendant visibles des états et en mécanisant des conventions écrites. Le détail utilisateur est dans `.claude\u002Fmods\u002FREADME.md`.\n\n## Le dispositif\n\n| Mod | Hooks | Commande | Lit |\n| :--- | :--- | :--- | :--- |\n| `meta-stop-lock` | `session.start`, `tool.call` (Write, Edit, NotebookEdit), `turn.complete`, `prompt.submit` | aucune | marqueur `\u003Cgit-common-dir>\u002Fvolontariapp-stop-guard\u002F\u003Csession>` posé par `post-edit.sh` |\n| `meta-guards` | `tool.call` (Edit, Write, Bash `git commit` et `gh pr create\u002Fedit\u002Fcomment`) | aucune | le contenu ajouté, comparé à l'ancien |\n| `meta-repos` | `session.start`, `command.run`, `ui.render` (Pane) | `\u002Frepos` | `repos.json`, `git worktree list`, `git status`, `gh pr list --author @me` |\n| `meta-skills` | `session.start`, `turn.complete`, `command.run`, `ui.render` (AbovePrompt) | `\u002Fskill-search \u003Cmots>` | `.agents\u002Fskills\u002F*\u002FSKILL.md`, `evolve.py status --json` |\n\nDistribution : le catalogue `.claude-plugin\u002Fmarketplace.json` (marketplace `volontariapp-meta`) liste les quatre mods par chemin relatif ; `.claude\u002Fsettings.json` le déclare (`extraKnownMarketplaces`, source GitHub `Volontariapp\u002Fmeta`) et les active (`enabledPlugins`, clés `\u003Cmod>@volontariapp-meta`). Chaque dev doit accepter la confiance du dossier ; la source étant GitHub, un changement n'atteint les devs qu'une fois mergé sur `main`.\n\n## Règles\n\n- **Un mod ne pose et ne lève jamais le verrou STOP.** `meta-stop-lock` ne fait que lire le marqueur ; le verrou reste l'affaire de `post-edit.sh`, `stop-rule-guard.sh` et du Lead Dev (`AGENTS.md` section 1).\n- **`meta-guards` ne juge que l'ajout** (après moins avant) : éditer une ligne qui contient déjà un emoji ou un tiret cadratin passe. Fichiers exemptés : `node_modules`, `.git`, lockfiles, binaires. Un `Write` sur un fichier existant illisible passe (le garde-fou ne devine pas).\n- **Aucun emoji ni tiret cadratin littéral dans les sources des mods** : construire les caractères par code (`String.fromCharCode(0x2014)`, `String.fromCodePoint`), car même une séquence d'échappement `\\u` écrite par un outil peut être convertie en vrai caractère. La politique de `CLAUDE.md` s'applique à eux aussi, et `meta-guards` les refuserait.\n- **Fonction qui reçoit `$` : au niveau du module**, jamais dans la closure de `register` ; l'état partagé est une variable de module. Le validateur refuse sinon (`$ is passed to ... which is not a function declared at the top of this file`).\n- **Vérifier chaque nom de commande avec `claude plugin validate`.** `\u002Fskills` est réservé : le `$.command.register` est refusé et tout le hook qui l'appelle est ignoré, y compris le reste de `session.start`.\n- **Matcher `tool` : une liste** (`{ tool: ['Write', 'Edit'] }`), pas une variable de type union (erreur TS2345).\n- **Incrémenter `version` dans `plugin.json`** à chaque changement : sans cela, les devs ne reçoivent pas la mise à jour.\n- **L'API des mods est en accès anticipé** (écrits contre Claude Code 2.1.318) : après une mise à jour de Claude Code, relancer validate et test sur les quatre mods.\n- **Une logique testable va dans `hooks\u002F\u003Cnom>.ts`** (fonctions pures), le branchement dans `hooks\u002Fregister.ts[x]` ; les tests simulent les appels `$` par `on('\u003Copération>', ...)` et un hook `tool.call` tient lieu de l'outil.\n\n## À vérifier au premier clone d'un dev\n\nL'activation par `extraKnownMarketplaces` (source GitHub) n'a pas pu être testée de bout en bout avant le merge, le catalogue n'étant pas encore sur `main`. Constaté : l'installation des quatre mods depuis le clone local (`claude plugin marketplace add \u003Cmeta>` puis `install`) réussit, les mods sont lus depuis le dossier du clone. Non constaté : que `enabledPlugins` charge les mods sans installation manuelle (la doc dit qu'un plugin de source externe attend une installation explicite). Si un dev voit un mod \"not installed\", la section Activation du README donne les commandes ; une fois le comportement constaté, remplacer ce paragraphe par le résultat.\n\n## Vérifier un mod\n\n```bash\nclaude plugin validate .claude\u002Fmods\u002F\u003Cmod>\nclaude plugin test .claude\u002Fmods\u002F\u003Cmod>\nclaude plugin validate .            # le catalogue marketplace, depuis la racine de meta\ntsc -p \u003Ctsconfig>                   # include : types claude-code.d.ts du skill plugin-authoring + .claude\u002Fmods\u002F*\u002Fhooks et tests\n```\n\nLe typage demande le `claude-code.d.ts` que la skill `plugin-authoring` écrit au chargement (son chemin est donné par cette skill) : il n'est pas dans le repo.\n\nQuand un mod est chargé depuis son dossier (`claude --plugin-dir`, ou installation lue depuis le clone), le moteur écrit lui-même `\u003Cmod>\u002Ftsconfig.json` (`extends .\u002F.claude-plugin\u002Ftypes\u002Ftsconfig.json`) et pose les types dans `\u003Cmod>\u002F.claude-plugin\u002Ftypes\u002F`, dossier ignoré par git. Le `tsconfig.json` est commité (inférence : il a été écrit au chargement des mods depuis le clone ; non revérifié sur une version plus récente de Claude Code) ; ensuite `tsc -p .claude\u002Fmods\u002F\u003Cmod>` type le mod sans configuration.\n\n## Références\n\n- [Leçons apprises](\u002Fvolontariapp-meta-mods\u002Freferences\u002Flessons.md)\n- `.claude\u002Fmods\u002FREADME.md` : usage, activation, développement\n- `.claude\u002Fhooks\u002Fstop-rule-guard.sh` et `post-edit.sh` : écriture du marqueur lu par `meta-stop-lock`\n- `AGENTS.md` sections 1 (STOP) et 7 (PR prête : sans conflit et CI verte, repris par `\u002Frepos`)\n\n## Scripts\n\n- Aucun script propre : la vérification est `claude plugin validate` et `claude plugin test` (ci-dessus).\n",{"name":5,"tags":55,"type":56,"paths":57,"title":61,"status":49,"sources":62,"verified":63,"generated":76,"mesh_keys":77,"description":7},[40],"Agent Skill",[58,59,60],".claude\u002Fmods\u002F**",".claude-plugin\u002Fmarketplace.json",".claude\u002Fsettings.json","Mods Claude Code de meta",[],[64,67,70,73],{"at":65,"by":66},"2026-11-05T13:14:14Z","claude-code\u002Fagent",{"at":68,"by":66,"digest":69},"2026-11-05T13:16:27Z","bf19a8706dceebc2",{"at":71,"by":66,"digest":72},"2026-11-05T14:46:09Z","b6c286aaab95b8d4",{"at":74,"by":66,"digest":75},"2026-11-08T12:02:25Z","ec99654cd21421f0",{"at":65,"by":66},[40,78],"volontariapp-meta","main","6b8f03b57018fa66da4666071dc17c1577ff45e8",".agents\u002Fskills\u002Fvolontariapp-meta-mods","https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta","https:\u002F\u002Fgithub.com\u002FVolontariapp","Volontariapp — Application Web\u002FMobile scalabelle construite sur une architecture microservices événementielle (Event-Driven Architecture), implémentant le Trans","2026-11-10 23:40:22",{"source":8,"skillName":5,"commands":87,"prompt":97,"zipAvailable":98},[88,91,94],{"tool":89,"command":90},"npx","npx skills add Volontariapp\u002Fmeta --skill volontariapp-meta-mods",{"tool":92,"command":93},"bunx","bunx skills add Volontariapp\u002Fmeta --skill volontariapp-meta-mods",{"tool":95,"command":96},"pnpm","pnpm dlx skills add Volontariapp\u002Fmeta --skill volontariapp-meta-mods","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-meta-mods\u002FSKILL.md",true,[100,106,110],{"path":101,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":104,"sourceHtmlUrl":105},"index.md","REFERENCE","参考文档",621,"https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-meta-mods\u002Findex.md",{"path":107,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":108,"sourceHtmlUrl":109},"log.md",843,"https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-meta-mods\u002Flog.md",{"path":111,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":112,"sourceHtmlUrl":113},"references\u002Flessons.md",1812,"https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-meta-mods\u002Freferences\u002Flessons.md",[115,138,165,184,209,229],{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":50},"01M6CSW3Y5ZHVBF5BX7S5BAVS0","volontariapp-user-account-deletion","Suppression de compte en deux temps (PENDING_DELETION): requestDeletionWithUserDeleted, finalizeDeletion, fan-out de user.deleted vers les domaines et gather ws. A utiliser pour tout changement de domain-user touchant la suppression, le statut ou le cycle de vie d'un user.","https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-user-account-deletion\u002FSKILL.md",[],[122,123,124,125,126,127,128,129,47,33,34,130,131,132,133,134,135,136,137],"volontariapp user account deletion","user","account deletion","deletion","cycle","gather","sonnet","pending","reference","npm","user-account-deletion","src","en","domain","npm-packages","packages",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":147,"publishedAt":50},"01M6CSVC1ZW30DDFZ8VMEYAAK6","volontariapp-proto-contract-evolution","Modifier un contrat Protobuf de proto-registry (champ, message, enum, RPC) sans casser la compatibilité wire, puis suivre la cascade proto-registry, PR automatique dans npm-packages, publication, consommateurs. À utiliser avant toute édition d'un .proto.","https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-proto-contract-evolution\u002FSKILL.md",[144],{"categoryNo":145,"categoryName":146,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务",[148,149,150,151,33,152,153,137,154,155,156,157,158,131,159,160,161,162,163,164],"evolution","volontariapp proto contract evolution","grpc","lint","workflows","analyze","rpc","ci","pr","protobuf","message","registry","sans","sync","yaml","playbook","github",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":172,"publishedAt":50},"01M6CSV99ET2Z9W4W4DAK4CMQP","volontariapp-meta-scripts","Utiliser et faire evoluer la CLI Node de meta (setup, doctor, migrate, certs, repos, bump) et le manifeste repos.json, source unique des repos et unites du workspace.","https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-meta-scripts\u002FSKILL.md",[171],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[31,173,38,33,174,34,175,176,44,177,178,179,180,181,182,49,183],"volontariapp meta scripts","migrate","setup","meta-scripts","node","workspace","shell","bump","cli","doctor","install",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":193,"publishedAt":50},"01M6CSTPHNTGE0WF5CPE8W7ZYQ","volontariapp-implement-async-event-flow","Guide pas-à-pas pour concevoir et implémenter un flux asynchrone complet (messaging -> outbox -> post-processors -> ws-service -> client).","https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fvolontariapp-implement-async-event-flow\u002FSKILL.md",[190],{"categoryNo":191,"categoryName":192,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[194,195,196,197,198,199,133,200,201,159,202,203,136,204,205,137,206,207,33,208],"async","implement","volontariapp implement async event flow","flow","event","messaging","mapping","flux","streams","flows","shared","outbox","processor","architecture","runner",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":218,"publishedAt":50},"01M6CSRQHS0T9955M8CTA5BYJQ","research","Investigate a question against high-trust primary sources and capture the findings as a Markdown file in the repo. Use when the user wants a topic researched, docs or API facts gathered, or reading legwork delegated to a background agent.","https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fplugins\u002Fmatt-pocock\u002Fskills\u002Fresearch\u002FSKILL.md",[215],{"categoryNo":216,"categoryName":217,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[211,219,123,220,221,222,223,224,225,226,227,228],"api","file","repo","markdown","docs","capture","use","question","trust","investigate",{"skillNo":230,"name":231,"nameZh":6,"description":232,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":233,"categories":234,"keywords":238,"publishedAt":50},"01M6CSRMZ82M1YK96Z4SW1STTD","prototype","Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.","https:\u002F\u002Fgithub.com\u002FVolontariapp\u002Fmeta\u002Fblob\u002Fmain\u002F.agents\u002Fplugins\u002Fmatt-pocock\u002Fskills\u002Fprototype\u002FSKILL.md",[235],{"categoryNo":236,"categoryName":237,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师",[231,239,123,240,225,241,226,242,243,244,245,246],"check","ui","look","design","explore","model","build","state"]