By DenisKhay
A single global knowledge graph for Claude Code: identity-routed subgraphs, hybrid BM25 + embedding search (MCP), and hook-enforced capture so durable project knowledge survives across sessions.
Manually register the current repo as a vault subgraph
Pause vault hooks for this session (sensitive or throwaway work)
Resume vault hooks after /vault-pause
Manually invoke the vault skill in actualize mode to capture session knowledge into the matched subgraph
Admin access level
Server config contains admin-level keywords
Executes bash commands
Hook triggers when Bash tool is used
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Modifies files
Hook triggers on file write and edit operations
Modifies files
Hook triggers on file write and edit operations
A persistent knowledge graph for Claude Code — one global vault of Markdown notes, automatically routed per repo, searchable by meaning and keyword, and kept fresh by hooks so durable project knowledge survives across sessions instead of evaporating when the context window closes.
It ships as a single Claude Code plugin bundling four things that have to work together:
| Component | What it does |
|---|---|
Skill (vault) | The capture/recall algorithm: init, actualize (sweep what was learned into nodes), enroll (register a repo). |
| Hooks | SessionStart injects the matched subgraph; PostToolUse nudges (non-blocking) after N edits; Stop/PreCompact guarantee a capture sweep. |
MCP server (vault-search) | Hybrid retrieval — SQLite FTS5 (BM25) + nomic-embed-text embeddings fused with Reciprocal Rank Fusion, decay-aware, archived-excluding. |
| Commands | /vault-update, /vault-enroll, /vault-pause, /vault-resume. |
A bare skill can't carry hooks or an MCP server — which is exactly why this is a plugin.
The default pattern — knowledge living as ad-hoc rules in CLAUDE.md — has two failure modes:
This system closes both: identity-based routing enrolls any repo, and hooks enforce the capture sweep so it isn't optional.
repo cwd ──match.sh──▶ subgraph id(s) ~/Vaults/
(git_remote │ repo_name │ path_prefix) ├── _registry.yaml identity → subgraph
│ ├── _templates/ node scaffolds
▼ ├── .index/vault.db FTS5 + embeddings
SessionStart hook injects the subgraph's └── <namespace>/<subgraph>/
entry nodes into context ├── _index.md
│ ├── bugs/ components/ api/
vault_search MCP ◀── recall on demand ├── architecture/ patterns/
│ └── domain/ dependencies/
Stop / PreCompact hook ──▶ actualize sweep ──▶ new / updated nodes
Full details: docs/ARCHITECTURE.md.
| Required | bash, git, Python 3.8+, pyyaml (pip install pyyaml), jq |
| Recommended | numpy (vector search; without it search is keyword-only) · Ollama running nomic-embed-text (ollama pull nomic-embed-text) for semantic embeddings |
| Platform | Linux (GNU coreutils — uses stat -c, touch -d, /tmp). macOS works for search/capture but the freshness timer in the tick hook needs a BSD-stat tweak. |
Everything degrades gracefully: no Ollama → keyword-only (BM25); no numpy → keyword-only; Ollama returns later → next reindex backfills the missing embeddings automatically.
# 1. add this repo as a plugin marketplace, then install the plugin
/plugin marketplace add DenisKhay/claude-vault
/plugin install vault@claude-vault
# 2. (new shell) scaffold the data root ~/Vaults — idempotent, never clobbers
bash ~/.claude/plugins/<...>/claude-vault/scripts/bootstrap.sh
# or clone + run directly: git clone … && bash claude-vault/scripts/bootstrap.sh
# 3. build the search index (optional but recommended)
python3 <plugin>/skills/vault/retrieval/vault_search.py --reindex
Plugins resolve their own location via ${CLAUDE_PLUGIN_ROOT}, so the hooks and MCP server work wherever Claude Code installs them — no path editing.
The data (
~/Vaults) is intentionally separate from the code (this plugin). Your notes are yours; the plugin is just the engine over them. Nothing personal is committed here — only generic templates and an example registry.
/vault-enroll and pick where its subgraph lives. Future sessions auto-load it.Stop/PreCompact. Force it anytime with /vault-update. The skill applies a salience gate: it only writes durable, non-obvious knowledge (the why, the gotcha, the cross-repo synthesis) — never what's trivially re-derivable from one source file.vault_search MCP tool (semantic + keyword across all subgraphs) and reads the top nodes./vault-pause silences all hooks for sensitive or throwaway work; /vault-resume re-enables.python3 <plugin>/skills/vault/scripts/vault_lint.py reports orphans, duplicate basenames, frontmatter defects, and unlinked-mention suggestions.npx claudepluginhub deniskhay/claude-vault --plugin vaultMemory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns