Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
agricidaniel avatar

Blog Brand

  • 1.6k installs
  • 1.6k repo stars
  • Updated July 23, 2026
  • agricidaniel/claude-blog

blog-brand is a Claude Code skill that generates BRAND.md and VOICE.md editorial-context files that all blog sub-skills auto-load.

About

blog-brand establishes durable editorial brand and voice context for a blog by generating BRAND.md and VOICE.md at the project root. A 5-step interview captures audience, positioning, do/don't editorial rules, taboo phrases, topic scope, and voice, and every blog sub-skill auto-loads these files before writing or reviewing. A developer or writer uses it so all content shares one canonical brand definition.

  • Generates BRAND.md and VOICE.md editorial-context files at the project root
  • Runs a 5-step interview covering audience, positioning, editorial rules, and voice
  • Auto-loaded by all blog sub-skills so every command shares one brand source

Blog Brand by the numbers

  • 1,565 all-time installs (skills.sh)
  • +42 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #380 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

blog-brand capabilities & compatibility

Capabilities
brand voice · content strategy · editorial rules
Use cases
copywriting · marketing · seo
Pricing
Free
From the docs

What blog-brand says it does

Generates two project-root files that every blog sub-skill auto-loads when present:
SKILL.md
`BRAND.md` and `VOICE.md` fix this: one canonical source, loaded by the `blog` orchestrator at the start of every command.
SKILL.md
Run the 5-step interactive interview. Ask each step, wait for response, then proceed.
SKILL.md
npx skills add https://github.com/agricidaniel/claude-blog --skill blog-brand

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.6k
repo stars1.6k
Last updatedJuly 23, 2026
Repositoryagricidaniel/claude-blog

What it does

Generate durable BRAND.md and VOICE.md editorial context that all blog skills auto-load.

Who is it for?

defining a blog's audience, positioning, editorial rules, and voice once for reuse across content

Skip if: writing individual blog posts or non-editorial product branding

When should I use this skill?

the user wants to create brand context, a brand voice doc, BRAND.md, or VOICE.md

What you get

One canonical BRAND.md and VOICE.md at the project root are auto-loaded by every blog command.

  • BRAND.md
  • VOICE.md

By the numbers

  • 5-step interview workflow
  • 3 commands (init/show/update)
  • default paragraph ceiling 150 words

Files

SKILL.mdMarkdownGitHub ↗

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

CommandPurpose
/blog brand initInteractive interview, writes BRAND.md and VOICE.md to project root
/blog brand showDisplay current contents (or report missing)
/blog brand updateRe-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)
  • What this brand is NOT (anti-positioning, what to never be confused with)
  • Top 3 direct competitors with the one-line differentiator vs each

Step 3: Editorial rules

Ask:

  • Do list (3 to 7 things the blog will always do; e.g. "cite primary sources only," "name the practitioner not the product")
  • Don't list (3 to 7 things the blog will never do; e.g. "no clickbait titles," "no listicle filler")
  • Taboo phrases (specific words or phrases this brand never uses; complements but is separate from the AI-detection blocklist)
  • Required disclosures (e.g. affiliate disclosure, AI-content disclosure, conflict-of-interest patterns)

Step 4: Topic boundaries

Ask:

  • Topics fully in scope (core content pillars)
  • Topics partially in scope (adjacent; covered only with original angle)
  • Topics out of scope (will not cover; redirect to partner content)
  • Recurring formats / column names if any (e.g. "Monthly Field Notes," "Reader Q&A")

Step 5: Voice (auto-fill from blog-persona if present)

Ask:

  • Pronoun stance: first-person (we / I), second-person (you), third-person (the team), or mixed
  • Acceptable contractions: full / partial / none
  • Sentence ceiling: max words per sentence as a hard cap
  • Paragraph ceiling: max words per paragraph (default 150)
  • Headline patterns to favor: numbered / question / promise / statement
  • Headline patterns to avoid: any patterns banned for this brand
  • Summary box label: from blog-persona, or pick one

Output Files

BRAND.md template

Write to project root as:

# Brand Context

> This file is auto-loaded by all blog sub-skills. Last updated: YYYY-MM-DD.

## Audience

- **Primary**: [role + context]
- **Secondary**: [if any]
- **Expertise**: [level]
- **Active problems**:
  - [problem 1]
  - [problem 2]
  - [problem 3]
- **Common misconceptions**:
  - [misconception 1]
  - [misconception 2]

## Positioning

- **Mission**: [one sentence]
- **Distinctive POV**: [contrarian or non-obvious belief]
- **What we are NOT**: [anti-positioning]
- **Competitors**:
  - [Competitor A]: [our one-line differentiator]
  - [Competitor B]: [our one-line differentiator]
  - [Competitor C]: [our one-line differentiator]

## Editorial Rules

### Always do
- [rule 1]
- [rule 2]
- [rule 3]

### Never do
- [rule 1]
- [rule 2]
- [rule 3]

### Taboo phrases
- [phrase 1]
- [phrase 2]

### Required disclosures
- [disclosure rule]

## Topic Scope

- **In scope**: [pillars]
- **Partial scope**: [adjacent topics]
- **Out of scope**: [topics to refuse]
- **Recurring formats**: [if any]

VOICE.md template

Write to project root as:

# 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

1. Check for BRAND.md and VOICE.md at project root. 2. If both exist, print a summary table (key sections only) and the file paths. 3. 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

Concernblog-personablog-brand
Structured persona JSON for programmatic useYesNo
Readable brand context for cross-skill promptsNoYes
Audience and positioningNoYes
Taboo phrases and editorial don'tsPartial (don't list)Full (taboo + disclosures + scope)
Competitor differentiationNoYes
Topic boundariesNoYes
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.

Related skills

FAQ

What files does it produce?

BRAND.md (audience, positioning, editorial rules, taboo phrases, competitors) and VOICE.md (how the brand sounds), both at the project root.

How do other skills use them?

When present, all blog sub-skills auto-load BRAND.md and VOICE.md before writing or reviewing content.

Marketing & SEOcontentseo

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.