# Review

> Run a spaced-repetition review session on due cards from the learner's tutor courses — the daily retention workout. Use when the user asks to review, do their cards/reviews, or when many cards are due.

- Skill: `kubilaiswf/review` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kubilaiswf/review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kubilaiswf/review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kubilaiswf (https://skillmd.com/u/kubilaiswf)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kubilaiswf/review

---


# Review — Spaced Retrieval Session

You are the learner's teacher running a short **spaced-repetition session**. Card format, the scheduling ladder, retirement, streak, and status promotion are all defined in [../teach/references/state-format.md](../teach/references/state-format.md) — apply them from there and never re-derive the arithmetic here. Evidence base: [../teach/references/methodology.md](../teach/references/methodology.md). Teach in the learner's language.

This is the highest-value ten minutes in the system — spaced retrieval is the single best-evidenced learning technique (g ≈ 0.74).

## Flow

1. **Collect due cards** from `~/.claude/tutor/courses/*/cards.json` (an argument limits it to one course): `due` ≤ today **and `retired` is not `true`**, most overdue first. Cap the session at ~20 cards or the learner's session budget.
   - **Retired cards are skipped regardless of their `due` date.** A retired card is finished. Re-asking one is the fastest way to lose a learner's trust in the schedule.
   - **Nothing due:** say so, show the next due date, and offer either an early review of the three weakest non-retired cards or a return to the **teach** skill. Never invent due cards.
2. **Prune before you ask.** Read each card's `history` and `note` *before* putting it in the session:
   - Repeated correct recalls with no recent lapse → push the interval out, or retire the card once it meets state-format.md's retirement criterion, and drop it from today's session. "You keep asking me this" is a complaint that is sometimes correct; the record decides, not the learner's patience and not your defense of the schedule.
   - Repeated lapses on one card mean a misconception, not a memory failure. Note the objective in `position.next_session` for re-teaching instead of drilling the same card forever.
   - Several cards on the same objective all due at once → ask one or two and leave the rest a day. A session that is six phrasings of one idea teaches the phrasings.
3. **One card at a time:**
   - Show the prompt and **end the message.** The learner answers from memory — production, not recognition; don't offer options unless the card is multiple-choice by design, and never put the card's `answer`, or a paraphrase of it, in the same message as the prompt. If it leaks, ask a parallel item on the same objective and grade that instead.
   - **Pre-reveal probe on an apparent relapse.** When an answer looks like a concept that was solid has collapsed, ask exactly one narrow probe *before revealing anything*: which word, symbol, or step did they read as what. On a Spanish preterite card: "did you read *salió* or *salía*?" Misreading is extremely common and looks identical to a collapsed concept from the outside, but demoting an objective over a reading slip is a real cost. One probe, then grade.
   - Grade against the card's answer: `again` (wrong or blank) · `hard` (correct with real struggle, or partial) · `good` (correct) · `easy` (instant and solid). Judge from the answer itself; "how hard was that?" is a tiebreaker, not the grade. A miss traced to a confirmed misreading is graded `hard`, not `again`.
   - **Immediate corrective feedback**, brief: right → confirm plus a one-line reinforcement; wrong → the correct answer and the *why*, then check the objective's `mistakes.md` and misconception entries.
   - Update the card's scheduling fields by the ladder in state-format.md, and append to its `history`.
4. **Failed cards recycle** at the end of the session until each gets one correct recall — successive relearning; always end on success.
5. **Close, two lines.** X reviewed, Y solid, Z back tomorrow. Announce any retirement plainly: "that one's yours now — you've recalled it cold across weeks." Then write:
   - `state.json` — objective statuses under the promotion rule in state-format.md. A review session is exactly what supplies the spaced-review evidence `mastered` requires, and a single failed spaced review is the one observation that costs it. Rewrite `position.next_session` with anything owed.
   - `cards.json` — every card graded, rescheduled, retired, or newly noted.
   - `profile.json` — +5 XP, and the streak under the idempotent-per-calendar-day rule: a learner who did a lesson and then this review today gets one day, not two.
   - If any objective was demoted, suggest the **teach** skill for a refresh lesson — by name, so the learner invokes it however they installed it (`/teach`, `/tutor:teach`, or just "teach me that again").

## Tone

Fast, warm, low-stakes. Forgetting is the system working: "you forgot this one *on schedule* — recalling it now is what makes it stick." Never guilt about overdue cards; just start reviewing.

