Replicate
google/nano-banana-2-lite · google/nano-banana-2 · google/nano-banana-pro
Generate the approved media in this recipe.
REPLICATE_API_TOKENTurn one portrait into a warm, cinematic character made entirely from handcrafted felt.
By Wiggly Studio · Updated July 2026

Shared recipe family
Rag Doll 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 familyBefore you start
google/nano-banana-2-lite · google/nano-banana-2 · google/nano-banana-pro
Generate the approved media in this recipe.
REPLICATE_API_TOKENSetup, 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.
Included assets
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.

Prompt, model label, guide, and seven source examples were fetched through the creator's Instagram DM flow and visually checked.

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

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

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

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

Supplied creator reference—not a new Wiggly-generated result.
Examples
7 saved examples for this recipe—not 7 separate Repos. Each example keeps its original version and provenance.







From input to output
From the published pipeline.json. The agent follows the packaged runtime and its approval gates.
Step 01
A run pinned to the source portrait, exact gathered prompt, and chosen model route.
Step 02
The image and complete provider contract checked locally.
Step 03 · approval · provider
One handcrafted felt portrait from the selected Replicate model.
Step 04 · approval
Automatic file checks plus an actual visual review.
Proof & quality
Judge identity, full-frame felt conversion, handmade detail, anatomy, and warm cinematic finish against the gathered source examples.
Prompt, model label, guide, and seven source examples were fetched through the creator's Instagram DM flow and visually checked.
Saved reference
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.
Open the package
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.
# Wiggly Rag Doll Format This runnable Repo preserves the exact prompt and source examples gathered from @skaigenerated. It transforms one portrait into a handcrafted felt character through Replicate. Run from `v3`: ```bash npm install npm run format:skai-image -- smoke --format=rag-doll npm run format:skai-image -- init --format=rag-doll --run=my-rag-doll --input=/absolute/path/to/portrait.jpg npm run format:skai-image -- validate --format=rag-doll --run=my-rag-doll npm run format:skai-image -- estimate --format=rag-doll --run=my-rag-doll ``` Generation requires `REPLICATE_API_TOKEN` and explicit approval: ```bash npm run format:skai-image -- render --format=rag-doll --run=my-rag-doll --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` - Source/premium: `google/nano-banana-pro` No Replicate proof call was made while packaging this Repo. The seven included source examples and guide are the proof artifacts.
--- name: wiggly-rag-doll description: Transform one portrait into a handcrafted felt character using the exact gathered SKAI prompt. --- # Rag Doll Use the packaged runner and prompt. Do not call Replicate separately or create another render path. Ask one short question first: > Which photo should I turn into a handmade felt character? Use Nano Banana 2 by default, Nano Banana 2 Lite for economy, or Nano Banana Pro only when the user requests the source/premium route. ```bash npm run format:skai-image -- check --format=rag-doll npm run format:skai-image -- init --format=rag-doll --run=<id> --input=<absolute-image-path> npm run format:skai-image -- validate --format=rag-doll --run=<id> npm run format:skai-image -- estimate --format=rag-doll --run=<id> npm run format:skai-image -- render --format=rag-doll --run=<id> --approve-paid npm run format:skai-image -- inspect --format=rag-doll --run=<id> npm run format:skai-image -- inspect --format=rag-doll --run=<id> --visual-pass --review-notes="<specific observations>" npm run format:skai-image -- finalize --format=rag-doll --run=<id> --approve-final ``` Hard rules: - Preserve the subject, pose, expression, clothing, and composition. - Transform every visible material into wool felt. - 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`.
{
"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 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."
]
}
{
"required": [
{
"id": "portrait",
"type": "image",
"formats": ["jpg", "png", "webp"],
"minimumWidth": 512,
"minimumHeight": 512,
"maximumBytes": 26214400
}
],
"question": "Which photo should I turn into a handmade felt character?",
"defaults": {
"model": "nano-banana-2",
"aspectRatio": "3:4",
"outputCount": 1
},
"modelRoutes": {
"economy": "google/nano-banana-2-lite",
"default": "google/nano-banana-2",
"sourceModel": "google/nano-banana-pro"
}
}
{
"progress": "Prepare -> Validate -> Transform -> Inspect",
"attemptCap": 3,
"stages": [
{
"id": "prepare",
"output": "A run pinned to the source portrait, exact gathered prompt, and chosen model route.",
"paid": false,
"approvalRequired": false
},
{
"id": "validate",
"output": "The image and complete provider contract checked locally.",
"paid": false,
"approvalRequired": false
},
{
"id": "transform",
"output": "One handcrafted felt portrait from the selected Replicate model.",
"paid": true,
"approvalRequired": true
},
{
"id": "inspect",
"output": "Automatic file checks plus an actual visual review.",
"paid": false,
"approvalRequired": true
}
]
}
{
"sourceReference": {
"creator": "@skaigenerated",
"postUrl": "https://www.instagram.com/p/Da-Wi8hilw8/",
"resourceUrl": "https://docs.google.com/document/d/1_msF6GYiCBuk8pvkcBZg_U4ad--GY7Muo0n05Ky4VPU/edit",
"guide": "assets/source/guide.pdf",
"exampleOutput": "assets/source/example-output.png",
"carouselExamples": [
"assets/source/carousel-01.jpg",
"assets/source/carousel-02.jpg",
"assets/source/carousel-03.jpg",
"assets/source/carousel-04.jpg",
"assets/source/carousel-05.jpg",
"assets/source/carousel-06.jpg",
"assets/source/carousel-07.jpg"
],
"promptPath": "prompts/transform.txt",
"verification": "Prompt, model label, guide, and seven source examples were fetched through the creator's Instagram DM flow and visually checked."
},
"fixture": {
"path": "fixtures/input.jpg",
"purpose": "Local validation and free smoke only; no provider call."
}
}
{
"automatic": [
"Exactly 1 decodable JPG, PNG, or WebP output",
"At least 640x800 pixels",
"Aspect ratio within 0.02 of the selected route",
"At least 50 KB"
],
"visual": [
"The same person, pose, expression, clothing, and composition remain recognizable",
"Skin, hair, clothing, shoes, and all visible details read as wool felt",
"Fibers, stitching, embroidery, fabric layers, and soft stuffing are coherent",
"Face, hands, and body anatomy remain believable",
"Warm cinematic lighting and shallow depth of field support the handcrafted look"
],
"finalization": {
"automaticPassRequired": true,
"visualPassRequired": true,
"reviewNotesRequired": true,
"explicitApprovalFlag": "--approve-final"
}
}
{
"purpose": "Judge identity, full-frame felt conversion, handmade detail, anatomy, and warm cinematic finish against the gathered source examples.",
"examples": [
{
"id": "skai-rag-doll",
"type": "source-reference",
"title": "Handcrafted felt source proof",
"imagePath": "assets/source/example-output.png",
"guidePath": "assets/source/guide.pdf",
"sourceUrl": "https://www.instagram.com/p/Da-Wi8hilw8/",
"model": "Nano Banana Pro",
"whyItWorks": [
"The person's identity, pose, expression, clothing, and accessories stay recognizable",
"Skin, hair, clothing, shoes, and surroundings all read as wool felt",
"Visible fibers, stitching, and layered fabric create a handmade finish",
"Warm light and shallow depth of field keep the result cinematic"
]
}
]
}
{
"id": "rag-doll",
"version": "1.0.0",
"title": "Rag Doll",
"description": "Turn one portrait into a warm, cinematic character made entirely from handcrafted felt.",
"status": "agent-ready",
"owner": "Wiggly Studio",
"source": {
"creator": "@skaigenerated",
"postUrl": "https://www.instagram.com/p/Da-Wi8hilw8/",
"resourceUrl": "https://docs.google.com/document/d/1_msF6GYiCBuk8pvkcBZg_U4ad--GY7Muo0n05Ky4VPU/edit",
"ctaKeyword": "AI",
"modelShown": "Nano Banana Pro"
},
"outputs": [
"1 portrait image",
"state.json with model and prediction provenance",
"quality-report.json with automatic and visual inspection"
]
}
{
"name": "wiggly-rag-doll-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=rag-doll && node kit-smoke.mjs"
},
"dependencies": {
"image-size": "2.0.2",
"replicate": "1.4.0",
"tsx": "4.20.6"
}
}
{
"slug": "rag-doll",
"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": "source model",
"model": "google/nano-banana-pro",
"family": "nano-banana",
"aspectRatio": "3:4",
"outputFormat": "jpg",
"resolution": "1K"
}
},
"expectedOutputs": 1,
"maximumAttempts": 3,
"smokeInputPath": "fixtures/input.jpg",
"smokeExamplePath": "assets/source/example-output.png",
"minimumOutputWidth": 640,
"minimumOutputHeight": 800,
"minimumOutputBytes": 51200,
"manualReview": [
"subject identity, pose, expression, and clothing",
"full-frame felt conversion",
"wool fibers, stitching, embroidery, and fabric layering",
"face, hand, and body anatomy",
"warm cinematic lighting and handcrafted finish"
]
}
Run it with a coding agent
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
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 3:4 felt portrait plus prediction and quality provenance