blog-brand
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.
Install / Use
npx skills add AgriciDaniel/claude-blog --skill blog-brandInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Our assessment of blog-brand
blog-brand scores 91/100 on our quality scale, 753rd of 2,176 Automation skills we index (top 35%).
Its SKILL.md is 9.0 KB long, well organised into 33 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.
With 2,282 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 4 days ago, so blog-brand is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-09-29. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
blog-brand compared with similar skills
All 4 of these similar skills score higher than blog-brand; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| blog-brand (this skill)by AgriciDaniel | 91 | 2.3k | 4d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 86.1k | 13d ago | CLAUDE.md |
| rufloby ruvnet | 100 | 73.5k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 84.4k | today | MCP Server |
| LocalAIby mudler | 100 | 49.3k | today | MCP Server |
Frequently asked questions
- How do I install blog-brand?
- Run
npx skills add AgriciDaniel/claude-blog --skill blog-brand. The install tabs above show the steps for each supported agent. - Which AI agents does blog-brand work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is blog-brand safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is blog-brand still maintained?
- The repository was last updated 4 days ago, so blog-brand is actively maintained.
Skill content
View source on GitHubname: 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 sayVOICE.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 and Canonical Entity
Ask:
- Official entity name (legal or public brand name)
- Homepage URL (canonical brand front door)
- Logo URL or file path (preferred square or SVG asset)
- sameAs profiles (LinkedIn, X, YouTube, Crunchbase, GitHub, or other official profiles)
- Wikidata Q-ID if one exists; leave blank if not notable
- 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; separate from the repository's optional project style list)
- 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
- **Official entity name**: [brand/entity]
- **Homepage**: [canonical URL]
- **Logo**: [URL or file path]
- **sameAs profiles**:
- [profile URL 1]
- [profile URL 2]
- **Wikidata Q-ID**: [QID or none]
- **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
- Check for
BRAND.mdandVOICE.mdat 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.
Related Skills
Agent-Reach
86.1kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
ruflo
73.5k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
Scrapling
84.4k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
LocalAI
49.3kLocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
