doc-obsidian
Original:🇺🇸 English
Translated
Obsidian vault management combining qmd (search) and notesmd-cli (CRUD). No Obsidian app needed. Use for: (1) searching notes with keyword, semantic, or hybrid search, (2) creating/editing/moving/deleting notes, (3) daily journaling, (4) frontmatter management, (5) backlink discovery, (6) AI agent memory workflows, (7) vault automation and scripting. Triggers: obsidian vault, obsidian notes, vault search, note management, daily notes, agent memory, knowledge base, markdown vault.
3installs
Added on
NPX Install
npx skill4agent add molechowski/claude-skills doc-obsidianTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Obsidian Vault Management
Unified vault operations using two CLI tools. No Obsidian app required.
| Tool | Role | Install |
|---|---|---|
| doc-qmd | Search (keyword, semantic, hybrid) | |
| doc-notesmd | CRUD, move, frontmatter, daily notes, backlinks | |
Setup
First-Time Setup
bash
# 1. Set default vault for notesmd-cli
notesmd-cli set-default "VaultName"
# 2. Index vault in qmd
qmd collection add ~/path/to/vault --name vault --mask "**/*.md"
qmd embed # generate vector embeddings for semantic searchVerify
bash
notesmd-cli print-default # shows vault name + path
qmd status # shows indexed docs + embedding statusKeep Index Fresh
bash
qmd update # re-index changed files
qmd embed # embed new/changed docsTool Selection
| Task | Tool | Command |
|---|---|---|
| Search by keyword | qmd | |
| Search by meaning | qmd | |
| Best search quality | qmd | |
| Create note | notesmd-cli | |
| Append to note | notesmd-cli | |
| Read note | notesmd-cli | |
| Partial edit | notesmd-cli + Edit | Read with |
| Move/rename | notesmd-cli | |
| Delete note | notesmd-cli | |
| Daily note | notesmd-cli | |
| Frontmatter | notesmd-cli | |
| Backlinks | notesmd-cli | |
| List files | notesmd-cli | |
| Recently modified | qmd | |
| Get document | qmd | |
| Batch retrieve | qmd | |
Search Workflows
Quick Lookup (keyword)
bash
qmd search "authentication" -n 10
qmd search "authentication" --json # structured output
qmd search "authentication" --md # markdown for LLM contextConceptual Search (semantic)
bash
qmd vsearch "how do we handle user sessions"
qmd vsearch "error recovery patterns" --json -n 5Deep Search (hybrid -- best quality)
bash
qmd query "what decisions did we make about the API design?"
qmd query "deployment strategy" --full # full document contentSearch + Read Pattern
bash
# Find relevant notes, then read full content
qmd search "auth" --json -n 3 # find candidates
notesmd-cli print "auth-design" # read the one you needNote CRUD
Create
bash
notesmd-cli create "project/meeting-notes" --content "# Meeting\n\n## Agenda\n"
notesmd-cli create "inbox" --content "\n- New thought" --append
notesmd-cli create "scratch" --content "Replaced" --overwrite--append--overwriteContent supports escape sequences: , , , , , .
\n\t\r\\\"\'Read
bash
notesmd-cli print "architecture" # raw content to stdout
notesmd-cli print "architecture" --mentions # with backlinks appended
qmd get vault/architecture.md # via qmd (by indexed path)Move/Rename (with link updates)
bash
notesmd-cli move "drafts/post" "published/post"All and across the vault are updated automatically.
[[wikilinks]][markdown](links)Partial Edit (surgical updates)
notesmd-cli has no partial edit — only and . For surgical changes (replace a section, update a table row, fix a line), use this workflow:
--append--overwritebash
# 1. Get vault path
VAULT=$(notesmd-cli print-default --path-only)
# 2. Read the note
notesmd-cli print "note-name"
# 3. Edit in place using the Edit tool with the full file path:
# "$VAULT/path/to/note.md"Rules:
- ALWAYS read with first — never guess content
notesmd-cli print - ALWAYS resolve the vault path via
notesmd-cli print-default --path-only - NEVER hardcode the vault path
- Use the tool for targeted string replacement, not
Editorsedawk - For full rewrites, prefer instead
notesmd-cli create --overwrite
Delete
bash
notesmd-cli delete "scratch-note" # permanent, no undoDoes NOT update links in other files referencing the deleted note.
Daily Notes
bash
notesmd-cli daily # create/open today's note
notesmd-cli daily --editor # open in $EDITORReads for folder, date format (Moment.js), and template. Template content is applied only when creating a new note.
.obsidian/daily-notes.jsonAppend to Daily Note
bash
DATE=$(date '+%Y-%m-%d')
notesmd-cli create "$DATE" --content "\n- $(date '+%H:%M') Task completed" --appendTemplates
notesmd-cli does not have a flag. Templates are plain markdown files stored in — create them once, reuse via .
--templatemeta/templates/cpCreate Templates
bash
notesmd-cli create "meta/templates/meeting" --content "# Meeting Notes\n\n**Date:** \n**Attendees:** \n\n## Agenda\n\n## Discussion\n\n## Action Items\n\n- [ ] "
notesmd-cli create "meta/templates/project" --content "# Project Name\n\n## Overview\n\n## Goals\n\n## Timeline\n\n## Status\n"
notesmd-cli create "meta/templates/decision" --content "# Decision: \n\n## Context\n\n## Options\n\n## Decision\n\n## Rationale\n\n## Consequences\n"Create Note from Template
bash
VAULT=$(notesmd-cli print-default --path-only)
cp "$VAULT/meta/templates/meeting.md" "$VAULT/meetings/$(date +%Y-%m-%d).md"Daily note templates are handled automatically — configure in with a field pointing to the template note path.
.obsidian/daily-notes.jsontemplateFrontmatter
bash
notesmd-cli fm "note" --print
notesmd-cli fm "note" --edit --key "status" --value "done"
notesmd-cli fm "note" --edit --key "tags" --value "[cli,tools]"
notesmd-cli fm "note" --delete --key "draft"Type inference: / -> boolean, -> array, else string.
truefalse[a,b]AI Agent Memory
Use the vault as persistent memory for Claude Code or other AI agents.
Store Knowledge
bash
notesmd-cli create "memory/session-$(date +%Y%m%d)" \
--content "# Session Notes\n\n## Learnings\n- Key insight here" \
--overwriteRetrieve Context
bash
# Semantic search for relevant memories
qmd vsearch "how did we solve the caching issue" --md -n 5
# Hybrid search for best results
qmd query "authentication architecture decisions" --full -n 3Append Learnings
bash
notesmd-cli create "memory/patterns" \
--content "\n\n## $(date '+%Y-%m-%d')\n- New pattern discovered" \
--appendBuild LLM Context
bash
# Get structured results for injection into prompts
qmd search "relevant topic" --json -n 10
qmd multi-get "memory/*.md" --json --max-bytes 20480For detailed search patterns and agent memory workflows, see:
- -- qmd search modes, output formats, score interpretation
references/search.md - -- Memory organization, retrieval patterns, automation
references/agent-memory.md