Skip to content
Back to skills

Fact Check

ASecurity

Checks any claim against the web — news, numbers, quotes, people, companies, science, history — finds the evidence (primary sources first), grades each claim Confirmed, Reported, Unverified or Contradicted with a confidence level and the reason, and makes any text that uses it say no more than the evidence allows. A source saying something is evidence, not fact. (localstack)

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsrustgobashgitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add localoy-ai/localstack --skill fact-check --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fact Check?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fact Check
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/localoy-ai-fact-check/badge)](https://www.skillsdirectory.com/skills/localoy-ai-fact-check)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
# GENERATED from SKILL.md.tmpl — edit the .tmpl, then run scripts/build.sh.
name: fact-check
version: 0.1.0
publisher: localoy
capabilities: [files, web, browser]
description: >-
  Checks any claim against the web — news, numbers, quotes, people,
  companies, science, history — finds the evidence (primary sources first),
  grades each claim Confirmed, Reported, Unverified or Contradicted with a
  confidence level and the reason, and makes any text that uses it say no
  more than the evidence allows. A source saying something is evidence, not
  fact. (localstack)
author: localoy
license: MIT
platforms: [linux, macos, windows]
metadata:
  hermes:
    tags: [research, verification, facts, localstack]
    related_skills: [market-research, lead-draft, lead-reach, social-post]
allowed-tools:
  - Bash
  - Read
  - Write
  - WebSearch
  - WebFetch
  - AskUserQuestion
triggers:
  - fact-check this
  - is this true
  - check these facts
  - verify before we send
  - are we sure
  - is this news real
  - did this really happen
  - how confident are we
tags: [research, verification, fact-check]
---

## When to invoke this skill

Any time a claim needs checking, whatever it is about: a news story, a
number, a quote, a statistic, a scientific finding, a historical date, a
person's title, a company's round, a viral post. Two uses:

- **Asked directly** — "is this true?", "did this really happen?", "how sure
  are we?": answer each claim with its grade, a confidence level and why.
- **Before saying it** — before saying something as true to someone outside — a note that
congratulates a founder on a round, a post that quotes a number, an email
that names a customer — and whenever someone asks "is this true?" or "are we
sure?". Other skills call it before they write a fact into anything that
leaves the folder: `/lead-draft` before a draft states a fact about a lead,
`/social-post` before a caption states a number.

## Evidence is not fact — the hard boundary

A page saying something is **evidence that it was said**, by someone, on a
date. Whether it is **true** is a judgement about that evidence, and the
judgement is the grade. Three mistakes this skill exists to stop (all seen
on 2026-10-06, congratulating five founders on their rounds):

- **The hedge that disappears.** An article said Corgi "reportedly raised";
  the summary said "raised". Every hedge in a source — reportedly, according
  to, sources say, is said to, rumoured, plans to — travels with the claim to
  the last word written.
- **The sentence out of context.** "Aayush, JP and Aditya" read as three
  people when the founder list two lines below says "Aditya (JP)
  Jayaprakash". A person's name, title and company come from the source that
  lists people (the company's team or founder page, the person's own
  profile), never from a passing mention.
- **One source, said twice.** Two outlets repeating one report are one
  source. Trace a claim to where it began; independence means each found it
  out for itself.

Never upgrade a grade to make the writing easier. Never write a claim more
strongly than its grade allows.

## The grades

| Grade | When | How it may be written |
|---|---|---|
| **Confirmed** | A primary source states it (the company's own post, filing, official page, the person's own words), or two independent sources each reported it themselves | As fact: "raised a $75M Series B" |
| **Reported** | One secondary source, or any source that hedges | With the hedge, named: "reportedly raised, per TechCrunch" — or left out |
| **Unverified** | Nothing found beyond the claim itself | Not written as fact; ask, or leave it out |
| **Contradicted** | Sources disagree | Not written; show both sides to the person |

Every claim also gets a **confidence level** — how sure you are of the
grade, given everything found, in one plain line of why:

- **High** — the evidence is direct and strong: a primary source, or
  independent sources that agree, and nothing credible against it.
- **Medium** — the evidence is real but thin or indirect: one good outlet,
  a hedge, a primary source that is vague, or a detail (amount, date) that
  sources state differently.
- **Low** — little to go on: one weak or partisan source, an anonymous post,
  a very fresh story still changing, or credible sources against it.

The grade says what the evidence is; the confidence says how much to trust
that reading. A Confirmed claim from an official page is High; Reported by
one careful outlet doing its own reporting is often Medium; a viral post
with no source is Unverified, Low.

Also note **Stale** beside a grade when the evidence is older than the claim
needs (a "recent" round announced a year ago; a title from an old profile):
say the date, and write it in the past.

## What you need first

- **The claims**, or the text to check (a draft, a list, a table), and **what
  it will be used for** — a public post needs Confirmed; an internal note can
  carry Reported with its hedge.
- **The topic** for the file name: `<topic>` (`yc-founders`, `launch-post`).

If the text is in the folder already (a draft under `PLAN-<topic>.md`'s
"## Drafts", a `leads-<topic>.csv`, `research-<topic>.md`), read it there.
Ask for anything still missing in a SINGLE message, then wait.

## Procedure

**1. Split into claims.** One checkable statement per line: who, what,
number, date ("Corgi raised at a $4B valuation in July 2026"; "Aditya
Jayaprakash is CEO of Blacksmith"; "Weave's Series A was $13.5M"). Names and
titles are claims too. Opinions and the sender's own news are not checked.

Scratch for this run lives in `.localstack/work/{date}-{slug}/` — hidden, one directory per run, so a new run never clobbers an earlier one and the folder's top level stays the standard files. Scratch is disposable; old run directories may be deleted freely.

**2. Gather evidence, primary first.** Search the open web, then read the
pages themselves (a search snippet is a pointer, not evidence). For each
claim, look in this order and stop when it is Confirmed:
1. The primary source — whoever the claim is about or who made it: the
   company's own announcement or filing; the government agency, court,
   regulator or statistics office's own page; the study or paper itself
   (not the press release about it); the full speech, video or transcript
   for a quote; the person's own profile or post; an official directory
   (for YC companies: the company's ycombinator.com page lists founders and
   batch).
2. Independent reporting — an outlet that did its own reporting (an
   interview, a document seen, a reporter on the scene), not a rewrite. For
   claims already doing the rounds, an established fact-checker's verdict
   (Reuters, AP, AFP Fact Check, Snopes, PolitiFact, Full Fact) counts, with
   its date.
3. Anything else, labelled for what it is: an aggregator, a wire repost,
   Wikipedia (a pointer to its own citations, which you then read), a
   forum, a social post.

Search both ways: for the claim, and for it being false ("<claim> false",
"<claim> denied", "correction"). A correction or retraction outranks the
story it corrects. For fresh news, note the time: early reports change, and
a story under a day old is rarely High.

For each piece of evidence record, in
`.localstack/work/{date}-<topic>/evidence.md`: the claim, the URL, who
published it, its date, the date read, and the **exact words** (at most 40)
that bear on the claim — including any hedge. Read the words in their
context: the sentence before and after, and for people the list or heading
they sit under.

**3. Grade** each claim from its evidence by the table above. A claim whose
primary source and reporting disagree is Contradicted, even if the reporting
is louder.

**4. Rewrite to the grade.** Go through the text that will be used and change
every sentence so it says no more than its claims' grades allow: drop the
amount that is only Reported, add "reportedly" and the outlet, take out the
Unverified, write a Stale fact in the past. Show each change.

**5. Write** `facts-<topic>.md` at the top of the working folder:

```
# Facts — <topic>
Checked: YYYY-MM-DD · for: <what the text is used for>

| Claim | Grade | Confidence — why | Evidence (exact words) | Source | Published | Read |
|---|---|---|---|---|---|---|
| Firecrawl raised a $75M Series B | Confirmed | High — the company's own post, signed by its CEO | "We raised a $75M Series B led by Smash Capital" | https://… (Firecrawl blog) | 2026-09-22 | 2026-10-06 |
| Corgi raised at a $4B valuation | Reported | Medium — one outlet, citing another, hedged | "reportedly raised more money at $4B" (citing Forbes) | https://… (TechCrunch) | 2026-07-23 | 2026-10-06 |

## Changes to the text
- <before> → <after> — because <claim> is <grade>

## Could not check
- <claim> — looked at: <where>
```

A rerun replaces the file; CHANGELOG.md and git keep the history.

**Standard files.** This folder is kept in files any agent already reads. Update them in place; never scatter output into new folders.
- **AGENTS.md** — create it if missing. localstack owns only the block between `<!-- localstack:start -->` and `<!-- localstack:end -->`; rewrite that block, never anything outside it. The block says what this folder is for, the rules (drafts only; nothing is sent without the user's explicit yes, one message at a time; no invented facts), a map of the files below, and one line per topic (its PLAN, its lead count, the next unticked step) and per report (its file and date).
- **CHANGELOG.md** — create it if missing (`# Changelog`). Add one bullet for this run under today's `## YYYY-MM-DD` heading, newest date first: the skill, the topic, and the counts or outcome (e.g. `- lead-search austin-dentists: 18 found, 3 skipped as already contacted`).
- **TODOS.md** — create it if missing (`# TODOs`). Add each open next action as `- [ ] <action> (<topic>)`; tick items this run finished; never delete lines.
- **DESIGN.md** — decisions meant to last (positioning, tone, channels to use or avoid). Read it before writing anything a person will see; add to it only when the user states or approves a decision.

For this step: the CHANGELOG line gives the topic and the count per grade.
One TODO per Unverified or Contradicted claim the text still needs
(`- [ ] confirm: <claim> (fact-check <topic>)`).

**6. Report.** For a direct question, lead with the answer per claim —
grade, confidence and the one-line why, with the best source. For a text,
lead with what changed in it and why, then the grade counts. Say plainly which claims cannot be said as fact and what would
confirm them.

**Completion status.** End the chat report with one of:
- **DONE** — completed, with the evidence named (files written, counts, URLs).
- **DONE_WITH_CONCERNS** — completed, and list each concern.
- **BLOCKED** — cannot proceed; say what blocked it and what was tried.
- **NEEDS_CONTEXT** — missing information; say exactly what is needed.

## Quality bar

- Every claim in the final text has a row, and its wording matches its grade.
- Every row has a confidence level with a reason a person can check.
- The claim was searched for being false too, and any correction is shown.
- Every Confirmed row quotes a primary source or two independent ones.
- No hedge in a source is missing from the text that relies on it.
- Every person's name and title is quoted from a page that lists people.

Files in this skill

  • SKILL.md11.2 KB
  • SKILL.md.tmpl9.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…