Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/geml-spec/gemlnpx agentmods add skills/geml-spec/geml/geml-vaultWrote 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/geml-spec/geml/geml-vault)<a href="https://agentmods.dev/skills/geml-spec/geml/geml-vault"><img src="https://agentmods.dev/badge/skills/geml-spec/geml/geml-vault/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/geml-spec/geml/geml-vault"><img src="https://agentmods.dev/badge/skills/geml-spec/geml/geml-vault.svg" alt="Reviewed on agentmods" width="80" 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.00205 | $0.01628 |
| Opus 5.5 | $0.00082 | $0.00651 |
| Sonnet 5.5 | $0.00041 | $0.00326 |
| Haiku 4.5 | $0.00020 | $0.00163 |
Grade A, and why
geml-vault 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 18d 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 — 131 lines — stays where its author put it; the contents beside it link to each section on GitHub.
A Markdown vault, addressed by block
The pages stay Markdown. Nothing is converted. What changes is how you reach
into them: an address (#entities) instead of a line number, and a write
that touches one block instead of rewriting a file.
This buys three things grep + Read + Edit cannot give you:
- An address survives edits. A line number stops being true the moment
anything above it changes.
#entitiesdoes not. - A write needs nothing read first. No whole page pulled into context to
build an
old_stringthat has to match exactly. - It works offline. No Obsidian running, no Local REST API, no API key.
Read: locate, then take one block
geml find '<literal text>' <dir> --head # → file ⇥ #address ⇥ the matching line
geml get <file> '#address' --body # → that block, nothing else
geml list <file> # → every address in one page
find walks a directory for *.geml and *.md. It skips hidden
directories — a vault that hides sources in .raw/ must name that directory
explicitly.
Read a whole page only when list shows it is short enough that taking one
block saves nothing. Most notes are; index, log and cache pages are not, and
those are where this skill earns its place.
Write: change one block
geml list <file> # ALWAYS first — addresses AND the kind column
geml set <file> '#heading' --body --in - # a HEADING: --body replaces the section body
geml set <file> '#prose-addr' --in - # a PROSE block: NO --body, or it appends
geml add <file> --after '#id' --in - # insert a new block after one
geml add <file> --append --in - # append to the end (log pages)
--body and the block's kind must agree. On a heading it means "the section
below the heading line"; a prose block has no body of its own, so --body
writes after the prose instead of over it — silently, exit 0. geml list
prints the kind in its second column, which is why it comes first.
What ships with it
2 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.
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.
- 18d ago Changed · +1 lines 2737e06036c8
- 29d ago First seen · 130 lines · 205 tokens per session scan A c93974781eb8
geml-vault is a skill published in the GitHub repository geml-spec/geml (29 stars, last pushed today), licensed MIT. It adds 205 tokens to every session and 1,628 once invoked, about $0.0008 per session on Opus 5.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-09-17.
Other skills, from other repositories
sw-project
Keep a project's goal, decisions, work items, artifacts and briefs portable across AI tools and accounts. Use for project coordination, "project brief", "what is this project about".
jev-memory
Use when the user wants Claude Code to remember their preferences across sessions, asks for a memory mod or memory harness for Claude Code, mentions the Jev memory classifier or a "classifier on every turn" mod, or wants to build a Claude Code mod on treg and Jev. Installs a ready-made Claude Code mod that has Jev…
dekko-notes
Read and write dekko's symbol-anchored notes in any repo with a .dekko/ directory. Trigger every time you pull a symbol's context (querysymbol, getcontextpack, dekko query/context), right after a non-obvious change, and right after any rename/move/signature edit (to sweep orphaned notes). Notes are durable, committed…
ov-experience-memory
Retrieve and apply OpenViking Experience memories through the Agent runtime's generic OpenViking search and read tools. Use before or during executable, multi-step, or tool-based work such as coding, file or data changes, configuration, deployment, workflow execution, and failure recovery when prior operational…
mnemon
Persistent memory CLI for LLM agents. Store facts, recall past knowledge, link related memories, manage lifecycle.
save-learning
Saves user instructions as persistent learnings for future sessions. Use when the user says 'remember this', 'always do X', 'from now on', 'never do Y', or gives any instruction they want persisted across sessions. Proactively suggest when the user states a preference, convention, or rule they clearly want followed in…