Agent Native

qmd

qmd is a local search engine for Markdown files that indexes notes and documents for fast retrieval.

by ckorhonenCommunityNot reviewed

Community author

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
License
MIT (permissive)
Pin
947001bpinned Oct 9, 2026
Context cost
about 1,400 tokenswhen the skill loads
GitHub stars
18on ckorhonen/claude-skills
Scripts
None found

What it does

“Local hybrid search for markdown notes and docs. Use when searching notes, finding related content, or retrieving documents from indexed collections.”
The author's description, from SKILL.md

Generated summary from the skill's own text

qmd is a local search engine for Markdown files that indexes notes and documents for fast retrieval. It offers keyword-based BM25 search as the default fast option, plus semantic vector search and hybrid LLM-reranked search for more complex queries. Use it to search personal knowledge bases, find related documents, and retrieve specific markdown files from indexed collections.

When to use it

  • Searching notes and documentation with specific keywords quickly
  • Finding semantically related content when keyword matching fails
  • Retrieving documents from large indexed markdown collections
  • Searching across multiple markdown files in knowledge bases

When not to

  • When real-time indexing of constantly changing files is required
  • For searching non-markdown file formats or unindexed directories
  • When response time under one second is critical and vectors unavailable

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add ckorhonen/claude-skills --skill qmd

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install ckorhonen/claude-skills qmd@947001b038d62d9993ccad69b5b8f17ca075fb52

Installs the commit we checked (947001b).

Copy by hand

Download the folder at 947001b and put it in .claude/skills/qmd for Claude Code and in .agents/skills/qmd for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at 947001b

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "qmd" by ckorhonen.

Source, pinned to commit 947001b038d62d9993ccad69b5b8f17ca075fb52:
https://github.com/ckorhonen/claude-skills/tree/947001b038d62d9993ccad69b5b8f17ca075fb52/skills/qmd

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/qmd/ for Claude Code and .agents/skills/qmd/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/ckorhonen/qmd

SKILL.md at the pin

---
name: qmd
description: Local hybrid search for markdown notes and docs. Use when searching notes, finding related content, or retrieving documents from indexed collections.
---

# qmd - Quick Markdown Search

Local search engine for Markdown notes, docs, and knowledge bases. Index once, search fast.

## When to use (trigger phrases)

- "search my notes / docs / knowledge base"
- "find related notes"
- "retrieve a markdown document from my collection"
- "search local markdown files"

## Default behavior (important)

- Prefer `qmd search` (BM25). It's typically instant and should be the default.
- Use `qmd vsearch` only when keyword search fails and you need semantic similarity (can be very slow on a cold start).
- Avoid `qmd query` unless the user explicitly wants the highest quality hybrid results and can tolerate long runtimes/timeouts.

## Search modes

| Mode | Command | Speed | Use case |
|------|---------|-------|----------|
| BM25 (default) | `qmd search` | Instant | Keyword matching |
| Vector | `qmd vsearch` | ~1 min cold | Semantic similarity |
| Hybrid | `qmd query` | Slowest | LLM reranking (skip unless requested) |

## Common commands

```bash
qmd search "query"              # default - fast keyword search
qmd search "query" -c notes     # search specific collection
qmd search "query" -n 10        # more results
qmd search "query" --json       # JSON output
qmd search "query" --all --files --min-score 0.3
```

## Useful options

- `-n <num>`: number of results
- `-c, --collection <name>`: restrict to a collection
- `--all --min-score <num>`: return all matches above a threshold
- `--json` / `--files`: agent-friendly output formats
- `--full`: return full document content

## Retrieve documents

```bash
qmd get "path/to/file.md"       # Full document
qmd get "#docid"                # By ID from search results
qmd multi-get "journals/2025-05*.md"
qmd multi-get "doc1.md, doc2.md, #abc123" --json
```

## Maintenance

```bash
qmd status                      # Index health
qmd update                      # Re-index changed files
qmd embed                       # Update embeddings
```

## Setup (if not installed)

```bash
# Install
bun install -g https://github.com/tobi/qmd

# Create collection
qmd collection add /path/to/notes --name notes --mask "**/*.md"
qmd context add qmd://notes "Description of this collection"  # optional
qmd embed  # one-time to enable vector + hybrid search
```

## Performance notes

- `qmd search` is typically instant
- `qmd vsearch` can be ~1 minute on cold start (loads local LLM for query expansion)
- `qmd query` adds LLM reranking on top of `vsearch`, even slower

## Common Pitfalls

