Paperjury
Spark-To-Paper-Skills/paperjury
Three modes for CS-conference papers (CVPR/ICCV/ECCV vision, ACL/EMNLP/NAACL NLP, ICLR/NeurIPS/ICML/AAAI ML).
Review a LaTeX paper for argument-level logic, cross-section consistency, and house style.
$ npx skills add eunomia-bpf/ActPlane --skill paper-logic -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install eunomia-bpf/ActPlane paper-logic --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/eunomia-bpf/ActPlane.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/paper-logic .claude/skills/paper-logic && 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 "paper-logic" agent skill from https://github.com/eunomia-bpf/ActPlane/tree/master/.claude/skills/paper-logic into .claude/skills/paper-logic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-logic", 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/eunomia-bpf/ActPlane/tree/master/.claude/skills/paper-logicType 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 eunomia-bpf/ActPlane --skill paper-logic -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install eunomia-bpf/ActPlane paper-logic --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eunomia-bpf/ActPlane.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/paper-logic .agents/skills/paper-logic && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "paper-logic" agent skill from https://github.com/eunomia-bpf/ActPlane/tree/master/.claude/skills/paper-logic into .agents/skills/paper-logic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-logic", 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 eunomia-bpf/ActPlane --skill paper-logic -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install eunomia-bpf/ActPlane paper-logic --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eunomia-bpf/ActPlane.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/paper-logic .cursor/skills/paper-logic && 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 "paper-logic" agent skill from https://github.com/eunomia-bpf/ActPlane/tree/master/.claude/skills/paper-logic into .cursor/skills/paper-logic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-logic", 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/eunomia-bpf/ActPlane.git --path .claude/skills/paper-logic--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 eunomia-bpf/ActPlane --skill paper-logic -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install eunomia-bpf/ActPlane paper-logic --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eunomia-bpf/ActPlane.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/paper-logic .gemini/skills/paper-logic && 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 "paper-logic" agent skill from https://github.com/eunomia-bpf/ActPlane/tree/master/.claude/skills/paper-logic into .gemini/skills/paper-logic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-logic", 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 eunomia-bpf/ActPlane paper-logicInstalls 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 eunomia-bpf/ActPlane --skill paper-logic -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/eunomia-bpf/ActPlane.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/paper-logic .github/skills/paper-logic && 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 "paper-logic" agent skill from https://github.com/eunomia-bpf/ActPlane/tree/master/.claude/skills/paper-logic into .github/skills/paper-logic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-logic", 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 eunomia-bpf/ActPlane --skill paper-logic -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install eunomia-bpf/ActPlane paper-logic --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/eunomia-bpf/ActPlane.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/paper-logic .opencode/skills/paper-logic && 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 "paper-logic" agent skill from https://github.com/eunomia-bpf/ActPlane/tree/master/.claude/skills/paper-logic into .opencode/skills/paper-logic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-logic", 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.
paper-logicReview a LaTeX paper for argument-level logic, cross-section consistency, and house style.
Paper Logic is an agent skill from eunomia-bpf/ActPlane. Review a LaTeX paper for argument-level logic, cross-section consistency, and house style. Complements /paper-review (sentence-level style) with whole-paper reasoning checks.
Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering LaTeX and Peer review. It works with LaTeX. The repository describes itself as: eBPF Information Flow Enforcement for AI Agent safety, security and effectiveness. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 4045428. 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:
ReadBash(grep *)Bash(wc *)Bash(ls *)Bash(find *)From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From 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.
Paper Logic loads about 5.7k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 2,877 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 eunomia-bpf/ActPlane at commit 4045428, republished under its MIT licence (© eunomia-bpf). 2,877 words, ~5,747 tokens.
.claude/skills/paper-logic/SKILL.md (or your agent's skills folder).Review the paper at $ARGUMENTS (a directory of sections or specific files)
for argument-level logic and cross-section consistency. If no argument is
given, locate the paper sources (e.g., sections/*.tex plus the main file
containing the abstract) and confirm the file set with the user.
This skill checks the whole-paper layer: does the argument hold together,
do the numbers reconcile, is the terminology stable. For sentence-level prose
(nominalizations, weak openings, word choice), run /paper-review per
section; for applying fixes, run /paper-fix. Do not duplicate their
sentence-level findings. The one exception is section M's mechanical greps
(punctuation, agreement), which enforce house style at whole-paper scope
because they catch drift that per-section review misses.
All examples below are from a fictional paper about a fictional adaptive caching system. They illustrate the shape of each antipattern; never copy them into your report. Every finding must quote the actual paper under review.
Your report is incomplete unless ALL of the following hold. Re-walk the checklists until they do.
[Xn] checked — no findings, plus
one sentence saying what you looked at. Silent skips are not allowed.file:line, a verbatim quote from
the paper under review, a problem statement that names the reasoning
error (not "this is unclear"), and a concrete fix — for prose problems, a
full rewritten sentence, not "consider rephrasing".wording.md) if present. Logic problems are
invisible in a single section — never run this skill on one file alone.Formats below, illustrated with fictional rows. Build them from the actual paper.
One row per recurring concept. The "names used" column exposes drift.
| Concept | Canonical term (per conventions file, if any) | Names actually used (with locations) | First defined at |
|---|---|---|---|
| a unit of admission logic | predicate | predicate (02:§2.2), filter (05:RQ1), policy (05:RQ2) | 02:§2.2 |
A concept with 2+ names, or one name covering 2+ concepts, is a C1 finding. A "first defined at" that comes after a use is a C2 finding.
One row per quantitative claim. Same fact in multiple places = one row with multiple locations; mismatched forms are B1 findings, reader-derivable-only values are B2 findings.
| Fact | Value & form at each location | Locations | Source |
|---|---|---|---|
| hit-rate advantage | "1.8–2.4×" / "15–22 pp" / raw 61 vs 25–34 | intro:¶5, eval:§6.2 text, Tab.2 | only derivable from Tab.2 by reader arithmetic → B2 |
One row per claim in the abstract, intro, or contributions list.
| Promise (quoted, with qualifiers) | Where supported | Qualifier preserved? |
|---|---|---|
| "improves tail latency on production workloads" | §6.4 (12 of 80 workloads, selected for cache sensitivity) | NO — eval scopes to subset, intro doesn't → A4 |
Motivation/empirical/background sections must describe the problem in problem-domain terms. If they classify the world using the system's own mechanisms, the study stops being independent evidence and begs the question.
Bad (in a workload-study section):
These access patterns map directly to our epoch-counters and ghost-list primitives.
Good (same section):
Three recurring patterns emerge: bursty re-reference, scan pollution, and slow drift. All three require admission decisions that depend on history beyond the current request.
…and in Design: "The three patterns identified in §2 reduce to two mechanisms: epoch counters and ghost lists."
How to check: list the design section's mechanism nouns, then grep for each in every section that precedes the design. Each hit in motivation/background is a finding unless it is citing prior work.
Defining a category by reference to the system, then reporting its size as an independent finding, is circular.
Bad:
…the subset of requests that \sys{} can intercept is \emph{trackable}. […] Our study finds that 73% of requests are trackable.
Good:
A request is \emph{trackable} if it carries an object identifier visible at the proxy layer, independent of any particular system. The study finds 73% of requests are trackable, and \sys{} targets exactly this class.
How to check: for every \emph{}d or defined category, ask "does the
definition mention the system?" If yes, every later use of that category's
count as a population is a finding.
If the motivation derives N requirements, the design must visibly consume all N. Count both ends and demand an explicit mapping.
Bad: the motivation summary lists four requirements (history-aware admission, low memory, isolation, observability); the design opens "Two key challenges arise" and resolves them with "three techniques"; isolation and observability map to neither.
Good: a mapping sentence at the start of design: "Requirements R1–R2 raise challenge C1, addressed by epoch counters (§4.1) and ghost lists (§4.2); R3 raises C2, addressed by per-tenant partitions (§4.3); R4 is an implementation property, evaluated in §6.3."
How to check: write out three literal lists (requirements, challenges, components) with locations; draw the mapping; report every orphan on either side as a finding.
Claims scoped to a selected subset must stay scoped in every restatement, and hedging level for the same claim must be identical everywhere.
Bad: eval says "These results suggest that history-aware admission improves tail latency on the 12 cache-sensitive workloads"; conclusion says "\sys{} improves tail latency on production workloads."
Good: the conclusion repeats both the hedge and the scope, or the eval explicitly justifies upgrading the claim.
How to check: for each promise-table row, diff the qualifiers ("suggest", "on the subset", "up to", "in our setting") between the eval sentence and every restatement in abstract, intro, and conclusion. Any dropped qualifier is a finding.
Reserve "cannot", "never", "impossible", and "guarantees" for structural, by-construction facts (a stateless mechanism cannot track cross-event state; tool-call interception cannot observe effects outside the tool boundary). Limitations that are a matter of cost or effort ("an administrator could, with enough work") take "hard", "impractical", or "rarely". Also check the reverse drift: a claim hedged in the body must not strengthen to an absolute in the abstract or intro.
"X has property P; this makes X the natural Y" is an argument, not a fact. Either rebut the obvious objection in place or forward-reference where it is handled.
Bad:
Application developers already know their access patterns. This makes them the natural authors of admission policy.
Good:
Application developers already know their access patterns, so they hold the context that admission policy needs. Letting tenants author policy raises an isolation problem, which we address by bounding each tenant's policy to its own partition (§4.3).
How to check: grep for natural|clearly|obviously|therefore|this makes| this means in intro/motivation; for each hit, ask "what objection would a
hostile reviewer raise here, and is it answered or forward-referenced?"
One paragraph, one claim. How to check: for each intro/motivation paragraph, write its one-line claim; if the line needs "and also", split the paragraph and report it, naming both claims.
Every number in abstract/intro/conclusion must appear verbatim in (or be trivially derivable from a single labeled place in) the evaluation, and the same result must keep one canonical form.
Bad: intro "1.8–2.4×"; eval text "15–22 percentage points" and "2×"; table raw counts — three forms, no anchor sentence connecting them.
Good: one headline form, printed next to its table, reused verbatim: "serves 61 of 90 bursty workloads from cache, 1.8–2.4× the 25–34 of the baselines (Table 2)".
If the headline claim is a ratio or delta, print it beside the table it comes from. How to check: for each abstract/intro number, search the eval for it verbatim; if you had to compute it from table cells, so will the reviewer — that is the finding, and the fix is an anchor sentence.
Every rate names numerator and denominator at first use; exclusions are stated before the rate; subset selection states the rule, counts the remainder, and scopes conclusions (cross-check A4).
Bad: "\sys{} eliminates 70% of avoidable misses. […two paragraphs later…] Cold-start runs are excluded from the miss-rate denominator."
Good: "Of 120 avoidable misses, \sys{} eliminates 84 (70%). The 40 cold-start runs are excluded up front because no admission policy can serve a first access."
How to check: grep for % and rate; for each, write value = N/D with
both numbers named in the same paragraph. Missing N or D, or a post-hoc
exclusion, is a finding.
Significant digits must match measurement reliability; constants from outside the experiment need citations.
Bad: "$0.0314 per query […] At typical cloud egress rates, about $12.47 per workload." (four significant digits against an uncited price assumption)
Good: "about $0.03 per query, versus roughly $12 per workload at list-price cloud egress~\cite{cloudpricing2026}".
How to check: grep for \$[0-9], orders of magnitude, and 3+
significant-digit values; each needs a source (measurement, citation, or
shown derivation).
If the metric definition makes an outcome count favorably for one system and unfavorably for another by construction, disclose it in the sentence that makes the comparison, not paragraphs later.
Bad: praising an ablation's zero wrongful evictions in one paragraph, and only later noting that the metric counts an object re-fetched within the same epoch as "retained" for the ablation but "evicted" for the full system.
Good: "the ablation's zero wrongful evictions partly reflects the metric: without prefetch, re-fetches land in the same epoch and score as retained, while the same objects score as evicted under full \sys{}."
How to check: for every cross-system comparison, re-read the metric definition and ask "could two systems with identical behavior score differently because of how outcomes are labeled?" If yes, the disclosure must be co-located with the comparison.
One concept, one term, throughout — enforce the project's terminology conventions file where present. Flag (a) near-synonym alternation for one referent, (b) one word for two concepts. The term table makes both visible; report each drifting concept as one finding listing all locations.
Every acronym, notation, configuration name, and dataset label is defined before first use — including figure captions and table headers, which readers hit out of order.
Bad: a figure caption says "CG-32 and CG-128"; the CG-$N$ notation is defined two subsections later; "warm-path configurations" is used in one setup paragraph and explained at the end of a different subsection.
How to check: for each notation in the term table, compare
first-definition location against first-use location, treating each figure
caption as used at its \begin{figure} line.
After RQs/sections/figures are renumbered, stale labels and filenames remain.
Bad: figures named rq1_*.pdf are all cited inside the RQ2 subsection,
rq2_*.pdf inside RQ3, and so on — every figure filename is off by one
against the prose that cites it.
How to check: grep includegraphics and \label{, and compare each
filename/label against the number of the subsection citing it. Also check
that anything named in the intro (a benchmark, a dataset, a metric) is
introduced by the same name in its own section.
Setups with multiple models/agents/judges/generators state every role once, in one place, before results — who generates the workload, who runs it, who translates configurations, who judges outcomes, and what software or model backs each role.
Good (one place):
Roles: generator G (model A) produces the traces, translator T (model B) writes the configurations, model C is the system under test (replicated with model D), and the outcome judge runs on the same model as the system under test.
How to check: build the roles table yourself from the eval text. Count how many paragraphs you needed. More than one place = finding; a role you cannot resolve at all = Must fix.
Contribution lists, RQ lists, and itemized claims are grammatically parallel, and each item is a complete sentence. A garbled contribution item is a Must fix: it is the most-read sentence after the abstract.
Bad: "An evaluation on our admission benchmark building on the workload study, external latency and cost benchmarks covering batch and interactive workloads." (no main verb; not parallel)
How to check: read each list item aloud as a standalone sentence; check all items share the same grammatical skeleton ("An X that Y").
Every verification step names the actor and the criterion.
Bad: "We manually corrected samples flagged as requiring double-checking" (flagged by whom, against what rule?); "all of which matched expectations" (whose expectations?).
Good: "the judge flags low-confidence verdicts, and two authors re-label all flagged samples against the written rubric".
How to check: grep flagged|validated|verified|reviewed|matched|confirmed
in methodology text; each hit needs a named actor and criterion.
Numbers repeated in captions must match the prose exactly (count, rounding,
units), and each caption must state the takeaway, not just the axes.
How to check: for every number inside a \caption{}, find its twin in
the body text; flag mismatches and takeaway-free captions.
Adjust paths to the actual file set.
# ~ used as "approximately" (renders as non-breaking space; the "about" vanishes)
grep -n '[ (]~[0-9]' *.tex sections/*.tex
# em-dashes in prose, LaTeX and Unicode forms (house style; table --- for N/A is OK)
grep -n -- '---\|—' sections/*.tex | grep -v '& *--- *&\|--- *\\\\'
# subject-verb agreement: "does" followed by a plural subject
grep -nE 'does [^.?]*\b\w+(ies|s)\b.*\b(improve|prevent|reduce|achieve)' sections/*.tex
# e.g./i.e. punctuation consistency (counts should not both be nonzero)
grep -c 'e\.g\.,' sections/*.tex; grep -c 'e\.g\.[^,]' sections/*.tex
# stale figure numbering and labels (compare against citing subsection)
grep -n 'includegraphics\|\\label{fig:\|\\ref{fig:' sections/*.tex
# semicolons joining clauses (house style; lists OK) — triage each
grep -n '; [a-z]' sections/*.tex
# rates and percentages for the B3 denominator audit
grep -n '[0-9]%\|percent\|rate' sections/*.tex
# unsourced money / magnitude claims for B4
grep -n '\\\$[0-9]\|orders of magnitude' sections/*.texAlso check by reading (no grep possible):
---) in paper text. Use commas, parentheses, or
restructure. Table cells using --- for "not applicable" are OK.Abstract / Intro: every number traced to the eval (B1/B2); every claim in the promise table with qualifiers (A4); one paragraph = one claim (A6); "we argue/we observe" steps checked for leaps (A5); contribution list checked for parallelism (C5) and 1:1 mapping to sections.
Background / Motivation / Empirical or workload study: no solution vocabulary (A1); categories defined system-independently (A2); the closing summary's requirements recorded for A3; counts here are the canonical source for every later population claim — record them in the number table.
Design: opening consumes all requirements (A3); each mechanism's "why" traces to a motivation finding by explicit reference; terms introduced here checked against the conventions file (C1/C2).
Implementation: numbers (LoC, limits) recorded in the number table; "future work" admissions cross-checked against any capability claimed earlier (A4).
Evaluation: roles stated once (C4); every rate's denominator audited (B3); metric-construction biases disclosed at the comparison (B5); subset selections scoped (A4); figure filenames vs section numbers (C3); captions vs prose (C7); notation defined before the first figure that uses it (C2).
Related work: each contrast sentence states a checkable difference, not adjectives; no claims about your own system that the eval did not support.
Conclusion: pure restatement — any number or scope not identical to the eval's form is a finding (A4/B1).
Fictional findings, at the depth every real finding must match:
[A2][Must] sections/02-motivation.tex:217 "the subset of requests that
\sys{} can intercept is \emph{trackable}"
Problem: the category is defined by what the system can do, then §6.1
("our study finds 73% of requests are trackable") uses its size as a
neutral population — the denominator of the coverage claim is circular.
Fix: "A request is trackable if it carries an object identifier visible at
the proxy layer, independent of mechanism." State the \sys{} alignment
once, separately.
[B3][Must] sections/05-evaluation.tex:514+520 "eliminates 70% of avoidable
misses" … "cold-start runs are excluded from the miss-rate denominator"
Problem: the exclusion that shapes the headline rate is disclosed two
paragraphs after the rate; a reviewer reading linearly recomputes the rate
with different assumptions.
Fix: fold numerator, denominator, and exclusion into the first statement:
"Of 120 avoidable misses, \sys{} eliminates 84 (70%). The 40 cold-start
runs are excluded up front because no admission policy can serve a first
access."
[C3][Should] sections/05-evaluation.tex:91,207,244 figures rq1_pipeline.pdf,
rq1_hitrate.pdf, rq1_breakdown.pdf all cited inside §RQ2
Problem: figure filenames carry a stale RQ numbering (every eval figure is
off by one), signaling unmaintained renumbering to reviewers.
Fix: rename the files to match the current RQ numbers and update the
\includegraphics paths.findings: N or checked — no findings (looked at: …).© eunomia-bpf, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/paper-logic of eunomia-bpf/ActPlane.
Open the folder on GitHubat commit 4045428
Paper Logic 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 |
|---|---|---|---|---|---|---|
| Paper Logic this skilleunomia-bpf/ActPlane | 104 | — | ~5.7k | Automated safety check: Pass | MIT | |
| PaperjurySpark-To-Paper-Skills/paperjury | 1.2k | — | ~5.3k | Automated safety check: Pass | MIT | |
| Paper Auditbrycewang-stanford/Auto-Empirical-Research-Skills | 4.6k | — | ~3.6k | Automated safety check: Pass | Custom licence | |
| Academic Paper Writing PipelineImbad0202/academic-research-skills | 51k | — | ~16k | Automated safety check: Pass | Custom licence | |
| Mathmodel SkillhandsomeZR-netizen/mathmodel-skill | 292 | — | ~2.5k | Automated safety check: Pass | MIT | |
| AI Review SkillNeuroDong/Ai-Review | 628 | — | ~2.5k | Automated safety check: Pass | MIT |
Spark-To-Paper-Skills/paperjury
Three modes for CS-conference papers (CVPR/ICCV/ECCV vision, ACL/EMNLP/NAACL NLP, ICLR/NeurIPS/ICML/AAAI ML).
brycewang-stanford/Auto-Empirical-Research-Skills
Deep-review-first audit for Chinese and English academic papers across LaTeX, Typst, and PDF formats.
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.
handsomeZR-netizen/mathmodel-skill
CUMCM 国赛、MCM/ICM 美赛与电工杯数学建模竞赛的端到端协作工作流。Use when a user explicitly works on one of these modeling contests or asks to run/review a modeling-competition paper from problem selection through modeling…
NeuroDong/Ai-Review
Generates structured AI paper reviews (SoT style) for LaTeX, PDF, and Word manuscripts.
voidful/academic-skills
頂級會議論文寫作技能——以嚴格 reviewer 視角指導從草稿到終稿的完整寫作流程。當使用者要寫論文、改善論文草稿、修改特定章節(introduction、method、experiments、conclusion)、潤色學術英文、回應 reviewer 意見,或問「這段怎麼寫」時,一定要使用此技能。觸發詞包括:寫論文、paper writing、improve my…
eunomia-bpf/ActPlane
Review and fix academic writing in a LaTeX paper section. An agent skill from eunomia-bpf/ActPlane.
Works with
Categories
Review a LaTeX paper for argument-level logic, cross-section consistency, and house style. Paper Logic is an agent skill from eunomia-bpf/ActPlane. Review a LaTeX paper for argument-level logic, cross-section consistency, and house style.
Paper Logic fits situations like: tasks that involve LaTeX; tasks that involve Peer review.
Run `npx skills add eunomia-bpf/ActPlane --skill paper-logic -a claude-code`. Or copy the skill folder (.claude/skills/paper-logic in eunomia-bpf/ActPlane) into .claude/skills/paper-logic in your project. Claude Code loads it when a task matches its description.
Run `npx skills add eunomia-bpf/ActPlane --skill paper-logic -a codex`. Or copy the skill folder (.claude/skills/paper-logic in eunomia-bpf/ActPlane) into .agents/skills/paper-logic 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 eunomia-bpf/ActPlane --skill paper-logic -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/paper-logic, .gemini/skills/paper-logic, .github/skills/paper-logic and .opencode/skills/paper-logic in your project.
SKILL.md names no scripts, command-line tools or credentials: Paper Logic is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Bash(grep *), Bash(wc *), Bash(ls *), Bash(find *).
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.
Paper Logic is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Paper Logic: Paperjury (Spark-To-Paper-Skills/paperjury, 1.2k stars), Paper Audit (brycewang-stanford/Auto-Empirical-Research-Skills, 4.6k stars), Academic Paper Writing Pipeline (Imbad0202/academic-research-skills, 51k stars) and Mathmodel Skill (handsomeZR-netizen/mathmodel-skill, 292 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
eunomia-bpf (a GitHub organization) maintains it in eunomia-bpf/ActPlane, which has 104 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 9, 2026.
Source: eunomia-bpf/ActPlane on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.