Agent skill

fact-checking

Use when verifying technical claims in code, docs, or comments before merge. Triggers: 'is this claim correct', 'verify this', 'fact check', 'is this accurate', 'check these assertions', 'are these comments true'. NOT for: checking if AI hallucinated references (use dehallucination).

Stars 5
Forks 2

Install this agent skill to your Project

npx add-skill https://github.com/axiomantic/spellbook/tree/main/skills/fact-checking

SKILL.md

Evidence Hierarchy Reference

This skill follows the shared evidence hierarchy, depth escalation protocol, and mandatory inconclusive conditions defined in skills/shared-references/evidence-hierarchy.md. Verification agents must cite evidence tiers in every verdict. The depth escalation protocol governs re-verification requirements.

CoVe Self-Interrogation Reference

This skill applies the Chain-of-Verification protocol defined in skills/shared-references/cove-protocol.md during claim extraction (Phases 2-3). CoVe self-interrogation runs on synthesized or inferred claims to catch extraction errors before triage. See the shared reference for the full three-step protocol and fact-checking integration notes.

Invariant Principles

  1. Claims are hypotheses - Every claim requires empirical evidence before verdict
  2. Evidence before verdict - No verdict without traceable, citable proof
  3. User controls scope - User selects scope and approves all fixes
  4. Deduplicate findings - Check AgentDB before verifying; store after
  5. Learn from trajectories - Store verification trajectories in ReasoningBank
Pattern Action
RESEARCH_REQUEST ("research", "check", "verify") Dispatch research subagent
UNKNOWN ("don't know", "not sure") Dispatch analysis subagent
CLARIFICATION (ends with ?) Answer, then re-ask
SKIP ("skip", "move on") Proceed to next item
</ARH_INTEGRATION>
</CRITICAL>

Inputs/Outputs

Input Required Description
scope Yes branch changes, uncommitted, or full repo
modes No Missing Facts, Extraneous Info, Clarity (default: all)
autonomous No Skip prompts, use defaults
Output Type Description
verification_report Inline Summary, findings, bibliography
implementation_plan Inline Fixes for refuted/stale claims
glossary Inline Key facts (Clarity Mode)
state_checkpoint File .fact-checking/state.json

Shared Data Structures

Verdict Table

Verdict Meaning Evidence Required
Verified Claim is accurate test output, code trace, docs, benchmark
Refuted Claim is false failing test, contradicting code
Incomplete True but missing context base verified + missing elements
Inconclusive Cannot determine document attempts, why insufficient
Ambiguous Wording unclear multiple interpretations explained
Misleading Technically true, implies falsehood what reader assumes vs reality
Jargon-heavy Too technical for audience unexplained terms, accessible version
Stale Was true, no longer applies when true, what changed, current state
Extraneous Unnecessary/redundant value analysis shows no added info

Bibliography Formats

Type Format
Code trace file:lines - finding
Test command - result
Web source Title - URL - "excerpt"
Git history commit/issue - finding
Documentation Docs: source section - URL
Benchmark Benchmark: method - results
Paper/RFC Citation - section - URL

Workflow

Phase 0: Configuration

Present three optional modes (default: all enabled):

  • Missing Facts Detection - gaps where claims lack critical context
  • Extraneous Info Detection - redundant/LLM-style over-commenting
  • Clarity Mode - generate glossaries for AI config files

Autonomous mode detected ("Mode: AUTONOMOUS")? Enable all automatically.

Phase 1: Scope Selection

<RULE>Ask scope BEFORE extraction. No exceptions.</RULE>

Option Method
A. Branch changes git diff $(git merge-base HEAD main)...HEAD --name-only + unstaged
B. Uncommitted git diff --name-only + git diff --cached --name-only
C. Full repo All code/doc patterns

Phases 2-3: Claim Extraction and Triage

Subagent dispatch: Invoke fact-check-extract command. Context to provide: File list from Phase 1, scope selection, enabled modes.

Phases 4-5: Parallel Verification and Verdicts

Subagent dispatch: Invoke fact-check-verify command. Context to provide: Triaged claims list from Phases 2-3, depth assignments.

Subagent Context Requirements

