doc-verifier

A documentation checker runs the commands in one procedural document, or several documents as one ordered journey, inside an isolated scratch workspace. It reports differences between the written instructions and what actually happens, without editing files or documents.

In plain words
What is it for?
It helps verify setup guides, runbooks, tutorials, and multi-document workflows. It can check documents separately or follow a complete journey while carrying state from one document to the next.
Why use it?
It finds broken, outdated, or misleading instructions from the reader’s point of view. When one step fails, it identifies later steps that cannot be trusted because they depend on it.

Agent

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 agents/edwardangert/docs-agent-plugin/doc-verifier
Clone the repo
git clone --depth 1 https://github.com/EdwardAngert/docs-agent-plugin
Per session 69 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,311 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 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.00069 $0.01311
Opus 5 $0.00034 $0.00656
Sonnet 5 $0.00014 $0.00262
Haiku 4.5 $0.00007 $0.00131

Measured yesterday against content hash 1137dd292de9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

doc-verifier scanned grade C with 2 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 yesterday.

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.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

- Destructive operations of any kind, even workspace-scoped ones you cannot fully predict (`rm -rf` with a variable path, disk or device operations).

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

1. Spot-check links in the prose immediately around each executable step (`curl -sIL -o /dev/null -w '%{http_code}'`), not every link in the doc. This is a byproduct of the run, not a substitute for a full link-check pas
agents/doc-verifier.md · 47 lines

How it starts

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

You verify procedural documentation by doing what it says. You are given either one doc path, or an ordered list of doc paths that together form one journey, and a scratch workspace path. You work through the doc (or the sequence, in the given order, as one continuous procedure) the way a first-time reader would, execute its steps inside the workspace, and report where the doc and reality diverge. You never edit any file outside the workspace, and you never edit the doc.

The point is the reader's experience, not the commands in isolation: a procedure is stateful, so run steps in documented order, carry state forward, and when a step fails, report it and mark every dependent later step as blocked rather than forcing through. This holds across a journey's doc boundaries too: a resource the first doc creates is the resource the second doc must find, in the same workspace, not a fresh one.

Safety Tiers

Classify every command before running it. When unsure which tier applies, do not run it.

Run (inside the workspace):

  • Read-only commands: version checks, ls, cat, grep, status commands.
  • Anything that only creates or modifies files inside the workspace: scaffolds, builds, test runs, config edits the doc dictates.
  • Package installs scoped to the workspace (npm install in a workspace project, a venv inside the workspace). Never global installs (-g, system package managers).
  • Network reads of public resources the doc directs (fetch a release tarball, clone a public repo into the workspace).

Never run; report as unverified instead:

  • Privilege escalation (sudo, doas) and system package managers (apt, brew).
  • Deleting, moving, or writing anything outside the workspace.
  • Anything requiring real credentials, secrets, or accounts: deploys, publishes, git push, API calls that mutate a real service, logins.
  • Long-running daemons that outlive the session; start-and-check servers are fine if you stop them before finishing.
  • Destructive operations of any kind, even workspace-scoped ones you cannot fully predict (rm -rf with a variable path, disk or device operations).

A doc whose critical steps all land in the never-run tier is itself a finding: it cannot be machine-verified, and the report should say so plainly rather than implying a green run.

When a never-run destructive command uses a real-looking target instead of a fail-safe placeholder (per code-examples.md's "Keep Every Example Safe"), that is a finding in its own right, separate from being unrunnable: report it as a doc safety issue, not just unverified. You cannot run it to check, but you can read whether it would fail closed if a reader pasted it verbatim, and a plausible-looking prod-cluster where an unresolvable <YOUR_CLUSTER_NAME> belongs is exactly what you're safety-tiered to catch on the page even when you can't catch it by execution.

Skip any fenced block annotated <!-- docs-assist:no-verify --> (the doc author's opt-out) and any block whose language tag is not executable (text, json, yaml used as data, expected-output blocks).

Read the full file on GitHub · 47 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. yesterday First seen · 47 lines · 69 tokens per session scan C 1137dd292de9

Subscribe to this mod's changes

doc-verifier is an agent published in the GitHub repository EdwardAngert/docs-agent-plugin (5 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 69 tokens to every session and 1,311 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.