| created | "2026-03-04T00:00:00.000Z" |
| modified | "2026-06-28T00:00:00.000Z" |
| reviewed | "2026-06-28T00:00:00.000Z" |
| name | search-discovery |
| description | Obsidian vault search: full-text/grep, tag listing, link traversal, outline, orphan/dead-end detection, broken wikilink audit. Use when exploring backlinks. |
| user-invocable | false |
| allowed-tools | Bash(obsidian *), Read, Grep, Glob |
Obsidian Search & Discovery
When to Use This Skill
| Use this skill when... | Use the alternative instead when... |
|---|
| Running full-text or grep-style search, tag queries, or backlink traversal against the running vault | Triaging orphaned notes for archival or MOC linking — use vault-orphans |
| Listing unresolved wikilinks Obsidian currently flags as broken | Repairing the broken wikilinks once located — use vault-wikilinks |
| Inspecting the heading outline of a single note | Reading the full note content — use vault-files |
| Querying notes already organised by a Base view | — use bases |
Search, navigate, and audit the vault link graph using the official Obsidian CLI.
Prerequisites
- Obsidian desktop v1.12.4+ with CLI enabled
- Obsidian must be running
Offline Limitation (App Closed)
Every command here talks to the running Obsidian instance over the CLI; with the app closed they error:
The CLI is unable to find Obsidian. Please make sure Obsidian is running and try again.
For headless / batch link, orphan, dead-end, tag, and broken-wikilink audits with the app closed, use the offline file-parsing path documented in the vault-* audit skills — vault-wikilinks, vault-orphans, vault-mocs, vault-tags, and vault-stubs parse the .md corpus directly with Grep/Glob (frontmatter + [[wikilink]] resolution). The obsidian CLI here is the live-index path; direct parsing is the deterministic headless default for bulk audits.
Search
Path-Only Search
search returns matching file paths only.
obsidian search query="project roadmap"
obsidian search query="meeting" limit=10 format=json
obsidian search query="status::active" path=Projects
obsidian search query="TODO" total
obsidian search query="API" case
Grep-Style Context Search
search:context returns path:line: text lines — the agentic-friendly mode.
obsidian search:context query="TODO"
obsidian search:context query="TODO" format=json
obsidian search:context query="API" path=Projects case
obsidian search:context query="TODO" limit=20
search:context is the right default for agents — line numbers feed straight
into obsidian read + line offsets, or into edit workflows.
Open Search View
obsidian search:open query="review needed"
Obsidian Query Operators
The query= value uses Obsidian's standard search syntax — tag:, path:,
file:, line:, [property:value], and so on:
obsidian search query="tag:#publish"
obsidian search query="[status:active] tag:#blog"
obsidian search:context query="path:Daily TODO"
Tags
obsidian tags
obsidian tags counts
obsidian tags sort=count counts
obsidian tags format=json
obsidian tags active
obsidian tags file=Recipe
obsidian tag name=pkm
obsidian tag name=project/active total
obsidian tag name=pkm verbose
Outline (Headings)
obsidian outline
obsidian outline file=Recipe
obsidian outline file=Recipe format=json
obsidian outline file=Recipe format=md
obsidian outline file=Recipe total
Links
obsidian links file="Architecture Overview"
obsidian links file="Architecture Overview" total
obsidian backlinks file="API Design"
obsidian backlinks file="API Design" counts
obsidian backlinks file="API Design" format=json
obsidian unresolved
obsidian unresolved counts
obsidian unresolved verbose
obsidian unresolved format=json
obsidian orphans
obsidian deadends
obsidian orphans total
obsidian deadends total
orphans (no incoming) and deadends (no outgoing) target different
problems — combine them to find truly disconnected notes.
Common Flags
| Flag | Description |
|---|
format=json | JSON output for machine parsing |
format=tsv, format=csv | Spreadsheet-friendly output |
format=md | Markdown rendering (outline, base:query) |
limit=N | Cap result count |
path=<folder> | Restrict search to a folder |
case | Case-sensitive search |
total | Return only the count |
counts | Include per-result counts |
verbose | Include source files / details |
--copy | Copy result to clipboard |
Agentic Optimizations
| Context | Command |
|---|
| Grep-style search (default) | obsidian search:context query="term" |
| Path-only search (structured) | obsidian search query="term" format=json |
| Match count | obsidian search query="term" total |
| Tag frequency analysis | obsidian tags counts sort=count |
| Find tagged notes | obsidian tag name=X verbose |
| Heading outline (json) | obsidian outline file=X format=json |
| Broken link audit | obsidian unresolved counts verbose |
| Orphan detection | obsidian orphans |
| Dead-end detection | obsidian deadends |
| Link graph for note | obsidian links file=X + obsidian backlinks file=X |
Related Skills
- vault-files — Read content at a
path:line returned by search:context
- properties — Search and filter by frontmatter properties
- bases — Pre-built queries via Base views
- bookmarks — Promote a frequent search to a saved bookmark