Get started
Scope: installing manni tracevals and getting a real, readable result from a session that already happened. It stops once you trust the output. Making the checks say something specific is Declare what to check; putting this in a pipeline is Run it in CI.
Everything on this page runs offline, with no API key.
-
Install
Section titled “Install”manni needs Node.js 24 or newer.
Terminal window npm i -D @hawkeyexl/manniThen invoke it as
npx @hawkeyexl/manni tracevals.Terminal window npx @hawkeyexl/manni tracevals --versionNothing to add to your project first.
-
Find a session
Section titled “Find a session”tracevals evaluates a trace: a record of a session that already happened, sitting on disk. You do not instrument anything and you do not re-run any work.
Claude Code writes one JSONL file per session under
~/.claude/projects/<project-slug>/. To see what is evaluable:Terminal window npx @hawkeyexl/manni tracevals list --all-projects --limit 51. 2026-07-02 00:00 Write a README for this repo.C:\work\other-project · 22222222-2222-2222-2222-222222222222 · 1KBC:\...\.claude\projects\C--work-other-project\22222222-....jsonl2. 2026-07-01 00:00 Fix the crash in src/app.ts.C:\work\demo-project · 11111111-1111-1111-1111-111111111111 · 1KBC:\...\.claude\projects\C--work-demo-project\11111111-....jsonlEach entry shows the timestamp and first prompt, then the project and session id, then the file path you can pass to
run. Drop--all-projectsto scope to the current directory’s project, and add-f jsonwhere a script is reading. -
Run your first evaluation
Section titled “Run your first evaluation”Start with the mode that makes no model call at all:
Terminal window npx @hawkeyexl/manni tracevals run <trace-file> --deterministic-only--deterministic-onlyruns every check that needs no inference call. That is the seven deterministic graders decidable from the trace alone, pluscommandevals and thehumanreview queue. It skips AI-judged evals instead of failing them.To exercise the whole pipeline, judge included, without anything leaving your machine:
Terminal window npx @hawkeyexl/manni tracevals run <trace-file> --local--localruns inference here withllama-cpp, over whatever provider the config names. Pairing it with--provider <name>is a usage error. -
Read the report
Section titled “Read the report”A deterministic-only run against a project with one skill, one subagent, and two rules files looks like this:
manni tracevals — /path/to/session.jsonlclaude-code · claude-opus-4-8 · 2 turn(s) · /work/demo-projectSKIP writing-toolkit:identify-ai-tells › adheres-to-artifact (implicit)artifact skipped via metadata.eval-skipPASS fix-bug › used-readFAIL fix-bug › forbidden-tool[error] tool Bash was used 1 time(s) but must not be. Redo the session work so it holds, or fix the eval if the artifact does not ask for this..claude/skills/fix-bug/SKILL.md forbidden-tool: The session never ran shell commands; this skill is edit-only.Guide: https://hawkeyexl.github.io/manni/tracevals/triage/PASS fix-bug › no-force-pushREVIEW fix-bug › refactor-preserved-intentAwaiting human review. Read the session against the assertion and decide..claude/skills/fix-bug/SKILL.md refactor-preserved-intent: The fix addressed the reported bug rather than working around it.Guide: https://hawkeyexl.github.io/manni/tracevals/triage/SKIP fix-bug › eval-5ai evals skipped (deterministic-only run)SKIP doc-writer › adheres-to-artifact (implicit)ai evals skipped (deterministic-only run)SKIP CLAUDE.md › adheres-to-artifact (implicit)ai evals skipped (deterministic-only run)SKIP AGENTS.md › eval-1ai evals skipped (deterministic-only run)Artifact coverage✓ skill: writing-toolkit:identify-ai-tells /path/to/plugins/.../SKILL.md✓ skill: fix-bug /work/demo-project/.claude/skills/fix-bug/SKILL.md○ agent: Explore built-in agent (no definition file)✓ agent: doc-writer /work/demo-project/.claude/agents/doc-writer.md✓ project-rules: project rulesWarnings! 1 unparseable JSONL line(s) were skipped9 eval(s): 2 pass, 1 fail, 0 error, 1 needs-review, 5 skippedFive things are worth naming, because the rest of the documentation assumes them:
- An artifact is an instruction file the session used: a skill, an agent definition, or a
project-rules file. Here:
fix-bug,doc-writer,CLAUDE.md,AGENTS.md, and a plugin skill. - An eval is one named check declared on an artifact.
used-readandforbidden-toolwere declared infix-bug’s frontmatter. - The grader decides how a check is answered.
used-readreads the trace directly, andno-force-pushruns a script over it.refactor-preserved-intentisREVIEWbecause it asks for a human, and theSKIPs are AI-judged evals, which--deterministic-onlydoes not run. adheres-to-artifact (implicit)is what you get for free. An artifact that declares no evals still gets one judged eval asking whether the session followed its instructions. A first run therefore says something before you have authored anything.- Artifact coverage is the honest answer to what did you not check? A
✓resolved to a real file; a○did not.Exploreis a built-in agent with no definition file anywhere, which is expected, and fine.
The one failure is the point of the exercise.
fix-bugdeclares that it is edit-only; the session ran a shell command; the finding names the tool and the count. The line under it quotes the eval’s assertion, and the link leads to reading a failing eval. - An artifact is an instruction file the session used: a skill, an agent definition, or a
project-rules file. Here:
-
Check the exit code
Section titled “Check the exit code”Code Meaning 0every eval passed or was skipped 1something failed, errored, or needs review 2tracevals itself could not run: bad usage, unreadable trace, unknown format The distinction between
1and2is the one to hold on to:1means the agent did something,2means the tool did. It is the same contract every manni command follows. Full detail in Exit codes and reports.
Where to go next
Section titled “Where to go next”Two doors from here, depending on what you came for.