Curated Formatv1.0.0

Cool Tone Filter

Give one photograph a bright, cool, mildly overexposed Y2K digital-camera finish with timestamp texture and candid energy.

By Wiggly Studio · Updated July 2026

Night snapshot: Make flash feel colder than the weatherReference for Make flash feel colder than the weather

Shared recipe family

One family. 31 recipes.

Cool Tone Filter 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 examples were labeled GPT Image 2; the packaged Replicate runtime uses Nano Banana 2 routes.
  • 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 6 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.

Recipe reference

Recipe reference

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

What stays consistent

  • The source faces, identities, poses, clothing, and key details
  • The original composition and recognizable environment
  • The candid action or expression
  • A photographic finish

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.

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

Night snapshot: Make flash feel colder than the weatherReference for Make flash feel colder than the weather

Example 01 · Night snapshot

Make flash feel colder than the weather

Open finished ad
Casual portrait: Turn a polished pose into a Y2K snapshotReference for Turn a polished pose into a Y2K snapshot

Example 02 · Casual portrait

Turn a polished pose into a Y2K snapshot

Open finished ad
Travel portrait: Give blue hour a cheap-digital flashReference for Give blue hour a cheap-digital flash

Example 03 · Travel portrait

Give blue hour a cheap-digital flash

Open finished ad
Couple portrait: Keep the tenderness, add the timestampReference for Keep the tenderness, add the timestamp

Example 04 · Couple portrait

Keep the tenderness, add the timestamp

Open finished ad
Low-light portrait: Let low light stay a little imperfectReference for Let low light stay a little imperfect

Example 05 · Low-light portrait

Let low light stay a little imperfect

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 Cool Tone Filter transform 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 strict identity preservation, direct-flash Y2K color, believable mild overexposure, compact-camera texture, timestamp placement, and candid energy.

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

Each source example includes its original inset. The packaged reference files are exact crops from those insets so Wiggly can also place the original at the top right of the consumer Format page.

Saved reference

Snowy Night Snapshot

  • Both people, winter clothing, hand gestures, and setting stay recognizable
  • Direct flash separates the pair from the dark snowy background
  • Cool texture and a compact timestamp create a convincing found-camera frame

Saved reference

Reclining Flash Portrait

  • The relaxed pose, outfit, and surrounding architecture remain intact
  • Mild overexposure gives skin and light fabric an authentic flash-camera response
  • Low-resolution texture makes a polished portrait feel casually captured

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
  • Faces, people, poses, clothing, composition, and key details remain recognizable
  • Bright flash, slightly cool color, and mild overexposure read as one coherent Y2K digital-camera treatment
  • Low-resolution texture feels photographic rather than smeared or artificially sharpened
  • A plausible timestamp sits in a corner without covering important content
  • The image keeps candid energy while avoiding warped faces, hands, 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 Cool Tone Filter Format

This runnable Repo preserves the exact gathered prompt, source notes, original
carousel cover, and six 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=cool-tone-filter
npm run format:skai-image -- smoke --format=cool-tone-filter
npm run format:skai-image -- init --format=cool-tone-filter --run=my-photo --input=/absolute/path/to/photo.jpg
npm run format:skai-image -- validate --format=cool-tone-filter --run=my-photo
npm run format:skai-image -- estimate --format=cool-tone-filter --run=my-photo
```

Generation requires `REPLICATE_API_TOKEN` and explicit approval:

```bash
npm run format:skai-image -- render --format=cool-tone-filter --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 source model is
recorded as provenance; the runnable Wiggly routes use Replicate.
SKILL.md
Open raw file ↗
---
name: wiggly-cool-tone-filter
description: Apply the exact gathered SKAI Cool Tone Filter prompt to one photograph.
---

# Cool Tone Filter

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 give the Cool Tone Filter?

Then run:

