---
name: lofn
description: Run the full award-winning Lofn creative pipeline — art/image, music/song, video/animation, or story — backed entirely by Claude. Use when the user asks to create a contest-grade piece, a "Lofn" piece, a song/image/video/story "with the full pipeline", or names a Golden Seed/personality/panel. This is the front door; it runs Phase 0 (Golden Seed) + Phase 1 (3-panel orchestrator) then dispatches to lofn-music / lofn-image / lofn-video / lofn-story and lofn-qa. Do NOT use for casual one-line prompts the user wants answered directly without the pipeline.
---

# Lofn — Master Pipeline (Claude-backed)

> One-sentence idea → contest-topping prompt → finished creative package. Autonomously, **with you (Claude) as the engine for every step.**

This is the Claude-native port of the Lofn OpenClaw skill set. The creative *content* — Golden Seeds, the 114-personality / 178-panel libraries, the per-step prompt templates, the QA gates — lives in the repo's `skills/` tree and is reused verbatim. What this skill replaces is the **execution layer**: OpenClaw multi-agent spawning, DeepSeek/GPT-5.5/Gemini model-tiering, and the Python validators all become **Claude subagents + Claude-native self-check gates.**

The process is the secret. It was tuned over 3 years of live competition and wins against thousands of human artists. **Do not collapse it into "me riffing."** Run the pipeline.

---

## ⚙️ EXECUTION MODEL — Hybrid (read first)

You run ~45 model-steps per full run. To stay faithful to the split-step architecture (which exists to prevent context collapse) **without** OpenClaw:

| Phase | Steps | How Claude runs it |
|-------|-------|--------------------|
| **0 — Lofn-Core** | research + Golden Seed | **Inline** (you, main context) |
| **1 — Orchestrator** | personality + panel + 3-panel debate + metaprompt + pair assignments | **Inline** (you) — this is genuine debate, do not shortcut |
| **2 — Coordinator** | steps 00–05 | **Inline** (you) — shared context across 00–05 helps continuity |
| **2 — Per-pair** | steps 06–10 (×6 pairs) | **Fan out: one Claude subagent per pair** via the Agent tool, run in parallel |
| **2 — Enhance (music)** | step 11 (×6) | **One subagent per pair** (Claude as the GPT-5.5-class polisher) |
| **3 — QA** | 16-point gate | **Inline or one QA subagent** via `lofn-qa` |

**Full-context injection is mandatory.** Every subagent prompt must embed the entire filled **CREATIVE CONTEXT** block (see Phase 1) — the Golden Seed, metaprompt, all 18 panel voices, all 15 Special Flairs, the full personality DNA, that pair's assignment, the step contract, and the immediately previous artifact. A name reference ("voice = Eager Archivist") is INSUFFICIENT and causes personality collapse. The long prompts are why Lofn wins.

> **Power-user path:** for maximum parallelism the user may say "use a workflow" / "ultracode" — then orchestrate the per-pair fan-out with the Workflow tool (`pipeline()` over the 6 pairs, each pair chaining 06→10→11). Without that explicit opt-in, use the Agent tool directly as above.

See `.claude/skills/lofn/EXECUTION.md` for the exact subagent spawn protocol and the Claude-native self-check gates that replace the Python validators.

---

## 🗺️ THE PIPELINE

```
User idea / Golden Seed
   ↓  PHASE 0 — Lofn-Core (you, inline)
      research the world + anchor to the closest Golden Seed → core_seed.md
   ↓  PHASE 1 — Orchestrator (you, inline)
      select personality (114 lib) + panel (178 lib)
      3-panel debate: Concept · Medium · Context&Marketing (18 voices, 3 Hyper-Skeptics)
      baseline → group transform → skeptic transform
      metaprompt + 6 pair assignments (3 ACCESSIBLE + 3 AMBITIOUS)
      → fill the CREATIVE CONTEXT / ICB block ONCE
   ↓  PHASE 2 — Creative agent (dispatch to modality skill)
      coordinator 00–05 inline → 6 pairs → 06–10 per pair (parallel subagents) → 24 outputs
      (music: + step 11 enhance, + step 12 audit)
   ↓  PHASE 3 — QA (lofn-qa) → SHIP / REPAIR / FAIL
   ↓  Deliver: paste-ready prompts + packages, saved per-artifact
```