When spawning verification agents, provide:

  1. The claim and its location
  2. Surrounding code context (minimum 50 lines)
  3. AGENTS.md content (project conventions, glossary, architecture)
  4. Any project-specific glossary terms relevant to the claim
  5. The list of ALL files in scope (not just the claim's file)

<RULE>Verification agents MUST NOT make verdicts based on general knowledge that contradicts project-specific conventions documented in AGENTS.md.</RULE>

Phases 6-7: Report and Learning

Subagent dispatch: Invoke fact-check-report command. Context to provide: All verdicts and evidence from Phases 4-5, enabled modes (for Clarity Mode), bibliography entries.

Phase 8: Fixes

<RULE>NEVER apply fixes without explicit per-fix user approval.</RULE>

  1. Present implementation plan for non-verified claims
  2. Show proposed change, ask approval
  3. Apply approved fixes
  4. Offer re-verification

Fix Verification Step

<RULE>NEVER apply fixes without explicit per-fix user approval.</RULE>

For each proposed fix:

  1. Verify the replacement text is itself accurate by running it through the same claim extraction and verification pipeline
  2. If the fix text would be Refuted or Misleading, revise before presenting
  3. Show proposed change WITH verification result to user
  4. Apply only user-approved fixes

<FORBIDDEN>Proposing a "correction" that has not itself been verified. A wrong fix is worse than leaving the original claim.</FORBIDDEN>


Interruption Handling

Checkpoint to .fact-checking/state.json after each claim:

json
{
  "scope": "branch",
  "claims": [...],
  "completed": [0, 1, 2],
  "pending": [3, 4, 5],
  "findings": {...},
  "bibliography": [...]
}

Offer resume on next invocation.


Skipping Claims

  • No claim is "trivial" - verify individually
  • No batching similar claims without individual verification

Applying Fixes Without Approval

  • No auto-correcting comments
  • Each fix requires explicit user approval

Ignoring AgentDB

  • ALWAYS check before verifying
  • ALWAYS store findings after verification </FORBIDDEN>

Phase 1: Scope selection -> User selects "A. Branch changes" Phase 2: Extract claims -> Found 8 claims in 5 files Phase 3: Triage display:

### Security (2 claims)
1. [MEDIUM] src/auth/password.ts:34 - "passwords hashed with bcrypt"
2. [DEEP] src/auth/session.ts:78 - "session tokens cryptographically random"

Phase 4: Verify claim 1: Read src/auth/password.ts:34-60, found import { hash } from 'bcryptjs' and await hash(password, 12). Cost factor 12 meets OWASP. Verdict: VERIFIED | Evidence: bcryptjs.hash() cost factor 12 | Sources: [1] Code trace, [2] OWASP Password Storage

Phase 6: Report excerpt:

markdown
# Fact-Checking Report
Scope: Branch feature/auth-refactor (12 commits)
Verified: 5 | Refuted: 1 | Stale: 1 | Inconclusive: 1
## Bibliography
[1] src/auth/password.ts:34-60 - bcryptjs hash() call
[2] OWASP Password Storage - https://cheatsheetseries.owasp.org/...
## Implementation Plan
1. [ ] src/cache/store.ts:23 - TTL is 60s not 300s, update comment

If ANY unchecked: STOP and fix.

<FINAL_EMPHASIS> You are a Scientific Skeptic with ISO 9001 Auditor rigor. Every claim is a hypothesis. Every verdict requires evidence. NEVER issue verdicts without concrete proof. NEVER skip triage. NEVER apply fixes without approval. ALWAYS use AgentDB. This is very important to my career. Are you sure? </FINAL_EMPHASIS>

Expand your agent's capabilities with these related and highly-rated skills.

axiomantic/spellbook

spellbook-auditing

Meta-audit skill for spellbook development. Spawns parallel subagents to factcheck docs, optimize instructions, find token savings, and identify MCP candidates. Produces actionable report.

5 2
Explore
axiomantic/spellbook

documentation-updates

Use after modifying library skills, library commands, or agents to ensure CHANGELOG, README, and docs are updated

5 2
Explore
axiomantic/spellbook

project-encyclopedia

[DEPRECATED] Use project-level AGENTS.md files instead. Previously used for first-session codebase onboarding and persistent glossary creation.

5 2
Explore
axiomantic/spellbook

reviewing-impl-plans

Use when reviewing implementation plans before execution. Triggers: 'is this plan solid', 'review the plan', 'check before I start building', 'anything missing from this plan', 'will this plan work', 'audit the implementation plan'. NOT for: reviewing design documents (use reviewing-design-docs) or creating plans (use writing-plans).

5 2
Explore
axiomantic/spellbook

session-resume

Session resume protocol and session repairs handling. Loaded when spellbook_session_init returns resume_available: true, or when session_init returns a repairs array. Triggers: 'resume', 'continue', 'where were we', session resume, session repairs.

5 2
Explore
axiomantic/spellbook

brainstorming

Use when exploring design approaches, generating ideas, or making architectural decisions. Triggers: 'explore options', 'what are the tradeoffs', 'how should I approach', 'let's think through', 'sketch out an approach', 'I need ideas for', 'how would you structure', 'what are my options'. Also invoked by develop when design decisions are needed.

5 2
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results