Search the vault using QMD semantic search. An agent skill from breferrari/obsidian-mind.

MITAuto-check passedAgent Workflows

Install Qmd

skills CLI
$ npx skills add breferrari/obsidian-mind --skill qmd -a claude-code

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

GitHub CLI
$ gh skill install breferrari/obsidian-mind qmd --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/breferrari/obsidian-mind.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/qmd .claude/skills/qmd && 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
GitHub stars
5k
Token cost
~1.7k tokens
SKILL.md length
764 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Search the vault using QMD semantic search. An agent skill from breferrari/obsidian-mind.

  • Works in 3 steps: MCP tools (preferred when registered) —… → CLI fallback — qmd --index… → Grep / Glob / Read — last resort, only…
  • Proactively for past decisions
  • SKILL.md covers Tool Surfaces — Preference Order, Named Index (This Vault), Commands and Bootstrap (Fresh Clone), plus 2 more sections
  • Calls node

What it does

Qmd is an agent skill from breferrari/obsidian-mind. Search the vault using QMD semantic search. Use PROACTIVELY before reading files. Preference order: (1) MCP tools — mcpqmdquery, mcpqmdget, mcpqmdmultiget, mcpqmdstatus — if they appear in your tool menu, use them first; (2) CLI qmd --index <name ... as fallback; (3) Grep/Glob only when QMD is not installed. Trigger proactively for past decisions, incidents, people, meetings, architecture, patterns, or any vault content — and after creating/editing notes to check for duplicates and related content.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering MCP servers, Software architecture and Agent memory. It works with Model Context Protocol and Obsidian. The repository describes itself as: A self-organizing Obsidian vault that gives AI coding agents persistent memory. The licence is MIT.

When your agent uses it

  • Proactively for past decisions
  • Any vault content — and after creating/editing notes to check for duplicates and related content

Example prompts

  • “/qmd”

Workflow steps

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

  1. MCP tools (preferred when registered) — mcpqmdquery, mcpqmdget, mcpqmdmulti_get, mcpqmdstatus. If these appear in your tool menu, the MCP…
  2. CLI fallback — qmd --index query|search|vsearch|get|multi-get. Use when the MCP server isn't registered (older vault clones, Windows…
  3. Grep / Glob / Read — last resort, only when QMD is not installed at all. These burn context on full file reads and don't rank by relevance.

What it can do on your machine

Read from SKILL.md and the folder at commit d02e3cc. 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

    Shell commands in SKILL.md call:

    • node

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

  • Network

    No URLs in SKILL.md.

    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 loads about 1.7k tokens when it runs. Until then it costs about 132 tokens; SKILL.md has 764 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~132
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from breferrari/obsidian-mind at commit d02e3cc, republished under its MIT licence (© breferrari). 764 words, ~1,746 tokens.

