Skills qmd
Local hybrid search for markdown notes and docs. Use when searching notes, finding related content, or retrieving documents from indexed collections.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/aryannate/qmd-skill-4" ~/.claude/skills/clawdbot-skills-qmd-a5881d && rm -rf "$T"
manifest:
skills/aryannate/qmd-skill-4/SKILL.mdsource content
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
(BM25). It's typically instant and should be the default.qmd search - Use
only when keyword search fails and you need semantic similarity (can be very slow on a cold start).qmd vsearch - Avoid
unless the user explicitly wants the highest quality hybrid results and can tolerate long runtimes/timeouts.qmd query
Prerequisites
- Bun >= 1.0.0
- macOS:
(SQLite extensions)brew install sqlite - Ensure PATH includes:
$HOME/.bun/bin
Install Bun (macOS):
brew install oven-sh/bun/bun
Install
bun install -g https://github.com/tobi/qmd
Setup
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
What it indexes
- Intended for Markdown collections (commonly
).**/*.md - In our testing, "messy" Markdown is fine: chunking is content-based (roughly a few hundred tokens per chunk), not strict heading/structure based.
- Not a replacement for code search; use code search tools for repositories/source trees.
Search modes
(default): fast keyword match (BM25)qmd search
(last resort): semantic similarity (vector). Often slow due to local LLM work before the vector lookup.qmd vsearch
(generally skip): hybrid search + LLM reranking. Often slower thanqmd query
and may timeout.vsearch
Performance notes
is typically instant.qmd search
can be ~1 minute on some machines because query expansion may load a local model (e.g., Qwen3-1.7B) into memory per run; the vector lookup itself is usually fast.qmd vsearch
adds LLM reranking on top ofqmd query
, so it can be even slower and less reliable for interactive use.vsearch- If you need repeated semantic searches, consider keeping the process/model warm (e.g., a long-lived qmd/MCP server mode if available in your setup) rather than invoking a cold-start LLM each time.
Common commands
qmd search "query" # default qmd vsearch "query" qmd query "query" 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
: number of results-n <num>
: restrict to a collection-c, --collection <name>
: return all matches above a threshold--all --min-score <num>
/--json
: agent-friendly output formats--files
: return full document content--full
Retrieve
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
qmd status # Index health qmd update # Re-index changed files qmd embed # Update embeddings
Keeping the index fresh
Automate indexing so results stay current as you add/edit notes.
- For keyword search (
),qmd search
is usually enough (fast).qmd update - If you rely on semantic/hybrid search (
/vsearch
), you may also wantquery
, but it can be slow.qmd embed
Example schedules (cron):
# Hourly incremental updates (keeps BM25 fresh): 0 * * * * export PATH="$HOME/.bun/bin:$PATH" && qmd update # Optional: nightly embedding refresh (can be slow): 0 5 * * * export PATH="$HOME/.bun/bin:$PATH" && qmd embed
If your Clawdbot/agent environment supports a built-in scheduler, you can run the same commands there instead of system cron.
Models and cache
- Uses local GGUF models; first run auto-downloads them.
- Default cache:
(override with~/.cache/qmd/models/
).XDG_CACHE_HOME
Relationship to Clawdbot memory search
searches your local files (notes/docs) that you explicitly index into collections.qmd- Clawdbot's
searches agent memory (saved facts/context from prior interactions).memory_search - Use both:
for "what did we decide/learn before?",memory_search
for "what's in my notes/docs on disk?".qmd