From python-toolkit
Crée, audite et maintient des justfiles propres, principalement pour Python sur Windows (multi-plateforme aussi). Utiliser AVANT toute création ou modification d'un justfile pour éviter les pièges des agents AI — recettes multi-lignes qui plantent, interpolation `{{var}}` vs `$VAR` cassée, réécritures destructrices, doublons de recettes, shell Windows mal configuré, attributs mal placés. Déclencher sur "crée un justfile", "ajoute une recette just", "mon justfile ne marche pas", "audit mon justfile", "set windows-shell", "ma recette multi-ligne échoue", "doublons dans justfile", "corrige mon justfile", "intègre just avec Cursor / VS Code", ou toute mention de `just`, `justfile`, `Justfile`, `.just`. Utiliser aussi proactivement quand l'utilisateur demande des "raccourcis", "task runner", "make pour Python" ou "alias projet". NE PAS utiliser pour les Makefiles, scripts npm, ou tasks.json de VS Code natives.
How this skill is triggered — by the user, by Claude, or both
Slash command
/python-toolkit:justfile-keeperThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Skill pour créer et maintenir des `justfile` impeccables. Pensée d'abord pour des projets Python sous Windows, mais cross-platform.
Skill pour créer et maintenir des justfile impeccables. Pensée d'abord pour des projets Python sous Windows, mais cross-platform.
Lire avant d'écrire. Modifier sans détruire. Ne jamais dupliquer.
C'est non-négociable. Les pires erreurs des agents AI sur les justfiles ne viennent pas d'ignorance de la syntaxe — elles viennent d'une réécriture imprudente qui efface des recettes utiles, ajoute des doublons, ou casse le style établi.
Utilise cette skill dès que :
Si un fichier nommé justfile, Justfile, .justfile, *.just est dans le projet — lis-le avant de répondre.
Si un justfile existe, lire le fichier en entier avant toute autre action. Pas de head, pas de grep partiel : view complet ou cat complet. Cette lecture sert à construire l'inventaire de la règle 2.
Avant d'ajouter quoi que ce soit, dresse mentalement (ou explicitement si demandé) :
alias t := test)name := "...", python := "...")set shell, set windows-shell, set dotenv-load, set export, set positional-arguments)#!/usr/bin/env pwsh, etc.)str_replace pour modifier un justfile existant. Jamais de create_file qui écrase tout.str_replace, faire plusieurs str_replace consécutifs plutôt qu'une réécriture complète.Avant d'ajouter une recette X :
X existe déjà ? → Demander : modifier l'existante ou la remplacer ?build vs compile, test vs tests, fmt vs format, lint vs check) → Signaler à l'utilisateur avant d'ajouter.test, ne pas créer tests. Si fmt, ne pas créer format.Adopter ce que l'auteur a déjà choisi :
'simple' vs "double" — just les traite différemment ; voir references/syntax-reference.md)# blabla au-dessus, à droite, ou aucun)@) ou passet au débutIdentifier le contexte du projet :
ruff, pytest, mypy, pre-commit, uv, pip-tools, pandoc, etc.)pyproject.toml, package.json, Cargo.tomlChoisir un template de base depuis templates/ :
templates/python-base.justfile — Python générique (venv, lint, test, type-check)templates/python-fastapi.justfile — Python avec serveur dev (uvicorn, hot-reload)templates/python-publishing.justfile — Pipeline de publication (markdown → docx → PDF) pour le workflow Fantasy Vixens / Ludomancientemplates/multi-platform.justfile — Squelette avec set windows-shell, attributs [unix]/[windows], variables os_family()-awareAdapter le template au projet réel : ne pas copier-coller aveugle, supprimer les recettes non pertinentes.
Vérifier avec la checklist d'audit (Mode AUDIT, étape de validation).
Suivre cette checklist dans l'ordre. Pour chaque item, lire le passage pertinent de references/ai-agent-errors.md si nécessaire.
| # | Vérification | Si problème → |
|---|---|---|
| 1 | set shell ou set windows-shell présent et cohérent avec l'OS cible ? | Voir references/windows-shell.md |
| 2 | Chaque recette multi-ligne a-t-elle un shebang OU se passe sans état partagé entre lignes ? | Voir references/ai-agent-errors.md §2 |
| 3 | Toutes les {{var}} sont-elles des variables just (pas des $VAR shell mal placés) ? | Voir references/ai-agent-errors.md §3 |
| 4 | Pas de doublons de recettes (même nom, ou synonymes évidents) ? | Voir Règle 4 ci-dessus |
| 5 | Attributs ([private], [group()], [confirm], [unix], [windows], [no-cd]) sur la ligne juste au-dessus de la recette, sans @ mélangé ? | Voir references/syntax-reference.md §Attributs |
| 6 | Paramètres avec défauts en quotes simples (arg='val') ? Variadiques (+files, *files) corrects ? | Voir references/syntax-reference.md §Paramètres |
| 7 | Pas de .PHONY:, pas de $(VAR) style make, pas de \t imposé ? | Voir references/ai-agent-errors.md §1 |
| 8 | Une recette default ou _default ou help qui liste les recettes (@just --list) ? | Recommandé, pas obligatoire |
| 9 | Variables Python venv-aware si projet Python multi-plateforme ? | Voir references/windows-shell.md §Venv portable |
| 10 | set dotenv-load := true si le projet a un .env ? set export := true si les variables doivent passer au shell ? | Voir references/syntax-reference.md §Settings |
Produire un rapport d'audit structuré : pour chaque problème détecté, donner ligne, diagnostic, correctif proposé. Ne pas appliquer les correctifs sans confirmation de l'utilisateur, sauf demande explicite.
str_replace pour appliquer.Détails complets dans references/ai-agent-errors.md. Résumé exécutif :
MAUVAIS :
build:
cd src
python -m build # ❌ on n'est plus dans src/ ici, chaque ligne = nouveau shell
cp dist/* ../release/
BON (shebang qui force un seul shell) :
build:
#!/usr/bin/env pwsh
Set-Location src
python -m build
Copy-Item dist/* ../release/
OU (chaîner avec && sur une seule ligne logique) :
build:
cd src && python -m build && cp dist/* ../release/
{{var}} (just) et $VAR (shell){{var}} est interpolé par just au moment du parsing. $VAR est lu par le shell à l'exécution. Ils ne sont PAS interchangeables.
MAUVAIS :
release version:
git tag $version # ❌ $version est vide pour le shell
echo "Released {{ VERSION }}" # ❌ VERSION pas défini côté just
BON :
release version:
git tag {{version}}
echo "Released {{version}}"
Jamais. Toujours str_replace. Voir Règle 3 ci-dessus.
# Ajouter en haut du justfile pour Windows :
set windows-shell := ["pwsh.exe", "-NoLogo", "-Command"]
# OU si pwsh pas installé :
set windows-shell := ["powershell.exe", "-NoLogo", "-Command"]
Détails : references/windows-shell.md.
Si l'utilisateur veut t comme raccourci de test :
MAUVAIS : créer une seconde recette t: qui fait la même chose.
BON :
alias t := test
test:
pytest
references/À consulter selon le besoin :
references/syntax-reference.md — Cheat sheet complet de la syntaxe just (variables, paramètres, attributs, settings, conditionnels, imports/modules, fonctions built-in). Consulter quand tu écris une nouvelle construction et que tu n'es pas certain à 100% de la syntaxe.references/ai-agent-errors.md — Top 20 des erreurs typiques d'agents AI sur les justfiles, avec diagnostic et correctif. Consulter en mode AUDIT.references/windows-shell.md — Spécificités Windows : choix de shell (cmd vs powershell vs pwsh vs Git Bash), activation venv portable, séparateurs de chemin, attributs [windows]/[unix]/[macos]/[linux]. Consulter dès qu'il y a Windows dans la cible.references/editor-integration.md — Intégration Cursor/VS Code : extension recommandée, association de fichiers, lint, snippets, intégration tasks.json si l'utilisateur veut bouton-cliquer dans l'IDE.templates/Squelettes réutilisables. Adapter, ne pas copier aveugle :
templates/python-base.justfile — Projet Python standard : venv, ruff, pytest, mypy, build, clean. Variables venv-aware Windows/Unix.templates/python-fastapi.justfile — Étend python-base avec dev (uvicorn hot-reload), migrate, seed.templates/python-publishing.justfile — Pipeline éditorial markdown → docx → PDF (Pandoc, Affinity Publisher, ElevenLabs). Adapté au workflow Fantasy Vixens / Ludomancien.templates/multi-platform.justfile — Squelette générique avec set windows-shell, attributs [windows]/[unix], variables os_family()-aware.Avant de dire "c'est fait", vérifier :
&& OU pas d'état partagé{{var}} correctement utilisées, pas de confusion avec $VARset dotenv-load si .env présent dans le projetdefault ou help qui liste les recettes (UX).PHONY, $(VAR), ou autre vestige Makejust (sans argument) fait quoi ? La commande just <recipe> la plus utilisée fonctionne-t-elle sous Windows ?Si tout est ✅, remettre le justfile. Sinon, corriger en suivant la Discipline obligatoire.
npx claudepluginhub camauger/dev-skills --plugin python-toolkitCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.