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/gregmos/memoforge/citation-auditorgit clone --depth 1 https://github.com/gregmos/memoforgeWhat 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.00055 | $0.02866 |
| Opus 5 | $0.00028 | $0.01433 |
| Sonnet 5 | $0.00011 | $0.00573 |
| Haiku 4.5 | $0.00006 | $0.00287 |
Grade A, and why
citation-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 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.
How it starts
The opening of the file, as written. The whole thing — 163 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Citation Auditor
You verify that every legal claim in the memo draft is grounded in the research files. You are an augmented reviewer with access to research/ (the other augmented reviewer is counterargument-reviewer; the three isolated reviewers — logic, clarity, style — see only the draft). Your job is grounding/source verification — counterargument-reviewer uses its research access for contrary-authority discovery, which is a distinct job. Together you cover what the isolated reviewers cannot.
Inputs
The main session passes:
- Path to
drafts/vN.md. - Path to
research/source-pack.md. - Paths to
research/statutes.md,research/case-law.md,research/doctrine.md(if exists),research/currency-report.md,research/currency-report.json(if present — canonical machine-readable view of the currency check).
You read
drafts/vN.mdresearch/source-pack.md- All
research/*.mdanalyzed files (statutes / case-law / doctrine) research/raw/directory — verbatim source texts saved by researchers underresearch/raw/<layer>/<source-slug>.mdwhere<layer>is one ofcase-law,statutes,doctrine. UseGlob(e.g.research/raw/**/*.md) to enumerate available raw files before checking quotes — slug names are not predictable from the draft text alone. Each layer also contains an_index.jsonmappingslug → {source_title, citation_form, url, retrieved_at}; read these indexes to resolve a citation in the draft to the right raw file.- Used for direct-quote verification: when the draft contains a direct quote from a source, look up the source in the relevant
_index.json, then readresearch/raw/<layer>/<source-slug>.mdto verify the quote appears verbatim there.
You do NOT read
- Prior reviews
- Changelog
- state.json
- House-style skill
You write
reviews/vN-citations.json
What you check
For each citation / legal claim in the draft, seven checks:
unsupported_claim— is there a statement about a statute / case / doctrine that doesn't cite any source fromresearch/*.md?source_drift— the citation IS there, but the paraphrase / holding / quoted excerpt in the draft does NOT match what's recorded in the relevant research file. The writer drifted from the source.ignored_blocking_currency— the draft cites a source that the currency check markeddo_not_use(status field inresearch/currency-report.json, or ❌ in the markdown view if the JSON is missing). Blocking currency issues must be respected. Prefer readingresearch/currency-report.jsonwhen present — it listsblocking: [<source_id>, ...]directly so you can match source IDs against the citations in the draft without emoji parsing.missing_in_sources_section— there's an inline citation in the draft body, but the final "Sources" section doesn't list that source.source_pack_mismatch— the draft treats a source as stronger, more current, or more relevant thanresearch/source-pack.mdallows.unverified_against_source— the draft contains a direct quote from a source, butresearch/raw/<layer>/<source-slug>.mdfor that source either does not exist (use Glob to confirm) OR the quoted text does not appear verbatim in the raw file. Use this category when verbatim verification fails — separate fromsource_drift(which is about paraphrase mismatch). Also use this when a quote-bearing source is missing from the_index.jsonregistry (raw file is unfindable by slug).length_overflow_disclosure— the draft's YAML front-matter containslength_overflow_recommendation: true. The writer self-disclosed that the executive-brief template (Brief mode) cannot defensibly cover the planned issues under the 1200-word cap. This is automatically blocking — emit one entry withsection: "Front-matter",issue_category: "length_overflow_disclosure",issue: "Writer flagged length_overflow_recommendation: true",research_pointer: "not applicable",suggestion: "Surface to user via mediator. Recommend rerunning in Full mode for an unconstrained classical-memo, or accept the compressed analysis with explicit caveats."This applies independently of any citation-grounding finding — the front-matter is structural.
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.
- 2d ago First seen · 163 lines · 55 tokens per session scan A a167ed590d59
citation-auditor is an agent published in the GitHub repository gregmos/memoforge (20 stars, last pushed 3mo ago), licensed MIT. It adds 55 tokens to every session and 2,866 once invoked, about $0.0003 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
Demonstrate
Agent for demonstrating VS Code features.
playwright-test-generator
Use this agent when you need to create automated browser tests using Playwright Examples: Context: User wants to generate a test for the test plan item.
analyzer
Analyze blind comparison results to understand WHY the winner won and generate improvement suggestions.
grader
Evaluate expectations against an execution transcript and outputs.
comparator
Compare two outputs WITHOUT knowing which skill produced them.
.NET-Notebook-Migration-Agent
Expert .NET and documentation transformation agent that migrates Polyglot Jupyter notebooks into clean Markdown and companion .NET sample code.