generation
Comprehensive multimodal generation via OpenRouter — images (with reference photos), videos (text/image/reference-to-video), and spoken audio.
Skill by Deibler
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/deibler-generation
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity, finance
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/generation
What's inside
- Skill name
generation- Description
- Comprehensive multimodal generation via OpenRouter — images (with reference photos), videos (text/image/reference-to-video), and spoken audio. Picks models based on task + budget.
- License
- MIT
- Instructions
- 159 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Generation (OpenRouter)
Use this for anything beyond a simple one-off image: photo edits using a reference, character consistency across multiple references, style-matched videos, voice memos in a specific voice, etc.
## The tools
Model discovery (always call one of these FIRST so you pick an appropriate model):
- `list_image_models(max_price_usd?, query?)` — filtered by the harness's max image price.
- `list_video_models(max_price_usd?, query?)` — per-second pricing + supported resolutions/ratios.
- `list_audio_models(max_price_usd?, query?)` — audio-output (text-to-speech) models.
Generation (pass `model` from the listing; falls back to configured default if omitted):
- `generate_image(prompt, model?, reference_images?, aspect_ratio?, image_size?)`
- `generate_video(prompt, model?, resolution?, aspect_ratio?, duration?, generate_audio?, frame_images?, reference_images?)`
- `generate_audio(text, model?, voice?, format?)`
All outputs land in the session sandbox (`images/`, `videos/`, `voice-memos/`). Deliver with `send_attachment(path)`.
## When to use reference images
**You almost always should**, when the user has sent anything relevant:
- User sent a photo of themselves and wants an AI version → pass their photo as a reference.
- User wants character X in a scene → pass a photo of X.
- User wants a style match ("make it look like the one from Tuesday") → use that image as reference.
- Edit workflows ("make the fish bigger", "add my dog to this") → pass the source image AND any additions.
The `received-images/` dir inside the sandbox is the first place to look — every image the user has sent is archived there with a dated filename. `ls` that directory and pick the relevant file(s) before calling `generate_image`.
## Picking a model
Price caps are enforced by the harness — anything above them is hidden from the listing. The listing is sorted cheapest-first. Two rules on top of that:
1. **Prefer newer + cheaper variants over their Pro/premium siblings** unless you have a concrete reason not to. Newer model families (Gemini 3.1 Flash Image / Nano Banana 2, gpt-audio-mini, Lyria 3 Clip, Wan 2.5, Seedance) typically match or beat their older Pro counterparts on quality while costing 30-70% less. Don't reach for "Pro" because it sounds better — reach for it only when the task genuinely needs it (long songs, hi-res video with audio, ultra-fine typography).
2. **When two listed models look interchangeable for the task, pick the cheaper one.** You can always re-run with a pricier model if the first result disappoints. You can't refund a $0.14 generation.
Concrete pairs to remember:
- Text-to-image: **`google/gemini-3.1-flash-image-preview` (Nano Banana 2, ~$0.067/img)** over `google/gemini-3-pro-image-preview` (Nano Banana Pro, ~$0.14/img). The Flash is newer, cheaper, and produces better output for most prompts — Jordan has flagged Pro getting picked when Flash would have done better and cost half as much. Only reach for Pro if Flash has failed twice on the same prompt.
- TTS short memos: **`openai/gpt-audio-mini`** over `openai/gpt-4o-audio-preview`. Mini handles one-sentence voice replies fine.
- Music: **`google/lyria-3-clip-preview` ($0.04, 30s)** for jingles and short bits. Only use `lyria-3-pro-preview` ($0.08, full-length with verses + chorus) when the user explicitly asks for a full song.
- Video: cheaper Wan/Seedance first. **`google/veo-3.1` is premium — reach for it only when you need synced audio** or the user asks for Veo by name.
Beyond those:
- **Editing with a reference photo** (far and away the most common user ask — "put a hat on her", "make the fish bigger", "add Cooper in the background"): if you pass `reference_images`, the harness **auto-routes** to an edit-optimized model (FLUX.2 Pro by default). You can override, but FLUX.2 Pro / Max / Sourceful Riverflow V2 Pro preserve faces and composition far better than a text-to-image model like Gemini Flash Image. Never pass the text-to-image default when references are in play — the output will look "similar" instead of "edited".
- **Pure text-to-image** (no reference): Gemini Flash Image (Nano Banana 2) is fast and cheap and fine — use it by default.
- **Character consistency across multiple shots**: `list_image_models(query: "reference consistency")` → pick a multi-reference model.
- **Text in image / typography**: Sourceful Riverflow's `font_inputs` (specialized), or FLUX.2 Pro for general typography.
- **Video with character consistency**: Alibaba Wan, ByteDance Seedance, Google Veo (reference-to-video).
- **Video with sound**: pick a model that supports `generate_audio: true`.
- **Audio — spoken voice memo (TTS)**: `openai/gpt-4o-audio-preview` (default) or `openai/gpt-audio-mini` (cheaper). Voices: alloy, echo, fable, onyx, nova, shimmer. Use when the user says "send me a voice memo", "say it out loud", etc.
- **Audio — singing / music**: `google/lyria-3-pro-preview` ($0.08/song, full-length with verses + chorus) or `google/lyria-3-clip-preview` ($0.04/30-sec clip). Use when the user says "sing about…", "make a song", "write me a jingle". Put the lyrics in the prompt.
- **Picking between TTS and music models**: spoken descriptions → TTS. Anything with melody or "sing" → Lyria. When the user says "voice memo of you *singing*", pick Lyria, not TTS.
Default flow: `list_image_models(query: "editing reference")` → read descriptions → pick → generate. For common edits, just passing `reference_images` and letting the auto-route do its thing is fine.
## Reference-image workflow, by example
User sends a selfie, says "make me into a movie poster":
```
list_image_models({ query: "reference editing" })
# pick e.g. "black-forest-labs/flux.2-pro" — good for references
ls received-images/ # find their selfie
# -> 2026-04-19_hhmmss_IMG_1234.jpeg
generate_image({
prompt: "{user's phrasing about the poster} — make it cinematic, …",
model: "black-forest-labs/flux.2-pro",
reference_images: ["/abs/path/received-images/2026-04-19_hhmmss_IMG_1234.jpeg"],
aspect_ratio: "2:3",
image_size: "2K"
})
# -> /abs/path/sandbox/<id>/images/YYYY-MM-DD_HHMMSS_poster.png
send_attachment({ file_path: "/abs/path/sandbox/<id>/images/...png" })
```
For multi-reference (character X in scene Y):
```
generate_image({
prompt: "{scene description}. Character should look like the person in the first reference. Background should match the second reference.",
model: "{multi-reference-capable model id}",
reference_images: [characterPhoto, backgroundPhoto],
aspect_ratio: "16:9"
})
```
For video from a photo:
```
generate_video({
prompt: "{motion description}",
model: "google/veo-3.1",
frame_images: [{ path: photo, frame_type: "first_frame" }],
resolution: "1080p",
aspect_ratio: "16:9",
generate_audio: true
})
```
## Cost, and the re-roll loop
Images are cents. **Video is dollars**, priced per second of output, and it is by
far the easiest way to burn the account down to zero in an evening. On
2026-08-09 a run of video generations drained the OpenRouter balance mid-job and
the next request came back 402 — the person on the other end just saw their clip
die. The fix is not to refuse; it is to spend the money on the right generation
the first time.
**Land the prompt before you spend.** For anything video, and for images with a
lot riding on them, know what you are actually making: subject, what moves,
camera, mood, length, sound or no sound. If the ask is a one-liner and the shot
could go four ways, say the shot back in one sentence and go — or ask the singleFrom Deibler/edmund-harness, MIT.
More from Deibler/edmund-harness
- 0.592score
iterative-design
Deibler
Use this skill whenever the user is iterating on a visual — flat graphics, logos, badges, t-shirt prints, hockey/sports graphics, or subtle photo edits across…
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
radaromega
Deibler
THE weather source — all weather questions route here, from "is it gonna rain" to severe outbreaks.
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
hike
Deibler
Build a hike brief with a real topographic map, the traced route from OpenStreetMap, trailhead coordinates, and verified conditions.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
summarize
Deibler
TL;DR a URL, YouTube video, or local PDF/file via the `summarize` CLI (Gemini Flash).
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
gifgrep
Deibler
Search Tenor/Giphy and send a GIF into the chat.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
cloudflare
Deibler
Headless browser automation via Cloudflare Browser Run — screenshot pages, render PDFs, extract markdown/HTML/links, scrape DOM elements with CSS selectors…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
deep-research
Deibler
Multi-agent deep-research orchestrator.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
skycam
Deibler
The sky camera over the house (openskycam, camera sky01, Lancaster County PA), through the `mcp__openskycam__*` tools.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
trading-loop
Deibler
The autonomous trading decision loop for Quant.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
fishing
Deibler
Ground any PA, MD, NJ, or DE fishing question in the local fishing dataset—waters, bass and other species, stocking, catches, boat access, motor rules, depth…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
teams
Deibler
Coordinate multiple sub-agents as one unit — parallel investigation, multi-stage pipelines, or side-by-side comparisons.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
agents
Deibler
Delegate long-running work (research, deep summaries, multi-step analysis) to detached sub-agents.
SkillAFreshness: A★ 1Claude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 4, 2026 (1 month ago)
- Last release
- Oct 22, 2026 (5 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Deibler/edmund-harness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Deibler
- 0.592score
iterative-design
Deibler
Use this skill whenever the user is iterating on a visual — flat graphics, logos, badges, t-shirt prints, hockey/sports graphics, or subtle photo edits across…
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
radaromega
Deibler
THE weather source — all weather questions route here, from "is it gonna rain" to severe outbreaks.
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
hike
Deibler
Build a hike brief with a real topographic map, the traced route from OpenStreetMap, trailhead coordinates, and verified conditions.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
deep-research
Deibler
Multi-agent deep-research orchestrator.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
gifgrep
Deibler
Search Tenor/Giphy and send a GIF into the chat.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
cloudflare
Deibler
Headless browser automation via Cloudflare Browser Run — screenshot pages, render PDFs, extract markdown/HTML/links, scrape DOM elements with CSS selectors…
SkillAFreshness: A★ 1Claude Code +9
Cite this page
generation skill. Agent Mart. https://agentmart.dev/skills/deibler-generation (last updated 2026-10-24)