Assemble 6 sub-figures (A–F) into a high-resolution composite figure with consistent labels, padding, and publication-ready DPI.
Assemble 6 sub-figures (A–F) into a high-resolution composite figure with consistent styling, labels, and publication-ready output.
This skill accepts: exactly 6 image files (panels A–F) in supported formats, plus an output path, for assembly into a composite figure.
If the request does not involve assembling exactly 6 image panels into a composite figure — for example, asking to generate plots from data, edit image content, or assemble a different number of panels — do not proceed. Instead respond:
"multi-panel-figure-assembler is designed to assemble exactly 6 sub-figures (A–F) into a composite image. Your request appears to be outside this scope. Please provide 6 image files and an output path, or use a more appropriate tool for your task. For plot generation from data, consider matplotlib, seaborn, or R ggplot2."
Do not attempt any data processing or partial analysis before emitting this refusal. Validate scope first — this is the absolute first action before any other processing.
Note: This skill is fixed to exactly 6 panels (A–F labeling convention). For 4-panel (2×2) or 9-panel (3×3) layouts, a future --panels parameter may be added.
# Basic 2×3 layout
python scripts/main.py --input A.png B.png C.png D.png E.png F.png --output figure.png
# 3×2 layout at 600 DPI
python scripts/main.py --input A.png B.png C.png D.png E.png F.png --output figure.png --layout 3x2 --dpi 600
# Custom label styling
python scripts/main.py --input A.png B.png C.png D.png E.png F.png --output figure.png \
--label-size 32 --label-position topright --padding 20 --border 4
| Parameter | Type | Default | Description |
|---|---|---|---|
--input / -i | 6 paths | Required | Input image paths for panels A–F |
--output / -o | path | Required | Output composite file path |
--layout / -l | enum | 2x3 | Grid layout: 2x3 or 3x2 |
--dpi / -d | int | 300 | Output DPI |
--label-font | str | Arial | Font family for panel labels |
--label-size | int | 24 | Font size for panel labels |
--label-position | str | topleft | Label position: topleft, topright, bottomleft, bottomright |
--padding / -p | int | 10 | Padding between panels (pixels) |
--border / -b | int | 2 | Border width around each panel (pixels) |
--bg-color | str | white | Background color (white/black/hex) |
--label-color | str | black | Label text color |
python -m py_compile scripts/main.py
python scripts/main.py --help
python -c "import PIL; print('Pillow OK')"
../ or points outside the workspace, reject with a path traversal warning.scripts/main.py fails (e.g., returncode=2 from missing required args), report the exact error and provide the correct command syntax.pip install Pillow numpy and exit with a non-zero code.When execution fails or inputs are incomplete, respond with this structure:
FALLBACK REPORT
───────────────────────────────────────
Objective : [restate the goal]
Blocked by : [exact missing input or error — e.g., only 4 of 6 panels provided]
Partial result : [what can be completed — e.g., layout plan, parameter defaults]
Assumptions : [layout, DPI, label style assumed]
Constraints : [format requirements, DPI minimum]
Risks : [aspect ratio mismatch, font availability]
Unresolved : [what still needs user input]
Next step : [minimum action needed to unblock]
───────────────────────────────────────
Use the following fixed structure for non-trivial requests:
If the request is simple, compress the structure but keep assumptions and limits explicit when they affect correctness.
pip install Pillow numpy