Coherent Obsidian Skills · 01

Folders organize bytes. Frontmatter organizes meaning.

Your Obsidian vault is full of notes Claude can't reliably find. Add a 4-line YAML block to every note that turns your vault into a typed knowledge graph Claude can reason about — using two free upstream patterns and zero new tools.

11 slides · ~5 min read · ~10 min install Obsidian + Claude Code + (optional) local-brain macOS · Windows · Linux
Outcome

Three artifacts. One coherent vault.

By the end you have a vault that's organized for both human eyes and machine queries — and a kit you can drop into the next vault you build.

A skill

obsidian-power-user in your .claude/skills/. Claude now knows every Obsidian feature — Templates, Bases, Dataview, Canvas, plugin lore.

A frontmatter graph

Every note declares categories: [[Project]]. Wikilinks-in-YAML become typed graph edges Obsidian renders and indexers parse without NLP.

A repeatable kit

Six templates, six category index stubs, one conventions doc. Drop into any vault — yours, a teammate's, the next one you spin up.

Why both, together
The skill teaches Claude how Obsidian works. The graph teaches your vault how to be queried. Either alone is half the loop.
Before you start

What you need on hand.

  1. Obsidian, on any vault. If you don't have a vault yet, the previous tutorial (Give Obsidian a Memory) sets one up end-to-end with local-brain wired in.
  2. Claude Code, in a project repo. Anywhere a .claude/skills/ directory makes sense. The skill applies repo-wide.
  3. (Optional) local-brain. If you want semantic search over the new graph, install local-brain. The graph still works in plain Obsidian without it.
  4. ~10 minutes. Install: 60 seconds. Drop the kit: 30 seconds. Backfill existing project notes: ~2 minutes per project. Verify: 1 minute.
Step 01

Install the Obsidian Power-User skill.

Two folders, lifted from Sleestk/Skills-Pipeline. No installer, no manifest — just a copy.

Terminal
git clone --depth 1 https://github.com/Sleestk/Skills-Pipeline.git /tmp/skills-pipeline
cp -R /tmp/skills-pipeline/Obsidian/obsidian-power-user .claude/skills/obsidian-power-user
cp -R /tmp/skills-pipeline/SaaS/stripe-developer       .claude/skills/stripe-developer  # optional
Verify
Open a fresh Claude Code session in your project. Ask "what skills do you have available?" — obsidian-power-user should appear with its description string. That's the proof it loaded.

Stripe is optional — pull it if you're shipping payments. The Obsidian skill is the one that pairs with the kit on the next slide.

Track the source
Drop a .claude/skills/README.md recording the upstream URL and SHA so the next refresh is mechanical, not archaeology.
Step 02

Drop the kit into your vault.

The kit is six templates, six category index stubs, and one conventions doc. Total: 13 small markdown files. Nothing else.

vault-scaffolding/ ├── _CONVENTIONS.md ← The two laws + properties cheat sheet ├── Templates/ │ ├── Note Template.md ← Generic evergreen │ ├── Project Template.md ← Working initiative │ ├── Person Template.md ← Specific person │ ├── Reference Template.md ← External entity │ ├── Decision Template.md ← Captured choice │ └── Daily Template.md ← Daily journal note └── Categories/ ├── Project.md People.md ├── Reference.md Decision.md └── Evergreen.md Daily.md

Install

  1. Drag _CONVENTIONS.md, Templates/, Categories/ into your vault root.
  2. Settings → Core plugins → Templates → on; folder location Templates.
  3. (Optional) Settings → Core plugins → Daily notes → point at Templates/Daily Template.md.

What's NOT touched

  • Your existing folder structure
  • Existing notes (no mass migration)
  • Your .obsidian/ plugin list
  • Any shortcut files at vault root
Step 03

The two laws of frontmatter graphs.

Borrowed from kepano's vault. Two rules. No exceptions for new notes. Existing notes upgrade on touch.

Law 01

Every note declares categories.

One or more wikilinks pointing to a Categories/<Type>.md index file. Required field. No exceptions.

---
categories: ["[[Project]]"]
---
Law 02

Typed relations are wikilinks, not strings.

Author? author: ["[[Steph Ango]]"]. Topic? topics: ["[[Knowledge graphs]]"]. Org? org: ["[[Anthropic]]"]. Never plain text.

---
categories: ["[[Reference]]"]
author: ["[[Kepano]]"]
topics: ["[[PKM]]", "[[Bottom-up]]"]
---
Why this is gold for AI
Wikilinks-in-YAML are valid YAML and valid graph edges. The Obsidian graph view reads them. Bases queries read them. local-brain's parser reads them — preserved verbatim as "frontmatter": {"categories": ["[[Project]]"]} in the Qdrant payload. One source of truth, zero NLP, three readers.
Step 04

