meta-sync-template

meta-sync-template is a skill for Claude Code from tboome33/obsidian-mcp-router. It costs 159 tokens per session (5,147 once invoked), scanned A, original, Apache-2.0.

A workflow for copying plugins, snippets, and top-level documents from a reference Obsidian vault to selected other vaults. It checks which vaults are reachable and whether they have the required local API plugin before syncing.

In plain words
What is it for?
Use it to sync one reference vault to all configured vaults or to a chosen subset of them.
Why use it?
It avoids manually updating each vault and catches missing setup before the copy begins. Safety checks also help prevent copying the reference vault onto itself or exposing credentials.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: reads .claude/ paths; mentions CLAUDE.md; names the AskUserQuestion tool.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is node scripts/setup-vault.mjs "<vault-path>" --sync-plugins.

Part of the obsidian-router plugin — 49 skills, 54 commands, 2 agents, 6 hooks, 1 MCP server shipped together

Good fit Use it to sync one reference vault to all configured vaults or to a chosen subset of them.

Compare 6 skills from other repositories ↓
Install

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.

Clone the repo
git clone --depth 1 https://github.com/tboome33/obsidian-mcp-router
agentmods
npx agentmods add skills/tboome33/obsidian-mcp-router/meta-sync-template

Made for: Claude Code.

Or install obsidian-router, the plugin that ships this one along with the rest of its 49 skills, 54 commands, 2 agents, 6 hooks, 1 MCP server.

Wrote 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.

agentmods badge for meta-sync-template

