Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Generic knowledge-vault tooling for Claude Code — LSP server + CLI validator + shared parsing lib (body parser, template rules). Config-driven vault root via .claude/vault-keeper.json; single source of truth for vault validation logic.
npx claudepluginhub nguyenvanduocit/claude-code-vault-keeper --plugin claude-code-vault-keeperRead-only remote changelog for THIS vault — runs `git fetch` (safe: only updates remote-tracking refs), then shows what's new on `origin/<branch>` that local doesn't have yet, recent activity across the vault folders, most-touched docs and top contributors. Filters to `vaultFolders` from `.claude/vault-keeper.json` (default `["."]`), never merges, never modifies working tree. Hands off to `/vault.sync` to integrate. Use when the user says 'vault changelog', 'what's new in vault', 'remote vault history', 'recent changes', 'show remote commits', 'có gì mới trong vault', 'vault có gì mới', 'lịch sử vault', 'xem commit từ remote', '/vault.changelog'.
Apply deterministic, safe auto-fixes to vault documents — frontmatter key reordering, body section reordering per template, AC heading normalization, trailing whitespace, multi-blank-line collapse. Powered by `lib/canonical-formatter.js`. Only fixes that are 100% mechanical and information-preserving — never invents content, never changes field VALUES, never guesses missing required fields. After fixing, re-runs validate and reports residual issues that need human attention. Use when the user says 'fix vault', 'format vault docs', 'auto-fix', 'canonicalize', 'sửa vault', 'format lại docs', '/vault.fix'.
Gardener-style vault maintenance — runs `vault-keeper entropy --json` to measure 4 chaos dimensions (schema drift, vocab drift, lifecycle decay, distribution health), surfaces emergence patterns, proposes context-aware pruning actions, applies per-batch with approval, remeasures to confirm entropy dropped. Closed loop. Modifies files (performs all edits directly via the Edit tool). Use when user says 'cắt tỉa vault', 'garden vault', 'prune vault', 'vault health gradient', 'vault entropy', 'cleanup drift', '/vault.garden'.
Read-only vault health check — runs `vault-keeper doctor` for environment + config state, then `vault-keeper validate --json` for per-doc rule violations, groups errors by template + folder, and surfaces the top fixable issues with file:line citations. Never modifies files. For deterministic batch auto-fixes, hand off to `/vault.fix`. Use when the user says 'check vault', 'vault health', 'vault status', 'validate documents', 'kiểm tra vault', 'vault có lỗi gì không', '/vault.health'.
Read-only overview of claude-code-vault-keeper — lists every `/vault.*` skill with its one-line purpose, the `vault-keeper` CLI entrypoints, and deep links to the GitHub documentation. Never runs the validator, never touches files. Use when the user asks 'help', 'vault keeper help', 'what can vault keeper do', 'list vault commands', 'các lệnh vault', 'trợ giúp', 'hướng dẫn', '/vault.help'.
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Create and edit Obsidian vault files including Markdown, Bases, and Canvas. Use when working with .md, .base, or .canvas files in an Obsidian vault.
Validation and quality enforcement for Tailwind CSS projects with comprehensive utility-first CSS patterns and best practices.
Advanced Angular skills for dependency injection, RxJS, and signals.
Advanced Java skills for streams, concurrency, and generics.
Markdown documentation skills and linting with markdownlint.
Claude Code plugin for InstantCode Annotator - enables AI-human collaboration through visual element selection and annotation
Published on npm as claude-code-vault-keeper — the vault-keeper
binary is what you'll actually type.
Your vault has 1,247 notes. How many use
status: donevsstatus: completed? How many tag with#bookvs#books? How many books are missing arating:field?You don't know. Neither does Dataview. That's why your queries quietly lie.
tag vs tags, status: WIP vs status: in-progress,
half your book notes have author:, the other half have by:.vault-keeper makes your vault enforce its own conventions. Write the rules
once, in a template you control. Get a red squiggle the moment a note breaks
them — in your editor, in CI, in the loop where your AI assistant writes new
notes.
It works with any markdown folder: an Obsidian vault, a Logseq graph, a Foam workspace, a repo full of ADRs and RFCs, a personal Zettelkasten. The plugin contains zero domain knowledge about your notes. Your templates decide everything.
Adopting an existing vault? Don't try to convert 500 notes overnight. Set
vaultFoldersin.claude/vault-keeper.jsonto one subfolder (e.g.["books"]), author one template, point that folder's notes at it, watch it go green. Folders outsidevaultFoldersare silently ignored, so the rollout is incremental — add a folder when you're ready to enforce it. Seedocs/vault-config.mdfor the config reference andexamples/example/for a working single-folder setup to copy from.
Two notes that drifted from your book-note template — one set status: wip
where the template allows only [reading, done, abandoned], the other is
missing the created: field your queries depend on:
📄 library/books/2024-shogun.md
🚨 status: Invalid status: 'wip'
💡 Fix: Use one of: reading, done, abandoned
🚨 created: Missing required field: created
💡 Fix: Add created to frontmatter
📄 library/books/atomic-habits.md
🚨 rating: Value 0 below minimum 1 for rating
💡 Fix: Set rating ≥ 1
📊 SUMMARY
Total Documents: 487
✅ Valid: 484/487
🚨 Errors: 3
exit 1
That same diagnostic appears inline as you type if you install the Claude Code plugin — no save, no run, no context switch.
CI fails on the first error. Reviewers stop nitpicking format and start reviewing content.
Rules live in your templates, not buried in the tool. A book-note template might look like this:
---
template_path: templates/book.md
document_type: book
fields:
$path:
pattern: "^library/books/"
template:
required: true
title:
required: true
author:
required: true
created:
required: true
type: string
pattern: "^\\d{4}-\\d{2}-\\d{2}$"
status:
required: true
type: string
enum: [reading, done, abandoned]
rating:
type: integer
min: 1
tags:
type: array
finished:
type: string
---
# Book template
Body sections this template expects.
## Takeaways
## Quotes
Edit the template. Every note that declares template: templates/book.md
revalidates against the new rules — no rebuild, no code change. The
full rule vocabulary covers composable
field primitives (type, enum, pattern, required, min/max, uniqueItems, exists),
conditional requirements via a small DSL (and, or, in, not in), body
section-rules (heading patterns, table/list/code validation, repeatable
headings, formula expressions), and strict mode for undeclared-field detection.
# 1. Scaffold a sample vault (no install)
bunx -p claude-code-vault-keeper vault-keeper init my-vault
cd my-vault
# 2. Look at templates/note-template.md — those are the rules
# 3. Validate
bunx -p claude-code-vault-keeper vault-keeper validate
# → Valid: 1/1, exit 0
# 4. Break notes/note-001-hello.md (e.g. delete `owner:`)
bunx -p claude-code-vault-keeper vault-keeper validate
# → exit 1, explains exactly what broke and how to fix it