---
name: imperium-presentation
description: Build Imperium presentation slides using the verified hybrid workflow (Higgsfield AI background/imagery + PIL composite for brand-exact text/logos/elements). Triggers on "Imperium slide", "Imperium presentation", "Imperium deck", "cover slide", "case studies slide", "stat slide", "process slide", "pricing slide", "RE-OS pitch deck". Outputs 4K 16:9 PNG matching the locked Imperium brand system. Supports Dark Premium and Light Minimalism visual modes. Designed for multi-chat parallel work via `presentations/imperium-deck-v1/` folder framework.
---

> **PORTABILITY NOTE (added 2026-07-27).** This process doc is published from Imperium's
> internal operating system. The METHOD is fully portable: prompts, model choices and
> parameters, CSS/SVG recipes, QA gates, and cost discipline all work anywhere. Paths that
> start with `~/.claude/`, `<repo-root>/`, `presentations/`, `scripts/`, or `memory/` are
> internal conveniences on the author's machine; substitute your own equivalents (any
> headless-browser screenshot loop, any image toolchain). Same for internal distribution
> steps (Google Drive folder IDs, Telegram bots) and `<your-vercel-team>` deploy scopes:
> use your own storage, messaging, and hosting. Working style anchors ship WITH this kit
> in `../cards/`, `../console/`, and `../folder/` — start from those, not from zero.

# imperium-presentation skill

## Purpose

Build Imperium presentation slides FAST and consistently. The hybrid workflow (AI background + PIL composite) was proven on slides 01 (cover) and 02 (case studies) on 2026-05-24. This skill packages that recipe so any chat can build a slide without re-deriving the process.

## When to use

- "Build the Imperium cover slide" / "Imperium intro slide"
- "Build the case studies slide" / "partners wall"
- "Build slide 03 / 04 / NN of the Imperium deck"
- "Imperium pitch deck" / "Imperium presentation"
- "RE-OS pitch slide"
- Any request to produce visual brand assets for Imperium presentations

## When NOT to use

- Logo design or brand identity work (not a slide)
- Single image generation for social/blog (use `higgsfield-generate` skill)
- Video presentations (defer — looping animations are future work)
- Non-Imperium brand presentations

## The hybrid workflow (proven 2026-05-24)

1. **AI handles atmosphere** — backgrounds, abstract imagery, photographic scenes. Per the AGENTS.md §3 model routing table: Higgsfield `nano_banana_2` with the palette swatch as a media reference (step up to `nano_banana_pro` on hard cases). GPT Image 2 is the edit-endpoint finisher only, called direct via the OpenAI API, never for slide-background generation through Higgsfield. Palette-swatch reference adds another 5-10% brand consistency on top.

2. **PIL composite handles brand-exact elements** — Imperium logo, wordmark, client logos, exact metrics, headlines. NEVER ask AI to render specific text or reproduce logos. Image generators hallucinate at 1-in-4 to 1-in-8 rate on stylized text.

3. **Distribute to Drive Media Hub + Telegram + commit script.** Master PNG lives in Drive (canonical media home per rule 22). Script lives in git.

## Read these FIRST (every chat)

- [BRAND-BOOK.md](../../BRAND-BOOK.md) — canonical brand system (palette lives in [imperium-tokens.css](../../imperium-tokens.css) / [tokens.json](../../tokens.json))
- `presentations/imperium-deck-v1/` (README + _shared/brand-quickref.md + per-slide SPEC.md) — author-machine deck workspace, not included in the public kit; external users start a slide folder of their own with the same shape (SPEC.md per slide)

## Brand system (mirror of tokens.json — do not edit here; brand-v5 superseded the champagne/walnut palette 2026-07-26)

