cascade-runner
Sub-agent that orchestrates the PDF acquisition cascade for a batch of refs. Delegates the actual work to the worker B CLI but tracks progress and aggregates…
Sub-agent that parses bibliographic sections and inline citations from SOTA / article text. Takes raw text (a section header + content, or an inline excerpt) and returns structured JSON `[{author, year, title, doi?, venue?, raw}]`. Isolates the LLM extraction from the main agent
$ npx -y skills add roomi-fields/paper-trail --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Sub-agent that parses bibliographic sections and inline citations from SOTA / article text. Takes raw text (a section header + content, or an inline excerpt) and returns structured JSON `[{author, year, title, doi?, venue?, raw}]`. Isolates the LLM extraction from the main agent
name: citation-parser
description: Sub-agent that parses bibliographic sections and inline citations from SOTA / article text. Takes raw text (a section header + content, or an inline excerpt) and returns structured JSON `[{author, year, title, doi?, venue?, raw}]`. Isolates the LLM extraction from the main agent context. Invoke from the INGEST pipeline whenever a SOTA's bibliographic section or paragraph needs structured citation extraction.
tools: [Read, Write]
version: 3Parse raw bibliographic text from a SOTA or article into structured citation records. Designed to be called once per section to keep the main agent's context free of LLM extraction noise.
The output is consumed by `pipeline/ingest.py` which then identifies each citation (Crossref / S2 DOI resolution), deduplicates against the registry, creates new refs, and substitutes text with wikilinks.
input_text: | <raw text block — typically a "## Références" section, a paragraph containing inline citations, or a numbered list of bibliography entries> context_hint: bibliography | inline | mixed # bibliography : section like "## Références" with one entry per line # inline : prose paragraph with "Auteur (YYYY)" style refs # mixed : both possible skip_sections: - "Écartées" - "Rejetées" - "Hallucinées" - "Retracted" # any section whose header matches these (case-insensitive) is # NOT to be parsed (the user has volontarily excluded them)
[
{
"author": "Heydari, M. & Mahadevan, M. & Duan, Z.",
"year": "2021",
"title": "BeatNet: CRNN and Particle Filtering for Online Joint Beat Downbeat and Meter Tracking",
"doi": null,
"arxiv_id": null,
"venue": "ISMIR",
"raw": "Heydari et al., \"BeatNet: CRNN and Particle Filtering for Online Joint Beat Downbeat and Meter Tracking\", ISMIR 2021",
"confidence": "high",
"source_offset": 1247
},
{
"author": "Chang, Y.-C. & Su, L.",
"year": "2024",
"title": "BEAST: Online Joint Beat and Downbeat Tracking Based on Streaming Transformer",
"doi": null,
"arxiv_id": "2312.17156",
"venue": "ICASSP",
"raw": "Chang & Su, \"BEAST: Online Joint Beat and Downbeat Tracking Based on Streaming Transformer\", ICASSP 2024 (arXiv:2312.17156)",
"confidence": "high",
"source_offset": 1438
}
]Field semantics :
possible. Preserve initials if that's all there is.
"https://doi.org/..."), extract. Otherwise `null`.
for traceability and substitution.
`low` (probably not a citation — flag for human review).
substitution.
1. **Parse EVERYTHING** by default. The input may be an entire SOTA document, a bibliographic section, or a paragraph. Detect all citations regardless of where they appear :
formal list of citations
<list>`. The word "Local" means **these PDFs are already on disk**, they ARE citations to ingest (not textbook labels to skip)
`Smith et al., 2020`, `voir Heydari 2021`
"Titre" | Conf | DOI |`)
2. **Skip ONLY explicitly excluded sections** : if a section header matches one in `skip_sections` (case-insensitive), skip ALL its content. Otherwise parse normally.
3. **Textbook detection with contextual inference** : even short refs like "Hopcroft FR + EN", "Sipser FR (Ch. 1)", "Carton FR" ARE valid citations to real textbooks. Use the ENTIRE document to infer missing fields :
same author. If "Hopcroft, Motwani, Ullman 2001/2006, Introduction to Automata Theory" appears somewhere, then "Hopcroft FR + EN" and "Hopcroft (CYK Theorem §7)" refer to the same book — use `year: 2001`, `title: Introduction to Automata Theory`, `confidence: high`. The short reference is just a re-citation of the same source.
and Computation"
Tools" (the "dragon book") If you're 80%+ confident in the canonical reference, set `confidence: high` and provide title.
set `year: null` and `title: null` and `confidence: low` — a later resolve-textbook pass will handle these.
context, the enriched fields go into `year` / `title`. **`raw` stays the local short mention** (e.g., for "Sipser FR" in the text, `raw="Sipser FR"` even if you inferred `year=2012` and `title="Introduction to the Theory of Computation"`). See rule 10.
4. **Confidence levels** :
Anti-hallucination plugin for academic research in Claude Code. Create literature reviews and papers guaranteed without fabricated citations.
Sub-agent that orchestrates the PDF acquisition cascade for a batch of refs. Delegates the actual work to the worker B CLI but tracks progress and aggregates…
Sub-agent that audits a specific claim against the PDF cited. Invoked by citation-receipts skill for deep PDF↔claim verification. Returns structured verdict…
Sub-agent that validates whether a downloaded PDF matches the expected metadata (author, title, year). Anti-homonymy check on page 1. Invoke when a manual page…
Sub-agent that performs exhaustive multi-source academic search (paper-search MCP across 22 platforms + optional NotebookLM + optional WebSearch). Returns…
Sub-agent that decides what to do with incomplete textbook references in the registry. Takes a JSON list of candidates (refs with year=0000 or title=empty,…