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.

npx github:PatayEnCroute/Harness
4 hooks 14 skills le contrat 7 agents 4 rules

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.

Repo Harness template versionné · tags /hx-setup détecte · propose · vérifie Projet prêt hx doctor ✓ copier copy adapté à la stack hx-learn : l’amélioration générique remonte copier update — fusion à 3 voies, tes personnalisations restent
  1. Détecter les manifestes
  2. Proposer composants et commandes
  3. Exécuter chaque commande (preuve)
  4. Rédiger rules, carte, setup CI
  5. 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
S · CORRECTIF — SANS SPEC Intention hx-triage hx-tddou hx-debug hx-verifypreuve fraîche commit ✓ M · L 1 · CADRAGE — AVEC TOI hx-clarifysi la demande est floue /opsx:proposeL : + hx-architect · hx-adr porte de cadrage le seul arrêt prévu x-validated · hx worktree 2 · RUN — SEUL, DANS SON WORKTREE — s’arrête seulement sur un vrai blocage hx-implement1 sous-agent / tâche hx-verifypreuves fraîches hx-reviewreviewers indépendants rapport 3 · LIVRAISON — TOI /hx-shiparchive · PR · CI hx-learnerreur répétée → règle générique Harness le template s’améliore
Le run ne s’arrête que sur un vrai blocage : 3 échecs sur une tâche, spec fausse, piste qui monte, outillage cassé. /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.

hx-triage hx-clarify hx-tdd hx-debug hx-implement hx-verify hx-review hx-ship hx-learn hx-adr hx-setup hx-discover hx-security-audit hx-explain hx-dream hx-explorer hx-implementer hx-spec-reviewer hx-code-reviewer hx-security-reviewer hx-architect hx-verifier hx run hx check hx trace hx doctor hx detect hx worktree hx status hx stats hx migrate hx openspec openspec testing architecture comments SessionStart PreToolUse PostToolUse Stop skills · le workflow skills · à la demande 7 agents la CLI hx 4 rules 4 hooks Harness le tronc : un template, versionné par tags
Couleur de la branche = type de pièce, comme dans le workflow. Toutes les pièces arrivent dans le projet par copier copy.
les branches, dépliables

Skills

15

Procé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 confidence l’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

7

Sous-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-implement pour 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

10

Sans 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 npm ou dotnet. --component ou --file pour 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 chaque copier update.
  • hx detecttrouve les composants
    Fait
    Propose les composants à partir des manifestes : package.json, pyproject.toml, go.mod, .csproj…
    Quand
    Par /hx-setup. --write écrit config.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-implement en 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.json les 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

4

Ciblé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-track et x-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

4

Branché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.