| name | blog-brand |
| description | Establish durable brand and voice context for cross-skill consumption. Generates BRAND.md (audience, positioning, do/don't editorial rules, taboo phrases, competitor differentiation) and VOICE.md (existing persona JSON re-expressed as readable prose), both written to the project root. When present, all blog sub-skills auto-load these files before writing or reviewing. Pairs with blog-persona, which manages the structured persona JSON. Use when user says "blog brand", "create brand context", "brand voice doc", "BRAND.md", "VOICE.md", "establish editorial brand", "brand guidelines for blog".
|
| user-invokable | true |
| argument-hint | [init|show|update] |
| license | MIT |
| id | blog-brand |
| domain | content |
| invoked_by | ["blog-writer"] |
| depends_on | [] |
Blog Brand: Durable Editorial Context
Generates two project-root files that every blog sub-skill auto-loads when present:
BRAND.md: who the audience is, what the brand stands for, what to never say
VOICE.md: how the brand sounds, structurally and lexically
These are the editorial equivalent of impeccable's PRODUCT.md / DESIGN.md pattern: persistent context that survives across sessions and propagates to every command.
Why this exists
Today, persona JSON (from blog-persona) is loaded by some skills and not others. Topic-cluster context lives inside cluster vaults. Competitor positioning lives nowhere. Each blog command re-derives "what is the brand" from whatever context it has.
BRAND.md and VOICE.md fix this: one canonical source, loaded by the blog orchestrator at the start of every command.
When neither file exists, behavior is unchanged from v1.7.1. Backward compatible.
Commands
| Command | Purpose |
|---|
/blog brand init | Interactive interview, writes BRAND.md and VOICE.md to project root |
/blog brand show | Display current contents (or report missing) |
/blog brand update | Re-run the interview with current values as defaults |
Init Workflow
Run the 5-step interactive interview. Ask each step, wait for response, then proceed. If blog-persona JSON already exists, pre-fill voice answers from it.
Step 1: Audience
Ask:
- Primary audience role (e.g. "head of marketing at a 50-500 person B2B SaaS")
- Secondary audience (optional)
- Reader expertise level: beginner / intermediate / advanced / mixed
- Problems the reader is actively trying to solve (3 to 5 bullets)
- Common misconceptions the audience holds (used to anchor information gain)
Step 2: Positioning
Ask:
- One-sentence brand mission (what the brand helps people do)
- Distinctive point of view (the contrarian or non-obvious belief that shapes content)
- (anti-positioning, what to never be confused with)