Un harness de coding IA multi-outils. Une commande, rien à installer.
create-usine te pose un dossier à toi : des skills au format Agent Skills (workflow engineering + productivité de Matt Pocock, plus quelques skills maison), branchés sur Claude Code, OpenCode, Codex, Antigravity et Grok. Un skill s'écrit une fois, tous tes outils le voient.
npx github:Nardjo/usine mon-harness # npm
pnpm dlx github:Nardjo/usine mon-harness
yarn dlx github:Nardjo/usine mon-harness
bunx github:Nardjo/usine mon-harnessPrérequis : Node 18+, macOS, au moins un des outils ci-dessus. Homebrew aide pour trash et rtk.
Ça crée mon-harness/, détecte tes outils, adopte tes settings / hooks / plugins / commands déjà présents, puis symlink tout depuis ce dossier. Rien pour les outils que tu n'as pas. Secrets et caches lourds restent locaux (settings.local.json, fichiers d'auth, cache Claude, plugins marketplace Codex). Pas de questions, pas de git init : le dossier est à toi.
Pour figer une version : npx github:Nardjo/usine#v0.3.0 mon-harness.
Ensuite, lis le README.md du dossier créé.
Copie-colle ce prompt dans Claude Code, Cursor, Codex, OpenCode, ou tout autre LLM qui peut lancer des commandes :
Installe mon harness de l'usine à code.
1. Prérequis : Node.js >= 18, macOS. Vérifie Node (`node -v`). Si Node manque ou est trop vieux, dis-moi comment l'installer et arrête.
2. Demande-moi où je veux le mettre sur ma machine (chemin parent, ex. `~/Projects`). Nom du dossier : `usine` par défaut — propose-le, change seulement si je le demande ou s'il existe déjà.
3. Depuis ce chemin parent, lance exactement :
npx --yes github:Nardjo/usine usine
(adapte le dernier argument si j'ai choisi un autre nom ; ou `pnpm dlx` / `yarn dlx` / `bunx` selon mon package manager.)
4. Ne clone pas le repo à la main, ne réécris pas setup.sh. Ne pose de questions que pour l'emplacement (et le nom si besoin).
5. À la fin, résume : chemin absolu du dossier créé, outils branchés (d'après la sortie), et dis-moi de lire `<dossier>/README.md`.
Si tu ne peux pas exécuter de commandes shell : affiche la commande exacte à coller dans mon terminal et arrête.
- Un starter curé : skills Matt + skills maison (
caveman,update-harness,install-skill,empty-trash). Catalogue : template/SKILLS.md - Un layout unique :
skills/etcommands/partagés, plustools/<outil>/par provider. Tes configs existantes sont adoptées puis liées ; rien n'est écrasé sans.bak - Le dossier t'appartient. Les mises à jour sont opt-in et ne touchent pas tes changements sans te demander
- Un
setup.shqui rebranche le tout (à relancer après l'install d'un nouvel outil)
Pour ajouter un skill tiers : invoquer install-skill dans un outil, pour qu'il atterrisse dans skills/ puis soit lié partout. Ne jamais le laisser seulement sous ~/.claude/skills / ~/.agents/skills / etc.
npx github:Nardjo/usine update mon-harness
npx github:Nardjo/usine update --check mon-harness # dry-run
npx github:Nardjo/usine update # cwd, ou détection via les symlinks
npx github:Nardjo/usine update mon-harness --take skills/tdd # forcer l'upstream sur un conflitnpx récupère ce repo : update applique le template/ curé sur ton harness. Les skills nouveaux sont ajoutés, ceux que tu n'as pas touchés et qui ont changé upstream sont rafraîchis, tes copies modifiées passent en conflit (diff + prompt ; backup sous .usine/backup/ si tu prends l'upstream). CLAUDE.md / AGENTS.md ne sont jamais touchés, un skill retiré upstream n'est jamais supprimé, setup.sh est relancé à la fin. Un .usine/manifest.json (écrit au scaffold, bootstrapé au premier update pour les anciens harness) suit ce qui vient du template.
Depuis un outil IA : skill update-harness (même CLI, pas une sync Matt Pocock). Décision : docs/adr/0002.
La structure a changé (tools/, commands/ partagés). Ne pas re-scaffolder dans un nouveau dossier : réinstaller sur place.
npx github:Nardjo/usine reinstall mon-harness
npx github:Nardjo/usine reinstall # depuis le harness, ou via les symlinksÇa migre commands/<outil>/ et agents/<outil>/, garde tes skills et fichiers perso, rafraîchit setup.sh + le starter, puis relance setup.sh. Alias : upgrade.
Claude Code, OpenCode, Codex, Antigravity et Grok ont convergé sur le même standard Agent Skills : un dossier <nom>/SKILL.md avec du frontmatter name + description. Pas de moteur de conversion : un symlink suffit. Détail : docs/adr/0001.
- RTK (Rust Token Killer) :
setup.shinstalle le binaire s'il manque (brew install rtkou curl), poseRTK.md, le lie, et lancertk initpour les hooks Claude / OpenCode - trash :
setup.shinstalle letrashHomebrew s'il manque ; les règles du harness interdisentrm, les suppressions passent par la Corbeille macOS - Si tu versionnes le harness : retire secrets et chemins machine-local de
config.toml/ settings avant de committer. Unconfig.tomlCodex déjà présent est adopté tel quel
.
├── bin/ # CLI (create-usine / update / reinstall)
├── src/
├── build/ # rafraîchit les skills Matt dans template/skills/
├── template/ # contenu copié dans le harness
│ └── skills/ # tous les skills (Matt + maison), un dossier plat
├── maintainer/ # ce repo uniquement, jamais livré
│ └── skills/sync-mattpocock/
├── test/
└── docs/adr/
Les skills maison s'éditent sous template/skills/ (ex. empty-trash).
npm run build:template rafraîchit les skills Matt et garde les dossiers non-Matt.
npm test
npm run build:template
node bin/create-usine.js test-harness
node bin/create-usine.js update test-harnessMIT