Download SKILL.mdSave it as .claude/skills/qmd/SKILL.md (or your agent's skills folder).
name
qmd
description
Search the vault using QMD semantic search. Use PROACTIVELY before reading files. Preference order: (1) MCP tools — mcp__qmd__query, mcp__qmd__get, mcp__qmd__multi_get, mcp__qmd__status — if they appear in your tool menu, use them first; (2) CLI `qmd --index <name> ...` as fallback; (3) Grep/Glob only when QMD is not installed. Trigger proactively for past decisions, incidents, people, meetings, architecture, patterns, or any vault content — and after creating/editing notes to check for duplicates and related content.

Before reading vault files directly, search with QMD first. It returns relevant snippets without burning context on full file reads.

Tool Surfaces — Preference Order

Pick the highest surface available and stop. All three read the same SQLite store (see Named Index), so they return the same results; the choice is about interface ergonomics and context cost.

  1. MCP tools (preferred when registered) — mcp__qmd__query, mcp__qmd__get, mcp__qmd__multi_get, mcp__qmd__status. If these appear in your tool menu, the MCP server is live and pre-scoped to this vault. Call them directly — no --index argument needed, no shell involved, typed arguments. This is the intended path during a session.
  2. CLI fallback — qmd --index <name> query|search|vsearch|get|multi-get. Use when the MCP server isn't registered (older vault clones, Windows install drift, disabled in .mcp.json), or for one-off shell checks outside a session. Always pass --index <name>.
  3. Grep / Glob / Read — last resort, only when QMD is not installed at all. These burn context on full file reads and don't rank by relevance.

Never fall through surfaces without cause — if MCP is registered, calling the CLI in a Bash tool is just a slower path to the same result.

Named Index (This Vault)

This vault uses a named QMD index so queries, updates, and context strings stay scoped to this vault — not blended with any other vault that shares the machine. Every QMD command in this document passes --index <name>.

The name resolves the same way on all three surfaces (CLI, MCP, SessionStart hook), so they always point at the same SQLite store:

  1. qmd_index in vault-manifest.json, when set — an explicit pin.
  2. Otherwise the vault folder name, slugified. The template ships qmd_index empty so every install gets its own store without being asked a question.

Pin the field if you want a name that survives renaming the vault folder, or want to keep a store you already built.

Read the resolved name before running commands rather than assuming either branch:

bash
INDEX=$(node -e '
  const ok = (s) => typeof s === "string" && /^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(s);
  const m = JSON.parse(require("fs").readFileSync("vault-manifest.json", "utf8"));
  if (m.qmd_index && !ok(m.qmd_index)) {
    process.stderr.write("qmd_index is set to an invalid name: " + JSON.stringify(m.qmd_index) + "\n");
    process.exit(1);
  }
  const slug = require("path").basename(process.cwd()).normalize("NFKD").toLowerCase()
    .replace(/[^a-z0-9._-]+/g, "-").replace(/-{2,}/g, "-").replace(/^[^a-z0-9]+|[-._]+$/g, "");
  const name = [m.qmd_index, slug, m.template].find(ok);
  if (!name) { process.stderr.write("no usable qmd index name — set qmd_index in vault-manifest.json\n"); process.exit(1); }
  process.stdout.write(name);
') || exit 1
qmd --index "$INDEX" query "..."

The value is used as both a CLI argument and a filesystem path (~/.cache/qmd/<name>.sqlite), so an invalid pin must fail here rather than propagate — hence the explicit check instead of m.qmd_index || slug.

In-session, substitute the resolved value directly in your commands — it is stable across the vault's lifetime unless the folder is renamed.

Commands

Each operation lists the MCP call first, then the CLI equivalent. Prefer MCP when available.

Search (pick one per query)
  • Hybrid (best quality) — mcp__qmd__query with searches=[{type:"lex", query:"..."}, {type:"vec", query:"..."}] and an intent arg. CLI: qmd --index <name> query "..." --json -n 10. Use for complex or conceptual queries.
  • Keyword (fast BM25) — mcp__qmd__query with searches=[{type:"lex", query:"..."}]. CLI: qmd --index <name> search "..." --json -n 10. Use for exact terms, names, ticket numbers, dates.
  • Semantic only — mcp__qmd__query with searches=[{type:"vec", query:"..."}]. CLI: qmd --index <name> vsearch "..." --json -n 5. Use for exploratory queries where you don't know the exact words.
Show full SKILL.md (289 more words)Show less
Retrieve
  • By path — mcp__qmd__get with path arg. CLI: qmd --index <name> get "path/to/file.md".
  • By docid — mcp__qmd__get with #abc123 syntax. CLI: qmd --index <name> get "#docid".
  • Batch by glob — mcp__qmd__multi_get with pattern arg. CLI: qmd --index <name> multi-get "org/people/*.md" --json -l 40.
Index Management (CLI only — MCP exposes read surfaces)
  • qmd --index <name> update — Re-index after file changes (fast, ~1-2s incremental). The SessionStart hook and the PostToolUse debounced refresh both run this automatically; manual invocation is rarely needed.
  • qmd --index <name> embed — Regenerate vector embeddings (slower, run after bulk changes).

Bootstrap (Fresh Clone)

The QMD SQLite store lives outside the repo (~/.cache/qmd/<index>.sqlite), so a fresh clone starts with no index. Run the bootstrap once:

bash
node --experimental-strip-types .scripts/qmd-bootstrap.ts

It resolves the index name (pinned qmd_index, else the vault folder slug) and reads qmd_context from vault-manifest.json, registers the collection, attaches the vault context, walks the vault, and generates embeddings. Idempotent — safe to re-run.

Each case lists the preferred MCP call; fall back to the CLI equivalent if MCP isn't registered.

  • User mentions a past decision, incident, person, project → mcp__qmd__query (hybrid).
  • User asks "what did we decide about X" → mcp__qmd__query (hybrid with intent describing the decision context).
  • User mentions a person by name → mcp__qmd__query with searches=[{type:"lex", query:"<name>"}].
  • Before creating a new note → mcp__qmd__query with searches=[{type:"vec", query:"<topic>"}] to check for existing content.
  • After creating a note → mcp__qmd__query with searches=[{type:"vec", query:"<note title>"}] to find notes that should link to it.
  • Loading context for review prep → mcp__qmd__multi_get with pattern="perf/evidence/*.md".
  • Loading 1-on-1 context → mcp__qmd__query with searches=[{type:"lex", query:"<person name> 1-1"}].

After Bulk Changes

Run qmd --index <name> update && qmd --index <name> embed in the shell. The SessionStart hook and the PostToolUse debounced refresh run update automatically, but embed should be run explicitly after sessions that create many notes.

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

Files

Just SKILL.md in .claude/skills/qmd of breferrari/obsidian-mind.

Open the folder on GitHubat commit d02e3cc

Compare with similar skills

Qmd 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 compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Qmd this skillbreferrari/obsidian-mind5k—~1.7kAutomated safety check: PassMIT
Agent RecallGoldentrii/AgentRecall-X371—~5.2kAutomated safety check: NotesMIT
Agent Memory MCPdavila7/claude-code-templates32k7 repos~526Automated safety check: PassMIT
Swarmvaultswarmclawai/swarmvault708—~6.1kAutomated safety check: PassMIT
MemPalace Setup and OperationMemPalace/mempalace59k—~2.2kAutomated safety check: PassMIT
Context Mode Searchmksglu/context-mode26k—~250Automated safety check: PassCustom licence

Similar skills

  • Agent Recall

    Goldentrii/AgentRecall-X

    Persistent compounding memory for AI agents. An agent skill from Goldentrii/AgentRecall-X.

    371 GitHub stars~5.2k tokensUpdated 11 days ago
    Agent WorkflowsAuto-check: notes
  • Agent Memory MCP

    davila7/claude-code-templates

    A hybrid memory system that provides persistent, searchable knowledge management for AI agents (Architecture, Patterns, Decisions).

    32k GitHub starsUsed in 7 repos~526 tokens
    Agent WorkflowsAuto-check passed
  • Swarmvault

    swarmclawai/swarmvault

    Use SwarmVault when the user needs a local-first knowledge vault that writes durable markdown, graph, search, dashboard, review, chat-session, context-pack, task-ledger, static AI export, retrieval…

    708 GitHub stars~6.1k tokensUpdated 3 mo ago
    Knowledge ManagementAuto-check passed
  • Installs and configures MemPalace as a private local palace, a shared-brain hub or a client of an existing hub, including MCP registration and version-correct initialization.

    59k GitHub stars~2.2k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Context Mode Search

    mksglu/context-mode

    Search context-mode's persistent FTS5 knowledge base for previously indexed local project content, documentation, or session memory. Trigger…

    26k GitHub stars~250 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • remindb Memory Writer

    radimsem/remindb

    Guides an agent writing to a remindb memory server: structured notes go in as files parsed into a node tree, single text facts go in through MemoryWrite.

    129 GitHub stars~2k tokensUpdated 2 mo ago
    Agent WorkflowsAuto-check passed

More from breferrari/obsidian-mind

  • Excalidraw Diagram

    breferrari/obsidian-mind

    Generate Excalidraw diagrams from text content. An agent skill from breferrari/obsidian-mind.

    5k GitHub stars~3.9k tokensUpdated 3 days ago
    Auto-check passed

Questions about Qmd

What does Qmd do?

Search the vault using QMD semantic search. An agent skill from breferrari/obsidian-mind. Qmd is an agent skill from breferrari/obsidian-mind. Search the vault using QMD semantic search.

When should I use Qmd?

Qmd fits situations like: proactively for past decisions; any vault content — and after creating/editing notes to check for duplicates and related content.

How do I install Qmd in Claude Code?

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

How do I install Qmd in Codex?

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

Can I use Qmd 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 breferrari/obsidian-mind --skill qmd -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, .gemini/skills/qmd, .github/skills/qmd and .opencode/skills/qmd in your project.

What does Qmd need to run?

Going by SKILL.md and its folder, Qmd needs the command-line tools its instructions call (node).

Does Qmd access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Qmd 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. Review the folder before installing.

What licence does Qmd use?

Qmd 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 use?

About 1.7k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Qmd?

Skills that share tags, products or a category with Qmd: Agent Recall (Goldentrii/AgentRecall-X, 371 stars), Agent Memory MCP (davila7/claude-code-templates, 32k stars), Swarmvault (swarmclawai/swarmvault, 708 stars) and MemPalace Setup and Operation (MemPalace/mempalace, 59k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Qmd?

breferrari (a GitHub user) maintains it in breferrari/obsidian-mind, which has 4,974 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 6, 2026.

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