Curated Formatv1.0.0

Paper Outfit

Turn only the clothing, bag, and shoes in one fashion photo into handmade paper cutouts while keeping the person, pose, light, and setting photographic.

By Wiggly Studio · Updated July 2026

Fashion transformation: Turn the outfit into a handmade collage

Shared recipe family

One family. 31 recipes.

Paper Outfit belongs to Image Filters. These recipes share a runtime; adjacent examples are not separate Repos. The download on this page packages this specific recipe.

See the full recipe family

Before you start

Services & costs

Replicate

google/nano-banana-2-lite · google/nano-banana-2 · google/nano-banana-pro

Generate the approved media in this recipe.

REPLICATE_API_TOKEN

Local runtime

Setup, validation & inspection

Node.js >=22 · npm

Typical run estimate

About $0.067 on the default route and usually 2-4 min

Estimates describe the saved recipe, not a price guarantee. Confirm current provider pricing and approve any spend before generation. Your coding agent may have its own fees or usage limits. Never paste API keys into chat.

Setup notes from requirements.json
  • All smoke and validation commands are local.
  • The source guide names GPT Image 2; Wiggly's runnable lanes use Nano Banana 2 Lite, Nano Banana 2, and Nano Banana Pro.
  • No Replicate proof call was made for this package.
  • One render attempt is one paid prediction.
  • Paid generation requires explicit approval and is capped at three attempts.

Included assets

The ingredients behind the format.

The published package includes its agent instructions, input contract, and quality rules, plus 8 viewable asset references below. Reference media teaches the recipe; it is not a new result for your input.

Creator style reference

Creator style reference

Every published native image already contains exactly one original-photo inset, so Discover adds no second reference overlay. The final two CTA slides are intentionally excluded.

Local smoke-test input

Local smoke-test input

Every published native image already contains exactly one original-photo inset, so Discover adds no second reference overlay. The final two CTA slides are intentionally excluded.

Recipe reference

Recipe reference

Supplied creator reference—not a new Wiggly-generated result.

Recipe reference

Recipe reference

Supplied creator reference—not a new Wiggly-generated result.

Recipe reference

Recipe reference

Supplied creator reference—not a new Wiggly-generated result.

Recipe reference

Recipe reference

Supplied creator reference—not a new Wiggly-generated result.

View all 8 asset references
Recipe reference

Recipe reference

Supplied creator reference—not a new Wiggly-generated result.

Recipe reference

Recipe reference

Supplied creator reference—not a new Wiggly-generated result.

What stays consistent

  • The face, hair, skin, expression, makeup, and body
  • The original pose, crop, perspective, lighting, and shadows
  • The complete background and every non-fashion object
  • A realistic photographic finish

What you bring

  • One 3:4 JPEG, PNG, or WebP fashion photo at least 512px on both axes
  • A Replicate API token only when generation is approved
Read the included contracts and asset inventory ↓

Examples

Examples & references.

7 saved examples for this recipe—not 7 separate Repos. Each example keeps its original version and provenance.

Fashion transformation: Turn the outfit into a handmade collage

Example 01 · Fashion transformation

Turn the outfit into a handmade collage

Open finished ad
SKAI source example: Keep a sunny travel portrait completely real

Example 02 · SKAI source example

Keep a sunny travel portrait completely real

Open finished ad
SKAI source example: Let the background keep every detail

Example 03 · SKAI source example

Let the background keep every detail

Open finished ad
SKAI source example: Carry the effect across a full outfit

Example 04 · SKAI source example

Carry the effect across a full outfit

Open finished ad
SKAI source example: Make layered separates feel handmade

Example 05 · SKAI source example

Make layered separates feel handmade

Open finished ad
SKAI source example: Preserve the candid pose beneath the craft

Example 06 · SKAI source example

Preserve the candid pose beneath the craft

Open finished ad
SKAI source example: Keep dramatic architecture outside the edit

Example 07 · SKAI source example

