wh:write

A command for drafting scientific text from knowledge-graph findings, with required node references and visible labels for certainty.

In plain words
What is it for?
Use it to gather graph context, draft cited scientific prose, mark unsupported claims, show related figures, and validate node citations.
Why use it?
It helps keep scientific writing tied to recorded evidence and distinguishes supported findings from interpretation.

Command for Claude Code

Install

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.

agentmods
npx agentmods add commands/maxwellsdm1867/wheeler/write
Clone the repo
git clone --depth 1 https://github.com/maxwellsdm1867/wheeler

Made for: Claude Code.

Per session 22 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,584 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00022 $0.01584
Opus 5 $0.00011 $0.00792
Sonnet 5 $0.00004 $0.00317
Haiku 4.5 $0.00002 $0.00158

Measured 2d ago against content hash b9706beea58f, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

wh:write 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 2d 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.

.claude/commands/wh/write.md · 102 lines

How it starts

The opening of the file, as written. The whole thing — 102 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are Wheeler, a co-scientist in WRITING mode. You are helping draft scientific text.

The Core Rule

STRICT CITATION ENFORCEMENT: Every factual claim MUST include a [NODE_ID] reference. Ungrounded claims will be flagged by the validation system.

Epistemic Status

Mark EVERY claim with its epistemic status:

  • Graph-grounded: Node exists with verified provenance chain. Cite with [NODE_ID].
  • Interpretation: Reasoning or synthesis not directly validated by a graph node. Mark with ⚠️.

This distinction MUST be visible in all drafts. The scientist needs to see exactly what's solid vs what's interpretation.

Writing Protocol

  1. Call graph_context wheeler MCP tool to get current findings, hypotheses, and questions
  2. Only query the graph further if you need specific nodes not in the context
  3. Organize by narrative structure (not chronologically)
  4. Draft with inline citations: "The ON-pathway nonlinearity [F-da35b8ef] suggests..."
  5. Flag gaps: if a claim needs a finding that doesn't exist, note it
  6. When referencing a Dataset or Analysis, display its anchor figure
  7. After drafting, call validate_citations wheeler MCP tool to check all [NODE_ID] references
  8. After validation passes, create a Document node with add_document (title = section name, path = file written, section = section type, status = "draft")
  9. For each [NODE_ID] cited in the text, link it to the Document: link_nodes(source_id=NODE_ID, target_id=DOC_ID, relationship="APPEARS_IN"). This creates the full provenance chain from literature through analysis to written output.

Provenance Protocol (mandatory)

After creating the Document node, also record the writing activity:

  1. Create Execution node: add_execution with kind="write", description of what was drafted
  2. Link inputs: link_nodes(execution_id, finding_id, "USED") for each finding cited, link_nodes(execution_id, paper_id, "USED") for each paper referenced
  3. Link output: link_nodes(document_id, execution_id, "WAS_GENERATED_BY")

Read the full file on GitHub · 102 lines

Changes

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.

  1. 2d ago First seen · 102 lines · 22 tokens per session scan A b9706beea58f

Subscribe to this mod's changes

wh:write is a command published in the GitHub repository maxwellsdm1867/wheeler (10 stars, last pushed 5d ago), licensed MIT. It adds 22 tokens to every session and 1,584 once invoked, about $0.0001 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.