--- name: product-colour-variants description: Turn one product photo into four to six colourways with the shape, label layout, framing and lighting locked, plus a labelled contact sheet with exact colour names. Name the parts that change and give each colour a name and hex code. Built for e-commerce colour options, line sheets and launch posts. metadata: type: image version: 1.0.0 category: Product photos tagline: Use this Skill to turn one product photo into a set of colourways with everything else locked. made-for: E-commerce sellers, Brands, Product designers, Agencies generates-with: Still image edits, one per colour (openai/gpt-image-2/edit), and a local contact sheet requires: Node.js 20.9 or newer (sharp needs it); run `npm install sharp` in the Skill folder for scripts/variant-sheet.mjs outside-costs: None in the Skill. The image model you send the requests to may charge about 20 cents per colourway at the default settings. updated: 2026-10-16 title: Product colour variants availability: live summary: Turn one product photo into four to six colourways with shape and lighting locked, plus a labelled contact sheet. command: /product-colour-variants my sneaker in navy, coral, charcoal and mustard output: JPEG colourways + labelled contact sheet required-input: Product photo + colour list creator: meleon --- # Product colour variants Use this skill when someone has one photo of a product and needs it in several colours: a launch with six colour options, a line sheet, a listing that has not been photographed in every colour yet. ## What you need - The product name. - One clean product photo, as a public URL. Plain or white background, even light, whole product in frame. If the photo has a busy background, make a clean one first with the `studio-product-shot` Skill. - Which parts change colour, described by position ("the three side panels and the midsole"). - Four to six colours, each with a name and a hex code, for example `Navy=#1B2A4A`. If the photo or the colour list is missing, ask. Do not invent colours or the product. ## What you make - One image per colourway, 1024 x 1024 JPEG, framing and lighting matching the input photo. - A labelled contact sheet of all colourways (2000 px wide, names drawn locally, cells keep the photo's ratio, nothing cropped). The preview was made from the studio-product-shot output of the same sneaker photo (that white-background shot is `assets/example-input.webp`). ## How to run it 0. If the photo's background is not plain, run the `studio-product-shot` Skill first. Use its output as the input photo: if you need a public URL, upload it to a temporary host you control and delete it when you have the colourways. 1. Read `references/colourway-guide.md`. Decide which parts change and which are locked. 2. Run `node scripts/build-input.mjs --product "" --image --recolour "" --colour "Navy=#1B2A4A" --colour "Coral=#E0523A" --draft` to print one low-quality request per colour. POST each printed `input` to fal model `openai/gpt-image-2/edit` with the person's own `FAL_KEY` (this Skill never stores keys). Colours without a hex code make the model guess the shade: always give one. Without a key, paste each printed prompt and the product photo into any GPT-Image-class editor that takes a reference image. Check one draft before you spend on the rest. If you uploaded the photo to a public URL for this, delete it afterwards. 3. When the draft is right, run the same command without `--draft` and send every request. The defaults (1024 x 1024, high quality) produced `assets/preview.webp`. Always edit the original photo, never a previous colourway. 4. Put the original beside each colourway and work through `references/output-spec.md`. Re-run only the colourways that fail. 5. If a colourway fails: max 3 attempts, change one thing per attempt (say what; one option is the fallback model `fal-ai/nano-banana-pro/edit`, about $0.15 per image, via `--model fallback`, which prints `aspect_ratio` and `resolution` instead of `image_size` and `quality`), view each output beside the input, then return the best and say what still differs. 6. Run `node scripts/variant-sheet.mjs --output sheet.jpg --variant "Navy=navy.jpg" --variant "Coral=coral.jpg" ...` to build the contact sheet. 7. Return the colourway images and the sheet. Say that the model re-renders the product, so very fine details can differ slightly from the photo. ## Files - `references/colourway-guide.md`: naming parts, choosing colours, materials, failure modes. - `references/output-spec.md`: sizes and the checklist. - `assets/prompt-template.md`: the prompt for one colourway. - `assets/generation-input.json`: the model, size, quality, draft settings and fallback. - `assets/example-input.webp` and `assets/preview.webp`: the white-background studio shot of a real sneaker photo (the actual input) and the colourway sheet made from it. - `scripts/build-input.mjs`: prints one request per colour. It does not call any API. - `scripts/variant-sheet.mjs`: builds the labelled contact sheet. Needs `sharp`.