Skip to content

Quality ​

This path keeps the project consistent: code does not change without a task in progress, the registry does not contradict itself, and sub-agents do not write just anywhere. You come to it before a commit, after a long session, or to install the safeguards.

What you ask the agent ​

💬 You ask your agent

« Is there any drift? I think I changed code without a task. »

→ The agent callseffortless_drift_check
💬 You ask your agent

« Install the hook that stops me from committing code without a task in progress. »

💬 You ask your agent

« Check the registry's consistency: epics, stories, tasks. »

→ The agent callseffortless_validate_project
💬 You ask your agent

« What would you repair if we ran the repair? Don't touch anything yet. »

→ The agent callseffortless_health_repair
  • apply = false
💬 You ask your agent

« OK, apply the repairs. »

→ The agent callseffortless_health_repair
  • apply = true
💬 You ask your agent

« Confine the sub-agents: they must not write directly into the project. »

💬 You ask your agent

« Regenerate the registry of the code's focal points. »

→ The agent callseffortless_foyer_registry

What the agent does ​

Detect drift ​

effortless_drift_check reads the git state of the project and of each stack that has its own repository. There is drift when code is modified while no task is In progress. Files in .effortless/ and blueprints/ do not count as code. The response also says whether the anti-drift hook is installed on every repository. The verb only reads.

Install the anti-drift hook ​

effortless_drift_hook_install installs a git pre-commit hook on the project's repository and on each stack that has its own repository. When code is staged with no task in progress, it refuses the commit. When a task is in progress, it shows which one will carry the commit. It never replaces a pre-commit hook that is not Effortless's.

Validate the registry ​

effortless_validate_project audits epics, stories and tasks and returns the anomalies ranked by severity: blocking, wrong, probably forgotten, inherited from before a rule. It only reads.

Repair ​

effortless_health_repair makes the same diagnosis and announces what it would repair. Without apply, nothing is modified. With apply: true, it applies only the repairs that need no decision: closing a story whose tasks are all done, closing an epic whose stories are all closed. The rest stays in the anomalies. The agent announces first, then applies only after your agreement.

Confine sub-agents ​

effortless_confinement_hook_install installs a hook that refuses a sub-agent the right to write directly into the project (file-writing tools). It works in a worktree, and its work enters the repository only at reintegration, when the bar is green (see Code and stacks). The script is placed in .claude/hooks/ and declared in .claude/settings.json, which the verb completes without ever replacing it. The hook does not cover shell commands and does not confine the main agent.

Maintain the registry of focal points ​

effortless_foyer_registry scans the production code for marked focal points ("foyers"), and also returns its blind spot: files without a marker, public functions outside any focal point. By default (write_page absent or true), it writes the sealed page into the pages folder declared by the user documentation. With write_page: false, it returns the content without writing anything. The scan reads Rust files.

What you get ​

  • A drift verdict and a list of files, the same as the Drift screen: the agent and you see the same thing.
  • A pre-commit hook in the .git/hooks/ of each tracked repository.
  • An anomaly report and, after agreement, closed epics and stories.
  • For confinement: .claude/hooks/confine-subagents.cjs and its entry in .claude/settings.json.
  • For focal points: a derived documentation page, or its content in the response.

When the agent is refused ​

SituationWhat the refusal saysWhat to do
No Effortless project found from the working foldermcp:racineProjetIntrouvableSet EFFORTLESS_PROJECT if the project exists elsewhere, otherwise effortless_init.
pre-commit hook already present and not Effortless'sdrift:foreignHookRemove or rename that hook, then run effortless_drift_hook_install again.
A repository to equip is not a git repositorydrift:notAGitRepoRun git init in that folder, or remove git: true from the stack.
Confinement hook file that is not oursconfinement:hookForeignRemove or rename that file, then run effortless_confinement_hook_install again.
.claude/settings.json is not a JSON objectconfinement:settingsNotAnObjectFix that file, then retry.
Folder that is not a valid Effortless project"Pas un projet Effortless valide."Check effortless.json.
Focal-point registry: binary older than the repository's codefoyer:binairePerimeRebuild (cargo build --bin app), then retry. This safeguard mostly concerns Effortless's own development repository.
Focal-point registry: no user documentation declareduserDoc:usage ("aucune stack ne porte de userdoc.json")Declare a stack's user documentation (see Documentation), or ask for the content alone with write_page: false.

Effortless — ArboRithm