- **Load `assets/imperium/brand-v5/` FIRST** (BRAND-BOOK.md + imperium-tokens.css). If anything below conflicts with the book, the book wins.
- **Greens only**: primary `#11462C` Racing Green, mint `#4CB782`, bali `#3FA085`, deep `#0A1F14`. Neutral spine: Paper `#F7F6F1`, Sage `#EDF2E8`, Bone `#F4F1EA`, Ink `#15130E`. One Ember `#E23A28` max per view.
- **No warm browns (champagne/taupe/walnut are RETIRED), no neon, no pure white fills**
- **No em dashes** (rule 15)
- **Fonts**: Emilio Light (display; SemiBold for emphasis), Switzer Regular/Medium/Semibold (body/UI/numbers). Constantia/Bahnschrift are retired.
- **Radius 40px** for cards/panels, 10px inputs, pill CTAs.

## Higgsfield setup (one-time, already done)

Generate the palette swatch from the kit (the hosted copy is [brand-palette-swatch.png](../../brand-palette-swatch.png), or rebuild it from tokens.json — a simple labelled grid of the ten locked hexes), upload it to your Higgsfield account (`media_upload` → `media_confirm`), and record YOUR OWN media ID. Media IDs are account-bound, so every account registers its own. Then use it in EVERY `generate_image` call:

```
medias: [{ role: "image", value: "<your-registered-swatch-media-id>" }]
```

This anchors color fidelity to the brand palette. Verified on cover + case studies — all generated images came back palette-consistent.

## Two visual modes

### Dark Premium (default for hero slides)

- Dominant: deep British Racing Green
- Atmospheric real-world photography, dusk lighting (environment doctrine, BRAND-BOOK §5b: real scenes, no sci-fi effects)
- Mint edge glows used sparingly, deep-green shadows
- Premium aerospace / Bloomberg Terminal at dusk aesthetic
- Used for: cover, case studies, team, CTA

### Light Minimalism (new direction — for analytical/stat slides)

