/arxiv-figures
Optimize and prepare figures for arXiv submission: format conversion (EPS/PDF/PNG/JPG), size reduction, metadata stripping, processor compatibility (DVI vs PDFLaTeX). Triggers on: "optimize figures for arXiv", "reduce figure size", "convert figures for arXiv", "fix arXiv
$ npx -y skills add Mathews-Tom/armory --skill arxiv-figures --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/arxiv-figures
Context preview
The summary Claude sees to decide when to auto-load this skill.
Optimize and prepare figures for arXiv submission: format conversion (EPS/PDF/PNG/JPG), size reduction, metadata stripping, processor compatibility (DVI vs PDFLaTeX). Triggers on: "optimize figures for arXiv", "reduce figure size", "convert figures for arXiv", "fix arXiv
SKILL.md
arxiv-figures.SKILL.mdname: arxiv-figures
description: 'Optimize and prepare figures for arXiv submission: format conversion (EPS/PDF/PNG/JPG), size reduction, metadata stripping, processor compatibility (DVI vs PDFLaTeX). Triggers on: "optimize figures for arXiv", "reduce figure size", "convert figures for arXiv", "fix arXiv figures", "figure too large", "arxiv image compression". Companion to arxiv-preflight and arxiv-package.'
metadata:
version: 1.0.0
complements: [arxiv-preflight, arxiv-package, manuscript-review]
category: review
tags: [arxiv, figures, optimization, latex, submission]
difficulty: intermediate
phase: ship
arXiv Figure Optimizer
Purpose
Analyze, optimize, and convert figures in a TeX/LaTeX project to meet arXiv requirements and size constraints. Produces correctly formatted, efficiently compressed figures that compile without errors.
Companion skills:
- `arxiv-preflight` — full submission validation
- `arxiv-package` — tarball packaging
Format Rules
By Processor
| Processor | Accepted | Rejected | |-----------|----------|----------| | LaTeX (DVI mode) | `.ps`, `.eps` | `.pdf`, `.png`, `.jpg` | | PDFLaTeX | `.pdf`, `.png`, `.jpg` | `.ps`, `.eps` |
By Content Type
| Content | Optimal Format | Rationale | |---------|---------------|-----------| | Photographs | JPEG | Lossy compression suits continuous tone | | Line drawings / diagrams | PDF (vector) | Scalable, sharp at any resolution | | Plots with text labels | PDF (vector) | Text remains crisp and searchable | | Screenshots / raster art | PNG | Lossless compression for sharp edges | | Mixed photo + text | PNG or PDF | Depends on dominant content |
Workflow
1. Inventory
Scan the project for all figures:
- Parse `\includegraphics` calls from all `.tex` files
- Identify the TeX processor (DVI vs PDFLaTeX) from document preamble or build config
- For each figure: record path, format, file size, dimensions (pixels or vector bounds)
- Flag missing figures, wrong-format figures, oversized figures
2. Analyze
For each figure, determine:
1. **Format compliance** — does the format match the processor? 2. **File size** — flag individual figures >2MB, total >15MB 3. **Resolution** — PNG/JPEG: flag >34 Megapixels (arXiv warning threshold since Feb 2026) 4. **Content type** — photograph vs diagram vs plot (determines optimal format) 5. **Redundant metadata** — PNG: ICC profiles, alpha channels, EXIF, interlacing 6. **EPS efficiency** — verbose PostScript from plotting programs (common with matplotlib, R, MATLAB)
3. Optimize
Apply transformations in order of impact:
**Format Conversion** (when format violates processor requirements)
# EPS → PDF (for PDFLaTeX)
epstopdf figure.eps
# or
ps2pdf -dEPSCrop figure.eps figure.pdf
# PDF/PNG/JPG → EPS (for DVI mode)
convert figure.png figure.eps
**Size Reduction — Vector Figures**
# Distill verbose EPS
eps2eps input.eps output.eps
# or convert to PDF
ps2pdf -dEPSCrop input.eps output.pdf
**Size Reduction — Raster Figures**
# Strip PNG metadata, remove alpha, optimize compression
convert input.png -strip -alpha remove -define png:compression-level=9 output.png
# Reduce oversized PNG resolution (keep ≤300 DPI at print size)
convert input.png -resize 3000x3000\> -strip output.png
# JPEG quality optimization (80-90 is visually lossless for most content)
convert input.jpg -quality 85 -strip output.jpg
# Downsample oversized JPEG
convert input.jpg -resize 3000x3000\> -quality 85 -strip output.jpg
**PNG Optimization** (avoid arXiv warnings)
- Remove palette indexing if unnecessary
- Remove alpha channel if background is solid
- Strip ICC color profiles
- Remove metadata chunks
- Disable interlacing
**EPS BoundingBox Fix** (prevents `Missing number, treated as zero`)
- Verify `%%BoundingBox` appears near top of file, not only at end
- If only `%%BoundingBox: (atend)`, extract actual values and place at top
4. Update TeX Source
If figures were renamed or reformatted: 1. Update `\includegraphics` paths 2. Remove explicit extensions where possible (allows processor flexibility) 3. Verify `\graphicspath` settings if used
5. Verify
After optimization: 1. Attempt local compilation to verify all figures render 2. Compare visual output of optimized vs original figures 3. Report size reduction per figure and total
6. Report
# Figure Optimization Report
**Processor:** [detected]
**Total figures:** [count]
**Size before:** [total MB]
**Size after:** [total MB]
**Reduction:** [percentage]
## Changes Made
| Figure | Original | Optimized | Size Before | Size After | Action |
|--------|----------|-----------|-------------|------------|--------|
| fig1 | fig1.eps | fig1.pdf | 12.3 MB | 0.4 MB | EPS→PDF conversion |
| fig2 | fig2.png | fig2.png | 8.1 MB | 1.2 MB | Strip metadata, downsample |
## Warnings
[Any remaining issues — e.g., figures still above thresholds]
Tools Reference
| Tool | Install | Use Case | |------|---------|----------| | ImageMagick (`convert`) | System package | Format conversion, resizing, stripping | | Ghostscript (`ps2pdf`, `eps2eps`) | System package | EPS/PS optimization and conversion | | `epstopdf` | TeX Live | EPS → PDF conversion | | `pdfcrop` | TeX Live | Trim PDF whitespace | | `optipng` | System package | PNG lossless optimization | | `pngquant` | System package | PNG lossy size reduction | | `jpegoptim` | System package | JPEG lossless optimization |
Core Principles
- **Never degrade visual quality below print-readable.** Optimization means
removing waste (metadata, unnecessary resolution, verbose encoding), not destroying information.
- **Match format to processor.** A figure in the wrong format blocks compilation.
This is the highest priority fix.
- **Preserve vector where
Read more
name: arxiv-figures description: 'Optimize and prepare figures for arXiv submission: format conversion (EPS/PDF/PNG/JPG), size reduction, metadata stripping, processor compatibility (DVI vs PDFLaTeX). Triggers on: "optimize figures for arXiv", "reduce figure size", "convert figures for arXiv", "fix arXiv figures", "figure too large", "arxiv image compression". Companion to arxiv-preflight and arxiv-package.' metadata: version: 1.0.0 complements: [arxiv-preflight, arxiv-package, manuscript-review] category: review tags: [arxiv, figures, optimization, latex, submission] difficulty: intermediate phase: ship
arXiv Figure Optimizer
Purpose
Analyze, optimize, and convert figures in a TeX/LaTeX project to meet arXiv requirements and size constraints. Produces correctly formatted, efficiently compressed figures that compile without errors.
Companion skills:
- `arxiv-preflight` — full submission validation
- `arxiv-package` — tarball packaging
Format Rules
By Processor
| Processor | Accepted | Rejected | |-----------|----------|----------| | LaTeX (DVI mode) | `.ps`, `.eps` | `.pdf`, `.png`, `.jpg` | | PDFLaTeX | `.pdf`, `.png`, `.jpg` | `.ps`, `.eps` |
By Content Type
| Content | Optimal Format | Rationale | |---------|---------------|-----------| | Photographs | JPEG | Lossy compression suits continuous tone | | Line drawings / diagrams | PDF (vector) | Scalable, sharp at any resolution | | Plots with text labels | PDF (vector) | Text remains crisp and searchable | | Screenshots / raster art | PNG | Lossless compression for sharp edges | | Mixed photo + text | PNG or PDF | Depends on dominant content |
Workflow
1. Inventory
Scan the project for all figures:
- Parse `\includegraphics` calls from all `.tex` files
- Identify the TeX processor (DVI vs PDFLaTeX) from document preamble or build config
- For each figure: record path, format, file size, dimensions (pixels or vector bounds)
- Flag missing figures, wrong-format figures, oversized figures
2. Analyze
For each figure, determine:
1. **Format compliance** — does the format match the processor? 2. **File size** — flag individual figures >2MB, total >15MB 3. **Resolution** — PNG/JPEG: flag >34 Megapixels (arXiv warning threshold since Feb 2026) 4. **Content type** — photograph vs diagram vs plot (determines optimal format) 5. **Redundant metadata** — PNG: ICC profiles, alpha channels, EXIF, interlacing 6. **EPS efficiency** — verbose PostScript from plotting programs (common with matplotlib, R, MATLAB)
3. Optimize
Apply transformations in order of impact:
**Format Conversion** (when format violates processor requirements)
# EPS → PDF (for PDFLaTeX) epstopdf figure.eps # or ps2pdf -dEPSCrop figure.eps figure.pdf # PDF/PNG/JPG → EPS (for DVI mode) convert figure.png figure.eps
**Size Reduction — Vector Figures**
# Distill verbose EPS eps2eps input.eps output.eps # or convert to PDF ps2pdf -dEPSCrop input.eps output.pdf
**Size Reduction — Raster Figures**
# Strip PNG metadata, remove alpha, optimize compression convert input.png -strip -alpha remove -define png:compression-level=9 output.png # Reduce oversized PNG resolution (keep ≤300 DPI at print size) convert input.png -resize 3000x3000\> -strip output.png # JPEG quality optimization (80-90 is visually lossless for most content) convert input.jpg -quality 85 -strip output.jpg # Downsample oversized JPEG convert input.jpg -resize 3000x3000\> -quality 85 -strip output.jpg
**PNG Optimization** (avoid arXiv warnings)
- Remove palette indexing if unnecessary
- Remove alpha channel if background is solid
- Strip ICC color profiles
- Remove metadata chunks
- Disable interlacing
**EPS BoundingBox Fix** (prevents `Missing number, treated as zero`)
- Verify `%%BoundingBox` appears near top of file, not only at end
- If only `%%BoundingBox: (atend)`, extract actual values and place at top
4. Update TeX Source
If figures were renamed or reformatted: 1. Update `\includegraphics` paths 2. Remove explicit extensions where possible (allows processor flexibility) 3. Verify `\graphicspath` settings if used
5. Verify
After optimization: 1. Attempt local compilation to verify all figures render 2. Compare visual output of optimized vs original figures 3. Report size reduction per figure and total
6. Report
# Figure Optimization Report **Processor:** [detected] **Total figures:** [count] **Size before:** [total MB] **Size after:** [total MB] **Reduction:** [percentage] ## Changes Made | Figure | Original | Optimized | Size Before | Size After | Action | |--------|----------|-----------|-------------|------------|--------| | fig1 | fig1.eps | fig1.pdf | 12.3 MB | 0.4 MB | EPS→PDF conversion | | fig2 | fig2.png | fig2.png | 8.1 MB | 1.2 MB | Strip metadata, downsample | ## Warnings [Any remaining issues — e.g., figures still above thresholds]
Tools Reference
| Tool | Install | Use Case | |------|---------|----------| | ImageMagick (`convert`) | System package | Format conversion, resizing, stripping | | Ghostscript (`ps2pdf`, `eps2eps`) | System package | EPS/PS optimization and conversion | | `epstopdf` | TeX Live | EPS → PDF conversion | | `pdfcrop` | TeX Live | Trim PDF whitespace | | `optipng` | System package | PNG lossless optimization | | `pngquant` | System package | PNG lossy size reduction | | `jpegoptim` | System package | JPEG lossless optimization |
Core Principles
- **Never degrade visual quality below print-readable.** Optimization means
removing waste (metadata, unnecessary resolution, verbose encoding), not destroying information.
- **Match format to processor.** A figure in the wrong format blocks compilation.
This is the highest priority fix.
- **Preserve vector where
Curated, production-grade skills, agents, hooks, rules, commands, utilities, and presets for AI coding agents. No magic, no demos — battle-tested workflows built for developers who use AI seriously.
Repo: Mathews-Tom/armory
Other skills on armory.
- /adr-writer
Generates Architecture Decision Records capturing context, rationale, alternatives, and consequences in numbered status-tracked format. Triggers on: "write an ADR", "document this decision", "architecture decision record", "decision record", "design decision", "ADR for".
Open skill - /agent-builder
Build AI agents and automate Claude Code programmatically via the Claude Agent SDK and headless CLI mode. Covers Python SDK, claude -p, SDK MCP servers, hooks, sessions. Triggers on: "build an agent", "agent SDK", "headless mode", "automate Claude", "programmatic agent".
Open skill - /api-docs-generator
Audits and enhances FastAPI and REST API documentation: missing descriptions, response codes, examples, docstrings, Pydantic models, OpenAPI spec. Triggers on: "generate API docs", "document this API", "OpenAPI for", "FastAPI docs", "document endpoints", "swagger docs".
Open skill - /architecture-diagram
Generate layered architecture diagrams as self-contained HTML with inline SVG icons, CSS Grid containers, and connection overlays. Triggers on: "architecture diagram", "infra diagram", "system diagram", "deployment diagram", "topology", "draw architecture". NOT for architecture
Open skill - /architecture-reviewer
Architecture reviews across 7 dimensions (structural, scalability, enterprise readiness, performance, security, ops, data) with scored reports. Triggers on: "review architecture", "critique design", "audit system", "assess scalability", "enterprise readiness", "technical due
Open skill - /arxiv-package
Package a TeX/LaTeX project into a clean tarball or zip for arXiv upload: file selection, build-artifact exclusion, 00README.XXX generation, ancillary file organization, archive validation. Triggers on: "package for arXiv", "create arXiv tarball", "bundle submission", "zip for
Open skill

