doctor

SKILL.md

QMD Doctor

Run a comprehensive health check on the qmd configuration for this project. Perform each check below in order and report results as [PASS], [FAIL], or [WARN]. At the end, summarize the total number of issues found.

Remediation Reference

For any failure, suggest the appropriate fix:

Failure Fix
qmd binary not found bun install -g @tobilu/qmd
.claude/qmd.json missing Run /qmd:configure
Missing project field Run /qmd:configure
Collection not in qmd index Run /qmd:configure
Collection naming mismatch Run /qmd:configure to rename
Git hook missing/wrong marker Run /qmd:configure and re-enable git hook
Git hook has old --index flag Run /qmd:configure and re-enable git hook
Guard enabled but no guardedDirs Run /qmd:configure
YAML config missing collection Run /qmd:configure

Checks

1. qmd binary

command -v qmd

[PASS] if found (print the path), [FAIL] if not.

2. Config file exists

Check if .claude/qmd.json exists using Read. If it does not exist, report [FAIL] and stop — remaining checks depend on it.

3. Valid JSON

Read .claude/qmd.json. If you can parse it as JSON, [PASS]. If the content is malformed, [FAIL] and stop.

4. Has "project" field

Check the parsed JSON has a non-empty project string. [PASS] or [FAIL].

5. Default index database

test -f "$HOME/.cache/qmd/index.sqlite" && echo "exists" || echo "missing"

[PASS] if exists, [FAIL] if missing.

6. Global config

test -f "$HOME/.config/qmd/index.yml" && echo "exists" || echo "missing"

[PASS] if exists, [FAIL] if missing.

7-9. Collection checks

For each key in the collections object:

7. Collection in qmd index:

bash ${CLAUDE_PLUGIN_ROOT}/scripts/qmd-list-collections.sh

Check if the collection name appears in the output. [PASS] or [FAIL].

8. Naming convention: If the project name is set, check that the collection name starts with {project}_. [PASS] or [WARN].

9. YAML config entries

If ~/.config/qmd/index.yml exists, check that each collection name appears in it:

grep -F "{collection_name}:" "$HOME/.config/qmd/index.yml"

[PASS] or [FAIL] per collection.

10-11. Git hook checks (only if gitHook is true)

10. Check .git/hooks/post-commit exists. If it does, verify it contains the marker comment # qmd-auto-index:{project}. [PASS], [WARN] (marker mismatch), or [FAIL] (missing).

11. Check the hook does NOT contain the deprecated --index flag. [PASS] or [WARN].

12. Guard config (only if guard is true)

Check that guardedDirs is a non-empty array. [PASS] with count, or [WARN] if empty.

Output Format

Print each result on its own line:

[PASS] qmd binary found: /path/to/qmd
[PASS] .claude/qmd.json exists
[PASS] .claude/qmd.json is valid JSON
[PASS] Project name: myproject
[FAIL] Default index database missing: ~/.cache/qmd/index.sqlite
...

N issue(s) found.

If all checks pass, end with: All checks passed.

Weekly Installs
3
GitHub Stars
36
First Seen
Mar 1, 2026
Installed on
gemini-cli3
github-copilot3
codex3
kimi-cli3
amp3
cline3