roomi-fields/paper-trail/sota-writer
Claude Code and agent skill by roomi-fields/paper-trail
- community
Checking that the SKILL.md file is still in the repository.
Write structured State-of-the-Art (SOTA) reviews / literature reviews for academic research projects with **zero hallucinated citations**. Activate this skill whenever the user wants to write, update, or expand a SOTA. Triggers (FR + EN) : "écris un SOTA", "état de l'art sur", "revue de littérature", "mise à jour SOTA", "survey sur", "nouveau SOTA", "write a SOTA on", "literature review on", "state-of-the-art review", "/paper-trail:new-sota". **MANDATORY** : this skill enforces an INVERTED workflow (research first → read validated PDFs → write). It REFUSES to write from memory to prevent the kind of citation hallucinations (inverted attributions, fabricated quotes) that led to retracted papers in the past. Make sure to use this skill whenever any SOTA work is requested, even if the user doesn't explicitly say "use sota-writer".
Install
npx vskill@latest install roomi-fields/paper-trail/sota-writerSKILL.md
Skill : SOTA Writer (research-first, anti-hallucination)
Why this skill exists
Citation hallucinations in academic writing are systemic when the author writes from memory and looks up sources afterward. They include inverted attributions ("X proved Y" when X proved ¬Y), fabricated quotes (text in quotation marks that doesn't appear in the cited source), wrong attributions (citing the wrong author for a known result), and confusion between similar-named papers (homonymy).
The plugin paper-trail exists because a retracted paper in 2026-02 contained 12 such errors, signaled by the misrepresented author themselves. This skill encodes the inverted workflow : research → read → write. Slower in appearance, faster in practice : no post-submission audit, no remediation, no reviewer embarrassment.
Scope
- Vault root :
$RESEARCH_VAULT_PATH(resolved via the adapter,
default obsidian)
- Registry :
$RESEARCH_REGISTRY_PATH/refs/*.md(one.mdfile
per ref with YAML frontmatter)
- SOTA output location : resolved via
adapter.sota_output_path(topic_slug)
The supreme rule
No claim in a SOTA without pointing to the notes body of a ref file in state `page1_validated` (or higher). If I want to write X but no source supports X → either I find one, or I don't write X. No rhetorical rephrasing to "keep" an unsourced claim.
Mandatory 4-phase workflow
Phase A — Exhaustive research
Pre-flight (mandatory, fast)
Before issuing any search call, run :
If it reports paper-search MCP non enregistré, stop and ask the user to install it — the recipe is printed in the preflight output. Do NOT fall back to other searches without notifying the user : the cascade and downstream phases need the unified multi-platform API.
Tools by question type
| Question type | Priority tool | |
|---|---|---|
| General academic papers | mcp__paper-search__search_papers (multi-source unified) | |
| Recent preprints (CS, AI, NLP) | mcp__paper-search__search_arxiv | |
| Formal linguistics, NLP | mcp__paper-search__search_semantic | |
| Medical / biomedical | mcp__paper-search__search_pubmed | |
| Cross-domain aggregator | mcp__paper-search__search_openalex | |
| Lookup by exact DOI | mcp__paper-search__get_crossref_paper_by_doi | |
| Local project corpus | mcp__rtfm__rtfm_search, mcp__rtfm__rtfm_context | |
| Books (theory, domain-specific) | mcp__notebooklm__notebook_ask (if configured) | |
| Course pages, personal sites | WebSearch |
Correct call signatures (avoid TypeError)
The unified search_papers tool expects max_results_per_source, NOT max_results :
Per-platform tools (search_arxiv, search_semantic, etc.) typically accept max_results directly. When in doubt, omit the limit on the first call and inspect the response shape.
Phase A output
For each identified ref, create a file $RESEARCH_REGISTRY_PATH/refs/{author_year_short}.md :
Filtering candidates : >30% DROP refusal
If more than 30% of candidate refs fail to reach page1_validated (after phase B), the skill refuses to write the SOTA and reports the candidates dropped + reason. The user must then either :
- Refine the search topic (too vague → too many irrelevant hits)
- Enable shadow libs (
RESEARCH_ENABLE_SHADOW_LIBS=1) for paywall
access
- Manually intervene on specific blocked refs
This anti-hallucination guard prevents writing a SOTA when the source base is too thin or too noisy.
Phase B — Delegate to pdf-cascade
Do not attempt to acquire the PDFs yourself. That's pdf-cascade's job, and it has the complete cascade + integrated page 1 validation
- anti-homonymy guard. Request, wait for return, then proceed to
phase C with only the refs in page1_validated.
Phase C — Reading and notes extraction in markdown body
For each PDF in page1_validated, enrich the markdown body of the existing ref file. The frontmatter (metadata) is already filled by pdf-cascade ; the markdown body is the writer's zone.
The markdown body of the ref file is the institutional memory of a reading. It will be consulted every time this paper is cited. No need to re-read the PDF. One file per ref = no drift between metadata and notes.
Phase D — Writing from notes
Writing rules
- Every citation points to its ref file via wikilink (Obsidian
layout) [[author_2020_topic|Author 2020]] or markdown link (flat layout) [Author 2020](refs/author_2020_topic.md). The exact format is provided by adapter.format_citation(slug).
- Every factual claim relies on the notes body : if I want to
write « Shannon proved H(X) for natural languages », I open shannon_1948_mathematical_theory.md and verify. Either the note says it, or I rephrase, or I delete.
- Correct verb :
prove,show,formulate,argue,suggest
are different. The notes body says what the source actually says.
- Verbatim quotes : any text in quotation marks MUST be copy-pasted
from the notes body (section "Verbatim useful quotes") or from the PDF directly.
- Update `cited_in[]` of the frontmatter : each time a citation
is added to the SOTA, update the ref file's frontmatter to record the SOTA + section.
Forbidden anti-patterns
| Temptation | Why it's forbidden | Correct behavior | |
|---|---|---|---|
| « X proved Y » without having read X | Structural hallucination | Read X (notes body) ; if Y isn't there → don't write it | |
| Quotation marks « ... » on rephrased text | Quote fabrication | Verbatim copy from notes or PDF | |
| « As X showed » when X wasn't read | Unverified attribution | Read X first, or write « According to [secondary source citing X]... » | |
Citing a ref in candidate state | PDF not validated, source not confirmed | Request acquisition, wait for page1_validated | |
| Inferring a paper's content from title/abstract | Title/abstract don't say everything (and sometimes mislead) | Read relevant sections, enrich notes | |
| « Probably X says Y » | Speculation presented as fact | Verify or delete the sentence |
SOTA structure
| # | Section | Content | |
|---|---|---|---|
| 1 | Introduction | Context, motivation, scope | |
| 2 | Taxonomy | Classification of approaches | |
| 3 | Detailed review | By approach/school, with validated citations | |
| 4 | Comparative analysis | Synthesis table | |
| 5 | Identified gaps | Gaps in the literature | |
| 6 | Implications | Links with research goals | |
| 7 | References | Format [AuthorYear] with wikilinks to _registry/refs/*.md |
Conventions
- Language : as specified by user / project (English default)
- References : Format
[AuthorYear]in text (e.g.,[Shannon1948],
[Chomsky1957])
- Wikilinks (Obsidian layout) :
[[shannon_1948_mathematical]] - Markdown links (flat layout) :
[Shannon 1948](refs/shannon_1948_mathematical.md) - SOTA file location :
adapter.sota_output_path(topic_slug)
Available tools (Phase A summary)
mcp__paper-search__*— 22 platforms (Crossref, arXiv, OpenAlex,
Semantic Scholar, HAL, etc.)
mcp__notebooklm__*— query books (optional, if NotebookLM configured)mcp__rtfm__rtfm_search/rtfm_context— local corpus (optional)WebSearch— personal pages, course pages, archive.org
Relationships with other skills
| Skill | Relationship | |
|---|---|---|
pdf-cascade (paper-trail) | Sub-task in phase B. Writer requests acquisition, waits for return. | |
sota-auditor (paper-trail) | Downstream audit. Auditor verifies each citation (sota_cited_confirmed) or requests corrections. | |
citation-receipts (paper-trail) | Per-citation protocol. For each citation written, validates verb + quotes + attribution. | |
paper-writer (paper-trail) | Consumes SOTAs. When a paper is written, it relies on audited SOTAs. | |
researcher agent | Phase A as sub-agent. Use when search needs to be exhaustive and contextually isolated. |
What this skill does NOT do
- Does not write without first having a validated PDF corpus (hard refusal)
- Does not download PDFs (that's pdf-cascade's job)
- Does not decide that a ref is hallucinated (that's sota-auditor's job)
- Does not validate each citation individually (citation-receipts at
writing, sota-auditor at downstream audit)
- Does not rephrase a sentence to make a source say something it
doesn't say
Pre-finalization audit
Before marking a SOTA as completed :
- All citations point to an existing
$RESEARCH_REGISTRY_PATH/refs/*.md
file
- All cited refs' frontmatter is in
sota_cited_confirmed pipeline doctorpasses without ERROR-level violations on the
refs cited
cited_in[]of each cited ref's frontmatter is up-to-date (SOTA
name + section)
If any of these conditions is not met → the SOTA is not finalized, return to the appropriate phase.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/sota-writer/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/roomi-fields/paper-trail/sota-writer)