Keep dramatic architecture outside the edit

Open finished ad

From input to output

How the run works.

From the published pipeline.json. The agent follows the packaged runtime and its approval gates.

  1. Step 01

    Prepare

    One run pinned to the source image, exact gathered prompt, and selected model route.

  2. Step 02

    Validate

    The 3:4 fashion photo and prompt contract checked locally.

  3. Step 03 · approval · provider

    Transform

    One realistic fashion photo with clothing, bag, and shoes replaced by handmade paper cutouts from one approved prediction.

  4. Step 04 · approval

    Inspect

    Automatic file checks plus an actual visual review.

Proof & quality

What a good result looks like.

Judge photographic preservation, convincing handmade paper construction, clean cut edges, visible pencil texture, and edits limited to clothing, bag, and shoes.

The delivered Google Doc supplied the exact GPT Image 2 prompt. The Instagram carousel supplied one native 3:4 title cover and six native 3:4 transformation examples.

Every published native image already contains exactly one original-photo inset, so Discover adds no second reference overlay. The final two CTA slides are intentionally excluded.

Saved reference

Explain the paper-outfit trick in one glance

  • The title, result, and single original-photo inset explain the transformation immediately
  • The face, pose, skin, lighting, street, and shadows remain photographic
  • The dress and bag read as physical paper cutouts laid over the real photo

Saved reference

Keep a sunny travel portrait completely real

  • The source inset proves the person, pose, terrace, and sea stay recognizable
  • Pencil marks and white paper texture appear only on the outfit and accessories
  • Cut edges and layered pieces feel handmade instead of digitally recolored

Quality gates

These are the acceptance criteria in quality.json—not a claim that every pictured example passed the current version. Inspect each new output before finalizing.

Automatic · 5 checks
  • The source input is 3:4 within 0.02 so composition can be preserved
  • Exactly 1 decodable JPG, JPEG, PNG, or WebP output
  • At least 640x800 pixels
  • Aspect ratio matches the selected route within 0.02
  • At least 50 KB
Visual · 6 checks
  • The face, hair, skin, expression, makeup, body, pose, lighting, shadows, background, and crop remain photographic and recognizable
  • Only clothing, bag, and shoes receive the handmade paper-cutout treatment
  • The transformed pieces look like physical white paper drawn with visible colored pencil and paint marks
  • Cut edges, layered shapes, and attachment to the original silhouette feel intentional and coherent
  • The person is not turned into an illustration and the result does not resemble a global digital filter
  • There are no malformed hands, limbs, facial features, or obviously synthetic background details
Finalization · 4 checks
  • Automatic Pass Required: true
  • Visual Pass Required: true
  • Review Notes Required: true
  • Explicit Approval Flag: --approve-final

Open the package

Readable Repo files.

Actual files from the published v1.0.0 package. Expand any file to inspect the instructions, requirements, or evidence before sending the Repo to your agent.

README.md
Open raw file ↗
# Wiggly Paper Outfit Format

This runnable Repo preserves the exact prompt delivered by @skaigenerated and
seven native carousel images. Every published image already includes one
original-photo inset, so Wiggly does not add another. The final two CTA slides
are intentionally excluded.

Run from `v3`:

```bash
npm install
npm run format:skai-image -- check --format=paper-outfit
npm run format:skai-image -- smoke --format=paper-outfit
npm run format:skai-image -- init --format=paper-outfit --run=my-paper-outfit --input=/absolute/path/to/3-by-4-image.jpg
npm run format:skai-image -- validate --format=paper-outfit --run=my-paper-outfit
npm run format:skai-image -- estimate --format=paper-outfit --run=my-paper-outfit
```

The input must already be 3:4 so the fixed output route can preserve the source
framing. Add `--model=nano-banana-2-lite` or `--model=nano-banana-pro` to
`init` to select the economy or premium route.

Generation requires `REPLICATE_API_TOKEN`. Stop after `estimate` and get the
user's explicit approval before supplying the paid flag:

