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.
- 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:
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:
{
"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:
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:
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:
.data.state == "completed"
.data.data.images[0].url
Download the first returned image URL with oo file download:
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.
---
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.