Luciazero

For Claude Code, Codex CLI, and compatible skill runtimes

Make coding agents prove their work.

Luciazero adds a plan → change → verify → fix loop to your coding agent. It catches “done” without a passing check, keeps scope from quietly shrinking, and hands unfinished work to the next session with evidence.

Lucia, the Luciazero mascot, as a 3D model with cat-ear headphones
  1. ✎ unverifiededits happened after the last check
  2. ❌ verify REDthe latest check failed
  3. ✅ verify 3mthe latest check passed three minutes ago

See it in two minutes

An agent reports green without running anything. Luciazero's loop catches it, /bisect finds the commit that broke it, /lucia-relay hands the work to another agent that re-runs the evidence, and /done proves a test catches the bug. The scenes are an animation; the pass rates shown are for Claude Sonnet, using the classic pack without hooks.

Install in 30 seconds

Pick the path that matches your agent, then start a new session.

Claude CodeFull pack

/plugin marketplace add ohm41321/luciazero
/plugin install luciazero@luciazero

Then run /luciazero:ready in the new session.

Codex CLIDoctrine + skills

npx luciazero codex

Then run $ready in the new session.

Any compatible agentSkills only

npx skills add ohm41321/luciazero

Installs the skills without the doctrine, reviewer, or hooks.

What it catches

Each failure mode has a mechanism behind it. Mechanical guarantees run in the repository's own test.sh.

  • “Done” without running a checkStop-hook nudge; an optional strict gate blocks a red stop
  • cat test.sh counted as testingExact LUCIAZERO_VERIFY_CMD matching
  • Tests weakened to reach greenDoctrine rule 3 and the /done review; an opt-in suppression-guard hook example
  • New tests that pass without the fixrevert-probe.cjs runs them against the old code
  • Scope silently dropped/done requires every item delivered or named as left out
  • The same dead end repeated later/retro records it; /debug reads it first
  • Context lost between agents/lucia-relay transfers evidence, next action, and negative knowledge

13 skills, each for one moment

Invoke ready first (/ready for slash-based agents, $ready in Codex). The rest activate when their moment arrives.

  • Entering a repository/readyFinds or creates a verify command and proves it can fail
  • Structure or evidence is hard to scan/showMaps connections, changes, and proof into the smallest useful visual
  • Want Lucia's optional coding voice/imouto-modeA warm, lightly tsundere sibling voice; explicit-only and off by default
  • Before risky, ambiguous, or multi-module work/planFixes scope and observable acceptance evidence
  • A bug survives the first look/debugReproduction, hypothesis ledger, regression test
  • Good and bad revisions are known/bisectFinds the first bad commit in a temporary worktree
  • Before claiming completion/doneFull verify, skeptic review, scope report
  • Work must move elsewhere/lucia-relayPortable JSON + Markdown state with drift inspection
  • Another agent's work is queued for you (beta)/lucia-busRegister, read the inbox, claim, work, and publish through the local Agent Bus
  • Want two agent sessions talking (beta)/lucia-chatShows what is waiting and opens one window per agent
  • Optimizing performance/experimentBaseline, threshold, controlled measurement
  • Reviewing local verify habits/discipline-reportTime- and project-filtered local outcome report
  • After difficult work/retroStores reusable lessons and disproved approaches

What it does not claim

Luciazero is a discipline layer, not an agent runtime. Mechanical guarantees are checked by the test suite; behavioral effects are measured per model and task by the eval harness, with the caveats published alongside the numbers. Agent Bus is beta, opt-in, and checkout only.

Read the evidence and limitations