Curated Formatv1.0.0

Fake It Till You Make It

Turn one portrait into eight believable lifestyle posts that look like a full social calendar rather than an AI demo.

By Wiggly Studio · Updated July 2026

Lifestyle transformation: Make the mirror selfie look casually expensiveReference for Make the mirror selfie look casually expensive

Shared recipe family

One family. 31 recipes.

Fake It Till You Make It 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 prediction per selected scene; the complete set is eight predictions

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 proof generation was purchased for this package.
  • Each selected scene is one independent paid prediction.
  • The complete eight-image set therefore uses eight predictions.
  • Paid generation requires explicit approval and is capped at three attempts per scene.

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.

Sheet mask mirror

Sheet mask mirror

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

Luxury bathroom

Luxury bathroom

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

Shooting range

Shooting range

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

Yellow pirelli cap

Yellow pirelli cap

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

Tropical hat

Tropical hat

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

Nyc bench

Nyc bench

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

View all 8 asset references
Concrete cafe

Concrete cafe

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

Bed mask

Bed mask

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

What stays consistent

  • The reference person's recognizable identity
  • Natural smartphone or candid framing
  • Photographic skin, fabric, and prop detail
  • An unbothered social-post energy

What you bring

  • One JPEG, PNG, or WebP portrait at least 512px on both axes
  • One scene or the complete eight-image set
  • 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.

Lifestyle transformation: Make the mirror selfie look casually expensiveReference for Make the mirror selfie look casually expensive

Example 01 · Lifestyle transformation

Make the mirror selfie look casually expensive

Open finished ad
Streetwear mirror selfie: Layer the fit without losing the candidReference for Layer the fit without losing the candid

Example 02 · Streetwear mirror selfie

Layer the fit without losing the candid

Open finished ad
Private mirror selfie: Make the unbothered moment the postReference for Make the unbothered moment the post

Example 04 · Private mirror selfie

Make the unbothered moment the post

Open finished ad
Vacation selfie: Point the camera straight into summerReference for Point the camera straight into summer

Example 05 · Vacation selfie

Point the camera straight into summer

Open finished ad
Quiet café candid: Let the morning light do the flexingReference for Let the morning light do the flexing

Example 07 · Quiet café candid

Let the morning light do the flexing

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 portrait, selected lifestyle prompt, and model route.

  2. Step 02

    Validate

    The portrait and exact selected prompt checked locally.

  3. Step 03 · approval · provider

    Transform

    One selected scene per paid prediction; repeat only for approved variants.

  4. Step 04 · approval

    Inspect

    Automatic file checks plus an actual visual review for every scene.

Proof & quality

What a good result looks like.

Judge identity continuity, believable lifestyle styling, natural smartphone framing, prop geometry, and photographic realism across all eight gathered scenes.

The delivered Google Doc supplied Nano Banana Pro and eight exact prompts. The Instagram carousel supplied the eight matching source outputs.

The creator did not publish a separate original input, so the clean sheet-mask carousel scene is reused only as Wiggly's visual identity anchor.

Saved reference

Yellow Pirelli Cap Mirror Selfie

  • The bright shirt, cap embroidery, jewelry, and phone stay crisp
  • Flat daylight keeps the mirror selfie casual
  • The playful expression prevents the frame from feeling over-directed

Saved reference

Luxury Bathroom Streetwear

  • Layered streetwear remains readable inside the dark tiled room
  • The raised cocktail glass creates a convincing candid action
  • Warm hotel light balances the cool mirror reflection

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 per run
  • At least 640x800 pixels
  • Aspect ratio within 0.02 of 3:4
  • At least 50 KB
Visual · 5 checks
  • The reference identity remains recognizable unless the user explicitly requests a new subject
  • The selected scene matches its exact packaged prompt
  • Faces, hands, clothing, phones, glasses, and scene props have coherent geometry
  • The framing feels like a believable smartphone or candid lifestyle photograph
  • The result is photorealistic rather than CGI or illustration
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 Fake It Till You Make It Format

This runnable Repo preserves the eight exact prompts and eight native carousel
examples gathered from @skaigenerated. Each selected scene is one independent
Replicate prediction so cost and retries stay visible.