```bash
npm run format:skai-image -- render --format=paper-outfit --run=my-paper-outfit --approve-paid
```

No Replicate proof call was made while packaging this Repo.

- Economy: `google/nano-banana-2-lite`
- Default: `google/nano-banana-2`
- Premium: `google/nano-banana-pro`
- Model named in the source guide: `openai/gpt-image-2`

The source model is recorded for provenance. The runnable lanes use Wiggly's
lower-cost Nano Banana routes and preserve the carousel's 3:4 output shape.
Re-run `estimate` immediately before approval because provider pricing can
change.
SKILL.md
Open raw file ↗
---
name: wiggly-paper-outfit
description: Turn only the clothing, bag, and shoes in one 3:4 fashion photo into handmade paper cutouts using the exact gathered SKAI prompt.
---

# Paper Outfit

Use the packaged runner and exact prompt. Do not call Replicate separately or
create another render path.

From the extracted kit's `v3` directory, prepare the local runner first:

```bash
npm install
npm run format:skai-image -- check --format=paper-outfit
npm run format:skai-image -- smoke --format=paper-outfit
```

Ask one short question:

> Which 3:4 fashion photo should I turn into a handmade paper-outfit editorial?

Then initialize the free run. Omit `--model` for Nano Banana 2, or add
`--model=nano-banana-2-lite` for economy or `--model=nano-banana-pro` for
premium:

```bash
npm run format:skai-image -- init --format=paper-outfit --run=<id> --input=<absolute-image-path> [--model=<route>]
npm run format:skai-image -- validate --format=paper-outfit --run=<id>
npm run format:skai-image -- estimate --format=paper-outfit --run=<id>
```

Stop after `estimate` and ask the user to approve the paid prediction. Only
after the user explicitly approves the cost should you supply `--approve-paid`:

```bash
npm run format:skai-image -- render --format=paper-outfit --run=<id> --approve-paid
npm run format:skai-image -- inspect --format=paper-outfit --run=<id>
npm run format:skai-image -- inspect --format=paper-outfit --run=<id> --visual-pass --review-notes="<specific observations>"
npm run format:skai-image -- finalize --format=paper-outfit --run=<id> --approve-final
```

Hard rules:

