Use when session starts with CLAUDE.local.md containing Vault project field - automatically loads vault index, enables dual-location routing (vault + local docs), style adaptation, and cross-location linking with GitHub URLs for Obsidian project documentation
Automatically loads Obsidian vault project index when CLAUDE.local.md contains a Vault project field, enabling dual-location routing between vault (exploratory docs) and local docs (implementation docs). Claude uses this to intelligently route documents based on type, adapt to existing style conventions, and create cross-location GitHub links for unified project documentation.
/plugin marketplace add fnichol/claude-code-plugins/plugin install obsidian@fnichol-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
CLAUDE.local.md integration for Obsidian vaults. Automatically detects project configuration at session start, loads vault documentation index silently, and enables intelligent routing between vault (exploratory docs) and local repository (implementation docs).
Requires: The vault skill for basic Obsidian vault operations (CRUD, inbox, promotion, validation).
CLAUDE.local.md detection: Check for CLAUDE.local.md in working directory at session start.
Parse configuration fields:
Vault project: \project-name`` - Links working directory to vault projectLocal docs: ./path - Optional local documentation directoryDocumentation style: standard - Optional style overrideConfiguration precedence:
~/Obsidian/vault, no local docsExample CLAUDE.local.md:
# Obsidian Project
Vault project: `my-project-name`
Local docs: `./docs`
Documentation style: standard
Session context: Store parsed values in memory for the session:
project_name - from Vault project fieldlocal_docs_path - from Local docs field (optional)doc_style - from Documentation style field (optional, default: adapt)When CLAUDE.local.md contains Vault project: reference:
Trigger: Session starts in directory with CLAUDE.local.md containing Vault project field
Process:
Vault project: \name``~ to home directory in vault path<vault-path>/projects/<project-name>/.md files in project foldertype: field (brainstorm, design, plan, notes, retrospective)status: field (planning, active, paused, completed, archived)Silent Success:
Visible Warnings:
<path> not found. Check Primary vault in ~/.claude/CLAUDE.md"<name> not found - will create on first save"<name> at <path> - permission denied"If Local docs: configured:
<path> not found. Create it or update CLAUDE.local.md"Session Ready: After startup, Claude knows:
Determine target location for document operations:
When creating document:
If user explicitly specifies location:
Use specified location
Else if Local docs configured:
If document type in [design, plan]:
→ Local docs directory
Else:
→ Vault project
Else:
→ Vault project (default)
Implementation docs (go to local when Local docs configured):
design - Architecture and technical designplan - Implementation tasks and roadmapsExploratory docs (always go to vault):
brainstorm - Initial idea explorationnotes - Working notes and observationsretrospective - Post-completion reflectionsExplicit overrides (user specifies location):
Natural routing (no location specified):
Vault documents:
YYYY-MM-DD-descriptive-name.md (lowercase, hyphens)[[filename]]updated: YYYY-MM-DD to frontmatterLocal documents:
architecture.md)[text](./file.md)When Local docs: configured, enable operations in local directory:
Detect existing project style (default behavior):
Override with standard template:
Documentation style: standard in CLAUDE.local.mdFallback to standard:
Purpose: Create portable links from vault docs to local docs
Detection process:
.git/config in working directory[remote "..."] sections with url containing github.comorg/repo from URL patterns:
https://github.com/org/repo.gitgit@github.com:org/repo.git.git/refs/remotes/origin/HEADmain or masterLink construction:
https://github.com/<org>/<repo>/blob/<branch>/docs/<filename>.md
When to skip linking:
Multiple remotes:
origin if presentProcess for local doc creation:
Step 1: Determine filename
architecture.md, api-design.md, database-schema.mdStep 2: Detect related vault docs
Step 3: Create document
Step 4: Add Related Documents section
[Architecture](./architecture.md)## Related Documents
- [API Design](./api-design.md) - REST API specification
- [Initial Brainstorm](https://github.com/org/repo/blob/main/docs/brainstorm.md) - Early ideas
Step 5: Confirm creation
docs/design.md matching project style"Process:
docs/architecture.md"Combine with vault search:
List all docs:
[vault] or [local]These operations extend the vault skill with dual-location awareness:
Check for project linking:
Vault project: → use that project name as suggestionApply location resolution:
Generate filename:
YYYY-MM-DD-<type>.md<type>.md## Related Documents section with links:
[[YYYY-MM-DD-filename]][Title](./filename.md)Output:
Active Projects:
- obsidian-integration (3 vault docs, 2 local docs) [*linked]
Planning:
- another-project (1 vault doc)
[*linked] = configured in CLAUDE.local.md
Output:
obsidian-integration (status: active):
Vault documents:
- 2025-11-07-initial-brainstorm.md (brainstorm)
- 2025-11-10-retrospective.md (retrospective)
Local documents:
- architecture.md (design)
- implementation-plan.md (plan)
CLAUDE.local.md missing vault project:
Vault project: fieldInvalid project name format:
my-project-name"Both CLAUDE.md and CLAUDE.local.md specify project:
Vault path doesn't exist:
<path> not found. Check 'Primary vault:' in ~/.claude/CLAUDE.md"Vault project doesn't exist:
<name> not found - will create on first save"Permission denied reading vault:
<name> at <path> - permission denied"Local docs directory missing:
Local docs: ./docs configured but doesn't exist./docs not found. Create it or update CLAUDE.local.md"Ambiguous document reference:
Cannot write to location:
<path> - permission denied. Try local docs instead?"<path> - permission denied. Try vault instead?"GitHub remote detection fails:
origin or first foundStyle adaptation fails:
./docs, using standard template"| Problem | Solution |
|---|---|
| CLAUDE.local.md not detected | Verify file exists in working directory (not subdirectory) |
| Local docs path incorrect | Check path is relative to working directory (e.g., ./docs not ~/docs) |
| Vault project name mismatch | Verify CLAUDE.local.md project name matches vault folder name |
| Both locations have same doc | Ask user to disambiguate: "vault design" or "local design" |
| GitHub URLs not working | Check remote is github.com (not GitLab, Bitbucket) |
| Style detection wrong | Override with Documentation style: standard in CLAUDE.local.md |
| Existing pattern conflicts | CLAUDE.local.md config > existing patterns. Design docs in vault when Local docs configured = misplaced. |
Setup CLAUDE.local.md:
# Obsidian Project
Vault project: `obsidian-integration`
Session Start:
User: "Create a design doc"
Claude: Creates ~/Obsidian/vault/projects/obsidian-integration/2025-11-15-design.md with frontmatter
User: "Save this brainstorm"
Claude: Creates ~/Obsidian/vault/projects/obsidian-integration/2025-11-15-brainstorm.md
Result: All docs in vault, full frontmatter tracking
Setup CLAUDE.local.md:
# Obsidian Project
Vault project: `api-refactoring`
Local docs: `./docs`
Session Start:
./docs existsUser: "Create a design doc" Claude:
./docs to detect style./docs/architecture.md matching detected styleUser: "Save this brainstorm" Claude:
~/Obsidian/vault/projects/api-refactoring/2025-11-15-brainstorm.mdUser: "List all project docs" Claude:
api-refactoring (status: active):
Vault documents:
- 2025-11-07-initial-brainstorm.md (brainstorm)
- 2025-11-10-retrospective.md (retrospective)
Local documents:
- architecture.md (design)
- api-design.md (design)
Result: Implementation docs version-controlled with code, exploratory docs in vault
Setup:
Vault project: my-app, Local docs: ./docsgithub.com/org/my-appUser: "Create a design doc that references the initial brainstorm" Claude:
./docs/architecture.md (local, implementation doc)2025-11-07-initial-brainstorm.md in vault## Related Documents
- [Initial Brainstorm](https://github.com/org/my-app/blob/main/docs/2025-11-07-initial-brainstorm.md) - Early exploration
Result: Portable bidirectional links that work across machines
Setup:
Vault project: legacy-app, Local docs: ./documentationApiDesign.md, DatabaseSchema.mdUser: "Create a design doc for the authentication system" Claude:
./documentation/AuthenticationDesign.md matching detected patternUser: Later decides to standardize: adds Documentation style: standard to CLAUDE.local.md
User: "Create a deployment plan" Claude:
./documentation/deployment-plan.md using standard kebab-caseResult: Can adapt to existing conventions or enforce standards
| Operation | Result |
|---|---|
| Link project | Silent index load + dual location awareness |
| Add design (local) | docs/design.md (adapted style) |
| Add brainstorm (vault) | projects/<name>/YYYY-MM-DD-brainstorm.md |
| Show all docs | Combined vault + local listing |
| Cross-location link | GitHub URL: https://github.com/org/repo/blob/main/... |
Benefits:
Create employment contracts, offer letters, and HR policy documents following legal best practices. Use when drafting employment agreements, creating HR policies, or standardizing employment documentation.
Implement GDPR-compliant data handling with consent management, data subject rights, and privacy by design. Use when building systems that process EU personal data, implementing privacy controls, or conducting GDPR compliance reviews.