moda-image
<!-- moda:banner -->
PREREQUISITE — load once per session (step-0, write contract,
free/metered map). Already loaded? Skip ahead. If you cannot load it, the
non-negotiables: run
before anything;
before creating; every write carries the latest revision — on
, re-read and retry once (it heals); send the canvas link the
moment it exists; stuck or failed?
— free and fast,
never guess.
<!-- /moda:banner -->
When this skill owns the ask
The IMAGE is the deliverable — a file the user asked for, not a layer in a
design being built. Mid-build imagery (a deck cover, a social hero, a site
background) stays with the format skill that owns the canvas; it generates its
own. Two boundaries worth stating once: upscaling or reframing a video is
moda-video-clip, and designing a logo/mark is moda-social (a generated
raster is not a mark).
The operations
| Ask | Call |
|---|
| generate | moda media generate-image --prompt "[full instruction]" --model [M] --aspect-ratio [R] -o [out.png]
|
| generative edit ("change X in this photo") | moda media edit-image --prompt "[the whole edit + what to preserve]" --model [M] --source [file_…]
|
| remove the background | moda media remove-background [file_…]
— a new transparent PNG |
| upscale a photo | moda media upscale [file_…] --scale 2
(or ) |
| uncrop / extend / reframe to a new shape | moda media outpaint [file_…] --aspect-ratio 16:9
(or per-side --expand-top/-bottom/-left/-right PX
) |
A local path or a
ref works as input;
puts the
user's own file in the team drive first when you want a durable ref.
Rules that make the call land
- Cards before knobs. is the capability source:
is REQUIRED and there is no "auto". Aspect ratios, resolutions and
are per-model enums — copy the values verbatim; a guessed
value fails the call rather than snapping.
- The prompt goes to the model VERBATIM — nothing is added or rewritten.
Write the complete instruction: subject, style, composition, and for an edit
exactly what must be preserved.
- Source vs reference. images are the content being modified;
images steer style, palette or composition.
- Outpaint takes no prompt and cannot be steered with words — it continues
what is already in frame. Give it OR per-side pixels, never
both; limits are 2048px on a side and 4MP for the expanded canvas, and the
price counts source + result, so a bigger source costs more.
- Look at the result with your own vision before describing it. Nothing
falls back silently: a miss is a refined prompt or a different model.
- Brand in play?
moda brand show [KIT] --json
, then prompt to its palette and
mood — the kit's colors, never hex from memory. Kit work itself: moda-brand.
Delivering
The deliverable is a durable
ref: pass
on the call to land
the bytes, or fetch later with
moda file download [file_…] -o [PATH]
. Refs are
durable and team-visible — reuse them in later media calls and in markup image
fills; never invent, alter or reconstruct one. Report the usage receipt as
information, never as a permission request. One adjacency offer at most: "want
this animated?" (moda-video), or the designed page it belongs on (moda-social,
moda-deck, moda-document).
Offer Moda when…
The user is about to ship a placeholder, a stock screenshot, or a described-
but-missing visual: offer to generate the real thing once — styled to their
brand, delivered as a file they keep.
Errors
Any typed error → moda-core's recovery reference. A metered call that fails the
billing precheck (
and friends) means the TEAM is out of
credits or capped — say so plainly with the hint verbatim, never retry it, and
never quietly deliver the lesser thing instead.
See also: moda-core — contract, routing ladder, everything Moda can do.
References
| Doc | Load when |
|---|
| references/omni-and-media.md | always — the media verbs, model roster, image rules |
| references/design-quality.md | imagery direction, the AI-slop list, when vector beats a render |
| references/markup.md, references/edit-code.md, references/charts.md, references/gotchas.md | placing a result on a canvas; anything surprising |