Curated Formatv1.0.0

Doodle Art

Turn one photograph into a minimalist hand-drawn doodle with wobbly black brush lines and playful simplicity.

By Wiggly Studio · Updated July 2026

Fashion portrait: Turn neon street style into a playful sketchReference for Turn neon street style into a playful sketch

Shared recipe family

One family. 31 recipes.

Doodle Art 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.
  • The creator guide labels its examples GPT Image 2. That remains source provenance; the packaged Replicate runtime uses Nano Banana 2 by default, Lite for economy, and Pro for premium.
  • No proof generation was purchased 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 5 viewable asset references below. Reference media teaches the recipe; it is not a new result for your input.

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.

Recipe reference

Recipe reference

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

What stays consistent

  • The main subject and recognizable identity
  • The original pose, composition, and visual relationship
  • The most important clothing, accessories, and props
  • The source image's playful character

What you bring

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

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

Fashion portrait: Turn neon street style into a playful sketchReference for Turn neon street style into a playful sketch

Example 01 · Fashion portrait

Turn neon street style into a playful sketch

Open finished ad
Character portrait: Let one accessory anchor the doodleReference for Let one accessory anchor the doodle

Example 02 · Character portrait

Let one accessory anchor the doodle

Open finished ad
Playful portrait: Reduce the frame without losing the personalityReference for Reduce the frame without losing the personality

Example 03 · Playful portrait

Reduce the frame without losing the personality

Open finished ad
Couple portrait: Keep two people readable with almost no detailReference for Keep two people readable with almost no detail

Example 04 · Couple portrait

Keep two people readable with almost no detail

Open finished ad
Lifestyle portrait: Make one candid prop the visual hookReference for Make one candid prop the visual hook

Example 05 · Lifestyle portrait

Make one candid prop the visual hook

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 photo and prompt contract checked locally.

  3. Step 03 · approval · provider

    Transform

    One Doodle Art illustration 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 subject and composition preservation, handmade brush-pen character, playful simplification, white-background discipline, and clean doodle readability.

The Instagram DM delivered the public Google Doc with the exact GPT Image 2 prompt. The original eight-slide carousel supplied its cover and five native output examples; two promotional slides were omitted.

The creator did not publish the original input photos. The packaged top-right reference insets are photorealistic reconstructions made from the five native doodles with Codex's built-in image generator. They are comparison stand-ins, not creator assets, and used no Replicate credits.

Saved reference

Neon Fashion Doodle

  • The folded-arm pose, sunglasses, striped sweater, lime hair, and jewelry remain readable
  • Bold black brush-pen contours simplify the fashion portrait without losing its attitude
  • Sparse color accents pop against a clean white page

Saved reference

Blue Glasses Crop

  • The extreme right-edge crop, blue hair, and oversized glasses survive the transformation
  • Wobbly outlines and crayon-like color feel handmade rather than vector-perfect
  • The broad white negative space stays part of the composition

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, JPEG, PNG, or WebP output
  • At least 640x800 pixels
  • Aspect ratio matches the selected route within 0.02
  • At least 50 KB
Visual · 5 checks
  • The main subject, pose, composition, and key details remain recognizable
  • Simple black brush-pen outlines feel handmade, slightly wobbly, and intentionally imperfect
  • Complex details reduce into cute, childlike shapes without flattening the subject beyond recognition
  • The background stays clean white and the linework remains minimal
  • The illustration feels playful and polished without warped anatomy, stray text, logos, or watermarks
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 Doodle Art Format

This runnable Repo preserves the exact gathered prompt, source notes, original
carousel cover, and five native SKAI examples. It uses the shared Wiggly image
runner so validation, paid approval, retry caps, and visual finalization stay
explicit.

Run from `v3`:

```bash
npm install
npm run format:skai-image -- check --format=doodle-art
npm run format:skai-image -- smoke --format=doodle-art
npm run format:skai-image -- init --format=doodle-art --run=my-photo --input=/absolute/path/to/photo.jpg
npm run format:skai-image -- validate --format=doodle-art --run=my-photo
npm run format:skai-image -- estimate --format=doodle-art --run=my-photo
```

Generation requires `REPLICATE_API_TOKEN` and explicit approval:

```bash
npm run format:skai-image -- render --format=doodle-art --run=my-photo --approve-paid
```

No Replicate proof call was made while packaging this Repo.

Model routes:

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

The creator guide labels its examples as GPT Image 2. That remains source
provenance; the runnable kit uses Replicate-hosted Nano Banana 2 by default,
Lite for economy, and Pro for premium.

