---
name: product-six-view-sheet
description: 'Generate a 2K six-view manufacturing reference sheet from a product photo. Use when the user asks to create front, back, side, top, and bottom product views on a pure white background using Nano Banana 2.'
metadata:
  icon: ':lucide:box'
  title: Product Six-View Sheet
---

# Product Six-View Sheet

## When to Use

Use this skill when the user provides a product photo and asks for standard
manufacturing views, six views, orthographic product views, product reference
sheets, CAD-style view sheets, or ecommerce/product-design reference images.
The default output is one 2K PNG on a pure white background with six isolated
views arranged in a clean grid: front, back, left side, right side, top, and
bottom.

This skill uses the OOMOL built-in Fusion API connector action
`fusion-api.fal_nano_banana_2_submit` for image generation/editing and
`fusion-api.fal_nano_banana_2_result` for polling the async result. Do not run
`oo search` or rediscover image-generation capabilities at execution time.

## Inputs

- Required: one product reference image, either as a local file path or a
  remote HTTP(S) URL.
- Optional: product-specific notes to preserve, such as material, color,
  brand plaque, stitching, hardware, openings, proportions, or manufacturing
  details.
- Optional: requested output directory and filename. If absent, save beside the
  source image when practical, or in the current workspace with a descriptive
  name such as `product_six_views_2k.png`.
- Default generation settings: `numImages: 1`, `aspectRatio: "3:2"`,
  `outputFormat: "png"`, `resolution: "2K"`,
  `limitGenerations: true`, and `enableWebSearch: false`.
- Ask one focused question only when the product image is missing, multiple
  candidate products are shown and the main object is ambiguous, or the user
  wants a nonstandard view set that changes the repeated workflow.

## Execution

If the input is a local file, upload it first:

```bash
oo file upload "<filePath>" --json
```

Use the returned `downloadUrl` in `imageURLs`. Do not pass local absolute paths
or local `file://` URLs into the Fusion API payload.

Create a JSON payload file for the submit action when the prompt contains
quotes, line breaks, or detailed product notes. Use this payload shape:

```json
{
  "prompt": "<six-view manufacturing-sheet prompt>",
  "imageURLs": ["<uploaded-or-remote-reference-url>"],
  "numImages": 1,
  "aspectRatio": "3:2",
  "outputFormat": "png",
  "resolution": "2K",
  "limitGenerations": true,
  "enableWebSearch": false
}
```

Prompt requirements:

- State that the reference photo is the only product source.
- Request exactly six orthographic/studio views in a neat 3 by 2 grid: front,
  back, left side, right side, top looking into or onto the product as
  appropriate, and bottom.
- Preserve visible product identity and construction details from the
  reference image, including material, color, seams, stitching, hardware,
  panels, openings, labels, and proportions.
- Require a pure white background, neutral product-reference lighting, minimal
  shadows, no props, no hands, no mannequin, no watermark, no text labels, and
  no extra products.
- If the user names a specific product category, adapt the top and bottom view
  wording to that category while keeping the same six-view structure.

Submit the task:

```bash
oo connector run "fusion-api" \
  --action "fal_nano_banana_2_submit" \
  --data @payload.json \
  --json
```

Read the async session id from `.data.sessionId`. Poll the result action with
that id:

```bash
oo connector run "fusion-api" \
  --action "fal_nano_banana_2_result" \
  --data '{"sessionID":"<sessionId>"}' \
  --json
```

Repeat polling until `.data.state` is `completed`, or stop on a terminal
failure shape. Treat `.data.state == "processing"` with `.data.progress` as
non-terminal progress.

## Result Handling

On success, the observed completed response shape is:

```text
.data.state == "completed"
.data.data.images[0].url
```

Download the first returned image URL with `oo file download`:

```bash
oo file download "<image-url>" "<outDir>" --name "<base-name>" --ext ".png"
```

`oo file download` prints `Saved to: <path>` and does not support `--json`.
After saving, verify the local file exists and inspect image dimensions with a
local tool such as `file` or `sips -g pixelWidth -g pixelHeight`. Preview the
image when practical, and include the local path plus an inline image preview
in the final response. Do not print full signed or temporary artifact URLs to
the user.

## Failure Handling

- If `oo file upload` fails, report the local file/access/upload blocker and do
  not submit the generation task.
- If the submit action rejects the payload, check that `prompt` is nonempty,
  `imageURLs` is an array of one to fourteen URL strings, `aspectRatio` is one
  of the schema enums, `outputFormat` is `png`, and `resolution` is `2K`.
- If the submit response lacks `.data.sessionId`, report the unexpected
  response shape and keep the raw command output for debugging.
- If polling returns `.data.state == "processing"` for an extended period,
  report the saved `sessionId` and resume by polling
  `fusion-api.fal_nano_banana_2_result`; do not resubmit the same logical task
  just because polling timed out.
- If polling returns `.data.state == "not_found"`, report the not-found error
  and do not invent a result URL.
- If the completed response has no image URL under `.data.data.images[]`,
  report the unexpected completed result shape instead of synthesizing an
  artifact.
- If the downloaded image is visibly wrong, such as missing six views, not
  white background, extra products, or wrong main object, explain the issue and
  ask whether to rerun with a tighter prompt before spending another
  generation.
