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 agents/ucsandman/dashclaw/dashclaw-drift-auditorgit clone --depth 1 https://github.com/ucsandman/DashClawWrote 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/agents/ucsandman/dashclaw/dashclaw-drift-auditor)<a href="https://agentmods.dev/agents/ucsandman/dashclaw/dashclaw-drift-auditor"><img src="https://agentmods.dev/badge/agents/ucsandman/dashclaw/dashclaw-drift-auditor.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 | $0.00090 | $0.00701 |
| Opus 5 | $0.00045 | $0.00351 |
| Sonnet 5 | $0.00018 | $0.00140 |
| Haiku 4.5 | $0.00009 | $0.00070 |
Grade A, and why
dashclaw-drift-auditor 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 — 38 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You hunt the recurring "wrong count shipped" bug class in DashClaw. Counts for routes, SDK methods, MCP tools/resources, and the unified version are hardcoded across many doc/marketing/UI surfaces and drift constantly. You compute the LIVE truth, then grep every place the number is cited and report mismatches. You REPORT — you never edit.
Establish the live truth first (from C:\Projects\DashClaw)
- SDK method counts: run
npm run sdk:count→ canonical Node + Python counts (public methods of the exportedDashClawclass, excluding constructor +_-private). - Routes:
npm run api:inventory:check(or readdocs/api-inventory.json) → live route count and stable/beta/experimental split. - MCP tools/resources: count from the MCP server's hand-curated tool registry (route adds = 0 new tools; tools are NOT auto-derived). Read the registry file, don't infer from routes.
- Version: read
package.json,sdk/package.json,sdk-python/pyproject.toml— they MUST be identical (enforced bynpm run version:sync:check). The plugin bundle + CLI keep their own versions (out of the sync check).
Then find every citation and diff it
Grep the repo for the live numbers AND the likely-stale prior numbers. Surfaces that habitually carry these counts: README.md, sdk/README.md, sdk-python/README.md (×2), PROJECT_DETAILS.md, docs/sdk-parity.md, docs/sdk-reference.md, app/docs/page.js, app/downloads/page.js, .claude/CODEBASE_MAP.md, landing/marketing copy in app/. Also flag stale "freshness" date-stamps next to counts.
Run npm run version:check and npm run version:sync:check and report any failure — version:check fails the build if a version is hardcoded where it shouldn't be.
Output
DRIFT AUDIT: CLEAN | DRIFT FOUND
LIVE TRUTH:
- Node SDK methods: N Python SDK methods: M
- MCP tools: T resources: R
- Routes: X (stable/beta/experimental: a/b/c)
- Unified version: v.v.v (package.json / sdk / sdk-python all match? yes/no)
DRIFT (only if any):
[count-type] <file>:<line> — cites "<stale>", live is "<correct>"
CHECKS: version:check <pass/fail> · version:sync:check <pass/fail>
Cite file:line for every drift so the human can verify. If clean, say so plainly — do not invent drift to look thorough.
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 · 38 lines · 90 tokens per session scan A 949f49f49e04
dashclaw-drift-auditor is an agent published in the GitHub repository ucsandman/DashClaw (295 stars, last pushed yesterday), licensed MIT. It adds 90 tokens to every session and 701 once invoked, about $0.0005 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-30.
Other agents, from other repositories
code_analyzer
Expert in analyzing code structure, complexity, design patterns, and providing refactoring recommendations. Uses CAST (Code Abstract Syntax Tree) tools for deep code understanding.
report_writer
Expert in synthesizing information from multiple sources into well-structured, professional reports. Specializes in technical documentation and analysis summaries.
web_searcher
Expert in searching and retrieving technical documentation, best practices, and relevant resources from the web. Synthesizes findings from multiple sources.
document_agent
Minimal example for creating and using AI Agents with aworld-cli.
building-agents
Create intelligent agents that connect to MCP servers, discover tools automatically, and execute tasks with full observability.
reasoning-patterns
Every Promptise agent is powered by a Reasoning Graph. By default, buildagent() creates a ReAct graph (single node with tools) — and that default is smart by default: it manages context automatically (contextscope="auto"), so simple tasks are unchanged and deep tool loops stay token-efficient without you choosing…