Claude Code × OpenSpec
Harnessun échafaudage pour coder avec un agent
Un template qui pose, dans chaque projet, la même charpente autour de Claude Code : skills, agents, rules, hooks et contrôles CI. Quelle que soit la stack.
01 — En bref
Quatre idées tiennent toute la charpente
Le harness ne remplace ni Claude Code ni OpenSpec : il les assemble en un processus outillé, vérifiable et proportionné au besoin.
Quoi
Une couche de harness autour d’OpenSpec : skills, agents, rules, hooks, contrôles CI.
Agnostique
Le générique ignore la stack. Le spécifique tient dans quelques fichiers remplis par /hx-setup.
Copier
Installe et met à jour les projets par fusion à 3 voies. Tes personnalisations restent.
Règle d’or
Tout contrôle existe en CI. Les hooks locaux ne font qu’accélérer le retour.
02 — Cycle de vie
Un template qui descend, des leçons qui remontent
Le repo Harness est versionné par tags. Chaque projet le reçoit par Copier, l’adapte une fois à sa stack, puis suit ses mises à jour. Ce qui s’apprend sur le terrain remonte dans le template.
- Détecter les manifestes
- Proposer composants et commandes
- Exécuter chaque commande (preuve)
- Rédiger rules, carte, setup CI
- Valider : tu relis le diff
03 — Le workflow
Un seul arrêt prévu : la porte de cadrage
Tu cadres avec l’agent jusqu’à une spec qui dit ce que tu as demandé. Ensuite le run va seul jusqu’au rapport, dans son propre worktree, pendant que tu cadres le change suivant.
- skill
- sous-agents
- registre OpenSpec / template
- optionnel
/hx-ship fait de l’archive OpenSpec le dernier commit de la PR. Livraison automatique (optionnelle, piste M) : si hx confidence l’autorise, le run ouvre seul la PR et y publie une revue en commentaire.04 — Les outils
Un tronc, cinq branches, 40 feuilles
Chaque feuille est un outil du harness. Clique-la pour déplier son explication : ce qu’il fait et quand il sert.
copier copy.Skills
15Procédures chargées à la demande, au format standard SKILL.md.
- dans le workflow
hx-triagechoisit la piste- Fait
- Choisit la piste S, M ou L d’une demande, avant toute ligne de code ou de spec. Tient la porte de cadrage.
- Quand
- Au début de toute demande : fonctionnalité, correctif, refonte, migration.
hx-clarifylève les ambiguïtés- Fait
- Au plus cinq questions ciblées, en un seul message, chacune avec une réponse par défaut.
- Quand
- Piste M ou L dont le besoin, le périmètre, les cas limites ou les critères d’acceptation restent flous.
hx-tddtest d’abord- Fait
- Rouge, vert, refactor, avec une preuve d’exécution à chaque étape.
- Quand
- Tout changement de comportement, avant d’écrire le code de production.
hx-debugcause racine prouvée- Fait
- Reproduire par un test, isoler, prouver la cause, corriger au minimum. Le test de non-régression reste.
- Quand
- Bug, erreur, test ou CI en échec dont la cause n’est pas évidente.
hx-implementune tâche, un sous-agent- Fait
- Réalise un change OpenSpec tâche par tâche : un sous-agent neuf par tâche, revue de conformité après chacune, preuve avant de cocher.
- Quand
- Le run d’un change validé, à la place de
/opsx:apply.
hx-verifypreuve fraîche- Fait
- Lance les contrôles complets et rapporte leur sortie réelle. Pas de « terminé » sans preuve.
- Quand
- Avant de dire qu’un travail est fini, avant un commit final ou une PR.
hx-reviewrelecteurs indépendants- Fait
- Fait relire le changement par des sous-agents (spec, qualité, sécurité si pertinent), écarte les faux positifs, consolide.
- Quand
- Après
hx-verify, avant de livrer. Ou à la demande sur une branche.
hx-shiparchive, PR, CI- Fait
- Vérification finale, archive OpenSpec en dernier commit, push, PR, suivi de la CI. En livraison automatique : PR en brouillon, puis revue publiée en commentaire.
- Quand
- Par toi, quand le travail est vérifié et relu ; ou seul en fin de run, si
hx confidencel’autorise.
hx-learnerreur répétée → règle- Fait
- Transforme une leçon en contrôle, rule ou skill (ou en note), au niveau du projet ou du template.
- Quand
- Après un merge, un incident, ou une correction qui revient une deuxième fois.
hx-adrdécision structurante- Fait
- Rédige un ADR « besoin d’abord » dans
docs/adr/. - Quand
- Décision difficile à défaire, piste L : schéma de données, API publique, découpage en modules.
- à la demande
hx-setupadapte à la stack- Fait
- Détecte les composants, exécute chaque commande, rédige les rules de stack, le setup CI et la carte du projet. Finit par
hx doctor. - Quand
- Juste après l’installation, ou pour ajouter ou corriger un composant.
hx-discoverspec d’un existant- Fait
- Écrit la spec OpenSpec de base d’une capability à partir du code actuel et relie les tests par des tags
@scenario. - Quand
- Avant de faire évoluer une partie d’un projet existant qui n’a pas de spec.
hx-security-auditCVE et injection SQL- Fait
- Inventorie les dépendances, cherche leurs CVE, puis les angles d’injection SQL. Lecture seule.
- Quand
- À la demande ou à intervalle régulier, hors workflow. Pour un diff, c’est
hx-review.
hx-explainexpliquer simplement- Fait
- Pour un non-développeur : explique une décision de la session, fait le bilan de son usage du harness ou explique une notion en mots simples. Lecture seule.
- Quand
- À la demande, hors workflow, quand on veut comprendre plutôt qu’avancer.
hx-dreamconsolider la mémoire- Fait
- Comme le sommeil : rejoue les leçons du projet, oublie le périmé et le redondant, fusionne les épisodes en principes, met le plus important en premier. Propose un plan, n’écrit qu’après ta validation.
- Quand
- À la demande, quand
docs/learnings/s’allonge ou à chaque revue d’élagage.
Agents
7Sous-agents en contexte isolé : qui produit n’évalue pas.
hx-explorercartographie le code- Fait
- Parcourt le code en lecture seule et renvoie une synthèse courte.
- Quand
- Avant une proposition ou une implémentation : où vit une fonctionnalité, ce qu’un changement impacte.
hx-implementerune tâche, contexte neuf- Fait
- Réalise une seule tâche en TDD et rend la preuve d’exécution des tests.
- Quand
- Appelé par
hx-implementpour chaque tâche, ou pour un correctif isolé.
hx-spec-reviewerla spec, ni plus ni moins- Fait
- Vérifie en lecture seule que le code respecte les scénarios de la spec.
- Quand
- Après chaque tâche implémentée, et avant la livraison.
hx-code-reviewerqualité, architecture- Fait
- Relit le diff : simplicité, conventions, sur-ingénierie, règles de dépendance, commentaires.
- Quand
- Avant de livrer, en parallèle de
hx-spec-reviewer.
hx-security-reviewerangle sécurité- Fait
- Relit le diff : secrets, injections, authentification, données sensibles, dépendances.
- Quand
- Quand le changement touche des entrées externes, l’auth, des données personnelles, la CI ou l’infra.
hx-architectle minimum suffisant- Fait
- Part du besoin, propose des options proportionnées, recommande le minimum suffisant.
- Quand
- Piste L,
design.md, ADR, nouvelle couche. Conteste aussi le cadrage avant la porte.
hx-verifierpreuves, pas opinions- Fait
- Prouve par l’exécution qu’un changement marche : contrôles, application, tests de bout en bout.
- Quand
- Avant de déclarer un travail terminé, surtout si le comportement se voit à l’exécution.
CLI hx
10Sans dépendance. Seule porte vers la stack : hx run test plutôt que npm ou dotnet.
hx runune commande du contrat- Fait
- Exécute une commande de
.harness/config.json(test, lint…) dans le dossier de son composant. - Quand
- Partout où un skill aurait écrit
npmoudotnet.--componentou--filepour cibler.
hx checktous les contrôles- Fait
- Contrat, OpenSpec, archives, pistes, trace, lint, typecheck, arch, test. Jamais vert sans test.
- Quand
- En local comme en CI (
hx-check.yml).--fast: validate, lint, typecheck.
hx tracescénario ↔ test- Fait
- Relie chaque scénario OpenSpec à un test tagué
@scenario. - Quand
- Inclus dans
hx check. Seul, pour voir les scénarios non couverts.
hx doctorsanté de l’installation- Fait
- Vérifie l’installation, exécute chaque commande, signale un projet en retard et les conflits Copier.
- Quand
- À la fin de
/hx-setup, après chaquecopier update.
hx detecttrouve les composants- Fait
- Propose les composants à partir des manifestes :
package.json,pyproject.toml,go.mod,.csproj… - Quand
- Par
/hx-setup.--writeécritconfig.json.
hx worktreeisole un run- Fait
- Crée une branche et un worktree frère pour le run d’un change validé.
- Quand
- Après la porte de cadrage, avant
/hx-implementen mode Auto.
hx statusoù en est chaque run- Fait
- Liste les changes de chaque worktree avec leur piste, leurs tâches et leur étape : cadrage, run en cours, rapport de fin de run.
- Quand
- Pendant que les runs avancent, depuis le dossier principal où tu cadres le change suivant.
hx statsmesures d’élagage- Fait
- Additionne les mesures des changes archivés : corrections à la porte, décisions retirées par la contre-relecture, constats de revue confirmés ou écartés.
- Quand
- Dans
hx-learn, et à chaque revue d’élagage.
hx migratecomplète config.json- Fait
- Ajoute à
.harness/config.jsonles clés nouvelles du template. - Quand
- Lancé par
copier update.
hx openspecOpenSpec épinglé- Fait
- Appelle la version épinglée d’OpenSpec.
- Quand
- Pour que le poste et la CI utilisent la même version.
Rules
4Ciblées par chemin, pour garder le contexte léger. Plus les rules stack-* du projet.
openspecécrire une spec- Cadre
- Format des exigences et des scénarios, traçabilité, clés
x-tracketx-validated. - Chargée sur
openspec/**
testingécrire un test- Cadre
- Test d’abord, un comportement par test, tag
@scenario, doublures aux frontières seulement, déterministe. - Chargée sur
- Les fichiers de test.
architecturefeature-first- Cadre
- Respecte le niveau d’architecture du projet (
config.json). Une couche seulement pour un besoin nommé. - Chargée sur
- Les fichiers source.
commentspar défaut, aucun- Cadre
- Liste fermée d’exceptions. Test : le supprimer fait-il perdre une information introuvable ailleurs ?
- Chargée sur
- Les fichiers source.
Hooks
4Branchés sur la session Claude Code. Ils accélèrent le retour ; la CI reste l’arbitre.
SessionStartdémarrage- Fait
- Pose le contexte de session. Installe la CLI OpenSpec si elle manque.
- Moment
- À l’ouverture de la session.
PreToolUseavant l’outil- Fait
- Rappelle la règle à Claude quand il édite une spec principale ou un fichier qui décide de ce qui s’exécute (contrat, hooks, permissions, version d’OpenSpec), et le renvoie de openspec-apply-change vers hx-implement. Ne demande jamais de confirmation.
- Moment
- Avant chaque Edit, Write ou Skill.
PostToolUseaprès une édition- Fait
- Lint du fichier qui vient d’être édité.
- Moment
- Après chaque Edit ou Write.
Stopfin de tour- Fait
- D’après git : contrôles rapides des composants modifiés, chemins protégés modifiés signalés, quel que soit l’outil.
- Moment
- Quand l’agent rend la main.