skills/fact-checking/SKILL.md
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).
npx skillsauth add axiomantic/spellbook fact-checkingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
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.
| 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>
<analysis> Before ANY action: - Current phase? (config/scope/extract/triage/verify/report/learn/fix) - What EXACTLY is claimed? What proves TRUE? What proves FALSE? - AgentDB checked for existing findings? Appropriate verification depth? </analysis>| 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 |
| 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 |
| 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 |
Present three optional modes (default: all enabled):
Autonomous mode detected ("Mode: AUTONOMOUS")? Enable all automatically.
<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 |
Subagent dispatch: Invoke fact-check-extract command.
Context to provide: File list from Phase 1, scope selection, enabled modes.
Subagent dispatch: Invoke fact-check-verify command.
Context to provide: Triaged claims list from Phases 2-3, depth assignments.
When spawning verification agents, provide:
<RULE>Verification agents MUST NOT make verdicts based on general knowledge that contradicts project-specific conventions documented in AGENTS.md.</RULE>
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.
<RULE>NEVER apply fixes without explicit per-fix user approval.</RULE>
<RULE>NEVER apply fixes without explicit per-fix user approval.</RULE>
For each proposed fix:
<FORBIDDEN>Proposing a "correction" that has not itself been verified. A wrong fix is worse than leaving the original claim.</FORBIDDEN>
Checkpoint to .fact-checking/state.json after each claim:
{
"scope": "branch",
"claims": [...],
"completed": [0, 1, 2],
"pending": [3, 4, 5],
"findings": {...},
"bibliography": [...]
}
Offer resume on next invocation.
Skipping Claims
Applying Fixes Without Approval
Ignoring AgentDB
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:
# 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
</EXAMPLE>
If ANY unchecked: STOP and fix. </reflection>
<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>
testing
Use when creating new skills, editing existing skills, or verifying skills work before deployment. Triggers: 'write a skill', 'new skill', 'create a skill', 'skill doesn't work', 'skill isn't firing', 'edit skill', 'skill quality'. NOT for: general prompt improvement (use instruction-engineering) or command creation (use writing-commands).
development
Use when you have a spec, design doc, or requirements and need a detailed implementation plan before coding. Triggers: 'write a plan', 'create implementation plan', 'plan this out', 'break this down into steps', 'convert design to tasks', 'implementation order'. Also invoked by develop during planning. NOT for: reviewing existing plans (use reviewing-impl-plans).
testing
Use when creating new commands, editing existing commands, or reviewing command quality. Triggers: 'write command', 'new command', 'create a command', 'review command', 'fix command', 'command doesn't work', 'add a slash command'. NOT for: skill creation (use writing-skills).
development
Use when about to claim discovery during debugging. Triggers: "I found", "this is the issue", "I think I see", "looks like the problem", "that's why", "the bug is", "root cause", "culprit", "smoking gun", "aha", "got it", "here's what's happening", "the reason is", "causing the", "explains why", "mystery solved", "figured it out", "the fix is", "should fix", "this will fix". Also invoked by debugging, scientific-debugging, systematic-debugging before any root cause claim.