Run from `v3`:

```bash
npm install
npm run format:skai-image -- check --format=fake-it-till-you-make-it
npm run format:skai-image -- smoke --format=fake-it-till-you-make-it
npm run format:skai-image -- init --format=fake-it-till-you-make-it --run=my-selfie --variant=yellow-pirelli-cap --input=/absolute/path/to/portrait.jpg
npm run format:skai-image -- validate --format=fake-it-till-you-make-it --run=my-selfie
npm run format:skai-image -- estimate --format=fake-it-till-you-make-it --run=my-selfie
```

Generation requires `REPLICATE_API_TOKEN` and explicit approval:

```bash
npm run format:skai-image -- render --format=fake-it-till-you-make-it --run=my-selfie --approve-paid
```

Use one run per selected variant. A complete eight-image set uses eight paid
predictions. No Replicate proof call was made while packaging this Repo.

Model routes:

- Economy: `google/nano-banana-2-lite`
- Default: `google/nano-banana-2`
- Premium/source: `google/nano-banana-pro`
SKILL.md
Open raw file ↗
---
name: wiggly-fake-it-till-you-make-it
description: Turn one portrait into up to eight believable lifestyle posts using the exact gathered SKAI prompts.
---

# Fake It Till You Make It

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

Ask one short question at a time:

1. Which portrait should I use?
2. Do you want one scene or the complete eight-image set?

Variants:

`sheet-mask-mirror`, `luxury-bathroom`, `shooting-range`,
`yellow-pirelli-cap`, `tropical-hat`, `nyc-bench`, `concrete-cafe`,
`bed-mask`

For each selected variant, use a unique run id:

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

Hard rules:

