Curated Formatv1.0.0

80s Toon

Turn one photo into a bold retro American cartoon while preserving the exact people, identity, pose, clothing, background, framing, and visible details.

By Wiggly Studio · Updated July 2026

Retro cartoon transformation: Make the transformation obvious in one glance

Shared recipe family

One family. 31 recipes.

80s Toon 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 provider prediction; the estimate command prints the selected route before approval

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 SKAI source recommends Nano Banana Pro; Wiggly also exposes cheaper Nano Banana 2 Lite and Nano Banana 2 routes.
  • 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

Slides 1 through 8 each already contain exactly one original-photo inset, so Discover adds no second reference overlay. CTA slides 9 and 10 are intentionally excluded.

Local smoke-test input

Local smoke-test input

Slides 1 through 8 each already contain exactly one original-photo inset, so Discover adds no second reference overlay. CTA slides 9 and 10 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 exact people, facial identity, pose, expression, clothing, accessories, colors, and proportions
  • The original background, lighting, framing, perspective, camera angle, and composition
  • One photographic 3:4 source image as the reusable input

What you bring

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

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

Retro cartoon transformation: Make the transformation obvious in one glance

Example 01 · Retro cartoon transformation

Make the transformation obvious in one glance

Open finished ad
SKAI source example: Keep the face, ink, and relaxed pose

Example 02 · SKAI source example

Keep the face, ink, and relaxed pose

Open finished ad
SKAI source example: Carry a beach snapshot into animation

Example 03 · SKAI source example

Carry a beach snapshot into animation

Open finished ad
SKAI source example: Preserve a full-body travel moment

Example 04 · SKAI source example

Preserve a full-body travel moment

Open finished ad
SKAI source example: Turn a colorful market into a cartoon set

Example 05 · SKAI source example

Turn a colorful market into a cartoon set

Open finished ad
SKAI source example: Keep a mirror selfie unmistakably personal

Example 06 · SKAI source example

Keep a mirror selfie unmistakably personal

Open finished ad
SKAI source example: Hold onto the gesture and bouquet

Example 07 · SKAI source example

Hold onto the gesture and bouquet

Open finished ad
SKAI source example: Let the flowers carry the frame

Example 08 · SKAI source example

Let the flowers carry the frame

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 photo, exact gathered prompt, and selected model route.

  2. Step 02

    Validate

    The 3:4 photo and prompt contract checked locally.

  3. Step 03 · approval · provider

    Transform

    One retro cartoon image 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 identity, pose, clothing, scene, and composition preservation under a clean 1960s–1980s American cartoon treatment with bold outlines, flat color, simple cel shading, and vintage texture.

The Instagram mobile DM delivered and opened the 80s Toon Prompt guide, which supplied the exact prompt. The Instagram carousel supplied one native title cover and seven 3:4 transformation proofs.

Slides 1 through 8 each already contain exactly one original-photo inset, so Discover adds no second reference overlay. CTA slides 9 and 10 are intentionally excluded.

Saved reference

Make the transformation obvious in one glance

  • The native title cover names the visual recipe immediately
  • Both people and the gaming scene remain recognizable
  • The original-photo inset makes preservation easy to inspect

Saved reference

Keep the face, ink, and relaxed pose

  • The face, mustache, cap, tattoos, and seated posture survive
  • Architectural depth remains intact
  • Bold linework replaces realism without redesigning the subject

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
  • Exactly 1 decodable JPG, JPEG, PNG, or WebP output
  • At least 1080x1440 pixels
  • Aspect ratio matches the selected route within 0.02
  • At least 50 KB
Visual · 5 checks
  • The exact people, facial identity, pose, body language, expression, clothing, accessories, background, framing, perspective, and composition remain recognizable
  • Thick black outlines, flat solid colors, minimal cel shading, and clean hand-drawn linework replace realism
  • Slightly oversized heads, elastic limbs, classic oval eyes, rounded hands, and simple geometry feel playful but preserve the source
  • Subtle grain, slightly desaturated cel tones, and soft print texture create an authentic retro animation finish
  • The image avoids realism, 3D rendering, anime, and modern glossy cartoon styling
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 80s Toon Format

