sciagent-skill-creator
Scaffold a new SciAgent-Skills entry. Picks pipeline/toolkit/database/guide template, creates skills/{category}/{name}/SKILL.md with valid frontmatter, appends…
Universal QA checklist for generated scientific plots: overlapping labels, clipped text, missing axes/legends, overcrowded data, and cross-journal resolution/format guidance.
$ npx -y skills add jaechang-hits/SciAgent-Skills --skill general-figure-guide --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/general-figure-guideContext preview
The summary Claude sees to decide when to auto-load this skill.
Universal QA checklist for generated scientific plots: overlapping labels, clipped text, missing axes/legends, overcrowded data, and cross-journal resolution/format guidance.
name: general-figure-guide description: "Universal QA checklist for generated scientific plots: overlapping labels, clipped text, missing axes/legends, overcrowded data, and cross-journal resolution/format guidance." license: CC-BY-4.0
This guide provides a universal quality checklist for evaluating scientific figures, whether generated programmatically (matplotlib, seaborn, R/ggplot2) or assembled manually. It focuses on visual readability issues that are common across all journals and easily missed during automated plot generation.
A figure must communicate its data without requiring the reader to guess. The most common readability failures are overlapping labels, clipped text that runs outside the figure boundary, missing or unlabeled axes, absent legends, empty plot areas from incorrect data filtering, and overcrowded data points that merge into an unreadable mass.
Scientific figures generally require 300+ DPI for raster output (TIFF, PNG, JPEG) and vector formats (PDF, EPS, SVG) for line art and graphs. Vector formats are preferred for plots because they scale without quality loss. Raster formats are appropriate for photographs and micrographs.
Approximately 8% of males have some form of color vision deficiency. Figures that rely solely on red-green color differences exclude these readers. Use colorblind-friendly palettes (blue-orange, or viridis/cividis colormaps), add pattern or shape differentiation, and test figures with a colorblindness simulator before submission.
All major journals require that brightness, contrast, and color adjustments be applied uniformly to the entire image. Selective enhancement of specific regions (e.g., adjusting one gel lane) is considered data manipulation and grounds for rejection across all journals. Always document processing steps in the Methods section and retain original unprocessed files.
Is the figure a generated plot or a photograph?
├── Generated plot (matplotlib, ggplot2, seaborn)
│ ├── Export as vector (PDF, SVG, EPS) → preferred
│ └── Export as raster → 300+ DPI minimum, PNG or TIFF
├── Photograph or micrograph
│ └── Export as raster → 300+ DPI, TIFF preferred
└── Multi-panel composite
├── Assemble panels first, then export as single file
└── Use consistent font sizes and label styles across panels| Issue | How to Detect | Fix | |---|---|---| | Overlapping labels | Text visually collides on axes or legend | Rotate labels, reduce font size, or increase figure dimensions | | Clipped text | Labels or titles cut off at figure edge | Increase margins with `tight_layout()` or `constrained_layout` | | Missing axes or legends | No axis labels, units, or legend present | Add `xlabel`, `ylabel`, `legend()` calls | | Empty plot area | Blank canvas with axes but no visible data | Check data filtering, column names, and plot function arguments | | Overcrowded data | Points merge into solid mass | Reduce marker size, add transparency (alpha), or use density plots |
1. **Run a visual check after every plot generation**: Inspect the rendered image for overlapping labels, clipped text, missing axes/legends, empty areas, and overcrowded data before proceeding 2. **Use `tight_layout()` or `constrained_layout=True`**: These prevent text clipping at figure boundaries, the most common layout failure in matplotlib 3. **Set DPI at figure creation time**: Configure `fig.set_dpi(300)` or `plt.savefig(..., dpi=300)` to ensure publication-quality output from the start 4. **Export plots as vector formats**: Use PDF, SVG, or EPS for graphs and diagrams. Reserve raster formats (PNG, TIFF) for photographs and micrographs 5. **Apply consistent font sizes across panels**: All text in a multi-panel figure should use the same font family and comparable sizes (typically 6-8 pt for labels, 8 pt for panel identifiers) 6. **Add transparency for dense scatter plots**: Use `alpha=0.3`-`0.5` when plotting thousands of points to reveal density structure instead of a solid mass 7. **Include units on all axes**: Every axis should show the measured parameter and units in parentheses (e.g., "Time (hours)", "Concentration (nM)")
1. **Not inspecting generated plots before saving**: Automated pipelines often produce figures with layout issues that go unnoticed until review
2. **Clipped axis labels or titles**: Default matplotlib margins often cut off long labels or suptitles
3. **Missing legends on multi-series plots**: Plots with multiple lines or groups are unreadable without a legend
4. **Overcrowded scatter plots at large N**: Scatter plots with >10,000 points become solid blobs at default settings
5. **Saving at screen resolution (72 DPI)**: Default screen DPI produces figures that are unprintable in journals
1. **Set up figure dimensions and DPI**: Before plotting, configure target width (journal column width), aspect ratio, and DPI (300+ minimum) on the figure object 2. **Generate the figure** using your plotting library with the pre-configured settings 3. **Visually inspect** the rendered output for these specific issues:
Turn your AI coding agent into a life sciences expert — 199 bioinformatics skills for Claude Code covering RNA-seq, single-cell analysis, genomics, proteomics, drug discovery, and more. Boosted BixBench from 65% to 92%. Open source.
Scaffold a new SciAgent-Skills entry. Picks pipeline/toolkit/database/guide template, creates skills/{category}/{name}/SKILL.md with valid frontmatter, appends…
Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction. Hierarchical, logistic, GP…
Time-to-event modeling with scikit-survival: Cox PH (elastic net), Random Survival Forests, Boosting, SVMs for censored data. C-index, Brier, time-dependent…
Guided statistical analysis: test choice, assumption checks, effect sizes, power, APA reporting. Pick tests, verify assumptions, or format results for…
Python statistical modeling: regression (OLS, WLS, GLM), discrete (Logit, Poisson, NegBin), time series (ARIMA, SARIMAX, VAR), with rigorous inference,…
DL cell/nucleus segmentation for fluorescence and brightfield microscopy. Pre-trained models (cyto3, nuclei, tissuenet) and a generalist flow-based algorithm…