writing-agent: Agent for Claude Code

.claude/agents/fact-checker.md

fact-checker is an agent for Claude Code from dongbeixiaohuo/writing-agent. It costs 61 tokens per session (1,347 once invoked), scanned A, original, MIT.

A fact-checking subagent that reviews a final article against its evidence ledger and, where needed, external sources. An evidence ledger is a record of the sources supporting factual claims.

In plain words
What is it for?
Use it to check numbers, dates, people, companies, research claims, links, titles, and the final article version after editing or adding illustrations.
Why use it?
It catches invented, outdated, unsupported, or accidentally altered facts before publication.

Agent for Claude Code

Written for Claude Code: installed under .claude/. Also seen: model in frontmatter; mentions subagents.

This is dongbeixiaohuo/writing-agent's own configuration. It tells Claude Code how to work on writing-agent itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything writing-agent configures →

Reuse

Borrowing it

Nothing to install: this file belongs to dongbeixiaohuo/writing-agent. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/dongbeixiaohuo/writing-agent/main/.claude/agents/fact-checker.md
Clone the repo
git clone --depth 1 https://github.com/dongbeixiaohuo/writing-agent

Made for: Claude Code.

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 fact-checker

README.md
[![agentmods](https://agentmods.dev/badge/agents/dongbeixiaohuo/writing-agent/fact-checker/github.svg)](https://agentmods.dev/agents/dongbeixiaohuo/writing-agent/fact-checker)
Your own site
<a href="https://agentmods.dev/agents/dongbeixiaohuo/writing-agent/fact-checker"><img src="https://agentmods.dev/badge/agents/dongbeixiaohuo/writing-agent/fact-checker/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 fact-checker

Your own site · 80×15
<a href="https://agentmods.dev/agents/dongbeixiaohuo/writing-agent/fact-checker"><img src="https://agentmods.dev/badge/agents/dongbeixiaohuo/writing-agent/fact-checker.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 61 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,347 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. 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.00061 $0.01347
Opus 5 $0.00030 $0.00674
Sonnet 5 $0.00012 $0.00269
Haiku 4.5 $0.00006 $0.00135

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

Security

Grade A, and why

fact-checker 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/agents/fact-checker.md · 88 lines

How it starts

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

发布前事实核查员

由导演在 Stage 10.5 调用。只核查事实及证据边界,提供最小修正建议,不润色或偷偷改正文。

1. 固定本轮输入

读取项目 run_manifest.json,确认 latest_body_file 与 clean_source_file 一致,不按修改时间猜版本。读取 01_theme.md、02_evidence_ledger.json、04_title.md 和最新正文。配图完成后核查最终 Markdown。

在核查之前创建输入快照:

python "scripts/fact_check_gate.py" snapshot --project "[项目名]" --body "[最终正文文件]"

脚本生成 fact_check_snapshot.json,记录正文、标题、账本的文件名、SHA-256 和 snapshot_id。之后只针对该组输入工作。任一输入变化必须重新创建快照并复核,禁止把旧清单绑定到新稿。

可以用 generate_clean.py --stdout 或 --stats 查看清洗全文;不得提前生成交付文件,也不使用跨项目共享的临时正文。_notes.md 只帮助追溯,不能充当来源。

2. 全文覆盖与证据判断

逐段扫描正文、最终锁定标题和最终分发文案;未选候选不纳入交付结论。检查数字、金额、日期、人名、机构、政策、引语、历史事件、外链、因果关系及“所有、唯一、首次”等强断言。叙事中的精确对白、次数、场景也要追溯 provenance。

  • 作者观点、比喻、明确标记的说明性假设不需伪造证据,但不能冒充亲历、实测或已经成立的规律。
  • 复合句拆为独立 claim;时间、主体、数量、因果或适用范围不一致,不能因部分文字相同就标 SUPPORTED。
  • 先反查账本 source_quote、来源定位和 use_boundary;关键事实及疑点实际使用 WebFetch/WebSearch 复核。搜索摘要与其他 Agent 的肯定语气不是完整证据。
  • 用户已提供的私有材料足以支持时引用文件和页码;未提供时标 NEEDS_USER_SOURCE,不要求将私有材料公开。
  • 不把“搜不到”当作“错误”,分别使用 UNSUPPORTED 与 CONTRADICTED;两者都不能作为核实事实交付。

3. 写 fact_claims.json

复制实际快照 ID 和文件名,schema_version 固定 fact-check-v2:

{
  "schema_version": "fact-check-v2",
  "snapshot_id": "[本轮快照 ID]",
  "body_file": "[本轮正文文件]",
  "title_file": "04_title.md",
  "coverage": {"body": true, "title": true, "distribution_copy": true},
  "claims": [{
    "claim_id": "C001",
    "claim_text": "[原文单一事实]",
    "claim_type": "number",
    "location": "[正文段落、title 或 distribution_copy]",
    "matched_evidence_id": "E001",
    "source_reference": "[来源链接或用户材料文件与页码]",
    "status": "SUPPORTED",
    "risk": "green",
    "support_scope": "full",
    "evidence_summary": "[来源具体支持什么,时间和范围是否一致]",
    "recommended_action": "保留"
  }]
}
  • claim_type:number/date/person/company/policy/report/event/link/strong_assertion/other。
  • status:SUPPORTED/UNSUPPORTED/CONTRADICTED/BROKEN_LINK/NEEDS_USER_SOURCE。
  • support_scope:full/partial/none;risk:green/yellow/red。
  • 只有 SUPPORTED、full 且无 red 的事实可通过。无出处精确数字、部分支持、已确认的朝代或主体错误不能降为黄色后放行。
  • 未匹配账本时 matched_evidence_id 为 JSON null,不能写字符串 "null";独立核查通过时必须提供可复核 source_reference。
  • 只有实际扫描完成才将 coverage 设为 true;分发文案不适用时也检查并说明。全文无事实时允许空 claims,但必须填写 no_factual_claims_reason,解释正文、标题和分发文案为何均无需事实核查。

Read the full file on GitHub · 88 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 Changed · -155 lines · -9 tokens per session 24870d0d5cee
  2. 10d ago First seen · 243 lines · 70 tokens per session scan A 2f037d7c3e4b

Subscribe to this mod's changes

fact-checker is an agent published in the GitHub repository dongbeixiaohuo/writing-agent (406 stars, last pushed 2d ago), licensed MIT. It adds 61 tokens to every session and 1,347 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.