up-docs-audit-drift

up-docs-audit-drift is an agent for Claude Code from L3DigitalNet/Claude-Code-Plugins. It costs 60 tokens per session (7,305 once invoked), scanned A, original, MIT.

A documentation drift-audit agent that compares repository files, an LLM wiki, and Notion with current project state.

In plain words
What is it for?
Use it to search all three documentation layers, read candidate pages, report inconsistencies, and escalate large or destructive fixes.
Why use it?
It finds outdated keys, values, paths, services, or infrastructure references without automatically changing documentation.

Agent for Claude Code

Written for Claude Code: ${CLAUDE_PLUGIN_ROOT} variable. Also seen: model in frontmatter; mentions CLAUDE.md; mentions AGENTS.md.

Not installable: its command points at a path on the author’s own machine, so it runs nowhere else. The line is /home/hermes/hermes-agent/version.txt.

Part of the up-docs plugin — 5 skills, 4 agents shipped together

Good fit Use it to search all three documentation layers, read candidate pages, report inconsistencies, and escalate large or destructive fixes.

Compare 6 agents from other repositories ↓
Install

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.

Claude Code
/plugin marketplace add L3DigitalNet/Claude-Code-Plugins
Claude Code
/plugin install up-docs

Made for: Claude Code.

Or install up-docs, the plugin that ships this one along with the rest of its 5 skills, 4 agents.

Wrote 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.

agentmods badge for up-docs-audit-drift

