Figmirror

Restyle your data as a matplotlib figure matching a reference paper's visual style

Tested · Works

Test report

Verdict
Tested · Works
Score
8.0/10
Tested
Jul 21, 2026
Environment
Claude Code 2.x (agent harness)
Upstream re-checked
Aug 10, 2026 · 2a8a6d3

Located SKILL.md at .claude/skills/figmirror/SKILL.md; frontmatter parses with name+description. Spot-checked 6 body-referenced files (aesthetic-library.md, iter-loop-spec.md, the three figure-* agents, score_3d_candidates.py) all HTTP 200; aesthetic-library.md is 933 lines matching the "~900" claim. No security smells. Trigger tested with 5 phrasings (3 with reference-image+data should activate, 2 plain-matplotlib no-image should not) — all 5 judged correctly; the description's explicit negative case makes this clean. Output: rendered a BASELINE line chart at matplotlib defaults, then a SKILL chart applying the bundled L2 aesthetic-library values verbatim (serif+STIX, top/right despine at 0.6pt, #e0e0e0 gridlines, frameless tight legend, seaborn-deep palette, single-column figsize, pdf.fonttype=42 — Type-42 embedding verified in the PDF). Concrete, clearly paper-grade improvement over baseline. Caveat: I exercised only the L2 convention layer; the headline L1 vision-mirror loop against a real reference screenshot via the three dispatched subagents was not run (no reference image / vision iteration in my context), though the skill documents a main-thread fallback so it still functions skill-only.

Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works

  • Installs cleanly 5/5
  • Triggers reliably 5/5
  • Output vs. baseline 6/10
  • Docs & honesty 4/5

What Figmirror does

Transfers the visual style of a reference paper figure (NeurIPS/ICML/Nature-style) onto your own data, emitting a self-contained matplotlib script plus PNG and a Type-42 PDF via an iterative Drawer/Reviewer loop. Triggers when you attach a paper-figure screenshot together with your data and ask to "mirror this figure's style", "make a chart that looks like this paper", or "reproduce this figure with my numbers". Does not trigger on plain matplotlib requests with no reference image.

How to install Figmirror

git clone --depth 1 https://github.com/VILA-Lab/FigMirror.git /tmp/figmirror-src
mkdir -p ~/.claude/skills ~/.claude/agents
cp -R /tmp/figmirror-src/.claude/skills/figmirror ~/.claude/skills/figmirror
cp /tmp/figmirror-src/.claude/agents/figure-preprocessor.md /tmp/figmirror-src/.claude/agents/figure-illustrator.md /tmp/figmirror-src/.claude/agents/figure-critic.md ~/.claude/agents/
# Requires python3 + matplotlib to run the generated figure scripts.
# The 3 agents above drive the Drawer/Reviewer loop; SKILL.md has a main-thread fallback if they are absent.
# Recommended installer (also wires Codex + local web UI): curl -fsSL https://raw.githubusercontent.com/VILA-Lab/FigMirror/main/scripts/install.sh | bash -s -- --claude
# Usage: attach a paper-figure screenshot + paste your data, then "mirror this figure's style with my data".

Skills live in ~/.claude/skills/ (global) or .claude/skills/ (per-project). Restart Claude Code after installing.

Commands — how to trigger Figmirror

  • /figmirror Restyle your data as a matplotlib figure matching a reference paper's visual style

It also activates on plain-language prompts like these:

  • Mirror this paper figure's style with my dataset
  • Make my chart look like this NeurIPS figure
  • Reproduce this reference plot using my own data

Frequently asked questions

Is the Figmirror skill free?
Yes. The skill itself is free from VILA-Lab/FigMirror. SkillProof publishes the install command and an independent test verdict at no cost.
Does Figmirror work with Claude Code?
We tested it with Claude Code 2.x (agent harness) on Jul 21, 2026. Verdict: Tested · Works. Located SKILL.md at .claude/skills/figmirror/SKILL.md; frontmatter parses with name+description. Spot-checked 6 body-referenced files (aesthetic-library.md, iter-loop-spec.md, the three figure-* agents, score_3d_candidates.py) all HTTP 200; aesthetic-library.md is 933 lines matching the "~900" claim. No security smells. Trigger tested with 5 phrasings (3 with reference-image+data should activate, 2 plain-matplotlib no-image should not) — all 5 judged correctly; the description's explicit negative case makes this clean. Output: rendered a BASELINE line chart at matplotlib defaults, then a SKILL chart applying the bundled L2 aesthetic-library values verbatim (serif+STIX, top/right despine at 0.6pt, #e0e0e0 gridlines, frameless tight legend, seaborn-deep palette, single-column figsize, pdf.fonttype=42 — Type-42 embedding verified in the PDF). Concrete, clearly paper-grade improvement over baseline. Caveat: I exercised only the L2 convention layer; the headline L1 vision-mirror loop against a real reference screenshot via the three dispatched subagents was not run (no reference image / vision iteration in my context), though the skill documents a main-thread fallback so it still functions skill-only.
What is the Figmirror SkillProof Score?
8.0/10 — installs cleanly 5/5, triggers reliably 5/5, output vs. baseline 6/10, docs & honesty 4/5.
How do I install Figmirror?
Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
Can I use Figmirror with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.