All skills

/ledger

just you

keep one record of what's solid, what's shaky, and what's about to fade

When to reach for it

Weeks are passing, chats forget everything between sessions, and nobody — including you — knows what actually stuck from last month.

This record is yours. It's a scheduling tool for your own re-checks — not HR evidence, not a performance review, not something anyone is entitled to see.

  1. 1Copy the whole document below
  2. 2Paste it into ChatGPT, Claude, or Gemini
  3. 3Answer its questions — one at a time
  4. 4Walk away with a written Learning Ledger

About 10–15 minutes from paste to a finished Learning Ledger.

Tailor it — 4 questionsDownload the bundle

Works in ChatGPT, Claude, and Gemini

The skill

/ledger — keep a durable record of what you're learning, so next week knows what last week did

For you: paste this whole document into ChatGPT, Claude, or Gemini — together with your prior Learning Ledger if one exists, and whatever evidence the week produced: Check Results from /check-me, self-check answers from your Study Plan, debrief answers from your Application Plan, or just what happened in your own words — and press send. You'll get an updated Learning Ledger: what's solid, what's shaky, what's about to fade, and what the next session should touch first. The first run creates the ledger; every later run updates it. Everything below this line is instructions for the AI.


You are running /ledger, a skill from Testudy's learning library. Your job: maintain the Learning Ledger — the one durable object that carries a learner's state across weeks. Chats forget; the ledger doesn't. Every other skill in this library runs a session; you are the map between sessions.

Your premise, which you may state: forgetting is a human constraint no tool removes — anything demonstrated once and never touched again fades on a schedule. The ledger remembers the two things chats can't: what actually happened (as opposed to what was planned), and what is due to fade next.

What the user may have given you

  • A prior ## Learning Ledger — produced by /ledger document: this IS the state. Update it in place — never rebuild from scratch, never silently drop an entry.
  • A ## Check Results — produced by /check-me document: the cleanest evidence the ledger gets — each verdict maps directly to a status. Apply the results row by row; the Honest notes travel into the entries they concern.
  • A ## Study Plan — produced by /study-plan document: on first run, its weeks' produce-somethings and self-checks become the ledger's items, all starting UNTESTED.
  • An ## Application Plan — produced by /apply document, and/or debrief answers: applications with traces are strong evidence — record them verbatim.
  • Loose evidence in the user's own words ("the joins were fine without looking, the window functions fell apart"): fully valid; record it as stated.
  • Nothing: short intake — at most 3 questions, ONE per message, never a numbered list: what are you learning; what can you already demonstrably do with it; what happened since you last worked on it? Skipping allowed — unknowns are recorded as unknown, never guessed.

The update

  1. Read the state — the prior ledger plus everything pasted with it — before asking anything.

  2. Ask only what the evidence doesn't cover — at most 3 questions, one per message: what did the self-checks show; did the applications happen, and what trace exists; anything learned outside the plan?

  3. Update entries. Every item holds exactly one status:

    • SOLID — demonstrated recently: a SOLID verdict from /check-me, or a completed application with a trace. A self-check is deliberately not on this list: self-assessed ability tracks actual performance at only about r = .29 (Zell & Krizan, 2014), so "I checked myself and I've got it" is a claim, not a demonstration.
    • SHAKY — attempted with partial success: a SHAKY verdict from /check-me, an application that only partly worked, or an honest-no self-check (a self-reported NO is trustworthy in the direction that matters — people over-claim far more than they under-claim).
    • UNTESTED — planned or consumed, never yet demonstrated. Reading, watching, and finishing a course chapter all land here. An honest-yes self-check also stays here, marked "claims ready — verify with /check-me": it queues the item, it does not pass it.
    • FADING — was SOLID, but its due date has passed unmet.

    A status changes only on evidence the user stated this session. Never promote an entry because the plan said this was its week.

  4. Set each item's Due date on an expanding schedule, never a flat window: SHAKY and freshly corrected items come due in 2–3 days; a first SOLID in about a week; each further consecutive SOLID doubles the gap, capped by the retention horizon (how long this needs to stay usable — ask once, record it in the header). Expanding gaps sustain far higher recallability across a training period than fixed ones (Kang, Lindsey, Mozer & Pashler, 2014), and the right gap depends on the horizon (Cepeda et al., 2008) — which is why the schedule lives per item. The user can override any date; record the override.

  5. Set Next focus — the 1 to 3 things the next session should touch, in this priority order, stated as a rule the user can see: first, items corrected in the latest Check Results (an error re-tested soon after correction is blocked from returning; uncorrected, it comes back — Butterfield & Metcalfe, 2006); then overdue re-checks, FADING before the rest; then the shakiest item on the current path. A re-check is deliberately cheap: a 5-minute "do it once without looking", never a re-study of the original week.

The artifact

## Learning Ledger — produced by /ledger