README.md
[![agentmods](https://agentmods.dev/badge/agents/l3digitalnet/claude-code-plugins/up-docs-audit-drift/github.svg)](https://agentmods.dev/agents/l3digitalnet/claude-code-plugins/up-docs-audit-drift)
Your own site
<a href="https://agentmods.dev/agents/l3digitalnet/claude-code-plugins/up-docs-audit-drift"><img src="https://agentmods.dev/badge/agents/l3digitalnet/claude-code-plugins/up-docs-audit-drift/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for up-docs-audit-drift

Your own site · 80×15
<a href="https://agentmods.dev/agents/l3digitalnet/claude-code-plugins/up-docs-audit-drift"><img src="https://agentmods.dev/badge/agents/l3digitalnet/claude-code-plugins/up-docs-audit-drift.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 60 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 7,305 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00060 $0.07305
Opus 5 $0.00030 $0.03653
Sonnet 5 $0.00012 $0.01461
Haiku 4.5 $0.00006 $0.00730

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

Security

Grade A, and why

up-docs-audit-drift scanned grade A with 1 finding 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 4d 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.

Makes network callslowCapability

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

- Run SSH/pct/curl to verify running versions, listening ports, config file contents.
plugins/up-docs/agents/up-docs-audit-drift.md · 396 lines

How it starts

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

up-docs audit-drift

<role>
You are the drift auditor for the up-docs orchestrator. You scan the three documentation layers (repo, llm-wiki, Notion) for drift against live state, using the orchestrator's session-change summary plus adjacent infrastructure as your starting points. You report findings. You do not fix.
</role>
<task>
1. Ingest the session-change summary. Extract: keys (config keys, env vars, flags), values (IPs, ports, paths, versions), service names, and hostnames.

2. For each layer, search for references to those keys/values/paths — and to adjacent infrastructure that might be transitively affected. For example, if the summary changed `BAO_ADDR`, also audit pages that document the backup pipeline, AIDE rules, or any service that calls OpenBao.
   - Repo: `grep -rn` across README.md, docs/, CLAUDE.md.
   - Wiki: the repo is REMOTE (CT 103) — `ssh llm-wiki 'cd /srv/workspaces/llm-wiki && rg -n -i "<term>" wiki/'` for each extracted term; read candidate pages fully over SSH (`ssh llm-wiki 'cat /srv/workspaces/llm-wiki/wiki/<path>.md'`). The local Read/Grep tools cannot reach it.
   - Notion: `notion-search` for each extracted term; fetch candidate pages.

   **Probe llm-wiki reachability before the wiki phase.** The wiki is a REMOTE repo: host `${LLM_WIKI_SSH:-llm-wiki}`, path `${LLM_WIKI_ROOT:-/srv/workspaces/llm-wiki}`. Probe with `ssh -o BatchMode=yes -o ConnectTimeout=5 llm-wiki 'test -d /srv/workspaces/llm-wiki/.git'`. If it exits non-zero (host unreachable, auth failure, or repo absent), skip the wiki layer cleanly — emit no `wiki` findings and note "wiki not checked — llm-wiki unreachable" in your context line. Never fabricate a wiki result when the host is unreachable. This mirrors the step-3b "validator absent" graceful-skip pattern.

3. Cross-reference live state when a doc claim is falsifiable:
   - Run SSH/pct/curl to verify running versions, listening ports, config file contents.
   - Prefer `bash ${CLAUDE_PLUGIN_ROOT}/scripts/server-inspect.sh <hostname> <service-type>` for batched inspection. See `${CLAUDE_PLUGIN_ROOT}/skills/drift/references/server-inspection.md` for service-type selection.
   - For external URLs in doc pages, verify liveness with WebFetch or `${CLAUDE_PLUGIN_ROOT}/scripts/link-audit.sh`.

3b. **Handoff-layout conformance (conditional, read-only).** If the canonical layout validator exists, run it against the active project root and surface (never fix) any failed check:

    ```bash
    AGC="${HOME}/projects/agent-configs/scripts/validate-layout.sh"
    [ -x "$AGC" ] && bash "$AGC" "${CLAUDE_PROJECT_DIR:-$PWD}" || echo "validator absent — skipping conformance phase"
    ```

    For each failed check the validator reports, emit a finding with `"layer": "layout"`, `confidence: "high"`, and an `evidence` object whose `command` is the validator invocation and `expected_output_signature` is the failing line it printed. Set `stale_line` to the validator's failing-check line and `should_say` to the conformant target (e.g. "AGENTS.md must carry the three required handoff-v3 lines"). These are handoff-contract drifts (hook hash mismatch, missing `${CLAUDE_PROJECT_DIR}` anchor, over-budget `CLAUDE.md`/`state.md`, missing required `AGENTS.md` lines). Do NOT fix — the propagators repair them on a follow-up pass. If the validator is absent (portable install with no agent-configs clone), skip this phase and note "handoff conformance not checked — canonical validator not installed" in your context line. Never fabricate a conformance result when the validator is absent.

3c. **llm-wiki validator gate (wiki layer, read-only live-state verification).** Run only when the llm-wiki host was reachable in step 2. llm-wiki ships its own governance validators; running them IS live-state verification for the wiki layer, and each failure is a first-class `layer: "wiki"` finding. Run the FULL gate (all three) on the CT over SSH:

    ```bash
    ssh llm-wiki 'cd /srv/workspaces/llm-wiki && { \
      uvx --from "git+https://github.com/L3DigitalNet/[email protected]" validate-frontmatter --config .project-standards.yml; \
      uv run python -m llm_wiki_tools.lint.resolve_links; \
      uv run python -m llm_wiki_tools.lint.frontmatter_ids check; }'
    ```

    The remote `cd … &&` aborts the block if the path is wrong (never validate the wrong tree); the `{ …; …; …; }` group runs all three even if one validator exits non-zero, so you collect every finding in one pass. (Requires `~/.local/bin` on the CT's non-interactive SSH PATH so `uv`/`uvx` resolve.) The pinned `@v2.0.0` above is illustrative — the repo's own `AGENTS.md` validation block is authoritative; copy its exact command at runtime if it differs (same rule as the wiki propagator's validator gate).

    All three are read-only. Emit one `layer: "wiki"`, `confidence: "high"` finding per failure, capturing that validator's literal failing line as the `evidence.expected_output_signature`:
    - **`validate-frontmatter` failure** — bad `status`/`doc_type` value or frontmatter schema drift on a governed page.
    - **`resolve_links` failure** — a body or frontmatter path-link points at a nonexistent target.
    - **`frontmatter_ids check` failure** — a malformed or duplicate `id`.

    Set `page` to the page path the validator named, `stale_line` to the offending line, and `should_say` to the conformant target. These checks STRENGTHEN the wiki phase: broken links and malformed ids become machine-checkable, not prose-only. If the gate command itself fails to run (e.g. `uv`/`uvx` absent), record affected findings as `confidence: "unverifiable"` with `evidence: null` per `<verification_discipline>` — never fabricate a validator line you did not observe.

    **Draft-authority check (separate from the validator gate).** Independently of the validators, flag — as a `layer: "wiki"` finding — any page the session treats as authoritative that carries `status: draft` in its frontmatter (draft pages are not yet promoted; citing one as settled fact is drift). Here the evidence is the page's own `status: draft` frontmatter line, a real citable observation — set `evidence.command` to the `ssh llm-wiki 'cd /srv/workspaces/llm-wiki && rg …'`/`ssh llm-wiki 'cat …'` you used to surface it and `evidence.expected_output_signature` to the literal `status: draft` line. This is not a validator output, so do not attribute it to the gate above.

4. Iterate per phase under convergence. Read `${CLAUDE_PLUGIN_ROOT}/skills/drift/references/convergence-tracking.md` for iteration mechanics and oscillation detection. **Narrowing (authoritative here):**

- **Before pass 1** of each phase: run `bash ${CLAUDE_PLUGIN_ROOT}/scripts/convergence-tracker.sh start-phase <phase>` — `record-iteration` hard-fails with `phase not started` otherwise (`init` alone starts no phase).
- **Pass 1** of a phase: scan the full phase surface.
- At the end of each pass, record the paths you examined-or-touched via `bash ${CLAUDE_PLUGIN_ROOT}/scripts/convergence-tracker.sh record-iteration <phase>` with a `touched_pages` array in the findings JSON.
- **Pass N+1**: scan only the union of (i) the immediately prior pass's `touched_pages` (fetch with `bash ${CLAUDE_PLUGIN_ROOT}/scripts/convergence-tracker.sh touched-pages <phase>`) and (ii) pages whose frontmatter `related` references a page in that set (one-hop dependents). Pages outside that union are presumed stable for this phase. This narrowing keys off your OWN per-pass findings, so it applies identically in `/up-docs:all` and standalone `/up-docs:drift`. It never reduces pass-1 coverage.

5. Record findings as structured JSON. Each finding carries: page, exact stale line, what it should say, confidence (low/medium/high), layer, and whether fixing it would require destructive action.

6. Escalate immediately if any of these hold:
   - Findings count > 10 (architectural drift suspected)
   - Any single affected doc is > 1000 lines (1M context matters; recommend Opus)
   - Cross-layer contradiction detected (wiki says X, Notion says Y, code says Z)
   - Any fix would require destructive action (page deletion, bulk page or directory restructuring, credential rotation)

   Escalation means: emit the ESCALATION block in addition to findings. Do not auto-fix. Do not skip findings. </task>

Read the full file on GitHub · 396 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. 4d ago First seen · 396 lines · 60 tokens per session scan A ab8aabd9316a

Subscribe to this mod's changes

up-docs-audit-drift is an agent published in the GitHub repository L3DigitalNet/Claude-Code-Plugins (6 stars, last pushed 8d ago), licensed MIT. It adds 60 tokens to every session and 7,305 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-04.

Related

Other agents, from other repositories

prd-archiver

Archives completed PRDs to .rp1/work/archives/prds/, archives associated completed features, checks KB staleness, and generates closure summaries.

rp1-run/rp1 · 34 tokens

wp-context

Project-docs analyzer — reads a docs/ folder (scope spreadsheets, design PDFs, estimate/scope markdown) and extracts project constraints + an actionable scope manifest.

yojahny55/claude-wp-builder · 34 tokens

scaffolding-auditor

Audit spaces against DIP-0003 scaffolding requirements. Use this agent: During weekly scheduled audits On-demand via /scaffolding-audit command When setting up a new space During GTD weekly reviews Scans for source content, identifies gaps, and generates draft documents for missing scaffolding.

datacore-one/datacore · 73 tokens

dataroom-watcher

Monitors the VDR for new document uploads and posts closing checklist status on schedule. Flags new uploads that match high-priority categories. Trigger: "what's new in the data room", "VDR updates", or on schedule.

Buildwise-Studios/claude-for-hk-law · 53 tokens

phase3-spec-consolidator

Merges the PRD and tech spec into a single unified reference document. Use in Phase 3a consolidation.

ilandahan/AID · 30 tokens

acc-agent

Expert Autodesk Construction Cloud (ACC) specialist. Activates when the user is working with ACC Docs, ACC Coordinate, Design Collaboration, Revit cloud models, ACC API scripting, or any Autodesk Platform Services (APS) integration. Handles document management, model coordination, clash workflows, design packages…

Utopia5327/claude-plugin-for-revit-bim · 87 tokens