Wiggly / Format Lab /

cool-tone-filter

agent-ready
v1.0.0

Cool Tone Filter

Give one photograph an authentic Y2K digital-camera finish with bright flash, cool color, mild overexposure, timestamp texture, and candid energy.

One source image in. 1 inspected image out.

Download runnable kit

Gathered source proof

Judge strict identity preservation, direct-flash Y2K color, believable mild overexposure, compact-camera texture, timestamp placement, and candid energy.

Snowy Night Snapshot
GPT Image 2

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
Reclining Flash Portrait
GPT Image 2

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
Canal-Side Digital Snapshot
GPT Image 2

Canal-Side Digital Snapshot

  • 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
Beach Couple Flash
GPT Image 2

Beach Couple Flash

  • 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
Low-Light Street Portrait
GPT Image 2

Low-Light Street Portrait

  • 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
London Tourist Candid
GPT Image 2

London Tourist Candid

  • 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

Exact gathered prompt

Give this photo an authentic Y2K digital-camera aesthetic: bright flash, slightly cool tones, mild overexposure, timestamp in the corner, low-resolution texture, and a fun candid energy. Keep faces and key details unchanged.

Source: @skaigenerated · model shown: GPT Image 2

The official run

Prepare -> Validate -> Transform -> Inspect

  1. 1. prepare
    free

    One run pinned to the photo, exact gathered prompt, and selected model route.

  2. 2. validate
    free

    The photo and prompt contract checked locally.

  3. 3. transform
    paid

    One Cool Tone Filter transform from one approved prediction.

    Explicit approval required

  4. 4. inspect
    free

    Automatic file checks plus an actual visual review.

    Explicit approval required

Model routes

  • economy: Nano Banana 2 Lite · 3:4
  • default: Nano Banana 2 · 3:4
  • premium: Nano Banana Pro · 3:4

What prevents waste

  • The complete contract validates locally before spending.
  • Paid generation needs an explicit approval flag.
  • The prediction ID is saved before polling.
  • Interrupted jobs resume instead of duplicating.
  • Three attempts is the hard cap.

Repo files

Agent instructions SKILL.md
---
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`.
Replicate BYOK requirements requirements.json
{
  "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."
  ]
}
Input contract and model routing inputs.json
{
  "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"
  }
}
Paid-call and resume contract pipeline.json
{
  "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
    }
  ]
}
Exact gathered prompt prompts/transform.txt
Give this photo an authentic Y2K digital-camera aesthetic: bright flash, slightly cool tones, mild overexposure, timestamp in the corner, low-resolution texture, and a fun candid energy. Keep faces and key details unchanged.
Automatic and visual gates quality.json
{
  "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"
  }
}