Agent skill

Qmd Search

by glebis in glebis/claude-skills

This skill should be used to search the local Obsidian vault / markdown knowledge base by meaning, not just keywords, using the on-device qmd engine (BM25 + vector + LLM rerank).

MITAuto-check passedKnowledge Management

Install Qmd Search

skills CLI
$ npx skills add glebis/claude-skills --skill qmd-search -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install glebis/claude-skills qmd-search --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/glebis/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/qmd-search .claude/skills/qmd-search && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
qmd-search
GitHub stars
391
Token cost
~1.5k tokens
SKILL.md length
583 words
Files
7 (incl. scripts, references)
Skills in repo
92
Repo updated
First seen
Licence
MIT

At a glance

This skill should be used to search the local Obsidian vault / markdown knowledge base by meaning, not just keywords, using the on-device qmd engine (BM25 + vector + LLM rerank).

  • Works in 5 steps: Search semantically first (query /… → Generate likely native-script… → Run a literal pass before concluding… → …
  • The user asks to search my vault/notes
  • SKILL.md covers When to use which mode, Bilingual / proper-name rule…, Primary usage — the wrapper and Setup / indexing (only if qmd…, plus 4 more sections
  • Runs Shell scripts from its folder

What it does

Qmd Search is an agent skill from glebis/claude-skills. This skill should be used to search the local Obsidian vault / markdown knowledge base by meaning, not just keywords, using the on-device qmd engine (BM25 + vector + LLM rerank). Trigger when the user asks to "search my vault/notes", "find notes about X", "what do my notes say about Y", "do I have anything on Z", "semantic search my knowledge base", or wants concept/cross-lingual retrieval over markdown. Fully local — nothing leaves the machine.

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `evals/BASELINE.md`, `evals/fixture.example.json` and `references/cli-reference.md`).

It sits in Knowledge Management, covering Knowledge bases. It works with Obsidian. The repository describes itself as: Collection of Claude Code skills for enhanced AI workflows. The licence is MIT.

When your agent uses it

  • The user asks to search my vault/notes
  • Find notes about X
  • What do my notes say about Y
  • Do I have anything on Z

Example prompts

  • “search my vault/notes”
  • “find notes about X”
  • “what do my notes say about Y”
  • “/qmd-search”

Requirements

  • A Bash shell

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Search semantically first (query / vsearch).
  2. Generate likely native-script spellings/stems and try them, e.g.
  3. Run a literal pass before concluding absence: qmd-search.sh -m grep -n 20 "Зигги".
  4. Use literal hits to disambiguate close names (e.g. Зигги the pet vs. Зигмунд Freud).
  5. If everything fails, say "I didn't find it with these queries: …" and list the terms tried —

What it can do on your machine

Read from SKILL.md and the folder at commit 3b88261. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (Shell), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Qmd Search loads about 1.5k tokens when it runs, and up to ~3k if it reads all its reference files. Until then it costs about 115 tokens; SKILL.md has 583 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~115
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from glebis/claude-skills at commit 3b88261, republished under its MIT licence (© glebis). 583 words, ~1,516 tokens.

Download SKILL.mdSave it as .claude/skills/qmd-search/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
qmd-search
description
This skill should be used to search the local Obsidian vault / markdown knowledge base by meaning, not just keywords, using the on-device qmd engine (BM25 + vector + LLM rerank). Trigger when the user asks to "search my vault/notes", "find notes about X", "what do my notes say about Y", "do I have anything on Z", "semantic search my knowledge base", or wants concept/cross-lingual retrieval over markdown. Fully local — nothing leaves the machine.

Search a local markdown knowledge base semantically with qmd. Five modes — BM25 keywords, vector similarity, hybrid (expansion + rerank), literal native-script grep, and a fused find — all running on-device. The key advantage over Obsidian's built-in search: it matches meaning, finds notes that share no words with the query, and works across languages (e.g. a Russian query retrieves English notes).

When to use which mode

  • hybrid (query) — default. A real question or fuzzy intent ("how do I stop overengineering"). Best quality; first run downloads reranker/expansion models (~one-time slow).
  • vector (vsearch) — fast concept lookup ("notes about embodied computing").
  • BM25 (search) — an exact keyword, name, or filename. Instant, no model.
  • grep (-m grep) — literal fixed-string ripgrep over the .md files. The audit path for proper nouns, transliterations, exact phrases, Russian stems/inflections, and absence checks. Bypasses the index; matches only the exact script/spelling you type.

Bilingual / proper-name rule (do not skip)

This vault is bilingual (English/Russian). The embedding model is decent for concepts but weak for proper nouns / specific entities, and BM25 only matches the script you type. So:

Never conclude "it's not in the vault" after one English semantic query. For names, people, pets, places, foreign terms, or bilingual topics:

  1. Search semantically first (query / vsearch).
  2. Generate likely native-script spellings/stems and try them, e.g. Ziggy → Зигги/Зиги, dog/pet → собак, пёс, щенок, питомц, животн. Use stems (собак catches собака/собаку/собаки), not just the nominative.
  3. Run a literal pass before concluding absence: qmd-search.sh -m grep -n 20 "Зигги".
  4. Use literal hits to disambiguate close names (e.g. Зигги the pet vs. Зигмунд Freud).
  5. If everything fails, say "I didn't find it with these queries: …" and list the terms tried — not "it's not in the vault." Raise -n to ~20 for absence checks.

Primary usage — the wrapper

Use the bundled wrapper; it suppresses qmd's stderr spinner, formats results as score path (parsing qmd's JSON, so commas in filenames are safe), and makes a best-effort refusal to run during an active qmd embed (which would return empty results — override with --force):