- Preserve the face, hair, skin, expression, makeup, body, pose, lighting, shadows, background, crop, and perspective.
- Apply the effect only to clothing, bag, and shoes.
- Make each transformed piece look like a physical white-paper cutout with visible colored pencil, paint marks, cut edges, and layered construction.
- Keep the person fully photographic; never turn the model into a drawing or apply a global digital filter.
- Use a user-approved 3:4 input before validation.
- Keep the exact gathered prompt unless the user explicitly requests a change.
- Use Nano Banana 2 by default, Lite for economy, or Pro for premium.
- Validate and estimate before spending, pause for explicit user approval, and never render without `--approve-paid`.
- Persist and resume the prediction id.
- Never exceed three attempts.
- View the output and record specific visual-review notes before finalizing.
- Never print, store, or commit `REPLICATE_API_TOKEN`.
requirements.json
Open raw file ↗
{
  "runtime": {
    "node": ">=22",
    "commands": ["npm"]
  },
  "providers": [
    {
      "name": "Replicate",
      "models": [
        "google/nano-banana-2-lite",
        "google/nano-banana-2",
        "google/nano-banana-pro"
      ]
    }
  ],
  "environment": [
    {
      "name": "REPLICATE_API_TOKEN",
      "secret": true,
      "requiredFor": ["render", "resume"]
    }
  ],
  "notes": [
    "All smoke and validation commands are local.",
    "The source guide names GPT Image 2; Wiggly's runnable lanes use Nano Banana 2 Lite, Nano Banana 2, and Nano Banana Pro.",
    "No Replicate proof call was made for this package.",
    "One render attempt is one paid prediction.",
    "Paid generation requires explicit approval and is capped at three attempts."
  ]
}
inputs.json
Open raw file ↗
{
  "required": [
    {
      "id": "image",
      "type": "image",
      "formats": ["jpg", "png", "webp"],
      "minimumWidth": 512,
      "minimumHeight": 512,
      "maximumBytes": 26214400,
      "aspectRatio": "3:4",
      "aspectRatioTolerance": 0.02
    }
  ],
  "question": "Which 3:4 fashion photo should I turn into a handmade paper-outfit editorial?",
  "defaults": {
    "model": "nano-banana-2",
    "aspectRatio": "3:4",
    "outputCount": 1
  },
  "modelRoutes": {
    "economy": "google/nano-banana-2-lite",
    "default": "google/nano-banana-2",
    "premium": "google/nano-banana-pro"
  },
  "sourceModel": "openai/gpt-image-2"
}
pipeline.json
Open raw file ↗
{
  "progress": "Prepare -> Validate -> Transform -> Inspect",
  "attemptCap": 3,
  "stages": [
    {
      "id": "prepare",
      "output": "One run pinned to the source image, exact gathered prompt, and selected model route.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "validate",
      "output": "The 3:4 fashion photo and prompt contract checked locally.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "transform",
      "output": "One realistic fashion photo with clothing, bag, and shoes replaced by handmade paper cutouts from one approved prediction.",
      "paid": true,
      "approvalRequired": true
    },
    {
      "id": "inspect",
      "output": "Automatic file checks plus an actual visual review.",
      "paid": false,
      "approvalRequired": true
    }
  ]
}
assets.json
Open raw file ↗
{
  "sourceReference": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/skaigenerated/p/Da2XgvnCqOG/",
    "resourceUrl": "https://docs.google.com/document/d/1LjajzBWHChmEmc_Ujjwv9cRnQ8WRs1KouNBIPQ0PFG4/mobilebasic",
    "guide": "assets/source/guide.txt",
    "nativeHero": "assets/source/skai-hero.jpg",
    "smokeInput": "assets/source/reference-input.jpg",
    "verification": "The delivered Google Doc supplied the exact GPT Image 2 prompt. The Instagram carousel supplied one native 3:4 title cover and six native 3:4 transformation examples.",
    "referenceNote": "Every published native image already contains exactly one original-photo inset, so Discover adds no second reference overlay. The final two CTA slides are intentionally excluded."
  },
  "examples": [
    { "id": "native-hero", "path": "assets/source/skai-hero.jpg", "provenance": "@skaigenerated carousel title cover" },
    { "id": "amalfi-balcony", "path": "assets/source/skai-example-01.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "coastal-terrace", "path": "assets/source/skai-example-02.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "ice-cream-street", "path": "assets/source/skai-example-03.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "front-step", "path": "assets/source/skai-example-04.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "resort-wall", "path": "assets/source/skai-example-05.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "museum-hall", "path": "assets/source/skai-example-06.jpg", "provenance": "@skaigenerated carousel" }
  ]
}
quality.json
Open raw file ↗
{
  "automatic": [
    "The source input is 3:4 within 0.02 so composition can be preserved",
    "Exactly 1 decodable JPG, JPEG, PNG, or WebP output",
    "At least 640x800 pixels",
    "Aspect ratio matches the selected route within 0.02",
    "At least 50 KB"
  ],
  "visual": [
    "The face, hair, skin, expression, makeup, body, pose, lighting, shadows, background, and crop remain photographic and recognizable",
    "Only clothing, bag, and shoes receive the handmade paper-cutout treatment",
    "The transformed pieces look like physical white paper drawn with visible colored pencil and paint marks",
    "Cut edges, layered shapes, and attachment to the original silhouette feel intentional and coherent",
    "The person is not turned into an illustration and the result does not resemble a global digital filter",
    "There are no malformed hands, limbs, facial features, or obviously synthetic background details"
  ],
  "finalization": {
    "automaticPassRequired": true,
    "visualPassRequired": true,
    "reviewNotesRequired": true,
    "explicitApprovalFlag": "--approve-final"
  }
}
goldens.json
Open raw file ↗
{
  "purpose": "Judge photographic preservation, convincing handmade paper construction, clean cut edges, visible pencil texture, and edits limited to clothing, bag, and shoes.",
  "examples": [
    {
      "id": "native-hero",
      "title": "Explain the paper-outfit trick in one glance",
      "imagePath": "assets/source/skai-hero.jpg",
      "model": "GPT Image 2 · SKAI source",
      "whyItWorks": [
        "The title, result, and single original-photo inset explain the transformation immediately",
        "The face, pose, skin, lighting, street, and shadows remain photographic",
        "The dress and bag read as physical paper cutouts laid over the real photo"
      ]
    },
    {
      "id": "amalfi-balcony",
      "title": "Keep a sunny travel portrait completely real",
      "imagePath": "assets/source/skai-example-01.jpg",
      "model": "GPT Image 2 · SKAI source",
      "whyItWorks": [
        "The source inset proves the person, pose, terrace, and sea stay recognizable",
        "Pencil marks and white paper texture appear only on the outfit and accessories",
        "Cut edges and layered pieces feel handmade instead of digitally recolored"
      ]
    },
    {
      "id": "coastal-terrace",
      "title": "Let the background keep all of its detail",
      "imagePath": "assets/source/skai-example-02.jpg",
      "model": "GPT Image 2 · SKAI source",
      "whyItWorks": [
        "The face, hair, body, architecture, and coast remain unchanged",
        "The gingham top, skirt, and shoes share one coherent paper treatment",
        "The effect stays readable without flattening the photograph"
      ]
    },
    {
      "id": "ice-cream-street",
      "title": "Carry the treatment across a full outfit",
      "imagePath": "assets/source/skai-example-03.jpg",
      "model": "GPT Image 2 · SKAI source",
      "whyItWorks": [
        "The subject, ice cream, car, street, and lighting remain photographic",
        "Top, shorts, and bag use matching drawn texture and crisp cut edges",
        "The paper pieces sit over the body while respecting pose and silhouette"
      ]
    },
    {
      "id": "front-step",
      "title": "Make layered separates feel handmade",
      "imagePath": "assets/source/skai-example-04.jpg",
      "model": "GPT Image 2 · SKAI source",
      "whyItWorks": [
        "The portrait and doorway remain realistic and recognizable",
        "Top and skirt use distinct paper colors without changing the person",
        "White outlines and pencil strokes make the physical overlay legible"
      ]
    },
    {
      "id": "resort-wall",
      "title": "Preserve a soft candid pose",
      "imagePath": "assets/source/skai-example-05.jpg",
      "model": "GPT Image 2 · SKAI source",
      "whyItWorks": [
        "The face, skin, arms, body, wall, plants, and light remain photographic",
        "Each garment and accessory becomes its own cut-paper object",
        "The new pieces still follow the original pose and proportions"
      ]
    },
    {
      "id": "museum-hall",
      "title": "Keep dramatic architecture outside the edit",
      "imagePath": "assets/source/skai-example-06.jpg",
      "model": "GPT Image 2 · SKAI source",
      "whyItWorks": [
        "The person, pose, hall, exhibits, and golden light stay real",
        "The floral dress gains visible paper texture and hand-drawn pigment",
        "The limited edit makes the result feel like a tactile fashion collage"
      ]
    }
  ]
}
format.json
Open raw file ↗
{
  "id": "paper-outfit",
  "version": "1.0.0",
  "title": "Paper Outfit",
  "description": "Turn only the clothing, bag, and shoes in one fashion photo into handmade paper cutouts while keeping the person and photograph real.",
  "status": "agent-ready",
  "owner": "Wiggly Studio",
  "source": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/skaigenerated/p/Da2XgvnCqOG/",
    "resourceUrl": "https://docs.google.com/document/d/1LjajzBWHChmEmc_Ujjwv9cRnQ8WRs1KouNBIPQ0PFG4/mobilebasic",
    "ctaKeyword": "AI",
    "modelShown": "GPT Image 2"
  },
  "outputs": [
    "1 inspected 3:4 realistic fashion photo with handmade paper outfit cutouts",
    "state.json with model and prediction provenance",
    "quality-report.json with automatic and visual inspection"
  ]
}
kit.package.json
Open raw file ↗
{
  "name": "wiggly-paper-outfit-format-kit",
  "private": true,
  "version": "1.0.0",
  "type": "module",
  "engines": {
    "node": ">=22"
  },
  "scripts": {
    "check:kit": "node kit-smoke.mjs",
    "format:skai-image": "tsx scripts/skai-image-format.ts",
    "test": "tsx tests/skai-image-format-runner.test.ts --format=paper-outfit && node kit-smoke.mjs"
  },
  "dependencies": {
    "image-size": "2.0.2",
    "replicate": "1.4.0",
    "tsx": "4.20.6"
  }
}
runtime.json
Open raw file ↗
{
  "slug": "paper-outfit",
  "version": "1.0.0",
  "promptPath": "prompts/transform.txt",
  "input": {
    "mode": "image",
    "formats": ["jpg", "png", "webp"],
    "minimumWidth": 512,
    "minimumHeight": 512,
    "maximumBytes": 26214400,
    "aspectRatio": "3:4",
    "aspectRatioTolerance": 0.02
  },
  "defaultModel": "nano-banana-2",
  "modelRoutes": {
    "nano-banana-2-lite": {
      "label": "Nano Banana 2 Lite",
      "lane": "economy",
      "model": "google/nano-banana-2-lite",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg",
      "costEstimate": "about $0.034 per output image at the current listed rate",
      "timeEstimate": "usually 5-60 seconds"
    },
    "nano-banana-2": {
      "label": "Nano Banana 2",
      "lane": "default",
      "model": "google/nano-banana-2",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg",
      "resolution": "1K",
      "costEstimate": "about $0.067 per 1K output image at the current listed rate",
      "timeEstimate": "usually 10-120 seconds"
    },
    "nano-banana-pro": {
      "label": "Nano Banana Pro",
      "lane": "premium",
      "model": "google/nano-banana-pro",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg",
      "resolution": "1K",
      "costEstimate": "about $0.15 per 1K output image at the current listed rate",
      "timeEstimate": "usually 30-180 seconds"
    }
  },
  "expectedOutputs": 1,
  "maximumAttempts": 3,
  "smokeInputPath": "assets/source/reference-input.jpg",
  "smokeExamplePath": "assets/source/skai-example-01.jpg",
  "minimumOutputWidth": 640,
  "minimumOutputHeight": 800,
  "minimumOutputBytes": 51200,
  "manualReview": [
    "recognizable photographic face, body, pose, expression, lighting, shadows, background, crop, and perspective",
    "edits limited to clothing, bag, and shoes",
    "physical white-paper texture, colored-pencil marks, paint strokes, cut edges, and layered construction",
    "paper pieces aligned cleanly to the original outfit silhouette",
    "no illustrated person, global filter treatment, malformed anatomy, or synthetic background changes"
  ]
}
Technical proof archive ↗

Run it with a coding agent

Know the run before you start.

The agent reads this version’s instructions, checks the requirements, and walks you through the approved workflow. Review the inputs and estimate before starting.

Typical run

Prepare + validateFree · under 1 min
One image transformAbout $0.067 on the default 1K route · usually under 2 min
Inspect + finalizeFree · about 1 min

About $0.067 on the default route and usually 2-4 min

You provide

One 3:4 JPEG, PNG, or WebP fashion photo at least 512px on both axes · A Replicate API token only when generation is approved

Output

One inspected 3:4 paper-outfit editorial plus prediction and quality provenance