Curated Formatv1.0.0

Passport Click

Turn one portrait into a believable extreme-close-up passport post whose unexpectedly photogenic government photo becomes the hook.

By Wiggly Studio · Updated July 2026

Viral document portrait: The passport photo becomes the whole storyReference for The passport photo becomes the whole story

Shared recipe family

One family. 31 recipes.

Passport Click 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

One Replicate image charge 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.
  • No Replicate proof generation was purchased for this package.
  • The gathered source examples are the visual proof.
  • 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 7 viewable asset references below. Reference media teaches the recipe; it is not a new result for your input.

Creator example output

Creator example output

The exact prompt, negative prompt, Nano Banana Pro label, guide, and six output examples were gathered through the creator's Instagram comment and DM flow and visually checked. The reference fixture is cropped directly from the creator's matching before inset; no provider generation was run.

Creator reference input

Creator reference input

The exact prompt, negative prompt, Nano Banana Pro label, guide, and six output examples were gathered through the creator's Instagram comment and DM flow and visually checked. The reference fixture is cropped directly from the creator's matching before inset; no provider generation was run.

Creator reference 2

Creator reference 2

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

Creator reference 3

Creator reference 3

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

Creator reference 4

Creator reference 4

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

Creator reference 5

Creator reference 5

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

View all 7 asset references
Creator reference 6

Creator reference 6

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

What stays consistent

  • The source person's recognizable identity
  • A straight-on neutral government portrait
  • The portrait as the visual hero
  • A spontaneous smartphone-post feeling

What you bring

  • One JPEG, PNG, or WebP portrait 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.

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

Viral document portrait: The passport photo becomes the whole storyReference for The passport photo becomes the whole story

Example 01 · Viral document portrait

The passport photo becomes the whole story

Open finished ad
Identity preservation: Keep the face. Change the context.

Example 02 · Identity preservation

Keep the face. Change the context.

Open finished ad
Repeatable portrait: A new face still fits the same recipe

Example 04 · Repeatable portrait

A new face still fits the same recipe

Open finished ad
Printed portrait: Make the beauty feel government-issued

Example 05 · Printed portrait

Make the beauty feel government-issued

Open finished ad
Social-media crop: Crop aggressively enough to stop the scroll

Example 06 · Social-media crop

Crop aggressively enough to stop the scroll

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

    A run pinned to the source portrait, exact gathered prompt, and chosen Nano Banana route.

  2. Step 02

    Validate

    The portrait and complete provider contract checked locally.

  3. Step 03 · approval · provider

    Transform

    One extreme-close-up passport image from the selected Replicate model.

  4. Step 04 · approval

    Inspect

    Automatic file checks plus an actual visual review.

Proof & quality

What a good result looks like.

Judge recognizable identity, a surprisingly photogenic government portrait, extreme close-up framing, believable document wear, and accumulated smartphone/social compression against six gathered examples.

The exact prompt, negative prompt, Nano Banana Pro label, guide, and six output examples were gathered through the creator's Instagram comment and DM flow and visually checked. The reference fixture is cropped directly from the creator's matching before inset; no provider generation was run.

Saved reference

The passport photo becomes the whole story

  • The source selfie remains recognizable inside a neutral government portrait
  • The cropped document, print texture, holograms, and imperfect phone capture make the image feel casually real

Saved reference

A clean portrait survives a worn document

  • The face stays recognizable while becoming unusually polished for an ID photo
  • Creases, lamination, printed security detail, and tight framing keep the passport believable

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 · 4 checks
  • Exactly 1 decodable JPG, PNG, or WebP output
  • At least 720x960 pixels
  • Aspect ratio within 0.02 of 3:4
  • At least 50 KB
Visual · 5 checks
  • The source person's identity remains recognizable inside a neutral, straight-on government portrait
  • The passport portrait is subtly photogenic without beauty-filter skin or a changed identity
  • The document dominates roughly 97-100% of the frame and extends beyond the image edges
  • Lamination, holograms, security printing, scratches, dust, warping, and wear feel physically believable
  • JPEG damage, print grain, scanner softness, moire, and repost compression accumulate naturally instead of reading as a clean product photo
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 Passport Click Format

This runnable Repo preserves the exact prompt and six transformation examples
gathered from @skaigenerated. It turns one portrait into an extreme-close-up
smartphone photo of a believable passport whose unexpectedly attractive ID
picture becomes the social hook.

Run from `v3`:

```bash
npm install
npm run format:skai-image -- smoke --format=passport-click
npm run format:skai-image -- init --format=passport-click --run=my-passport-click --input=/absolute/path/to/portrait.jpg
npm run format:skai-image -- validate --format=passport-click --run=my-passport-click
npm run format:skai-image -- estimate --format=passport-click --run=my-passport-click
```

Generation requires `REPLICATE_API_TOKEN` and explicit approval:

