How this skill is triggered — by the user, by Claude, or both
Slash command
/vault:vaultThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Manage Obsidian vault paths and configure Claude Code permissions for vault skills.
Manage Obsidian vault paths and configure Claude Code permissions for vault skills.
OBSIDIAN_VAULT env and config/config.yaml must ALWAYS point to the same vault.
When updating either, update both.
Read ~/.claude/settings.json and display:
env.OBSIDIAN_VAULTenv.PERSONAL_VAULTenv.COMPANY_VAULT$ARGUMENTS
Display the current status above. If active vault is configured, also read and display the structure from <vault_path>/vault-config.yaml.
company: Switch to company vaultCOMPANY_VAULT from ~/.claude/settings.json~/.claude/settings.json:
env.OBSIDIAN_VAULT to the company vault pathconfig/config.yaml):
vault.path to the company vault pathpersonal: Switch to personal vaultPERSONAL_VAULT from ~/.claude/settings.json~/.claude/settings.json:
env.OBSIDIAN_VAULT to the personal vault pathconfig/config.yaml):
vault.path to the personal vault pathValidate the path
~ if present.obsidian/ folder (confirms it's an Obsidian vault)vault-config.yaml - if missing, offer to create with defaultsUpdate ~/.claude/settings.json
env.PERSONAL_VAULT to the new pathenv.OBSIDIAN_VAULT to the new path (make it active)Update thought-organizer config (if cwd contains config/config.yaml)
vault.path to the new pathReport success
--set-company path: Set company vault path~/.claude/settings.json with env.COMPANY_VAULT--company also passedpermissions safe: Configure read-only permissionsConfigure minimal permissions for vault skills (read-only vault access).
Read ~/.claude/settings.json and extract:
env.OBSIDIAN_VAULT → personal vault (required)env.COMPANY_VAULT → company vault (optional)If OBSIDIAN_VAULT is not set, stop and tell the user to run /vault first to configure their vault path.
For the personal vault, read $OBSIDIAN_VAULT/vault-config.yaml to get folder names.
If vault-config.yaml doesn't exist, use these defaults:
daily_notes: "Daily Notes"
projects: "Projects"
notes: "Notes"
references: "References"
clippings: "Clippings"
processed: "Processed"
processed_coding: "Processed/Coding"
prototypes: "Processed/Prototypes"
style_guide_file: "Style Guide.md"
categories_file: "Categories.md"
Personal vault - Read only:
(Use // prefix for absolute paths - NOT single /)
Read(//$OBSIDIAN_VAULT/**)
Company vault - Read only (if configured):
Read(//$COMPANY_VAULT/**)
Claude data (for devlog):
Read(~/.claude/projects/**/*.jsonl)
Read(~/.claude/plans/**)
Bash commands - minimal set:
Bash(ls:*)
Bash(git status:*)
Bash(git diff:*)
Bash(git log:*)
~/.claude/settings.jsonpermissions.allow array (or create empty array if none)Important: Use actual resolved paths in the permissions (not environment variables), since permissions are resolved at settings load time.
Vault Permissions Configured (SAFE MODE)
Personal Vault: $OBSIDIAN_VAULT
- Read-only access
Company Vault: $COMPANY_VAULT (or "Not configured")
- Read-only access
Claude Data:
- Read access to session transcripts and plans
Bash Commands:
- ls (directory listing)
- git status/diff/log (read-only git operations)
Total permissions added: X
Note: Read-only access. Use `/vault permissions full` for write access.
IMPORTANT: Restart Claude Code for permissions to take effect.
permissions full: Configure full read/write permissionsConfigure full read/write/edit permissions for vault skills.
Read vault locations and structures.
Personal vault - full Read/Write/Edit access:
(Use // prefix for absolute paths - NOT single /)
Read(//$OBSIDIAN_VAULT/**)
Edit(//$OBSIDIAN_VAULT/**)
Write(//$OBSIDIAN_VAULT/**)
Company vault - full Read/Write/Edit access (if configured):
Read(//$COMPANY_VAULT/**)
Edit(//$COMPANY_VAULT/**)
Write(//$COMPANY_VAULT/**)
Claude data (for devlog):
Read(~/.claude/projects/**/*.jsonl)
Read(~/.claude/plans/**)
Bash commands for vault operations:
(Use command:* format - the colon creates a word boundary for prefix matching)
Bash(grep:*)
Bash(ls:*)
Bash(mkdir:*)
Bash(cp:*)
Bash(head:*)
Bash(tail:*)
Bash(cat:*)
Bash(sort:*)
Bash(wc:*)
Bash(echo:*)
Bash(git status:*)
Bash(git diff:*)
Bash(git add:*)
Bash(git commit:*)
Bash(git log:*)
Same as safe mode.
Vault Permissions Configured (FULL MODE)
Personal Vault: $OBSIDIAN_VAULT
- Full Read/Write/Edit access
Company Vault: $COMPANY_VAULT (or "Not configured")
- Full Read/Write/Edit access
Claude Data:
- Read access to session transcripts and plans
Bash Commands:
- grep, ls, mkdir, cp (file operations)
- head, tail, cat, sort, wc (file reading)
- echo (output)
- git status/diff/add/commit/log (git operations)
Total permissions added: X
Note: Full write access enabled. Use `/vault permissions safe` to restrict to read-only.
IMPORTANT: Restart Claude Code for permissions to take effect.
//path = Absolute path from filesystem root (use this for vault paths)~/path = Path from home directory/path = Path relative to settings file (NOT absolute!)If creating a new vault-config.yaml, use:
# Vault Structure Configuration
daily_notes: "Daily Notes"
projects: "Projects"
notes: "Notes"
references: "References"
clippings: "Clippings"
processed: "Processed"
processed_coding: "Processed/Coding"
prototypes: "Processed/Prototypes"
style_guide_file: "Style Guide.md"
categories_file: "Categories.md"
After the user restarts Claude Code, they can verify by:
ls should work without permission promptsgit status should work without permission promptscat, grep, mkdir should prompt for permission (not pre-approved)/vault:devlog - should complete without permission prompts/vault:stylize Notes/ - should complete without permission promptsnpx claudepluginhub baehenrys/personal-toolkit --plugin vaultImplements RBAC for shared Obsidian vaults via .obsidian-permissions files and TypeScript plugins enforcing file read/write access.
Provides foundational Obsidian vault context including path, CLI commands, and PARA rules. Loads automatically when the user references their vault, notes, or personal knowledge system.
Handles Obsidian vault mechanics: detects vaults via .obsidian/, parses wiki links, configs for daily notes/templates/plugins, CLAUDE.md routing. Use for Obsidian vaults or structured markdown.