bash
~/.claude/skills/qmd-search/scripts/qmd-search.sh [-m query|search|vsearch|grep|find] [-n N] [-c COLLECTION] [--snippet] [--min-score X] [--json] [--full] <query...>

Examples:

bash
qmd-search.sh "what helps with anxiety"                 # hybrid (default)
qmd-search.sh -m vsearch -n 8 "behavioral health from photos"
qmd-search.sh -m search sensorium                       # BM25 keyword
qmd-search.sh -m grep -n 20 "Зигги"                     # literal native-spelling / absence check
qmd-search.sh -m find "Зигги собака"                    # fused: semantic + literal in one call
qmd-search.sh --snippet "agent orchestration"           # rows + matching snippets
qmd-search.sh --min-score 0.5 "quarterly planning"      # drop low-relevance hits
qmd-search.sh --json "agent orchestration"              # structured output for further processing

After getting hits, read the top files directly (they are normal vault paths) or fetch slices with qmd get "<path>:<line>" -l <N>.

Show full SKILL.md (224 more words)Show less

Setup / indexing (only if qmd status shows the vault is not indexed)

bash
qmd collection add ~/Brains/brain --name brain        # index the vault
qmd context add qmd://brain "short description of the vault"
qmd embed                                              # build vectors; re-run until status shows 0 pending
qmd cleanup                                            # compact the index

Refresh after large edits: qmd update && qmd embed. Check health any time with qmd status.

Operational rules (do not skip)

  • One embed at a time, and never search while embedding — both cause empty/garbage results. The wrapper guards searches; for manual qmd calls, check qmd status first.
  • If embedding never reaches 0 pending, check disk space (df -h) — a full disk fails writes silently. See references/cli-reference.md → "Operational gotchas".
  • Vector scores are modest (~0.4–0.6); judge by ranking, not the absolute number.

MCP (native tools) vs. the CLI wrapper

qmd ships an MCP server (qmd mcp, stdio) exposing tools query, get, multi_get, status. If it's registered in the host (e.g. .mcp.json), prefer the native query tool for hybrid search — it returns structured results with no spinner/JSON-parsing/exit-code quirks. Register with:

json
{ "mcpServers": { "qmd": { "command": "qmd", "args": ["mcp"] } } }

Use the wrapper (scripts/qmd-search.sh) when you need what MCP doesn't cover: BM25-only (search), vector-only (vsearch), the literal/native-script grep pass, the fused find mode, --snippet, or --min-score. The bilingual/proper-name rule above applies to both paths.

Quality / evals

evals/fixture.example.json + scripts/run-evals.sh run qmd bench to score search quality (precision/recall/MRR per backend). Baseline and interpretation: evals/BASELINE.md. Re-run after changing the wrapper, the index, or the embedding model; a drop vs. baseline is a regression.

Reference

Full command surface, query grammar (lex:/vec:/hyde:), output formats, models, and recovery steps are in references/cli-reference.md.

© glebis, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (scripts, references) in qmd-search of glebis/claude-skills.

  • SKILL.md
  • evals/BASELINE.md
  • evals/fixture.example.json
  • references/cli-reference.md
  • scripts/qmd-search.sh
  • scripts/run-evals.sh
  • scripts/test_qmd_search.sh

Open the folder on GitHubat commit 3b88261

Compare with similar skills

Qmd Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Qmd Search compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Qmd Search this skillglebis/claude-skills391—~1.5kAutomated safety check: PassMIT
LLM Wikilewislulu/llm-wiki-skill655—~3.7kAutomated safety check: PassNone
LLM Wikipraneybehl/llm-wiki-plugin118—~5.7kAutomated safety check: PassMIT
Obsidian Vault Ingest Pipelinejason-effi-lab/karpathy-llm-wiki-vault721—~669Automated safety check: PassNone
LLM WikiCharlesHoskinson/sevenlayer116—~1.5kAutomated safety check: PassCustom licence
My WikiNimaChu/my-wiki124—~674Automated safety check: PassMIT

