Skip to content
Conduit

skill

split-image-style

Make a single image that's half photograph, half re-rendered in another style (polygon, charcoal, constellation, blueprint), aligned across a seam. Powered by Gemini.

Sawyer-Middeleer/split-image-stylecommunitylistedunreviewed

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/Sawyer-Middeleer/split-image-style itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 22, 2026

split-image-style

Make a single image that's half photograph, half re-rendered in another style — polygon mosaic, charcoal on canvas, a constellation star-chart, a blueprint — with the two halves lined up across a seam so the subject stays continuous.

The reason it works: it composites two aligned generations rather than asking a model to imagine the split in one shot. One-shot prompting drifts — the subject wanders off-center, a border creeps in, the halves stop matching. Here you generate a base photo, generate a same-composition replica in the target style, and merge them behind a mask you control. Sharing one composition is what keeps them aligned.

How it works

  1. Base — generate a photo (subject centered, full-bleed).
  2. Replica — feed that exact base back in and re-render it in the target style at identical composition.
  3. Composite — merge across a seam (hard or feathered; straight or following the subject's own silhouette).

Install

Requires Python 3.9+.

git clone https://github.com/Sawyer-Middeleer/split-image-style && cd split-image-style
pip install -r requirements.txt

Set your Gemini API key (get one here):

export GEMINI_API_KEY=...        # macOS / Linux
$env:GEMINI_API_KEY = "..."      # Windows PowerShell
# or, cross-platform: cp .env.example .env  and fill it in

Uses Google's Gemini image models (Nano Banana). The default gemini-3-pro-image gives the best results; pass --model gemini-3.1-flash-image to iterate more cheaply. Image-generation availability can vary by region — see Google AI Studio.

Use it

python shatter.py \
  --subject "a vintage clipper ship centered on open ocean, a lighthouse island far left, a buoy near right; painterly analog photograph" \
  --seam vertical --original left --feather 0 \
  --out ship.png

Four inputs

InputFlag
Subject to generate, or an existing photo--subject "..." / --base-image photo.jpg
How the stylized half looks (any medium)--style "..." — defaults to a polygon mosaic
How the halves meet--seam vertical|horizontal|silhouette + --feather N
Which side stays photographic--original left|right|top|bottom

Plus --base-style, --square, --frac, --model, --keep. See references/shatter-composite.md for the full guide.

The --style is anything

The stylized half is just a prompt. A few that work well:

# charcoal on canvas
--style "a charcoal and graphite drawing on textured cotton canvas — smudged shading, visible paper tooth, loose expressive strokes"

# constellation star-chart (great with --seam silhouette for a sky-subject)
--style "an antique celestial constellation star-chart — connected star-lines, glowing amber stars, blue linework on a midnight sky"

# blueprint
--style "a cyanotype blueprint — white line-art on a deep prussian-blue ground"
Charcoal on canvasConstellation over a real ridge

Seam modes

  • vertical / horizontal — a straight seam; feather it for a dissolve.
  • silhouette — the seam follows the base's own skyline. Put the photo below a real foreground ridge (--original bottom) and a styled subject in the sky above it. See the constellation whale above.

Files

  • shatter.py — the CLI entry point; one-command orchestrator (base → replica → composite).
  • composite_split.py — the mask/composite library + CLI (use directly if you already have a base and a replica).
  • generate.py — thin Gemini image wrapper.
  • SKILL.md — packages this repo as an agent skill (e.g. for Claude Code). Ignore it if you're just using the CLI.

Cost & responsible use

  • Cost. Each run calls the paid Gemini image API twice (base + styled replica), or once with --base-image. The default gemini-3-pro-image is the highest-quality, priciest tier — use --model gemini-3.1-flash-image to iterate.
  • Synthetic media. Generated people are not real. Don't present outputs as genuine photographs of real individuals or use them to impersonate anyone. Gemini image output carries an invisible SynthID watermark.

License

MIT — see LICENSE. Issues and PRs welcome.

↑↓ navigate openesc close