SKILL.md 2.8 KB


name: qmd description: Search markdown knowledge bases, notes, and documentation using QMD. Use when users ask to search notes, find documents, or look up information. license: MIT compatibility: Requires qmd CLI or MCP server. Install via npm install -g @tobilu/qmd. metadata: author: tobi version: "1.3.0"

allowed-tools: Bash(qmd:), mcpqmd

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: structured_search

{
  "searches": [
    { "type": "lex", "query": "CAP theorem consistency" },
    { "type": "vec", "query": "tradeoff between consistency and availability" }
  ],
  "collections": ["notes", "docs"],
  "limit": 10
}

Search 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
  • Include synonyms: "auth authentication login"
  • Use exact names: "PostgreSQL connection pool"
  • Code identifiers work: "handleError async"

vec (semantic)

  • Full natural language question
  • Be specific: "how does the rate limiter handle burst traffic" not "rate limiting"
  • 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
  • Example: "The rate limiter uses a sliding window algorithm with a 60-second window. When a client exceeds 100 requests per minute, subsequent requests return 429 Too Many Requests until the window resets."

Combining Types

Goal Approach
Know exact terms lex only
Don't know vocabulary vec only
Best recall lex + vec
Complex topic lex + vec + hyde

First query gets 2x weight in fusion — put your best guess first.

Collection Filtering

{ "collection": "docs" }           // Single collection
{ "collections": ["docs", "notes"] }  // Multiple (OR)

Omit both 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 search "keywords"             # BM25 only
qmd vsearch "question"            # Vector only
qmd get "#abc123"                 # By docid

Setup

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