citation-crosscheck
Conditionally double-blind bibliographic cross-check (double-blind only when the host can isolate the web agent; a flag-only heuristic when isolation can't be…
Skill by wanshuiyin
Chalk Labs
Need help deploying citation-crosscheck?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code. Read the repository before you give any tool access to your data.
npx agentmarket install skill/wanshuiyin-citation-crosscheck-3c65a0
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: spreadsheets, security, research, agent-building
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/citation-crosscheck
Tools it pre-approves 7
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(*),Read,Grep,Glob,Write,WebFetch,WebSearch
What's inside
- Skill name
citation-crosscheck- Description
- Conditionally double-blind bibliographic cross-check (double-blind only when the host can isolate the web agent; a flag-only heuristic when isolation can't be attested): one agent extracts each cited entry verbatim from the local .bib, a second independently re-fetches the same paper's record from the web while blind to the .bib, and a third extractor emits a mechanical field-by-field delta to catch dropped/re-ordered authors, wrong years, wrong venues, and bad DOIs/arXiv ids. The main agent (never a shard) assigns the MATCH/MINOR/MISMATCH verdict per reference, and exports a side-by-side spreadsheet. Use when user says "citation crosscheck", "double-blind citation check", "verify bib against scholar", "bib field audit", "引用交叉核对", or before submission when bibliography FIELD accuracy (not just existence) must be certified.
- License
- MIT
- Allowed tools
- Bash(*),, Read,, Grep,, Glob,, Write,, WebFetch,, WebSearch
- Instructions
- 541 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves some shell commands
- Instructions call the network
Agent Skills spec issues
- body: 541 lines (spec recommends under 500)
Files (2)
- SKILL.md
- cx_verify.py · scripts/
SKILL.md (first lines)
# Citation Cross-Check (conditionally double-blind bib-vs-web field audit)
> **Codex mirror adaptation (normative).** This skill has no cross-model jury *by
> design* — it is an evidence instrument, not an acquittal step (see the acceptance-gate
> note in Step 2, and pair it with `citation-audit` for the cross-model verdict). A and B
> are read-only extraction shards and C emits a mechanical per-field delta, so every
> verdict is assigned by the main agent from that delta plus its own primary-source
> fetch — not by any shard and not by a reviewer model.
>
> **Blindness is NOT automatically identical across hosts — it is *conditional on
> isolation*, and the gate enforces that.** The whole cross-check rests on B never seeing
> the `.bib`. On the mainline, the `Agent` tool gives B a fresh context. On a Codex host
> the frontmatter grants **no delegation tool** (no `Agent`, no `spawn_agent` — see
> `allowed-tools`), so:
> - **If** the host can dispatch B in a genuinely isolated context that does **not** inherit
> the main agent's history (which has already read the `.bib` in Step 1) — passing B only
> the title+first-author list — B may set `blind:true` and the run certifies normally.
> - **Otherwise** (B would run in the main context, or "fresh sequential context" cannot be
> guaranteed to drop the parent's `.bib` view), B MUST set `blind:false`. The Step-3.5
> gate then **downgrades every `MATCH`/`MINOR` to `ESCALATE`**: the run still *flags*
> discrepancies for the main agent's Step-4 webcheck, but it *certifies nothing*. It is a
> labelled heuristic, not a double-blind certification.
>
> So the mirror never *claims* blindness it cannot deliver: it either has real isolation and
> attests it, or it declares `blind:false` and drops to flag-only. Do not add a
> `spawn_agent`-based reviewer/continuation route — the trust decision is the main agent's
> `WebFetch`, and it must not be delegated to a shard.
> 🔒 **Do not wrap this skill in `/loop`, `/schedule`, or `CronCreate`.** It is
> verdict-bearing — it emits a per-reference verdict that gates `.bib` edits (an evidence
> instrument, not a cross-model acquittal; see the acceptance-gate note in Step 2).
> Re-running it on a timer adds no signal (the verdict changes only when the
> *bibliography* changes).
> Schedule the external wait that precedes it: bibliography finalized → run once. See
> [`../shared-references/external-cadence.md`](../shared-references/external-cadence.md).
## Why this exists (and how it differs from `citation-audit`)
`citation-audit` is a single cross-model reviewer that judges three things holistically:
existence, metadata, and **context-fit** (is the cited paper used for a claim it
actually supports?). This skill does **not** do context-fit. It does one thing that a
single reviewer cannot do reliably: an **adversarial, field-level diff** (double-blind when the host can isolate the web agent, a labelled flag-only heuristic otherwise)
of the local `.bib` entry against an *independently reconstructed* record.
The failure mode it targets is the hand-entry error that survives a plausibility read:
a **dropped or re-ordered author**, a **wrong year**, a **swapped venue**, a **DOI that
404s**. A single reviewer that sees the `.bib` entry tends to anchor on it and rate it
"looks correct." Two agents that never see each other's output cannot anchor — a
discrepancy only survives if *both* independent records agree, and the verifier reports
exactly where they diverge.
In practice it catches dropped/re-ordered authors, wrong years, and bad DOIs that a
single-pass audit rated "looks clean" — while `NEEDS_WEBCHECK` stops it from
false-flagging a legitimate non-arXiv (blog / tech-report) citation as fabricated. Use it
**in addition to** `citation-audit`, not instead: `citation-audit` protects your *review
score* (context-fit); this protects
against the *integrity red flag* of a wrong or fabricated reference (existence + fields).
| | `citation-audit` | `citation-crosscheck` (this) |
|---|---|---|
| Owns | existence + metadata + **context-fit** | **existence + field accuracy**, adversarially |
| Method | one cross-model reviewer | **two extractors (blind when isolation is attested) + a mechanical field-diff** |
| Reads the .tex claims? | yes | no (bibliographic only) |
| Deliverable | KEEP/FIX/REPLACE/REMOVE per entry | **side-by-side .xlsx** + MATCH/MINOR/MISMATCH |
| Best at catching | wrong-context citation | dropped/re-ordered author, wrong year/venue/DOI |
## Constants
- **BLIND = conditional** — the web agent (B) MUST be prompted with only each paper's title +
first author, plus its opaque `dedup_key` (a run-local ordinal that carries no
bibliographic content), and MUST NOT read the `.bib` or any repo file. B attests
`blind:true` **only** when the host isolates its context so it cannot inherit the `.bib`
(see the mirror-adaptation note above); otherwise B attests `blind:false` and the Step-3.5
gate certifies nothing (flag-only). Do not relax the prompt restriction, and never assert
`blind:true` without real isolation — an un-isolated `blind:true` is the one thing that
defeats the whole cross-check.
- **SOURCES** = arXiv (`/abs/<id>`, `/bibtex/<id>`), DBLP, CrossRef, ACL Anthology,
NeurIPS/PMLR proceedings, OpenReview. Report what the fetched page shows; never
fabricate a field.
- **VERDICTS** (assigned by the **main agent only**, in Step 4 — never by a shard) =
`MATCH` (bibliographically equivalent, cosmetic-only) / `MINOR`
(formatting or a preprint-vs-published venue, no correction required) / `MISMATCH`
(real discrepancy: wrong/missing author, wrong year, wrong venue, wrong id) /
`NEEDS_WEBCHECK` (B could not confirm existence, but the entry is a
`@misc`/blog/tech-report whose `url` B's index-based search structurally cannot see —
the main agent must fetch that `url` in Step 4 before any verdict; **never** downgrade
such an entry straight to `MISMATCH`).
- **SCOPE** = cited-only by default (entries that render in the `.bbl`); `--all` also
covers uncited `.bib` entries.
- **OUTPUT** = `<paper-dir>/citation_crosscheck_<date>.xlsx` (+ the four intermediate JSONs —
`cx_A_ourbib`, `cx_B_web`, `cx_C_fielddiff`, and the gate's `cx_gate.json` — kept for audit).
## Workflow
### Step 1 — Resolve the citation set (deterministic, main agent)
```bash
# Search the paper's own source tree, not the whole repo: bundled author-kit /
# template .tex carry demo \cite{...} that inflate the set. Set PAPER_DIR to the dir of
# the main .tex (\documentclass + \bibliography); recurse (cites often live in
# sections/*.tex); exclude vendored/example dirs.
PAPER_DIR="<dir of the paper's main .tex>"
cd "$PAPER_DIR"
python3 - <<'PY'
import re, pathlib
# Skip vendored/example/template trees: bundled author kits carry demo \cite{...}.
# NOTE: this is a NAME match — a dir you *want* audited must not match (rename it or
# narrow SKIP), e.g. `examples_of_results/` would be skipped.
SKIP = re.compile(r'(?i)(^|/)(.*template.*|.*upstream.*|.*example.*|.*vendor.*)(/|$)')
# Verbatim-ish blocks AND inline \verb|...| / \lstinline are code samples, not citations.
VERB = re.compile(r'\\begin\{(verbatim|lstlisting|minted|Verbatim)\}.*?\\end\{\1\}', re.S)
# The optional arg may itself contain brackets: \lstinline[language={[LaTeX]TeX}]|...|
VERBINLINE = re.compile(r'\\(?:verb|lstinline)\*?'
r'(?:\[(?:[^\[\]]|\[[^\]]*\])*\])?\s*'
r'([^\sA-Za-z])(?:(?!\1).)*\1', re.S)
# url/href/path args may contain a literal % that is NOT a comment. Neutralize them
# BEFORE comment-stripping, or a real \cite later on that line is silently lost.
URLCMD = re.compile(r'\\(?:url|href|path|nolinkurl)\s*\{[^{}]*\}')
COMMENT = re.compile(r'(?m)(?<!\\)%.*$')From wanshuiyin/Auto-claude-code-research-in-sleep, MIT.
More from wanshuiyin/Auto-claude-code-research-in-sleep
- 0.699score
figure-spec
wanshuiyin
Generate deterministic publication-quality architecture, workflow, and pipeline diagrams from structured JSON (FigureSpec) into editable SVG.
SkillAFreshness: A★ 18KClaude Code +9 - 0.699score
paper-illustration-image2
wanshuiyin
Generate publication-quality academic illustrations through a local Codex app-server bridge that uses Codex native image generation.
SkillAFreshness: A★ 18KClaude Code - 0.699score
proof-orchestrator
wanshuiyin
Manage a stateful, run-directory-based proof project with Codex: continuation across runs, run-local source bookkeeping, manual GPT Pro handoff packages when…
SkillAFreshness: A★ 18KClaude Code +9 - 0.699score
render-html
wanshuiyin
Render an ARIS Markdown / JSON artifact (IDEA_REPORT, AUTO_REVIEW, KILL_ARGUMENT, PAPER_PLAN, research-wiki state, etc.) into a single-file HTML view designed…
SkillAFreshness: A★ 18KClaude Code +9 - 0.699score
proof-orchestrator
wanshuiyin
Manage a stateful, run-directory-based proof project: continuation across runs, run-local source bookkeeping, manual GPT Pro handoff packages when a local…
SkillAFreshness: A★ 18KClaude Code - 0.699score
paper-poster-html
wanshuiyin
DEFAULT poster pipeline — build an academic conference poster (ICML/NeurIPS/ICLR/CVPR/...) as a single HTML/CSS file with measurement-driven hard gates, real…
SkillAFreshness: A★ 18KClaude Code - 0.699score
lean-formalize
wanshuiyin
Develop and verify a mathematical proof in Lean, continue an incomplete Lean project, or audit whether it proves the original statement.
SkillAFreshness: A★ 18KClaude Code - 0.695score
experiment-queue
wanshuiyin
SSH job queue for multi-seed/multi-config ML experiments with OOM-aware retry, stale-screen cleanup, and wave-transition race prevention.
SkillAFreshness: A★ 18KClaude Code - 0.694score
arxiv
wanshuiyin
Search, download, and summarize academic papers from arXiv.
SkillAFreshness: A★ 18KClaude Code +9 - 0.694score
comm-lit-review
wanshuiyin
Communications-domain literature review with Claude-style knowledge-base-first retrieval.
SkillAFreshness: A★ 18KClaude Code - 0.694score
ablation-planner
wanshuiyin
Use when main results pass result-to-claim (claim_supported=yes or partial) and ablation studies are needed for paper submission.
SkillAFreshness: A★ 18KClaude Code +9 - 0.694score
claims-drafting
wanshuiyin
Draft patent claims for an invention.
SkillAFreshness: A★ 18KClaude Code
Signals
- Stars
- 18,007
- Forks
- 1,488
- Open issues
- 58
- Last commit (this folder)
- Oct 19, 2026 (12 days ago)
- Last release
- Sep 28, 2026 (1 month 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 wanshuiyin
- 0.699score
paper-poster-html
wanshuiyin
DEFAULT poster pipeline — build an academic conference poster (ICML/NeurIPS/ICLR/CVPR/...) as a single HTML/CSS file with measurement-driven hard gates, real…
SkillAFreshness: A★ 18KClaude Code - 0.699score
paper-illustration-image2
wanshuiyin
Generate publication-quality academic illustrations through a local Codex app-server bridge that uses Codex native image generation.
SkillAFreshness: A★ 18KClaude Code - 0.699score
lean-formalize
wanshuiyin
Develop and verify a mathematical proof in Lean, continue an incomplete Lean project, or audit whether it proves the original statement.
SkillAFreshness: A★ 18KClaude Code - 0.699score
figure-spec
wanshuiyin
Generate deterministic publication-quality architecture, workflow, and pipeline diagrams from structured JSON (FigureSpec) into editable SVG.
SkillAFreshness: A★ 18KClaude Code +9 - 0.699score
proof-orchestrator
wanshuiyin
Manage a stateful, run-directory-based proof project: continuation across runs, run-local source bookkeeping, manual GPT Pro handoff packages when a local…
SkillAFreshness: A★ 18KClaude Code - 0.699score
render-html
wanshuiyin
Render an ARIS Markdown / JSON artifact (IDEA_REPORT, AUTO_REVIEW, KILL_ARGUMENT, PAPER_PLAN, research-wiki state, etc.) into a single-file HTML view designed…
SkillAFreshness: A★ 18KClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get citation-crosscheck running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
citation-crosscheck skill. Agent Mart. https://agentmart.dev/skills/wanshuiyin-citation-crosscheck-3c65a0 (last updated 2026-10-24)