From armory
Audits readability and rendering of figures and tables in LaTeX academic manuscripts by computing display-scale font and marker sizes, checking label collisions, color accessibility, axis efficiency, table formatting, and consistency.
npx claudepluginhub mathews-tom/armory --plugin armoryThis skill uses the workspace's default tool permissions.
**Pipeline position:** Phase 2.5 (between Grounding/Polish and Submission).
Critiques academic figures for format, colorblind safety, legibility, overplotting, category count, resolution, and vector/raster suitability before paper submission.
Audits figures and plots in manuscripts for rhetorical effectiveness across 8 dimensions: chart-type fit, axis design, visual hierarchy, data density, caption clarity, perceptual accuracy, and narrative alignment with claims.
Provides universal QA checklist for scientific plots: overlapping labels, clipped text, missing axes/legends, overcrowded data; cross-journal resolution/format/color guidance. Useful post-plot generation.
Share bugs, ideas, or general feedback.
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.
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.
For every \includegraphics in the .tex source:
\textwidth, 0.7\textwidth, 0.55\textwidth)figsize for each figurescale = display_width / figsize_widthAlso extract from the generation script or config:
For each figure, compute effective values at display scale and check:
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.
Check for overlapping text in:
For rotated labels: compute horizontal footprint as
len(label) × char_width × cos(rotation). If footprint > tick spacing, FAIL.
effective_marker = script_marker × scale
effective_linewidth = script_linewidth × scale
For grouped bar charts:
tight_layout() or equivalent handle margins?For each \begin{tabular} or \begin{table}:
\toprule, \midrule, \bottomrule)? No vertical rules?\resizebox or \small hacks.## 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 (apply directly):
tight_layout() callsHUMAN-REQUIRED (present and wait):
This skill reads:
.tex source (\includegraphics directives, \geometry settings).tex filesIt does NOT: