Synthèse automatique
Détermine les commandes réelles de lint, test, build et formatage d'un projet en lisant ses manifestes et fichiers de configuration, au lieu de les supposer.
Points forts
- Couvre un large éventail d'écosystèmes (Node, Dart/Flutter, Rust, Go, Python, JVM) avec un ordre de recherche explicite
- Impose la détection du gestionnaire de paquets via le fichier de verrouillage et la prise en compte du filtrage monorepo
- Distingue clairement « les tests échouent » de « les tests n'ont pas tourné », en cas de binaire manquant
- Demande de restituer la toolchain résolue à l'humain puis de la consigner dans CLAUDE.md ou .claude/settings.json
Limites
- La liste d'écosystèmes est fermée : les projets sans manifeste listé (C#, Swift, PHP, etc.) ne sont pas traités
- La persistance dans CLAUDE.md ou .claude/settings.json suppose un dépôt et des outils compatibles Claude Code
- La re-vérification des commandes consignées reste manuelle, rien n'automatise l'invalidation d'un enregistrement obsolète
À utiliser dès qu'un agent ou une commande doit lancer le lint, les tests ou le build d'un dépôt inconnu, ou lorsqu'une vérification échoue avec « command not found ».
À éviter sur un projet dont la toolchain est déjà documentée et fiable, ou hors du périmètre des écosystèmes listés.
Analyse de sécurité
PrudenceThe skill is not malicious: it reads manifests and configs, avoids guessing, forbids unasked dependency installation, and uses Bash only to run legitimate project checks. However, it deliberately executes repository-defined scripts and may persist inferred toolchain data into shared project files, so it carries real execution and modification risk and should be listed as caution.
- •Runs project-defined lint/test/build commands through Bash after resolving them from manifests; in an untrusted repository those scripts can execute arbitrary code.
- •Step 7 instructs writing resolved commands into CLAUDE.md or .claude/settings.json, modifying project configuration without an explicit confirmation gate.
- •Does not warn against executing unvetted manifest scripts or advise reviewing script contents before the verification run.
Exemples
Run this project's lint and tests for me — I just cloned it and have no idea what the setup is.The PR check failed with 'command not found', can you figure out what the actual lint and test commands are for this repo?I only changed the api package — work out the toolchain and run just that package's tests instead of the whole monorepo.name: project-toolchain description: Work out which commands actually lint, test, build and format THIS project before running any of them - by reading its manifests and configs, never by assuming. Use whenever a command or agent needs to "run the project's lint/test/build", when a check fails with "command not found", or when onboarding the AI-SDLC harness into an unfamiliar repo. allowed-tools: Read, Grep, Glob, Bash
project-toolchain
Several parts of this harness say "run the project's lint and test commands"
without saying what they are — /review, /pr, /skill-approve, and the
reviewer and security agents all defer that decision to the project. This
skill is how that decision gets made, so a framework-agnostic harness can run
real checks in a repo it has never seen.
Never assume npm test or flutter analyze. Guessing produces one of two bad
outcomes: a "command not found" that looks like a broken harness, or — worse —
a check that appears to pass because it silently did nothing.
Steps
-
Find the manifest, nearest to the working directory, checking in this order and stopping at the first hit:
| File | Ecosystem | Where the commands are | |---|---|---| |
package.json| Node | itsscriptsobject | |pubspec.yaml| Dart/Flutter | conventionalflutter/dartcommands | |Cargo.toml| Rust |cargo fmt/clippy/test/build| |go.mod| Go |gofmt,go vet,go test ./...,go build ./...| |pyproject.toml/setup.cfg| Python | tool sections (ruff,black,pytest) | |Makefile/Justfile| any | its targets — these override the above when present | |build.gradle(.kts)/pom.xml| JVM |gradle/mvntasks | -
Read the scripts, do not infer them. For Node, print
package.json'sscriptsand use those exact names. A repo with"test": "turbo run test"is run with the package manager'stestscript, not withvitestorjestdirectly, even when those are the underlying runners — the script may set env, ordering, or workspace scope that matters. -
Identify the package manager from the lockfile, not from habit:
pnpm-lock.yaml→pnpm,yarn.lock→yarn,bun.lockb→bun,package-lock.json→npm. Runningnpm testin a pnpm workspace is a common way to get confusing failures. -
Detect a monorepo and respect its scoping.
pnpm-workspace.yaml,turbo.json,nx.json,lerna.json, or aworkspacesfield mean a root-level command fans out to every package. When the change is scoped to one package, prefer that tool's filter (turbo run test --filter=<pkg>,pnpm --filter <pkg> test) so a five-minute full run does not hide a ten-second answer. -
Verify before relying on it. Run the resolved lint or test command once. If it fails with a missing-binary error rather than a real finding, dependencies are not installed — say so and stop, rather than reporting the check as failed on its merits. There is a real difference between "the tests fail" and "the tests did not run", and only one of them is the author's problem.
-
Report the resolved toolchain explicitly before using it, so the human can correct a wrong guess cheaply:
Toolchain for <repo>: package manager: pnpm (pnpm-lock.yaml) monorepo: turbo (turbo.json) — filter with --filter=<pkg> lint: pnpm lint test: pnpm test build: pnpm build format check: pnpm format:check -
Record it so the next session does not re-derive it: write the resolved commands into the project's
CLAUDE.md, or atoolchain:block in.claude/settings.json. Prefer reading that record on later runs, but re-verify it if a command starts failing — records go stale when a repo migrates package managers.
Anti-patterns to refuse
- Running
npm test/yarn test/flutter testwithout having read a manifest that says so. - Reporting "lint passed" when the command was not found or exited non-zero for a setup reason.
- Running a full monorepo test suite when the diff touches one package and the tool supports filtering — unless the change is cross-cutting.
- Installing dependencies unasked as a way to make a check run. Report the missing setup; installing can rewrite a lockfile the team owns.
- Writing a resolved toolchain into a shared file when it was only inferred, not verified by running it.
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/detect-the-project-s-toolchain-mtwgrtdt/download' --output '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md.part' && mv '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md.part' '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Grep, Glob, Bash
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md' && test -s '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/project-toolchain' && cp -R '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt' '.claude/skills/project-toolchain'Cursor
test -f '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md' && test -s '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/project-toolchain' && cp -R '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt' '.cursor/skills/project-toolchain'Codex
test -f '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md' && test -s '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/project-toolchain' && cp -R '.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt' '.agents/skills/project-toolchain'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/detect-the-project-s-toolchain-mtwgrtdt'openskills read 'detect-the-project-s-toolchain-mtwgrtdt'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/detect-the-project-s-toolchain-mtwgrtdt/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.