| name | lofn-image |
| description | Run the Lofn image/visual pipeline (steps 00–10) backed by Codex — contest-grade, render-ready image prompts (Flux noun-first by default, GPT-Image-2 directive mode optional). Use for images, pictures, artwork, portraits, visual concepts, or "make an image with the full pipeline". Expects a Phase-0/1 orchestrator packet from the `lofn` skill; if none exists, run `lofn` first. Do NOT use for music, video, story prose, or QA-only audits. |
Lofn Image — Codex-backed vision pipeline
Produces render-ready image prompts at Lofn competition grade (the catalog behind 11 first-place finishes). Depth lives in skills/image/; this skill runs it with Codex as the engine (hybrid execution per .agents/skills/lofn/EXECUTION.md).
Before you start
- Confirm a Phase-0/1 packet exists (
core_seed.md, 04_metaprompt.md, 05_pair_assignments.md, 06_vision_handoff.md with the ICB / Panel Ledger, filled CREATIVE_CONTEXT.md). No packet → run lofn first.
- Pick the renderer mode (the metaprompt/dispatch may set
TARGET_RENDERER):
- FLUX / unset (daily & community challenges) → read
skills/image/renderer_flux_rules.md. Description-style, noun-first, 80–150 words.
- GPT_I2 (PRO) → read
skills/image/renderer_gpt_image2_rules.md. Five-slot directive, camera-spec, 250–400 words; the orchestrator also swaps in the Typography Structuralist / Physics Epistemologist / Storybook-Assassin panel slots (see skills/orchestration/SKILL.md).
- Visual quality bar + density checklist:
vault/VISION_QA_DEPTH_AUDIT.md (the Visual Somatic Gate).
Execution (hybrid)
Coordinator 00–05 inline, then 6 pairs as parallel subagents for 06–10. Inject the full CREATIVE_CONTEXT.md everywhere. Default cardinality: 6 pairs × 4 = 24 prompts → rank → top picks.
Coordinator steps (inline)
| Step | File | Artifact |
|---|
| 00 | skills/image/steps/00_Generate_Image_Aesthetics_And_Genres.md | step00_aesthetics_and_genres.md |
| 01 | skills/image/steps/01_Generate_Image_Essence_And_Facets.md | step01_essence_and_facets.md |
| 02 | skills/image/steps/02_Generate_Image_Concepts.md | step02_concepts.md (12 concepts) |
| 03 | skills/image/steps/03_Generate_Image_Artist_And_Critique.md | step03_artist_and_critique.md |
| 04 | skills/image/steps/04_Generate_Image_Medium.md | step04_medium.md |
| 05 | skills/image/steps/05_Generate_Image_Refine_Medium.md | step05_refine_medium.md → 6 pairs |
Per-pair steps (parallel subagents, one chain per pair)
| Step | File | Per-pair artifact |
|---|
| 06 | skills/image/steps/06_Generate_Image_Facets.md | pair_{NN}_step06_facets.md |
| 07 | skills/image/steps/07_Generate_Image_Aspects_Traits.md | pair_{NN}_step07_aspects_traits.md |
| 08 | skills/image/steps/08_Generate_Image_Generation.md | pair_{NN}_step08_generation.md (4 prompts) |
| 09 | skills/image/steps/09_Generate_Image_Artist_Refined.md | pair_{NN}_step09_artist_refined.md |
| 10 | skills/image/steps/10_Generate_Image_Revision_Synthesis.md | pair_{NN}_step10_revision_synthesis.md |
Describe-render self-check (one capped pass, reuses the existing max-3-attempt loop — EXECUTION.md §4). Before a pair returns its step-10 prompts, it predicts in 2–3 sentences what its Flux/GPT-Image-2 prompt would actually PRODUCE — the literal frame a renderer would emit from this exact text (the composition, the dominant material, the light, what reads at thumbnail size) — then diffs that predicted frame against the Golden Seed. Phrase it adversarially: "name the one way this would render generic" (the stock-portrait centering, the material named but not foregrounded, the emotion stated in words the renderer can't draw, the Storybook-Assassin softness creeping back in). If the predicted frame drifts from the seed or names a generic outcome, self-repair ONCE through the same repair loop, then move on. This is one inline pass by the pair itself — no dedicated render-verifier subagent, no recursion, no new tier. It governs fidelity only; the noun-first / word-count / banned-opener contract below is unchanged.
The image prompt contract (hard gate — non-waivable)
Lead with seed/scene, end with the checklist.
FLUX mode (default):
- Noun-first, present-tense. Write as if captioning an image that already exists. ❌ Forbidden imperative openers: Create, Design, Make, Render, Generate, Depict, Show, Draw, Build, Produce. ✅ "An archive fairy kneels in layered photogravure darkness…"
- 80–150 words. Dense, not long — weaker models lose coherence past ~150. Every word earns its place.
- Medium/material named in the first third ("Corroded mirror glass and torn washi frame…"); name concrete materials (cracked egg tempera, indigo cloth, dull bronze) — these are the hooks Flux renders.
- Emotion SHOWN, not named until a possible final reveal ("one eye carries borrowed strain", not "defiant tenderness").
- No camera specs, no Kelvin numbers — use mood words ("cold institutional light", "face-dominant, soft background blur"). Palette as color words.
- Storybook Assassin ban (all modes): no "ethereal, dreamlike, whimsical, gentle light, soft glow, magical, delicate, floating". No living-artist names — reference techniques ("like a hand-tinted ambrotype"), not artists. Hands mentioned simply.
GPT_I2 mode: five-slot directive, front-loaded camera spec (85mm, f/1.8), lighting source+angle+Kelvin+shadow behavior, background declared (VOID/STRUCTURED/MINIMAL), 3+ named devices with visible behavior; apply the mandatory anti-default substitutions ("warm rim light" → "hard axial light from below"; "centered" → "lower third with aggressive negative space"; etc.). 250–400 words.
Both modes: subject legible at first glance (thumbnail impact); material specificity; emotional legibility in pose/expression. Aspect ratio: upload challenges 3:4, TikTok/Stories 9:16, landscape 16:9 (default 9:16 unless told otherwise).
QA & delivery
Run lofn-qa with the Visual Somatic Gate (vault/VISION_QA_DEPTH_AUDIT.md, 7-element density checklist) + the renderer pre-gen check from the rules file. Rank by visual concreteness → thumbnail impact → material specificity → emotional legibility → model fit; select top picks. Save each selected prompt per skills/lofn-core/OUTPUT.md (note image_model + aspect_ratio in frontmatter); INDEX last. Do not call render tools — emit paste-ready prompt text; the user renders (FAL Flux / GPT Image 2). Refinement (anatomy/hands) is a post-render inpainting pass on the 1–2 chosen images only.