Skip to content
Back to skills

Obsidian Search Vault

ASecurity

Search the Obsidian Zettelkasten vault using qmd hybrid search (BM25 + vector + LLM re-ranking). Use when the user wants to find notes, quotes, people, books, literature notes, permanent notes, or any content in their personal knowledge base.

  • 8 stars
  • 0 votes
  • 0 copies
  • 9 views
  • Added May 28, 2026
ai-agentsgobash

Works with

  • cli

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add kogakure/skills --skill obsidian-search-vault --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Obsidian Search Vault?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Obsidian Search Vault
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kogakure-obsidian-search-vault/badge)](https://www.skillsdirectory.com/skills/kogakure-obsidian-search-vault)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: obsidian-search-vault
description: Search the Obsidian Zettelkasten vault using qmd hybrid search (BM25 + vector + LLM re-ranking). Use when the user wants to find notes, quotes, people, books, literature notes, permanent notes, or any content in their personal knowledge base.
allowed-tools: Bash(qmd*)
---

# Search Vault

Search the user's Obsidian Zettelkasten using `qmd`. The user's query is passed as arguments to `/obsidian-search-vault`.

## Argument parsing

The argument string may contain:

- A query (required): any free-form text
- `-c <collection>`: restrict search to a collection; repeat the flag for several
  (`-c quotes -c people`). A comma-separated list is **not** supported and fails with
  `Collection not found: quotes,people`.
- `--full`: fetch and display the full content of the top result
- `-n <num>`: number of results (default: 5)
- `--bm25`: use fast keyword-only search instead of hybrid
- `--vector`: use pure vector search instead of hybrid

If no arguments are provided, ask the user what they want to search for.

## Collections

The vault is indexed one collection per folder. Sizes are indicative, not exact.

| Name               | Folder                         | Contents                                                    | Files |
| ------------------ | ------------------------------ | ----------------------------------------------------------- | ----: |
| `permanent`        | `04 Permanent`                 | Evergreen atomic Zettelkasten notes — the core of the vault |  3900 |
| `quotes`           | `03 Resources/Zitate`          | Quotations with their author and source                     |  2000 |
| `areas`            | `02 Areas`                     | Ongoing areas: essays, fitness, languages, work             |   520 |
| `daily`            | `06 Daily`                     | Daily journal entries: read, watched, trained, thought      |   270 |
| `people`           | `03 Resources/Personen`        | Biographical notes on real and fictional persons            |   155 |
| `moc`              | `00 Maps of Content`           | Maps of Content — thematic navigation hubs                  |   140 |
| `literature-notes` | `03 Resources/Literatur Notes` | Notes from books, talks, articles and videos                |   140 |
| `podcasts`         | `03 Resources/Podcasts`        | Podcast episodes and shows, with guests and topics          |    76 |
| `archives`         | `07 Archives`                  | Completed projects and retired MOCs                         |    63 |
| `projects`         | `01 Projects`                  | Active projects, including their mirrored Linear tickets    |    58 |
| `books`            | `03 Resources/Bücher`          | Book notes with metadata, rating and reading progress       |    48 |
| `development`      | `03 Resources/Entwicklung`     | Software development reference: languages, tools, config    |    48 |
| `series`           | `03 Resources/Serien`          | TV series, with episodes watched                            |    46 |
| `prompts`          | `03 Resources/Prompts`         | AI prompts kept for reuse                                   |    25 |
| `lyrics`           | `03 Resources/Lyrics`          | Song lyrics and poems                                       |    23 |
| `companies`        | `03 Resources/Firmen`          | Companies and organizations                                 |    18 |
| `products`         | `03 Resources/Produkte`        | Products and tools in use                                   |    11 |
| `movies`           | `03 Resources/Filme`           | Movie notes with metadata and rating                        |     9 |
| `fleeting`         | `05 Fleeting`                  | Temporary notes not yet worked into permanent ones          |     7 |
| `countries`        | `03 Resources/Länder`          | Countries, with their politics, history and culture         |     3 |
| `clippings`        | `03 Resources/Clippings`       | Articles clipped from the web and kept verbatim             |     1 |
| `philosophy`       | `03 Resources/Philosophie`     | Philosophical source texts                                  |     1 |
| `neovim`           | `03 Resources/Neovim`          | Neovim configuration and shortcuts                          |     1 |

Not indexed, so never searchable: `99 Meta/` (templates, scripts, the category registry) and
`pages/`. Read those with `Read` when you need them.

`03 Resources/Städte`, `Orte` and `Reisen` are configured but hold no notes yet, so no `cities`,
`places` or `trips` collection exists. They appear on their own once notes arrive and the
collections are re-registered.

Because `quotes` is a quarter of the corpus, an unscoped search tends to return quotes. When the
user is after ideas rather than aphorisms, scope with `-c permanent -c moc -c literature-notes`.

## Steps

1. Parse the query and flags from the user's arguments
2. Choose the right command (default: `qmd query` for hybrid search)
3. Run the search and display results clearly
4. If `--full` is specified, or the user asks to open/read a note, fetch it with `qmd get <docid>`
5. If results are poor, suggest alternative collections or rephrase

## Commands

```bash
# Hybrid search — query expansion + BM25 + vector + LLM re-ranking (best quality)
qmd query "<query>"
qmd query "<query>" -c <collection>
qmd query "<query>" -n 10

# Fast BM25 keyword search (instant, no models)
qmd search "<query>"
qmd search "<query>" -c <collection>

# Pure vector similarity search
qmd vsearch "<query>"

# Several collections at once — repeat -c, never comma-separate
qmd query "<query>" -c permanent -c moc -c literature-notes

# Fetch full note content
qmd get "qmd://books/Atlas Shrugged.md"   # quote it — most titles contain spaces
qmd get '#6e813e'                         # or by the docid shown in results

# List files in a collection
qmd ls quotes

# What the index currently holds
qmd collection list
```

## Output format

Present results as a clear numbered list:

- **Title** with score badge
- Collection name
- Relevant excerpt from the note
- `qmd get` path for reference

After showing results, offer to:

- Fetch the full content of any result
- Search a specific collection
- Try a different query

## When a collection is missing

If a search fails with `Collection not found`, the index predates the per-folder split. Check
with `qmd collection list`; if it shows a single `zettelkasten` collection, the machine has not
been set up yet — re-register them from the seiza project:

```bash
qmd collection remove zettelkasten
cd ~/Code/personal/obsidian/seiza && pnpm qmd:setup --global --update
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.