Similar skills

  • LLM Wiki

    lewislulu/llm-wiki-skill

    Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…

    655 GitHub stars~3.7k tokensUpdated 5 mo ago
    Knowledge ManagementAuto-check passed
  • LLM Wiki

    praneybehl/llm-wiki-plugin

    Build and maintain an LLM-curated knowledge base from papers, articles, transcripts, notes and project findings.

    118 GitHub stars~5.7k tokensUpdated 28 days ago
    Knowledge ManagementAuto-check passed
  • Obsidian Vault Ingest Pipeline

    jason-effi-lab/karpathy-llm-wiki-vault

    Compiles raw articles, papers and transcripts sitting in an inbox folder into linked Obsidian source, entity and concept pages, then archives the originals.

    721 GitHub stars~669 tokensUpdated 6 mo ago
    Knowledge ManagementAuto-check passed
  • LLM Wiki

    CharlesHoskinson/sevenlayer

    Builds and maintains a persistent, interlinked Obsidian-compatible markdown knowledge wiki in a git repo via three operations — ingest a source into linked pages, answer a question from the…

    116 GitHub stars~1.5k tokensUpdated 1 mo ago
    Knowledge ManagementAuto-check passed
  • My Wiki

    NimaChu/my-wiki

    Work with a local My Wiki knowledge base, Dashboard, and knowledge graph.

    124 GitHub stars~674 tokensUpdated 2 days ago
    Knowledge ManagementAuto-check passed
  • Knowledge Base Health Lint

    jason-effi-lab/karpathy-llm-wiki-vault

    Scans an Obsidian-style wiki for broken double-link references, orphan pages, files missing from the index and unresolved knowledge conflicts, then reports the findings.

    721 GitHub stars~336 tokensUpdated 6 mo ago
    Knowledge ManagementAuto-check passed

More from glebis/claude-skills

All 92 skills in this repo
  • Runs a human-first workflow for labeling PII spans in a transcript, then scores inter-annotator agreement and drafts an adjudicated gold set.

    391 GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check passed
  • Automates a dedicated, logged-in Chrome instance per profile without ever closing the user's own open tabs or browser windows.

    391 GitHub stars~973 tokensUpdated 2 days ago
    Auto-check passed
  • Deep Research

    glebis/claude-skills

    This skill should be used when conducting comprehensive research on any topic using the OpenAI Deep Research API.

    391 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check: notes
  • Elimination Research

    glebis/claude-skills

    This skill should be used for elimination-style research where the user wants to choose from a shortlist of products, tools, services, vendors, or other options using explicit criteria, numeric…

    391 GitHub stars~1.6k tokensUpdated 2 days ago
    Auto-check passed
  • Narrated HTML Presentations

    glebis/claude-skills

    Generates a self-contained HTML presentation with article and slides modes, ElevenLabs voiceover narration and optional GPT Image 2 illustrations.

    391 GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check: notes
  • Writes fictional but realistic coaching or therapy session transcripts for evals, demos and few-shot examples, in several modalities and export formats.

    391 GitHub stars~2.9k tokensUpdated 2 days ago
    Auto-check passed

Works with

Questions about Qmd Search

What does Qmd Search do?

This skill should be used to search the local Obsidian vault / markdown knowledge base by meaning, not just keywords, using the on-device qmd engine (BM25 + vector + LLM rerank). Qmd Search is an agent skill from glebis/claude-skills. This skill should be used to search the local Obsidian vault / markdown knowledge base by meaning, not just keywords, using the on-device qmd engine (BM25 + vector + LLM rerank).

When should I use Qmd Search?

Qmd Search fits situations like: the user asks to search my vault/notes; find notes about X; what do my notes say about Y; do I have anything on Z.

How do I install Qmd Search in Claude Code?

Run `npx skills add glebis/claude-skills --skill qmd-search -a claude-code`. Or copy the skill folder (qmd-search in glebis/claude-skills) into .claude/skills/qmd-search in your project. Claude Code loads it when a task matches its description.

How do I install Qmd Search in Codex?

Run `npx skills add glebis/claude-skills --skill qmd-search -a codex`. Or copy the skill folder (qmd-search in glebis/claude-skills) into .agents/skills/qmd-search in your project. Codex loads it when a task matches its description.

Can I use Qmd Search in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add glebis/claude-skills --skill qmd-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qmd-search, .gemini/skills/qmd-search, .github/skills/qmd-search and .opencode/skills/qmd-search in your project.

What does Qmd Search need to run?

Going by SKILL.md and its folder, Qmd Search needs a shell for the scripts in its folder. Our summary lists: A Bash shell.

Does Qmd Search access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Qmd Search safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Qmd Search use?

Qmd Search is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Qmd Search use?

About 1.5k tokens (SKILL.md is roughly 6.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.4k tokens, read only when the agent opens those files.

What are the alternatives to Qmd Search?

Skills that share tags, products or a category with Qmd Search: LLM Wiki (lewislulu/llm-wiki-skill, 655 stars), LLM Wiki (praneybehl/llm-wiki-plugin, 118 stars), Obsidian Vault Ingest Pipeline (jason-effi-lab/karpathy-llm-wiki-vault, 721 stars) and LLM Wiki (CharlesHoskinson/sevenlayer, 116 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Qmd Search?

glebis (a GitHub user) maintains it in glebis/claude-skills, which has 391 GitHub stars. The repository holds 92 skills in this directory. The repository was last updated on October 8, 2026.

Source: glebis/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.