This runnable Repo preserves the exact prompt delivered by @skaigenerated, its native title cover, and seven source transformation proofs. Every saved proof already contains 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=80s-toon
npm run format:skai-image -- smoke --format=80s-toon
npm run format:skai-image -- init --format=80s-toon --run=my-toon --input=/absolute/path/to/3-by-4-photo.jpg
npm run format:skai-image -- validate --format=80s-toon --run=my-toon
npm run format:skai-image -- estimate --format=80s-toon --run=my-toon
```

The input must already be 3:4. Add `--model=nano-banana-2-lite` for economy or `--model=nano-banana-pro` for the source-recommended 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=80s-toon --run=my-toon --approve-paid
```

No Replicate proof call was made while packaging this Repo.

- Economy: `google/nano-banana-2-lite`
- Default: `google/nano-banana-2`
- Source-recommended: `google/nano-banana-pro`

The estimate is a packaged planning value, so verify Replicate's current rate immediately before paid approval.
SKILL.md
Open raw file ↗
---
name: wiggly-80s-toon
description: Turn one 3:4 photo into a retro American cartoon with the exact gathered SKAI prompt.
---

# 80s Toon

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

From the extracted kit's `v3` directory:

```bash
npm install
npm run format:skai-image -- check --format=80s-toon
npm run format:skai-image -- smoke --format=80s-toon
```

Ask one short question:

> Which 3:4 photo should I turn into an 80s Toon, and should I use Nano Banana 2 (default), Lite (economy), or Pro (source-recommended)?

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 the source-recommended route:

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

Stop after `estimate` and ask the user to approve the paid prediction. Only after explicit approval should you supply `--approve-paid`:

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

Hard rules:

