/checklist

/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à.

Qu'est-ce que checklist ?

Cette compétence installe et affiche une checklist d'avancement de projet dans un chat dédié. Elle est conçue pour fonctionner avec Claude Code et tout assistant IA compatible fichier CLAUDE.md. La compétence détecte automatiquement les composants manquants (registre de tâches, script d'état, règle CLAUDE.md, exclusions git) et les installe sans écraser les fichiers existants. Après installation, elle ouvre un nouveau chat intitulé « Checklist : nom du projet » avec le widget d'avancement, permettant à l'utilisateur de suivre et mettre à jour la progression simplement en discutant. La compétence gère les cas particuliers (worktrees git, dossier personnel, absence de git) et offre une expérience non destructive.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Wolftux/checklist/tree/HEAD/plugins/checklist/checklist

Installed? Explore more Productivité et collaboration skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation


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 grep utilise -a : dans Claude Code, grep peut traiter un fichier non UTF-8 comme binaire et ne pas trouver les lignes qui existent.

Étape 1 : vérifications préliminaires

  1. 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.
  2. Exécutez git rev-parse --path-format=absolute --git-dir et git 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.
  3. Exécutez pwd -P et (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.yaml existe ;
  • le script : le fichier outils-locaux/avancement/etat.mjs existe ;
  • le bloc : grep -aqx '## Checklist d\'avancement' CLAUDE.md réussit (si CLAUDE.md n'existe pas, le bloc manque) ;
  • les lignes d'exclusion, uniquement avec git (git rev-parse --is-inside-work-tree affiche true) : le fichier affiché par git rev-parse --git-path info/exclude contient les lignes exactes **/documents/travaux.yaml et **/outils-locaux/avancement/. Ce sont uniquement les fichiers de la compétence : les autres dossiers documents/ du projet restent visibles pour git. Vérifiez chaque ligne avec grep -aqxF '**/documents/travaux.yaml' "<fichier exclude>" et grep -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

  1. 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.
  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.
  3. 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.

  1. Registre. S'il manque : mkdir -p documents et [ -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 exemple travaux.json) : demandez d'abord avec AskUserQuestion s'il faut créer documents/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.
  2. Script. S'il manque : mkdir -p outils-locaux/avancement et cp -n "<base>/modeles/etat.mjs" outils-locaux/avancement/etat.mjs.
  3. Bloc dans CLAUDE.md. S'il manque :
    • lisez <base>/modeles/claude-md.md et remplacez chaque <PROJET> par le nom ;
    • exécutez mktemp -d et écrivez le bloc déjà remplacé, avec l'outil d'écriture de fichier, dans <tmp>/bloc.md (<tmp> est le dossier affiché) ;
    • si CLAUDE.md existe 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 &.
  4. Lignes d'exclusion, uniquement avec git. Soit <exclude> le chemin affiché par git 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.yaml et **/outils-locaux/avancement/ : printf '%s\n' '**/documents/travaux.yaml' >> "<exclude>" (ou '**/outils-locaux/avancement/').
  5. 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.

  1. Si mcp__ccd_session__start_session et mcp__ccd_session_mgmt__detach_session sont parmi les outils différés, chargez-les avec ToolSearch.
  2. Appelez start_session avec :
    • initiation : user_asked
    • context : fresh
    • use_worktree : false
    • effort : 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écute node outils-locaux/avancement/etat.mjs et affiche la checklist comme indiqué dans le CLAUDE.md »
    • background : « Checklist d'avancement du projet : le script est outils-locaux/avancement/etat.mjs. Le CLAUDE.md du projet indique quel est le registre, comment afficher la checklist et quand mettre à jour le registre. »
  3. Immédiatement après, appelez detach_session avec l'identifiant retourné : c'est un chat principal, pas un sous-chat.
  4. Si start_session manque (CLI) ou refuse : exécutez node outils-locaux/avancement/etat.mjs et affichez la checklist dans ce chat, comme indiqué dans <base>/modeles/claude-md.md : avec show_widget, ou dans un tableau markdown si show_widget manque.
  5. Si start_session ré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 ».
  6. 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.

Skills associés