Obsidian Notetaker
Environment
The Obsidian vault lives at /media/psf/Home/obsidian/ (a macOS Parallels shared
folder). It is a git repository — commit and push changes when asked to save or sync.
VAULT=/media/psf/Home/obsidian
The ob CLI (~/.config/bin/ob) opens notes interactively in nvim. For
non-interactive agent use, operate directly on vault files with standard shell tools.
Workflow Decision Tree
Finding a note? → Use find + grep/rg (see Finding Notes)
Creating a new note? → Write file with frontmatter + commit (see Creating Notes)
Editing an existing note? → Read → edit → commit (see Editing Notes)
Updating _todo.md? → Read file, apply checkbox changes, write back (see TODOs)
Syncing/committing? → See Committing & Syncing
Finding Notes
VAULT=/media/psf/Home/obsidian
# List all notes
find "$VAULT" -name "*.md" -not -path "*/.git/*" | sort
# Fuzzy search by filename
find "$VAULT" -name "*keyword*" -not -path "*/.git/*"
# Full-text search
rg -l "search term" "$VAULT" --glob "*.md" --ignore-file <(echo ".git")
# Show matching lines with context
rg -n "search term" "$VAULT" --glob "*.md" -g "!.git"
Creating Notes
New notes use YAML frontmatter. Match existing style:
---
id: Note Title
aliases:
- Note Title
tags:
- tag1
- tag2
created: 2026-03-27T10:00
---
# Note Title
Content here.
Create the file, then commit:
VAULT=/media/psf/Home/obsidian
# Create parent dirs if needed
mkdir -p "$VAULT/Tech/AI"
# Write note (use write tool or heredoc)
# Then commit
git -C "$VAULT" add .
git -C "$VAULT" commit -m "docs: add note - Note Title"
Naming: Use descriptive kebab-case filenames or natural names matching the id field.
Location: Match the topic to existing vault folders (Tech/, Work/, notes/, ideas/, etc).
Editing Notes
- Read the file with the
readtool. - Make edits with the
edittool (preserve frontmatter exactly). - Update
modified:timestamp in frontmatter if it exists. - Commit.
TODO Lists
The vault has two main TODO files:
$VAULT/_todo.md— personal todos$VAULT/Work/_todo.md— work todos
Checking off a task
Find the line, change - [ ] to - [x]:
# Preview the task
grep -n "task description" /media/psf/Home/obsidian/_todo.md
Then use the edit tool to change - [ ] task description → - [x] task description.
Adding a task
Append to the active task list (before the - [x] completed section):
# Check current structure
grep -n "^\- \[" /media/psf/Home/obsidian/_todo.md | head -20
Use the edit tool to insert - [ ] new task at the right position.
Adding to Incoming.md
$VAULT/Incoming.md is the capture inbox for unprocessed resources and ideas.
Append new items under the relevant ## section or at the top of ## 📚 Pending Resources.
Committing & Syncing
VAULT=/media/psf/Home/obsidian
# Check what's changed
git -C "$VAULT" status --short
# Stage and commit
git -C "$VAULT" add .
git -C "$VAULT" commit -m "docs: <description of changes>"
# Sync (pull then push)
git -C "$VAULT" pull --rebase && git -C "$VAULT" push
Commit message conventions:
- New notes:
docs: add note - <title> - Edits:
docs: update <filename> - TODOs:
chore: update _todo.md - Bulk captures:
chore: capture inbox items - Auto-style WIP:
WIP: <description>
Vault Structure
obsidian/
├── _todo.md Personal TODO list
├── Incoming.md Capture inbox (unprocessed resources)
├── Agile/ Agile / lean engineering notes
├── Books/ Book notes
├── DevOps/ DevOps topics
├── ideas/ Speculative / brainstorming notes
├── notes/
│ ├── dailies/ Daily notes
│ ├── meetings/ Meeting notes
│ └── weeks/ Weekly reviews
├── Personal/ Personal notes
├── Projects/ Project notes
├── Scratch/ Scratch / drafts
├── Work/ Work notes
│ └── _todo.md Work TODO list
└── Tech/ Technology notes
└── AI/ AI-specific notes