Wiggly / Format Lab /

cinematic-photographer

agent-ready
v1.0.0

Cinematic Photographer

Create a moody editorial portrait of a photographer with tactile film detail.

One exact concept in. 1 inspected image out.

Download runnable kit

Gathered source proof

Judge cinematic realism, camera anatomy, lighting, shallow focus, and film texture against the gathered source example.

Cinematic photographer source proof
GPT Image 2

Cinematic photographer source proof

  • The camera and face share crisp priority
  • Low-key light still preserves warm skin detail
  • The background stays minimal and cinematic
  • Film grain supports the editorial finish

Exact gathered prompt

Ultra-realistic cinematic portrait of a young man holding a vintage rangefinder camera close to his face, slightly tilted pose, intense calm expression, curly wet hair falling on forehead, wearing a black coat over a white inner shirt. Moody low-key lighting with soft shadows, warm skin tones, dark minimal background, shallow depth of field, 50mm lens look, sharp focus on face and camera, film grain texture, aesthetic editorial photography, high detail, 4K quality.

Source: @skaigenerated · model shown: GPT Image 2

The official run

Prepare -> Validate -> Generate -> Inspect

  1. 1. prepare
    free

    A run pinned to the exact gathered prompt and chosen model route.

  2. 2. validate
    free

    Prompt, output contract, and provider route checked locally.

  3. 3. generate
    paid

    One portrait from the selected Replicate model.

    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 · 4:5
  • default: Nano Banana 2 · 4:5
  • 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-cinematic-photographer
description: Create one moody editorial photographer portrait from the exact gathered SKAI prompt.
---

# Cinematic Photographer

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

Ask one short question first:

> Should I use the exact packaged photographer concept, or do you want to change the subject while keeping the cinematic recipe?

Use Nano Banana 2 by default, Nano Banana 2 Lite for economy, or GPT Image 2 when the user asks for the source model. The exact source prompt is the validated default.

```bash
npm run format:skai-image -- check --format=cinematic-photographer
npm run format:skai-image -- init --format=cinematic-photographer --run=<id>
npm run format:skai-image -- validate --format=cinematic-photographer --run=<id>
npm run format:skai-image -- estimate --format=cinematic-photographer --run=<id>
npm run format:skai-image -- render --format=cinematic-photographer --run=<id> --approve-paid
npm run format:skai-image -- inspect --format=cinematic-photographer --run=<id>
npm run format:skai-image -- inspect --format=cinematic-photographer --run=<id> --visual-pass --review-notes="<specific observations>"
npm run format:skai-image -- finalize --format=cinematic-photographer --run=<id> --approve-final
```

Hard rules:

- Keep the packaged prompt exact unless the user explicitly asks to change the subject.
- 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`.
Replicate BYOK requirements requirements.json
{
  "runtime": {
    "node": ">=22",
    "commands": [
      "npm"
    ]
  },
  "providers": [
    {
      "name": "Replicate",
      "models": [
        "google/nano-banana-2-lite",
        "google/nano-banana-2",
        "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.",
    "The gathered source example is the visual proof.",
    "Paid generation requires explicit approval and is capped at three attempts."
  ]
}
Input contract and model routing inputs.json
{
  "required": [],
  "question": "Should I use the exact packaged photographer concept, or do you want to change the subject while keeping the cinematic recipe?",
  "defaults": {
    "concept": "exact packaged prompt",
    "model": "nano-banana-2",
    "aspectRatio": "4:5",
    "outputCount": 1
  },
  "modelRoutes": {
    "economy": "google/nano-banana-2-lite",
    "default": "google/nano-banana-2",
    "sourceModel": "openai/gpt-image-2"
  }
}
Paid-call and resume contract pipeline.json
{
  "progress": "Prepare -> Validate -> Generate -> Inspect",
  "attemptCap": 3,
  "stages": [
    {
      "id": "prepare",
      "output": "A run pinned to the exact gathered prompt and chosen model route.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "validate",
      "output": "Prompt, output contract, and provider route checked locally.",
      "paid": false,
      "approvalRequired": false
    },
    {
      "id": "generate",
      "output": "One 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
    }
  ]
}
Exact gathered prompt prompts/transform.txt
Ultra-realistic cinematic portrait of a young man holding a vintage rangefinder camera close to his face, slightly tilted pose, intense calm expression, curly wet hair falling on forehead, wearing a black coat over a white inner shirt. Moody low-key lighting with soft shadows, warm skin tones, dark minimal background, shallow depth of field, 50mm lens look, sharp focus on face and camera, film grain texture, aesthetic editorial photography, high detail, 4K quality.
Automatic and visual gates quality.json
{
  "automatic": [
    "Exactly one decodable image",
    "At least 640x800",
    "At least 50 KB",
    "Aspect ratio matches the chosen model route",
    "SHA-256 provenance is recorded"
  ],
  "manualReview": [
    "Face, eyes, fingers, and camera geometry are coherent",
    "The portrait reads as a real editorial photograph",
    "Lighting is moody and low-key without losing the face",
    "The subject and camera stay sharply prioritized",
    "Film grain adds texture without destroying detail"
  ],
  "finalizationGate": [
    "Automatic checks pass",
    "The actual image is viewed",
    "Specific visual notes are recorded",
    "--approve-final is present"
  ]
}