Skip to content
Skill Authoring
Skill

/obsidian-vault

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.

BOOST
From plugin
pi
12238 skills5 agents
Install
$ npx -y skills add espennilsen/pi --skill obsidian-vault --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/obsidian-vault

Context preview

The summary Claude sees to decide when to auto-load this skill.

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.

SKILL.md

obsidian-vault.SKILL.md
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

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)

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)

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)

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)

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

# 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)

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)

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

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

curl -s -X DELETE "http://localhost:27223/vault/PATH.md" \
  -H "Authorization: Bearer $OBSIDIAN_API_KEY"

Get periodic notes (daily/weekly/monthly)

# 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:

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
Read more
Ships withpi

This repository is my Pi coding agent home directory. I keep it under version control and symlink it to ~/.pi/agent so Pi loads configuration, extensions, skills, and runtime state from here.

Get the whole plugin

Other skills on pi.