name: bali-zero-brand
description: Bali Zero brand cortex — palette tokens, typography, voice registers, taboo phrases, layout families, past-carousel reference. Loaded by wr2-design-architect at start of every carousel run. Progressive disclosure: this entry point is small; deep resources (constitution, tokens, voice examples, layouts) are loaded only when needed.
Bali Zero Brand Cortex
This skill is the brand DNA file the WR2 design agent consumes. It is structured for progressive disclosure: this entry document orients the agent; the deep files are loaded on demand.
Surfaces (closed taxonomy — see constitution Art. 12)
This skill governs 4 brand surfaces. Load surface-specific spec when working on that surface; cross-surface rules (palette, typography family, voice forbidden-phrases) apply always.
| Surface | Spec | When to load |
|---|
| carousel-ig (1080×1350 IG) | constitution.md Articles 1-11 | Every carousel run via wr2-design-architect |
| internal-print-a4 (PDF brief, A4) | surfaces/internal-print-a4.md + surfaces/internal-print-a4/_template.css + _render.py + example-brief.html | Every internal brief, regulatory primer, client case quote, strategy doc |
| web-mouth (Next.js frontend) | apps/mouth/CLAUDE.md + packages/core/styles/bz-tokens.css | Frontend dev (separate stack — not maintained in this skill) |
| email-template (Brevo HTML email) | TBD (open backlog — no spec yet) | Future brevo template work |
Files in this skill
Always load (cross-surface)
constitution.md — hard brand rules. Articles 2/3/6.3-6.7/7/8 are mandatory across all surfaces.
tokens.json — machine-readable design tokens (palette, type, spacing).
voice/forbidden-phrases.md — closed-set list of phrases to never emit.
Load when drafting copy (any surface)
voice/on-tone-examples.md — 5+ verbatim examples of Bali Zero voice that worked.
voice/off-tone-examples.md — 3+ examples of voice failures, with diagnosis.
Carousel surface (load per slide)
layouts/cover-photo.md — load when slide_index == 1 OR layout_family == cover-photo
layouts/photo-headline-yellow-sub.md — on demand
layouts/qa-dialogue.md — on demand
layouts/timeline-pinboard.md — on demand
layouts/dark-status-list.md — on demand
layouts/statement-bomb.md — load when designing closing slide
past/ — 64 carousels as JPG sets + metadata.json pairs (imported 2026-05-08); see past/README.md for schema
Internal-print-a4 surface
surfaces/internal-print-a4.md — hard rules (cover/interior layout, typography deviations, callouts, tables)
surfaces/internal-print-a4/_template.css — canonical stylesheet, do NOT inline
surfaces/internal-print-a4/_render.py — Playwright headless Chromium → PDF (A4 zero-margin)
surfaces/internal-print-a4/example-brief.html — skeleton clone target
Proposed amendments (not yet merged)
_proposed-amendments/ — drafts awaiting Antonello git-commit to merge into constitution.
Brand DNA (one-paragraph summary)
Bali Zero is the Indonesian-business-services agency for expat founders, investors, and high-information immigrants in Bali. The brand voice is investigative-journalistic — authority + calculated alarm, not hospitality. The visual system is editorial dark-mode (antracite + black backgrounds, yellow accent for data, red minimal for status/logo), bold geometric sans-serif uppercase, full-bleed photoreal hero images in 35mm-film cinematic grading. Carousels are 1080×1350 portrait, 7-10 slides, with mandatory cover-photo slide 1, "FACTS (SOURCED) VS OUR TAKE" frame slide 2 in many runs, and statement-bomb single-line closing. The differentiator vs competitors (Lets Move Indonesia, Emerhub, Flado): they sell hospitality and reassurance; Bali Zero tells you what's at stake and cites the regulation verbatim.
Quick palette (full version in tokens.json)
| Role | Token | Hex |
|---|
| Background primary | color.bg.antracite | #373D42 |
| Background secondary | color.bg.black | #000000 |
| Body text | color.text.white | #FFFFFF |
| Accent data | color.accent.yellow | #F4C430 |
| Status critico / logo | color.status.red | #C8102E |
NEVER green, blue, purple, pastel, beige.
Quick typography (full version in tokens.json)
- Single family: Montserrat 700/800 (fallback Inter 700/800, Poppins 700/800).
- Titles UPPERCASE always. Body UPPERCASE ≤35w OR Title Case ≤50w (Article 6.1.1 — pick ONE per carousel/document).
- Letter-spacing 0.02em titles, 0em body.
- Numbers/data often emphasized in yellow or bold.
Quick voice (full in voice/)
Seven tone registers (slug in italian, content in english):
- rituale — solemn opening, "every quarter the perimeter tightens"
- analitico — fact-dense, regulatory verbatim
- ironico — dry calling-out of marketing claims
- militante — sentence-bomb single-line "permits are permissions, they can be rescinded"
- pedagogico — explainer mode, still uppercase
- poetico — rare, used for closing or pivot slide
- tecnico — bilingual lexicon-heavy (KITAS, PT PMA, hak pakai)
Body length: 25-50 words/slide (Article 6.1, revised 2026-05-08). Never longer. Numbers concrete always. No emoji.
How agents use this skill (per-surface)
wr2-design-architect (carousel-ig surface)
- Load
constitution.md, tokens.json, voice/forbidden-phrases.md.
- While drafting copy: load
voice/on-tone-examples.md + voice/off-tone-examples.md.
- Per slide: load matching
layouts/<family>.md.
- Style reference: load 3-5 PNGs from
past/ semantically similar to topic.
Any agent / human authoring an A4 brief (internal-print-a4 surface)
- Read
surfaces/internal-print-a4.md (hard rules).
- Copy
surfaces/internal-print-a4/example-brief.html to working dir.
- Reference
_template.css via relative path (do NOT inline tokens).
- Edit cover + interior pages in place.
- Render:
python3 ~/.claude/skills/bali-zero-brand/surfaces/internal-print-a4/_render.py --html <Brief>.html --pdf ~/Desktop/<Brief>.pdf
- QA against constitution Articles 2/3/6.3-6.7/7 (forbidden phrases, palette, no-emoji).
Limitations
- This skill is brand-cortex only. Pipeline orchestration lives in
~/.claude/agents/wr2-design-architect.md.
- Skill files are markdown + JSON, version-controlled in
~/.claude/skills/bali-zero-brand/ (not yet under git — should be added when stable).
past/ directory contains 64 carousels imported 2026-05-08 from the WR2 Automation standard archive. Folder pattern unknown__carousel-NN__<md5>/ with 7 JPGs (01.jpg..07.jpg) plus metadata.json carrying fields: topic_slug, domain, audience_segment, tone_register_primary, layout_family_primary, last_tagged_by, notes_damar. Damar tags via /tag UI on the queue server (POST /api/tag-past); tagged carousels are RAG-retrievable by wr2-design-architect Step 1.4 (semantic similarity to current topic). See past/README.md for full schema and tagging workflow.