Agent skill

qmd

Search vault notes by keyword or meaning. Args: <query>. Uses QMD (lex, vec, deep search).

Stars 152
Forks 10

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

json
{
  "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: question on 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

json
{ "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

bash
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

bash
curl -X POST http://localhost:8181/query \
  -H "Content-Type: application/json" \
  -d '{"searches": [{"type": "lex", "query": "test"}]}'

Setup

bash
npm install -g @tobilu/qmd
qmd collection add ~/notes --name notes
qmd embed

Expand your agent's capabilities with these related and highly-rated skills.

benoror/obsidianos_work

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).

152 10
Explore
benoror/obsidianos_work

commit

Stage and commit with flexible intent parsing. Accepts file/folder scope, free-text description, amend, or any combination.

152 10
Explore
benoror/obsidianos_work

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.

152 10
Explore
benoror/obsidianos_work

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.

152 10
Explore
benoror/obsidianos_work

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.

152 10
Explore
benoror/obsidianos_work

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.

152 10
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results