Mockups

Create believable applications of the Brand Lock. Preserve the approved logo and colors; do not let the scene generator invent branding.

Before planning, require only an approved logo through the Brandkit state script's get_logo action. Read approved palette/visual axes when available or when color/application decisions need them. Require typography only when readable text must appear. Use the exact approved logo path, URL, upload ID, or job ID returned by state everywhere; never substitute a newer generation or a recreated mark.

Mockups are rendered images, not fully editable layered documents. If the user needs editable source artwork, use that asset's dedicated reference (for example packaging.md or social-templates.md) first.

Plan the application from brand input

Use the approved Brand Lock, user brief, persisted visual axes, preferences, and uploaded references before choosing mockup objects, materials, framing, or art direction.

Each mockup needs one clear art-directed idea tied to this brand. “Put the logo on a generic object” is not a concept.

Anti-slop rules

Avoid the common synthetic/generic look:

Prefer believable materials, restrained lighting, purposeful negative space, specific environments, and one focal branded application.

Required Seedream route

Use Seedream as the primary mockup generator. Soul models are forbidden. GPT Image 2 is allowed only as the conditional text/detail application stage below.

Before generation, run higgsfield model get seedream_v5_pro --json. If that id is absent, inspect higgsfield model list --image --json and use the highest/newest Seedream tier it returns. Follow the live schema; request the highest supported resolution/quality tier and use the same Seedream model for every mockup in the set.

Ask for aspect ratio

Before submitting any mockup job, ask which ratio the user wants unless their current request already states it. Offer supported choices such as 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, and 2:3; validate the answer against the live model schema. For several mockups, use one ratio for the set unless the user assigns ratios per item. Lock the selected ratio across every stage.

Existing photograph

When the user explicitly supplies the exact photograph to mock up, pass it as Image0 and the selected logo variant as Image1. Use Seedream for symbol-only applications; use GPT Image 2 when the final image contains readable text. Preserve subject, camera, lighting, materials, folds, shadows, perspective, crop, background, and selected ratio.

Logo variant routing

Call the Brandkit state script's get_logo action and use one of its exact approved variant assets:

Only after the user confirms a mockup whose physical production requires one-color/reverse artwork, run python3 "$SKILL_ROOT/scripts/brandkit.py" logo-export with include_monochrome: true and the approved color SVG when the required variant is absent. Never pre-generate monochrome assets for future mockups. Never ask Seedream to invent/recolor them or use manual SVG edits.

Seedream prompt contract

Pass references with repeated CLI --image flags; Image0 is the first flag, Image1 the second, and so on. For a new scene, pass the exported PNG of the selected logo variant as Image0; add approved product/artwork references afterward. For an existing photograph, use the photograph as Image0 and logo PNG as Image1. State each role explicitly. Local PNG/JPG paths auto-upload. Never pass an SVG path as an image reference.

[CREATE ONE FINISHED BRANDED MOCKUP]
<specific object/application, credible setting, camera, material, lighting,
composition, and one brand-specific art-direction idea>

[AUTHORITATIVE LOGO]
<ImageN> is the exact approved <full-color/black/white> logo. Preserve its
spelling, silhouette, geometry, proportions, internal negative space, and exact
color. Do not redraw, simplify, crop, stretch, outline, or add effects.

[PLACEMENT LOCK]
Target surface: <exact object panel/face/material>.
Position: <exact alignment and location, e.g. horizontally centered, upper
third, optical center aligned to panel>.
Scale: logo occupies <specific proportion> of the target surface while keeping
<specific clear-space margin>.
Orientation: align to <panel edge/seam/baseline>; follow surface perspective
without changing logo proportions.
Color: use the supplied <full-color/black/white> variant exactly. State why it
contrasts correctly with the material/background.

[PHYSICAL APPLICATION]
Render the logo using <credible print/emboss/foil/engraving/ink behavior>.
Respect folds, grain, perspective, occlusion, reflections, scale, and
manufacturing limits.

No extra logos, pseudo-text, invented labels, warped marks, floating print,
unrelated props, arbitrary gradients, plastic sheen, or generic luxury staging.

The prompt must contain concrete placement, scale, alignment, clear-space, color-variant, and material-application instructions. “Place the logo on the bag/box” is insufficient.

Use --wait --json and retain the final job ID and result URL. Do not download and re-upload the same result unless a receiving stage requires a local file.

Typical one-stage call:

higgsfield generate create seedream_v5_pro \
  --image "$BRANDKIT_WORKDIR/logo/approved-logo-2048.png" \
  --prompt "<complete Seedream prompt contract>" \
  --aspect_ratio 3:4 \
  --resolution 2k \
  --wait --json

Replace ratio and resolution only with values confirmed by the live schema.

Conditional text/detail route

If the final mockup contains any readable text—wordmark, brand name, tagline, packaging label, signage, product copy, or interface text—do not ask Seedream to render it:

  1. Seedream creates the same-ratio scene with the target surface blank and no logo, letters, pseudo-text, or invented graphics.
  2. Submit GPT Image 2 with the Seedream job ID as the first --image and approved logo/artwork PNG as the second --image.
  3. The GPT prompt preserves Image0's camera, crop, objects, lighting, material, folds, shadows, perspective, and background exactly.
  4. State the exact literal text, logo variant, placement, scale, alignment, clear space, color, and physical print/application behavior.
  5. Keep the ratio identical to the user-approved ratio.
higgsfield generate create gpt_image_2 \
  --image "<seedream-job-id>" \
  --image "$BRANDKIT_WORKDIR/logo/approved-logo-2048.png" \
  --prompt "<exact controlled text/detail application prompt>" \
  --aspect_ratio 3:4 \
  --resolution 4k \
  --wait --json

Use GPT Image 2 only for this controlled second stage. If there is no readable text, keep the one-call Seedream route.

Deterministic compositing

Prefer deterministic placement over generative editing when:

Use image/SVG tooling to scale and place the official logo exactly. Preserve clear space and color. Add masks/perspective only when they can be controlled reliably.

Use Seedream directly when the branding must interact with:

If Seedream corrupts the logo, retry once with stronger placement, geometry, and color constraints while keeping the same references. If it fails again, stop and use deterministic compositing when possible.

Mockup-specific guidance

Packaging

Apparel/merch

Signage/environment

Device/screen

Variant discipline

For several mockups:

Mockup QA

After QA, ask the user to approve the final mockup or set. Only then save it with the Brandkit state script's approve_brandbook_element action and required_slots: ["logo"]; add palette/typography only when the mockup actually used them. Generated or model-praised mockups are drafts until that approval.