audit-engine
Activate when the user wants to audit a paper's empirical or technical claims against a linked code repository — checking whether…
Activate when the user needs to generate, refine, or evaluate academic figures, diagrams, or statistical plots. Uses PaperBanana to transform text descriptions or data files into publication-quality illustrations via direct Python API call. Fallback: matplotlib/seaborn.
Claude Code
$ npx -y skills add TobiasBlask/open-paper-machine --skill figure-engine --agent claude-code
Codex
$ npx skills add TobiasBlask/open-paper-machine --skill figure-engine -a codex -y
Cursor
$ npx skills add TobiasBlask/open-paper-machine --skill figure-engine -a cursor -y
Gemini CLI
$ npx skills add TobiasBlask/open-paper-machine --skill figure-engine -a gemini-cli -y
GitHub Copilot
$ npx skills add TobiasBlask/open-paper-machine --skill figure-engine -a github-copilot -y
OpenCode
$ npx skills add TobiasBlask/open-paper-machine --skill figure-engine -a opencode -y
Windsurf
$ npx skills add TobiasBlask/open-paper-machine --skill figure-engine -a windsurf -y
name: figure-engine description: > Activate when the user needs to generate, refine, or evaluate academic figures, diagrams, or statistical plots. Uses PaperBanana to transform text descriptions or data files into publication-quality illustrations via direct Python API call. Fallback: matplotlib/seaborn.
> **Orchestration Log**: When this skill is activated, append a log entry to `outputs/orchestration_log.md`: > ``` > ### Skill Activation: Figure Engine > **Timestamp:** [current date/time] > **Actor:** AI Agent (figure-engine) > **Input:** [brief description of the figure request] > **Output:** [brief description of what was produced — e.g., "Generated methodology diagram (fig03_methodology.png), 3 iterations"] > ```
Academic papers need professional figures. This skill eliminates manual design work by using PaperBanana to generate publication-quality diagrams and plots from text descriptions or data files. Claude should produce ACTUAL FIGURES, not describe what to draw.
> **Based on:** Zhu, D., Meng, R., Song, Y., Wei, X., Li, S., Pfister, T., & Yoon, J. (2026). > *PaperBanana: Automating Academic Illustration for AI Scientists.* [arXiv:2601.23265](https://arxiv.org/abs/2601.23265). > The pipeline uses a 5-agent, 2-phase architecture: Retriever → Planner → Stylist (Phase 1: planning), > then Visualizer ↔ Critic iterative refinement (Phase 2: generation) with VLM-as-Judge evaluation. > Official research repo: [`dwzhu-pku/PaperBanana`](https://github.com/dwzhu-pku/PaperBanana).
PaperBanana must be installed: `pip install paperbanana[mcp,google]`
A `GOOGLE_API_KEY` must be available via one of:
Get a free key at https://aistudio.google.com/apikey
---
1. **PRIMARY — Direct Python API** (via Bash → python3) — ALWAYS use this 2. **FALLBACK — matplotlib/seaborn** — If PaperBanana is not installed at all
> **Note:** The PaperBanana MCP server is NOT used. The MCP stdio transport is > unreliable (timeouts, hangs, silent failures). Always use the direct Python API.
---
The plugin ships a helper script `scripts/paperbanana_direct.py` that calls the PaperBanana Python API directly via `asyncio.run()`, completely bypassing the MCP stdio transport. It outputs JSON to stdout.
The script is at `scripts/paperbanana_direct.py` inside the plugin directory. To find it reliably across any installation:
PB_SCRIPT="$(find ~/.claude/plugins -name paperbanana_direct.py -path '*/open-academic-paper-machine/*' 2>/dev/null | head -1)"
For **short** source contexts (< 1000 chars), pass inline:
PB_SCRIPT="$(find ~/.claude/plugins -name paperbanana_direct.py -path '*/open-academic-paper-machine/*' 2>/dev/null | head -1)" && \ python3 "$PB_SCRIPT" diagram \ --source-context "The research follows a three-stage SLR methodology..." \ --caption "Figure 1: Systematic Literature Review Process" \ --output-dir figures/ \ --filename "fig_method_slr_process.png" \ --iterations 3
For **long** source contexts, write to a temp file first to avoid shell escaping issues:
# Step 1: Write source context to temp file cat > /tmp/pb_source_context.txt <<'CTXEOF' [FULL METHODOLOGY TEXT / FRAMEWORK DESCRIPTION HERE — can be multiple paragraphs, include all relevant details about components, relationships, and visual structure] CTXEOF # Step 2: Generate the figure PB_SCRIPT="$(find ~/.claude/plugins -name paperbanana_direct.py -path '*/open-academic-paper-machine/*' 2>/dev/null | head -1)" && \ python3 "$PB_SCRIPT" diagram \ --source-context "$(cat /tmp/pb_source_context.txt)" \ --caption "Figure N: Descriptive Caption" \ --output-dir figures/ \ --filename "fig_section_description.png" \ --iterations 3
PB_SCRIPT="$(find ~/.claude/plugins -name paperbanana_direct.py -path '*/open-academic-paper-machine/*' 2>/dev/null | head -1)" && \
python3 "$PB_SCRIPT" plot \
--data '{"categories": ["2020","2021","2022","2023","2024"], "values": [12,25,48,89,156]}' \
--caption "Bar chart showing exponential growth in AI adoption across financial services" \
--output-dir figures/ \
--filename "fig_results_adoption_growth.png" \
--iterations 3PB_SCRIPT="$(find ~/.claude/plugins -name paperbanana_direct.py -path '*/open-academic-paper-machine/*' 2>/dev/null | head -1)" && \ python3 "$PB_SCRIPT" evaluate \ --generated figures/fig_generated.png \ --reference figures/fig_reference.png \ --context "Original methodology text" \ --caption "Figure caption"
The script prints JSON to stdout:
On success, show the figure to the user using the Read tool on the PNG path.
PaperBanana generation takes 30-180 seconds (3 refinement iterations). Set a generous Bash timeout of **300 seconds** (5 minutes) when calling the script.
---
If PaperBanana is not installed at all, generate figures with Python directly:
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('Agg')
import seaborn as sns
plt.style.use('seaborn-v0_8-whitegrid')
plt.rcParams.update({
'font.family': 'serif',
'font.size': 11,
'axes.titlesize': 13,
'axes.labelsize': 12,
'figure.figsize': (10, 6),
'figure.dpi': 300,
'savefig.dpi': 300,
'savefig.bbox_inches': 'tight',
})For methodology diagrams without PaperBanana, use networkx or graphviz:
import networkx as nx # Build a directed graph and render with matplotlib
---
A Claude Code plugin that autonomously writes academic papers — from literature search to production-ready LaTeX/PDF. Scope note.
Activate when the user wants to audit a paper's empirical or technical claims against a linked code repository — checking whether…
Activate when the user needs to manage multi-author collaboration on a paper. Tracks author contributions using the CRediT…
Activate when the user needs to evaluate whether a research idea is worth pursuing, brainstorm new research directions, or…
Activate when the user wants to export a completed paper draft to production-ready LaTeX (.tex) and PDF. Converts draft.md +…
ALWAYS activate when the user needs to find, organize, review, or synthesize academic literature. Uses academic APIs (Semantic…
Activate when the user needs to select, justify, describe, or execute a research methodology. Provides method selection guidance,…
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…