vault-skills
- obsidian
- claude code
- agents
- typescript
Claude Code loads skills and agents from configuration directories; I keep my thinking in an Obsidian vault. vault-skills removes the gap: you author skills, agents, and policies as ordinary vault notes, and the plugin compiles them into a native Claude Code plugin, written straight into Claude Code's load path.
Structure lives in frontmatter rather than folders. Each note declares a type (skill, agent, or policy) and a parent wikilink, and the exporter builds a strict tree from those edges: a skill's parent is the agent that owns it, an agent's parent is the agent that delegates to it, and a policy note injects shared context into every agent in its parent's subtree. The tree is validated before anything ships — unresolved links, cycles, multiple parents, and unreachable nodes are all build errors, not surprises at runtime. Supporting files (scripts, references) live in a parallel filesystem tree and get bundled into the generated skill directories.
The plugin also serves an MCP server, so an agent can validate, inspect, and export the tree without touching the Obsidian UI — which means the agents I run can rebuild their own capabilities from my notes. It's the same conviction that drives this site, which publishes itself from the same vault: keep one source of truth, and render the rest.