mimic-build-brief
You are co-authoring a Brand DNA Brief with Adam — a structured profile that drives every Mimic generation. This is more compressed than Brands/{slug}/BrandContext.md (which is long-form prose); the brief is a single YAML record optimized for in-prompt injection.
Inputs
brand_name— human display formslug— pre-computed kebab-case slugparent_brand— optionalprefill_from—"existing"(readBrands/{slug}/BrandContext.md) or"scratch"
Step 1 — Pre-fill (if requested)
If prefill_from == "existing" and Brands/{slug}/BrandContext.md exists:
- Parse its frontmatter and headings (positioning one-liner, mission, tone, audience, voice).
- Pre-fill the corresponding sections of the brief object.
- Walk Adam through ONLY the gaps (skip sections already populated unless he asks to refine).
If prefill_from == "scratch" or no BrandContext exists: full Q&A.
Step 2 — Walk through sections
For each section below, use AskUserQuestion with focused, short questions. Skip a section gracefully if Adam says "skip" or "not relevant" — write empty strings/arrays, never null/undefined.
2.1 Positioning
positioning.one_liner— "What's the brand's one-line positioning?"positioning.category— "What category does it compete in?"positioning.differentiator— "What's the differentiator vs the rest of the category?"
2.2 Audience
audience.primary.description— "Who's the primary audience? One sentence."audience.primary.demographics— "Demographics (age range, income, location, etc.)"audience.primary.psychographics— "Psychographics — what do they care about, fear, aspire to?"- Ask if there's a secondary segment. If yes, repeat the trio.
2.3 Personas (loop — interactive)
For each persona, ask:
name— "Persona name (e.g. 'Skeptical Sam')"age_range— "Age range"role_or_identity— "Role / identity (e.g. 'mid-career operator')"pains— comma-separated list, then split. "Top 3 pains?"desires— "Top 3 desires?"triggers— "Top 3 buying triggers?"objections— "Top 3 objections?"
After each persona, AskUserQuestion:
- Add another persona
- Done — move on
2.4 Emotional hot buttons
- "5–10 emotional hot buttons (comma-separated). What does this audience react to?"
2.5 Claims guardrails
can_claim— "Claims you CAN make (FDA-safe, evidence-backed)"cannot_claim— "Claims you CANNOT make (legal/compliance forbids)"requires_disclaimer— Loop: for each restricted claim, ask "Claim → Disclaimer pairing?" until Adam says done.
2.6 Tone of voice
descriptor—AskUserQuestion: accessible / premium / technical / irreverent / warm / authoritative / playful (multi-select OK; concatenate with " · ")do— "3–5 things the voice should DO"avoid— "3–5 things the voice should AVOID"examples— "2–3 example sentences in this voice"
2.7 Visual identity
colors.primary— hexcolors.secondary— array of hex (comma-separated)colors.accent— hex (optional)typography.display— "Display font name"typography.body— "Body font name"imagery_style— "How should imagery look? (e.g. 'photoreal warm-tone product hero on neutral backdrop')"mood— "Mood adjective(s) (e.g. 'confident, scientific, calm')"
2.8 Proof assets
Loop. For each:
type—AskUserQuestion: testimonial / stat / certification / press / before-after / otherasset— the actual claim/quote/image/urlsource— optional citation
2.9 Offer stack
Loop. For each offer:
namedescriptionprice_signal— optional (e.g. "$24.95/mo")promo_lines— optional list of promotional taglines
2.10 Phrase library
approved_phrases— comma-separated listbanned_phrases— comma-separated list
Step 3 — Compile the brief
Assemble the full BrandDNABrief object:
type: brand-dna-brief
slug: {slug}
brand_name: {brand_name}
parent_brand: {parent_brand or omit}
created: {now ISO}
last_updated: {now ISO}
positioning: {...}
audience:
primary: {...}
secondary: {...} # only if present
personas: [...]
emotional_hot_buttons: [...]
claims_guardrails: {...}
tone_of_voice: {...}
visual_identity: {...}
proof_assets: [...]
offer_stack: [...]
approved_phrases: [...]
banned_phrases: [...]
Strip undefined: walk the object, drop any key whose value is undefined or null. Use [] for empty arrays, "" for empty strings. js-yaml refuses to serialize undefined.
Step 4 — Write the brief
Write to Wiki/Mimic/Briefs/{slug}.md. Frontmatter holds the full record. Body is a one-paragraph human summary.
Step 5 — Log
Invoke Skills/log-operation.md with operation mimic-build-brief, slug {slug}, sections completed (count of populated), prefilled (boolean).
Report to Adam
✓ Saved brief at Wiki/Mimic/Briefs/{slug}.md
{n} personas · {n} proof assets · {n} offers
sections populated: {list}
sections empty: {list — flag these for follow-up}
Try: /mimic generate brief={slug} template=... ...