- Preserve the reference identity unless the user explicitly requests a new subject.
- Keep the selected gathered prompt exact.
- State that one scene is one paid prediction; all eight means eight predictions.
- Validate every run before spending.
- Never generate without `--approve-paid`.
- Persist and resume each prediction id.
- Never exceed three attempts for any scene.
- View every output and record scene-specific 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.",
    "No proof generation was purchased for this package.",
    "Each selected scene is one independent paid prediction.",
    "The complete eight-image set therefore uses eight predictions.",
    "Paid generation requires explicit approval and is capped at three attempts per scene."
  ]
}
inputs.json
Open raw file ↗
{
  "required": [
    {
      "id": "portrait",
      "type": "image",
      "formats": ["jpg", "png", "webp"],
      "minimumWidth": 512,
      "minimumHeight": 512,
      "maximumBytes": 26214400
    }
  ],
  "question": "Which portrait should I use, and do you want one scene or the complete eight-image set?",
  "variants": [
    "sheet-mask-mirror",
    "luxury-bathroom",
    "shooting-range",
    "yellow-pirelli-cap",
    "tropical-hat",
    "nyc-bench",
    "concrete-cafe",
    "bed-mask"
  ],
  "defaults": {
    "model": "nano-banana-2",
    "variant": "yellow-pirelli-cap",
    "aspectRatio": "3:4",
    "outputCountPerRun": 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",
  "attemptCapPerScene": 3,
  "stages": [
    {
      "id": "prepare",
      "output": "One run pinned to the portrait, selected lifestyle prompt, and model route.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "validate",
      "output": "The portrait and exact selected prompt checked locally.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "transform",
      "output": "One selected scene per paid prediction; repeat only for approved variants.",
      "paid": true,
      "approvalRequired": true
    },
    {
      "id": "inspect",
      "output": "Automatic file checks plus an actual visual review for every scene.",
      "paid": false,
      "approvalRequired": true
    }
  ]
}
assets.json
Open raw file ↗
{
  "sourceReference": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/skaigenerated/p/Da8Wg1QFpAd/",
    "resourceUrl": "https://docs.google.com/document/d/1ZxKvu3LJSc83TRrpYfxQlLTK8-o5Skt8FRvlF4UBrUU/edit",
    "guide": "assets/source/guide.pdf",
    "referenceInset": "assets/source/reference-input.jpg",
    "verification": "The delivered Google Doc supplied Nano Banana Pro and eight exact prompts. The Instagram carousel supplied the eight matching source outputs.",
    "referenceNote": "The creator did not publish a separate original input, so the clean sheet-mask carousel scene is reused only as Wiggly's visual identity anchor."
  },
  "examples": [
    { "variant": "sheet-mask-mirror", "path": "assets/source/sheet-mask-mirror.jpg" },
    { "variant": "luxury-bathroom", "path": "assets/source/luxury-bathroom.jpg" },
    { "variant": "shooting-range", "path": "assets/source/shooting-range.jpg" },
    { "variant": "yellow-pirelli-cap", "path": "assets/source/yellow-pirelli-cap.jpg" },
    { "variant": "tropical-hat", "path": "assets/source/tropical-hat.jpg" },
    { "variant": "nyc-bench", "path": "assets/source/nyc-bench.jpg" },
    { "variant": "concrete-cafe", "path": "assets/source/concrete-cafe.jpg" },
    { "variant": "bed-mask", "path": "assets/source/bed-mask.jpg" }
  ]
}
quality.json
Open raw file ↗
{
  "automatic": [
    "Exactly 1 decodable JPG, PNG, or WebP output per run",
    "At least 640x800 pixels",
    "Aspect ratio within 0.02 of 3:4",
    "At least 50 KB"
  ],
  "visual": [
    "The reference identity remains recognizable unless the user explicitly requests a new subject",
    "The selected scene matches its exact packaged prompt",
    "Faces, hands, clothing, phones, glasses, and scene props have coherent geometry",
    "The framing feels like a believable smartphone or candid lifestyle photograph",
    "The result is photorealistic rather than CGI or illustration"
  ],
  "finalization": {
    "automaticPassRequired": true,
    "visualPassRequired": true,
    "reviewNotesRequired": true,
    "explicitApprovalFlag": "--approve-final"
  }
}
goldens.json
Open raw file ↗
{
  "purpose": "Judge identity continuity, believable lifestyle styling, natural smartphone framing, prop geometry, and photographic realism across all eight gathered scenes.",
  "examples": [
    {
      "id": "yellow-pirelli-cap",
      "title": "Yellow Pirelli Cap Mirror Selfie",
      "imagePath": "assets/source/yellow-pirelli-cap.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The bright shirt, cap embroidery, jewelry, and phone stay crisp",
        "Flat daylight keeps the mirror selfie casual",
        "The playful expression prevents the frame from feeling over-directed"
      ]
    },
    {
      "id": "luxury-bathroom",
      "title": "Luxury Bathroom Streetwear",
      "imagePath": "assets/source/luxury-bathroom.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "Layered streetwear remains readable inside the dark tiled room",
        "The raised cocktail glass creates a convincing candid action",
        "Warm hotel light balances the cool mirror reflection"
      ]
    },
    {
      "id": "shooting-range",
      "title": "Leather Vest Shooting Range",
      "imagePath": "assets/source/shooting-range.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The three-quarter angle makes the stance easy to read",
        "Safety gear, lane number, target, and handgun retain useful detail",
        "Hard fluorescent light supports the gritty candid look"
      ]
    },
    {
      "id": "sheet-mask-mirror",
      "title": "Sheet Mask Bathroom Mirror Selfie",
      "imagePath": "assets/source/sheet-mask-mirror.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The crinkled translucent mask looks physically worn",
        "Wet hair and dim stone surfaces sell the private bathroom moment",
        "The loose pose feels unfiltered rather than editorial"
      ]
    },
    {
      "id": "tropical-hat",
      "title": "Tropical Sky Hat Selfie",
      "imagePath": "assets/source/tropical-hat.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The extreme low angle turns the blue sky into clean negative space",
        "Frayed canvas, mirrored lenses, beads, and mesh retain tactile texture",
        "Hard midday light feels true to a spontaneous vacation selfie"
      ]
    },
    {
      "id": "nyc-bench",
      "title": "NYC Street Bench",
      "imagePath": "assets/source/nyc-bench.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "Both full-body outfits remain distinct and readable",
        "Iced drinks and deadpan expressions keep the frame casually social",
        "Dappled street light avoids a studio-polished finish"
      ]
    },
    {
      "id": "concrete-cafe",
      "title": "Raw Concrete Café",
      "imagePath": "assets/source/concrete-cafe.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "Golden window light builds strong cinematic contrast",
        "Leather, satin, concrete, and wood keep separate material textures",
        "The reclined posture creates a quiet unbothered mood"
      ]
    },
    {
      "id": "bed-mask",
      "title": "Lying in Bed With a Sheet Mask",
      "imagePath": "assets/source/bed-mask.jpg",
      "model": "Nano Banana Pro",
      "whyItWorks": [
        "The overhead crop feels intimate and accidental",
        "Mask wrinkles, earbuds, tattoos, and bedding retain realistic detail",
        "Warm side light preserves the raw phone-photo character"
      ]
    }
  ]
}
format.json
Open raw file ↗
{
  "id": "fake-it-till-you-make-it",
  "version": "1.0.0",
  "title": "Fake It Till You Make It",
  "description": "Turn one reference portrait into eight believable lifestyle posts spanning mirrors, streetwear, travel, nightlife, and quiet candid moments.",
  "status": "agent-ready",
  "owner": "Wiggly Studio",
  "source": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/skaigenerated/p/Da8Wg1QFpAd/",
    "resourceUrl": "https://docs.google.com/document/d/1ZxKvu3LJSc83TRrpYfxQlLTK8-o5Skt8FRvlF4UBrUU/edit",
    "ctaKeyword": "AI",
    "modelShown": "Nano Banana Pro"
  },
  "outputs": [
    "1 inspected 3:4 image per selected lifestyle scene",
    "up to 8 finalized scene runs for the complete set",
    "state.json and quality-report.json for every scene"
  ]
}
kit.package.json
Open raw file ↗
{
  "name": "wiggly-fake-it-till-you-make-it-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=fake-it-till-you-make-it && node kit-smoke.mjs"
  },
  "dependencies": {
    "image-size": "2.0.2",
    "replicate": "1.4.0",
    "tsx": "4.20.6"
  }
}
runtime.json
Open raw file ↗
{
  "slug": "fake-it-till-you-make-it",
  "version": "1.0.0",
  "promptPath": "prompts/yellow-pirelli-cap.txt",
  "promptVariants": {
    "sheet-mask-mirror": "prompts/sheet-mask-mirror.txt",
    "luxury-bathroom": "prompts/luxury-bathroom.txt",
    "shooting-range": "prompts/shooting-range.txt",
    "yellow-pirelli-cap": "prompts/yellow-pirelli-cap.txt",
    "tropical-hat": "prompts/tropical-hat.txt",
    "nyc-bench": "prompts/nyc-bench.txt",
    "concrete-cafe": "prompts/concrete-cafe.txt",
    "bed-mask": "prompts/bed-mask.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 / source model",
      "model": "google/nano-banana-pro",
      "family": "nano-banana",
      "aspectRatio": "3:4",
      "outputFormat": "jpg",
      "resolution": "1K"
    }
  },
  "expectedOutputs": 1,
  "maximumAttempts": 3,
  "smokeInputPath": "assets/source/reference-input.jpg",
  "smokeExamplePath": "assets/source/yellow-pirelli-cap.jpg",
  "minimumOutputWidth": 640,
  "minimumOutputHeight": 800,
  "minimumOutputBytes": 51200,
  "manualReview": [
    "recognizable reference identity",
    "selected lifestyle scene fidelity",
    "believable face, hands, clothing, and props",
    "natural smartphone framing",
    "photographic realism"
  ]
}
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 · about 1 min
Each selected sceneOne current Replicate model charge · usually under 2 min
Inspect + finalizeFree · about 1 min per scene

One prediction per selected scene; the complete set is eight predictions

You provide

One JPEG, PNG, or WebP portrait at least 512px on both axes · One scene or the complete eight-image set · A Replicate API token only when generation is approved

Output

One inspected 3:4 JPG per selected scene, with run and quality provenance