Academic Paper Writing Pipeline
Imbad0202/academic-research-skills
Runs a 12-agent pipeline that plans, drafts, cites, reviews and formats academic papers, with modes for revision, rebuttals, abstracts and citation checks.
Audit a section claim by claim and report which statements the cited sources actually support.
$ npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Oleafly/Oleafly oleafly-verify-claims --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-verify-claims .claude/skills/oleafly-verify-claims && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "oleafly-verify-claims" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-verify-claims into .claude/skills/oleafly-verify-claims/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-verify-claims", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-verify-claimsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Oleafly/Oleafly oleafly-verify-claims --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-verify-claims .agents/skills/oleafly-verify-claims && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "oleafly-verify-claims" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-verify-claims into .agents/skills/oleafly-verify-claims/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-verify-claims", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Oleafly/Oleafly oleafly-verify-claims --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-verify-claims .cursor/skills/oleafly-verify-claims && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "oleafly-verify-claims" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-verify-claims into .cursor/skills/oleafly-verify-claims/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-verify-claims", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Oleafly/Oleafly.git --path src-tauri/resources/skills/oleafly-verify-claims--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Oleafly/Oleafly oleafly-verify-claims --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-verify-claims .gemini/skills/oleafly-verify-claims && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "oleafly-verify-claims" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-verify-claims into .gemini/skills/oleafly-verify-claims/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-verify-claims", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Oleafly/Oleafly oleafly-verify-claimsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .github/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-verify-claims .github/skills/oleafly-verify-claims && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "oleafly-verify-claims" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-verify-claims into .github/skills/oleafly-verify-claims/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-verify-claims", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Oleafly/Oleafly oleafly-verify-claims --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Oleafly/Oleafly.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src-tauri/resources/skills/oleafly-verify-claims .opencode/skills/oleafly-verify-claims && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "oleafly-verify-claims" agent skill from https://github.com/Oleafly/Oleafly/tree/main/src-tauri/resources/skills/oleafly-verify-claims into .opencode/skills/oleafly-verify-claims/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "oleafly-verify-claims", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
oleafly-verify-claimsAudit a section claim by claim and report which statements the cited sources actually support.
Oleafly Verify Claims is an agent skill from Oleafly/Oleafly. Audit a section claim by claim and report which statements the cited sources actually support. Use when the user asks to check the citations, verify the claims in a section, find unsupported or overstated statements, confirm nothing was fabricated, or get a manuscript ready for review or submission. Builds research/claims.md with a support level and an evidence note per claim, and reports problems rather than quietly rewriting the prose.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files and assets (for example `assets/audit-report.md`, `assets/claims.md` and `references/support-levels.md`). Compatibility notes: Reads and reports only. Needs network approval for verifycitation. The optional scientific-writing audit script needs Python 3.11 or newer on the login shell…
It sits in Research & Science, covering Fact-checking and source verification, LaTeX and Citation management. It works with LaTeX. The repository describes itself as: The local-first AI assisted research workspace for scientific writing & publishing. Research, Write, Compile, Verify and Publish in LaTeX • Typst • Markdown • Git-native • Open…. The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dc582ef. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
read_filesearch_projectproject_mapproject_library_searchverify_citationwrite_filecreate_filecompileget_pdf_textupdate_todos…and 3 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Reads and reports only. Needs network approval for verify_citation. The optional scientific-writing audit script needs Python 3.11 or newer on the login shell PATH.
From compatibility in the SKILL.md frontmatter.
Oleafly Verify Claims loads about 3.1k tokens when it runs, and up to ~4.1k if it reads all its reference files. Until then it costs about 116 tokens; SKILL.md has 1,654 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Oleafly/Oleafly at commit dc582ef, republished under its MIT licence (© Oleafly). 1,654 words, ~3,099 tokens.
.claude/skills/oleafly-verify-claims/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.This skill answers one question for every factual sentence in a section: does the source it cites actually say that? The output is a table, a report, and a list of proposed fixes. It is not a rewrite.
Never edit the user's prose in this skill. A claim audit that silently corrects what it finds destroys the evidence of what was wrong, and the user cannot check your judgement afterwards. Propose the fix, name the file and line, and let them decide. The only files this skill writes are research/claims.md and a report under review/.
Audit one section, or one file, at a time. A whole manuscript in one pass produces a table nobody reads.
Confirm with the user which file, or infer from what they just asked about. project_map with {} returns sections with the file and line of each heading, so you can name the boundaries precisely.
Set the plan with update_todos, one item per step below.
read_file with {"path": "sections/related.tex", "offset": 1, "limit": 200}. The result carries offset, lines_returned and total_lines. Line N of the returned content is file line offset + N - 1. Read further slices until you have covered the section.
To pin a line number exactly, search_project with {"query": "<six distinctive words from the sentence>"} returns the file and line of every match. That is more reliable than counting, and it is the anchor to record in the table.
Go sentence by sentence. A claim is anything a reader could be wrong to believe.
Audit these:
Skip these:
Number the claims C1, C2 and onward. Quote each one, or paraphrase tightly enough that the user recognises the sentence.
For each claim, record which keys the sentence cites. A claim with no citation is not automatically a problem, but it has to be classified deliberately (step 6).
project_map with {} gives bibKeys and unresolvedCites. Any key on the claim list that appears in unresolvedCites is already broken before the content question is asked: it cites nothing. Record it as unsupported with the reason "no bibliography entry".
For each cited key, in this order, stopping when you have enough to judge:
read_file with {"path": "research/sources/<key>.md"}. If the sweep ran, this holds the abstract verbatim and the provenance. This is the cheapest real evidence available.project_library_search with {"query": "<the claim, in the source's own vocabulary>"} searches the project's own files, including any imported full text and the user's reading notes.read_file on the PDF at research/sources/<key>.pdf when the abstract does not settle it and the paper is in the project.verify_citation with {"doi": "<doi from the entry>"} to confirm the entry resolves to a real record with the title, venue and year the entry claims. This checks the citation exists and matches; it does not check that the paper supports the claim. Both checks matter and they are different.When no evidence is available at all, that is a finding, not a blocker. Record the claim as unsupported with the note "no source note, no full text in the project", and propose that the source be added by oleafly-literature-sweep.
Never judge from the title. Titles overstate, and a title that matches the claim is the most common way a wrong citation survives review.
Exactly one of three, defined in full in references/support-levels.md.
| Level | Means |
|---|---|
verified | The source states the claim, at the scope the sentence gives it. You can point to where |
partial | The source supports a narrower or different version. The direction is right, the scope, magnitude, population or conditions are not |
unsupported | The source does not state it, the citation does not resolve, or there is no citation and no source that would carry it |
partial is the level that does the most work. Most citation problems in real manuscripts are not fabrications, they are a true finding stretched one step past what was measured.
The evidence note must say what the source actually says, not just that it disagrees. "Measured on graphs up to 10k nodes; the sentence says arbitrary scale" is actionable. "Overstated" is not.
Create the directory if needed with create_file and {"path": "research", "is_dir": true}, then write_file the table from assets/claims.md.
Columns: number, claim, location as file:line, cited key, support level, evidence note. Then a summary count, then a proposed fixes table.
If research/claims.md already exists, read_file it first and merge rather than replacing. An earlier audit's findings on other sections are not yours to discard.
scientific-writing ships scripts/audit_claims.py, which checks a Markdown manuscript against a structured claim registry and a source manifest. It is worth running when the project is Markdown and the user wants a machine checkable evidence trail, and it is overhead otherwise.
Before the first script call, check the interpreter once with run_command and {"command": "python3 --version"}. Below 3.11, skip this step and say so.
load_skill with {"id": "scientific-writing"} returns its absolute directory and file tree. It takes three positional arguments, in this order:
python3 "<scientific-writing dir>/scripts/audit_claims.py" manuscript.md research/claims.csv research/sources.jsonclaim_id, section, claim_kind, claim_text_sha256, evidence_ids, verification_status, uncertainty, analysis_intent. Template at assets/claim_evidence_template.csv inside that skill.sources array of records carrying evidence_id, title, year, authors, identifiers, locator and a verification block. Template at assets/source_manifest_template.json inside that skill.Read either template with read_skill_file and {"id": "scientific-writing", "path": "assets/claim_evidence_template.csv"}.
Two related scripts from the same skill: scripts/check_references.py <sources.json> validates the manifest alone, and scripts/lint_manuscript.py <manuscript.md> checks the prose against the skill's writing rules.
Write script output to a file under research/ and read it back with read_file. Command output is capped and truncates silently.
The script checks structure and completeness. It does not read the sources. It never replaces steps 5 and 6.
Write the report to review/claim-audit-<section>.md from assets/audit-report.md, and give the user the summary in your reply.
Lead with the count at each level. Then list every unsupported claim in full, with its location and what is missing. These are the ones that must be resolved before submission, and burying them under the verified ones is how they get missed.
For each problem, propose a concrete fix and let the user choose:
Propose. Do not apply. If the user then asks you to make the edits, do them with replace_in_file in that turn, one at a time, and compile afterwards.
If you added nothing and edited no source, compile is not required. If the user accepted fixes and you applied them, compile with {}, then project_map with {} to confirm unresolvedCites is empty, then get_pdf_text with {} to confirm no citation renders as [?].
load_skill with {"id": "scientific-critical-thinking"}.load_skill with {"id": "oleafly-literature-sweep"}.load_skill with {"id": "citation-management"}.load_skill with {"id": "oleafly-review-manuscript"}.| What happened | What to do |
|---|---|
No research/sources/ directory | The sweep never ran. Audit what you can from project_library_search and verify_citation, and say clearly that most levels are provisional |
A cited key is in unresolvedCites | unsupported, reason "no bibliography entry". This is a build problem as well as a citation problem |
verify_citation returns verified: false for an existing entry | The entry may be fabricated or the metadata wrong. Flag it prominently. Do not delete it yourself |
| The PDF for a paper is not in the project | Judge from the abstract in the source note, and cap the level at partial unless the abstract states the claim outright. Say the full text was not read |
| The user asks you to just fix everything | Show the table first. Apply fixes only after they have seen what will change |
| A claim cites six keys at once | Audit the claim against the set. If no single source carries it and the set does not either, it is unsupported |
run_command reports timed_out | Skip the script step. It is optional and the manual audit is the real work |
file:line location that search_project confirms.unsupported claim is listed in full in the report, not only counted.research/claims.md and review/claim-audit-<section>.md are written.references/support-levels.md defines the three levels with worked examples and the judgement calls between them.assets/claims.md is the audit table template.assets/audit-report.md is the report template.© Oleafly, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references, assets) in src-tauri/resources/skills/oleafly-verify-claims of Oleafly/Oleafly.
Open the folder on GitHubat commit dc582ef
Oleafly Verify Claims next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Oleafly Verify Claims this skillOleafly/Oleafly | 212 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Academic Paper Writing PipelineImbad0202/academic-research-skills | 51k | — | ~16k | Automated safety check: Pass | Custom licence | |
| NSFC Proposal Quality Checkhuangwb8/ChineseResearchLaTeX | 2.9k | — | ~1k | Automated safety check: Pass | MIT | |
| SearchMuuuun/luxas | 1.2k | — | ~2.3k | Automated safety check: Warn | MIT | |
| Academic Paper Helpercnfjlhj/ai-collab-playbook | 454 | — | ~1.8k | Automated safety check: Pass | None | |
| Research Writing SkillzLanqing/codex-claude-academic-skills | 4.7k | — | ~1.1k | Automated safety check: Pass | MIT |
Imbad0202/academic-research-skills
Runs a 12-agent pipeline that plans, drafts, cites, reviews and formats academic papers, with modes for revision, rebuttals, abstracts and citation checks.
huangwb8/ChineseResearchLaTeX
Runs a read-only quality check on an NSFC grant proposal written in LaTeX, covering citation authenticity, length, structure, style and logic, and outputs a standard report.
Muuuun/luxas
Unified academic paper search, citation chains, paper download (arXiv LaTeX/PDF, Sci-Hub), figure extraction from papers, LaTeX source reading, BibTeX fetching, web search, and browser automation…
cnfjlhj/ai-collab-playbook
Use only when the user explicitly asks for help drafting or revising an AI/ML research paper in LaTeX, including structure, BibTeX, formatting, or academic-writing checks.
zLanqing/codex-claude-academic-skills
Chinese-first research paper writing, revision, polishing, section drafting, rebuttal, peer-review response, thesis prose improvement, and manuscript argument planning.
agentscope-ai/OpenJudge
Review academic papers for correctness, quality, and novelty using OpenJudge's multi-stage pipeline.
Oleafly/Oleafly
Perform bounded, local exploratory analysis of explicitly supported scientific files.
Oleafly/Oleafly
Design experiments and studies BEFORE data is collected — choosing a design, randomizing, blocking, and laying out treatment combinations so results are interpretable.
Oleafly/Oleafly
Facilitates evidence-aware scientific ideation with independent generation, structured discussion, explicit assumptions, transparent evaluation, adversarial review, and decision logs.
Oleafly/Oleafly
Create and audit truthful, accessible, publication-ready scientific figures with Matplotlib, Seaborn, or Plotly.
Oleafly/Oleafly
Turn a research question into an annotated reading list with provenance.
Oleafly/Oleafly
Entry point for research writing in Oleafly. An agent skill from Oleafly/Oleafly.
Works with
Categories
Audit a section claim by claim and report which statements the cited sources actually support. Oleafly Verify Claims is an agent skill from Oleafly/Oleafly. Audit a section claim by claim and report which statements the cited sources actually support.
Oleafly Verify Claims fits situations like: the user asks to check the citations; verify the claims in a section; find unsupported; overstated statements.
Run `npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a claude-code`. Or copy the skill folder (src-tauri/resources/skills/oleafly-verify-claims in Oleafly/Oleafly) into .claude/skills/oleafly-verify-claims in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a codex`. Or copy the skill folder (src-tauri/resources/skills/oleafly-verify-claims in Oleafly/Oleafly) into .agents/skills/oleafly-verify-claims in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Oleafly/Oleafly --skill oleafly-verify-claims -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/oleafly-verify-claims, .gemini/skills/oleafly-verify-claims, .github/skills/oleafly-verify-claims and .opencode/skills/oleafly-verify-claims in your project.
Going by SKILL.md and its folder, Oleafly Verify Claims needs the command-line tools its instructions call (python3). Our summary lists: Python 3. Its frontmatter pre-approves these tools: read_file, search_project, project_map, project_library_search, verify_citation, write_file, create_file, compile, get_pdf_text, update_todos, load_skill, read_skill_file, run_command. Compatibility (from SKILL.md): Reads and reports only. Needs network approval for verify_citation. The optional scientific-writing audit script needs Python 3.11 or newer on the login shell PATH..
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Oleafly Verify Claims is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Oleafly Verify Claims: Academic Paper Writing Pipeline (Imbad0202/academic-research-skills, 51k stars), NSFC Proposal Quality Check (huangwb8/ChineseResearchLaTeX, 2.9k stars), Search (Muuuun/luxas, 1.2k stars) and Academic Paper Helper (cnfjlhj/ai-collab-playbook, 454 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Oleafly (a GitHub organization) maintains it in Oleafly/Oleafly, which has 212 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 10, 2026.
Source: Oleafly/Oleafly on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.