Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add ashlrai/ashlr-plugin/plugin install ashlrWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/ashlrai/ashlr-plugin/ashlr-doctor)<a href="https://agentmods.dev/commands/ashlrai/ashlr-plugin/ashlr-doctor"><img src="https://agentmods.dev/badge/commands/ashlrai/ashlr-plugin/ashlr-doctor.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00037 | $0.00638 |
| Opus 5 | $0.00018 | $0.00319 |
| Sonnet 5 | $0.00007 | $0.00128 |
| Haiku 4.5 | $0.00004 | $0.00064 |
Grade A, and why
ashlr-doctor scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Run the diagnostics script and show the user what's wrong (and how to fix it).
Steps:
-
Run this command via Bash:
bun run ${CLAUDE_PLUGIN_ROOT}/scripts/doctor.tsIf
$CLAUDE_PLUGIN_ROOTis unset, fall back to resolving the plugin root by walking up from the current command file to find.claude-plugin/plugin.json, or use the path already known from other ashlr commands. -
Print the script's stdout verbatim inside a fenced code block. Do not paraphrase, truncate, or re-order lines — the block is designed to be copy-pasted into a GitHub issue.
-
Read the final summary line (
N warnings · M failures). If either count is nonzero, ask the user a single targeted follow-up:"I see {N} warning(s) and {M} failure(s) above. Want me to apply the suggested fixes?"
Do not apply fixes without confirmation. Each
⚠/✗line already contains the exact command to run. -
If the script itself exits non-zero (couldn't find the plugin root at all), print the stderr and stop — nothing else will work until that's resolved.
Cloud check
The report includes a cloud section that pings GET /healthz on the
ashlr backend with a 3-second timeout. Possible status lines:
cloud: healthy (Xms)— backend reachable; X is the round-trip time.cloud: unreachable (timeout/error)— backend not responding. This is a warning only — it does not mark the install as unhealthy or cause the script to exit 1. The fix line suggestsset ASHLR_API_URL_DISABLE=1 to suppress, or check https://status.ashlr.ai.cloud: disabled (ASHLR_API_URL_DISABLE=1)— check intentionally suppressed. Use this in offline environments or CI runs without internet.
Env vars that control the cloud check:
| Variable | Default | Effect |
|---|---|---|
ASHLR_API_URL |
https://api.ashlr.ai |
Override the backend URL (e.g., point at staging or localhost). |
ASHLR_API_URL_DISABLE |
(unset) | Set to 1 to skip the ping entirely. |
If $ARGUMENTS contains --errors, also run:
bun run "${CLAUDE_PLUGIN_ROOT}/scripts/errors-report.ts" $ARGUMENTS
(Strip --errors from the forwarded arguments if the script doesn't accept it.) Append its stdout verbatim under a ## Recent errors section after the main diagnostics block. Display it inside a fenced code block.
No preamble. No trailing summary beyond the follow-up question.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 57 lines · 37 tokens per session scan A 1a88ccdec19f
ashlr-doctor is a command published in the GitHub repository ashlrai/ashlr-plugin (3 stars, last pushed yesterday), licensed MIT. It adds 37 tokens to every session and 638 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
familiar
Interact with your companion — show or change personality, mood, stats, and lore.
recall-save
Generate / overwrite .recall/context.md with Recall's local offline summarizer.
ccc-orchestrate
Sequential and tmux/worktree orchestration guidance for multi-agent workflows.
standup
Show a daily standup summary with completed, in-progress, and blocked tasks across all active epics.
complete
Signal that a skill's work is complete. Triggers downstream subscriptions with "when": "complete" timing. Automatically invoked — do not run manually.
setup
A setup command for configuring claude-mini-hud as Claude Code's terminal status line. It lets the user choose Chinese, English, minimal, or ultra-minimal display text and writes the setting to Claude Code's configuration.