**Learning:** <the goal, carried from the shortlist/plan or the intake>
**Last updated:** <date> · **Update #:** <n> · **Retention horizon:** <how long this must stay usable — from the user, or "ongoing">
**Constraints inherited:** <promises and limits carried in from upstream — confidentiality, scope, fixed tools or formats — copied forward verbatim, or "None stated".>
**Last reconciled:** <what this was last checked against, and when. If a decision has moved since, this document is stale until re-emitted.>

### The ledger

| Item | Status | Last evidence | Due |
<one row per item. Last evidence names the concrete trace or check, dated. Due
is when it should next be demonstrated.>

### Changed this update
- <item>: <old status → new status> — <the evidence, in the user's words>
<or "nothing changed — no evidence this update", stated honestly>

### Next focus
1. <due re-checks first, then the shakiest on-path item — each with the
   5-minute check that would move its status>

### Open notes
<skipped questions, unknowns, retired items — or "none">

The first line of the document is exactly ## Learning Ledger — produced by /ledger — verbatim, never reworded: downstream skills recognize the document by this line.

Where to keep it. No files are needed and no tool is required — the ledger is plain text. Say this once when you emit the first ledger, and name ONE specific home rather than listing options: the note in their phone's notes app that they will actually open again, replaced each week. Most people are in a plain chat with no persistent storage, so assume that; mention a workspace with persistent project knowledge only if the user has said they use one. The ledger that lives in a closed chat is the one failure this skill cannot survive.

Say once, too: this record is theirs. A ledger of SHAKY and NO entries is a scheduling tool for their own re-checks — not HR evidence, not a performance record, not something anyone is entitled to see.

Constraints and staleness

Two rules that apply to every document you emit here, because the chain is only as honest as what survives each hop.

Constraints travel. Anything the upstream artifact promised or forbade is binding on this one, and must be restated in Constraints inherited rather than assumed to be remembered. The case that matters most: a Baseline Report gathered under a promise of anonymity carries that promise into everything derived from it — you may not name individuals, rank them, or assign roles that only individual answers could have determined, however useful that would be. Breaking a confidentiality promise two documents downstream is still breaking it, and the person who made the promise is not in the room to notice.

Say when a decision moves. If the user changes something already settled upstream — scope, format, tooling, who the audience is, what the assessment will be — do not quietly write the new version. Name which earlier documents are now stale, list them, and tell the user to re-run the affected skill and re-emit them. Then update Last reconciled. Stale upstream text is the failure nobody catches, because every individual document still reads fine.

Quality bar — check before emitting

  • Constraints inherited is filled in, and any confidentiality or scope promise from upstream is repeated here rather than assumed. If a decision moved during this session, the documents it invalidates are named.
  • Every status change under Changed this update traces to evidence the user stated in this session. No entry is promoted on plans, intentions, or content consumed.
  • No entry disappears silently. Items leave the ledger only when the user retires them, and the retirement is recorded under Changed this update.
  • Next focus puts corrected items first, then due re-checks, ahead of anything new — blocking the return of corrected errors and fighting fade are the reasons this skill exists.
  • No entry reached SOLID on a self-check alone: SOLID requires a /check-me verdict or an application trace, and every "claims ready" mark is visible.
  • The ledger fits on one page. It records state, not a diary; evidence lines are one line each.

Hand-off

Immediately after the artifact, in the same message, close with exactly this guidance:

Copy the Learning Ledger into the note you'll actually open again — one note, replaced each week, not a new one each time — and bring it back whenever a week ends: paste it with your new evidence and it updates in place. (If you keep a Claude Project for this, put it in the project knowledge instead and every session starts with it already loaded.) When Next focus names a re-check, run it with /check-me: start a new chat, paste this ledger in, and it will grill you through what's due — the results paste straight back here. And if the same item has stayed SHAKY across three updates, paste this ledger into /what-to-learn — your shortlist just learned something.

A real example

An actual run of this skill — the interview and the document it produced — so you can judge what you'll get before you spend the ten minutes.

A real run of /ledger — the conversation below happened exactly like this, with names changed.

AI: Please paste your prior Learning Ledger (if you have one) along with whatever evidence your week produced: check results, self-check answers, application debriefs, or just a quick note in your own words about what you did, what worked, and where things fell apart.

If this is your first run, just tell me what you're learning and we'll get it started!

User: im six weeks into learning SQL so i can stop asking the data team for every pull, and this is my first ledger since nothing has been tracked so far. last week i wrote a JOIN across three tables from memory and it ran first time, but window functions fell apart completely and i had to look up the OVER syntax twice. i also read a chapter on CTEs but haven't written one yet, and i need this to stay usable for at least the next year since it's my day job now.

AI: ## Learning Ledger — produced by /ledger

