obsidian-vault-manager

Manage local Obsidian vaults and markdown notes. Use when Codex needs to connect to local Obsidian vaults, register vault paths, or create/edit/refactor/search notes, frontmatter, links, tags, and attachments within a vault.

10 stars

Best use case

obsidian-vault-manager is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Manage local Obsidian vaults and markdown notes. Use when Codex needs to connect to local Obsidian vaults, register vault paths, or create/edit/refactor/search notes, frontmatter, links, tags, and attachments within a vault.

Teams using obsidian-vault-manager should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

How obsidian-vault-manager Compares

Feature / Agentobsidian-vault-managerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Manage local Obsidian vaults and markdown notes. Use when Codex needs to connect to local Obsidian vaults, register vault paths, or create/edit/refactor/search notes, frontmatter, links, tags, and attachments within a vault.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Obsidian Vault Manager

## Quick start
- Register or discover vaults with Obsidian CLI first:
  - `python3 scripts/vault_registry.py discover --merge`
  - `python3 scripts/vault_registry.py list`
- Add a vault manually when needed:
  - `python3 scripts/vault_registry.py add --path "/path/to/Vault" --name "Vault"`
- Manage active workspace:
  - `python3 scripts/vault_registry.py set-active --name "Vault"`
  - `python3 scripts/vault_registry.py set-workdir --name "Vault" --workdir "path/inside/vault"`
  - `python3 scripts/vault_registry.py active`
- Run full Obsidian CLI command surface via `obsidian` subcommand (machine-first by default):
  - `python3 scripts/vault_registry.py obsidian --vault "Vault" search query="meeting notes"`
  - `python3 scripts/vault_registry.py obsidian --raw --vault "Vault" read file="Project.md"`
- Enable destructive commands with `--force-delete`:
  - `python3 scripts/vault_registry.py obsidian --force-delete --vault "Vault" delete file="Old.md" permanent`
- Pick a vault and confirm its path contains `.obsidian/` for manual adds.

## Local data and env
- If <skill-root>/.. is `skills`, project_root is two levels above the `skills` folder (<skill-root>/../../..). Confirm with the user if unsure.
- Store all mutable state under <project_root>/.skills-data/obsidian-vault-manager/.
- Keep the vault registry at .skills-data/obsidian-vault-manager/vaults.json.
- Use .skills-data/obsidian-vault-manager/.env for SKILL_ROOT, SKILL_DATA_DIR, and per-skill env keys.
- Install local tools into .skills-data/obsidian-vault-manager/bin and prepend it to PATH when needed.
- Install dependencies under .skills-data/obsidian-vault-manager/venv (python/node/go/php).
- Write logs/cache/tmp under .skills-data/obsidian-vault-manager/logs, .skills-data/obsidian-vault-manager/cache, .skills-data/obsidian-vault-manager/tmp.
- Keep automation in <skill-root>/scripts and do not write outside <skill-root> and <project_root>/.skills-data/obsidian-vault-manager/ unless the user requests it.

## Vault connection workflow
1. Attempt CLI-first discovery with `scripts/vault_registry.py discover`; keep `.skills-data/obsidian-vault-manager/vaults.json` as the skill-owned state.
2. Register or confirm vault entries in `vaults.json`.
3. Set active vault with `scripts/vault_registry.py set-active --name <name>`.
4. Ask the user for default working folder (relative path), defaulting to vault root (`.`).
5. Save it with `scripts/vault_registry.py set-workdir --name <name> --workdir <relative/path>`.
6. Confirm the chosen vault name, vault path, and working folder before edits.

## Working rules
- Use the configured working folder as the default root for searches and edits (do not roam the entire vault unless requested).
- Edit only note content and attachments unless the user asks to change `.obsidian` settings.
- Preserve existing frontmatter keys; add new keys without reordering unless requested.
- Keep internal links valid after rename/move; update `[[Wiki Links]]` and markdown links.
- For `obsidian` passthrough commands, destructive actions require explicit `--force-delete` when supported by the command.
- Confirm before delete, rename, or bulk changes.

## Common tasks
### Search and review
- Use `rg --glob '*.md' <pattern> <vault_path>` to find notes and references.
- Summarize matching files before edits.

### Create a note
- Choose a filename that matches the main title.
- Add YAML frontmatter when needed (tags, aliases, status).
- Save as UTF-8 with a trailing newline.

### Edit or refactor
- Keep headings and block IDs stable unless requested.
- When moving sections across notes, update inbound links and mentions.

### Rename or move
- Rename the file and update links across the vault.
- For wiki links, update `[[Old Name]]` and `[[path/Old Name|alias]]`.

### Attachments
- Keep attachment paths relative when possible.
- Update embeds and markdown links if a file is moved.

## Scripts
- `scripts/vault_registry.py`: list, add, remove, set active, set default working folder, show active, discover vaults, and full CLI passthrough via `obsidian` subcommand; writes registry to `.skills-data/obsidian-vault-manager/vaults.json` (override with `--project-root` or `--data-root`).
- `scripts/obsidian_cli.py`: machine-first wrapper used for structured command execution and CLI discovery.

## References
- `references/obsidian-vaults.md`: config locations and vault discovery details.
- `references/obsidian-markdown-skill.md`: upstream Obsidian markdown skill content (format rules, links, tasks).
- `references/obsidian-json-canvas-skill.md`: upstream JSON canvas skill content.
- `references/obsidian-bases-skill.md`: upstream Bases skill content.

Related Skills

We are still matching the closest adjacent skills for this page. In the meantime, continue through the full directory.