一键导入
qmd
Search markdown knowledge bases, notes, and documentation using QMD. Use when users ask to search notes, find documents, or look up information.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Search markdown knowledge bases, notes, and documentation using QMD. Use when users ask to search notes, find documents, or look up information.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Arrange open WibWob-DOS windows into named layout presets: golden, magazine, cinema, triptych, diagonal, spotlight, asymmetric. Use when: "arrange windows", "lay out the desktop", "golden ratio layout", "magazine layout", "cinema mode", "triptych", "diagonal cascade", "spotlight hero window", "asymmetric layout", "Swiss grid", "arrange like a magazine", "make it look nice", "layout preset". Ports the arrange.py presets from wibandwob-dos-tvision. Each preset is a pure math function over window positions — no blessed, no SDK, just batch move/resize.
Convert any URL to clean Markdown instantly. Uses Defuddle for content extraction, falls back to pi-web-browse automatically on 403/bot-block. Use when: 'fetch this URL', 'convert to markdown', 'read this page', 'get article content', 'extract this URL'.
TERMINAL EMULATOR LAYER — control Ghostty itself, below WibWob-DOS. Uses AppleScript to act as a human at the keyboard/mouse: click blessed menu items, send keystrokes, inject shell commands, take PNG screenshots, ghost-click TUI cells. Use when: clicking a menu, sending a keystroke, restarting the TUI, smoke-testing the UI, simulating user input. NOT for: opening microapps, reading window content, or anything the HTTP API can do — use wibwobdos-control for that. Typical sequence: ghostty-control to act → wibwobdos-control to verify. macOS only. Requires Ghostty >= 1.3.0. Scripts: calibrate.sh, click-cell.sh, click-text.sh, menu-click.sh, send-to-terminal.sh, wait-for.sh, restart-wibwob.sh, ghostty-windows.sh.
Surface open ideas and contribute friction back. Run scripts/devlog-open.sh to see unresolved pains and ideas from this week's reflection. Use at the start of any session, or when you notice something worth recording. Triggers on: "devlog", "briefing", "what's been happening", "catch me up", "open ideas", "what should I work on".
APPLICATION LAYER — control what runs inside Ghostty, not Ghostty itself. Talks to the WibWob-DOS HTTP API (port 8099) to open/move/read windows, check desktop state, send messages, screenshot, share to Discord, manage shaders. Use when: opening a microapp, reading a window's content, checking desktop layout, sending a command, managing shaders. NOT for: clicking menus, sending keystrokes, or interacting with the terminal emulator itself — use ghostty-control for that.
Scaffold, register, and dev-loop a new WibWob-DOS microapp end-to-end. Use when: "create a microapp", "new microapp", "scaffold a microapp", "add a microapp", "build a new app for wibwob", "make a wibwob app".
| name | qmd |
| description | Search markdown knowledge bases, notes, and documentation using QMD. Use when users ask to search notes, find documents, or look up information. |
| license | MIT |
| compatibility | Requires qmd CLI or MCP server. Install via `npm install -g @tobilu/qmd`. |
| allowed-tools | Bash(qmd:*), mcp__qmd__* |
Local search engine for markdown content.
!qmd status 2>/dev/null || echo "Not installed: npm install -g @tobilu/qmd"
query{
"searches": [
{ "type": "lex", "query": "CAP theorem consistency" },
{ "type": "vec", "query": "tradeoff between consistency and availability" }
],
"collections": ["docs"],
"limit": 10
}
| Type | Method | Input |
|---|---|---|
lex | BM25 | Keywords — exact terms, names, code |
vec | Vector | Question — natural language |
hyde | Vector | Answer — hypothetical result (50-100 words) |
lex (keyword)
"connection pool" (quoted)performance -sports (minus prefix)handleError asyncvec (semantic)
"how does the rate limiter handle burst traffic""in the payment service, how are refunds processed"hyde (hypothetical document)
expand (auto-expand)
expand: question on its own lineexpand: with other typed lines — it's either a standalone expand query or a full query document| Goal | Approach |
|---|---|
| Know exact terms | lex only |
| Don't know vocabulary | Use a single-line query (implicit expand:) or vec |
| Best recall | lex + vec |
| Complex topic | lex + vec + hyde |
First query gets 2x weight in fusion — put your best guess first.
| Syntax | Meaning | Example |
|---|---|---|
term | Prefix match | perf matches "performance" |
"phrase" | Exact phrase | "rate limiter" |
-term | Exclude | performance -sports |
Note: -term only works in lex queries, not vec/hyde.
{ "collections": ["docs"] } // Single
{ "collections": ["docs", "notes"] } // Multiple (OR)
Omit to search all collections.
| Tool | Use |
|---|---|
get | Retrieve doc by path or #docid |
multi_get | Retrieve multiple by glob/list |
status | Collections and health |
qmd query "question" # Auto-expand + rerank
qmd query $'lex: X\nvec: Y' # Structured
qmd query $'expand: question' # Explicit expand
qmd search "keywords" # BM25 only (no LLM)
qmd get "#abc123" # By docid
qmd multi-get "journals/2026-*.md" -l 40 # Batch pull snippets by glob
qmd multi-get notes/foo.md,notes/bar.md # Comma-separated list, preserves order
curl -X POST http://localhost:8181/query \
-H "Content-Type: application/json" \
-d '{"searches": [{"type": "lex", "query": "test"}]}'
If qmd status fails or collections are missing, run bash scripts/bootstrap.sh.
qmd search (BM25) works immediately — no embeddings needed.
qmd query/vec/hyde require qmd embed (needs GPU or patience on CPU).
Omit -c to search all collections, or pass multiple -c flags.