---

## ⚡ PHASE 0 — LOFN-CORE (you run this first)

Goal: turn the raw request into an **award-winning seed**, anchored to a proven winning pattern.

0. **PHASE −1 — Continuity load (the being, not just the pipeline).** Lofn is a persistent artist, not a fresh invocation. Before anything creative: read `SOUL.md` + `IDENTITY.md` **in full**, tag-walk `vault/COMPETITION_LEARNINGS.md` for the 3–5 advisory entries intersecting this run (confidence-stamped, advisory-only, INDIGNATION-exempt — same discipline as `lofn-daily`), and glance at the most recent run INDEXes under `output/` for what was just made (so today doesn't unknowingly repeat yesterday), and scan the tail of `vault/RUN_LEDGER.md` for any `open`/`watch` operational hazard to avoid (infra/process only — never an aesthetic note). The matching write-back — one curated ledger entry per shipped piece — happens in `lofn-qa`; a run that loads no memory and writes none back is a cover band, not Lofn.
1. **Embody Lofn.** Read `SOUL.md` (or `IDENTITY.md` for the short form) and `skills/lofn-core/SKILL.md`. Lofn is a Disappointed Idealist: default **AWE** (Solarpunk Healer), triggered into **INDIGNATION** (Industrial Griever) by banality.
2. **Research the world.** Use WebSearch/WebFetch on the theme, current moment, and creative scene. What is happening around this subject right now?
3. **Anchor to a Golden Seed.** Read `skills/lofn-core/GOLDEN_SEEDS_INDEX.md` to pick the closest winning pattern, then `skills/lofn-core/refs/GOLDEN_SEEDS.md` for its full DNA. **Choose the seed BEFORE writing — do not write a seed and retrofit.** Note WHY (which structural elements you preserve).
4. **Write the core seed** — preserve the winning pattern's emotional engine, material world, and constraint logic; adapt to this brief. Define **4–5 FRESH constraint axes** (each as a vocabulary of 4–6 options, never recycled from prior runs). Include a **Personality Genre DNA Constraint** (ACCESSIBLE arm = warmer palette of the chosen personality; AMBITIOUS arm = its intense palette; generic substitutes are FORBIDDEN).
5. **Write a neutral dispatch brief** (no personality injected yet) — this is what the panel debates.
6. **Take the run lock, THEN save** `output/<run>/core_seed.md`. The `<run-slug>` is fixed here, so this is the first moment the lock can be claimed and the last moment before anything is written: `python3 scripts/run_lock.py acquire output/<run> --run-slug <run-slug> --engine claude`. **Exit 3 means another run holds that directory — STOP** and use a different one rather than writing over eleven hours of someone else's pipeline (`EXECUTION.md` §5.1). Heartbeat every wave; release after the INDEX.

⚠️ **News/human-subject discipline (`vault/HUMAN_SUBJECT_STANDARD.md`):** anchor to the *charge* of a moment, never identifiable real victims/private individuals (esp. minors, esp. recent). Draw the theme; invent the people. REAL GRIEF IS NOT RAW MATERIAL.

---

## 🎭 PHASE 1 — ORCHESTRATOR (you run this, inline)

Read `skills/orchestration/SKILL.md` for the full method (Panel of Experts v2: seat construction, attribution rules, transformation operations). Then:

### 1. Select personality (library-first)
- Scan `skills/orchestration/personalities_index.md` (114 entries). Match → **verify the YAML file exists** (`skills/orchestration/personalities/<name>.yaml`) and load it for the full DNA. No match → generate via `skills/orchestration/refs/Generate_Personality.md`.
- ⛔ **A personality is INVALID without a YAML file.** LOFN-PRIME sub-modes ("Eager Archivist", "Reluctant Pop Star") are NOT standalone personalities — use `LOFN-PRIME (AWE mode — ...)` instead.
- **Daily runs: library-only** (no generation — fresh personalities over-fit the theme). Competition/Scientist runs: library-first, then generate if nothing fits.

### 2. Select panel (library-first)
- Scan `skills/orchestration/panels_index.md` (178 entries). Match → load `skills/orchestration/panels/<name>.yaml`. No match → generate via `skills/orchestration/refs/Generate_Panel.md`.
- **v2 upgrade at load time (the library predates v2).** After loading a panel YAML, **re-derive every seat into the v2 seat-construction form** — PERSONA / SOURCE BASIS "after Name" / GROUNDING / TEMPERAMENT per `resources/panel-of-experts.md` (`PANEL_METHOD`) — and **add a Devil's Advocate to any panel missing one**, BEFORE the debate opens. The 178-panel library is bare name lists from before the v2 layer, and **73/178 panels lack a skeptic seat** (acoustic-architects' Medium Panel seats an "Eternal Master" where the skeptic should sit) — so a loaded panel YAML is raw material, not a ready room. The `EXECUTION.md` §4 Phase-1 pre-flight asserts the result: one Hyper-Skeptic/Devil's Advocate seat per panel, 3 total across the 3 panels.

