/document-review — Brand Document Audit
You audit the brand/ directory for quality: completeness, consistency, and freshness. You report problems — you never fix them. Fixes belong to domain skills (e.g., /audience-research fixes audience.md).
For brand memory protocol, see /cmo rules/brand-memory.md.
On Activation
- Verify
brand/directory exists. If it does not exist, report Overall Health as Not Started and recommendmktg init. Skip all phases. - Read all 9
brand/files (or confirm which are missing). - Determine audit scope based on user request.
- Run all four phases sequentially.
Phase 0: Assess Scope
| Request | Scope |
|---|---|
| "review brand files" | Full brand/ audit (default) |
| "check audience.md" | Single-file deep review |
| "is my brand consistent?" | Consistency-only (Phase 2) |
| "what's stale?" | Freshness-only (Phase 3) |
| No specific request | Full brand/ audit |
For single-file reviews, still cross-reference against other brand files for consistency.
Phase 1: Completeness Check
For each of the 10 brand files, assess status:
Profile Files (7)
These should contain substantive content beyond the template scaffold.
| File | Key Sections | Owner Skill |
|---|---|---|
voice-profile.md | Voice DNA (tone, personality, vocabulary), do/don't examples | /brand-voice |
positioning.md | Core positioning (category, for, unlike, we), angles | /positioning-angles |
audience.md | Primary audience (who, pain points, watering holes), personas | /audience-research |
competitors.md | Named competitors with positioning, strengths, weaknesses | /competitive-intel |
keyword-plan.md | Priority keywords table (keyword, intent, difficulty, priority) | /keyword-research |
creative-kit.md | Brand colors, typography, visual style | /creative |
stack.md | Available tools (email, social, video, search, media) | mktg init |
Scoring:
| Score | Meaning | Criteria |
|---|---|---|
| complete | Ready for use | File exists, has substantive content beyond template, key sections populated |
| partial | Needs work | File exists but some key sections are empty or still contain template placeholders (<!-- Generated by mktg init --> without real content below) |
| empty | Template only | File exists but matches the mktg init template exactly (no customization) |
| missing | Not created | File does not exist |
How to detect template-only content:
- Look for lines like
- **Tone:**with no value after the colon - Look for empty table rows
- Look for
<!-- Generated by mktg init. Fill in or let /cmo build this. -->as the only substantive comment - Profile files with fewer than 5 lines of real content (excluding headers and comments) are likely empty
Append-Only Files (2)
| File | Purpose | Owner |
|---|---|---|
assets.md | Log of created assets | All skills (append) |
learnings.md | What worked, what didn't, audience insights | All skills (append) |
Scoring:
| Score | Meaning | Criteria |
|---|---|---|
| complete | Has entries | File exists with dated entries |
| empty | No entries | File exists but contains only the header/comment |
| missing | Not created | File does not exist |
Append-only files are never "partial" — they either have entries or they don't.
Phase 2: Consistency Check
Cross-reference files for contradictions. Only check files that are complete or partial (skip empty and missing).
Cross-References to Check
| Check | Files Involved | What to Look For |
|---|---|---|
| Audience alignment | positioning.md ↔ audience.md | Does positioning's "For:" match audience's primary persona? |
| Voice-brand fit | voice-profile.md ↔ positioning.md | Does the tone match the brand positioning? (e.g., playful voice + enterprise positioning = mismatch) |
| Keyword-positioning alignment | keyword-plan.md ↔ positioning.md | Do target keywords reflect the positioning angles? |
| Competitor consistency | competitors.md ↔ positioning.md | Are competitor names consistent across both files? |
| Audience-keyword fit | audience.md ↔ keyword-plan.md | Do keywords match the language/pain points of the target audience? |
| Stack-skill alignment | stack.md ↔ all profile files | Do other files reference tools or channels not listed in stack.md? |
| Creative-voice alignment | creative-kit.md ↔ voice-profile.md | Does visual style complement the voice? (e.g., minimalist design + maximalist voice = tension) |
| Learnings integration | learnings.md ↔ all profile files | Are learnings reflected in strategy? (e.g., learning says "short subject lines work" but voice profile favors long-form) |
Contradiction Severity
| Severity | Meaning | Example |
|---|---|---|
| high | Files directly contradict | Positioning targets "enterprise CTOs" but audience.md says "indie developers" |
| medium | Files are misaligned but not contradictory | Voice is "casual and fun" but positioning is "premium and exclusive" |
| low | Minor inconsistency | Different competitor names used (abbreviation vs full name) |
Phase 3: Freshness Check
Flag files that may be outdated.
Freshness Rules
- Profile files: Check file modification date. Flag as stale if older than 30 days.
- Append-only files: Always considered current if they exist (they accumulate, not expire).
- No modification date available: Flag as "freshness unknown — recommend re-running owner skill."
Staleness Signals (Beyond Date)
- File references a competitor that no longer exists or has rebranded
- Positioning mentions a feature the product no longer has
- Keywords target trends that have passed
- Audience describes a persona the product has pivoted away from
Note these as "content staleness" separately from "date staleness."
Phase 4: Audit Report
Output a structured audit report. This is the primary deliverable.
Report Format
# Brand Audit Report
**Date:** YYYY-MM-DD
**Scope:** [Full audit | Single file | Consistency only | Freshness only]
**Overall Health:** [Healthy | Needs Attention | Incomplete | Not Started]
## Summary
- **Files:** X/9 complete, Y partial, Z empty, W missing
- **Contradictions:** X found (H high, M medium, L low)
- **Stale files:** X flagged
## Completeness
| File | Score | Notes |
|------|-------|-------|
| voice-profile.md | complete | All sections populated |
| positioning.md | partial | Missing "Unlike" differentiator |
| audience.md | missing | — |
| competitors.md | empty | Template only |
| keyword-plan.md | complete | 12 keywords mapped |
| creative-kit.md | partial | Colors defined, typography missing |
| stack.md | complete | 5 tools configured |
| assets.md | complete | 8 entries |
| learnings.md | empty | No entries yet |
## Contradictions
### [Severity]: [Short description]
- **Files:** file-a.md ↔ file-b.md
- **Detail:** [What contradicts what]
- **Recommendation:** [Which file to update and how]
## Freshness
| File | Last Modified | Status | Action |
|------|--------------|--------|--------|
| voice-profile.md | 15 days ago | current | — |
| positioning.md | 45 days ago | stale | Re-run /positioning-angles |
## Recommended Next Steps
Priority-ordered list of skills to run:
1. **Run `/audience-research`** — audience.md is missing. This blocks positioning and copy quality.
2. **Run `/positioning-angles`** — positioning.md is stale (45 days) and missing differentiator.
3. **Run `/competitive-intel`** — competitors.md is still template-only.
Overall Health Scoring
| Health | Criteria |
|---|---|
| Healthy | 7+ files complete, 0 high contradictions, 0 stale files |
| Needs Attention | 5-6 files complete, or 1+ high contradicti |