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.
npx agentmods add commands/christopherlouet/claude-base/lessonsgit clone --depth 1 https://github.com/christopherlouet/claude-baseWrote 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.
[](https://agentmods.dev/commands/christopherlouet/claude-base/lessons)<a href="https://agentmods.dev/commands/christopherlouet/claude-base/lessons"><img src="https://agentmods.dev/badge/commands/christopherlouet/claude-base/lessons.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.01252 |
| Opus 5 | $0.00000 | $0.00626 |
| Sonnet 5 | $0.00000 | $0.00250 |
| Haiku 4.5 | $0.00000 | $0.00125 |
Grade A, and why
lessons 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 yesterday.
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.
How it starts
The opening of the file, as written. The whole thing — 117 lines — stays where its author put it; the contents beside it link to each section on GitHub.
LESSONS Command
Lists the feedback memories captured for the current project (and globally) — the "lessons" learned from user corrections.
Context
$ARGUMENTS
Objective
Provide an overview of the self-improvement system: which rules, counter-examples, or preferences have already been recorded to avoid repeating the same mistakes.
Usage
/lessons # List all feedback memories for the project (read-only)
/lessons <keyword> # Filter by keyword (e.g., /lessons test, /lessons git)
/lessons --promote # Capture the lesson just learned into the personal store
/lessons --bootstrap # One-off: backfill the personal store from existing memories
/lessons --prune # Keep the personal store under its size budget
The --promote, --bootstrap, and --prune modes feed the personal
cross-project lessons store at ~/.claude/rules/lessons.md (loaded into every
project by Claude Code). They follow the self-improvement
rule: every write is generalized + sanitized + human-confirmed, and the
lessons are personal — never committed to any repo.
Modes
--promote (explicit capture — fallback to the reflex)
For when the in-conversation reflex didn't fire but you want to keep a lesson:
- Take the lesson just learned, generalize it to a one-line principle and sanitize it (strip project/company/person names, paths, URLs, identifiers, verbatim snippets, secrets).
- Check for recurrence — the store is in your context. If the same principle
is already stored, propose bumping its
(seen N times)marker instead of adding a duplicate ((seen 2 times)on the first repeat, then N+1). - Show it and ask the user to keep / edit / discard (or confirm the bump).
- On confirmation, write to
~/.claude/rules/lessons.md(create if absent): append the new lesson as a-bullet under its matching## Topicheading (create the heading if none fits), or apply the recurrence bump. If it can't be generalized, keep it as a local project memory instead.
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.
- yesterday First seen · 117 lines · 0 tokens per session scan A ece410322b1f
lessons is a command published in the GitHub repository christopherlouet/claude-base (5 stars, last pushed yesterday), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,252 tokens. 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-09-03.
Other commands, from other repositories
context-stats
Display context window usage and token statistics.
handoff
Create a handoff document for seamless session continuity.
evolve
Extract session patterns into reusable learnings.
reconcile
Reconcile learnings into .claude/rules/ proposals — on-demand version of session-end Phase 3.6.8.
history
Manage the native session-transcript store for this repo by invoking the abcd binary. list, show and staged are read-only; capture and drain are the redacting write paths. The store is keyed on the repo's root-commit SHA and every stored transcript is redacted on write.
memory
Query and curate the per-project memory substrate at .abcd/memory/ by invoking the abcd binary. Bare invocation is a read-only status render; ingest/ask/lint curate, synthesise, and health-check the store.