How I Use Obsidian

Aug 23, 2025

Inspired by How I use Obsidian.

My system is oriented towards speed, security and reliability. I don’t want the overhead of having to consider where something should go. I want to use secure, well-supported software that I can rely on a decade from now.

Personal rules

Rules I follow in my personal vault:

  • Use the bare minimum set of plugins – each new plugin introduces security, reliability and UI issues.
  • Instead of plugins, write small, understandable programs if possible. Store them in /Scripts.
  • Avoid splitting content into multiple vaults.
  • Minimal folders for organization.
  • Avoid non-standard Markdown.
  • Always pluralize categories and tags.
  • Use YAML tags for durable metadata; use inline #tags for in-note semantics. My Tags documents the tags that are allowed to be used inline, enforced via /Scripts/cleanup_life_lab.py
  • Use internal links profusely.
  • Use YYYY-MM-DD dates everywhere.
  • Use the 7-point scale for ratings.

Most of my notes are in the root of the vault, not a folder.

A few reference folders I use:

  • Experiments
  • Goals
  • Reviews

Three admin folders exist so that their contents don’t show up in the file navigation:

  • Attachments for images, audio, videos, PDFs, etc.
  • Daily for my daily notes, all named YYYY-MM-DD.md. This also contains Unique Notes.
  • Templates for templates.

Other utility folders:

  • Bases
  • Readwise
  • Scripts

Claude / AI

I use Claude Code extensively with my Vault. More on this later.

Plugins

  • Readwise
  • Minimal Theme Settings for Kepano’s Minimal Theme
  • Calendar

Formatting

./format.sh uses prettier to format all Markdown files in the Vault.

Ïone liner: cd ~/meditations && ./Scripts/format.sh --skip-dirs Readwise,Scripts,node_modules,.git,.obsidian,.claude --km

Blogging

I use a simple script Scripts/blog_sync.py to sync select notes into My Vercel Blog. This syncs all notes tagged with #blog and uses the blog-sync property in frontmatter to specify the destination filepath. It also does some minor things like preserving existing frontmatter at the destination while updating content, and stripped out Obsidian-specific syntax during sync.