[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C9BGE6CPNETTYWZ2ATM1DD":3,"skill-same:01M7C9BGE6CPNETTYWZ2ATM1DD":51},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":26,"commitSha":27,"skillDirectory":28,"forksCount":14,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":31,"install":32,"resources":44},"01M7C9BGE6CPNETTYWZ2ATM1DD","jardin",null,"La revue de fin de session — relire le contexte du projet (CLAUDE.md, règles, skills, agents) contre ce que la session a changé, et proposer des diffs classés (faux, manquant, à extraire, à découper). N'écrit rien sans accord. À lancer en fin de session ou après une grosse tâche.","GengAd\u002Fcontextree","GengAd","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F36502270?v=4","01M6BXBWK5DD9QDM49YN7EHVMN","Adrien","01M7C9ATX5REQ8XK2TZ2M2KQDR",0,"MIT","https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fjardin\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: jardin\ndescription: La revue de fin de session — relire le contexte du projet (CLAUDE.md, règles, skills, agents) contre ce que la session a changé, et proposer des diffs classés (faux, manquant, à extraire, à découper). N'écrit rien sans accord. À lancer en fin de session ou après une grosse tâche.\ndisable-model-invocation: true\nargument-hint: \"[depuis : « 2 days ago » ou une référence git]\"\n---\n\n# Le jardin\n\nLe contexte dérive : un fichier dit encore ce que le code ne fait plus, un fait appris n'a été écrit nulle part, une procédure refaite à la main mérite une skill, un fichier a grossi ou n'a plus été relu. Tu relis, tu proposes, **tu n'écris qu'après accord**.\n\n## 1. Les faits\n\nLance, depuis la racine du projet :\n\n```bash\nnode \"${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fjardin\u002Fscripts\u002Fjardin.mjs\"\n```\n\nSi un argument est donné ($ARGUMENTS), ajoute `--depuis \"$ARGUMENTS\"` : une durée (« 2 days ago ») ou une référence git. Sans argument, la session part du dernier jardin (`marque`), 12 heures s'il n'y en a pas, 30 jours au plus. Si `session.erreur` est rempli, dis-le et relance avec une durée valide.\n\nLe JSON donne : `contexte` (les fichiers de contexte partagés par git), `session` (commits et fichiers changés depuis le début), `cites` (un fichier de contexte qui parle d'un chemin changé : `par` vaut `texte` s'il le cite, `paths` si ses `paths` le visent, `dossier` s'il est le `CLAUDE.md` de son dossier), `vieux` (pas de commit depuis six semaines), `avertissements` de la carte.\n\n## 2. Les propositions, en quatre classes\n\nPour chacune, lis le fichier de contexte en entier avant de proposer quoi que ce soit.\n\n1. **Faux** — un fichier de contexte contredit le code. Pars de `cites`, `texte` d'abord : lis le diff du chemin cité (`git diff \u003Csession.base> -- \u003Cchemin>`, ou `git log -p` sur la session) et dis si le texte est encore vrai. Ajoute ce que la conversation t'a montré : une consigne suivie qui a mené à une erreur, une commande qui a changé.\n2. **Manquant** — un fait appris dans cette conversation qui ne figure nulle part : une convention, un piège, une commande, une contrainte. Cherche-le d'abord (`grep -ri` dans les fichiers de `contexte`) ; la destination se décide avec la table de la skill `contextree:retenir`. Pas une question de lecture, pas l'histoire d'une décision.\n3. **À extraire** — une procédure faite au moins deux fois dans la conversation (la même suite de commandes ou d'étapes) → une skill invocable, avec son `argument-hint`.\n4. **À découper** — les `avertissements` de racine trop longue ou de skill trop longue : ce qui se déplace vers une règle à `paths` ou un fichier voisin. Et chaque fichier de `vieux` : relis-le contre le code d'aujourd'hui ; propose une correction, une suppression, ou « encore juste » s'il l'est.\n\n## 3. Présenter, puis attendre\n\nUne liste numérotée, la meilleure proposition d'abord, **dix au plus**. Pour chacune : la classe, le fichier, la raison en une phrase, et le diff exact (bloc `diff`). Une classe sans proposition s'écrit « rien ». Puis une seule question : « Lesquelles j'applique ? (numéros, « toutes », « aucune ») ».\n\n**N'écris aucun fichier avant la réponse.** Dès la réponse reçue, même « aucune », marque le jardin : le prochain démarrage de session ne le reproposera que pour ce qui changera ensuite.\n\n```bash\nnode \"${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fjardin\u002Fscripts\u002Fjardin.mjs\" --marquer\n```\n\nEnsuite, applique seulement les numéros choisis, puis lance la carte et corrige ses avertissements :\n\n```bash\nnode \"${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fcarte\u002Fscripts\u002Fcarte.mjs\" --sans-perso\n```\n\nTermine par une ligne par fichier modifié.\n","# Le jardin\n\nLe contexte dérive : un fichier dit encore ce que le code ne fait plus, un fait appris n'a été écrit nulle part, une procédure refaite à la main mérite une skill, un fichier a grossi ou n'a plus été relu. Tu relis, tu proposes, **tu n'écris qu'après accord**.\n\n## 1. Les faits\n\nLance, depuis la racine du projet :\n\n```bash\nnode \"${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fjardin\u002Fscripts\u002Fjardin.mjs\"\n```\n\nSi un argument est donné ($ARGUMENTS), ajoute `--depuis \"$ARGUMENTS\"` : une durée (« 2 days ago ») ou une référence git. Sans argument, la session part du dernier jardin (`marque`), 12 heures s'il n'y en a pas, 30 jours au plus. Si `session.erreur` est rempli, dis-le et relance avec une durée valide.\n\nLe JSON donne : `contexte` (les fichiers de contexte partagés par git), `session` (commits et fichiers changés depuis le début), `cites` (un fichier de contexte qui parle d'un chemin changé : `par` vaut `texte` s'il le cite, `paths` si ses `paths` le visent, `dossier` s'il est le `CLAUDE.md` de son dossier), `vieux` (pas de commit depuis six semaines), `avertissements` de la carte.\n\n## 2. Les propositions, en quatre classes\n\nPour chacune, lis le fichier de contexte en entier avant de proposer quoi que ce soit.\n\n1. **Faux** — un fichier de contexte contredit le code. Pars de `cites`, `texte` d'abord : lis le diff du chemin cité (`git diff \u003Csession.base> -- \u003Cchemin>`, ou `git log -p` sur la session) et dis si le texte est encore vrai. Ajoute ce que la conversation t'a montré : une consigne suivie qui a mené à une erreur, une commande qui a changé.\n2. **Manquant** — un fait appris dans cette conversation qui ne figure nulle part : une convention, un piège, une commande, une contrainte. Cherche-le d'abord (`grep -ri` dans les fichiers de `contexte`) ; la destination se décide avec la table de la skill `contextree:retenir`. Pas une question de lecture, pas l'histoire d'une décision.\n3. **À extraire** — une procédure faite au moins deux fois dans la conversation (la même suite de commandes ou d'étapes) → une skill invocable, avec son `argument-hint`.\n4. **À découper** — les `avertissements` de racine trop longue ou de skill trop longue : ce qui se déplace vers une règle à `paths` ou un fichier voisin. Et chaque fichier de `vieux` : relis-le contre le code d'aujourd'hui ; propose une correction, une suppression, ou « encore juste » s'il l'est.\n\n## 3. Présenter, puis attendre\n\nUne liste numérotée, la meilleure proposition d'abord, **dix au plus**. Pour chacune : la classe, le fichier, la raison en une phrase, et le diff exact (bloc `diff`). Une classe sans proposition s'écrit « rien ». Puis une seule question : « Lesquelles j'applique ? (numéros, « toutes », « aucune ») ».\n\n**N'écris aucun fichier avant la réponse.** Dès la réponse reçue, même « aucune », marque le jardin : le prochain démarrage de session ne le reproposera que pour ce qui changera ensuite.\n\n```bash\nnode \"${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fjardin\u002Fscripts\u002Fjardin.mjs\" --marquer\n```\n\nEnsuite, applique seulement les numéros choisis, puis lance la carte et corrige ses avertissements :\n\n```bash\nnode \"${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fcarte\u002Fscripts\u002Fcarte.mjs\" --sans-perso\n```\n\nTermine par une ligne par fichier modifié.\n",{"name":5,"description":7,"argument-hint":24,"disable-model-invocation":25},"[depuis : « 2 days ago » ou une référence git]",true,"main","408134ab594bc24268b8d2322e24105843750bdd","plugin\u002Fskills\u002Fjardin","https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree","https:\u002F\u002Fgithub.com\u002FGengAd","2026-10-11 22:49:59",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":25},[34,37,40],{"tool":35,"command":36},"npx","npx skills add GengAd\u002Fcontextree --skill jardin",{"tool":38,"command":39},"bunx","bunx skills add GengAd\u002Fcontextree --skill jardin",{"tool":41,"command":42},"pnpm","pnpm dlx skills add GengAd\u002Fcontextree --skill jardin","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fjardin\u002FSKILL.md",[45],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"scripts\u002Fjardin.mjs","SCRIPT","脚本",11995,"https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fjardin\u002Fscripts\u002Fjardin.mjs",[52,58,65,72,79,86],{"skillNo":53,"name":54,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":19},"01M7C9C6HZYCYPB1RSYC4F8B4N","muette","https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Ftests\u002Ffixture\u002F.claude\u002Fskills\u002Fmuette\u002FSKILL.md",[],[],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":19},"01M7C9C2PDYDPYSD5P7XRAZ9W3","domaine-commandes","Le métier des commandes — statuts, paiement, remboursement. À charger dès qu'une tâche parle de commande ou de paiement.","https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Ftests\u002Ffixture\u002F.claude\u002Fskills\u002Fdomaine-commandes\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M7C9BZMWN55B92JP84V6PWJP","brouillon","Écrire un brouillon de message. À utiliser quand on demande un brouillon.","https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Ftests\u002Ffixture-home\u002Fskills\u002Fbrouillon\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":19},"01M7C9BT5VSF3DWXNAW4279DN9","retenir","Écrire un fait durable sur ce projet dans le bon fichier de contexte (CLAUDE.md, une règle à paths, une skill, un CLAUDE.md de dossier, un hook). À utiliser dès que tu découvres une convention, une contrainte, un piège ou un chemin important que les fichiers de contexte ne disent pas encore, ou quand l'utilisateur dit « retiens », « note que », « à l'avenir ».","https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fretenir\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":19},"01M7C9BNAZXW13TZGA5VDZZ7QP","migrer-v1","Passer un projet de l'ancien contextree (arbre `.contextree\u002F`, hook d'injection, serveur MCP) aux fichiers natifs Claude Code, et retirer le câblage v1. À la main seulement.","https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Fmigrer-v1\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M7C9BAK1FPYCAHEMN6GH7138","init-contexte","Construire le contexte natif d'un projet — un CLAUDE.md court avec sa table « où aller », des règles à paths, des skills de domaine, un hook pour chaque interdit — à partir de ce que l'utilisateur explique et de ce que le dépôt contient. Plan validé avant d'écrire. À lancer sur un projet neuf ou sur un projet qui n'a pas encore de contexte.","https:\u002F\u002Fgithub.com\u002FGengAd\u002Fcontextree\u002Fblob\u002Fmain\u002Fplugin\u002Fskills\u002Finit-contexte\u002FSKILL.md",[],[]]