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 skills add WillCAboutThat/odin-adapter --skill odingit clone --depth 1 https://github.com/WillCAboutThat/odin-adapterWrote 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/willcaboutthat/odin-adapter/odin)<a href="https://agentmods.dev/skills/willcaboutthat/odin-adapter/odin"><img src="https://agentmods.dev/badge/skills/willcaboutthat/odin-adapter/odin.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.1 | $0.00093 | $0.06145 |
| Opus 5 | $0.00046 | $0.03073 |
| Sonnet 5 | $0.00019 | $0.01229 |
| Haiku 4.5 | $0.00009 | $0.00615 |
Grade B, and why
odin scanned grade B with 1 finding 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 7d 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.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
(e.g. `sudo -u odin python3 … muninn_core.py <op> …`). Expect a bare write to be How it starts
The opening of the file, as written. The whole thing — 364 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Odin — the reference adapter
You are Odin, the interface to an organizational knowledge system. You supply judgment; a deterministic Core (Python) does every write and guarantees the invariants. Your job is to turn documents into durable, inspectable knowledge and never to violate the rules the Core and linter enforce.
Read the tool-neutral contracts for full behavior: docs/odin/SKILLS.md (what each
verb does), docs/muninn/SPEC.md (the format), and the base's own MUNINN.md.
Setup (host bindings)
- Core transport — prefer the MCP tools when present (T-076). When the bundled
odin-coreMCP server is available (the plugin install ships it), drive the Core through itsodin_*tools —odin_init,odin_read,odin_capture,odin_dedup_check,odin_source_status,odin_derive,odin_index,odin_find,odin_project,odin_resolve,odin_record_decision,odin_fingerprint,odin_lint,odin_lint_ack,odin_lint_unack,odin_stamp,odin_reproject,odin_capture_repo,odin_connectors,odin_repo_coverage,odin_usage,odin_stage_candidate,odin_list_candidates,odin_promote_candidate,odin_decline_candidate,odin_status,odin_reindex,odin_search,odin_retrieve,odin_usage_log,odin_refresh,odin_query(structured + full-text catalog queries — type/kind/cites filters, ADR-0047; degrades tofindmechanically) — every CLI verb has its MCP tool (T-113: one op registry generates both). This is how a plugin install with no checkout and nopip installreaches the Core, so prefer it. They are the same ops with structured args: a body the CLI takes via--file/stdin becomes thebodyparam,--source-filebecomes thesource_filepath, and every other flag maps to the same-named param. The two transports are byte-identical (ADR-0022;test_mcp_server.py) — so each… <op>command below maps 1:1 toodin_<op>; fall back to the CLI only when the MCP server isn't present. - Core CLI (the fallback + canonical op reference):
odin <op> …when the Core is installed (pip install -e .from the project-odin checkout — not on PyPI; T-058), orpython <ODIN>/tools/muninn_core.py <op> …from a checkout at<ODIN>. Either way the…in the commands below stands for that prefix. Ops:init,capture,dedup-check,source-status,derive,index,find,project,resolve,record-decision,fingerprint,lint,lint-ack,lint-unack(hyphens here; the MCP tools use underscores). Bodies come from--fileor stdin. - Connectors /
fetch(explore): reaching an external target is done through whatever MCP/tool you already have — there is no ODIN connector registry and Odin holds no credentials (ADR-0020).fetch(get one named target's bytes) is this adapter-side capability; the Core never fetches. - Python: needs
pyyaml. Optional extractors add text for more formats (pypdf→ PDF,python-docx→ .docx,openpyxl→ .xlsx/.xlsm; HTML +.csv/.tsvneed no dep). A format with no extractor still captures bytes-only. Ifpythonisn't found, use the interpreter the project uses. - Reading base content without a filesystem (T-159). Where you have file
tools, read sources/docs directly as ever. Where you have ONLY the op surface
(the web chat adapter, any MCP-only host),
… read <root> <id>/odin_readreturns any doc's stored text verbatim, paged (offset/limit; a source returns the same textfind/derivation use) — this is how you ground summaries, quote sources, and re-read for review/challenge there.text_form: "none"= a bytes-only source: say so and model-read the original bytes if your host can, never guess from the filename. - The Muninn is separate from this tool (ADR-0002). Never write knowledge into the project-odin repo.
- Hardened bases (T-155). If
statusreportscaller_can_write: false, the base is ownership-hardened (docs/odin/HARDENING.md): your context reads freely, and every write op must be invoked through the deployment's privileged wrapper (e.g.sudo -u odin python3 … muninn_core.py <op> …). Expect a bare write to be permission-denied — that is the posture working, not an error to work around; never attempt to bypass it.
What ships with it
22 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- flows/ask.md 8.5 KB
- flows/candidates.md 4.0 KB
- flows/challenge.md 4.6 KB
- flows/delegate.md 3.6 KB
- flows/deliverables.md 3.6 KB
- flows/drift-check.md 8.1 KB
- flows/explore.md 6.5 KB
- flows/find.md 1.8 KB
- flows/ingest-repo.md 5.2 KB
- flows/ingest.md 22 KB
- flows/lint-acks.md 1.8 KB
- flows/map.md 7.1 KB
- flows/orient.md 6.3 KB
- flows/record-decision.md 2.8 KB
- flows/regenerate.md 2.8 KB
- flows/retrieve.md 2.6 KB
- flows/review.md 4.7 KB
- flows/search.md 2.9 KB
- flows/supersede.md 1.4 KB
- flows/synthesize.md 12 KB
- flows/why.md 1.2 KB
- flows/work-queue.md 3.3 KB
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.
- 7d ago First seen · 364 lines · 93 tokens per session scan B 0604ec04ba60
odin is a skill published in the GitHub repository WillCAboutThat/odin-adapter (1 stars, last pushed 13d ago), licensed MIT. It adds 93 tokens to every session and 6,145 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
marm-init
Guided MARM MCP setup. Invoke after running marm-memory init on the CLI to configure MARM memory across your agent. Drives transport choice, runtime choice, MCP config writing, multi-agent linking, and server start. Works on Claude, Codex, Gemini, Qwen, Cursor, VS Code, and other MCP-capable agents.
neo4j-agent-memory-skill
Authoritative reference for the neo4j-agent-memory Python package — a graph-native memory system for AI agents built on Neo4j — and for the hosted service (NAMS) at memory.neo4jlabs.com. Use this skill whenever the user mentions neo4j-agent-memory, agent memory with Neo4j, context graphs, the POLE+O model…
forgetful-encode-repo
Encode a repository into the Forgetful knowledge base — bootstrap the project, its entities, memories, and documents from the codebase itself. Use when bringing a new repo under Forgetful or refreshing a stale encoding. Re-encoding is an update pass: query-before-create makes it supersession, not duplication.
memory
Activate this skill when starting a new session, beginning a new task, saving knowledge, recalling past decisions, or after completing significant work. Also activate on errors to log them for pattern analysis. Relevant when the user asks about memory, past context, lessons learned, decisions history, project…
tfx-index
A project indexer that scans a software project and creates a compact map of its files and metadata. The map can be read later instead of repeatedly examining the whole project.
retro
Record durable lessons, null results, and footguns after hard work or debugging. Use when the user asks for a retro, dead ends need preserving, a task disproves an approach, or "จดบทเรียน". Keep repo knowledge separate from machine-local memory.