name: checklist description: Checklist d'avancement en chat pour tout projet. Installe ce qui manque (registre document/travaux.yaml, script outils-locaux/avancement/etat.mjs, règle dans CLAUDE.md, lignes dans .git/info/exclude) et ouvre le chat « Checklist : nom du projet » avec le widget. Utilisez-la lorsque l'utilisateur écrit /checklist ou demande d'installer la checklist dans un projet. Pour afficher la checklist dans un projet qui l'a déjà, la règle dans son CLAUDE.md suffit.
/checklist : la checklist d'avancement du projet
/checklist installe dans le dossier courant ce qui manque pour la checklist, puis l'affiche dans un chat dédié. Il n'écrase ni ne modifie rien de ce qui existe déjà.
Comment travailler :
- Le dossier du projet est le dossier courant. Toutes les commandes partent de là.
<base>est le « Répertoire de base » affiché en haut de cette compétence. Les modèles se trouvent dans<base>/modeles/.- Mettez chaque chemin entre guillemets dans les commandes : la base et le dossier du projet peuvent contenir des espaces.
- Exécutez les étapes dans l'ordre, sans demander de confirmation, sauf indication contraire.
- Chaque
greputilise-a: dans Claude Code,greppeut traiter un fichier non UTF-8 comme binaire et ne pas trouver les lignes qui existent.
Étape 1 : vérifications préliminaires
- Exécutez
command -v node. S'il n'affiche rien, écrivez une ligne (« Node.js 18 ou ultérieur est requis : installez-le et relancez /checklist ») et arrêtez-vous. - Exécutez
git rev-parse --path-format=absolute --git-diretgit rev-parse --path-format=absolute --git-common-dir. S'ils donnent deux résultats différents, vous êtes dans un worktree secondaire : écrivez une ligne (« Vous êtes dans un worktree : le registre disparaîtrait avec lui. Lancez /checklist depuis le dossier principal du projet ») et arrêtez-vous. Si les deux commandes échouent, il n'y a pas de git : continuez. - Exécutez
pwd -Pet(cd ~ && pwd -P). S'ils donnent le même résultat, vous êtes dans le dossier personnel : écrivez une ligne (« Vous êtes dans le dossier personnel : le bloc dans CLAUDE.md s'appliquerait à tous les projets. Lancez /checklist dans le dossier du projet ») et arrêtez-vous.
L'étape est terminée lorsque node est présent et que le dossier n'est ni un worktree secondaire ni le dossier personnel.
Étape 2 : vérification des quatre éléments
N'écrivez rien. Notez pour chacun s'il est présent ou absent :
- le registre : le fichier
documents/travaux.yamlexiste ; - le script : le fichier
outils-locaux/avancement/etat.mjsexiste ; - le bloc :
grep -aqx '## Checklist d\'avancement' CLAUDE.mdréussit (siCLAUDE.mdn'existe pas, le bloc manque) ; - les lignes d'exclusion, uniquement avec git (
git rev-parse --is-inside-work-treeaffichetrue) : le fichier affiché pargit rev-parse --git-path info/excludecontient les lignes exactes**/documents/travaux.yamlet**/outils-locaux/avancement/. Ce sont uniquement les fichiers de la compétence : les autres dossiersdocuments/du projet restent visibles pour git. Vérifiez chaque ligne avecgrep -aqxF '**/documents/travaux.yaml' "<fichier exclude>"etgrep -aqxF '**/outils-locaux/avancement/' "<fichier exclude>". Si le fichier n'existe pas, les deux lignes manquent.
L'étape est terminée lorsque vous savez quels éléments manquent.
Étape 3 : nom du projet
- Si le bloc existe dans le
CLAUDE.md, le nom est ce qui suit « Mettez à jour la checklist de » jusqu'au guillemet fermant « », à la première occurrence. Commande :grep -ao 'Mettez à jour la checklist de [^»]*' CLAUDE.md | head -1, sans le préfixe. Si le nom existe, ne posez pas de questions. Si la commande n'affiche rien ou si le nom reste vide (ligne modifiée par l'utilisateur), passez au point 2. - Sinon, posez une question avec AskUserQuestion. Première option, recommandée : le nom du dossier. Deuxième option : une variante, c'est-à-dire le titre
#du README s'il existe et est différent du nom du dossier, sinon le nom du dossier avec des majuscules ou des espaces différents. L'utilisateur peut toujours écrire un autre nom. - Si vous ne pouvez pas poser de questions (par exemple en mode non interactif), utilisez le nom du dossier et écrivez une ligne qui le précise.
L'étape est terminée lorsque vous avez le nom, appelé <PROJET> ci-dessous.
Étape 4 : installation de ce qui manque
Ne faites que ce que l'étape 2 a trouvé manquant. N'écrasez ni ne modifiez jamais ce qui existe.
- Registre. S'il manque :
mkdir -p documentset[ -e documents/travaux.yaml ] || sed "s/<AUJOURD_HUI>/$(date +%F)/g" "<base>/modeles/travaux.yaml" > documents/travaux.yaml(la garde protège un registre existant même si l'étape 2 a fait une erreur). Mais si le script existe déjà, le projet peut avoir sa propre checklist qui lit un autre registre (par exempletravaux.json) : demandez d'abord avec AskUserQuestion s'il faut créerdocuments/travaux.yaml. Première option, recommandée : ne pas le créer. Si la réponse est non, ou si vous ne pouvez pas poser de questions, ne le créez pas, écrivez une ligne qui le précise et sautez aussi les lignes d'exclusion (point 4), qui cacheraient à git les fichiers de la checklist du projet. - Script. S'il manque :
mkdir -p outils-locaux/avancementetcp -n "<base>/modeles/etat.mjs" outils-locaux/avancement/etat.mjs. - Bloc dans CLAUDE.md. S'il manque :
- lisez
<base>/modeles/claude-md.mdet remplacez chaque<PROJET>par le nom ; - exécutez
mktemp -det écrivez le bloc déjà remplacé, avec l'outil d'écriture de fichier, dans<tmp>/bloc.md(<tmp>est le dossier affiché) ; - si
CLAUDE.mdexiste et n'est pas vide, préparez la fin avec ces deux commandes (ne lisez ni ne réécrivez le fichier) :if [ -s CLAUDE.md ] && [ -n "$(tail -c1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi(ajoute le saut de ligne final s'il manque)if [ -s CLAUDE.md ] && [ -n "$(tail -n1 CLAUDE.md)" ]; then printf '\n' >> CLAUDE.md; fi(ajoute la ligne vide si la dernière ligne n'est pas vide) - ajoutez le bloc :
cat "<tmp>/bloc.md" >> CLAUDE.md(crée le fichier s'il n'existe pas). Le texte de l'utilisateur n'est jamais réécrit. - N'utilisez pas
sed: le nom peut contenir/ou&.
- lisez
- Lignes d'exclusion, uniquement avec git. Soit
<exclude>le chemin affiché pargit rev-parse --git-path info/exclude.mkdir -p "$(dirname "<exclude>")".- Ajoutez le saut de ligne final s'il manque :
if [ -s "<exclude>" ] && [ -n "$(tail -c1 "<exclude>")" ]; then printf '\n' >> "<exclude>"; fi. - Pour chaque ligne manquante parmi
**/documents/travaux.yamlet**/outils-locaux/avancement/:printf '%s\n' '**/documents/travaux.yaml' >> "<exclude>"(ou'**/outils-locaux/avancement/').
- Sans git, écrivez une ligne d'avertissement : « Il n'y a pas de git ici : la ligne du dépôt dans le widget restera vide ».
L'étape est terminée lorsque chaque élément manquant a été créé. Si rien ne manquait, l'étape est terminée immédiatement.
Étape 5 : ouverture du chat de la checklist
Faites-le aussi bien après une installation que lorsque tout était déjà présent.
- Si
mcp__ccd_session__start_sessionetmcp__ccd_session_mgmt__detach_sessionsont parmi les outils différés, chargez-les avec ToolSearch. - Appelez
start_sessionavec :initiation:user_askedcontext:freshuse_worktree:falseeffort:low(le chat exécute un script et compose un widget : l'effort de la session d'origine n'est pas nécessaire)title: « Checklist : »prompt: « Exécutenode outils-locaux/avancement/etat.mjset affiche la checklist comme indiqué dans le CLAUDE.md »background: « Checklist d'avancement du projet : le script estoutils-locaux/avancement/etat.mjs. Le CLAUDE.md du projet indique quel est le registre, comment afficher la checklist et quand mettre à jour le registre. »
- Immédiatement après, appelez
detach_sessionavec l'identifiant retourné : c'est un chat principal, pas un sous-chat. - Si
start_sessionmanque (CLI) ou refuse : exécuteznode outils-locaux/avancement/etat.mjset affichez la checklist dans ce chat, comme indiqué dans<base>/modeles/claude-md.md: avecshow_widget, ou dans un tableau markdown sishow_widgetmanque. - Si
start_sessionréussit mais que le détachement manque ou refuse, écrivez une ligne : « Détachez-le de la barre latérale avec Detach to top level ». - Chaque lancement ouvre un nouveau chat : ne cherchez pas les chats précédents.
L'étape est terminée lorsque le chat est ouvert et détaché, ou lorsque la checklist a été affichée dans ce chat.
Étape 6 : message final
Écrivez deux ou trois lignes :
- ce que vous avez ajouté, ou « Tout était déjà présent » ;
- les avertissements, s'il y en a ;
- où trouver le chat de la checklist.
Écrivez également que pour ajouter ou fermer des tâches, il suffit de le dire dans le chat : la règle dans le CLAUDE.md permet de mettre à jour le registre.
L'étape est terminée lorsque le message est écrit.