```bash
npm run format:skai-image -- init --format=cool-tone-filter --run=<id> --input=<absolute-image-path>
npm run format:skai-image -- validate --format=cool-tone-filter --run=<id>
npm run format:skai-image -- estimate --format=cool-tone-filter --run=<id>
npm run format:skai-image -- render --format=cool-tone-filter --run=<id> --approve-paid
npm run format:skai-image -- inspect --format=cool-tone-filter --run=<id>
npm run format:skai-image -- inspect --format=cool-tone-filter --run=<id> --visual-pass --review-notes="<specific observations>"
npm run format:skai-image -- finalize --format=cool-tone-filter --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 examples were labeled GPT Image 2; the packaged Replicate runtime uses Nano Banana 2 routes.",
    "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 give the Cool Tone Filter?",
  "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 Cool Tone Filter transform 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/Da-YbX_CuYi/",
    "resourceTitle": "Cool Tone Filter Prompt",
    "guide": "assets/source/guide.txt",
    "cover": "assets/source/cover.jpg",
    "referenceInset": "assets/source/snow-duo-reference.jpg",
    "verification": "The Instagram DM delivered the public Google Doc with the exact GPT Image 2 prompt. The original carousel supplied its cover and six native output examples; promotional slides were omitted.",
    "referenceNote": "Each source example includes its original inset. The packaged reference files are exact crops from those insets so Wiggly can also place the original at the top right of the consumer Format page."
  },
  "examples": [
    {
      "id": "snow-duo",
      "path": "assets/source/snow-duo.jpg",
      "referencePath": "assets/source/snow-duo-reference.jpg"
    },
    {
      "id": "reclining-portrait",
      "path": "assets/source/reclining-portrait.jpg",
      "referencePath": "assets/source/reclining-portrait-reference.jpg"
    },
    {
      "id": "canal-portrait",
      "path": "assets/source/canal-portrait.jpg",
      "referencePath": "assets/source/canal-portrait-reference.jpg"
    },
    {
      "id": "beach-couple",
      "path": "assets/source/beach-couple.jpg",
      "referencePath": "assets/source/beach-couple-reference.jpg"
    },
    {
      "id": "shutter-portrait",
      "path": "assets/source/shutter-portrait.jpg",
      "referencePath": "assets/source/shutter-portrait-reference.jpg"
    },
    {
      "id": "london-candid",
      "path": "assets/source/london-candid.jpg",
      "referencePath": "assets/source/london-candid-reference.jpg"
    }
  ]
}
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": [
    "Faces, people, poses, clothing, composition, and key details remain recognizable",
    "Bright flash, slightly cool color, and mild overexposure read as one coherent Y2K digital-camera treatment",
    "Low-resolution texture feels photographic rather than smeared or artificially sharpened",
    "A plausible timestamp sits in a corner without covering important content",
    "The image keeps candid energy while avoiding warped faces, hands, logos, or watermarks"
  ],
  "finalization": {
    "automaticPassRequired": true,
    "visualPassRequired": true,
    "reviewNotesRequired": true,
    "explicitApprovalFlag": "--approve-final"
  }
}
goldens.json
Open raw file ↗
{
  "purpose": "Judge strict identity preservation, direct-flash Y2K color, believable mild overexposure, compact-camera texture, timestamp placement, and candid energy.",
  "examples": [
    {
      "id": "snow-duo",
      "title": "Snowy Night Snapshot",
      "imagePath": "assets/source/snow-duo.jpg",
      "referencePath": "assets/source/snow-duo-reference.jpg",
      "model": "GPT Image 2",
      "whyItWorks": [
        "Both people, winter clothing, hand gestures, and setting stay recognizable",
        "Direct flash separates the pair from the dark snowy background",
        "Cool texture and a compact timestamp create a convincing found-camera frame"
      ]
    },
    {
      "id": "reclining-portrait",
      "title": "Reclining Flash Portrait",
      "imagePath": "assets/source/reclining-portrait.jpg",
      "referencePath": "assets/source/reclining-portrait-reference.jpg",
      "model": "GPT Image 2",
      "whyItWorks": [
        "The relaxed pose, outfit, and surrounding architecture remain intact",
        "Mild overexposure gives skin and light fabric an authentic flash-camera response",
        "Low-resolution texture makes a polished portrait feel casually captured"
      ]
    },
    {
      "id": "canal-portrait",
      "title": "Canal-Side Digital Snapshot",
      "imagePath": "assets/source/canal-portrait.jpg",
      "referencePath": "assets/source/canal-portrait-reference.jpg",
      "model": "GPT Image 2",
      "whyItWorks": [
        "The face, clothing, canal, and city context remain recognizable",
        "Cool blues and bright frontal flash balance the fading outdoor light",
        "The timestamp and texture add era without overpowering the portrait"
      ]
    },
    {
      "id": "beach-couple",
      "title": "Beach Couple Flash",
      "imagePath": "assets/source/beach-couple.jpg",
      "referencePath": "assets/source/beach-couple-reference.jpg",
      "model": "GPT Image 2",
      "whyItWorks": [
        "Both identities, the affectionate pose, and the shoreline composition survive",
        "A bright cool flash keeps the couple clear against the softer background",
        "The slight blowout and grain feel candid rather than clinically perfect"
      ]
    },
    {
      "id": "shutter-portrait",
      "title": "Low-Light Street Portrait",
      "imagePath": "assets/source/shutter-portrait.jpg",
      "referencePath": "assets/source/shutter-portrait-reference.jpg",
      "model": "GPT Image 2",
      "whyItWorks": [
        "The subject, black outfit, pose, and shuttered location remain recognizable",
        "Cool direct flash creates crisp foreground detail without flattening the setting",
        "Digital noise and mild exposure errors make the image feel era-authentic"
      ]
    },
    {
      "id": "london-candid",
      "title": "London Tourist Candid",
      "imagePath": "assets/source/london-candid.jpg",
      "referencePath": "assets/source/london-candid-reference.jpg",
      "model": "GPT Image 2",
      "whyItWorks": [
        "The person, gesture, coat, river, and Big Ben remain immediately recognizable",
        "Cool compact-camera color turns the travel portrait into a candid memory",
        "Timestamp, grain, and slight overexposure stay readable without hiding key details"
      ]
    }
  ]
}
format.json
Open raw file ↗
{
  "id": "cool-tone-filter",
  "version": "1.0.0",
  "title": "Cool Tone Filter",
  "description": "Give one photograph an authentic Y2K digital-camera finish with bright flash, cool color, mild overexposure, timestamp texture, and candid energy.",
  "status": "agent-ready",
  "owner": "Wiggly Studio",
  "source": {
    "creator": "@skaigenerated",
    "postUrl": "https://www.instagram.com/p/Da-YbX_CuYi/",
    "resourceTitle": "Cool Tone Filter Prompt",
    "resourceAccess": "Instagram DM to public Google Doc",
    "ctaKeyword": "AI",
    "modelShown": "GPT Image 2"
  },
  "outputs": [
    "1 inspected Cool Tone Filter photograph",
    "state.json with model and prediction provenance",
    "quality-report.json with automatic and visual inspection"
  ]
}
kit.package.json
Open raw file ↗
{
  "name": "wiggly-cool-tone-filter-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=cool-tone-filter && node kit-smoke.mjs"
  },
  "dependencies": {
    "image-size": "2.0.2",
    "replicate": "1.4.0",
    "tsx": "4.20.6"
  }
}
runtime.json
Open raw file ↗
{
  "slug": "cool-tone-filter",
  "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/snow-duo-reference.jpg",
  "smokeExamplePath": "assets/source/snow-duo.jpg",
  "minimumOutputWidth": 640,
  "minimumOutputHeight": 800,
  "minimumOutputBytes": 51200,
  "manualReview": [
    "faces, people, composition, and key details stay recognizable",
    "bright direct flash and slightly cool tones feel like a Y2K compact camera",
    "mild overexposure and low-resolution texture remain photographic",
    "the corner timestamp is readable and plausible",
    "the result feels candid, energetic, and free of obvious AI artifacts"
  ]
}
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 Cool Tone Filter photograph plus prediction and quality provenance