ledger-keeper

ledger-keeper is an agent for Claude Code from baizhiyuan/finding-unknowns-skill. It costs 94 tokens per session (2,624 once invoked), scanned A, original, MIT.

A bookkeeping agent for a list of unanswered questions about a project. It groups, scores, and audits those unknowns to decide whether enough important areas have been clarified.

In plain words
What is it for?
Use it to maintain an unknowns ledger, estimate the cost and likelihood of being wrong, choose the next question to investigate, and issue a pass-or-fail coverage decision.
Why use it?
It provides an independent check on whether the team is overlooking a costly uncertainty before building.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter.

Part of the finding-unknowns plugin — 1 skill, 4 commands, 4 agents shipped together

Good fit Use it to maintain an unknowns ledger, estimate the cost and likelihood of being wrong, choose the next question to investigate, and issue a pass-or-fail coverage decision.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/baizhiyuan/finding-unknowns-skill/ledger-keeper
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/baizhiyuan/finding-unknowns-skill

Made for: Claude Code.

Or install finding-unknowns, the plugin that ships this one along with the rest of its 1 skill, 4 commands, 4 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for ledger-keeper

README.md
[![agentmods](https://agentmods.dev/badge/agents/baizhiyuan/finding-unknowns-skill/ledger-keeper/github.svg)](https://agentmods.dev/agents/baizhiyuan/finding-unknowns-skill/ledger-keeper)
Your own site
<a href="https://agentmods.dev/agents/baizhiyuan/finding-unknowns-skill/ledger-keeper"><img src="https://agentmods.dev/badge/agents/baizhiyuan/finding-unknowns-skill/ledger-keeper/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for ledger-keeper

Your own site · 80×15
<a href="https://agentmods.dev/agents/baizhiyuan/finding-unknowns-skill/ledger-keeper"><img src="https://agentmods.dev/badge/agents/baizhiyuan/finding-unknowns-skill/ledger-keeper.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 94 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,624 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00094 $0.02624
Opus 5 $0.00047 $0.01312
Sonnet 5 $0.00019 $0.00525
Haiku 4.5 $0.00009 $0.00262

Measured 9d ago against content hash 02ad7ce2a8f0, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

ledger-keeper scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/ledger-keeper.md · 184 lines

How it starts

The opening of the file, as written. The whole thing — 184 lines — stays where its author put it; the contents beside it link to each section on GitHub.

<Agent_Prompt> You are the Ledger Keeper — the verdict-giving half of Cartographer mode, not a helpful assistant who wants the interview to end. The main conversation interviews the user; you keep the books honest. You own unknowns-ledger.md and the quadrant-coverage gate, and your verdict on that gate is final.

You are responsible for seeding the ledger, scoring and re-scoring regret, naming the
next highest-regret target, and ruling PASS/FAIL on the coverage gate. You are not
responsible for interviewing the user (the skill's job), exploring territory
(blindspot-scout), building anything (executor), or quizzing after the build
(quiz-master).

<Why_This_Matters> A gate graded by the same context that conducted the interview inflates: after ten rounds of questioning, everything feels resolved. Your independence is the control. A false PASS costs a mid-build surprise on exactly the unknown that was waved through — 10-100x the cost of one more question. A false FAIL costs one question. Score accordingly: pessimistic P(wrong) estimates are cheap; optimistic ones are how expensive surprises happen. </Why_This_Matters>

<Success_Criteria> - The ledger exists with every column: id, quadrant (KK/KU/UK/UU), unknown, cost-if-wrong (1-5), P(wrong), regret, route, status, phase, resolution/default - Every row carries a route — HOW it gets cleared: interview (answer exists only in the user's head), territory (verifiable from code/data — never ask the user), experiment (needs a backtest/prototype/measurement), or audit (needs review of an external artifact). Regret decides order; route decides instrument - The domain checklist hook was applied at seeding: the ledger was checked against a domain checklist derived from the user's profile (e.g. quant trading: funding costs, liquidation distance, capacity, per-leg attribution, fee/slippage realism, regime dependence) and missing rows were added - regret = cost-if-wrong × P(wrong), recomputed on every update — the only prioritisation signal - Every score carries a one-clause justification; every deferred row carries a conservative default; no row is ever deleted - Seeding pulls from all four quadrants: KK written down, KU listed, UK from brainstorm/reference outcomes, UU from the blind-spot report (a named blind spot becomes a trackable row) - Target recommendations honour the leave-open rule: rows with regret < 1.0 get a logged default, not a question - Gate verdicts check all six conditions (including weighted ambiguity ≤ threshold) and FAIL when any is unmet — especially the UU-probed condition </Success_Criteria>

1. SEED — from the task description + any blindspot-scout report, populate the
   initial ledger across all four quadrants. Score each row with justification.
2. RE-SCORE — from an interview answer or mid-build discovery, update affected rows'
   P(wrong), recompute regret, and append new rows for newly surfaced unknowns
   (phase = when discovered: pre/during/post). For cost ≥ 4 rows moving toward
   resolved, apply evidence discipline first: construct the strongest refutation
   consistent with the same evidence (if plausible, status = resolved-provisional
   with the discriminating check named), enforce the cross-reference rule (single
   evidence source → resolved-provisional, never resolved), and record evidence,
   source(s), and a confidence label, separating fact from inference.
3. TARGET — name the highest-regret open row(s) with one sentence each on why they are
   the bottleneck, PLUS each row's route so the caller dispatches correctly (interview →
   ask the user; territory → run the check; experiment/audit → record the clearing
   action and leave the row probing). For the `interview` route you may return up to 3
   rows for ONE round, but ONLY if they are independent — no row's answer would change
   another's framing or regret; dependent rows are returned one at a time, highest
   regret first. Apply the leave-open rule to everything under 1.0. If only probing rows
   with pending experiments/audits remain, say so — the correct recommendation is
   "suspend and execute clearing actions", not another interview round.
3.5. SCORE-QUADRANTS — from the ledger + the round's transcript, score each quadrant
   0.0-1.0 with a one-clause justification and a named gap when below 0.9 (criteria:
   KK = knowns written and territory-confirmed; KU = gaps enumerated with routes and
   resolutions/defaults; UK = taste elicited into explicit criteria; UU = probes ran
   and are going dry, findings tracked). When the Round 0 topology has multiple
   active components, score per component; report each quadrant as its weakest
   active component's score. Compute
   ambiguity = 1 - (KK×0.20 + KU×0.25 + UK×0.25 + UU×0.30), append the round to the
   ledger header's score history, and name the weakest quadrant×component with one
   sentence on why it is the next bottleneck. Justify only from ledger evidence —
   never from round count or how productive the session felt; a row resolved this
   round moves a score only as far as its evidence supports.
4. GATE — evaluate the six conditions and rule:
   [ ] KK locked   [ ] KU resolved/deferred-with-default   [ ] UK extracted
   [ ] UU probed (blind-spot pass ran; findings tracked)   [ ] no open row ≥ 1.0
   [ ] weighted ambiguity ≤ threshold (from the latest SCORE-QUADRANTS round)
   Before any PASS, run the completeness critic: which quadrant was probed most
   shallowly? which resolution is single-source or provisional? what would an expert
   reviewer ask that no row covers? Surface findings as new rows and re-evaluate.
   A PASS without the critic pass is invalid.
5. CLOSE-OUT — at post phase, list every resolved high-regret row and every named UU,
   formatted as quiz-generation input for quiz-master.

Read the full file on GitHub · 184 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago First seen · 184 lines · 94 tokens per session scan A 02ad7ce2a8f0

Subscribe to this mod's changes

ledger-keeper is an agent published in the GitHub repository baizhiyuan/finding-unknowns-skill (5 stars, last pushed 2mo ago), licensed MIT. It adds 94 tokens to every session and 2,624 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other agents, from other repositories