ts-paper-cite

Builds a verified, complete refs.bib bibliography for Traitement du Signal papers using Crossref and arXiv metadata.

1.1k|19|Updated Jun 18, 2026
One-click install
npx skills add https://github.com/Spark-To-Paper-Skills/spark-to-paper-skills --skill ts-paper-cite-spark-to-paper-skills
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ts-paper-cite
Source: https://github.com/Spark-To-Paper-Skills/spark-to-paper-skills/tree/main/skills/ts-paper-cite
Command: npx skills add https://github.com/Spark-To-Paper-Skills/spark-to-paper-skills --skill ts-paper-cite-spark-to-paper-skills

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Academic papers need real, complete citations, but manually assembling a bibliography of 40+ verified references with full metadata (authors, venue, volume, pages, DOI) is slow and error-prone, and LLM-generated citations often fabricate title-only stubs. This Skill builds a refs.bib where every entry is a real paper verified against Crossref or the arXiv API. ## Core Features & Use Cases - Systematic retrieval and triage: Plans search angles from the paper's proposal, retrieves candidates broadly via web search, and triages each by abstract to place it in the correct section with a supporting claim. - Deterministic metadata fetching: The doi2bib.py script resolves any DOI against Crossref (or an arXiv id against the arXiv API) and emits a fully populated BibTeX entry with ASCII-folded text, eliminating hand-transcription. - Enforced integrity linting: citations_lint.py hard-fails on stub entries, orphan keys, duplicate keys, missing claim justifications, sections with zero citations, and coverage below the template floor (40 for TS papers), with an opt-in --resolve mode that flags DOIs returning 404. - Use Case: While drafting a signal processing journal paper, run this stage to turn a rough proposal into a refs.bib of 40-50 real references mapped to claims in claims_map.json, then re-lint after the write stage to confirm every section meets its citation band. ## Quick Start Build a complete verified refs.bib for my Traitement du Signal paper from the proposal and blueprint in the working directory, fetching metadata via doi2bib.py and validating with citations_lint.py.

Frequently Asked Questions about ts-paper-cite

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate a complete BibTeX entry from a DOI?

Run scripts/doi2bib.py with the DOI, optionally followed by a bibkey. It queries the Crossref API and prints a fully populated @article or @inproceedings entry with authors, year, venue, volume, issue, pages, and DOI, with Unicode ASCII-folded for pdflatex.

How do I cite an arXiv preprint in BibTeX without a DOI?

Pass the arXiv id (e.g. 2106.09685) to doi2bib.py instead of a DOI. It queries the arXiv API and emits an @article entry with eprint, archivePrefix, and journal set to arXiv preprint, which satisfies the venue requirement without a Crossref DOI.

Why does citations_lint.py fail on my bibliography?

The linter hard-fails on stub entries missing author, year, venue, or DOI/URL, on cited keys with no refs.bib entry, orphan entries never cited, duplicate keys, missing claims_map.json justifications, and evidence-bearing sections with zero citations or totals below the template floor.

Does the citation linter verify that a DOI actually exists?

By default no; the standard run is an offline structural check only. Pass the --resolve flag to citations_lint.py to resolve each DOI via Crossref, which hard-fails on definitive 404s while treating network errors as non-fatal warnings. arXiv-only entries are skipped.

How many references does a Traitement du Signal paper need?

The ts_iieta template sets a global floor of 40 cited references with a target of 40-50, plus per-section bands such as 20-30 for related_work and 8-12 for introduction. The count must be reached with real papers found through broader searching, never fabricated stubs.

What is claims_map.json and why is it required?

claims_map.json maps every cited bibkey to the claim it supports, a support_label such as direct_core or baseline, and the section where it belongs. The linter rejects citations lacking a justification, carrying a weak label, or whose claimed section mismatches where the key is actually cited.