```bash
npm run format:skai-image -- render --format=passport-click --run=my-passport-click --approve-paid
```

View the output, record visual notes with
`inspect --visual-pass --review-notes="..."`, then use
`finalize --approve-final`.

Model routes:

- Economy: `google/nano-banana-2-lite`
- Default: `google/nano-banana-2`
- Premium and source model: `google/nano-banana-pro`

No Replicate proof call was made while packaging this Repo. The six included
source examples and guide are the proof artifacts.
SKILL.md
Open raw file ↗
---
name: wiggly-passport-click
description: Turn one portrait into a believable extreme-close-up passport post whose unexpectedly photogenic government photo becomes the hook, using the exact gathered SKAI prompt.
---

# Passport Click

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

Ask one short question first:

> Which portrait should I turn into a Passport Click?

Use Nano Banana 2 by default, Nano Banana 2 Lite for economy, or Nano Banana
Pro for the premium and original source-model route.

```bash
npm run format:skai-image -- check --format=passport-click
npm run format:skai-image -- init --format=passport-click --run=<id> --input=<absolute-image-path>
npm run format:skai-image -- validate --format=passport-click --run=<id>
npm run format:skai-image -- estimate --format=passport-click --run=<id>
npm run format:skai-image -- render --format=passport-click --run=<id> --approve-paid
npm run format:skai-image -- inspect --format=passport-click --run=<id>
npm run format:skai-image -- inspect --format=passport-click --run=<id> --visual-pass --review-notes="<specific observations>"
npm run format:skai-image -- finalize --format=passport-click --run=<id> --approve-final
```

Hard rules:

