evidence-chain-builder
Score a claim against the evidence behind it.
Skill by Willian8021743
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/willian8021743-evidence-chain-builder
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, security, research
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/evidence-chain-builder
What's inside
- Skill name
evidence-chain-builder- Description
- Score a claim against the evidence behind it. Use this skill whenever the user wants to know whether something is actually supported — "is that true", "what's the source", "that sounds made up", "can you back that up" — or before repeating any number, statistic, market size, study result or benchmark that arrived without a citation, especially from a model or a summary. It separates the claim from its evidence, grades each item by source type, and reports an evidence score plus an explicit list of what is *not* backed by independently verifiable sources. Also trigger when the user is preparing something that will be published, filed or relied on — a report, a filing, compliance material, a post quoting figures — and the claims need sources pinned to them first. Trigger on 证据链, 论断验证, 防幻觉, 信源可信, 有出处吗, 这句话有依据吗, 논거 검증, 근거, 裏付け, 出典.
- License
- MIT
- Compatibility
- Python 3.8+ on PATH. Standard library only — nothing to install, no network, works offline. Writes nothing to disk unless the caller redirects the output.
- Instructions
- 174 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (4)
- SKILL.md
- evals.json · evals/
- evidence-types.md · references/
- evidence_chain.py · scripts/
SKILL.md (first lines)
# Evidence Chain Builder
## Overview
`scripts/evidence_chain.py` splits a claim from its evidence and scores how well the
evidence carries it. Every evidence item is tagged with a source type, and the type
decides whether that item counts:
| type | counts as independently verifiable |
|---|---|
| `official` — a primary document, filing, standard, or the issuing body itself | yes |
| `paper` — peer-reviewed literature, or a dataset with a stated method | yes |
| `data` — raw measurements, logs, exports the user can re-run | yes |
| `internal` — the user's own notes, records, or an undocumented internal number | no |
| `assertion` — the claim restated, someone's opinion, or no source stated | no |
The score is the share of items that count, as a percentage. `internal` and
`assertion` are not "worth less" by taste — they are items nobody outside the
conversation can check, and that is the property the score is measuring.
Full taxonomy, edge cases and tagging rules: `references/evidence-types.md`.
## The one boundary that matters
**This tool does not decide whether a claim is true. It grades the evidence, and
nothing else.**
That boundary is the whole point. A grader that also pronounced on truth would
reproduce exactly the failure it exists to catch — a confident verdict unsupported
by anything. So the tool reports what can be checked and what cannot, and stops.
Two consequences to carry into your answer:
- A score of 100 does not mean the claim is correct. It means every item offered is
the kind of thing that could be checked. Nobody has checked it yet.
- A low score does not mean the claim is false. It means the claim is **not
established**, which is a different and more useful statement.
Never upgrade "not established" into "false", and never upgrade a high score into
"true". Both are the same mistake in opposite directions.
## Workflow
1. **Separate the claim from the evidence before running anything.** Write the claim
as one sentence. If the user gave you three conclusions, that is three runs — a
single chain will average unrelated things and hide the weak one.
2. **Tag every item, and tag honestly.** An item is `official` only if it names a
document or issuing body that exists independently of the conversation. "Our
records show" is `internal`. "Studies suggest" with no study is `assertion`. If
you cannot tell what an item is, it is `assertion` until the user says otherwise —
guessing a stronger type defeats the tool.
3. **Run the tool** (command below).
4. **Read the verdict band, not just the number.** The bands are defined below.
5. **Name the gap concretely.** Do not report "the evidence is weak". Report which
items are unverifiable and what specifically would replace each one — "the
failure-rate figure needs the QA report it came from, not a description of it".
6. **Report the score and the gap together.** A score without the unverifiable list
invites the reader to treat the number as a quality grade, which it is not.
## Command
```bash
python3 scripts/evidence_chain.py \
--claim "Device X failure rate is below 0.5%" \
--evidences "2025 QA audit report@official:QA dept" \
"no complaints on record@internal:support" \
"peer-reviewed cohort study@paper:JAMA"
```
Evidence strings take an optional `@type:source` suffix; one argument per item, or
several joined with `||`. No suffix means `assertion`.
| flag | meaning |
|---|---|
| `--claim TEXT` | the claim to test |
| `--evidences E1 E2 ...` | evidence items, optionally `@type:source` |
| `--from FILE.json` | `{claim, evidences:[{text, source, type}]}` for longer chains |
| `--threshold N` | score needed to count as supported (default `50`) |
| `--subject TEXT` | what the claim is about, printed in the header |
| `--json` | machine-readable output, for gating or downstream use |
| `--fail-below-threshold` | exit `1` when not supported; default is exit `0` either way |
Exit codes: `0` the chain was scored, whatever the verdict; `2` usage or input
error. Non-zero-to-signal-unsupported is opt-in, because a caller that treats any
non-zero exit as "the command broke" would report a finding as an error.
Run `python3 scripts/evidence_chain.py --help` for the authoritative flag list.
## Reading the result
| condition | what you may say |
|---|---|
| no evidence supplied | nothing is established. There is no chain to stand on. |
| score below threshold | **Do not treat this claim as a conclusion.** Say which items are unverifiable. |
| score at or above threshold | Supported *to the stated threshold*. The sources still need a human check. |
The verdict text is deliberately phrased to survive being quoted out of context.
Keep that phrasing when you relay it; do not round it up to "verified".
Threshold defaults to 50 because a chain where the majority of the weight is
checkable is at least auditable. Raise it with `--threshold` when the claim will be
published, filed, or acted on — 80 for anything going to a regulator or a customer.
Say which threshold you used, since the verdict depends on it.
## What this cannot do
| asked for | status |
|---|---|
| Confirm a cited source exists | Not checked. The tool never fetches anything. |
| Detect a fabricated citation | Not possible here — a plausible-looking but invented reference scores as `paper` |
| Judge whether the claim is true | Out of scope by design; see the boundary above |
| Weigh study quality — sample size, bias, design | Not modelled. `paper` means "a paper was named", not "a good paper" |
| Rank sources against each other | Types are unordered beyond verifiable / not verifiable |
| Resolve conflicting evidence | Two sources that disagree both score; the conflict is yours to surface |
| Handle a claim with several parts | Run it per part; averaging hides the weak link |
State these limits plainly when they bite rather than padding the answer. If the user
needs source existence checked, that is a search task — do it as one, and treat the
result as a new evidence item, not as the same chain.From Willian8021743/windows-ai-toolkit, MIT.
More from Willian8021743/windows-ai-toolkit
- 0.592score
contact-vcard-extractor
Willian8021743
Extract contact information from text, chat logs, web pages, screenshots, business card photos, and QR codes/OCR results; clean names, phone numbers, email…
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
exa-search
Willian8021743
Search the web, read webpages as markdown, and run filtered web retrieval with Exa MCP.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
bilibili-hub
Willian8021743
A skill for reading and writing Bilibili data with Python + UV, using bilibili-api-python + aiohttp.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
doubao-tts
Willian8021743
Use Doubao Text-to-Speech (Volcengine TTS) to convert text into audio files.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
codex-image
Willian8021743
Generate images using OpenAI's Codex backend API with gpt-image-2 tool.
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
douyin-downloader
Willian8021743
Download Douyin (TikTok) videos from share links.
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
document-polisher
Willian8021743
Transform any DOCX document with world-class brand styling.
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
brand-xlsx
Willian8021743
Brand-aware Excel engine.
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
brand-pptx
Willian8021743
Brand-aware PowerPoint engine.
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
brand-docx
Willian8021743
Brand-aware Word engine.
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
excel-hygiene
Willian8021743
A rigorous "second pair of eyes" on any xlsx before it goes out.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
free-tts
Willian8021743
Free text-to-speech (edge-tts), with no API key or registration required.
SkillAFreshness: A★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 20, 2026 (8 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Willian8021743
- 0.592score
doubao-tts
Willian8021743
Use Doubao Text-to-Speech (Volcengine TTS) to convert text into audio files.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
exa-search
Willian8021743
Search the web, read webpages as markdown, and run filtered web retrieval with Exa MCP.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
bilibili-hub
Willian8021743
A skill for reading and writing Bilibili data with Python + UV, using bilibili-api-python + aiohttp.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
codex-image
Willian8021743
Generate images using OpenAI's Codex backend API with gpt-image-2 tool.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
contact-vcard-extractor
Willian8021743
Extract contact information from text, chat logs, web pages, screenshots, business card photos, and QR codes/OCR results; clean names, phone numbers, email…
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
douyin-downloader
Willian8021743
Download Douyin (TikTok) videos from share links.
SkillAFreshness: A★ 1Claude Code +9
Cite this page
evidence-chain-builder skill. Agent Mart. https://agentmart.dev/skills/willian8021743-evidence-chain-builder (last updated 2026-10-24)