# Figmirror

FigMirror mirrors the visual style of a top-conference paper figure (NeurIPS / ICML /...

- Repository: https://github.com/VILA-Lab/FigMirror (558 stars)
- Category: Documents
- License: see repository
- Last updated: 2026-09-30
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add VILA-Lab/FigMirror --skill figmirror -g -a claude-code -y`
Codex: `npx skills add VILA-Lab/FigMirror --skill figmirror -g -a codex -y`
Cursor: `npx skills add VILA-Lab/FigMirror --skill figmirror -g -a cursor -y`
Gemini CLI: `npx skills add VILA-Lab/FigMirror --skill figmirror -g -a gemini-cli -y`

## Description

FigMirror mirrors the visual style of a top-conference paper figure (NeurIPS / ICML / ICLR / Nature family) onto the user's own data. Takes dirty data plus a reference figure screenshot (cropped or uncropped), preprocesses the reference crop, runs a Drawer/Reviewer loop, and outputs a camera-ready PDF plus a self-contained matplotlib script with an inline DATA SECTOR.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# FigMirror (`figmirror`)

Use this skill when the user wants to:
- Transfer the visual style of a top-conference paper figure to their own data.
- Produce a camera-ready matplotlib figure matching a reference screenshot in
  style, not in data.
- Mirror 3D paper-figure references such as surfaces, scatter, trajectories,
  bars, layered waterfalls, or plane projections when the reference or data is
  actually 3D.
- Receive a self-contained `.py` script with editable inline data plus PNG/PDF
  outputs.

## Required Inputs

- A reference figure screenshot (`PNG`/`JPG`). It may include margins, captions,
  neighboring panels, or page text; Stage 0 preprocesses it.
- The user's data in any parseable form: pasted table, CSV, TSV, markdown table, or
  dirty terminal text.
- A working directory for iteration artifacts.

## 3D Insert Gate

Enable `references/three-d-prompting.md` only when the user asks for a 3D
figure, the reference is visibly 3D, or the parsed data requires a 3D encoding
such as `x/y/z`, surfaces, trajectories, layered profiles, closed objects, 3D
small multiples, 3D bars, or plane projections. Do not use this insert to turn
an ordinary 2D task into 3D.

## Architecture

The rest: https://github.com/VILA-Lab/FigMirror/blob/HEAD/.claude/skills/figmirror/SKILL.md
