Show HN: CiteGuard – local CLI for checking citations in Markdown reports CiteGuard, a new open-source command-line tool released under the MIT license, checks citations in Markdown reports generated by AI agents and deep-research tools, flagging dead links, title mismatches, weak claim-source overlap, and suspicious redirects without requiring API keys or sending telemetry. The tool, available on GitHub from developer larrylot, offers deterministic per-URL verdicts, an offline fixtures mode for CI, and JSON output for audit trails, positioning itself as a local alternative to asking an LLM to verify citations. Local CLI that verifies citations in agent / deep-research Markdown reports. citeguard check report.md → per-citation verdicts: URL resolve, title/host soft-match, optional claim–source overlap. - No API keys for core checks - No telemetry , no SaaS, no account - Offline --fixtures mode for CI - MIT licensed Exploration bet for The Lord 0 SEK . Not a merchant product. | | CiteGuard | Ask ChatGPT / another LLM | |---|---|---| | Reproducible | Deterministic resolve + scores | Non-deterministic prose | | Offline CI | --fixtures planted cases | Needs network + model | | Cost / keys | Free local HTTP | API key / subscription | | Audit trail | JSON verdicts per URL | Chat transcript | | Hallucination check on the checker | No LLM in the loop | Can invent “looks fine” | CiteGuard does not claim to prove a source supports a legal/scientific conclusion. It flags dead links, title bait, weak overlap, and shady redirects — the failure modes that show up in agent research dumps. Portable SKILL.md Cursor / Claude / Codex / agentskills.io format : - Canonical: skill/SKILL.md /larrylot/citeguard/blob/main/skill/SKILL.md - Cursor mirror: .cursor/skills/citeguard/SKILL.md /larrylot/citeguard/blob/main/.cursor/skills/citeguard/SKILL.md - skills CLI layout: skills/citeguard/SKILL.md /larrylot/citeguard/blob/main/skills/citeguard/SKILL.md npx skills add larrylot/citeguard -s citeguard -y cd citeguard python3 -m venv .venv source .venv/bin/activate pip install -e ". dev " Offline CI-style check on a clean planted report citeguard check fixtures/clean.md --fixtures A bad report dead links — exits 1 citeguard check fixtures/dead link.md --fixtures Title-bait SEO farm planted as "asyncio docs" citeguard check fixtures/title mismatch.md --fixtures Machine-readable citeguard check fixtures/mixed.md --fixtures --json Example human output: CiteGuard — fixtures/mixed.md Summary: {'clean': 3, 'dead': 1, 'title mismatch': 1, 'total': 5} ------------------------------------------------------------ OK L3 https://docs.github.com/en/actions ... DEAD L7 https://example.invalid/dead-citation-404 ... TITLE L9 https://example.invalid/python-asyncio-guide Live network check no fixtures : citeguard check path/to/agent-report.md citeguard check path/to/agent-report.md --json --no-overlap | Verdict | Meaning | |---|---| | clean | Resolved; title/claim checks passed | | dead | 404 or network failure | | http error | Non-success HTTP e.g. 500 | | title mismatch | Link text soft-match vs