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 tboome33/obsidian-mcp-router --skill write-bundlegit clone --depth 1 https://github.com/tboome33/obsidian-mcp-routerWrote 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/tboome33/obsidian-mcp-router/write-bundle)<a href="https://agentmods.dev/skills/tboome33/obsidian-mcp-router/write-bundle"><img src="https://agentmods.dev/badge/skills/tboome33/obsidian-mcp-router/write-bundle/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/tboome33/obsidian-mcp-router/write-bundle"><img src="https://agentmods.dev/badge/skills/tboome33/obsidian-mcp-router/write-bundle.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.00212 | $0.02490 |
| Opus 5 | $0.00106 | $0.01245 |
| Sonnet 5 | $0.00042 | $0.00498 |
| Haiku 4.5 | $0.00021 | $0.00249 |
Grade A, and why
write-bundle 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 — 109 lines — stays where its author put it; the contents beside it link to each section on GitHub.
write-bundle
Call the obsidian-router write_bundle MCP tool. It runs a list of writes as one journaled operation: every target's content is captured before the first write, and if any step fails, every file the bundle touched is put back byte-for-byte.
When to use
Whenever one user-visible action produces several files whose half-written state would be wrong:
save— the note + the journal line +hot.mdwiki-ingest— the source page + entity pages + the journalwiki-fold— the fold page + the log rewrite- any multi-key frontmatter update that must not land halfway (this is what makes
merge_frontmatterall-or-nothing — see below)
For a single file, use the ordinary write-append / write-create-or-replace / write-patch. A bundle around one write buys nothing but a journal round-trip.
Arguments
Required: steps — an ordered array, at most 25. Each entry is { op, path, ...that op's own arguments }.
op |
runs | needs |
|---|---|---|
write |
write_file |
content |
append |
append_to_file |
content |
patch |
patch_file |
operation, targetType, target, content |
set_frontmatter |
set_frontmatter |
key, value |
merge_frontmatter |
merge_frontmatter |
values |
delete |
delete_file |
confirm: true |
Optional: vault (omit for default — a bundle is single-vault, steps may not override it) · preview: true (sealed plan, writes nothing) · approvedPlanSha256 (the seal from a preview) · recover (see below) · per-step ifMatch.
move is deliberately not a bundle step: a half-rolled-back move is worse than no rollback. Express it as a delete plus a write.
What it guarantees — and what it does not
✅ No silent in-between. outcome says exactly where you landed (four values, below). Read it; do not assume success.
✅ Crash survival. The before-images are written to wiki-meta/write-journal/<operationId>.json before the first mutation, so a rollback is still possible after the process dies. A journal is deleted — or, if that fails, stamped terminal — once the operation reaches a proven end, so it can never be replayed against a bundle that already succeeded. It stays pending (and recoverable) whenever the end was not proven.
✅ Nothing is destroyed without a copy. If a rollback has to overwrite content it cannot attribute, the exact bytes it is about to overwrite are saved into the journal first — and if that copy cannot be saved, the overwrite does not happen at all.
✅ Group-wide C1. Put ifMatch on the steps that matter: every precondition is checked up front, so a bundle whose targets moved refuses entirely, before writing anything.
✅ Concurrent writers are detected, not assumed away. For write and delete steps the bundle knows the exact result it produced, so a read-back that disagrees is proof someone else wrote — that file is then left alone for the rest of the operation, rollback included.
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 Changed · +4 lines 3b715b503264
- 6d ago First seen · 105 lines · 212 tokens per session scan A fc13f42a67e2
write-bundle is a skill published in the GitHub repository tboome33/obsidian-mcp-router (1 stars, last pushed today), licensed Apache-2.0. It adds 212 tokens to every session and 2,490 once invoked, about $0.0011 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-09-03.
Other skills, from other repositories
unanswered-messages
Scan WhatsApp + Gmail for messages still awaiting MY reply — the ones that need nothing more than an answer, so they spin off no case, reminder, or event and get forgotten — record each on the board as an unanswered message, and mark it answered the moment I reply (so it leaves the view). Use when the user says "what…
fitness-training-plan
The Fitness coach's HEADLINE skill — generate a personalised WEEKLY TRAINING PLAN for the athlete with deliberate VARIETY / ROTATION (rotate sports and intensity; alternate hard/easy; progressive overload toward the goal date), then PERSIST it via savetrainingplan so it lands on the /fitness/training-plan history…
usage-guard
Arm proactive 5-hour usage protection for long Claude Code sessions (batch, subagents, high window % at start). Daemon reads account-level 5-hour window usage (not per-session). User types /usage-guard at session start. Re-arm every sitting. If user mentions usage-guard by name, read this file and run arm.sh.
reminders-review
The reminder janitor — a periodic sweep that reviews every OPEN reminder on the board and CLOSES the ones whose job is already done or whose moment has passed, so the reminders list stays a live to-do surface instead of a graveyard of stale nudges. It reads each reminder's full context via the board MCP, then sorts it…
capture
Captures ideas, notes, links, and thoughts quickly. Use when the user says 'note', 'idea', 'capture', 'save this', 'remember', or wants to save something for later.
fitness-pre-workout-brief
Prepare and persist TODAY'S pre-workout / training-readiness brief — the daily "should I train today?" call. It reads the board's deterministic FORM SCORE (0–100, with its hrv / sleep / resting-HR / load breakdown), folds in last night's sleep + this morning's metrics + recent training load + the athlete profile +…