README.md
[![agentmods](https://agentmods.dev/badge/skills/tboome33/obsidian-mcp-router/meta-sync-template/github.svg)](https://agentmods.dev/skills/tboome33/obsidian-mcp-router/meta-sync-template)
Your own site
<a href="https://agentmods.dev/skills/tboome33/obsidian-mcp-router/meta-sync-template"><img src="https://agentmods.dev/badge/skills/tboome33/obsidian-mcp-router/meta-sync-template/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.

agentmods 80×15 button for meta-sync-template

Your own site · 80×15
<a href="https://agentmods.dev/skills/tboome33/obsidian-mcp-router/meta-sync-template"><img src="https://agentmods.dev/badge/skills/tboome33/obsidian-mcp-router/meta-sync-template.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 159 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,147 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00159 $0.05147
Opus 5.5 $0.00064 $0.02059
Sonnet 5.5 $0.00032 $0.01029
Haiku 4.5 $0.00016 $0.00515

Measured 26d ago against content hash bf839f2cd3c2, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

meta-sync-template 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 26d 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.

skills/meta-sync-template/SKILL.md · 204 lines

How it starts

The opening of the file, as written. The whole thing — 204 lines — stays where its author put it; the contents beside it link to each section on GitHub.

meta-sync-template

Interactive bulk propagation of the reference vault (typically .template) to one or more configured vaults. Conversational picker over scripts/setup-vault.mjs's --sync-all and --sync-plugins modes with up-front diagnostics (online/offline status, REST-API-plugin presence per target).

Which command runs (moved out of the frontmatter, which the Agent Skills spec caps at 1024 characters): the router config comes from the OBSIDIAN_ROUTER_CONFIG env var, defaulting to ~/.claude/obsidian-mcp-router/config.json. The all-vaults case runs npm run setup-vault -- --sync-all (the script auto-skips the reference vault and refuses to leak credentials); subsets loop scripts/setup-vault.mjs <path> --sync-plugins. Flagging a missing obsidian-local-rest-api before anything runs lets the user bootstrap that vault first rather than meet a runtime warning mid-sync.

Safety: as of obsidian-mcp-router v0.11.2+, the underlying script itself enforces every safety invariant this skill cares about — it refuses to sync the reference vault onto itself (case-insensitive on Windows / macOS), and it refuses to first-time-copy obsidian-local-rest-api into a target lacking it (the copy would clone the reference's data.json and leak the API key). The skill's role is purely UX: a friendly picker, clear pre-flight info, per-vault aggregation. The hard safety guarantees live in setup-vault.mjs (samePath() check at syncPluginsMode entry; CREDENTIAL_LEAK_PLUGINS skip in the plugin loop; case-insensitive self-skip in --sync-all). See tests/setup-vault-safety.test.mjs for the regression coverage.

What the underlying script propagates

From referenceVault to each target vault:

  • Plugin folders: .obsidian/plugins/<plugin-id>/ — full directory copy when the plugin is missing from the target, or a re-clone with --force that preserves the target's local data.json. A source folder may hold CODE (main.js + manifest.json) or only a settings pre-seed (data.json); the report tells them apart (see step 7).
  • Plugin enablement: community-plugins.json entries appended for every plugin copied for the first time — code or settings only — so a plugin switches on as soon as its code arrives. Those ids are listed on purpose and are not counted as synced.
  • CSS snippets: .obsidian/snippets/*.css + enabled in appearance.json (idempotent)
  • Root docs: README.md, Documentation/ (the quick-reference PDFs, SETUP.md), .claude/ (preserved if already present unless --force; under --force a folder is MERGED, never wiped first). Two things never travel, --force or not: a backup (*.bak, *.bak-* — the reference vault's history, not the target's), and the reference vault's conventions file (Documentation/CLAUDE.md) into a vault that already has one at any of the three candidate locations — a second file would leave the vault ambiguous, which is what the 2026-09-22 sync did to 13 vaults. A vault with no conventions file still receives the template's. The run prints each entry it left out and why. One more thing never travels: when the source is the shipped skeleton (the bundled templates/reference-vault-skeleton, or the one --sync-from-github extracts), its README.md is not copied — it documents the skeleton, not the vault.
  • Smart Connections — first-time only: .smart-env/smart_env.json + embedding-model cache are cloned only when the target's .smart-env/ directory is entirely missing (planSmartEnv() / syncPluginsMode() in scripts/setup-vault.mjs, force: false). On an already-bootstrapped target, --sync-plugins --force does NOT refresh .smart-env, and --lang does not rewrite it either. To push an updated Smart Connections config to an existing target, delete the target's whole .smart-env/ directory (the check is on the directory, not on the file; the embedding cache is rebuilt on the next Smart Connections start) before re-running, or re-bootstrap the vault.
  • Embedding model by language — --lang <code> (on --sync-plugins and --sync-all) picks the model of the .smart-env the sync creates: en keeps TaylorAI/bge-micro-v2, any other language gets the multilingual onnx-community/embeddinggemma-300m-ONNX (zh: Xenova/jina-embeddings-v2-base-zh), and language is set to match. Without --lang, a language the vault already declares is used (the languages convention in its CLAUDE.md → its first code; the retired bilingual convention → fr; or language in Smart Connections' settings); otherwise the source's model is kept and a one-line hint says to pass --lang for a non-English vault. The keys come from Smart Connections' own adapter table — see src/helpers/smart-env-language.mjs.

Read the full file on GitHub · 204 lines

Changes

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.

  1. 26d ago Changed · +11 lines bf839f2cd3c2
  2. 1mo ago Changed ab8146991274
  3. 1mo ago First seen · 193 lines · 159 tokens per session scan A ebbd503b50bd

Subscribe to this mod's changes

meta-sync-template is a skill published in the GitHub repository tboome33/obsidian-mcp-router (1 stars, last pushed yesterday), licensed Apache-2.0. It adds 159 tokens to every session and 5,147 once invoked, about $0.0006 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-03.

Related

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…

philipyaz/cos · 125 tokens

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…

philipyaz/cos · 227 tokens

librarian

Orchestrate vault knowledge workflows using the Librarian MCP server. Ingest solutions, search prior art, explore the knowledge graph, log daily learnings.

ngmeyer/librarian-mcp · 35 tokens

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…

philipyaz/cos · 232 tokens

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 +…

philipyaz/cos · 242 tokens

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.

shirley-xue-2025/usage-guard · 75 tokens