Download brain/.raw/sources/claude-blog-skill/skills/blog-brand/SKILL.md from the publisher, or copy the path and open the repository. PlugMCP lists the skill and does not host the file.
Where does blog-brand live?
The publisher keeps it at https://github.com/AgriciDaniel/claude-blog.
Which agents can use blog-brand?
Claude, Cursor, and Codex can read a SKILL.md you add from the publisher's repository.
>
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, the blog orchestrator auto-loads these files for write, rewrite,
brief, outline, calendar, and strategy workflows. 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
Blog Brand: Durable Editorial Context
Generates two project-root files that the blog orchestrator auto-loads for supported writing and planning commands 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")
# Voice Context
> This file is auto-loaded by all blog sub-skills. Last updated: YYYY-MM-DD.
## Pronoun stance
[first-person / second-person / third-person / mixed]
## Lexical rules
- **Contractions**: [full / partial / none]
- **Sentence ceiling**: [N words max]
- **Paragraph ceiling**: [N words max, default 150]
- **Summary label**: [Key Takeaways / TL;DR / etc.]
## Headline patterns
- **Favor**: [list]
- **Avoid**: [list]
## Voice fingerprint (from blog-persona)
- Funny vs serious: [0.0 to 1.0]
- Formal vs casual: [0.0 to 1.0]
- Respectful vs irreverent: [0.0 to 1.0]
- Enthusiastic vs matter-of-fact: [0.0 to 1.0]
## Readability target
- Audience tier: [consumer / professional / technical]
- Flesch Grade: [range]
- Flesch Ease: [range]
## Reference samples
- [URL 1] (extracted patterns: [summary])
- [URL 2] (extracted patterns: [summary])
Show Workflow
Check for BRAND.md and VOICE.md at project root.
If both exist, print a summary table (key sections only) and the file paths.
If one or both are missing, print which are missing and suggest /blog brand init.
Update Workflow
Same as Init, but pre-fills every answer with the current value. The user can press enter to accept or type a new value. After collecting all answers, overwrite both files with the new contents and update the Last updated: line.
Integration with the blog orchestrator
When /blog write, /blog rewrite, /blog brief, /blog outline, /blog calendar, or /blog strategy runs, the orchestrator (skills/blog/SKILL.md) checks for BRAND.md and VOICE.md at the project root. If present, the contents are injected into the system prompt for downstream agents (blog-researcher, blog-writer, blog-seo, blog-reviewer).
If absent, behavior is unchanged. The orchestrator does not prompt the user to create them; they are opt-in context.
Relationship to blog-persona
Concern
blog-persona
blog-brand
Structured persona JSON for programmatic use
Yes
No
Readable brand context for cross-skill prompts
No
Yes
Audience and positioning
No
Yes
Taboo phrases and editorial don'ts
Partial (don't list)
Full (taboo + disclosures + scope)
Competitor differentiation
No
Yes
Topic boundaries
No
Yes
Voice fingerprint (tone sliders)
Yes (canonical)
Mirror (read-only)
blog-brand does not replace blog-persona; it consumes it. The persona JSON remains the source of truth for tone dimensions, sentence-length distribution, and contraction frequency. VOICE.md mirrors the readable parts so prompts are self-contained.
If no persona exists when /blog brand init runs, the voice questions still produce a VOICE.md. Users who want programmatic enforcement can run /blog persona create after.
Error Handling
Project root unclear: ask the user where to write the files. Default is the current working directory.
Files already exist on init: ask whether to overwrite or run update instead.
Persona referenced but missing: ask whether to leave the persona reference blank or create one.
Reader provides minimal answers: prompt for at least 2 audience bullets and 3 editorial rules; refuse to write skeletons.
How do I install blog-brand?
Download brain/.raw/sources/claude-blog-skill/skills/blog-brand/SKILL.md from the publisher, or copy the path and open the repository. PlugMCP lists the skill and does not host the file.
Where does blog-brand live?
The publisher keeps it at https://github.com/AgriciDaniel/claude-blog.
Which agents can use blog-brand?
Claude, Cursor, and Codex can read a SKILL.md you add from the publisher's repository.