Ieee Figure Table
CloudWave818/ieee-skills
Audit, redesign, generate, and improve IEEE manuscript figures, tables, captions, result presentation, plotting scripts, visual polish, hybrid Python/R plus vector-editor workflows…
Academic-grade scientific figure creation for Nature/Cell/Science journals.
$ npx skills add TingxiYu/academic-figure-skill --skill academic-figure-skill -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TingxiYu/academic-figure-skill academic-figure-skill --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "academic-figure-skill" agent skill from https://github.com/TingxiYu/academic-figure-skill/tree/main into .claude/skills/academic-figure-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "academic-figure-skill", 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.
$ npx skills add TingxiYu/academic-figure-skill --skill academic-figure-skill -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TingxiYu/academic-figure-skill academic-figure-skill --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "academic-figure-skill" agent skill from https://github.com/TingxiYu/academic-figure-skill/tree/main into .agents/skills/academic-figure-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "academic-figure-skill", 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 TingxiYu/academic-figure-skill --skill academic-figure-skill -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TingxiYu/academic-figure-skill academic-figure-skill --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "academic-figure-skill" agent skill from https://github.com/TingxiYu/academic-figure-skill/tree/main into .cursor/skills/academic-figure-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "academic-figure-skill", 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.
$ npx skills add TingxiYu/academic-figure-skill --skill academic-figure-skill -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TingxiYu/academic-figure-skill academic-figure-skill --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "academic-figure-skill" agent skill from https://github.com/TingxiYu/academic-figure-skill/tree/main into .gemini/skills/academic-figure-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "academic-figure-skill", 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 TingxiYu/academic-figure-skill academic-figure-skillInstalls 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 TingxiYu/academic-figure-skill --skill academic-figure-skill -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "academic-figure-skill" agent skill from https://github.com/TingxiYu/academic-figure-skill/tree/main into .github/skills/academic-figure-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "academic-figure-skill", 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 TingxiYu/academic-figure-skill --skill academic-figure-skill -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install TingxiYu/academic-figure-skill academic-figure-skill --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "academic-figure-skill" agent skill from https://github.com/TingxiYu/academic-figure-skill/tree/main into .opencode/skills/academic-figure-skill/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "academic-figure-skill", 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.
academic-figure-skillAcademic-grade scientific figure creation for Nature/Cell/Science journals.
Academic Figure Skill is an agent skill from TingxiYu/academic-figure-skill. Academic-grade scientific figure creation for Nature/Cell/Science journals. Use when the user asks to create, polish, review, or export scientific figures for manuscript submission. DO NOT trigger for: interactive dashboards (Plotly/Bokeh/Altair), exploratory data analysis without publication intent, math function plots, pie/3D charts, PowerPoint slides, or Illustrator/Figma-first design. SKIP requests about statistical testing, data cleaning, literature review, or code debugging — these are not figure-making…
Its SKILL.md is about 7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 258 other files, including scripts, reference files and assets (for example `README.md` and `README_EN.md`).
It sits in Data & Analytics, covering Data visualization. It works with Adobe Illustrator, Figma, Plotly and Microsoft PowerPoint. The repository describes itself as: A skill for academic research figure generation that autonomously handles the full workflow — data understanding, chart type recommendation, and format-compliant generation. The licence is Apache-2.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1df9940. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
pythonpython3pipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
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.
Academic Figure Skill loads about 7k tokens when it runs, and up to ~31k if it reads all its reference files. Until then it costs about 136 tokens; SKILL.md has 2,242 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); the scripts in this folder are not scanned.
The full file from TingxiYu/academic-figure-skill at commit 1df9940, republished under its Apache-2.0 licence (© TingxiYu). 2,242 words, ~6,978 tokens.
.claude/skills/academic-figure-skill/SKILL.md (or your agent's skills folder). This skill also uses 256 other files; get the full folder from GitHub.Academic Figure Skill generates publication-grade scientific figures for Nature/Cell/Science family journals. Every figure starts from the scientific question, not from a template.
1. One figure, one core message. CNS reviewers skim fast. A figure must convey its main conclusion in 3 seconds. Remove gridlines, borders, and legend entries that dilute the core message. Default to minimal, not maximal.
2. Restrained color > abundant color.
Default palettes (matplotlib tab10, ggplot2 hue_pal, Excel colors) signal "not designed" instantly. Use 2-4 semantic main colors + 1 accent. See references/color-palettes.md.
3. Design for print, not screen. Journal column widths are fixed (89 mm single, 183 mm double). Set figure dimensions at creation time — never scale down post-render.
4. Vector first, raster as fallback. Line art, scatter plots, bar charts → PDF/SVG/EPS. Only true raster content (heatmap color blocks, micrographs) should use TIFF/PNG at ≥300 dpi.
Follow this closed loop for every request. Never skip steps. Never assume the user's question.
User request received
│
▼
Step -1: Understand the Task ←── DISPATCH FIRST. If the user gave data but
│ didn't say what they want to learn, ASK.
▼
Step 0: Parse Data, Match to Task ←── Data parsing is directed by the
│ question, not by a template.
▼
Step 1: Recommend & Justify ←── "To answer your question, you need these
│ N panels. Here's why." N depends on the
▼ question, not on a fixed number.
User Confirms ──→ No → Refine recommendation
│
▼ Yes
Step 2: Runtime & Environment ←── Detect Python + R availability.
│ Install or configure if missing.
▼
Step 3: Style Baseline Injection ←── typography + color + export blocks.
│ Copied VERBATIM into every script.
▼
Step 4: Production Asset Scan ←── ls assets/figures/. For EVERY panel in
│ the plan, check matching scripts.
▼
Step 5: Generate ←── COPY-FIRST for matching scripts → native run.
│ No match → cross-type inherit.
▼
Step 5.5: Validate Data ←── Data sanity checks BEFORE rendering.
│
▼
Step 6: QA Protocol ←── 4-pass QA (AP-0..AP-7, CL-1..CL-7,
│ VI-1..VI-6, VV-1..VV-5). Fix → re-render.
▼
Step 7: Deliver ←── Vector PDF master + 300dpi PNG preview
+ QA report + statistics reportBefore reading a single data file, understand what the user is trying to learn. A dataset without a question is a spreadsheet, not a figure. The entire visualization plan flows from this question.
Classify the request into one of:
| User intent | Signal | Example |
|---|---|---|
| User specified figure types | "Make a volcano plot" / "画个热图" | User knows what they want. Proceed to Step 1 with the specified types. |
| User has a question + data | "Does Treatment affect Pheno1?" / "What drives Group differences?" | User has a scientific question. Proceed to Step 0. |
| User gave data, no question | "Analyze this data" / "Visualize this" / "看看这个数据" | STOP. Ask the user: "What are you trying to learn from this data? Are you comparing groups? Looking for correlations? Finding outliers? Testing a hypothesis?" Do NOT proceed until the user clarifies. Never generate generic "analysis" without a question. |
| Cosmetic fix | "Change this bar to blue" / "调整字号" | Skip to Steps 4-6. No contract needed. |
If the user gave data without a question, the default response is a question, not a figure.
Step 0a — Classify the figure archetype FIRST. Before parsing data, classify the figure into one of four archetypes. This determines layout strategy.
| Archetype | Description | Layout Strategy |
|---|---|---|
quantitative_grid | All panels carry equal scientific weight. Standard grid of related data plots. | Symmetric. No hero panel. Equal panel sizes. |
schematic-led | A schematic/model diagram anchors the figure, supported by data panels. | Asymmetric. The schematic IS the hero. Data panels are supporting. |
image_plate + quant | Microscopy/images paired with quantitative analysis. | Asymmetric. The image plate IS the hero. Quant panels are supporting. |
asymmetric_mixed | Panels have different information density. One dense overview (heatmap/PCA/UMAP) dominates. | Asymmetric. The densest panel IS the hero. |
If unsure, default to asymmetric_mixed — it produces the Nature-style look of one dominant panel + subordinate evidence panels. Pure symmetric grids are rare in top-tier journals outside of supplement.
Pass the archetype to compose_figure(archetype=...). The engine auto-detects which panel is the hero and applies asymmetric layout when the archetype is not quantitative_grid or symmetric.
Step 0b — Parse data. Once the archetype is classified, read and analyze the data — but only the aspects relevant to the question.
DATA INTEGRITY RULE — NON-NEGOTIABLE:
np.random.choice(df, 12) when the user gave 1200 rows. The user's data IS the ground truth. Reducing it is fabricating evidence.rasterized=True or vector-friendly density representations. Never subsample to solve a rendering problem.real_value.csv + pred_value.csv but user has Pheno1-Pheno8), do NOT silently adapt by picking two columns. Inform the user: "This script expects paired X/Y data. Your data has N columns. Which two should I use as X and Y?" Wait for confirmation before proceeding.Based on the question and the data morphology, propose a visualization plan. For each panel, state:
The recommendation must follow this structure:
Visualization Plan
Scientific goal: [one sentence — what the user wants to learn]
| Panel | Figure type | Answers | Data basis |
|-------|------------|---------|------------|
| (a) | [type] | [question] | [e.g. Pheno1-6 all r>0.9 → heatmap] |
| (b) | [type] | [question] | [e.g. PC1=92% → PCA with group coloring] |
| ... | ... | ... | ... |
Total: N panels. Layout: [M×N]. Journal: [target].Re-evaluate after user feedback. If the user says "also show X" or "don't need Y", update the plan and re-present. Only proceed after explicit confirmation.
After the plan is confirmed, before generating any code, verify the execution environment.
python --version 2>/dev/null || python3 --version 2>/dev/null
Rscript --version 2>/dev/null || ls "/c/Program Files/R/"*/bin/Rscript.exe 2>/dev/nullStore as PYTHON_AVAILABLE, R_AVAILABLE, R_PATH.
Match runtimes to the plan: For each panel in the confirmed plan:
Handle missing runtimes:
install.packages(...) command providedpip install ... command providedDo not silently fall back. The user decides whether to install the missing runtime or accept lower quality.
Load these three files and copy their "COPY VERBATIM" code blocks into the script — in order, at the very top, before any panel logic:
references/typography.md — rcParams/theme block. Fonts, spines, ticks, legend defaults.references/color-palettes.md — PALETTE constants. All color variables.references/export-specs.md — font embedding + save function.Also read references/journal-specs.md for target dimensions (89mm single / 183mm double).
Run AFTER plan confirmation, BEFORE code generation. For EVERY panel in the confirmed plan:
references/directory-map.md. This table maps user language (Chinese + English) to exact assets/figures/<dir>/ paths. Find the user's description in the "Keywords" column → use the exact directory path. This prevents the #2 recurring bug: "柱状图" matching the wrong bar sub-directory.ls assets/figures/<matched-dir>/ that the directory exists and has scripts..py, .R, .r).length/number_of_cds but user has Pheno1/Pheno2), mark as "visual adapt" — the script's visual system is preserved, only data mapping changes. Only mark as "incompatible" when the data STRUCTURE fundamentally differs (e.g. script expects paired X/Y CSV files but user has a single wide table).directory-map.md has no matching entry, fall back to scanning ls assets/figures/ and matching directory names.Decision per panel:
Panel type matched in assets/figures/<type>/
│
├── Script exists + runtime available + data STRUCTURE matches → COPY-FIRST.
│ 1. Copy the ENTIRE script file to work_dir/<panel>_production.<ext>
│ 2. Find the data-loading line, replace ONLY the data path
│ 3. Execute: subprocess.run([python/r_bin, script])
│ 4. If FAIL: log reason → downgrade to VISUAL ADAPT with notice
│ 5. If OK: load rendered PNG via Image.open() in composition
│ Panel quality = PRODUCTION. NEVER write a drawing function for this panel.
│
├── Script exists + data COLUMNS differ but STRUCTURE matches → VISUAL ADAPT (NEW).
│ The script's visual system (layout, coords, colormap, annotations, inset
│ positioning, statistical overlays) is PRESERVED. Only the data mapping changes.
│
│ VISUAL ADAPT protocol — PRESERVES production script's visual system:
│
│ **Step 0: SEMANTIC MATCH CHECK (NEW — run BEFORE column mapping).**
│ Open the production script's companion PNG. Answer:
│ - What does this script actually PRODUCE? (scatter with marginal density?
│ grouped KDE? 2D kernel density contour? ridgeplot? violin?)
│ - What does the USER want? (from their request: "边际密度图", "核密度图",
│ "分布图", "density", "KDE", etc.)
│ - Are they semantically compatible? (1D vs 1D? 2D vs 2D? same number of
│ data dimensions?)
│
│ **If YES → Proceed to Step 1 (column mapping).**
│ The script produces what the user wants. Column names differ but the
│ visual system (layout, axes, transformations) can be preserved.
│
│ **If NO → STOP. Do not VISUAL ADAPT.**
│ Column mapping cannot fix a semantic mismatch. A JointGrid 2D scatter
│ script cannot produce a 1D marginal density plot no matter how you map
│ columns. Two cases:
│ - User wants 1D density of multiple variables → cross-type inherit from
│ Ridge (density fill + bandwidth) or KDE/Density (distribution pattern)
│ - User wants 2D scatter density → find a semantically matching 2D script
│
│ 1. Identify the script's data entry points:
│ - What column names does it reference? (e.g. "length", "number_of_cds")
│ - What grouping variable? (e.g. "type", "Group")
│ - What filtering columns? (e.g. "is_drep95")
│ 2. Map to user's data:
│ - Script column X → User column ____ (choose most semantically similar)
│ - Script column Y → User column ____
│ - Script grouping col → User column ____ (or None if user has no groups)
│ 3. PRESENT THE MAPPING TO THE USER for confirmation.
│ 4. **Data range compatibility check (NEW):** Before copying the script, verify
│ that the user's data values are compatible with the script's mathematical
│ operations. Specifically check:
│ - Does the script use log-scale axes? → User data must have NO values ≤ 0
│ - Does the script normalize to [0,1]? → User data must have finite range
│ - Does the script use sqrt/division? → User data must be non-negative
│ - Does the script bin continuous data? → User data must have sufficient range
│
│ If ANY check fails, identify which visual elements must be adapted:
│ - Log scale with negative values → drop log transform, keep linear axes
│ - Normalization with zero range → skip normalization, use raw values
│ - Division by zero risk → add epsilon guard
│ Tell the user which transforms were dropped and why.
│ 5. Copy the script. Modify ONLY:
│ - Column name references (search-replace old col name → user col name)
│ - Grouping column mapping (or set group=None if none)
│ - Mathematical transforms that conflict with data range (from step 4)
│ - Data path
│ - NEVER modify: layout structure, color palettes, annotation logic,
│ figure dimensions, export parameters
│ 6. Execute the adapted script. Verify output PNG renders.
│ 7. If execution fails: log reason → downgrade to PARAM INHERIT with notice
│ Panel quality = PRODUCTION VISUAL SYSTEM. The layout and aesthetics are
│ from the production script; only the data source changed.
│
├── Script exists + data STRUCTURE incompatible → CROSS-TYPE INHERIT + INFORM.
│ Tell user: "[dir] has scripts but fundamentally different data structure.
│ Using cross-type inheritance. Visual quality will be lower."
│
├── Script exists + runtime NOT available → EXTRACT PARAMETERS.
│ Read the script's FULL content. Open its companion PNG.
│ Extract Class A/B/C parameters. Cross-type inherit.
│ Inform user of the quality tradeoff.
│
└── No script exists → CROSS-TYPE INHERIT.
Borrow from similar figure type in the borrowing table below.Borrowing table (no matching script):
Requested type Borrow from What transfers
─────────────────────────────────────────────────────
RDA PCA scatter point size, alpha, ellipse style
Radar Bar color palette ratio, legend style
KDE / Density Ridge alpha fill, line color, bandwidth factor
UpSet Confusion Matrix fill color, edge color, font size
Single-cell traj. PCA scatter point size, alpha, colormap
Forest Bar line width, marker size, color logic
Sankey (use own if exists) node color palette, flow alpha
Heatmap CorrHeatmap colormap, colorbar settings
Correlation Scatter Scatter (basic) point size, alpha, regression line styleClass A — Hard Parameters (copy verbatim): Color hex, alpha, line widths, marker sizes, bandwidth, density scale, spacing ratios.
Class B — Scaling Parameters (preserve ratio): Font sizes → scale proportionally to Academic Figure Skill 7pt base. Figure dimensions → scale to journal column width.
Class C — Logic Parameters (copy behavior): Legend on/off, grid on/off, spine visibility, statistical annotation format, frameon.
You MUST open the companion PNG before finalizing parameters. Find the PNG with the same basename as the script. Inspect it. Ask: Do my extracted parameters reproduce this visual output? If uncertain → re-read the script.
Asset Confirmation Table — MUST be the first lines of the generated script.
Before any import, before any baseline block, the generated script MUST start with this exact comment block:
# Academic Figure Skill Asset Confirmation (verified against assets/figures/)
# (a) [figure type] → [asset path or "cross-type inherit"] → [native run | param inherit]
# (b) [figure type] → [asset path or "cross-type inherit"] → [native run | param inherit]
# ...
# RULE: "native run" = load pre-rendered PNG via Image.open().ax.imshow().
# "param inherit" = drawing function below that copies Class A/B/C values.
# If a panel says "native run" and you write a drawing function, you broke the contract.COPY-FIRST RULE — this is a MECHANICAL rule, not a judgment call.
For EVERY panel marked "native run" in the Asset Confirmation Table:
shutil.copy() or shell cp. The filename must be <panel_label>_production.<ext>.pd.read_csv(...), read.csv(...), read.delim(...)), and replace the path with the user's data path. Change NOTHING else.subprocess.run([sys.executable, script]). R: subprocess.run([r_bin, script]).png(type="cairo") and showtext_auto(FALSE) before png() per references/r-rendering.md.What this means in the composition script:
Image.open().Forbidden patterns (these indicate the COPY-FIRST rule was violated):
Script structure:
1. Asset Confirmation Table (MANDATORY — the first lines)
2. Style baseline (verbatim from Step 3) — ONCE at top
3. Data section — ALL user data loaded here, NEVER downsampled
4. Production script execution (for "native run" panels) — subprocess calls
5. Panel functions — PNG loaders for "native run", drawing functions for "param inherit"
6. compose_figure() call — handles layout, spacing, labels, exportMixed Python+R: R panels run first to PNG at spec-correct dimensions. Python engine loads them via ax.imshow().
R PNG rendering: Follow the three mandatory rules in references/r-rendering.md. Never skip them — they prevent the #1 recurring R PNG quality bug.
Run chart-type checks on every panel's data array. Fix failures before rendering.
Volcano: (padj < 0.05).sum() ≥ 10 AND ≤ 80%
AUROC: (tpr - fpr).max() ≥ 0.15
Heatmap: np.std(data, axis=1).mean() > 0.2
Bar: abs(means.max() - means.min()) / means.max() > 0.05
Corr: abs(corr_mat).max() (off-diag) ≥ 0.3
PCA/RDA: between_group_var / within_group_var > 1.0
Box/Violin: abs(medians.max() - medians.min()) / data_range > 0.1Also predict 3 visual problems at the target panel width. Fix them before rendering.
Execute the 4-pass QA protocol from references/checklist.md.
QA Gateway: READY (all pass) → Deliver. FIX (≤2) → Fix and re-run. ESCALATE (>2) → Reviewer Simulation Mode.
If Python/R runtime is unavailable, skip Pass 3 and warn the user.
Output:
The statistics report is not optional. A figure without statistical documentation is not a publication-grade figure. Reviewers expect this information and will request it if missing.
If the user asks "will this pass review?":
Role: You are a reviewer for [journal]. Review through 5 lenses:
- Scientific clarity — main message in 3 seconds?
- Visual hierarchy — most important element draws the eye?
- Color & accessibility — print-safe, colorblind-friendly?
- Typography & labeling — legible at print size?
- Overall polish — anything making you "frown"?
Output: structured feedback with priority (must-fix vs. suggestion) and fix instructions.
Flag these immediately when reviewing user code:
All figure types routed through assets/figures/<type>/. Adding a new type = adding a directory with scripts. No registration needed.
# Full asset audit — scripts, syntax, baseline compliance
py academic-figure-skill/scripts/eval_runner.py
py academic-figure-skill/scripts/eval_runner.py --type PCA
# Trigger accuracy benchmark — 40 prompts, F1/precision/recall
py academic-figure-skill/scripts/trigger_benchmark.py
py academic-figure-skill/scripts/trigger_benchmark.py --calibrate
# QA validator coverage — test each check against known-good/bad scripts
py academic-figure-skill/scripts/qa_coverage.py
# Reference integrity — directory-map, PANEL_ASPECT, SKILL.md cross-links
py academic-figure-skill/scripts/check_references.py
py academic-figure-skill/scripts/check_references.py --json
# E2E integration — automated A/B scenario scoring
py academic-figure-skill/scripts/e2e_runner.py
py academic-figure-skill/scripts/e2e_runner.py --scenario S1_pcaGenerate platform-specific adapter files for non-Claude-Code agents:
python academic-figure-skill/scripts/generate_adapters.py # all platforms
python academic-figure-skill/scripts/generate_adapters.py --target cursor # Cursor onlyGenerated adapters are in install/:
install/cursor/.cursorrules → copy to your project root for Cursorinstall/copilot/copilot-instructions.md → copy to .github/ for GitHub Copilotinstall/codex/manifest.yaml + instructions.md → copy to ~/.codex/skills/academic-figure-skill/ for Codexinstall/claude-code/README.md → already supported natively via ~/.claude/skills/| File | Purpose |
|---|---|
references/figure-contract.md | Scientific claim, evidence chain, archetype, review risks |
references/color-palettes.md | Color selection |
references/typography.md | Font setup |
references/journal-specs.md | Dimension and spine setup |
references/export-specs.md | Format and resolution |
references/checklist.md | Full QA checklist |
| File | When |
|---|---|
references/journal-intel.md | User specifies a target journal |
references/common-pitfalls.md | After code generation |
references/revision-cases.md | Figure type matches known case / "will this pass review" |
references/multipanel-layout.md | Multi-panel figures — anti-redundancy, hero panel, narrative |
references/directory-map.md | Step 4 — maps user language to exact figure directory paths |
references/figure-deconstruction.md | Compositional inspiration |
references/matplotlib.md | Python/matplotlib/seaborn |
references/complexheatmap.md | R heatmaps |
references/r-rendering.md | R PNG output — cairo device, showtext off, spec-correct dimensions |
| Path | When |
|---|---|
assets/figures/<type>/ | Step 4 — production script scan |
assets/figures/other/ | Long-tail fallback |
© TingxiYu, Apache-2.0. 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 256 other files (scripts, references, assets) in the repository root of TingxiYu/academic-figure-skill.
Open the folder on GitHubat commit 1df9940
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in TingxiYu/academic-figure-skill, which our catalogue first saw on October 7, 2026.
Academic Figure Skill 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 |
|---|---|---|---|---|---|---|
| Academic Figure Skill this skillTingxiYu/academic-figure-skill | 483 | 1 repos | ~7k | Automated safety check: Pass | Apache-2.0 | |
| Ieee Figure TableCloudWave818/ieee-skills | 359 | — | ~1k | Automated safety check: Pass | MIT | |
| Nature FigureCitrus-bit/Anaxa | 120 | 2 repos | ~2.7k | Automated safety check: Pass | MIT | |
| Nature FigureNeuroAIHub/BrainPilot | 1.1k | 1 repos | ~1.3k | Automated safety check: Pass | AGPL-3.0 | |
| Nature FigureTai609/NebulaMat | 100 | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Molecular Visualization 3dmoljaechang-hits/SciAgent-Skills | 374 | — | ~3.2k | Automated safety check: Pass | BSD-3-Clause |
CloudWave818/ieee-skills
Audit, redesign, generate, and improve IEEE manuscript figures, tables, captions, result presentation, plotting scripts, visual polish, hybrid Python/R plus vector-editor workflows…
Citrus-bit/Anaxa
Submission-grade Nature/high-impact journal figure workflow for Python or R.
NeuroAIHub/BrainPilot
Submission-grade Nature/high-impact journal figure workflow for Python or R.
Tai609/NebulaMat
Create, revise, audit, and export submission-grade scientific figures for Nature-family and other high-impact venues in Python (matplotlib/seaborn) or R (ggplot2/patchwork/ComplexHeatmap), including…
jaechang-hits/SciAgent-Skills
3Dmol.js WebGL molecular visualization emitted as self-contained HTML.
zLanqing/codex-claude-academic-skills
Low-level plotting library for full customization. An agent skill from zLanqing/codex-claude-academic-skills.
Categories
Academic-grade scientific figure creation for Nature/Cell/Science journals. Academic Figure Skill is an agent skill from TingxiYu/academic-figure-skill. Academic-grade scientific figure creation for Nature/Cell/Science journals.
Academic Figure Skill fits situations like: the user asks to create; export scientific figures for manuscript submission; : interactive dashboards (Plotly/Bokeh/Altair); exploratory data analysis without publication intent.
Run `npx skills add TingxiYu/academic-figure-skill --skill academic-figure-skill -a claude-code`. Or copy the skill folder (the TingxiYu/academic-figure-skill repository) into .claude/skills/academic-figure-skill in your project. Claude Code loads it when a task matches its description.
Run `npx skills add TingxiYu/academic-figure-skill --skill academic-figure-skill -a codex`. Or copy the skill folder (the TingxiYu/academic-figure-skill repository) into .agents/skills/academic-figure-skill 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 TingxiYu/academic-figure-skill --skill academic-figure-skill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/academic-figure-skill, .gemini/skills/academic-figure-skill, .github/skills/academic-figure-skill and .opencode/skills/academic-figure-skill in your project.
Going by SKILL.md and its folder, Academic Figure Skill needs the command-line tools its instructions call (python, python3 and pip). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Academic Figure Skill is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 7k tokens (SKILL.md is roughly 28k 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 24k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Academic Figure Skill: Ieee Figure Table (CloudWave818/ieee-skills, 359 stars), Nature Figure (Citrus-bit/Anaxa, 120 stars), Nature Figure (NeuroAIHub/BrainPilot, 1.1k stars) and Nature Figure (Tai609/NebulaMat, 100 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
TingxiYu (a GitHub user) maintains it in TingxiYu/academic-figure-skill, which has 483 GitHub stars. The repository was last updated on July 12, 2026.
Source: TingxiYu/academic-figure-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.