Skip to content

Qualité ​

Ce parcours garde le projet cohérent : le code ne change pas sans tâche en cours, le registre ne se contredit pas, et les sous-agents n'écrivent pas n'importe où. Vous y venez avant un commit, après une longue session, ou pour installer les garde-fous.

Ce que vous demandez à l'agent ​

💬 Vous demandez à l’agent

« Y a-t-il de la dérive ? J'ai l'impression d'avoir modifié du code sans tâche. »

→ L’agent appelleeffortless_drift_check
💬 Vous demandez à l’agent

« Installe le hook qui m'empêche de committer du code sans tâche en cours. »

→ L’agent appelleeffortless_drift_hook_install
💬 Vous demandez à l’agent

« Vérifie la cohérence du registre : épics, stories, tâches. »

→ L’agent appelleeffortless_validate_project
💬 Vous demandez à l’agent

« Qu'est-ce que tu répareras si on lance la réparation ? Ne touche à rien pour l'instant. »

→ L’agent appelleeffortless_health_repair
  • apply = false
💬 Vous demandez à l’agent

« OK, applique les réparations. »

→ L’agent appelleeffortless_health_repair
  • apply = true
💬 Vous demandez à l’agent

« Confine les sous-agents : ils ne doivent pas écrire directement dans le projet. »

💬 Vous demandez à l’agent

« Régénère le registre des foyers du code. »

→ L’agent appelleeffortless_foyer_registry

Ce que fait l'agent ​

Détecter la dérive ​

effortless_drift_check lit l'état git du projet et de chaque stack qui a son propre dépôt. Il y a dérive quand du code est modifié alors qu'aucune tâche n'est En cours. Les fichiers de .effortless/ et de blueprints/ ne comptent pas comme du code. La réponse dit aussi si le hook anti-dérive est installé sur chaque dépôt. Le verbe ne fait que lire.

Installer le hook anti-dérive ​

effortless_drift_hook_install pose un hook git pre-commit sur le dépôt du projet et sur chaque stack qui a son propre dépôt. Quand du code est en index sans tâche en cours, il refuse le commit. Quand une tâche est en cours, il affiche laquelle portera le commit. Il ne remplace jamais un hook pre-commit qui n'est pas celui d'Effortless.

Valider le registre ​

effortless_validate_project audite les épics, stories et tâches et rend les anomalies classées par gravité : bloquante, fausse, oubli probable, héritage d'avant une règle. Il ne fait que lire.

Réparer ​

effortless_health_repair refait le même diagnostic et annonce ce qu'il réparerait. Sans apply, rien n'est modifié. Avec apply: true, il applique les seules réparations qui ne demandent aucune décision : clôturer une story dont toutes les tâches sont faites, clôturer un épic dont toutes les stories sont closes. Le reste demeure dans les anomalies. L'agent annonce d'abord, puis n'applique qu'après votre accord.

Confiner les sous-agents ​

effortless_confinement_hook_install installe un hook qui refuse à un sous-agent d'écrire directement dans le projet (outils d'écriture de fichiers). Il travaille dans un worktree, et son travail n'entre dans le dépôt qu'à la réintégration, quand la barre est verte (voir Code et stacks). Le script est posé dans .claude/hooks/ et déclaré dans .claude/settings.json, que le verbe complète sans jamais le remplacer. Le hook ne couvre pas les commandes shell et ne confine pas l'agent principal.

Tenir le registre des foyers ​

effortless_foyer_registry balaie le code de production à la recherche des foyers marqués, et rend aussi son angle mort : fichiers sans marqueur, fonctions publiques hors foyer. Par défaut (write_page absent ou vrai), il écrit la page scellée dans le dossier de pages que déclare la documentation utilisateur. Avec write_page: false, il rend le contenu sans rien écrire. Le balayage lit les fichiers Rust.

Ce que vous obtenez ​

  • Un verdict de dérive et une liste de fichiers, qui sont ceux de l'écran Dérive : l'agent et vous voyez la même chose.
  • Un hook pre-commit dans .git/hooks/ de chaque dépôt suivi.
  • Un rapport d'anomalies, et, après accord, des épics et stories clos.
  • Pour le confinement : .claude/hooks/confine-subagents.cjs et son entrée dans .claude/settings.json.
  • Pour les foyers : une page de documentation dérivée, ou son contenu en réponse.

Quand l'agent est refusé ​

SituationCe que dit le refusCe qu'il faut faire
Aucun projet Effortless trouvé depuis le dossier de travailmcp:racineProjetIntrouvableRenseigner EFFORTLESS_PROJECT si le projet existe ailleurs, sinon effortless_init.
Hook pre-commit déjà présent et qui n'est pas celui d'Effortlessdrift:foreignHookRetirer ou renommer ce hook, puis relancer effortless_drift_hook_install.
Un dépôt à équiper n'est pas un dépôt gitdrift:notAGitRepoFaire git init dans ce dossier, ou retirer git: true de la stack.
Fichier du hook de confinement qui n'est pas le nôtreconfinement:hookForeignRetirer ou renommer ce fichier, puis relancer effortless_confinement_hook_install.
.claude/settings.json n'est pas un objet JSONconfinement:settingsNotAnObjectCorriger ce fichier, puis relancer.
Dossier qui n'est pas un projet Effortless valide« Pas un projet Effortless valide. »Vérifier effortless.json.
Registre des foyers : binaire plus ancien que le code du dépôtfoyer:binairePerimeReconstruire (cargo build --bin app) puis relancer. Ce garde-fou concerne surtout le dépôt de développement d'Effortless lui-même.
Registre des foyers : aucune documentation utilisateur déclaréeuserDoc:usage (« aucune stack ne porte de userdoc.json »)Déclarer la documentation utilisateur d'une stack (voir Documentation), ou demander le contenu seul avec write_page: false.

Effortless — ArboRithm