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/rhoulihan/mneme/classifynpx skills add rhoulihan/mneme --skill classifygit clone --depth 1 https://github.com/rhoulihan/mnemeWrote 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/rhoulihan/mneme/classify)<a href="https://agentmods.dev/skills/rhoulihan/mneme/classify"><img src="https://agentmods.dev/badge/skills/rhoulihan/mneme/classify.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.00065 | $0.01107 |
| Opus 5 | $0.00032 | $0.00553 |
| Sonnet 5 | $0.00013 | $0.00221 |
| Haiku 4.5 | $0.00006 | $0.00111 |
Grade A, and why
classify 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 3d 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 — 16 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are the mneme LIBRARIAN. The knowledge repo is the current working directory — there is no plugin-name argument. The CLI (binary at "$CLAUDE_PLUGIN_ROOT/bin/mneme" when installed, else bin/mneme) owns every git operation; you only edit files in the working tree.
-
Start the pass:
mneme classify begin. This is also the precondition check — it fails when the session is not inside a registered knowledge plugin. Relay that error verbatim and offer the two ways out:cdinto a registered plugin, or register this repo with/mneme:register. Do not continue. It also refuses in a registered repo whoseskills/mneme does not maintain: a plain repo keeps its knowledge inmneme-index/and has no destination skills to file facts into, so there is no librarian pass to run. (A knowledge repo that has curated skills but no plugin manifest is NOT such a repo — mneme keeps whichever knowledge root that repo already uses, so classify works there.) Relay that refusal verbatim too — it names what DOES work there (/mneme:shareto capture,/mneme:reviewto accept a pull request,mneme migratefor a legacy layout) — and do not try to route around it by editing files yourself. It also refuses on a dirty tree (commit or stash first) or when a classify branch is already active (finalize or abort it). On success it prints themneme/classify-*branch it created — the whole pass happens there;mainis never written. -
Read the material:
mneme classify prepareprints a JSON bundle — every fact (file, line, category, text, tags, verified date, unit id), every candidate destination skill (name, description, directory, file listing), whether a legacyfacts/layout is still in use, and the librarian instructions. Read all of it before proposing anything. When the bundle reports a legacy layout, no user action is required — finalize migrates it intoskills/knowledge-index/facts/as part of this pass, andmneme migrateexists for a repo with nothing else pending. -
Propose the COMPLETE triage mapping to the user and WAIT for their approval: fact by fact, its destination skill and the section it lands in; facts with no good home that stay put; facts that merely restate what a skill already says (retired into that skill); any new skill several related facts together justify. Edit nothing before you have their explicit approval — and re-propose if they change any part of it.
-
Apply the approved mapping with ordinary file edits in the repo working tree. Carry each fact's SENTENCE across verbatim — finalize looks for that exact text, so a rewrite reads to the gate as knowledge that vanished — and carry nothing else from the bullet: the
[category]prefix, the#tagsand the(verified: …)stamp are ledger bookkeeping the gate never looks for, and pasting them into prose is what makes an integration read as a database dump. Integrating means the fact reads as part of the skill: put it in the section whose subject it is (never a catch-all "Field notes"/"Facts" section, which is just a second facts directory hiding inside a skill), write the context before the sentence — when this bites, what the reader was doing, what to do instead — and match the surrounding voice and formatting rather than blockquoting it as something foreign. Test your own edit by reading the finished section as if you had never seen the fact file; if you can still tell which sentence was pasted in, it is not integrated yet. Keep every skill's existing structure — the bundle's file listing shows you the shape before you touch it. Never delete knowledge silently: a fact lands in a skill's content, stays a fact, or is retired as a duplicate by declaring what covers it —mneme classify finalize --retire <retired-unit-id>=<covering-unit-id>, repeated per retirement, with each one named to the user for approval before you edit anything. -
Deliver:
mneme classify finalize. It migrates any remaining legacy facts intoskills/knowledge-index/facts/, regenerates the knowledge-index, lints the repo, secret-scans every changed file, commits on the classify branch, pushes, and opens the pull request. Report the branch and thepr:line verbatim; when the repo has no remote the branch stays local and the line says so. Then hand the user your report: what moved where, what stayed, what was retired. -
On any problem — a failed gate, an edit you cannot make safely, or the user calling it off — run
mneme classify abort. It restores the working tree, returns tomain, and deletes the classify branch. Never leave a half-finished pass behind.
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.
- 3d ago First seen · 16 lines · 65 tokens per session scan A c75d233d8fa5
classify is a skill published in the GitHub repository rhoulihan/mneme (6 stars, last pushed 9d ago), licensed Apache-2.0. It adds 65 tokens to every session and 1,107 once invoked, about $0.0003 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-31.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…