- Preserve the exact people, identity, hairstyle, clothing, accessories, colors, proportions, pose, body language, expression, lighting, background, framing, perspective, and composition.
- Use thick bold black outlines, flat solid colors, minimal cel shading, clean geometric shapes, and smooth hand-drawn 2D linework.
- Keep the playful vintage anatomy and classic oval eyes without redesigning or replacing the subject.
- Use slightly desaturated old-cel tones, subtle film grain, and soft retro print texture.
- Avoid realism, 3D rendering, anime, and modern glossy cartoon styling.
- 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 the source-recommended route.
- 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.
- Return the finished image and `quality-report.json` to the user after finalization.
- 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 SKAI source recommends Nano Banana Pro; Wiggly also exposes cheaper Nano Banana 2 Lite and Nano Banana 2 routes.",
    "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 photo should I turn into an 80s Toon, and should I use Nano Banana 2 (default), Lite (economy), or Pro (source-recommended)?",
  "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": "Nano Banana Pro"
}
pipeline.json
Open raw file ↗
{
  "progress": "Prepare -> Validate -> Transform -> Inspect",
  "attemptCap": 3,
  "stages": [
    { "id": "prepare", "output": "One run pinned to the photo, exact gathered prompt, and selected model route.", "paid": false, "approvalRequired": false },
    { "id": "validate", "output": "The 3:4 photo and prompt contract checked locally.", "paid": false, "approvalRequired": false },
    { "id": "transform", "output": "One retro cartoon image 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/p/Dbd1wuqiv-k/",
    "guide": "assets/source/guide.txt",
    "guideTitle": "80s Toon Prompt",
    "guideAccess": "Delivered and opened from Instagram mobile DM on 2026-07-31.",
    "nativeHero": "assets/source/slide-01.jpg",
    "cleanGuideExample": "assets/source/slide-02.jpg",
    "smokeInput": "assets/source/slide-02.jpg",
    "modelShown": "Nano Banana Pro",
    "commentsAtCollection": 306,
    "collectedAt": "2026-07-31",
    "verification": "The Instagram mobile DM delivered and opened the 80s Toon Prompt guide, which supplied the exact prompt. The Instagram carousel supplied one native title cover and seven 3:4 transformation proofs.",
    "referenceNote": "Slides 1 through 8 each already contain exactly one original-photo inset, so Discover adds no second reference overlay. CTA slides 9 and 10 are intentionally excluded."
  },
  "examples": [
    { "id": "native-hero", "path": "assets/source/slide-01.jpg", "provenance": "@skaigenerated carousel title cover" },
    { "id": "stone-steps", "path": "assets/source/slide-02.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "beach-toast", "path": "assets/source/slide-03.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "tram", "path": "assets/source/slide-04.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "fruit-market", "path": "assets/source/slide-05.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "mirror-selfie", "path": "assets/source/slide-06.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "car-bouquet", "path": "assets/source/slide-07.jpg", "provenance": "@skaigenerated carousel" },
    { "id": "flower-market", "path": "assets/source/slide-08.jpg", "provenance": "@skaigenerated carousel" }
  ],
  "excluded": [
    { "path": "Instagram carousel slide 9", "reason": "Comment-to-DM CTA, not format proof" },
    { "path": "Instagram carousel slide 10", "reason": "Follow CTA, not format proof" }
  ]
}
quality.json
Open raw file ↗
{
  "automatic": ["The source input is 3:4 within 0.02", "Exactly 1 decodable JPG, JPEG, PNG, or WebP output", "At least 1080x1440 pixels", "Aspect ratio matches the selected route within 0.02", "At least 50 KB"],
  "visual": ["The exact people, facial identity, pose, body language, expression, clothing, accessories, background, framing, perspective, and composition remain recognizable", "Thick black outlines, flat solid colors, minimal cel shading, and clean hand-drawn linework replace realism", "Slightly oversized heads, elastic limbs, classic oval eyes, rounded hands, and simple geometry feel playful but preserve the source", "Subtle grain, slightly desaturated cel tones, and soft print texture create an authentic retro animation finish", "The image avoids realism, 3D rendering, anime, and modern glossy cartoon styling"],
  "finalization": { "automaticPassRequired": true, "visualPassRequired": true, "reviewNotesRequired": true, "explicitApprovalFlag": "--approve-final" }
}
goldens.json
Open raw file ↗
{
  "purpose": "Judge identity, pose, clothing, scene, and composition preservation under a clean 1960s–1980s American cartoon treatment with bold outlines, flat color, simple cel shading, and vintage texture.",
  "examples": [
    {
      "id": "native-hero",
      "title": "Make the transformation obvious in one glance",
      "imagePath": "assets/source/slide-01.jpg",
      "model": "Nano Banana Pro · SKAI source",
      "whyItWorks": ["The native title cover names the visual recipe immediately", "Both people and the gaming scene remain recognizable", "The original-photo inset makes preservation easy to inspect"]
    },
    {
      "id": "stone-steps",
      "title": "Keep the face, ink, and relaxed pose",
      "imagePath": "assets/source/slide-02.jpg",
      "model": "Nano Banana Pro · SKAI source",
      "whyItWorks": ["The face, mustache, cap, tattoos, and seated posture survive", "Architectural depth remains intact", "Bold linework replaces realism without redesigning the subject"]
    },
    {
      "id": "beach-toast",
      "title": "Carry a beach snapshot into animation",
      "imagePath": "assets/source/slide-03.jpg",
      "model": "Nano Banana Pro · SKAI source",
      "whyItWorks": ["The hat, braids, drink, hand gesture, and outfit remain readable", "Flat colors simplify the image without losing the beach setting", "The expression keeps its playful energy"]
    },
    {
      "id": "tram",
      "title": "Preserve a full-body travel moment",
      "imagePath": "assets/source/slide-04.jpg",
      "model": "Nano Banana Pro · SKAI source",
      "whyItWorks": ["The yellow top, glasses, bag, pose, and tram interior all survive", "The full-body framing stays unchanged", "Clean geometry makes a busy interior feel coherent"]
    },
    {
      "id": "fruit-market",
      "title": "Turn a colorful market into a cartoon set",
      "imagePath": "assets/source/slide-05.jpg",
      "model": "Nano Banana Pro · SKAI source",
      "whyItWorks": ["The pose, expression, outfit, bag, and fruit displays remain recognizable", "Dense background detail is simplified without becoming empty", "The strong color blocking suits the source scene"]
    },
    {
      "id": "mirror-selfie",
      "title": "Keep a mirror selfie unmistakably personal",
      "imagePath": "assets/source/slide-06.jpg",
      "model": "Nano Banana Pro · SKAI source",
      "whyItWorks": ["The layered red outfit, phone pose, tattoos, and room remain intact", "The silhouette stays faithful to the source", "Simple cel shading retains depth without adding 3D polish"]
    },
    {
      "id": "car-bouquet",
      "title": "Hold onto the gesture and bouquet",
      "imagePath": "assets/source/slide-07.jpg",
      "model": "Nano Banana Pro · SKAI source",
      "whyItWorks": ["The hand-to-forehead gesture, flowers, lace top, and car seat survive", "The face remains recognizable under oversized cartoon eyes", "Muted color and linework keep the vintage finish consistent"]
    },
    {
      "id": "flower-market",
      "title": "Let the flowers carry the frame",
      "imagePath": "assets/source/slide-08.jpg",
      "model": "Nano Banana Pro · SKAI source",
      "whyItWorks": ["The striped shirt, bouquet, seated pose, and street setting remain clear", "The flowers retain enough detail to anchor the composition", "The expressive eyes add character without replacing the person"]
    }
  ]
}
format.json
Open raw file ↗
{
  "id": "80s-toon",
  "version": "1.0.0",
  "title": "80s Toon",
  "description": "Turn one photo into a bold retro American cartoon while preserving the exact people, pose, clothing, background, framing, and visible details.",
  "status": "agent-ready",
  "owner": "Wiggly Studio",
  "source": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/p/Dbd1wuqiv-k/",
    "ctaKeyword": "AI",
    "modelShown": "Nano Banana Pro"
  },
  "outputs": [
    "1 inspected 3:4 retro cartoon image",
    "state.json with model and prediction provenance",
    "quality-report.json with automatic and visual inspection"
  ]
}
kit.package.json
Open raw file ↗
{
  "name": "wiggly-80s-toon-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=80s-toon && node kit-smoke.mjs"
  },
  "dependencies": { "image-size": "2.0.2", "replicate": "1.4.0", "tsx": "4.20.6" }
}
runtime.json
Open raw file ↗
{
  "slug": "80s-toon",
  "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/slide-02.jpg",
  "smokeExamplePath": "assets/source/slide-02.jpg",
  "minimumOutputWidth": 1080,
  "minimumOutputHeight": 1440,
  "minimumOutputBytes": 51200,
  "manualReview": [
    "the exact people, identity, pose, body language, expression, clothing, accessories, background, framing, perspective, and composition remain recognizable",
    "the result uses thick black outlines, flat solid colors, minimal cel-style shading, and clean hand-drawn 2D linework",
    "slightly oversized heads, elastic limbs, classic oval eyes, rounded hands, and geometric shapes feel playful without replacing the source",
    "subtle grain, desaturated cel tones, and soft print texture create a vintage 1960s–1980s American animation finish",
    "the image avoids realism, 3D rendering, anime, and modern glossy cartoon styling"
  ]
}
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 selected Replicate route · usually under 2 min
Inspect + finalizeFree · about 1 min

One provider prediction; the estimate command prints the selected route before approval

You provide

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

Output

One inspected 3:4 retro cartoon image plus prediction and quality provenance