Install any skill in seconds. Free to start, no credit card required.
Get Started Free →eLife figure preparation: file formats (TIFF/EPS/PDF), striking image requirements (1800x900 px), figure supplement naming, and image screening policy treating selective enhancement as misconduct.
.claude/skills/jaechang-hits-elife-figure-guide/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 155% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 210% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 205% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 381% | 0% |
This guide provides the complete specifications for preparing figures for submission to eLife. eLife is known for its open-access model, figure supplement system, striking image requirements, and a strict image screening policy where selective enhancement of scientific images is treated as research misconduct.
Official reference: https://elife-rp.msubmit.net/html/elife-rp_author_instructions.html
| Image Type | Minimum Resolution | |---|---| | Striking images | 1800 x 900 pixels minimum | | Regular figures | No strict DPI mandate (standard 300 DPI recommended) |
pythonfrom PIL import Image def check_elife_resolution(image_path, is_striking=False): """Check if image meets eLife resolution requirements. Args: is_striking: True for striking/graphical abstract images """ img = Image.open(image_path) w, h = img.size dpi = img.info.get('dpi', (72, 72)) print(f"Dimensions: {w} x {h} px") print(f"DPI: {dpi[0]} x {dpi[1]}") if is_striking: if w >= 1800 and h >= 900: print("PASS: Meets striking image minimum (1800x900 px)") return True else: print(f"FAIL: Striking image needs 1800x900 px, got {w}x{h}") return False else: if dpi[0] >= 300: print("PASS: Resolution meets standard (300+ DPI)") else: print(f"NOTE: DPI is {dpi[0]}; 300+ DPI recommended") return True
| Format | Accepted | |---|---| | TIFF | Yes | | EPS | Yes | | PDF | Yes | | JPEG / JPG | Yes | | GIF | Yes | | PS (PostScript) | Yes | | RTF | Yes | | Microsoft Excel | Yes (for data-based figures) | | CorelDraw | Yes |
| Format | Recommended | |---|---| | PNG | Yes (preferred) | | TIFF | Yes | | JPEG | Yes |
pythonimport matplotlib.pyplot as plt def set_elife_fonts(): """Configure Matplotlib with standard settings for eLife.""" plt.rcParams.update({ 'font.family': 'sans-serif', 'font.sans-serif': ['Helvetica', 'Arial'], 'font.size': 7, 'axes.labelsize': 7, 'axes.titlesize': 8, 'xtick.labelsize': 6, 'ytick.labelsize': 6, 'legend.fontsize': 6, })
eLife uses a unique figure supplement system instead of traditional supplementary figures:
Figure 1--Figure Supplement 1, Figure 1--Figure Supplement 2, etc.pythondef generate_elife_supplement_names(main_figure_num, n_supplements): """Generate eLife figure supplement naming. Args: main_figure_num: The main figure number (1, 2, 3, ...) n_supplements: Number of supplements for this figure Returns: List of supplement name strings """ names = [] for i in range(1, n_supplements + 1): names.append(f"Figure {main_figure_num}--Figure Supplement {i}") return names # Example supplements = generate_elife_supplement_names(3, 4) for s in supplements: print(s) # Output: # Figure 3--Figure Supplement 1 # Figure 3--Figure Supplement 2 # Figure 3--Figure Supplement 3 # Figure 3--Figure Supplement 4
eLife routinely screens submitted images for inappropriate digital processing. This is not a random check — it is a systematic process.
pythonfrom PIL import Image import os def validate_elife_figure(image_path, is_striking=False): """Full validation of a figure against eLife requirements.""" img = Image.open(image_path) issues = [] w, h = img.size # 1. Striking image checks if is_striking: if w < 1800 or h < 900: issues.append(f"Striking image: {w}x{h} px below 1800x900 minimum") if w < h: issues.append("Striking image should be landscape orientation") # 2. Resolution check (standard recommendation) dpi = img.info.get('dpi', (72, 72)) if not is_striking and dpi[0] < 300: issues.append(f"Resolution {dpi[0]} DPI; 300+ DPI recommended") # 3. Format check fmt = img.format accepted = ['TIFF', 'JPEG', 'PNG', 'EPS', 'PDF', 'GIF'] if fmt and fmt.upper() not in accepted: issues.append(f"Format '{fmt}' may not be standard") if is_striking: striking_formats = ['PNG', 'TIFF', 'JPEG'] if fmt and fmt.upper() not in striking_formats: issues.append(f"Striking image: prefer PNG, TIFF, or JPEG (got {fmt})") # Report print(f"=== eLife Figure Validation {'(Striking)' if is_striking else ''} ===") print(f"Dimensions: {w} x {h} px") print(f"DPI: {dpi[0]} x {dpi[1]}") print(f"Color mode: {img.mode}") print(f"Format: {fmt}") if issues: print(f"\nISSUES FOUND ({len(issues)}):") for issue in issues: print(f" - {issue}") else: print("\nAll checks PASSED") print("\nWARNING: eLife routinely screens images for manipulation") print("Selective enhancement (e.g., single band intensity) = MISCONDUCT") return len(issues) == 0
eLife replaces traditional supplementary figures with a linked figure supplement system. Supplements are named "Figure X--Figure Supplement Y" and are directly associated with their parent figure in the publication. Each supplement requires a short title and optional legend. This system improves discoverability compared to buried supplementary files.
eLife requires a striking image (graphical abstract) with specific constraints: minimum 1800 x 900 pixels, landscape orientation, 1-2 panels maximum, and no labels or text. This image appears prominently in article listings and social media. It must be a standalone visual that conveys the paper's main finding.
eLife routinely screens all submitted images for inappropriate digital processing. This is systematic, not random. Selective enhancement of any part of a scientific image (e.g., adjusting intensity of a single band in a blot) is treated as research misconduct and may result in rejection, institutional investigation, or retraction.
What type of figure are you preparing?
├── Striking image (graphical abstract)
│ ├── Dimensions: 1800 x 900 px minimum, landscape
│ ├── Format: PNG (preferred), TIFF, or JPEG
│ └── Content: No text, no labels, 1-2 panels max
├── Main figure
│ ├── Standard format: TIFF, EPS, PDF, JPEG
│ └── Upload as individual file
└── Figure supplement
├── Naming: "Figure X--Figure Supplement Y"
├── Include short title
└── Same format requirements as main figures| Scenario | Format | Resolution | Notes | |---|---|---|---| | Striking image | PNG | 1800 x 900 px minimum | No text or labels | | Western blot | TIFF | 300+ DPI | Will be screened for manipulation | | Graph or chart | EPS or PDF | Vector | Individual file upload | | Micrograph | TIFF | 300+ DPI | Uniform adjustments only | | Supplementary panel | Same as main | Same as main | Name as "Figure X--Figure Supplement Y" | | Data from Excel | Excel (.xlsx) | N/A | Accepted for data-based figures |
Before submitting figures to eLife, verify:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,554 | 9,314 | -40% | 1 | 1 | 0% | 2,718 | 5,127 | +89% | 0 | 0 | — |
case-02 | fail→pass | 18,371 | 14,116 | -23% | 1 | 1 | 0% | 3,745 | 6,407 | +71% | 0 | 0 | — |
case-03 | pass→pass | 9,388 | 7,994 | -15% | 1 | 1 | 0% | 1,582 | 4,640 | +193% | 0 | 0 | — |
case-04 | pass→pass | 10,892 | 7,657 | -30% | 1 | 1 | 0% | 1,882 | 4,615 | +145% | 0 | 0 | — |
case-05 | pass→pass | 10,552 | 7,266 | -31% | 1 | 1 | 0% | 1,604 | 4,427 | +176% | 0 | 0 | — |
case-06 | fail→pass | 9,814 | 5,860 | -40% | 1 | 1 | 0% | 1,689 | 4,312 | +155% | 0 | 0 | — |
case-07 | pass→pass | 10,469 | 4,830 | -54% | 1 | 1 | 0% | 1,657 | 4,086 | +147% | 0 | 0 | — |
case-08 | pass→pass | 6,898 | 5,138 | -26% | 1 | 1 | 0% | 1,277 | 4,180 | +227% | 0 | 0 | — |
case-09 | fail→pass | 7,701 | 4,822 | -37% | 1 | 1 | 0% | 1,320 | 4,096 | +210% | 0 | 0 | — |
case-10 | fail→pass | 7,998 | 5,419 | -32% | 1 | 1 | 0% | 1,382 | 4,209 | +205% | 0 | 0 | — |
case-11 | pass→pass | 5,482 | 3,951 | -28% | 1 | 1 | 0% | 923 | 3,963 | +329% | 0 | 0 | — |
case-12 | pass→pass | 8,702 | 5,134 | -41% | 1 | 1 | 0% | 1,382 | 4,120 | +198% | 0 | 0 | — |
case-13 | pass→pass | 9,633 | 6,297 | -35% | 1 | 1 | 0% | 1,441 | 4,368 | +203% | 0 | 0 | — |
case-14 | pass→pass | 9,198 | 5,507 | -40% | 1 | 1 | 0% | 1,533 | 4,077 | +166% | 0 | 0 | — |
case-15 | fail→pass | 5,079 | 6,315 | +24% | 1 | 1 | 0% | 895 | 4,305 | +381% | 0 | 0 | — |
case-16 | fail→pass | 9,830 | 4,210 | -57% | 1 | 1 | 0% | 1,716 | 3,961 | +131% | 0 | 0 | — |
case-17 | fail→pass | 9,909 | 4,953 | -50% | 1 | 1 | 0% | 1,611 | 4,040 | +151% | 0 | 0 | — |
case-18 | fail→pass | 14,176 | 7,542 | -47% | 1 | 1 | 0% | 2,826 | 4,669 | +65% | 0 | 0 | — |
case-19 | fail→pass | 8,614 | 1,792 | -79% | 1 | 1 | 0% | 1,459 | 3,535 | +142% | 0 | 0 | — |
case-20 | pass→pass | 9,161 | 4,270 | -53% | 1 | 1 | 0% | 1,480 | 4,032 | +172% | 0 | 0 | — |
case-21 | pass→pass | 9,392 | 8,525 | -9% | 1 | 1 | 0% | 1,954 | 5,078 | +160% | 0 | 0 | — |
case-22 | pass→pass | 13,330 | 10,422 | -22% | 1 | 1 | 0% | 2,301 | 4,860 | +111% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.