Wiggly / Format Lab /

dark-studio-portrait

agent-ready
v1.0.0

Dark Studio Portrait

Turn one portrait into a grainy, high-contrast black-and-white studio image with a glowing rim light, formal tailoring, and deep analog shadows.

One source image in. 1 inspected image out.

Download runnable kit

Gathered source proof

Judge identity preservation, formal styling, luminous rim light, controlled deep shadow, heavy analog grain, and black-and-white photographic realism.

Rim Light Through Glasses
GPT Image 2

Rim Light Through Glasses

  • The white rim cleanly separates hair and shoulders from black
  • Glasses stay readable without flattening the eye shadows
  • Film grain and soft focus keep the image analog
The Quiet Cover Portrait
GPT Image 2

The Quiet Cover Portrait

  • The off-center crop creates immediate editorial tension
  • A serious gaze survives the heavy facial shadow
  • The black suit disappears naturally into the studio
Soft Focus, Hard Contrast
GPT Image 2

Soft Focus, Hard Contrast

  • A slight head tilt loosens the formal portrait
  • Bloom around the hair stays subtle
  • Crushed blacks retain a smooth tonal falloff
Braids in the Halo
GPT Image 2

Braids in the Halo

  • The overhead light traces every braid cleanly
  • Natural pores and fine grain prevent a plastic finish
  • The centered stare feels calm rather than theatrical
Wet Curls, Deep Shadow
GPT Image 2

Wet Curls, Deep Shadow

  • Loose curls catch the back light strand by strand
  • Facial hair and glasses remain coherent in the darkness
  • The frame reads as a real 50mm studio photograph
Let the Face Fall Away
GPT Image 2

Let the Face Fall Away

  • The fringe becomes a bright halo over an almost hidden face
  • The suit silhouette stays legible with minimal fill
  • High ISO texture gives the deepest blacks life

Exact gathered prompt

Ultra-realistic cinematic black-and-white portrait of the subject in a formal black suit and tie, captured in a dark minimalist studio. The subject is slightly off-center, facing forward with a calm, serious expression and soft eye focus. Dramatic low-key lighting with a strong overhead/back light creates a glowing rim light around hair and silhouette, while the face fades into deep shadow. High contrast with smooth falloff into darkness builds a moody atmosphere. Apply heavy film grain and high ISO noise (3200–6400) for a raw analog feel. Add slight softness, subtle blur, and faint highlight bloom. Natural skin texture with visible pores. Monochrome grading with crushed blacks, soft highlights, and shallow depth of field (50mm, f/1.8).

Source: @skaigenerated · model shown: GPT Image 2

The official run

Prepare -> Validate -> Transform -> Inspect

  1. 1. prepare
    free

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

  2. 2. validate
    free

    The portrait and prompt contract checked locally.

  3. 3. transform
    paid

    One dark-studio portrait 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
  • source model: GPT Image 2 · 2:3

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-dark-studio-portrait
description: Turn one portrait into a grainy, high-contrast monochrome studio portrait using the exact gathered SKAI prompt.
---

# Dark Studio Portrait

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

Ask one short question:

> Which portrait should I turn into a Dark Studio Portrait?

Then run:

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

Hard rules:

- Preserve the source identity.
- Keep the exact gathered prompt unless the user explicitly requests a change.
- Use Nano Banana 2 by default, Lite for economy, Pro for premium, or GPT Image 2 for the creator's source 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",
        "openai/gpt-image-2"
      ]
    }
  ],
  "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.",
    "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": "portrait",
      "type": "image",
      "formats": ["jpg", "png", "webp"],
      "minimumWidth": 512,
      "minimumHeight": 512,
      "maximumBytes": 26214400
    }
  ],
  "question": "Which portrait should I turn into a Dark Studio Portrait?",
  "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",
    "source": "openai/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 portrait, exact gathered prompt, and selected model route.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "validate",
      "output": "The portrait and prompt contract checked locally.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "transform",
      "output": "One dark-studio portrait 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
Ultra-realistic cinematic black-and-white portrait of the subject in a formal black suit and tie, captured in a dark minimalist studio. The subject is slightly off-center, facing forward with a calm, serious expression and soft eye focus. Dramatic low-key lighting with a strong overhead/back light creates a glowing rim light around hair and silhouette, while the face fades into deep shadow. High contrast with smooth falloff into darkness builds a moody atmosphere. Apply heavy film grain and high ISO noise (3200–6400) for a raw analog feel. Add slight softness, subtle blur, and faint highlight bloom. Natural skin texture with visible pores. Monochrome grading with crushed blacks, soft highlights, and shallow depth of field (50mm, f/1.8).
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": [
    "The source identity remains recognizable",
    "The subject wears a formal black suit and tie",
    "A strong overhead or back light creates a clean halo around hair and shoulders",
    "The face falls into deep shadow with smooth high-contrast falloff",
    "Heavy film grain, slight softness, pores, and faint bloom feel analog",
    "The result is a black-and-white photograph rather than CGI or illustration"
  ],
  "finalization": {
    "automaticPassRequired": true,
    "visualPassRequired": true,
    "reviewNotesRequired": true,
    "explicitApprovalFlag": "--approve-final"
  }
}