vault-tend
Acts like a team of knowledge managers doing a thorough maintenance pass over the WHOLE vault — re-languaging notes to one language, normalizing frontmatter, repairing broken wikilinks, deduplicating
SKILL.md.claude/skills/vault-tend/SKILL.md
GitHubSkill: Vault Tend
The standing knowledge-manager team for your vault. Where knowledge-build creates
knowledge and the monthly Vault Health Check audits (read-only), this skill acts: it
makes careful, sweeping changes across many notes — re-languaging, normalizing, repairing,
deduplicating, tidying, archiving, or any adjustment you ask for.
Because it edits at scale, it is preview-first and confirmation-gated, always.
When to activate
- "tidy / clean up the vault", "vault maintenance", "act like a knowledge manager".
- "translate / put the whole vault in French" (re-language).
- "normalize the frontmatter", "fix the broken wikilinks", "deduplicate people/projects".
- "make this adjustment everywhere…" (a custom vault-wide edit).
- After a Vault Health Check, to act on what it flagged.
Do NOT use vault-tend when:
- It's a single-note edit → just edit that note.
- The user wants to create synthesis/knowledge →
knowledge-build. - The user wants to find something →
recall.
Non-negotiable safety model
This skill can touch hundreds of notes. Every run follows the same loop:
- Scope — restate exactly what will change and where (which folders, which note types).
- Scan & preview — report counts and show 2–3 representative before/after diffs. Change nothing yet.
- Confirm — get explicit go-ahead. For large scopes, confirm per batch.
- Apply in batches — small batches, one Git commit per batch, so any step is reversible.
- Report — what changed, what was skipped, what needs a human decision.
Hard rules (from _CLAUDE.md):
- Never delete a note — propose moving to
07-archive/instead. - Append-only zones (
02-people/,05-decisions/): never delete a dated timeline entry or an(auto-logged)/(Backfilled)marker. (The pre-commit hook enforces this.) - Preamble stays English — the
## For future Claudeblock is never translated. - Wikilinks are identities — don't rewrite link paths during a language change; rename only via the dedup/rename operation, and update all backlinks when you do.
- Fuzzy-match before merging duplicates; never merge without confirmation.
- Prefer many small commits over one giant diff.
Operations
Pick the one(s) the user asked for. Each still runs the preview→confirm→apply→report loop.
1. Re-language the vault
Translate note bodies into the target language (from MY-PROFILE.md Working language, or
the one the user names — e.g. "tout en français").
- Translate: prose, section content, editable sections (
Compiled truth,Open threads, goals, decisions text, knowledge bodies, the bullet prose inside timeline entries). - Keep verbatim: the
## For future Claudepreamble (English), frontmatter values (enums/dates/tags), wikilink paths, quoted verbatim sources, code, and — by default — the dated timeline headers (### YYYY-MM-DD — …) and protected markers. - Section headings: you may localize standard headings (e.g.
## Links→## Liens) only if the user wants it; default is to keep canonical English headings so skills still match them. Flag this trade-off in the preview. - Deep mode (only if the user explicitly asks to also translate historical entry headers): this rewrites append-only history, so the pre-commit hook will flag it — that's the safety net. Do it as a clearly-labeled, separately-committed migration the user has acknowledged.
2. Normalize frontmatter
Ensure each note has the required fields for its type (per _CLAUDE.md schemas): add missing
ai-first: true, fix field casing, dedupe/trim tags, fill obvious gaps (updated), flag the rest.
3. Repair wikilinks
Find broken [[...]] (target missing), empty [[ ]], or path drift. Offer to create stubs or
fix the path; update backlinks. Report orphans (no inbound link).
4. Deduplicate
Fuzzy-match within 02-people/ and 03-projects/ for near-duplicates (e.g. Alex Rivera vs
Alex Rivera (PM)). Propose merges (keep the richer note, append the other's timeline, update
all backlinks, archive the loser). Confirm each merge.
5. Tidy formatting & consistency
Align section names/order to the type schema, fix heading levels, remove accidental duplicate sections — without changing meaning. Never touch append-only history content.
6. Archive sweep
Propose moving completed projects, leavers, and notes stale past the MY-PROFILE.md threshold
to 07-archive/ (add status: archived). Confirm the list; never auto-archive silently.
7. Custom adjustment
Any vault-wide change the user describes ("add a priority tag to all active projects",
"standardize date formats"). Same loop: scope → preview → confirm → batched apply → report.
8. Knowledge garden
A focused maintenance pass on 06-knowledge/. Delegates to knowledge-build curator (Mode C)
under the standing preview→confirm→apply loop, with extra reporting:
- Run the curator sweep (Mode C.2): rebuild auto-maintained hub listings, refresh
_INDEX.md, detect orphans, near-duplicates, stubs awaiting enrichment, stale wiki pages. - Propose structural moves: any
type: docstill sitting at the root of06-knowledge/(legacy from before the_sources/convention) → move into_sources/and rewrite the inbound wikilinks. Any vault-meta artifact (kickstart-backfill-*,vault-health-*) in06-knowledge/→ propose archival. - Propose new hubs for unhubbed domain clusters with ≥ 3 notes (Mode C.2 step 3).
- Propose merges for near-duplicate wiki/lesson pages.
- Update
## Knowledge domainsinMY-PROFILE.mdif the user confirms newly proposed domains. - Report: hubs rebuilt, notes moved, orphans flagged, merges proposed, stubs aging out.
This is the recurring "tidy 06-knowledge" pass. Run it monthly or when _INDEX.md health
counters cross thresholds (the brief surfaces them).
Report
✓ vault-tend — operation: re-language → fr
Scanned: 142 notes. In scope: 96 (excluded 46: already fr / archive / preamble-only).
Applied in 5 batches (5 commits). Skipped 3 (flagged below).
Preserved: 38 dated timeline headers, all (auto-logged)/(Backfilled) markers, all preambles (EN).
⚠️ Needs you: 2 person notes have conflicting duplicates — review proposed merges.
⚠️ Heads-up: canonical headings kept in English so skills keep matching; say the word to localize.
Anti-patterns to avoid
❌ Applying without a preview — always show the diff and counts first. ❌ One massive commit — batch it so it's reversible. ❌ Translating the preamble or frontmatter enums — those stay as-is. ❌ Rewriting append-only history unless the user explicitly opts into deep mode. ❌ Deleting notes — archive instead. ❌ Silent merges — confirm every dedup. ❌ Rewriting wikilink paths during a language pass — paths are identities.
Special cases
Mixed-language vault (the common one)
"Put everything in French": detect each note's language, translate only the non-fr ones,
keep already-French notes untouched, and update MY-PROFILE.md Working language to fr so new
notes follow suit. Preview the count of EN→FR notes before starting.
Very large vault
Work folder by folder, oldest-first, committing per folder. Offer to stop after each so the user can sanity-check before continuing. In Claude Code, fan out parallel subagents for the read-only scan/preview phase (one per folder) — modern models handle this well and it cuts the sweep time; keep the apply phase sequential and batch-committed.
Running from a health report
If a 06-knowledge/vault-health-*.md exists, offer to action its findings (orphans, stubs,
stale people, duplicates) one category at a time.