/figure-table-quality
Readability and rendering audit for figures and tables in academic manuscripts. Computes effective font/marker sizes at display scale from generation scripts, checks label collisions, color/hatch accessibility, axis-range efficiency, table formatting, and cross-figure
$ npx -y skills add Mathews-Tom/armory --skill figure-table-quality --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
/figure-table-quality
Context preview
The summary Claude sees to decide when to auto-load this skill.
Readability and rendering audit for figures and tables in academic manuscripts. Computes effective font/marker sizes at display scale from generation scripts, checks label collisions, color/hatch accessibility, axis-range efficiency, table formatting, and cross-figure
SKILL.md
figure-table-quality.SKILL.mdname: figure-table-quality
description: 'Readability and rendering audit for figures and tables in academic manuscripts. Computes effective font/marker sizes at display scale from generation scripts, checks label collisions, color/hatch accessibility, axis-range efficiency, table formatting, and cross-figure consistency. Triggers on: "check figure quality", "audit plots", "readability check", "figure rendering", "are my figures readable", "table formatting check". Companion to figure-rhetoric (visual argument) and manuscript-typography (typesetting).'
metadata:
version: 1.0.0
complements: [figure-rhetoric, manuscript-review, manuscript-typography]
category: review
tags: [figures, tables, readability, rendering, latex]
difficulty: advanced
phase: review
Figure & Table Quality Audit
**Pipeline position:** Phase 2.5 (between Grounding/Polish and Submission). Runs after figure-rhetoric (content) and before arxiv-preflight (compliance). See `/manuscript-pipeline` for full execution order.
Purpose
Verify that every figure and table in a manuscript renders at readable size in the compiled PDF. figure-rhetoric checks whether figures communicate the right message. This skill checks whether the reader can physically read them.
Execution
Step 1 — Build the display-scale map
For every `\includegraphics` in the .tex source:
1. Extract the display width (e.g., `\textwidth`, `0.7\textwidth`, `0.55\textwidth`) 2. Compute the effective display width in inches using the document geometry 3. Read the figure generation script to find the `figsize` for each figure 4. Compute: `scale = display_width / figsize_width`
Also extract from the generation script or config:
- Base font sizes: title, label, tick, legend, annotation
- Marker sizes, line widths
- Bar widths (for grouped bar charts)
Step 2 — Per-figure audit (all 9 checks)
For each figure, compute effective values at display scale and check:
2a. Font size at render
effective_font = script_font × scale
| Element | Minimum | Warning | |---------|---------|---------| | Axis title | 7pt | 8pt | | Tick labels | 6pt | 7pt | | Legend text | 6pt | 7pt | | Annotations | 6pt | 7pt | | Panel titles | 7pt | 8pt |
**FAIL** if any element falls below minimum. **WARN** if any element falls below warning threshold.
2b. Label collision
Check for overlapping text in:
- X-axis tick labels (especially with rotation < 45° and > 3 labels)
- Y-axis tick labels (long text strings)
- Data annotations near each other
- Legend entries overlapping data
For rotated labels: compute horizontal footprint as `len(label) × char_width × cos(rotation)`. If footprint > tick spacing, **FAIL**.
2c. Marker and line visibility
effective_marker = script_marker × scale
effective_linewidth = script_linewidth × scale
- Markers below 4pt effective: **WARN**
- Line widths below 0.5pt effective: **WARN**
2d. Bar chart readability
For grouped bar charts:
- Compute effective bar width in inches
- Check if bars are distinguishable (minimum 3pt effective width)
- Check if hatch patterns render at effective size
- Check for bar-label alignment
2e. Color and hatch accessibility
- Are all series distinguishable in grayscale?
- Do hatch patterns provide redundant encoding for color?
- Are there more than 5 colors without hatching? **WARN**
- Are similar colors used for unrelated series?
2f. Axis range efficiency
- Compute data range vs axis range
- If less than 40% of axis range contains data: **WARN** (wasted space)
- If data touches axis boundary: **WARN** (clipped data)
2g. Annotation readability
- Do any data annotations overlap each other?
- Are annotations positioned to avoid occluding data?
- Do annotations use consistent formatting (fontsize, weight)?
2h. Legend placement
- Does the legend overlap any data points or bars?
- Is the legend in a consistent position across similar figures?
- For multi-panel figures: is the legend in the first panel only (not repeated)?
2i. Whitespace and margins
- Does `tight_layout()` or equivalent handle margins?
- Are panel titles cut off?
- Is there excessive whitespace (> 30% of figure area empty)?
Step 3 — Table audit
For each `\begin{tabular}` or `\begin{table}`:
1. **Column alignment** — Are numeric columns right-aligned? Text left-aligned? 2. **Rule style** — Uses booktabs (`\toprule`, `\midrule`, `\bottomrule`)? No vertical rules? 3. **Caption position** — Table captions above, figure captions below? 4. **Width** — Does the table overflow margins? Check for `\resizebox` or `\small` hacks. 5. **Number formatting** — Consistent decimal places? Aligned decimal points? 6. **Header clarity** — Are column headers unambiguous?
Step 4 — Cross-figure consistency
1. **Shared elements** — Do figures that share axes use the same scale? 2. **Color scheme** — Is the same color used for the same condition across all figures? 3. **Label vocabulary** — Are condition/model labels identical across all figures? 4. **Font family** — Same font across all figures?
Output format
## Figure & Table Quality Report
### Display Scale Map
| Figure | figsize | display | scale | verdict |
|--------|---------|---------|-------|---------|
| fig1 | 7×4 | 6.27" | 90% | OK |
### Per-Figure Findings
#### Figure 1 (fig1_resolve_rates.pdf)
- [PASS] Font sizes: tick 8.1pt, legend 8.1pt
- [PASS] No label collisions
- [WARN] Bar width 3.2pt — borderline at print size
...
### Table Findings
#### Table 1 (table1_resolve.tex)
- [PASS] Booktabs rules
- [PASS] Caption above tabular
...
### Cross-Figure Consistency
- [PASS] Color scheme consistent
- [FAIL] Label mismatch: fig2 uses "cmd", other figures use "Yuj"
### Summary
- [count] FAIL (must fix)
- [count] WARN (should fix)
- [count] PASS
Auto-Fix Rules
**AUTO-FIX** (apply directly):
- Rotation increase for overlapping x-labels (20°/15° → 45°)
- figsize reduction to match display co
Read more
name: figure-table-quality description: 'Readability and rendering audit for figures and tables in academic manuscripts. Computes effective font/marker sizes at display scale from generation scripts, checks label collisions, color/hatch accessibility, axis-range efficiency, table formatting, and cross-figure consistency. Triggers on: "check figure quality", "audit plots", "readability check", "figure rendering", "are my figures readable", "table formatting check". Companion to figure-rhetoric (visual argument) and manuscript-typography (typesetting).' metadata: version: 1.0.0 complements: [figure-rhetoric, manuscript-review, manuscript-typography] category: review tags: [figures, tables, readability, rendering, latex] difficulty: advanced phase: review
Figure & Table Quality Audit
**Pipeline position:** Phase 2.5 (between Grounding/Polish and Submission). Runs after figure-rhetoric (content) and before arxiv-preflight (compliance). See `/manuscript-pipeline` for full execution order.
Purpose
Verify that every figure and table in a manuscript renders at readable size in the compiled PDF. figure-rhetoric checks whether figures communicate the right message. This skill checks whether the reader can physically read them.
Execution
Step 1 — Build the display-scale map
For every `\includegraphics` in the .tex source:
1. Extract the display width (e.g., `\textwidth`, `0.7\textwidth`, `0.55\textwidth`) 2. Compute the effective display width in inches using the document geometry 3. Read the figure generation script to find the `figsize` for each figure 4. Compute: `scale = display_width / figsize_width`
Also extract from the generation script or config:
- Base font sizes: title, label, tick, legend, annotation
- Marker sizes, line widths
- Bar widths (for grouped bar charts)
Step 2 — Per-figure audit (all 9 checks)
For each figure, compute effective values at display scale and check:
2a. Font size at render
effective_font = script_font × scale
| Element | Minimum | Warning | |---------|---------|---------| | Axis title | 7pt | 8pt | | Tick labels | 6pt | 7pt | | Legend text | 6pt | 7pt | | Annotations | 6pt | 7pt | | Panel titles | 7pt | 8pt |
**FAIL** if any element falls below minimum. **WARN** if any element falls below warning threshold.
2b. Label collision
Check for overlapping text in:
- X-axis tick labels (especially with rotation < 45° and > 3 labels)
- Y-axis tick labels (long text strings)
- Data annotations near each other
- Legend entries overlapping data
For rotated labels: compute horizontal footprint as `len(label) × char_width × cos(rotation)`. If footprint > tick spacing, **FAIL**.
2c. Marker and line visibility
effective_marker = script_marker × scale effective_linewidth = script_linewidth × scale
- Markers below 4pt effective: **WARN**
- Line widths below 0.5pt effective: **WARN**
2d. Bar chart readability
For grouped bar charts:
- Compute effective bar width in inches
- Check if bars are distinguishable (minimum 3pt effective width)
- Check if hatch patterns render at effective size
- Check for bar-label alignment
2e. Color and hatch accessibility
- Are all series distinguishable in grayscale?
- Do hatch patterns provide redundant encoding for color?
- Are there more than 5 colors without hatching? **WARN**
- Are similar colors used for unrelated series?
2f. Axis range efficiency
- Compute data range vs axis range
- If less than 40% of axis range contains data: **WARN** (wasted space)
- If data touches axis boundary: **WARN** (clipped data)
2g. Annotation readability
- Do any data annotations overlap each other?
- Are annotations positioned to avoid occluding data?
- Do annotations use consistent formatting (fontsize, weight)?
2h. Legend placement
- Does the legend overlap any data points or bars?
- Is the legend in a consistent position across similar figures?
- For multi-panel figures: is the legend in the first panel only (not repeated)?
2i. Whitespace and margins
- Does `tight_layout()` or equivalent handle margins?
- Are panel titles cut off?
- Is there excessive whitespace (> 30% of figure area empty)?
Step 3 — Table audit
For each `\begin{tabular}` or `\begin{table}`:
1. **Column alignment** — Are numeric columns right-aligned? Text left-aligned? 2. **Rule style** — Uses booktabs (`\toprule`, `\midrule`, `\bottomrule`)? No vertical rules? 3. **Caption position** — Table captions above, figure captions below? 4. **Width** — Does the table overflow margins? Check for `\resizebox` or `\small` hacks. 5. **Number formatting** — Consistent decimal places? Aligned decimal points? 6. **Header clarity** — Are column headers unambiguous?
Step 4 — Cross-figure consistency
1. **Shared elements** — Do figures that share axes use the same scale? 2. **Color scheme** — Is the same color used for the same condition across all figures? 3. **Label vocabulary** — Are condition/model labels identical across all figures? 4. **Font family** — Same font across all figures?
Output format
## Figure & Table Quality Report ### Display Scale Map | Figure | figsize | display | scale | verdict | |--------|---------|---------|-------|---------| | fig1 | 7×4 | 6.27" | 90% | OK | ### Per-Figure Findings #### Figure 1 (fig1_resolve_rates.pdf) - [PASS] Font sizes: tick 8.1pt, legend 8.1pt - [PASS] No label collisions - [WARN] Bar width 3.2pt — borderline at print size ... ### Table Findings #### Table 1 (table1_resolve.tex) - [PASS] Booktabs rules - [PASS] Caption above tabular ... ### Cross-Figure Consistency - [PASS] Color scheme consistent - [FAIL] Label mismatch: fig2 uses "cmd", other figures use "Yuj" ### Summary - [count] FAIL (must fix) - [count] WARN (should fix) - [count] PASS
Auto-Fix Rules
**AUTO-FIX** (apply directly):
- Rotation increase for overlapping x-labels (20°/15° → 45°)
- figsize reduction to match display co
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-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
Open skill