The creator did not publish the original input photos. The top-right comparison
insets are documented photorealistic reconstructions made with Codex's built-in
image generator. They are visual stand-ins, never represented as creator assets.
SKILL.md
Open raw file ↗
---
name: wiggly-doodle-art
description: Apply the exact gathered SKAI Doodle Art prompt to one portrait.
---

# Doodle Art

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

Ask one short question:

> Which photo should I turn into Doodle Art?

Then run:

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

Hard rules:

- 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.
- Treat GPT Image 2 as creator provenance, not as the packaged Replicate route.
- Validate before spending 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 creator guide labels its examples GPT Image 2. That remains source provenance; the packaged Replicate runtime uses Nano Banana 2 by default, Lite for economy, and Pro for premium.",
    "No proof generation was purchased 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": "photo",
      "type": "image",
      "formats": ["jpg", "png", "webp"],
      "minimumWidth": 512,
      "minimumHeight": 512,
      "maximumBytes": 26214400
    }
  ],
  "question": "Which photo should I turn into Doodle Art?",
  "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",
    "creatorShown": "GPT Image 2"
  }
}
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 photo and prompt contract checked locally.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "transform",
      "output": "One Doodle Art illustration 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/DbD26niikqG/",
    "resourceTitle": "Doodle Art Prompt",
    "guide": "assets/source/guide.txt",
    "cover": "assets/source/cover.jpg",
    "referenceInset": "assets/source/neon-fashion-reference.jpg",
    "verification": "The Instagram DM delivered the public Google Doc with the exact GPT Image 2 prompt. The original eight-slide carousel supplied its cover and five native output examples; two promotional slides were omitted.",
    "referenceNote": "The creator did not publish the original input photos. The packaged top-right reference insets are photorealistic reconstructions made from the five native doodles with Codex's built-in image generator. They are comparison stand-ins, not creator assets, and used no Replicate credits."
  },
  "examples": [
    {
      "id": "neon-fashion",
      "path": "assets/source/neon-fashion-doodle.jpg",
      "referencePath": "assets/source/neon-fashion-reference.jpg",
      "referenceType": "reconstructed"
    },
    {
      "id": "blue-glasses",
      "path": "assets/source/blue-glasses-doodle.jpg",
      "referencePath": "assets/source/blue-glasses-reference.jpg",
      "referenceType": "reconstructed"
    },
    {
      "id": "star-sticker",
      "path": "assets/source/star-sticker-doodle.jpg",
      "referencePath": "assets/source/star-sticker-reference.jpg",
      "referenceType": "reconstructed"
    },
    {
      "id": "couple",
      "path": "assets/source/couple-doodle.jpg",
      "referencePath": "assets/source/couple-reference.jpg",
      "referenceType": "reconstructed"
    },
    {
      "id": "popsicle",
      "path": "assets/source/popsicle-doodle.jpg",
      "referencePath": "assets/source/popsicle-reference.jpg",
      "referenceType": "reconstructed"
    }
  ]
}
quality.json
Open raw file ↗
{
  "automatic": [
    "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 main subject, pose, composition, and key details remain recognizable",
    "Simple black brush-pen outlines feel handmade, slightly wobbly, and intentionally imperfect",
    "Complex details reduce into cute, childlike shapes without flattening the subject beyond recognition",
    "The background stays clean white and the linework remains minimal",
    "The illustration feels playful and polished without warped anatomy, stray text, logos, or watermarks"
  ],
  "finalization": {
    "automaticPassRequired": true,
    "visualPassRequired": true,
    "reviewNotesRequired": true,
    "explicitApprovalFlag": "--approve-final"
  }
}
goldens.json
Open raw file ↗
{
  "purpose": "Judge subject and composition preservation, handmade brush-pen character, playful simplification, white-background discipline, and clean doodle readability.",
  "examples": [
    {
      "id": "neon-fashion",
      "title": "Neon Fashion Doodle",
      "imagePath": "assets/source/neon-fashion-doodle.jpg",
      "referencePath": "assets/source/neon-fashion-reference.jpg",
      "referenceType": "reconstructed",
      "model": "GPT Image 2",
      "whyItWorks": [
        "The folded-arm pose, sunglasses, striped sweater, lime hair, and jewelry remain readable",
        "Bold black brush-pen contours simplify the fashion portrait without losing its attitude",
        "Sparse color accents pop against a clean white page"
      ]
    },
    {
      "id": "blue-glasses",
      "title": "Blue Glasses Crop",
      "imagePath": "assets/source/blue-glasses-doodle.jpg",
      "referencePath": "assets/source/blue-glasses-reference.jpg",
      "referenceType": "reconstructed",
      "model": "GPT Image 2",
      "whyItWorks": [
        "The extreme right-edge crop, blue hair, and oversized glasses survive the transformation",
        "Wobbly outlines and crayon-like color feel handmade rather than vector-perfect",
        "The broad white negative space stays part of the composition"
      ]
    },
    {
      "id": "star-sticker",
      "title": "Star Sticker Portrait",
      "imagePath": "assets/source/star-sticker-doodle.jpg",
      "referencePath": "assets/source/star-sticker-reference.jpg",
      "referenceType": "reconstructed",
      "model": "GPT Image 2",
      "whyItWorks": [
        "The centered face, tousled hair, expression, and star-sticker pattern remain recognizable",
        "Minimal black linework reduces anatomy into playful childlike shapes",
        "Small color details keep the illustration lively without clutter"
      ]
    },
    {
      "id": "couple",
      "title": "Couple Doodle",
      "imagePath": "assets/source/couple-doodle.jpg",
      "referencePath": "assets/source/couple-reference.jpg",
      "referenceType": "reconstructed",
      "model": "GPT Image 2",
      "whyItWorks": [
        "Both people, the close crop, long hair, curls, and affectionate pose remain legible",
        "Simple brush lines turn a two-person portrait into one coherent sketch",
        "The red lip accent and tiny heart add warmth without overpowering the drawing"
      ]
    },
    {
      "id": "popsicle",
      "title": "Popsicle Reaction",
      "imagePath": "assets/source/popsicle-doodle.jpg",
      "referencePath": "assets/source/popsicle-reference.jpg",
      "referenceType": "reconstructed",
      "model": "GPT Image 2",
      "whyItWorks": [
        "The closed eyes, open-mouth reaction, earrings, jersey, hand, and popsicle remain clear",
        "Expressive black strokes exaggerate the moment without changing the composition",
        "One orange accent carries the entire playful color story"
      ]
    }
  ]
}
format.json
Open raw file ↗
{
  "id": "doodle-art",
  "version": "1.0.0",
  "title": "Doodle Art",
  "description": "Turn one photograph into a minimalist hand-drawn doodle with wobbly black brush-pen lines, playful simplification, and a clean white background.",
  "status": "agent-ready",
  "owner": "Wiggly Studio",
  "source": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/p/DbD26niikqG/",
    "resourceTitle": "Doodle Art Prompt",
    "resourceAccess": "Instagram DM to public Google Doc",
    "ctaKeyword": "AI",
    "modelShown": "GPT Image 2"
  },
  "outputs": [
    "1 inspected Doodle Art illustration",
    "state.json with model and prediction provenance",
    "quality-report.json with automatic and visual inspection"
  ]
}
kit.package.json
Open raw file ↗
{
  "name": "wiggly-doodle-art-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=doodle-art && node kit-smoke.mjs"
  },
  "dependencies": {
    "image-size": "2.0.2",
    "replicate": "1.4.0",
    "tsx": "4.20.6"
  }
}
runtime.json
Open raw file ↗
{
  "slug": "doodle-art",
  "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"
    },
    "nano-banana-2": {
      "label": "Nano Banana 2",
      "lane": "default",
      "model": "google/nano-banana-2",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg",
      "resolution": "1K"
    },
    "nano-banana-pro": {
      "label": "Nano Banana Pro",
      "lane": "premium",
      "model": "google/nano-banana-pro",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg",
      "resolution": "1K"
    }
  },
  "expectedOutputs": 1,
  "maximumAttempts": 3,
  "smokeInputPath": "assets/source/neon-fashion-reference.jpg",
  "smokeExamplePath": "assets/source/neon-fashion-doodle.jpg",
  "minimumOutputWidth": 640,
  "minimumOutputHeight": 800,
  "minimumOutputBytes": 51200,
  "manualReview": [
    "the main subject, pose, composition, and recognizable details stay intact",
    "simple black brush-pen outlines feel slightly wobbly and handmade",
    "details reduce into cute, childlike shapes without losing the subject",
    "the background remains clean white with minimal linework",
    "the result feels playful and intentional without warped anatomy, stray text, or watermarks"
  ]
}
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 photograph at least 512px on both axes · A Replicate API token only when generation is approved

Output

One inspected 3:4 Doodle Art illustration plus prediction and quality provenance