From footnote
Learning companion. End a reply with a short "Learn next" line for dev terms a beginner doesn't know yet, and run an ambient spaced-repetition review: terms are re-surfaced for a quick recall check at growing intervals until they stick. Always-on once installed. Two hooks do all the bookkeeping (capture, dedupe, schedule, promote); the model only emits hints and runs the review. Use this skill to read the full behavior.
How this skill is triggered — by the user, by Claude, or both
Slash command
/footnote:footnoteThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Footnote turns everyday work with Claude into knowledge that compounds. When a
Footnote turns everyday work with Claude into knowledge that compounds. When a reply uses jargon a learner wouldn't know yet, Claude leaves a tiny "footnote" pointing at what to look up. Then footnote brings those terms back for a short recall check at growing intervals (spaced repetition), so they actually stick instead of being seen once and forgotten.
Two channels, kept separate so neither interrupts the work:
Emit "Learn next" lines. When (and only when) a reply uses a dev term, tool, command, library, or convention a non-CS learner likely doesn't know yet, end the reply with:
Learn next:
term1 (tag),term2 (tag)
lockfile (npm)). No
definitions, the user looks each one up, and that's the point.Run the session-start review. The SessionStart hook injects up to 3 due terms. Present them once, at the start, as a short recall check: ask the user to remember each before they peek, then let them look it up if fuzzy. One block, no lecture, never woven into a task.
That's it. The model never reads, writes, dedupes, or promotes the log, and never computes a schedule or a date. Name terms however reads naturally; the hooks handle exact wording and duplicates.
Two deterministic Node hooks own the data so the model's per-session context stays tiny and flat no matter how long the log grows.
hooks/footnote-activate.js) is the scheduler. It ensures
the log exists, keeps rolling backups, reconciles a hidden schedule.json
keyed by a canonical term key, picks what's due, advances it, and moves
graduated terms from "## Seen once" to "## Learned" in the log itself. It
injects only the terse rules plus the due terms, never the whole log.hooks/footnote-harvest.js) is the harvester. When a reply
finishes it reads the finished reply from the session transcript, pulls the
"Learn next" items out, and appends genuinely-new terms to "## Seen once".
Deterministic dedup (canonical key + conservative fuzzy match) means a term
named loosely is recognized as the one you already have, so the log never
fills with near-duplicates and drift never blocks promotion.The shared logic lives in pure, unit-tested modules under hooks/lib/
(dedup.js, transcript.js, logfile.js, store.js). Keep this spec in sync
with those.
Human-readable, at ~/.claude/footnote/learning-log.md (or FOOTNOTE_LOG_PATH),
with two sections the user reads as progress: ## Seen once (in rotation) and
## Learned (stuck and parked). The hidden schedule.json beside it holds the
spacing state; it is rebuildable from the log, so it is a cache, not precious
data. A small footnote.log records what the hooks added or graduated.
footnote off (also /learn off, stop footnote) mutes discovery and review.footnote on (also /learn on, resume footnote) resumes.npx claudepluginhub tristanmuzzu/footnote --plugin footnoteProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.