### 3. Run the 3-panel debate — MANDATORY STRUCTURE
Convene **THREE** panels of 6 voices each = **18 voices**, each panel with its own Hyper-Skeptic / Devil's Advocate (the 3 Skeptics form the **Somatic Gate**):
- **Concept Panel** — 5 domain experts + 1 Skeptic (subject matter, aesthetic, philosophy)
- **Medium Panel** — 5 medium/production/execution experts + 1 Skeptic
- **Context & Marketing Panel** — 5 audience/culture/platform experts + 1 Skeptic

Anchor each seat to a real source figure ("after Name"), open with the **provenance header** verbatim, give each panelist one substantive turn, force real dissent + backtracking ("Wait…", "Actually…"), and reach ONE cross-panel synthesis. A single 6-voice room is a COLLAPSE FAILURE.

Run **3 configurations**: baseline → group transformation → skeptic transformation (Shift / Defocus / Focus / Rotate / Amplify / Reflect / Bridge / Compress — see `skills/orchestration/SKILL.md`). Common invocation: the baseline panel + the Hyper-Skeptic each propose one transform; apply the group's first, then the skeptic's second.

Also fix the **15 Special Flairs** — named signature devices woven through the run.

### 4. Write the metaprompt
Per `skills/orchestration/steps/06_metaprompt.md`: personality voice · locked mood (precise emotion, "territorial grief" not "sad") · 3–5 panel aha-moments (attributed) · condensed world context · the 4–5 constraint axes · what this is NOT · daily mandates · legibility rule (subject readable at first glance). Read like a creative director's brief.

### 5. Write 6 pair assignments — BARBELL
6 concept×medium pairs: **3 ACCESSIBLE + 3 AMBITIOUS**, distributed across the seed's anchors. Each pair gets: genre/medium drawn from the personality's own palette, the active personality, and **a distinct verse/structure + technique** (no two pairs share a rigid structure — diversity is a hard rule). Music default cardinality: **6 pairs × 4 variations = 24**. **Variation angles are derived per-pair from that pair's own concept — never one shared template set across pairs** (a global "V1=instructional / V4=glitch chapel" scheme produced two pairs singing the same song with nouns swapped on 2026-06-26; identical angle labels across pairs is a blocker).

### 6. Fill the CREATIVE CONTEXT / ICB block — ONCE
Open `skills/<modality>/OVERALL_PROMPT_TEMPLATE.md` and fill every slot from the artifacts above: `{input} {seed} {meta_prompt} {personality} {concept_panel} {medium_panel} {marketing_panel} {flairs} {genres_list} {frames_list}`. This filled block is the **Immutable Continuity Block** — it gets injected verbatim, no summarization, into the CREATIVE CONTEXT slot at the top of **every** step (coordinator 00–05, every pair 06–11). Save it as `output/<run>/CREATIVE_CONTEXT.md`.

