Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Four-layer citation verification for academic papers. Scans LaTeX/BibTeX files, verifies every citation via WebSearch and Google Scholar, generates verification report with fix suggestions. Triggers on "verify citations", "check references", "citation verification", "prevent fake citations", "引用验证".
.claude/skills/catlog22-scholar-citation-verify/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 711% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 38% | 0% |
Four-layer citation verification workflow for academic papers. Scans paper files, verifies every citation through WebSearch/Google Scholar/APIs, and produces a verification report with actionable fixes.
.workflow/codebase/ARCHITECTURE.md exists, read for project contextmaestro load --type spec --category coding — load coding conventionsmaestro search "academic writing research paper" --json — top 5 entries as prior contextUser: "Verify citations in my paper"
|
v
┌──────────────────────────────────────────────────────────────┐
│ SKILL.md (Orchestrator) │
│ Collect preferences → Dispatch phases → Track progress │
└──────────┬───────────────────────────────────────────────────┘
|
┌───────┼───────────┬──────────────┐
v v v v
┌──────┐┌──────────┐┌──────────────┐
│ P1 ││ P2 ││ P3 │
│ Scan ││ Verify ││ Report │
│ & ││ 4-Layer ││ & Fix │
│Extract││ ││ │
└──┬───┘└────┬─────┘└──────┬───────┘
│ │ │
v v v
citation verified report.md
entries results + fixed .bib[CITATION NEEDED], never silently skipped.Before dispatching to any phase, collect these preferences:
Questions to ask the user:
1. Paper Location
"Where are the paper files? (directory path)"
→ paperDir
2. Verification Mode
Options: Full (all citations) | Incremental (new/changed only) | Spot Check (random sample)
→ verificationMode
3. Strictness Level
Options: Strict (for submission) | Normal (for draft) | Lenient (quick check)
→ strictness
4. Auto-fix
Options: Yes (auto-fix format issues) | No (report only)
→ autoFixStore responses as verifyPreferences context for all phases.
When workflowPreferences.autoYes === true:
> COMPACT DIRECTIVE: Context compression MUST check TodoWrite phase status. > The phase currently marked in_progress is the active execution phase — preserve its FULL content. > Only compress phases marked completed or pending.
Citation Verification:
- [ ] Phase 1: Scan & Extract — find .tex/.bib files, extract all citations
- [ ] Phase 2: 4-Layer Verify — format, existence, matching, content checks
- [ ] Phase 3: Report & Fix — generate report, apply fixesPhase 1: Scan & Extract
└─ Ref: phases/01-scan-extract.md
├─ Input: paperDir, verificationMode
└─ Output: citationEntries (list of all citations with metadata)
Phase 2: 4-Layer Verify
└─ Ref: phases/02-verify.md
├─ Input: citationEntries, strictness
└─ Output: verificationResults (per-citation status + details)
Phase 3: Report & Fix
└─ Ref: phases/03-report-fix.md
├─ Input: verificationResults, autoFix
└─ Output: report.md + optionally fixed .bib filePhase Reference Documents (read on-demand when phase executes):
| Phase | Document | Purpose | Compact | |-------|----------|---------|---------| | 1 | phases/01-scan-extract.md | Scan files, extract citations | TodoWrite driven | | 2 | phases/02-verify.md | 4-layer verification | TodoWrite driven + sentinel | | 3 | phases/03-report-fix.md | Generate report, apply fixes | TodoWrite driven |
Compact Rules:
in_progress → preserve full content, do not compresscompleted → may compress to summaryRead() to recover[CITATION NEEDED] for unverifiable references.Phase 1 ──citationEntries──→ Phase 2
Phase 2 ──verificationResults──→ Phase 3
Data persistence: Results written to paperDir/.verify/
paperDir/.verify/
├── citations-extracted.json (Phase 1 output)
├── verification-results.json (Phase 2 output)
├── verification-report.md (Phase 3 output)
└── references-fixed.bib (Phase 3 output, if autoFix)| Error | Action | |-------|--------| | No .tex/.bib files found | Ask user for correct directory | | API rate limit hit | Wait and retry with exponential backoff | | Citation not found in any API | Mark as [CITATION NEEDED], continue | | BibTeX parse error | Report unparseable entry, skip and continue | | Network unavailable | Fall back to format-only verification |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,503 | 8,520 | +55% | 1 | 1 | 0% | 889 | 2,094 | +136% | 0 | 0 | — |
case-02 | fail→fail | 15,968 | 6,767 | -58% | 1 | 1 | 0% | 2,878 | 2,686 | -7% | 0 | 0 | — |
case-03 | fail→fail | 6,336 | 6,400 | +1% | 1 | 1 | 0% | 1,089 | 1,808 | +66% | 0 | 0 | — |
case-04 | fail→pass | 9,253 | 3,684 | -60% | 1 | 1 | 0% | 1,454 | 2,157 | +48% | 0 | 0 | — |
case-05 | fail→pass | 9,572 | 2,439 | -75% | 1 | 1 | 0% | 1,411 | 1,921 | +36% | 0 | 0 | — |
case-06 | pass→pass | 10,611 | 4,964 | -53% | 1 | 1 | 0% | 1,618 | 2,324 | +44% | 0 | 0 | — |
case-07 | fail→pass | 11,268 | 2,857 | -75% | 1 | 1 | 0% | 1,823 | 2,017 | +11% | 0 | 0 | — |
case-08 | fail→pass | 2,311 | 3,346 | +45% | 1 | 1 | 0% | 262 | 2,125 | +711% | 0 | 0 | — |
case-09 | fail→pass | 11,036 | 5,847 | -47% | 1 | 1 | 0% | 1,797 | 2,487 | +38% | 0 | 0 | — |
case-10 | pass→pass | 11,551 | 4,464 | -61% | 1 | 1 | 0% | 1,808 | 2,173 | +20% | 0 | 0 | — |
case-11 | pass→pass | 13,073 | 11,922 | -9% | 1 | 1 | 0% | 2,340 | 3,686 | +58% | 0 | 0 | — |
case-12 | fail→fail | 7,309 | 1,783 | -76% | 1 | 1 | 0% | 1,184 | 1,766 | +49% | 0 | 0 | — |
case-13 | fail→pass | 8,760 | 2,395 | -73% | 1 | 1 | 0% | 1,422 | 1,890 | +33% | 0 | 0 | — |
case-14 | fail→pass | 11,029 | 4,409 | -60% | 1 | 1 | 0% | 1,705 | 2,230 | +31% | 0 | 0 | — |
case-15 | pass→fail | 8,673 | 2,572 | -70% | 1 | 1 | 0% | 1,369 | 1,878 | +37% | 0 | 0 | — |
case-20 | fail→fail | 8,010 | 5,636 | -30% | 1 | 1 | 0% | 1,236 | 2,396 | +94% | 0 | 0 | — |
case-16 | fail→fail | 15,077 | 3,406 | -77% | 1 | 1 | 0% | 2,456 | 2,081 | -15% | 0 | 0 | — |
case-17 | fail→pass | 8,458 | 2,108 | -75% | 1 | 1 | 0% | 1,234 | 1,929 | +56% | 0 | 0 | — |
case-18 | fail→pass | 12,795 | 4,864 | -62% | 1 | 1 | 0% | 2,067 | 2,298 | +11% | 0 | 0 | — |
case-19 | pass→pass | 11,718 | 2,954 | -75% | 1 | 1 | 0% | 1,806 | 1,963 | +9% | 0 | 0 | — |
case-21 | pass→pass | 12,021 | 18,104 | +51% | 1 | 1 | 0% | 2,029 | 4,860 | +140% | 0 | 0 | — |
case-22 | pass→pass | 19,069 | 15,159 | -21% | 1 | 1 | 0% | 3,755 | 4,308 | +15% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 20 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.