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 skills/mountainunicorn/add/learningsnpx skills add MountainUnicorn/add --skill learningsgit clone --depth 1 https://github.com/MountainUnicorn/addWrote 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/skills/mountainunicorn/add/learnings)<a href="https://agentmods.dev/skills/mountainunicorn/add/learnings"><img src="https://agentmods.dev/badge/skills/mountainunicorn/add/learnings.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.00021 | $0.01814 |
| Opus 5 | $0.00010 | $0.00907 |
| Sonnet 5 | $0.00004 | $0.00363 |
| Haiku 4.5 | $0.00002 | $0.00181 |
Grade A, and why
learnings 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 4d 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.
How it starts
The opening of the file, as written. The whole thing — 186 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ADD Learnings Skill v{{VERSION}}
Manage the learnings knowledge base: generate optimized active views, archive stale entries, and report statistics.
Overview
Learnings accumulate over time in .add/learnings.json and ~/.claude/add/library.json. The full JSON files are expensive to load into agent context. This skill manages the lifecycle:
- migrate — Generate compact
-active.mdviews from existing JSON (or migrate legacy.mdto JSON first) - archive — Mark old low-severity entries as archived to shrink the active set
- stats — Show learning counts, sizes, and context savings
Default subcommand (no argument): migrate.
Pre-Flight Checks
- Read
.add/config.jsonto get project name - Locate learnings files:
.add/learnings.json(Tier 3 project learnings).add/learnings.md(legacy or generated view).add/learnings-active.md(optimized active view)~/.claude/add/library.json(Tier 2 cross-project)~/.claude/add/library-active.md(Tier 2 active view)
Subcommand: migrate
Generate -active.md files from existing JSON. Handles three scenarios:
Scenario A: JSON exists, active view missing or stale
This is the most common case — existing projects upgrading to the active view approach.
- Run
${CLAUDE_PLUGIN_ROOT}/hooks/filter-learnings.shon.add/learnings.json - Run
${CLAUDE_PLUGIN_ROOT}/hooks/filter-learnings.shon~/.claude/add/library.json(if it exists) - Report what was generated and the context savings
Scenario B: Only legacy .md exists (no JSON)
Pre-v0.4.0 projects that never migrated to structured JSON.
- Announce: "Found legacy markdown learnings — migrating to JSON first."
- Back up
.add/learnings.mdto.add/learnings.md.pre-migration.bak - Parse the markdown:
- Each
- **[{severity}] {title}**line is an entry - Extract body text from indented continuation lines
- If no structured format, treat each
##section + bullet as an entry
- Each
- For each parsed entry, create a JSON learning object:
- Assign ID:
L-001,L-002, etc. - Infer
categoryfrom section heading (Anti-Patterns → anti-pattern, Technical → technical, etc.) - Infer
severityfrom[critical],[high],[medium],[low]markers. Default:medium - Set
scope:project - Set
stack:[](stack-agnostic, can be refined during retro) - Set
source: project name from config - Set
date: extract from entry if present, otherwise use file modification date - Set
classified_by:agent - Set
checkpoint_type:retro(migrated entries treated as retro-sourced)
- Assign ID:
- Write
.add/learnings.jsonwith the standard wrapper - Run
${CLAUDE_PLUGIN_ROOT}/hooks/filter-learnings.shon the new JSON - Report: entries migrated, JSON created, active view generated
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.
- 4d ago First seen · 186 lines · 21 tokens per session scan A 60fafa3f37c8
learnings is a skill published in the GitHub repository MountainUnicorn/add (11 stars, last pushed 1mo ago), licensed MIT. It adds 21 tokens to every session and 1,814 once invoked, about $0.0001 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-30.
Other skills, from other repositories
explore
Structural codebase exploration using the codebase-memory-mcp SQLite index when one exists for the current project. Prefer over blind Grep when available.
flow-next-audit
Audit .flow/memory/ entries against current code and keep, update, consolidate, replace, delete, or harden each. Use when asked to audit memory or graduate a recurring lesson into a gate.
flow-next-audit
Audit .flow/memory/ entries against the current codebase and decide Keep / Update / Consolidate / Replace / Delete per entry. Triggers on /flow-next:audit, "audit memory", "review memory", "refresh learnings", "sweep stale memory", "consolidate overlapping memory entries". Optional mode:autofix token in arguments runs…
flow-next-memory-migrate
Migrate legacy flat .flow/memory files to the categorized YAML schema. One-time ceremony. Use when asked to migrate flow memory.
ascend
Elevate a vague recall to the supra-session unit it belongs to. Type: (RecallGranularityInsufficient, AI, ELEVATE, ScatteredDeposits × DepositGraph) → HigherGranularityUnit.
recollect
Resolve vague recall into recognized context through AI-guided contextual scan and user-validated recognition.