One library of agent skills, synced everywhere.
Skill Vault manages agent skills — the SKILL.md folder convention used by Claude Code, Claude Desktop, OpenClaw, Cursor, Codex, Copilot, Windsurf, and others. Instead of maintaining separate copies of each skill per tool, you keep a single vault directory on disk and push skills out to every agent that should have them.
The main way in is the Skill Vault App, a local web dashboard. A Python CLI (sv) covers the same vault for terminal workflows and automation — both share the same configuration and on-disk format, so you can use either or both.
Requires Node 20+ and git. On Windows:
git clone https://github.com/pugliabi/skill-vault.git
cd skill-vault
.\setup.cmdsetup.cmd installs and builds the app and adds a Skill Vault folder to the Start Menu. The shortcut opens the app in its own window and stops the app about a minute after you close it. Re-run setup.cmd any time to repair the install; .\setup.cmd -Uninstall removes the shortcuts. The app tells you when a newer version is on GitHub and updates itself in one click.
On macOS or Linux, or to work on the app itself: cd app && npm install && npm run dev (opens http://localhost:9994).
First run shows a Setup page: pick a vault directory, then add your agent tools as providers under Settings. Full walkthrough in Getting Started; the optional sv CLI is covered there too.
The Dashboard is home base: skill and provider counts, synced / stale / missing status cards, a health bar per provider, and an actions available list. Each action row is a one-click fix — "1 skill drifted — re-push to update", "87 skills missing from a target — push to restore" — with the equivalent CLI command shown on the right.
Press Ctrl/⌘ + J anywhere to open the built-in AI assistant, a docked chat pane powered by your local Claude Code CLI. It opens already knowing what needs attention: a For you list of ranked suggestion cards (broken update sources, available updates, failed operations, Notion drift, integrity issues) computed from the app's own signals at zero AI cost and kept fresh by a background source sweep. Every card has a ✦ Fix with AI button, and every failure row and skill view has an Ask AI entry point.
Ask in plain language. "Find the top GitHub skills for creating agents" returns a verified, star-ranked table with the skills you already have marked, then offers to adopt the rest. "This skill says gone upstream, fix it" traces the source through git history and the web, repairs the origin, and applies the update. The tool timeline shows each step as it happens, here on a read-only update check:
One lead agent runs every chat, loads the right one of ten bundled skills for the job, and hands heavy research or parallel repairs to five specialist subagents. Everything it does goes through the app's own API, so it shows up in Activity and can be undone from version history. Deleting skills and force-overwriting Notion are left out of its toolset on purpose, and when a decision is yours it stops and gives you numbered options. There is a mic button for dictation and a one-click AI briefing that turns the suggestion list into a prioritized plan. Full guide: AI Assistant.
Skills lists the whole library with descriptions, tags, providers, and sync state. To find something: type in the filter box (matches names, descriptions, and full SKILL.md text), click a status pill (All · Production · Staging · Stale · Missing · Vault-only), or use the Target dropdown to combine a provider with a state — "show me everything missing from Cursor" is two clicks. Multi-select rows to push, tag, or remove in bulk, and press Ctrl/⌘-K anywhere for the command palette.
Click + New on the Skills page, give it a lowercase-hyphen name and an optional description (it becomes the description: frontmatter agents trigger on), and hit Create. The skill lands in the vault with a starter SKILL.md ready to edit. Already have a skill folder on disk? Add existing imports it instead (CLI: sv add ./my-skill).
Open any skill → files tab → pick a file → Edit. You get the raw markdown with Save/Cancel; the preview mode renders it like an agent would read it. Because pushes are symlinks by default, saving here updates every agent that has the skill — no re-push needed.
The coverage matrix layout (grid icon on the Skills page) is the fastest way to push: rows are skills, columns are providers, a dot means synced. Click a single cell to push one skill to one provider, or a column header to push everything that's missing or stale there. The Push button on any skill opens a drawer where you pick targets per push and choose the method (auto tries a symlink, then a Windows junction, then a full copy).
Targets (providers) are managed in Settings → Providers: add a provider by giving it a name and the directory the agent reads skills from — path validation is live, and "★ All providers" adds every detected tool at once. CLI: sv push [skill] -t <provider>, providers via sv config.
Adopt pulls existing skills into the vault. Four sources: a local Path (scan any folder, recursively), a Provider (skills sitting in an agent directory that aren't in the vault yet), Discover (scan all providers at once), or a Git URL (clone a repo and harvest its skills). Scan results show every SKILL.md found, flag duplicates and what's already in the vault, and let you tick the ones to import. CLI: sv discover, sv adopt, sv adopt-remote <git-url>.
Sync is the daily driver: it computes a two-way plan — push skills that drifted or are missing, pull edits made in provider directories back into the vault, adopt new skills it finds, promote staging — and shows it as a checklist with a per-row diff before anything runs. Deselect what you don't want, then Run selected. CLI: sv sync.
Claude Desktop loads skills from your claude.ai account, so there's no folder to symlink into. Instead, pushing to the Claude Desktop target builds an upload-ready zip in a staging folder; finish by uploading it in Claude Desktop → Settings → Capabilities → Skills. Configure the staging folder in Settings, or zip any single skill from its detail view. CLI: sv package <skill>.
Keep the vault in a git repo and every machine can share it. Devices shows a snapshot per machine — hit Save snapshot after a work session, commit/push the vault repo, and on another machine use Sync from → to compare that device's snapshot with local state and pick which skills to bring over. CLI: sv snapshot, sv devices, sv sync-from <device>.
The skill detail view ties it together: overview (stage, source, path, tags), per-target sync state, and the full file tree with preview. From here you can Push, Pull, Zip, export to OpenClaw, Rename (cascades through the manifest and every provider), or Remove.
Everything above works headless. Requires Python 3.10+:
cd skill-vault
pip install . # or: pipx install .
sv init # wizard: vault directory + provider detection
sv quick # discover → adopt → push, guided
sv status # sync state per skill × provider
sv sync # two-way sync planFull command list and flags in Getting Started and Configuration.
app/ the Skill Vault App (Node 20+, Express + React/Vite)
src/skill_vault/ the sv CLI (Python 3.10+, click)
docs/ documentation + the shared vault format spec
pyproject.toml packaging for the CLI (installs `sv` and `skill-vault`)
- Getting Started — full installation and setup guide
- Features & Use Cases — the app and CLI feature tour, with screenshots
- AI Assistant — using the built-in agent: what to ask, proactive suggestions, skills and specialists, cost, and safety
- Configuration Reference — every setting: config.json, env vars, CLI flags
- Examples — recipes for common workflows
- Troubleshooting — common issues and fixes
- FAQ — frequently asked questions
- Vault Format — the on-disk contract both tools implement
- Brand — logo, colours, and icon files