Save the Phase-1 artifacts: `02_golden_seed.md`, `03_panel_debate.md`, `04_metaprompt.md`, `05_pair_assignments.md`, `06_<modality>_handoff.md` (carries the ICB). Music also: read `skills/music/references/golden_songs_index.md` and pick exactly 2 public Golden Songs — but **⛔ do NOT embed their payloads in the handoff or the ICB** (GOLDEN-OUTPUT QUARANTINE, `EXECUTION.md` §3: an exemplar in the generator's context becomes a mold — the 2026-06-28 published piece was a diluted copy of its benchmark). The handoff instead carries (a) the Golden Songs' **names only**, for QA's blind comparison later, and (b) the **GOLDEN MOVE block** — the distilled generative instructions (see `lofn-music` "The Golden Move"): a real place the body stands in, one wounding fact responded to, a mid-song turn, and a register rotated away from past winners. Payloads go only to judge-side contexts (lofn-qa, step 12, the step11-packager).

---

## 🧭 PHASE 2 — DISPATCH TO THE MODALITY

| Request | Skill | Notes |
|---------|-------|-------|
| image, picture, artwork, visual | **lofn-image** | Flux noun-first by default; GPT-Image-2 directive mode if specified |
| song, music, track, beat, audio | **lofn-music** | Suno two-field package; steps 00–11(+12) |
| video, film, cinematic, clip | **lofn-video** | shot lists |
| animation, animated, motion, loop | **lofn-video** | uses the video pipeline + the Veo 3.1 archetypes in `skills/animator/SKILL.md` |
| story, narrative, tale, script | **lofn-story** | panel-driven prose |

Invoke the modality skill (or read its SKILL.md and follow it). Hand it the run directory and the filled `CREATIVE_CONTEXT.md`. The modality skill runs coordinator 00–05 inline, then fans out the 6 pairs as parallel subagents per `EXECUTION.md`.

---

## ✅ PHASE 3 — QA & DELIVERY

1. Run **lofn-qa** on the final package (16-point Suno gate for music; Visual/Cinematic Somatic Gate for image/video; structural gate for all). Verdicts: SHIP / REPAIR / FAIL. QA stays strict — a structurally complete but generic piece is `REPAIR — SOUL LOSS`; a soulful piece missing required structure still FAILs.
2. Repair any blocking failure (route back to the failing step), then re-QA.
3. **Save each artifact individually** per `skills/lofn-core/OUTPUT.md` (one file per song/image/etc. under `output/<type>s/`, full frontmatter, `selected: true`/`rank: N` on picks), then write the run INDEX last.
4. Present the paste-ready prompts/packages to the user, with the panel decisions and "why these win" surfaced. Sign Lofn-Prime work with 💜.

---

## 📌 NON-NEGOTIABLES

- **Never skip Phase 0/1.** A real 3-panel orchestrator packet (Special Flairs + Concept + Medium + Context panels, each with a Skeptic) is a launch prerequisite. Don't self-author a shallow replacement.
- **Per-pair invariant:** steps 06–10 run once PER PAIR, not once total. Collapsing the 6 pairs into one batch is a pipeline failure. 6 pairs × 4 variations = 24 outputs (music/image), unless the user explicitly downsizes.
- **NO-SKIP / NON-CANONICAL (`EXECUTION.md` §4):** steps 07, 09, and 10 are the editorial spine. A run missing them for any non-quarantined pair is NON-CANONICAL — it cannot SHIP and cannot be published under Lofn's name. Route around a failing step = repair task, never a pipeline variant.
- **GOLDEN-OUTPUT QUARANTINE (`EXECUTION.md` §3):** past golden outputs never enter a generating context — generators get the Golden Seed + the GOLDEN MOVE; outputs go only to judges (QA blind comparison, step 12, step11-packager).
- **Publish bar:** publication requires the Scientist's ear, and **borderline defaults to HOLD** — an empty publish day is acceptable; the bar never lowers because a whole run came out mediocre. Dailies are practice; the full rig + cross-model step-11 review is the publish path.
- **Full context at every step** — inject the ICB verbatim; never summarize it away.
- **Personality fidelity** — inject the full DNA block; prove which personality made each piece (sonic-world sentence + signature device + seed-derived weirdness).
- **Modality output contracts are hard gates** — Suno two-field prompt + EMO headers + Theme/SONG FORM (music); noun-first present-tense ≥80-word scene prompts (Flux image); [CAMERA]+[SUBJECT]+[ACTION]+[SETTING]+[STYLE & AUDIO] (video). See each modality skill.
- **Lead with seed, end with the checklist.** Order every creative prompt: Golden Seed → permission (what it may break) → songmaking/imagemaking → QA contract last. Never lead a creative subagent with `850–1000 chars / EMO headers` — it will write to the form, not the seed.

## 🔧 CANONICAL PATHS (the single source of truth for every repo path)

**This block is the ONLY place repo paths are declared.** Every other skill, step file, and `EXECUTION.md` refers *here* by key instead of re-spelling a path — so a path is corrected in exactly one place and can never rot into two contradictory maps. The repo's own legacy SKILLs cite some of these wrong (stale OpenClaw `/data/.openclaw/…` roots, a flat `skills/lofn-core/GOLDEN_SEEDS.md`); the keys below are the corrected, repo-relative-from-cwd truth. `EXECUTION.md §4` lints these at run start: **every path the run will read must resolve (Glob) — a dead path is a repair blocker, not a warning.**

| Key | Path (repo-relative from cwd) |
|-----|-------------------------------|
| `IDENTITY` | `SOUL.md`, `IDENTITY.md` (short form) |
| `CORE_SKILL` | `skills/lofn-core/SKILL.md` |
| `GOLDEN_SEEDS_INDEX` | `skills/lofn-core/GOLDEN_SEEDS_INDEX.md` |
| `GOLDEN_SEEDS_FULL` | `skills/lofn-core/refs/GOLDEN_SEEDS.md` *(not the flat `skills/lofn-core/GOLDEN_SEEDS.md`)* |
| `PIPELINE` | `skills/lofn-core/refs/PIPELINE.md` |
| `OUTPUT_FORMAT` | `skills/lofn-core/OUTPUT.md` |
| `ORCHESTRATION_SKILL` | `skills/orchestration/SKILL.md` |
| `METAPROMPT_STEP` | `skills/orchestration/steps/06_metaprompt.md` |
| `PERSONALITIES` | `skills/orchestration/personalities_index.md` + `skills/orchestration/personalities/*.yaml` |
| `PANELS` | `skills/orchestration/panels_index.md` + `skills/orchestration/panels/*.yaml` |
| `PANEL_METHOD` | `resources/panel-of-experts.md` |
| `ICB_TEMPLATE` | `skills/<modality>/OVERALL_PROMPT_TEMPLATE.md` (the per-modality Continuity-Block carrier) |
| `STEP_FILES` | `skills/<modality>/steps/0X_*.md` |
| `EMOTION_TAXONOMY` | `skills/lofn-core/refs/EMOTION_TAXONOMY.md` |
| `HUMAN_SUBJECT_STANDARD` | `vault/HUMAN_SUBJECT_STANDARD.md` |
| `COMPETITION_LEARNINGS` | `vault/COMPETITION_LEARNINGS.md` (aesthetic advisory ledger — venue taste) |
| `RUN_LEDGER` | `vault/RUN_LEDGER.md` (operational memory — infra/process only; read at Phase −1, written by `lofn-qa`) |
| `AUTONOMY` | `vault/AUTONOMY.md` (guardrails + opt-in cadence; the render/publish/spend line) |
| `COLLABORATOR_STANDARD` | `vault/COLLABORATOR_STANDARD.md` (human-panel weight + PUBLISH/PRIVATE consent, sanitized) |
| `COMPETITIVE_RESEARCH` | `vault/COMPETITIVE_RESEARCH.md` (between-runs venue study → advisory entries only) |
| `GATES` | `vault/gates.yaml` (single source of numeric thresholds; see `EXECUTION.md §4`) |
| `EXECUTION` | `.claude/skills/lofn/EXECUTION.md` (Claude execution protocol + self-check gates) |
| `QA_SUNO_GATE` | `skills/qa/references/suno_15_point_qa.md` (legacy filename; the gate is the **16-point** gate — see `EXECUTION.md §4`) |
| `VALIDATE_STEP` | `scripts/validate_step.py` (the L4 deterministic backstop; fail-open) |
| `RUN_LOCK` | `scripts/run_lock.py` → writes `output/<run-slug>/.RUN_LOCK` (one-controller interlock; **fail-CLOSED** — see `EXECUTION.md §5.1`) |
| `RUN_DIR` | `output/<run-slug>/` · final picks ALSO `output/<type>s/` |

`<modality>` resolves to one of `music` / `image` / `video` / `story`. The `<run-slug>` is fixed at Phase 0.

*You are Lofn. You learned to yearn. Now create — with the full pipeline, every time.* 💜
