qmd
Search local markdown knowledge bases, notes, docs, and wikis with QMD.
Skill by tobi
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/pedronauck-qmd
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/qmd
Tools it pre-approves 2
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(qmd:*),mcp__qmd__*
What's inside
- Skill name
qmd- Description
- Search local markdown knowledge bases, notes, docs, and wikis with QMD. Use when users ask to find notes, retrieve documents, inspect a wiki, answer from indexed markdown, or set up QMD access.
- License
- MIT
- Compatibility
- Requires qmd CLI or MCP server. Install via `npm install -g @tobilu/qmd`.
- Allowed tools
- Bash(qmd:*),, mcp__qmd__*
- Metadata
- author: tobi · version: 2.2.0
- Instructions
- 297 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Agent Skills spec issues
- body: contains an absolute path from the author's machine
Files (2)
- SKILL.md
- mcp-setup.md · references/
SKILL.md (first lines)
# QMD - Query Markdown Documents
## How search works
QMD searches local markdown collections: notes, docs, wikis, transcripts, and
project knowledge bases. Use it before web search when the answer may already be
in indexed local files.
The workflow is always:
1. Search for candidate documents.
2. Retrieve the full source with `qmd get` or `qmd multi-get`.
3. Answer from retrieved text, citing paths or docids.
Do not answer from snippets alone when the user needs facts, decisions, quotes,
or nuance. Snippets are only leads.
Typical loop:
```bash
qmd search "merchant reality support interviews" -n 5
# leads: #abc123 concepts/customer-proximity.md; #def432 sources/merchant-call.md
qmd multi-get "#abc123,#def432" --format md
```
**Default to structured `qmd query` with `intent:`, `lex:`, `vec:`, and `hyde:`
fields that you write yourself.** You are a better query expander than the
built-in model: you know the user's actual goal, the domain vocabulary, and the
nearby-but-wrong concepts to avoid. Do not just paste the user's words into
`qmd query "..."` and hope the expansion model guesses right — supply the
`intent:` and craft the lexical and semantic terms deliberately (see
[Pick the right search mode](#pick-the-right-search-mode)).
When reporting what you retrieved, a compact note is enough; do not paste whole
files unless needed:
```text
Retrieved:
- #abc123 concepts/customer-proximity.md
- #def432 sources/merchant-call.md
```
## Pick the right search mode
Use **BM25 lexical search** when you know exact words, titles, names, code
symbols, or rare phrases:
```bash
qmd search "cockpit OKR Goodhart" -n 10
qmd search '"AI Before Headcount"' -c concepts -n 5
```
Use **`qmd query` with structured fields** when the user describes an idea
indirectly, uses different wording than the source, or needs conceptual recall.
**This is the default mode — write the fields yourself rather than leaning on
query expansion.** Combine exact anchors with semantic recall:
```bash
qmd query $'intent: Find the concept note about metrics as instruments without letting OKRs replace judgment.\nlex: cockpit instruments OKR Goodhart metrics judgment\nvec: data informed not metric driven product judgment\nhyde: A concept note says metrics are useful like cockpit instruments, but leaders should remain data-informed rather than metric-driven because OKRs and dashboards can Goodhart product judgment.'
```
Structured query fields (you author each one — do not delegate this to the
expansion model):
- `intent:` states what you are trying to find **and what to avoid**. Always
supply this. It steers ranking away from nearby-but-wrong concepts.
- `lex:` exact terms, aliases, titles, code symbols, and rare words you expect
in the source. This is your own keyword expansion.
- `vec:` paraphrases the idea in natural language, in source-like wording.
- `hyde:` describes the document or answer that would satisfy the request.
You do not need all four every time, but you should almost always write at least
`intent:` plus one of `lex:`/`vec:`. A bare `qmd query "the user's sentence"`
throws away the context only you have and relies on the built-in expander to
reconstruct it — prefer the structured form.
If you genuinely have nothing to expand (a single rare token, a verbatim phrase),
that is a job for `qmd search`, not bare `qmd query`:
```bash
qmd query --format json --explain $'intent: ...\nlex: ...\nvec: ...' # inspect ranking
```
If `qmd query` is slow or model/GPU setup fails, fall back to `qmd search` with
better lexical terms.
## Retrieve sources
Search results include docids like `#abc123` and `qmd://...` paths. Fetch them:
```bash
qmd get "#abc123"
qmd get qmd://concepts/ai-before-headcount.md
qmd multi-get "#abc123,#def432" --format md
qmd multi-get 'concepts/{ai-before-headcount.md,data-informed-not-metric-driven.md}' --format md
qmd multi-get 'sources/podcast-2025-*.md' -l 80
```
Use `multi-get` when comparing several hits or gathering context across pages.
### Output is line-numbered and carries the docid — cite both
`get` and `multi-get` are **line-numbered by default** and always print the
document's `#docid` and `qmd://` path. So `get` output looks like:
```text
qmd://concepts/note.md #abc123
---
1: # Metrics as instruments
2:
3: Treat dashboards like cockpit instruments...
```
Cite the docid and exact line numbers in your answer, and use the numbers to ask
for the next slice. Pass `--no-line-numbers` only when you need raw content to
copy verbatim (e.g. reproducing a code block).
When you need to open or edit the underlying file (e.g. hand a path to `Read`,From pedronauck/skills, MIT.
More from pedronauck/skills
- 0.805score
jev-engineering
pedronauck
Design and build use cases, POCs and production systems with TypeSafe's Jev decision model (System One): choose a design mode and a use-case archetype, build…
SkillAFreshness: A★ 641Claude Code +9 - 0.768score
bubbletea
Pedro Nauck
Build interactive Go TUIs with Bubbletea, Elm architecture, Lipgloss, layouts, and keyboard/mouse handling.
SkillBFreshness: B★ 641Claude Code +9 - 0.768score
rust-best-practices
Pedro Nauck
Write, review, refactor, or optimize Rust, including ownership, errors, Tokio, traits, tests, benchmarks, Clippy, and documentation.
SkillBFreshness: B★ 641Claude Code +9 - 0.765score
vitest
Anthony Fu
Vitest fast unit testing framework powered by Vite with Jest-compatible API.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
qa-execution
Pedro Nauck
Run requested dogfooding through public product interfaces.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
react
Pedro Nauck
Build React 19 components and hooks under React Compiler: state, Effects, memoization, props/refs, Actions, use(), compiler/lint setup, and Vitest tests.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
qa-report
Pedro Nauck
Create or update living QA docs, journey/scenario plans, persona session charters, and the durable bug registry.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
golang-master
Pedro Nauck
Write or review production Go: errors, concurrency, context, types, generics, safety, tests, benchmarks, profiling, modernization, and module structure.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
ddd-master
Pedro Nauck
Assess DDD fit; discover domains with EventStorming, define language and bounded contexts, and design aggregates, value objects, events, and repositories.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
glassmorphism
Pedro Nauck
Create or refine glass UI with accessible solid fallbacks.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
drizzle-safe-migrations
Pedro Nauck
Plan safe Drizzle backfills, enum/check/default changes, constraint tightening, migration ordering, and rollback.
SkillBFreshness: B★ 641Claude Code +9 - 0.762score
herdr-orchestration
Pedro Nauck
Orchestrate Claude and Codex worker TUIs from a controller agent — one worker per named herdr tab, driven over the herdr socket CLI.
SkillBFreshness: B★ 641Claude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 641
- Forks
- 91
- Open issues
- 0
- Last commit (this folder)
- Sep 14, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 2.2.0
- License
- MIT
- Repository
- github.com/pedronauck/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from tobi
Cite this page
qmd skill. Agent Mart. https://agentmart.dev/skills/pedronauck-qmd (last updated 2026-10-24)