sciagent-skill-creator
Scaffold a new SciAgent-Skills entry. Picks pipeline/toolkit/database/guide template, creates skills/{category}/{name}/SKILL.md…
NEJM figure preparation: resolution (300-1200 DPI), editable vector formats (AI/EPS/SVG), in-house medical illustration policy, and strict image integrity requirements.
Claude Code
$ npx -y skills add jaechang-hits/SciAgent-Skills --skill nejm-figure-guide --agent claude-code
Codex
$ npx skills add jaechang-hits/SciAgent-Skills --skill nejm-figure-guide -a codex -y
Cursor
$ npx skills add jaechang-hits/SciAgent-Skills --skill nejm-figure-guide -a cursor -y
Gemini CLI
$ npx skills add jaechang-hits/SciAgent-Skills --skill nejm-figure-guide -a gemini-cli -y
GitHub Copilot
$ npx skills add jaechang-hits/SciAgent-Skills --skill nejm-figure-guide -a github-copilot -y
OpenCode
$ npx skills add jaechang-hits/SciAgent-Skills --skill nejm-figure-guide -a opencode -y
Windsurf
$ npx skills add jaechang-hits/SciAgent-Skills --skill nejm-figure-guide -a windsurf -y
name: nejm-figure-guide description: "NEJM figure preparation: resolution (300-1200 DPI), editable vector formats (AI/EPS/SVG), in-house medical illustration policy, and strict image integrity requirements." license: CC-BY-4.0 compatibility: Python 3.10+, Pillow, Matplotlib metadata: authors: HITS version: "1.0"
This guide provides the complete specifications for preparing figures for submission to the **New England Journal of Medicine (NEJM)**. A unique feature of NEJM is that **medical illustrations are created by NEJM's in-house illustrators** working directly with authors — authors should NOT submit finished medical illustrations due to copyright considerations.
**Official reference**: https://www.nejm.org/author-center/new-manuscripts
---
| Image Type | Minimum Resolution | Notes | |---|---|---| | Black-and-white line art | **1,200 DPI** | Highest requirement | | Photographic / halftone images | **300 DPI** | Standard for photographs | | Peer review stage | Lower resolution acceptable | High-res required for final publication |
from PIL import Image
def check_nejm_resolution(image_path, image_type='photo', stage='final'):
"""Check if image meets NEJM resolution requirements.
Args:
image_type: 'lineart' (1200 DPI) or 'photo' (300 DPI)
stage: 'review' (lower OK) or 'final' (strict requirements)
"""
min_dpi = {'lineart': 1200, 'photo': 300}
required = min_dpi.get(image_type, 300)
if stage == 'review':
print("NOTE: Lower resolution acceptable for peer review")
required = 150 # relaxed for review
img = Image.open(image_path)
dpi = img.info.get('dpi', (72, 72))
print(f"Stage: {stage} | Type: {image_type}")
print(f"Required: {required} DPI | Actual: {dpi[0]} DPI")
passed = dpi[0] >= required
print("PASS" if passed else "FAIL")
return passed---
| Figure Type | Preferred Format | Notes | |---|---|---| | Data visualizations (graphs, plots, diagrams) | **AI, EPS, SVG** | Editable vector files preferred | | Photographic images | **TIFF** | High-resolution raster | | Medical illustrations | **Do NOT submit** | NEJM illustrators create these |
**IMPORTANT**: NEJM's in-house medical illustrators will work directly with authors to create medical illustrations. Authors should NOT submit finished illustrations due to copyright considerations. The journal retains copyright on illustrations created by their team.
---
NEJM does not publish detailed size specifications in their public guidelines. General best practices:
---
---
| Element | Specification | |---|---| | Preferred style | **Sans-serif** | | Historical font | Univers (NEJM house font) | | Alternatives | Helvetica, Arial |
import matplotlib.pyplot as plt
def set_nejm_fonts():
"""Configure Matplotlib for NEJM figure fonts."""
plt.rcParams.update({
'font.family': 'sans-serif',
'font.sans-serif': ['Univers', 'Helvetica', 'Arial'],
'font.size': 8,
'axes.labelsize': 8,
'axes.titlesize': 8,
'xtick.labelsize': 7,
'ytick.labelsize': 7,
'legend.fontsize': 7,
})---
def check_clinical_image_text(title, legend):
"""Validate text limits for NEJM Images in Clinical Medicine."""
title_words = len(title.split())
legend_words = len(legend.split())
issues = []
if title_words > 8:
issues.append(f"Title has {title_words} words (max 8)")
if legend_words > 150:
issues.append(f"Legend has {legend_words} words (max 150)")
if issues:
for issue in issues:
print(f"ISSUE: {issue}")
else:
print(f"PASS: Title ({title_words} words), Legend ({legend_words} words)")
return len(issues) == 0---
---
from PIL import Image
import os
def validate_nejm_figure(image_path, image_type='photo', stage='final'):
"""Full validation of a figure against NEJM requirements."""
img = Image.open(image_path)
issues = []
# 1. Resolution check
min_dpi = {'lineart': 1200, 'photo': 300}
required = min_dpi.get(image_type, 300)
if stage == 'review':
required = 150
dpi = img.info.get('dpi', (72, 72))
if dpi[0] < required:
issues.append(f"Resolution {dpi[0]} DPI below {required} DPI for {image_type} ({stage})")
# 2. Color mode
if img.mode not in ('RGB', 'RGBA', 'L'):
issues.append(f"Color mode {img.mode} may not be ideal; use RGB or Grayscale")
# 3. Format checkTurn 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…
Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction.…
Time-to-event modeling with scikit-survival: Cox PH (elastic net), Random Survival Forests, Boosting, SVMs for censored data.…
Guided statistical analysis: test choice, assumption checks, effect sizes, power, APA reporting. Pick tests, verify assumptions,…
Python statistical modeling: regression (OLS, WLS, GLM), discrete (Logit, Poisson, NegBin), time series (ARIMA, SARIMAX, VAR),…
DL cell/nucleus segmentation for fluorescence and brightfield microscopy. Pre-trained models (cyto3, nuclei, tissuenet) and a…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.