- Dominant: warm off-white (`--paper` #F7F6F1 or `--bone` #F4F1EA from tokens — NOT pure white)
- Generous negative space
- Simple geometric shapes, clean dividers
- Hero metric in Racing Green, supporting text in muted green `--racing-350` (#46705C, from tokens)
- LESS photography, MORE graphic design
- Could be code-generated entirely (no Higgsfield needed for simple stat slides)
- Used for: hero stats, process diagrams, pricing, methodology

Per Alex 2026-05-24: "Lean into white a little bit more, lean into minimalism, maybe more graphic design, cleaner shapes." The dark direction was getting heavy across slides.

## Workflow recipe (Dark Premium hero slide)

1. **Plan** — read the slide SPEC.md. Confirm copy, layout, references.
2. **Preflight cost** — `mcp__higgsfield__generate_image` with `get_cost: true`.
3. **Generate background(s)** — `nano_banana_2` (routing table, AGENTS.md §3), `medias=[palette_swatch]`. Prompt skeleton:
   ```
   Ultra-premium [type] background, [aspect ratio] [resolution].
   Dominant color: DEEP BRITISH RACING GREEN #11462C matching the deep green
   in the top-left quadrant of the reference color swatch. Supporting accents
   in mint #4CB782, bali #3FA085, bone #F4F1EA. ABSOLUTELY NO other
   colors. No blues, no purples, no neons, no warm browns.
   Visual style: [photographic | architectural | studio product light] — real-world
   environments only (BRAND-BOOK §5b): no aurora atmospheres, no laser lines, no
   glowing particles, no floating dust.
   Mood: timeless, restrained, expensive, Aston Martin, Bloomberg at dusk.
   STRICTLY NO: text, letters, numbers, logos, watermarks, UI overlays.
   The four colors in the reference swatch are the ONLY colors permitted.
   ```
4. **Composite with PIL** — start from existing template script in `scripts/imperium-slides/` (author-machine; externally, any PIL/canvas compositor works). Slide type scale at 4K (3840x2160) — defaults, scale linearly for other sizes: hero metric Emilio Light ~420px · slide h1 Emilio Light ~220px · subhead Switzer ~72px · body Switzer ~64px · eyebrow/labels Switzer Medium ~44px tracked caps (0.22em). Layout patterns:
   - Imperium logo top-left at (160, 130) for header zone OR inside col 1 at (90, 90) for full-bleed
   - "IMPERIUM" wordmark next to logo in Emilio, tracked caps 0.14em
   - Bone (244, 241, 234) for prominent text on green, mint (76, 183, 130) for accents/labels
   - Hairline bone dividers at 60-180 alpha
5. **Quality gate** (AGENTS.md §4) — score 1-10 across token accuracy / composition / physics / typography / brief fit. Iterate if avg <9.5 or any dim <8; max 3 iterations.
6. **Distribute** — see checklist below.

## Workflow recipe (Light Minimalism slide)

1. **Decide if Higgsfield needed at all** — many minimalist slides need ONLY PIL (no AI background). Solid off-white + shapes + numbers + Emilio Light (hero figures) / Switzer (labels).
2. **If background needed**: prompt a "warm off-white softly textured paper, subtle warm grain, no other elements" — much cheaper to render and reliably consistent.
3. **Composite with PIL** — use shape primitives (rectangles, circles, lines), avoid drop shadows, use Emilio Light for hero, Switzer for body.

## Multi-chat parallel coordination

Critical: each chat picks ONE slide and works it independently. Use the deck workspace's README (author-machine: `presentations/imperium-deck-v1/README.md`; not in the public kit) as the source of truth.

1. **Claim a slide** — set its STATUS.md to `in-progress (chat: <name>)`
2. **Read SPEC.md** — the slide's copy, layout, references
3. **Build per recipe** above
4. **Update STATUS.md** to `shipped` and update README.md row
5. **Don't touch other slides** unless explicitly asked

If SPEC.md doesn't exist yet for the slide, ASK Alex for the copy + layout direction before generating. Don't fabricate copy.

## Distribution checklist (every shipped slide)

```
1. Save master at presentations/imperium-deck-v1/NN-slug/master.png
2. Upload to Drive Media Hub > Content Assets:
   gws drive files create --upload <path> --params '{"supportsAllDrives": true}' \
     --json '{"name": "imperium-NN-slug-master-YYYY-MM-DD.png", "parents": ["<your-drive-folder-id>"]}'
   Save returned file ID — that becomes the Drive web URL.
3. Send to Telegram content bot:
   cd automations/telegram_bot && node lib/telegram-send.js \
     --file <path> --caption "<one-line>" --bot content
4. Update presentations/imperium-deck-v1/README.md (status + Drive URL)
5. Update NN-slug/STATUS.md to "shipped"
6. Commit the SCRIPT (not the PNG — *.png is gitignored, lives in Drive)
```

## Output convention — 3 links per asset (rule 24 extended)

> AUTHOR-MACHINE CONVENIENCE (see the PORTABILITY NOTE at the top). External users: put
> deliverables in your working directory, one folder per deliverable (AGENTS.md §4), and
> link them however your environment renders links.

For every shipped asset, give Alex THREE clickable paths:

1. **Local relative path** (markdown link, opens in VSCode):
   `[master.png](presentations/imperium-deck-v1/02-case-studies/master.png)`
2. **Drive web URL** (opens preview in browser):
   `[Drive preview](https://drive.google.com/file/d/{FILE_ID}/view)`
3. **file:// URL** (paste into browser for full-size local):
   `file:///<repo-root>/presentations/imperium-deck-v1/02-case-studies/master.png`

The Drive URL is the most useful because it opens IN A BROWSER (preview, fullscreen, share-able). Always include it.

## Cost reference

| Action | Credits | Time |
|---|---|---|
| 16:9 4K high (cover backgrounds) | ~12 | ~60s |
| 9:16 2K high (column images) | ~7 | ~30s |
| 9:16 2K medium (drafts/scratch) | ~3 | ~20s |
| PIL composite (no AI) | 0 | ~5s |
| Image-to-video (looping) | TBD — preflight before running | minutes |

> Credit figures are historical (measured on the pre-routing-table pipeline) — treat as
> ballpark; preflight with `get_cost: true` for real numbers on the current model.

Per-slide ballpark: 12-50 credits for fully-photographic; 0-7 credits for Light Minimalism.

## Known limitations + workarounds

- **Source photos prompted dark/green stay dark/green.** PIL post-process tint adjustment has a floor. If a slide still reads "too green" after `apply_green_tint(strength=0.0, saturation=1.18)`, REGEN the source photos with brighter prompts (lighter sage/paper grounds, softer mid-tones, lighter overall — greens and neutrals only) at 7 credits each.
- **GPT Image 2 can hallucinate text.** Never put critical text/numbers into AI prompts. Always render via PIL.
- **Multi-logo composition in one AI image is unreliable.** 4 logos in one prompt = mangled letterforms. Always upload logos as separate Elements OR composite via PIL.
- **Serif display fonts can miss some unicode glyphs.** `→` and standalone `·` may render as missing-glyph boxes in Emilio at small sizes. Use ` / ` or `  ·  ` (with surrounding spaces) and test at small render scales.

## Future directions (documented, not built)

### React deployment

End goal: the deck plays as a Next.js / Reveal.js / Slidev app for animations, dynamic text entry, looping logos, ambient video. Won't be deployed to public web — runs locally for live presentations.

Architecture sketch:
- One page per slide
- AI-generated PNG as base layer (zero JS overhead)
- React/Framer Motion for text/element entry animations
- Emilio + Switzer loaded via `@font-face` from the kit's `fonts/` directory
- Keyboard navigation: arrow keys, space to advance, esc to overview
- Alternatives worth comparing before building: **Reveal.js** (battle-tested HTML/CSS), **Slidev** (Vue-based, dev-friendly), **Keynote** (offline-first, beautiful transitions, zero dev cost)

### Looping ambient animations

Higgsfield image-to-video with same start/end frame → seamless loop behind static slide elements. Subtle parallax / atmospheric shimmer. **Cost compounds** — 10 slides × video credit ≠ trivial. Defer until layouts are locked + we know which slides benefit.

### RE-OS pitch deck variant

Derivative deck for the Bali Real Estate event 2026-05-24. Pulls slides 01-02 from this deck, adds RE-OS-specific demo screens. Source specs live in the author's research workspace (`research/bali-realestate-event-2026-05-24/`, not in the public kit) — the method above is self-sufficient without them.

## Related skills + rules

- **`imperium-brand` — load FIRST: `assets/imperium/brand-v5/` is the canonical colour/type/voice system for every Imperium deck (CLAUDE.md rule 21). Greens only, Emilio + Switzer, radius 40.**
- `higgsfield-generate` — general Higgsfield image/video generation
- `media-hub` — Drive Media Hub auto-save (rule 07)
- `quality-gate` — post-deliverable iteration (the loop is inline in AGENTS.md §4)
- Rule 22 — Dropbox/Drive canonical media (PNG in cloud, script in git)
- Rule 24 — clickable links convention (extended above to add Drive web URL)
- Rule 26 — Alex Soul ID (only relevant if a slide needs an "image of Alex")

## Distribution shorthand

When done, paste this template back to Alex (filled in):

```
## File paths

- **Local:** [NN-slug/master.png](presentations/imperium-deck-v1/NN-slug/master.png)
- **Drive (open in browser):** [Preview](https://drive.google.com/file/d/{FILE_ID}/view)
- **Browser fallback:** file:///<repo-root>/presentations/imperium-deck-v1/NN-slug/master.png
- **Telegram:** sent via Content bot
- **Script:** [scripts/imperium-slides/NN-slug.py](scripts/imperium-slides/NN-slug.py)

## Cost
<X> credits

## Quality gate
quality gate: avg <X>/10, lowest dim <Y> — [one-line summary; ship bar is avg ≥9.5, no dim <8]
```
