Back to skills
SKILL.md
Obsidian Vault
ASecurityRead, create, and update notes in Espen's Obsidian vault (PARA method). Use when asked about notes, tasks, projects, dashboards, daily logs, or anything in the vault.
- 119 stars
- 0 votes
- 0 copies
- 5 views
- Added September 12, 2026
Works with
Security analysis
100/100npx -y skills add espennilsen/pi --skill obsidian-vault --agent claude-codeAre you the author of Obsidian Vault?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/espennilsen-obsidian-vault)---
name: obsidian-vault
description: Read, create, and update notes in Espen's Obsidian vault (PARA method). Use when asked about notes, tasks, projects, dashboards, daily logs, or anything in the vault.
---
# Obsidian Vault Management
## Vault Location
```
/Users/espen/Library/CloudStorage/OneDrive-Espennilsen.net/2-Areas/Digital_Life/Obsidian/e9n
```
## β οΈ Safety
**Always confirm with Espen before creating, modifying, or deleting any vault file.**
The vault has established automation (Dataview queries, Templater templates, dashboards). Breaking these patterns can cascade.
## Before Making Changes
1. Read the vault's own `AGENTS.md` for full context on structure, plugins, workflows, and conventions
2. Read the relevant `_Index.md` file for the section you're working in
3. Check the `π·οΈ Tag Taxonomy.md` for correct tag usage
## Structure (PARA)
```
1. Projects/ β Active initiatives with deadlines
2. Areas/ β Ongoing responsibilities (Education, Finance, Health, Personal Dev, Romance)
3. Resources/ β Reference materials (AI, Books, Career, Homelab, Languages, Programming)
4. Archive/ β Completed or inactive items
Notes/ β Daily/Weekly/Monthly notes with habit tracking
Tasks/ β TaskNotes (one task per note)
Templates/ β 23+ Templater templates
Weekly Reviews/ β Periodic reflections
```
## Conventions
- **Frontmatter** is required on all notes: `created`, `modified`, `type`, `tags` at minimum
- **Tags** follow the taxonomy: `#project/active`, `#type/note`, `#status/active`, `#priority/high`, `#area/professional`
- **File naming**: Use descriptive names. TaskNotes use format: `Project - Task Description.md`
- **Templates**: Always use existing templates rather than creating notes from scratch. Check `Templates/` first.
- **Links**: Use `[[wiki-links]]` for internal references
- **Dataview**: Many notes contain Dataview queries. Don't break the query syntax when editing.
## Obsidian Local REST API
The vault has the **Local REST API** plugin (v3.4.3) running. Prefer this over direct filesystem access β it respects Obsidian's internal state, caches, and metadata.
```
Base URL: http://localhost:27223
API Key: d4fc944e64f535df05b34c2e8596c4e3eaffc6dfd5b5ee15e76789a4ab96698a
Auth: Authorization: Bearer <key>
```
### Common Operations
#### List files in a directory
```bash
curl -s "http://localhost:27223/vault/" -H "Authorization: Bearer $OBSIDIAN_API_KEY"
curl -s "http://localhost:27223/vault/1.%20Projects/" -H "Authorization: Bearer $OBSIDIAN_API_KEY"
```
#### Read a note (markdown)
```bash
curl -s "http://localhost:27223/vault/PATH.md" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Accept: text/markdown"
```
#### Read a note (JSON with metadata, tags, frontmatter)
```bash
curl -s "http://localhost:27223/vault/PATH.md" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Accept: application/vnd.olrapi.note+json"
```
#### Simple text search (β οΈ POST, not GET)
```bash
curl -s -X POST "http://localhost:27223/search/simple/?query=TERM&contextLength=100" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY"
```
Returns: `[{ filename, score, matches: [{ match: {start, end}, context }] }]`
#### Dataview DQL search (POST)
```bash
curl -s -X POST "http://localhost:27223/search/" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Content-Type: application/vnd.olrapi.dataview.dql+txt" \
-d 'TABLE file.ctime AS "Created" FROM "1. Projects" WHERE status = "active" LIMIT 10'
```
#### JsonLogic search (POST) β find by frontmatter/tags
```bash
# Find notes with a specific tag
curl -s -X POST "http://localhost:27223/search/" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Content-Type: application/vnd.olrapi.jsonlogic+json" \
-d '{"in": ["project/active", {"var": "tags"}]}'
```
#### Create or update a note (PUT)
```bash
curl -s -X PUT "http://localhost:27223/vault/PATH.md" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Content-Type: text/markdown" \
-d '---
created: 2026-02-09
type: note
tags: [type/note]
---
# Title
Content here'
```
#### Append to a note (POST)
```bash
curl -s -X POST "http://localhost:27223/vault/PATH.md" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Content-Type: text/markdown" \
-d 'Content to append'
```
#### Patch a note (PATCH) β insert relative to heading/block/frontmatter
```bash
curl -s -X PATCH "http://localhost:27223/vault/PATH.md" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Content-Type: text/markdown" \
-H "Operation: append" \
-H "Target-Type: heading" \
-H "Target: Heading 1::Subheading" \
-d 'New content under this heading'
```
#### Delete a note
```bash
curl -s -X DELETE "http://localhost:27223/vault/PATH.md" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY"
```
#### Get periodic notes (daily/weekly/monthly)
```bash
# Current daily note
curl -s "http://localhost:27223/periodic/daily/" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Accept: text/markdown"
# Specific date
curl -s "http://localhost:27223/periodic/daily/2026/2/9/" \
-H "Authorization: Bearer $OBSIDIAN_API_KEY" \
-H "Accept: text/markdown"
```
### Filesystem Fallback
If the REST API is down, fall back to direct file access:
```bash
VAULT="/Users/espen/Library/CloudStorage/OneDrive-Espennilsen.net/2-Areas/Digital_Life/Obsidian/e9n"
# Read a note
cat "$VAULT/PATH.md"
# Find by name
find "$VAULT" -name "*.md" | grep -i "search term"
# Find by content
grep -rl "search term" "$VAULT" --include="*.md"
# Recent daily notes
ls -lt "$VAULT/Notes/Daily/" | head -10
```
Attribution
Comments
Loading commentsβ¦