Content Create Hero Image
prisma/web
A skill your agent uses when the operator wants a hero or meta image for a Prisma blog post; asks to create or generate a blog hero, cover, social card, Open Graph, or YouTube image; mentions cover…
A skill your agent uses when a paper needs publication-ready figures or a visual abstract.
$ npx skills add Aperivue/medsci-skills --skill make-figures -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Aperivue/medsci-skills make-figures --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/make-figures .claude/skills/make-figures && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "make-figures" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/make-figures into .claude/skills/make-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "make-figures", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Aperivue/medsci-skills/tree/main/skills/make-figuresType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Aperivue/medsci-skills --skill make-figures -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Aperivue/medsci-skills make-figures --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/make-figures .agents/skills/make-figures && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "make-figures" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/make-figures into .agents/skills/make-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "make-figures", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Aperivue/medsci-skills --skill make-figures -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Aperivue/medsci-skills make-figures --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/make-figures .cursor/skills/make-figures && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "make-figures" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/make-figures into .cursor/skills/make-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "make-figures", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Aperivue/medsci-skills.git --path skills/make-figures--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Aperivue/medsci-skills --skill make-figures -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Aperivue/medsci-skills make-figures --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/make-figures .gemini/skills/make-figures && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "make-figures" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/make-figures into .gemini/skills/make-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "make-figures", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Aperivue/medsci-skills make-figuresInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Aperivue/medsci-skills --skill make-figures -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/make-figures .github/skills/make-figures && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "make-figures" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/make-figures into .github/skills/make-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "make-figures", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Aperivue/medsci-skills --skill make-figures -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Aperivue/medsci-skills make-figures --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Aperivue/medsci-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/make-figures .opencode/skills/make-figures && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "make-figures" agent skill from https://github.com/Aperivue/medsci-skills/tree/main/skills/make-figures into .opencode/skills/make-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "make-figures", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
make-figuresA skill your agent uses when a paper needs publication-ready figures or a visual abstract.
Make Figures is an agent skill from Aperivue/medsci-skills. Use when a paper needs publication-ready figures or a visual abstract. Makes ROC, forest, calibration, Kaplan-Meier and Bland-Altman plots, CONSORT/STARD/PRISMA flow diagrams, confusion matrices, pipeline diagrams and journal visual abstracts, checking the journal's AI-image policy first.
Its SKILL.md is about 8.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 158 other files, including scripts and reference files (for example `references/critic_rubrics/data_plot.md`, `references/critic_rubrics/flow_diagram.md` and `references/design_principles.md`).
It sits in Databases, covering Image generation, ORMs and data access and Diagrams. It works with Prisma. The repository describes itself as: Agent Skills for medical research — literature search, reporting-guideline & citation checks, statistics, publication figures, submission. Works with Claude Code, Codex, Cursor &… The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3b14ae2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
pythonpython3bashsofficemagickFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
pmc.ncbi.nlm.nih.govspringernature.comelsevier.comsmart.servier.combioart.niaid.nih.govbiorender.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GEMINI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Make Figures loads about 8.4k tokens when it runs, and up to ~337k if it reads all its reference files. Until then it costs about 76 tokens; SKILL.md has 3,517 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Aperivue/medsci-skills at commit 3b14ae2, republished under its MIT licence (© Aperivue). 3,517 words, ~8,372 tokens.
.claude/skills/make-figures/SKILL.md (or your agent's skills folder). This skill also uses 152 other files; get the full folder from GitHub.Before reading any data file, check whether it might contain Protected Health Information (PHI):
*_deidentified.* files exist in the working directory, use those preferentially.*_deidentified.* counterpart), ask the user, in their
language, whether the data contains patient identifiers (names, national ID / RRN, contact
details, etc.) and, if so, to de-identify it first with the /deidentify skill.${CLAUDE_SKILL_DIR}/references/figure_specs.md — read it before
generating any figure (journal dimensions, DPI, file formats, palettes, font sizes, panel
layouts, caption format).${CLAUDE_SKILL_DIR}/../analyze-stats/references/style/figure_style.mplstyle| Journal family | Policy on AI-generated images | Disclosure required |
|---|---|---|
| JACC family (incl. JACC: Asia, JACC Imaging, JACC EP, JACC BTS) | Prohibited without prior Editor-in-Chief permission (JACC pathway, PMC10167500) | Cover-letter pre-submission inquiry + ICMJE-style declaration |
| NEJM | AI image generation prohibited | N/A |
| Radiology / Radiology AI | Allowed with disclosure | Manuscript disclosure block |
| Springer Nature (Nature Portfolio, BMC, Springer journals) | Allowed only when the visual is derived from independently verifiable data, source material, methods or code; AI visuals without verifiable inputs are "opaque" and not permitted. Charts from datasets and author-reviewed code-generated figures are the policy's own allowed examples (AI in manuscript preparation) | Declare model and purpose; disclose non-generative image edits in the caption |
| Elsevier journals (publisher policy) | Explanatory images (flow charts, schematics) allowed. Data visualizations only when directly derived from the underlying data by reproducible methods. Primary research images, including radiology scans and patient images, must not be created or altered with AI. AI images produced as part of the research methods are permitted. Graphical abstracts: dedicated illustration tools, not general-purpose generative AI (Generative AI policies for journals) | Caption + AI disclosure statement (explanatory); Methods (data visualizations, research-method use) |
| Lancet family | Disclosure required, generation discouraged | Manuscript disclosure |
| Default (target unknown) | Treat as prohibited until confirmed | N/A |
Publisher pages set the floor; a journal's own guide can be stricter (JACC is an Elsevier journal). Check the target journal's guide as well as its publisher's.
Hard rule: For JACC, NEJM, or any "unknown" target journal, never use Gemini / DALL-E / Midjourney / Stable Diffusion / Nano Banana to create images that will appear in figures, Central Illustrations, or graphical abstracts. AI text-editing of the manuscript prose remains acceptable subject to standard disclosure.
Anatomical icons modified from SMART Servier Medical Art (CC BY 4.0).
scatter / Circle / PathPatch. Keeps the entire pipeline non-AI and reproducible.Even when AI images are allowed, experienced reviewers recognise AI-generated illustrations (small decorative icons that add no information, overly uniform layouts, generic clip-art style). For high-impact submissions, prefer Servier / BioArt / BioRender + matplotlib overlays over AI.
manuscript/figures/_assets_servier/ # CC BY 4.0 source PNGs
manuscript/figures/_assets_servier/CITATION.md # source URL + download date per asset
manuscript/figures/_assets_data/ # data-driven raster (R / matplotlib heat maps, KM, etc.)
manuscript/figures/_legacy/ # archived prior versionsComposition scripts should load only from _assets_servier/ and _assets_data/. If a script imports from _assets_ai/, treat it as a policy violation for JACC/NEJM/unknown targets.
AI illustration is a supplementary option: every figure and visual abstract can be completed without an API key. If GEMINI_API_KEY is set, generate_image.py can generate illustrations (procedural schematics, anatomical illustrations), subject to the policy table and hard rule above:
python ${CLAUDE_SKILL_DIR}/scripts/generate_image.py \
"Clean medical illustration of a CT-guided lung biopsy procedure, \
flat vector style, white background, no text" \
--output output.png --aspect 16:9If GEMINI_API_KEY is not set, use ${CLAUDE_SKILL_DIR}/references/medical_illustration_sources.md.
European Radiology made graphical abstracts mandatory for all Original Articles from first revision
(Jan 2025); other journals encourage or accept them (status list in template_guide.md). Check the
target journal profile (write-paper/references/journal_profiles/) for its visual abstract
requirements before starting.
${CLAUDE_SKILL_DIR}/references/visual_abstract_templates/{journal}.pptx.
If no journal-specific template exists, use medsci_default.pptx.${CLAUDE_SKILL_DIR}/references/medical_illustration_sources.md)generate_image.py --style medical (only if GEMINI_API_KEY set)python ${CLAUDE_SKILL_DIR}/scripts/generate_visual_abstract.py \
--template medsci_default \
--title "Article Title" \
--hypothesis "Research question" \
--methods "Method 1|Method 2|Method 3" \
--finding "Main finding statement" \
--citation "Eur Radiol (2026) Author A et al; DOI:..." \
--visual figures/fig1_roc_curve.png \
--badges "N=450|CT chest|Multi-center" \
--output figures/visual_abstract.pptxsoffice --headless --convert-to png).Design: one page, landscape (16:9) or per the journal template; three sections (study question → key method → main result); the study's actual figures rather than generic graphics; minimal text; no decorative clip-art.
| Template | File | Use When |
|---|---|---|
| MedSci Default | medsci_default.pptx | Any journal without an official template |
| JACC Central Illustration | jacc_central_illustration.pptx | JACC family journals (use --type central-illustration) |
Using a journal's own template. We do not redistribute journals' templates (e.g., European
Radiology's EURA-GA-Jan2025.pptx): download it and pass its absolute path:
python ${CLAUDE_SKILL_DIR}/scripts/generate_visual_abstract.py \
--template /absolute/path/to/EURA-GA-Jan2025.pptx ...--template takes an absolute path to any .pptx. The script locates the fields by their text
content rather than by shape name, so a journal's own template works unmodified. If the path does
not exist it falls back to medsci_default.pptx.
To add a new journal template: see ${CLAUDE_SKILL_DIR}/references/visual_abstract_templates/template_guide.md.
JACC family journals (JACC, JACC: Asia, JACC: Cardiovascular Imaging, JACC: Heart Failure, JACC: CardioOncology, JACC: Clinical Electrophysiology, JACC: Basic to Translational Science) require a Central Illustration (CI) with every Original Article. A CI is not a Visual Abstract: it conveys one key finding and contains no methods. Before making one, read ${CLAUDE_SKILL_DIR}/references/jacc_central_illustration_principles.md (CI vs VA table, the five Fuster-Mann rules, layout and validation thresholds).
python ${CLAUDE_SKILL_DIR}/scripts/generate_visual_abstract.py \
--type central-illustration \
--visual figures/central_illustration_v2.png \
--citation "FirstAuthor Last et al. Journal Name 2026; vol(issue):pages." \
--output submission/jacc_asia/central_illustration.pptx \
--ci-zones 3 --ci-label-words 22 --ci-numerical-points 2 \
--ci-raw-text "warranty drops to 3 years in age 45+ with cardiometabolic burden; MASLD HR 1.77"CI mode validates before rendering and rejects (exit 2) if any of: zones > 3, label words > 30, numerical points > 4, or methodology terms (cohort flow / inclusion criteria / exclusion criteria / study design / enrollment / randomized / sample size / CONSORT / PRISMA / STARD) appear in --ci-raw-text. Override individual rules with --ci-allow {zones|words|numerical|methods} only when you have a defensible reason. Submit only the content figure + citation: JACC editorial applies the red border and blue "CENTRAL ILLUSTRATION:" header after acceptance.
Any reference in a caption, legend or illustration needs a DOI or PMID confirmed via /search-lit;
mark one you cannot confirm [UNVERIFIED - NEEDS MANUAL CHECK]. Mark an unconfirmed clinical
definition, criterion or guideline claim [VERIFY] and ask — the submission gates block on both.
Before specifying figure type, read ${CLAUDE_SKILL_DIR}/references/design_principles.md —
identify (1) the one-sentence key message, (2) audience and reading-time budget, and
(3) whether a figure is the right vehicle (vs a small table or in-line text). Skip only when the
figure is mandated by a reporting guideline (e.g., PRISMA / CONSORT flow), and even then apply the
cognitive-load checklist.
For reporting-guideline figures, also load
${CLAUDE_SKILL_DIR}/references/reporting_guideline_figure_map.md — which guideline mandates which
figures and whether this skill ships an official template (✅), generic flow only (⚠️), or needs
manual production (❌). Critical for AI-extension guidelines (CONSORT-AI, STARD-AI, TRIPOD+AI,
CLAIM 2024, DECIDE-AI).
For medical AI / engineering pipeline figures (DICOM workflow, annotation pipeline, federated
learning topology, model architecture), also load
${CLAUDE_SKILL_DIR}/references/pipeline_concepts_medical_ai.md — canonical layouts, required
annotations, and tool selection per type.
Optional flags:
--study-type <type>: One of: diagnostic-accuracy, ai-validation, meta-analysis, dta-meta-analysis, observational-cohort, rct, case-report. When set, auto-generate the full figure set from the Study-Type Figure Sets table below without prompting for individual figure types.--data-dir <path>: Directory containing analysis outputs (CSVs, _analysis_outputs.md). Default: current working directory.Ask the user for (infer what the context already gives, and confirm before proceeding):
--study-type is provided--study-type): determines the required figure set${CLAUDE_SKILL_DIR}/references/figure_specs.md.figure_specs.md.Use Python (matplotlib/seaborn, with specialized libraries as needed). Compose each data plot from
its anatomy model in ${CLAUDE_SKILL_DIR}/references/exemplar_plots/ (index in its README.md);
for box/violin, bar and heatmap figures follow the per-type conventions in figure_specs.md. Flow
diagrams never use matplotlib — see the Tool Selection Guide.
Script structure:
"""
Figure: {description}
Date: {YYYY-MM-DD}
Target: {journal}
Dimensions: {width} x {height} inches @ {DPI} DPI
"""
import numpy as np
import matplotlib.pyplot as plt
import os
style_path = os.path.join(os.environ.get('CLAUDE_SKILL_DIR', '.'), '../analyze-stats/references/style/figure_style.mplstyle')
if os.path.exists(style_path):
plt.style.use(style_path)
# Wong colorblind-safe palette
WONG = ['#000000', '#E69F00', '#56B4E9', '#009E73',
'#F0E442', '#0072B2', '#D55E00', '#CC79A7']
np.random.seed(42)Never fabricate data points. If sample data is needed for a template demo, label it "example data".
When a figure is produced by a data-driven .py/.R script (ROC, forest, KM, calibration, heat
maps), lint that script before finalizing with the /analyze-stats code-quality gate
(check_generated_code.py {script} --strict): it catches a missing plotting seed for any
bootstrapped CI band, a hardcoded absolute data path, or a hand-typed data literal that should have
been read from the analysis CSV.
Present the figure to the user (layout, labels and annotations, colors/sizing/emphasis) and iterate until the user approves.
Before Step 5 Export, run two stages — deterministic quantitative checks, then your own qualitative review — to decide whether to re-render or hand off to the user.
Stage 1: Quantitative checks (critic_figure.py)
python ${CLAUDE_SKILL_DIR}/scripts/critic_figure.py \
figures/fig1_stard.png \
--type stard \
--spec-min-dpi 600 \
--spec-width-in 7.0 \
--source-text figures/fig1_stard.txt \
--out figures/fig1_stard.critique.json--source-text is optional (expected strings for OCR coverage). The JSON report covers DPI and
physical width vs. the journal spec, the dominant-color breakdown and out-of-Wong-palette fraction,
and OCR word count, minimum text height, and source-word coverage. When the image carries no DPI
metadata, the DPI check uses the resolution at the spec width (width_px / --spec-width-in). A check
that cannot run (physical width without DPI metadata, OCR without pytesseract) is listed under
not_run and the summary reads INCOMPLETE, never PASS; --strict exits 3 on INCOMPLETE.
Stage 2: Qualitative review
${CLAUDE_SKILL_DIR}/references/critic_rubrics/flow_diagram.md${CLAUDE_SKILL_DIR}/references/critic_rubrics/data_plot.md${CLAUDE_SKILL_DIR}/references/flow_diagram_lessons.md (official-template fidelity, PDF
export via VML fallback, docx XML escape, sequential placeholder mapping, frozen-version sync
with the manuscript).reporting_guideline_figure_map.md row / pipeline_concepts_medical_ai.md loaded in Step 1._why.md design notes in ${CLAUDE_SKILL_DIR}/references/exemplar_diagrams/{type}/
— hierarchy, whitespace, typography, emphasis, colour. They are the anchors. Where a rendered
exemplar is bundled (template_output*.png), Read 1–2 of those too. Figures cropped from
published papers are not shipped (see that directory's README); a user's own local exemplars can
be used instead. For a non-flow data plot, read the matching anatomy model in
${CLAUDE_SKILL_DIR}/references/exemplar_plots/ (e.g., forest_plot.md).Refinement loop
critic_pass: yes.critic_pass: partial and record the residual items in the manifest's
critic_notes field.Record the final state in _figure_manifest.md (see Study-Type Figure Sets) so downstream steps
(/write-paper Phase 2 embedding and Phase 7 DOCX build) and future critic passes can see the
history.
Save final outputs to analysis/figures/ (analysis/figures/*.pdf, analysis/figures/*.png):
export_portal_tiff.py, not a raw magick ... output.tiff: that keeps the alpha channel
(transparent regions print black on many production pipelines) and stays uncompressed (a
600-dpi RGBA TIFF blows past a portal's 25 MB cap). The script white-flattens RGBA→RGB,
LZW-compresses, and verifies the result is pixel-identical to that flatten. Use it when a
portal accepts only .tiff/.jpeg/.eps (Springer Nature SNAPP) or caps figure size (JACC: Asia):python3 ${CLAUDE_SKILL_DIR}/scripts/export_portal_tiff.py --in figure.png --out figure.tiff --max-mb 25
# exit 1 if still over the capName files descriptively: fig1_roc_curve.pdf, fig2_consort_flow.pdf, etc.
For PPTX outputs (visual abstract, central illustration, or any deck the figure
will live in): run the Mac-compatibility validator before delivery. PowerPoint
Mac silently drops TIFF, renders <a:sp3d> 3-D bevels as red outlines that PDF
export does not show, and refuses to open files whose app.xml slide count
disagrees with the actual slide XML files.
python ${CLAUDE_SKILL_DIR}/scripts/validate_pptx_mac_compat.py \
figures/visual_abstract.pptx \
--json figures/visual_abstract.mac_compat.json \
--strictExit code 1 means at least one FAIL — fix per the fix: field in the JSON
report and re-render the PPTX before delivery. Exit code 0 with WARN is
acceptable. Skip this step when the figure is PNG/PDF only (no PPTX).
Before delivering the final figure, verify all items:
figure_specs.md (Caption Writing Guidelines) with key finding, abbreviations, statistical details, and sample sizeWhen the study type is known (from /write-paper Phase 0 or user specification), generate the complete required figure set without asking for each figure individually.
| Study Type (Guideline) | Required Figures |
|---|---|
| Diagnostic accuracy (STARD) | STARD flow diagram, ROC curve, confusion matrix, calibration plot |
| AI validation (TRIPOD+AI / CLAIM) | Flow diagram, ROC curve, confusion matrix, calibration plot, feature importance or SHAP, Grad-CAM (if imaging) |
| Meta-analysis (PRISMA) | PRISMA flow diagram, forest plot, funnel plot |
| DTA meta-analysis (PRISMA-DTA) | PRISMA flow diagram, paired forest plot (Se + Sp), SROC curve, Deeks funnel plot |
| Observational cohort (STROBE) | Flow diagram, Kaplan-Meier curves (if survival endpoint) |
| RCT (CONSORT) | CONSORT flow diagram, primary endpoint figure |
| Case report / series (CARE) | Clinical timeline figure (exemplar_plots/clinical_timeline.md), annotated multimodality imaging panel when visually load-bearing (exemplar_plots/imaging_panel.md); for a series, an all-cases summary table |
| Oncology treatment study (CONSORT RCT or single-arm phase II; REMARK for biomarker subsets) | CONSORT or cohort flow diagram, Kaplan-Meier PFS/OS with number-at-risk table (exemplar_plots/km_curve.md), waterfall plot of best response (exemplar_plots/waterfall_plot.md), swimmer plot for durability (exemplar_plots/swimmer_plot.md), spider plot when response kinetics matter (exemplar_plots/spider_plot.md), cumulative incidence instead of 1 - KM when competing risks are present (exemplar_plots/cumulative_incidence.md) |
The manifest is mandatory. After generating all figures, write
analysis/figures/_figure_manifest.md — one row per figure (Figure | Path | Type | Tool | Critic | Rounds | Description) plus a ## Critic notes section recording any residual PARTIAL items and
why they were accepted. It is consumed by /write-paper Phase 2 (figure embedding) and Phase 7
(DOCX build); verify it exists and is non-empty before finishing. Read
${CLAUDE_SKILL_DIR}/references/figure_manifest.md when writing it (format and field definitions).
Data plots: matplotlib/seaborn → PDF + PNG (this skill)
Flow diagrams: generate_flow_diagram.R (DiagrammeR + rsvg) → PDF + 300/600 dpi PNG
Final assembly: pandoc or python-docx (auto-embedded in DOCX)STARD / CONSORT / PRISMA / STROBE flow diagrams MUST use the standardized R pipeline
scripts/generate_flow_diagram.R (DiagrammeR + Graphviz dot + rsvg) — the single canonical tool
for all four. Do NOT use matplotlib FancyBboxPatch (manual coordinates break when text
changes, and patches distort when embedded in DOCX). Do NOT use D2 for new flow diagrams (weak
font control, overlap needs manual post-processing); D2 is a legacy fallback only when R is
unavailable.
| Type | Recommended Tool | Why |
|---|---|---|
| STROBE (cohort / cross-sectional) | scripts/generate_flow_diagram.R --type strobe | Single canonical tool; auto-layout; vector PDF + 300/600 dpi PNG |
| CONSORT (RCT) | scripts/generate_flow_diagram.R --type consort | Same pipeline; monochrome Arial default |
| PRISMA 2020 (SR/MA) | scripts/generate_flow_diagram.R --type prisma | Faithfully implements PRISMA 2020 structure; avoids PRISMA2020 R package's webshot-based raster PDF issue |
| STARD (DTA) | scripts/generate_flow_diagram.R --type stard | Same pipeline; supports 2x2 reference-standard split |
| Pipeline Diagram | D2 (legacy) | Until pipeline-diagram support is added to the R script |
YAML config → Rscript ${CLAUDE_SKILL_DIR}/scripts/generate_flow_diagram.R --type <t> --config <yaml> --out <prefix> →
PDF + 300/600 dpi PNG. Templates in references/exemplar_diagrams/{strobe,consort,prisma,stard}/template_input.yaml.
Read ${CLAUDE_SKILL_DIR}/references/flow_diagram_recipe.md when generating a flow diagram (YAML
schema, fixed style, per-project create_figure1.R pattern, D2 fallback); a ROC curve or forest
plot needs none of it.
Every box label contains its count (e.g., "Assessed for eligibility\n(n = 450)"). Numbers in
labels must be CSV-derived — author the YAML from an R/Python script that reads the upstream data —
or hand-written only when the value lives in a commit-tracked data artifact (cite the source file
in a comment).
Caption ↔ flow-SSOT reconciliation (before Step 5 Export). The flow-diagram config is the single source of truth for participant counts; a hand-written Figure 1 caption drifts from it when the cohort is re-locked but the caption is not ("caption says n = 1,284 analytic, diagram box says n = 998"). Re-derive the caption counts from the flow config and reconcile:
python3 ${CLAUDE_SKILL_DIR}/scripts/derive_figure_legend_counts.py \
--flow-config figures/figure1_strobe_graphviz.yaml \
--manuscript manuscript/index.qmd \
--out qc/figure_legend_counts.json --strictAny n = N in the caption that is not a box count in the flow config is a MISMATCH (stale
caption) — update the caption from the config, never the reverse. The reconciler is stdlib-only and
parses the config as text, so it works regardless of the flow tool. When no Figure 1 caption is found
or the caption carries no n = N, the verdict is NOT_CHECKED (exit 2 under --strict), not OK.
Known limits: only n = N notation is read (a bare "1,150 patients" is not), and agreement is set
membership, so a count moved to the wrong box (excluded and analysed swapped) is not detected; check
those by eye against the diagram.
templates/official/When a journal requires the canonical, statement-issued template (rather than the auto-laid-out R
version), use the bundled official files in
templates/official/{prisma2020,consort2010,stard2015,spirit2013}/.
| Guideline | What ships | When to use |
|---|---|---|
| PRISMA 2020 | Locally built .pptx (4 variants) + fill_prisma_template.py | Reviewer asks for the official PRISMA 2020 layout, or you want editable PowerPoint instead of an R-rendered PDF. |
| STROBE (cohort) | Parametric .pptx builder build_strobe_template.py (YAML config) | Cohort/case-control Figure 1 when co-authors want PowerPoint they can hand-edit. Optional left-side phase column: omit stages: for the plain STROBE convention; include it for the PRISMA-style Identification/Screening/Inclusion/Analysis column. Pair with generate_flow_diagram.R --type strobe for the vector PDF/TIFF submission file. |
| CONSORT 2025 | Official .docx flow diagram + checklist | RCT submissions to journals that mandate the consort-spirit.org template. |
| STARD 2015 | Official .pdf flow diagram + .docx checklist | Diagnostic accuracy studies; flow diagram is fixed PDF, checklist is editable. |
| SPIRIT 2025 | Official .docx participant timeline + checklist | Trial protocols. |
Refresh / fill workflow:
# Refresh from canonical sources (CC-BY 4.0 / public-statement licenses)
bash ${CLAUDE_SKILL_DIR}/scripts/fetch_official_templates.sh
# Build PRISMA 2020 .pptx (one-time; site blocks programmatic .docx fetch)
python3 ${CLAUDE_SKILL_DIR}/scripts/build_prisma2020_template.py \
--variant new \
--out ${CLAUDE_SKILL_DIR}/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx
# Fill counts — positional 10-tuple matching most SR/MA workflows:
# n_db, n_dup, n_screened, n_screen_excluded,
# n_sought, n_assessed, n_excl_r1, n_excl_r2, n_excl_r3, n_studies
python3 ${CLAUDE_SKILL_DIR}/scripts/fill_prisma_template.py \
--template ${CLAUDE_SKILL_DIR}/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx \
--counts "315,122,186,7,111,204,102,84,3,15" \
--out fig1_prisma_filled.pptx
# Or use full JSON mapping for studies with non-standard PRISMA splits
python3 ${CLAUDE_SKILL_DIR}/scripts/fill_prisma_template.py \
--template ${CLAUDE_SKILL_DIR}/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx \
--counts-file my_counts.json \
--out fig1_prisma_filled.pptx
# STROBE — parametric single-script builder (cohort study; spine structure varies per study).
# YAML schema: stages, spine (id/stage/text), exclusions (after/text). Consecutive same-stage
# rows share one phase label automatically.
python3 ${CLAUDE_SKILL_DIR}/scripts/build_strobe_template.py \
--config figures/figure1_strobe.yaml \
--out figures/figure1_strobe.pptxThe STROBE builder checks that the exclusion cascade closes: for every link that declares an
exclusion, the spine box count minus the exclusions after it must equal the next spine box
(A - Σ(exclusions after A) == B). It warns loudly on any imbalance and, with --strict-cascade,
refuses to build — catching figure arithmetic drift (a dropped exclusion leaving the figure short of
the analytic N) that text and prose gates miss. Run python3 ${CLAUDE_SKILL_DIR}/scripts/_strobe_cascade.py --config figure1_strobe.yaml --strict to check a config without rebuilding the diagram. A config in neither
schema exits 2; under --strict, a spine config with no checkable exclusion link also exits 2 rather
than reporting OK.
Known limits: the generate_flow_diagram.R nodes/edges schema is recognised but not evaluated; the
helper prints NOT_ASSESSED and exits 0. Reading which box a dashed exclusion is subtracted from was
tried and flagged correct diagrams (an exclusion beside the box just before an exposed/unexposed or
index-positive/negative split, when the previous step has its own exclusion), so that finding is left
open. Check every dashed exclusion against its adjacent boxes by eye.
For STROBE the canonical KJR/Radiology/BMJ submission flow is:
Rscript ${CLAUDE_SKILL_DIR}/scripts/generate_flow_diagram.R --type strobe --config figures/figure1_strobe_graphviz.yaml --out figures/figure1build_strobe_template.py so co-authors and senior reviewers can adjust prose/positioning before sign-off.See templates/official/NOTES.md for licenses, attribution, and refresh notes.
Palettes, font sizes, panel layouts, and caption format are in figure_specs.md. In addition:
| When | Call | Purpose |
|---|---|---|
| Need statistical values for plot | /analyze-stats | Get computed values (AUC, CI, p-values) |
| Flow diagram for manuscript | /write-paper Phase 2 | Coordinate with Tables & Figures plan |
| Caption review | /write-paper Phase 7 | Final polish pass |
© Aperivue, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 152 other files (scripts, references) in skills/make-figures of Aperivue/medsci-skills.
Open the folder on GitHubat commit 3b14ae2
Make Figures next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Make Figures this skillAperivue/medsci-skills | 329 | — | ~8.4k | Automated safety check: Pass | MIT | |
| Content Create Hero Imageprisma/web | 1.1k | — | ~6.9k | Automated safety check: Pass | None | |
| Data Model ExtractorEmeaAppGbb/spec2cloud | 100 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Datamodellmnimbalyst/nimbalyst | 1.9k | — | ~713 | Automated safety check: Pass | MIT | |
| Prisma Client APIcurvenote/curvenote | 169 | 2 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Docs Writerprisma/web | 1.1k | — | ~5.2k | Automated safety check: Notes | None |
prisma/web
A skill your agent uses when the operator wants a hero or meta image for a Prisma blog post; asks to create or generate a blog hero, cover, social card, Open Graph, or YouTube image; mentions cover…
EmeaAppGbb/spec2cloud
Extract database schemas, data models, and entity relationships from code.
nimbalyst/nimbalyst
Create visual data models for database schemas using Nimbalyst's DataModelLM editor.
curvenote/curvenote
Prisma Client API reference covering model queries, filters, operators, and client methods.
prisma/web
A skill your agent uses when writing, rewriting, or improving technical docs (quickstarts, how-tos, tutorials, concept pages, or API references).
blencorp/claude-code-kit
Prisma ORM patterns including Prisma Client usage, queries, mutations, relations, transactions, and schema management.
Aperivue/medsci-skills
A skill your agent uses when validating or evaluating a trained medical-imaging model.
Aperivue/medsci-skills
A skill your agent uses when turning a folder of research PDFs into Obsidian notes, even if Obsidian is not named.
Aperivue/medsci-skills
A skill your agent uses when building or auditing a radiomics or tabular clinical-ML prediction model with a classical learner (LASSO, SVM, random forest, XGBoost and similar).
Aperivue/medsci-skills
A skill your agent uses when checking whether a manuscript's references are real.
Aperivue/medsci-skills
A skill your agent uses when a clinical CSV/Excel dataset needs profiling and cleaning before analysis (missing values, outliers, duplicates, type mismatches).
Aperivue/medsci-skills
A skill your agent uses when checking a radiology or medical AI study design before drafting or submission.
Works with
A skill your agent uses when a paper needs publication-ready figures or a visual abstract. Make Figures is an agent skill from Aperivue/medsci-skills. Use when a paper needs publication-ready figures or a visual abstract.
Make Figures fits situations like: A paper needs publication-ready figures; A visual abstract.
Run `npx skills add Aperivue/medsci-skills --skill make-figures -a claude-code`. Or copy the skill folder (skills/make-figures in Aperivue/medsci-skills) into .claude/skills/make-figures in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Aperivue/medsci-skills --skill make-figures -a codex`. Or copy the skill folder (skills/make-figures in Aperivue/medsci-skills) into .agents/skills/make-figures in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Aperivue/medsci-skills --skill make-figures -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/make-figures, .gemini/skills/make-figures, .github/skills/make-figures and .opencode/skills/make-figures in your project.
Going by SKILL.md and its folder, Make Figures needs the command-line tools its instructions call (python, python3, bash, soffice and magick) and credentials named GEMINI_API_KEY. Our summary lists: Python 3; A credential in GEMINI_API_KEY.
SKILL.md names 6 domains. As links in the text: pmc.ncbi.nlm.nih.gov, springernature.com, elsevier.com, smart.servier.com, bioart.niaid.nih.gov and biorender.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Make Figures is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8.4k tokens (SKILL.md is roughly 33k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 328k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Make Figures: Content Create Hero Image (prisma/web, 1.1k stars), Data Model Extractor (EmeaAppGbb/spec2cloud, 100 stars), Datamodellm (nimbalyst/nimbalyst, 1.9k stars) and Prisma Client API (curvenote/curvenote, 169 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Aperivue (a GitHub organization) maintains it in Aperivue/medsci-skills, which has 329 GitHub stars. The repository holds 54 skills in this directory. The repository was last updated on October 5, 2026.
Source: Aperivue/medsci-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.