Agent skill
qmd
Search vault notes by keyword or meaning. Args: <query>. Uses QMD (lex, vec, deep search).
Install this agent skill to your Project
npx add-skill https://github.com/benoror/obsidianos_work/tree/main/.agents/skills/qmd
Metadata
Additional technical details for this skill
- author
- tobi
- version
- 2.0.0
SKILL.md
QMD - Quick Markdown Search
Local search engine for markdown content.
Status
!qmd status 2>/dev/null || echo "Not installed: npm install -g @tobilu/qmd"
MCP: query
{
"searches": [
{ "type": "lex", "query": "CAP theorem consistency" },
{ "type": "vec", "query": "tradeoff between consistency and availability" }
],
"collections": ["docs"],
"limit": 10
}
Query Types
| Type | Method | Input |
|---|---|---|
lex |
BM25 | Keywords — exact terms, names, code |
vec |
Vector | Question — natural language |
hyde |
Vector | Answer — hypothetical result (50-100 words) |
Writing Good Queries
lex (keyword)
- 2-5 terms, no filler words
- Exact phrase:
"connection pool"(quoted) - Exclude terms:
performance -sports(minus prefix) - Code identifiers work:
handleError async
vec (semantic)
- Full natural language question
- Be specific:
"how does the rate limiter handle burst traffic" - Include context:
"in the payment service, how are refunds processed"
hyde (hypothetical document)
- Write 50-100 words of what the answer looks like
- Use the vocabulary you expect in the result
expand (auto-expand)
- Use a single-line query (implicit) or
expand: questionon its own line - Lets the local LLM generate lex/vec/hyde variations
- Do not mix
expand:with other typed lines — it's either a standalone expand query or a full query document
Combining Types
| Goal | Approach |
|---|---|
| Know exact terms | lex only |
| Don't know vocabulary | Use a single-line query (implicit expand:) or vec |
| Best recall | lex + vec |
| Complex topic | lex + vec + hyde |
First query gets 2x weight in fusion — put your best guess first.
Lex Query Syntax
| Syntax | Meaning | Example |
|---|---|---|
term |
Prefix match | perf matches "performance" |
"phrase" |
Exact phrase | "rate limiter" |
-term |
Exclude | performance -sports |
Note: -term only works in lex queries, not vec/hyde.
Collection Filtering
{ "collections": ["docs"] } // Single
{ "collections": ["docs", "notes"] } // Multiple (OR)
Omit to search all collections.
Other MCP Tools
| Tool | Use |
|---|---|
get |
Retrieve doc by path or #docid |
multi_get |
Retrieve multiple by glob/list |
status |
Collections and health |
CLI
qmd query "question" # Auto-expand + rerank
qmd query $'lex: X\nvec: Y' # Structured
qmd query $'expand: question' # Explicit expand
qmd search "keywords" # BM25 only (no LLM)
qmd get "#abc123" # By docid
qmd multi-get "journals/2026-*.md" -l 40 # Batch pull snippets by glob
qmd multi-get notes/foo.md,notes/bar.md # Comma-separated list, preserves order
HTTP API
curl -X POST http://localhost:8181/query \
-H "Content-Type: application/json" \
-d '{"searches": [{"type": "lex", "query": "test"}]}'
Setup
npm install -g @tobilu/qmd
qmd collection add ~/notes --name notes
qmd embed
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
followup-todos
Extract action items as plain markdown bullets (with confirmation). Args: <path>. No args = run [/note-status pending --step=todos](../note-status/SKILL.md#pending-mode).
commit
Stage and commit with flexible intent parsing. Accepts file/folder scope, free-text description, amend, or any combination.
obsidian-cli
Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.
defuddle
Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page.
obsidian-markdown
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
obsidian-bases
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
Didn't find tool you were looking for?