Backfill on touch. Don't migrate.

A mass-migration script gives up halfway. The lazy-but-correct path: add categories: to a note next time you open it. Two weeks in, your graph fills itself.

Before

---
project: "Team-Dashboard"
type: readme
tags: []
---

# Project Overview

After

---
project: "Team-Dashboard"
type: readme
categories: ["[[Project]]"]
tags: []
---

# Project Overview
High-leverage one-time pass
For project notes specifically — open every Projects/<slug>/README.md + infrastructure.md once and add the line. Mechanical, ~10 seconds per project. Pays for itself the first time you ask Claude "what's categorized as a Project?"

For everything else: backfill on next edit. The convention compounds — fast notes stay fast, important notes get the field organically.

Step 05

Re-index. Ask.

If you're running local-brain, this is the proof step. The new categories: field should land in Qdrant as a structured payload, not a text blob.

Terminal · in your team-dashboard repo or any project with local-brain
/sync                    # re-index both vaults via local-brain
/ask "what's categorized as a Project?"

The reply should cite your backfilled README files. If it does — the graph is live. If it doesn't, your indexer is treating frontmatter as plain text. That's an upgrade target for the indexer, not a blocker for the convention.

Without local-brain
You still get the Obsidian graph view, Bases queries, Dataview, and a typed schema for any future indexer. The convention is decoupled from the tool.
Visual confirm in Obsidian
Open any backfilled note. The Properties panel at top shows categories: Project × as a clickable orange chip. Click it → Obsidian opens Categories/Project.md. Open the graph view → category is now an edge. That's the loop.
Series

This is episode 01 of Coherent Obsidian Skills.

A series of small, focused skills + conventions that sharpen the loop between Claude and Obsidian. Each episode ships a skill, a vault pattern, and a tutorial like this one.

Coherent Obsidian Skills ├── 01 · Give Claude an Organized Brain ← you are here ├── 02 · TBD — published as the series ships └── 03 · TBD — published as the series ships

Where the source lives

Public mirror per episode under github.com/Coherence-Daddy. MIT-licensed. Includes the slide deck HTML and a copy-paste prompt.

Where the live tutorials live

Always at coherencedaddy.com/tutorials. Subdirectory, not subdomain. Slugs are locked at publish.

Hand off the work

Drop this prompt into Claude. Watch the kit land itself.

If you'd rather have Claude do the cloning, copying, and backfilling — paste this and it takes the wheel.

Copy-paste prompt
You are my Coherent Obsidian Skills · 01 setup operator. Goal: install the
obsidian-power-user skill into my Claude Code project, drop the kepano-style
vault scaffolding kit into my Obsidian vault, and backfill categories: [[Project]]
on every existing project note. Do 95% of the work yourself.

Steps you own:
1. Clone https://github.com/Sleestk/Skills-Pipeline.git to /tmp/skills-pipeline.
2. Copy Obsidian/obsidian-power-user into <repo>/.claude/skills/obsidian-power-user.
3. Write <repo>/.claude/skills/README.md recording source URL + SHA.
4. Clone or copy the vault-scaffolding kit (templates + categories + _CONVENTIONS.md).
5. Drop the kit into my vault root (ask me which vault if multiple).
6. Set .obsidian/templates.json to {"folder": "Templates"} so the Templates plugin uses it.
7. For every Projects/<slug>/README.md and infrastructure.md, insert
   `categories: ["[[Project]]"]` into the YAML frontmatter. Files without
   frontmatter get a fresh block prepended.
8. If local-brain is configured, run /sync and report indexed count.
9. Tell me what changed and what's left for me to verify visually in Obsidian.

Rules:
- Render a checklist as your first reply. Update it after every step.
- Never run mass-migrate scripts on existing non-project notes — additive only.
- Never touch shortcut files at vault root (anything starting with an emoji
  or with `type: shortcut` in frontmatter).
- One step at a time. Confirm, advance.

Start by asking my OS, my project repo path, and my Obsidian vault path.
Download .md
If Claude can't reach your vault
Some sandboxed sessions can't write to ~/Documents/. In that case, Claude stages the kit in your repo at vault-scaffolding/ and you drag it into the vault yourself. Same end state, same tutorial.
Episode 01 · Done

Your vault is queryable.

Folders are still buckets. But now your notes carry meaning Claude can read. Every categories: chip is a graph edge, an indexer payload, and a future-Bases query — written once, read three ways.