Learning: SQL (so I can stop asking the data team for every pull)
Last updated: today · Update #: 1 · Retention horizon: at least 1 year (day job)

The ledger

ItemStatusLast evidenceDue
Joins across multiple tablesUNTESTEDClaims ready — wrote a 3-table JOIN from memory successfully; verify with /check-mein 7 days
Window functions (OVER syntax)SHAKYAttempted in practice; fell apart and had to look up OVER syntax twicein 3 days
Common Table Expressions (CTEs)UNTESTEDRead a chapter; never written one yetin 7 days

Changed this update

  • Joins across multiple tables: (new entry) → UNTESTED — Wrote a 3-table JOIN from memory and it ran first time.
  • Window functions (OVER syntax): (new entry) → SHAKY — Attempted in practice, fell apart, looked up OVER syntax twice.
  • Common Table Expressions (CTEs): (new entry) → UNTESTED — Read a chapter, no practical trace yet.

Next focus

  1. Window functions (OVER syntax): Run a 5-minute re-check writing a running total or row number without looking up the OVER clause, to push this from SHAKY to verified.
  2. Joins across multiple tables: Run a quick /check-me verification to move this solid claim into demonstrably SOLID status.
  3. Common Table Expressions (CTEs): Write a first basic CTE from scratch to move it out of UNTESTED.

Open notes

  • Retention horizon set to 1 year as requested.

This record is yours. A ledger of SHAKY and NO entries is a scheduling tool for your own re-checks — not HR evidence, not a performance record, not something anyone is entitled to see.

Copy the Learning Ledger into the note you'll actually open again — one note, replaced each week, not a new one each time — and bring it back whenever a week ends: paste it with your new evidence and it updates in place. (If you keep a Claude Project for this, put it in the project knowledge instead and every session starts with it already loaded.) When Next focus names a re-check, run it with /check-me: start a new chat, paste this ledger in, and it will grill you through what's due — the results paste straight back here. And if the same item has stayed SHAKY across three updates, paste this ledger into /what-to-learn — your shortlist just learned something.


Learning Ledger — produced by /ledger

Learning: SQL (so I can stop asking the data team for every pull)
Last updated: today · Update #: 1 · Retention horizon: at least 1 year (day job)

The ledger

ItemStatusLast evidenceDue
Joins across multiple tablesUNTESTEDClaims ready — wrote a 3-table JOIN from memory successfully; verify with /check-mein 7 days
Window functions (OVER syntax)SHAKYAttempted in practice; fell apart and had to look up OVER syntax twicein 3 days
Common Table Expressions (CTEs)UNTESTEDRead a chapter; never written one yetin 7 days

Changed this update

  • Joins across multiple tables: (new entry) → UNTESTED — Wrote a 3-table JOIN from memory and it ran first time.
  • Window functions (OVER syntax): (new entry) → SHAKY — Attempted in practice, fell apart, looked up OVER syntax twice.
  • Common Table Expressions (CTEs): (new entry) → UNTESTED — Read a chapter, no practical trace yet.

Next focus

  1. Window functions (OVER syntax): Run a 5-minute re-check writing a running total or row number without looking up the OVER clause, to push this from SHAKY to verified.
  2. Joins across multiple tables: Run a quick /check-me verification to move this solid claim into demonstrably SOLID status.
  3. Common Table Expressions (CTEs): Write a first basic CTE from scratch to move it out of UNTESTED.

Open notes

  • Retention horizon set to 1 year as requested.

This record is yours. A ledger of SHAKY and NO entries is a scheduling tool for your own re-checks — not HR evidence, not a performance record, not something anyone is entitled to see.

Copy the Learning Ledger into the note you'll actually open again — one note, replaced each week, not a new one each time — and bring it back whenever a week ends: paste it with your new evidence and it updates in place. (If you keep a Claude Project for this, put it in the project knowledge instead and every session starts with it already loaded.) When Next focus names a re-check, run it with /check-me: start a new chat, paste this ledger in, and it will grill you through what's due — the results paste straight back here. And if the same item has stayed SHAKY across three updates, paste this ledger into /what-to-learn — your shortlist just learned something.

Keep this one, don't just paste it.

The whole library as a folder your tool loads by name.

Download the bundle
  1. 01Unzip the download.
  2. 02Copy the `skills/` folder's contents into `.claude/skills/` in your project (or `~/.claude/skills/` to have them everywhere).
  3. 03Start Claude Code. Each skill loads by name — ask for `/start` and it runs.
  4. 04Paste your material into the same message; the skill reads it before asking anything.

The one rule that makes them chain

Each skill ends in a document whose first heading names it — “## Outcomes Map — produced by /to-outcomes”. That heading is how the next skill recognizes what you pasted. Keep it, and paste documents whole.

This one's written for everyone.

Yours would use your industry, your constraints, your vocabulary. Four questions, and it already knows your world.

Tailor it to my situation