### Search query too vague (irrelevant results)
**Problem:** Broad queries like "notes" or "project" return hundreds of low-relevance matches.

**Solution:**
- Use specific keywords: `qmd search "Python async context managers"` not `qmd search "Python"`
- Combine keywords: `qmd search "deadline March quarterly review"`
- Use quotes for exact phrases: `qmd search "exact phrase match"`
- Check result scores: `qmd search "query" --all --min-score 0.5` to filter low-confidence matches

### Index not updated (missing recent files)
**Problem:** Newly created or recently modified files don't appear in search results.

**Solution:**
```bash
# Check index status
qmd status

# Re-index all changed files
qmd update

# Full re-index if update doesn't help
qmd collection remove <name>
qmd collection add /path/to/notes --name <name> --mask "**/*.md"
qmd embed  # if vector search enabled
```

### Path filters wrong (excluding relevant directories)
**Problem:** Search doesn't find files because the collection mask is too narrow or collection path is wrong.

**Solution:**
```bash
# List current collections
qmd status

# Verify collection path matches your notes location
# If path changed, re-add collection:
qmd collection remove <old-name>
qmd collection add /path/to/notes --name <name> --mask "**/*.md"

# Common issue: subdirectories excluded by mask
# If notes are in journals/2025/*, use: --mask "**/*.md"
# Not: --mask "*.md" (which only matches top level)
```

### Search timeout on large vaults (performance issues)
**Problem:** `qmd query` or `qmd vsearch` hangs or times out on large knowledge bases (1000+ files).

**Solution:**
- Avoid `qmd query` on large vaults (LLM reranking is too slow)
- Use `qmd search` instead (BM25 is fast even on huge collections)
- If semantic search needed, use `qmd vsearch` with `-n 5` to limit results
- Restrict search scope with `-c <collection>` to search one collection instead of all:
  ```bash
  qmd search "query" -c notes -n 5  # faster than searching all collections
  ```
- If vault exceeds 5000 files, consider splitting into multiple collections

### Missing configuration (qmd not initialized)
**Problem:** `qmd status` shows "No collections" or `qmd search` returns no results.

**Solution:**
```bash
# Install qmd if missing
bun install -g https://github.com/tobi/qmd

# Set up a collection
qmd collection add /path/to/notes --name notes --mask "**/*.md"

# Enable vector search (optional but recommended)
qmd embed

# Verify setup
qmd status  # Should show your collection with file count
```

### Semantic search returns irrelevant results (vsearch/query)
**Problem:** Vector search matches by topic but misses what you actually wanted.

**Solution:**
- Fall back to `qmd search` (BM25 keyword matching is more precise for specific terms)
- Rephrase query to include actual keywords: not "What are my goals?" but "goals quarterly review objectives"
- Use `qmd query` if available (adds LLM reranking), but only if you can tolerate slow runtime
- Use `-n 3` to get fewer, higher-confidence matches from vector search

From ckorhonen/claude-skills at 947001b, shown as plain text under its license: MIT (permissive). The license text is in LICENSE.

View SKILL.md on GitHub at 947001b

Files

1 file, 5.8 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at 947001b
All Productivity skills
  • suggest-automations

    This skill suggests three relevant automations to users based on their team role and connected apps, then builds the chosen workflow using the build-workflow…

    by n8nOfficial publisher

    Claude Code, Codex, Cursor +3 · about 1.9K tokens · pinned 6 days ago

  • agent-mail-automation

    This skill enables agents to automate email operations through Composio's Agent Mail toolkit via the Rube MCP server.

    by ComposioOfficial publisher

    Claude Code, Codex, Cursor +3 · about 700 tokens · pinned 6 days ago

  • inbox-manager

    This skill transforms an overflowing inbox into a short prioritized list by reading email from Gmail, Microsoft 365, or pasted text, sorting messages into…

    by AnthropicOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.5K tokens · pinned 6 days ago

  • huggingface-papers

    This skill retrieves and analyzes AI research papers from Hugging Face's paper index and arXiv by fetching paper content as markdown or structured metadata…

    by Hugging FaceOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.2K tokens · pinned 6 days ago

  • curating-memory-palace

    This skill lets the agent maintain a Memory Palace, a structured dashboard view that shows the user what the agent is working on, what it could do next, and…

    by LettaOfficial publisher

    Agents not labelled yet · about 3.1K tokens · pinned 6 days ago

  • scheduling-tasks

    This skill lets you create and manage scheduled tasks using the letta cron CLI, sending prompts to the agent on a timer for reminders, periodic work, and…

    by LettaOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.3K tokens · pinned 6 days ago

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use