- Preserve the source person's recognizable identity.
- Keep the government portrait straight-on, centered, neutral, and subtly photogenic.
- Let the passport fill approximately 97-100% of the frame and crop beyond every edge.
- Require believable security printing, lamination, wear, dust, scratches, and slight physical distortion.
- Accumulate print, smartphone, screenshot, and repost degradation without turning it into a clean product photo.
- Validate before spending.
- Never generate without `--approve-paid`.
- Persist and resume the same prediction ID.
- Never exceed three attempts.
- View the actual output and record notes before `--approve-final`.
- 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.",
    "No Replicate proof generation was purchased for this package.",
    "The gathered source examples are the visual proof.",
    "Paid generation requires explicit approval and is capped at three attempts."
  ]
}
inputs.json
Open raw file ↗
{
  "required": [
    {
      "id": "photo",
      "type": "image",
      "formats": ["jpg", "png", "webp"],
      "minimumWidth": 512,
      "minimumHeight": 512,
      "maximumBytes": 26214400
    }
  ],
  "question": "Which portrait should I turn into a Passport Click?",
  "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"
  }
}
pipeline.json
Open raw file ↗
{
  "progress": "Prepare -> Validate -> Transform -> Inspect",
  "attemptCap": 3,
  "stages": [
    {
      "id": "prepare",
      "output": "A run pinned to the source portrait, exact gathered prompt, and chosen Nano Banana route.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "validate",
      "output": "The portrait and complete provider contract checked locally.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "transform",
      "output": "One extreme-close-up passport image from the selected Replicate model.",
      "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/p/DbLeMIjissA/",
    "resourceUrl": "https://docs.google.com/document/d/1nK1PPXRkHCY_qlNxf7ryFSaJ5qhuHsFzB0xcVdFhorE/edit",
    "guide": "assets/source/guide.pdf",
    "sourceCover": "assets/source/source-cover.jpg",
    "exampleOutput": "assets/source/example-output.jpg",
    "hero": "assets/source/hero-with-reference.jpg",
    "referenceInput": "assets/source/reference-input.jpg",
    "carouselExamples": [
      "assets/source/example-output.jpg",
      "assets/source/example-02.jpg",
      "assets/source/example-03.jpg",
      "assets/source/example-04.jpg",
      "assets/source/example-05.jpg",
      "assets/source/example-06.jpg"
    ],
    "promptPath": "prompts/transform.txt",
    "verification": "The exact prompt, negative prompt, Nano Banana Pro label, guide, and six output examples were gathered through the creator's Instagram comment and DM flow and visually checked. The reference fixture is cropped directly from the creator's matching before inset; no provider generation was run."
  },
  "fixture": {
    "path": "assets/source/reference-input.jpg",
    "purpose": "Creator-provided selfie inset used for local validation, hero comparison, and free smoke input only; no provider call was made."
  }
}
quality.json
Open raw file ↗
{
  "automatic": [
    "Exactly 1 decodable JPG, PNG, or WebP output",
    "At least 720x960 pixels",
    "Aspect ratio within 0.02 of 3:4",
    "At least 50 KB"
  ],
  "visual": [
    "The source person's identity remains recognizable inside a neutral, straight-on government portrait",
    "The passport portrait is subtly photogenic without beauty-filter skin or a changed identity",
    "The document dominates roughly 97-100% of the frame and extends beyond the image edges",
    "Lamination, holograms, security printing, scratches, dust, warping, and wear feel physically believable",
    "JPEG damage, print grain, scanner softness, moire, and repost compression accumulate naturally instead of reading as a clean product photo"
  ],
  "finalization": {
    "automaticPassRequired": true,
    "visualPassRequired": true,
    "reviewNotesRequired": true,
    "explicitApprovalFlag": "--approve-final"
  }
}
goldens.json
Open raw file ↗
{
  "purpose": "Judge recognizable identity, a surprisingly photogenic government portrait, extreme close-up framing, believable document wear, and accumulated smartphone/social compression against six gathered examples.",
  "examples": [
    {
      "id": "dominican-passport",
      "title": "The passport photo becomes the whole story",
      "imagePath": "assets/source/hero-with-reference.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The source selfie remains recognizable inside a neutral government portrait",
        "The cropped document, print texture, holograms, and imperfect phone capture make the image feel casually real"
      ]
    },
    {
      "id": "brazilian-passport",
      "title": "A clean portrait survives a worn document",
      "imagePath": "assets/source/example-02.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The face stays recognizable while becoming unusually polished for an ID photo",
        "Creases, lamination, printed security detail, and tight framing keep the passport believable"
      ]
    },
    {
      "id": "european-passport",
      "title": "Low-fi printing keeps beauty believable",
      "imagePath": "assets/source/example-03.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The neutral expression and straight-on crop read as a real government portrait",
        "Washed color, soft detail, paper wear, and compression prevent a studio-photo finish"
      ]
    },
    {
      "id": "georgia-passport",
      "title": "The same recipe works across another face",
      "imagePath": "assets/source/example-04.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The identity is preserved without turning the subject into a different person",
        "Machine-readable typography and handheld perspective support the spontaneous repost aesthetic"
      ]
    },
    {
      "id": "jamaican-passport",
      "title": "Print artifacts make the portrait feel issued",
      "imagePath": "assets/source/example-05.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The portrait remains attractive without losing the neutral passport-photo posture",
        "Halftone texture, security patterns, glare, and document wear feel physically integrated"
      ]
    },
    {
      "id": "united-states-passport",
      "title": "An aggressive crop creates the social hook",
      "imagePath": "assets/source/example-06.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The passport extends beyond the frame so the portrait immediately dominates",
        "Visible compression and imperfect material detail make the image feel screenshotted and reposted"
      ]
    }
  ]
}
format.json
Open raw file ↗
{
  "id": "passport-click",
  "version": "1.0.0",
  "title": "Passport Click",
  "description": "Turn one portrait into an extreme close-up smartphone photo of a believable passport whose unexpectedly photogenic ID picture becomes the entire story.",
  "status": "agent-ready",
  "owner": "Wiggly Studio",
  "source": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/p/DbLeMIjissA/",
    "resourceUrl": "https://docs.google.com/document/d/1nK1PPXRkHCY_qlNxf7ryFSaJ5qhuHsFzB0xcVdFhorE/edit",
    "ctaKeyword": "AI",
    "modelShown": "Nano Banana Pro"
  },
  "outputs": [
    "1 extreme-close-up passport image",
    "state.json with model and prediction provenance",
    "quality-report.json with automatic and visual inspection"
  ]
}
kit.package.json
Open raw file ↗
{
  "name": "wiggly-passport-click-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=passport-click && node kit-smoke.mjs"
  },
  "dependencies": {
    "image-size": "2.0.2",
    "replicate": "1.4.0",
    "tsx": "4.20.6"
  }
}
runtime.json
Open raw file ↗
{
  "slug": "passport-click",
  "version": "1.0.0",
  "promptPath": "prompts/transform.txt",
  "input": {
    "mode": "image",
    "formats": ["jpg", "png", "webp"],
    "minimumWidth": 512,
    "minimumHeight": 512,
    "maximumBytes": 26214400
  },
  "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 and source model",
      "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/example-output.jpg",
  "minimumOutputWidth": 720,
  "minimumOutputHeight": 960,
  "minimumOutputBytes": 51200,
  "manualReview": [
    "recognizable subject identity",
    "neutral but unusually photogenic government portrait",
    "extreme close-up passport framing",
    "believable document wear and security detail",
    "accumulated print, smartphone, and social compression"
  ]
}
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 transformCurrent Replicate model rate · usually under 2 min
Inspect + finalizeFree · about 1 min

One Replicate image charge and usually 2-4 min

You provide

One JPEG, PNG, or WebP portrait at least 512px on both axes · A Replicate API token only when generation is approved

Output

One inspected Passport Click image plus prediction and quality provenance