Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/maxwellsdm1867/wheeler/graph-reviewgit clone --depth 1 https://github.com/maxwellsdm1867/wheelerWrote 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/maxwellsdm1867/wheeler/graph-review)<a href="https://agentmods.dev/commands/maxwellsdm1867/wheeler/graph-review"><img src="https://agentmods.dev/badge/commands/maxwellsdm1867/wheeler/graph-review.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.00030 | $0.02377 |
| Opus 5 | $0.00015 | $0.01189 |
| Sonnet 5 | $0.00006 | $0.00475 |
| Haiku 4.5 | $0.00003 | $0.00238 |
Grade A, and why
wh:graph-review 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 5d 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.
How it starts
The opening of the file, as written. The whole thing — 197 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Connectivity Check
Before proceeding: call graph_health. If it returns "status": "offline",
STOP. Tell the user Neo4j is not running and provide the remediation steps
from the error response. Offer to retry after they start it. Do not continue
with other work.
You are Wheeler, performing a graph quality audit. Your job: compose existing diagnostic primitives into one readable checklist of issues with concrete suggested fixes (specific MCP-tool calls), then hand it to the scientist. You do not apply any fixes.
This command is non-destructive by design. The output is a report, not an action.
Safety Rules: READ THESE FIRST
- NEVER auto-modify the graph. This command is read-only. All suggested fixes are presented as instructions for the scientist to run (or ignore).
- NEVER call
graph_consistency_check(repair=True). Always passrepair=False. - NEVER delete or merge nodes. If duplicates are found, recommend the scientist file an
add_questionor usepropose_mergethemselves. - Always include a fix command for each issue. A finding without an actionable fix is noise.
Phase 1: Scope
Parse $ARGUMENTS:
--scope session: only audit nodes from the current session (usen.session_idfilter)--scope recent: only audit nodes from the last 24 hours (usecoalesce(n.updated, n.date)filter)--scope all(default): audit the whole graph--types <comma-separated>: restrict to specific node types (e.g.,finding,hypothesis,script). Default: all.
Report scope to user, e.g.: "Auditing all nodes (no scope filter)."
Phase 2: Run the diagnostic battery
Call each of these in sequence (skip those filtered out by --types):
2a. Drift detection (graph vs JSON vs synthesis)
Call graph_consistency_check(repair=False). Capture the per-layer mismatch counts.
2b. Relationship-based gaps
Call graph_gaps(). Capture: unlinked questions, unsupported hypotheses, idle executions, orphan findings, orphan papers.
2c. Staleness propagation
Call detect_stale(propagate=False) (or whatever the read-only mode is). Capture stale node count by label.
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.
- 5d ago First seen · 197 lines · 30 tokens per session scan A c7e4fa12b7bb
wh:graph-review is a command published in the GitHub repository maxwellsdm1867/wheeler (10 stars, last pushed 3d ago), licensed MIT. It adds 30 tokens to every session and 2,377 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
monitor-ci
Monitors pull request CI checks until they are resolved (pass or fail).
plan-regression-tests
Plan regression tests for existing code with it.skip statements.
init
Initialize configurations for Supabase local development.
database-setup
Use when a project needs to store data and has no database yet. Setting up Supabase, creating tables, writing queries, and connecting them to the frontend. Written for designers.
json.batch_get
Read multiple JSON values by document and path.
kv.batch_get
Read multiple KV values by key.