Obsidian Vault
Vault location
Assume the user is running this skill from inside a vault. Resolve the vault root using git:
VAULT=$(git rev-parse --show-toplevel)
All commands below use $VAULT. Mostly flat at root level.
Naming conventions
- Index notes: aggregate related topics (e.g.,
Ralph Wiggum Index.md,Skills Index.md,RAG Index.md) - Title case for all note names
- No folders for organization - use links and index notes instead
Linking
- Use Obsidian
[[wikilinks]]syntax:[[Note Title]] - Notes link to dependencies/related notes at the bottom
- Index notes are just lists of
[[wikilinks]]
Workflows
Search for notes
VAULT=$(git rev-parse --show-toplevel)
# Search by filename
find "$VAULT" -name "*.md" | grep -i "keyword"
# Search by content
grep -rl "keyword" "$VAULT" --include="*.md"
Or use Grep/Glob tools directly on the vault path.
Create a new note
- Use Title Case for filename
- Write content as a unit of learning (per vault rules)
- Add
[[wikilinks]]to related notes at the bottom - If part of a numbered sequence, use the hierarchical numbering scheme
Find related notes
Search for [[Note Title]] across the vault to find backlinks:
VAULT=$(git rev-parse --show-toplevel)
grep -rl "\\[\\[Note Title\\]\\]" "$VAULT"
Find index notes
VAULT=$(git rev-parse --show-toplevel)
find "$VAULT" -name "*Index*"
Find untagged references
Detect note titles mentioned in prose that aren't wrapped in [[wikilinks]]. This catches references the author forgot to link.
- Build a list of all note titles (filenames without
.md) - For each title, search the vault for occurrences that are NOT inside
[[ ]] - Report the file, line, and unlinked mention
VAULT=$(git rev-parse --show-toplevel)
# Get all note titles
titles=$(find "$VAULT" -name "*.md" -printf '%f\n' | sed 's/\.md$//')
# For each title, find mentions not wrapped in [[ ]]
for title in $titles; do
grep -rn --include="*.md" "$title" "$VAULT" \
| grep -v "\[\[$title\]\]" \
| grep -v "^.*/$title\.md:"
done
Or use Grep to search for a specific title and manually check which hits lack wikilink syntax.
Find duplicate or misspelled tags
Detect tags that look like near-duplicates (case differences, typos, plural/singular variants).
- List all unique tags across the vault:
VAULT=$(git rev-parse --show-toplevel)
grep -roh '#[A-Za-z0-9_/-]\+' "$VAULT" --include="*.md" \
| sort | uniq -c | sort -rn
- Find case-insensitive duplicates (e.g.,
#RAGvs#ragvs#Rag):
grep -roh '#[A-Za-z0-9_/-]\+' "$VAULT" --include="*.md" \
| sort -u | awk '{lower=tolower($0); if (seen[lower]++) print prev[lower], $0; else prev[lower]=$0}'
- Spot low-frequency tags that may be typos of common ones:
grep -roh '#[A-Za-z0-9_/-]\+' "$VAULT" --include="*.md" \
| sort | uniq -c | sort -n | head -30
Review the low-count tags against the high-count list. Tags used only once or twice are likely misspellings of an existing tag.
- Find where a suspicious tag is used so you can fix it:
grep -rn '#suspicioustag' "$VAULT" --include="*.md"