Brand Review (Content)
Quality gate between drafting and posting. Optimized for indie-hacker / build-in-public content where authenticity is the moat. Adapted from Anthropic's marketing/brand-review skill, stripped of corporate-compliance framing.
When to Use
- User pastes a draft and asks "is this good", "review this", "any feedback"
- Output of
draft-post needs a second pass before shipping
- User wants to audit existing posts to catch voice drift over time
When NOT to Use
- Initial drafting → use
draft-post
- Reply to someone else's post → use
reply-research
- Documenting brand voice from scratch → see the "Brand Voice Documentation" section below, then save the result somewhere persistent (skill, memory, or vault note)
Inputs
- Content to review — paste, file path, or URL. Accept multiple pieces for batch review.
- Channel context — X, LinkedIn, blog, etc. Standards shift by channel.
- Brand voice source — if user has documented voice (in this skill's reference files, memory, or vault), apply it. Otherwise use the defaults below and offer to document afterward.
Review Dimensions
1. AI-ism Detection (the highest-severity check for indie content)
Flag any of these as HIGH severity:
| Pattern |
Why it kills authenticity |
| "leverage", "unlock", "game-changer", "revolutionize" |
Universal corporate-AI tells |
| "seamless", "holistic", "robust", "synergy", "cutting-edge" |
Same |
| "In today's fast-paced world..." |
Opener used by every AI blog |
| "Let's dive in" / "Let's unpack" |
Pure filler |
| "It's important to note that..." |
Hedge that adds nothing |
| "This is a game-changer for X" |
Manufactured stakes |
| Three-bullet structures where one sentence works |
Listicle bloat |
| Em-dashes followed by reformulations of the same point |
Padding |
| "Not just X, but Y" parallel structure repeated |
AI rhythm tell |
| Tweets that end with engagement bait ("Thoughts?", "Agree?") |
Generic |
Flag and propose a rewrite for every instance.
2. Specificity Check
For build-in-public content specifically:
- Are there real numbers? ("47 users" beats "some users")
- Are products/tools named? ("Hermes on a Hetzner CX22" beats "my server")
- Are failures named? Or only wins? (Failure stories drive 2-3x engagement)
- Is there a real trigger event? (What happened today, not "thoughts on X")
Flag vague claims as MEDIUM. Push the writer toward specifics.
3. Voice Consistency
If brand voice is documented (see Documentation Framework below), compare each section against:
- Defined voice attributes (e.g. "warm, dry, technical")
- Tone calibration for the channel (X is punchier than LinkedIn)
- Preferred vs avoided terms
- POV consistency (don't drift between "I" and "we")
If voice is undocumented, evaluate against generic indie-hacker defaults:
- First-person consistent
- Past tense for stories, present tense for live updates
- No marketing-speak
- Honest about scope and impact
4. Structural Hygiene
- Hook — does the first 8 words earn the click?
- One idea — single tweet should have one point, not three
- Threads — does each tweet stand alone? Is the structure (setup → body → reversal → CTA) intact?
- CTAs — only present if real. No manufactured "DM me" lines.
- Length — tight is better. Cut filler ruthlessly.
5. Authenticity Flags
Always check:
- Manufactured stakes — "This changed everything" when it didn't
- Borrowed authority — claims that imply expertise the writer doesn't have
- Fake humility — "I'm just a humble builder" patterns
- Inflated metrics — rounding, vanity numbers, cherry-picked timeframes
- Stolen frames — phrasing that's clearly lifted from another big account
6. Hard No's (rarely needed but worth checking)
- Unsubstantiated comparative claims about real competitors
- Health/financial/legal claims without grounding
- Quotes attributed without permission
- Content that punches down
Output Format
## Brand Review: [Content type]
### Summary
- **Verdict:** [Ship / Ship after small fixes / Rework needed]
- **Strengths (1-2 lines):** [what's working]
- **Main issues (1-2 lines):** [headline problems]
### Findings
| # | Issue | Location | Severity | Fix |
|---|-------|----------|----------|-----|
| 1 | [issue] | [quote or section] | High/Med/Low | [specific rewrite] |
### Revised Sections (top 3-5 high-severity)
**Before:**
> [original quote]
**After:**
> [proposed rewrite]
**Why:** [1 line]
### Open Questions
[anything you need from the user to refine further]
After Review
Offer one clear next step. Don't list a menu:
- If verdict is "Ship after small fixes" → "Want me to apply the highlighted fixes and give you the final version?"
- If verdict is "Rework needed" → "The hook needs to change before anything else lands. Want me to redraft from the hook down?"
- If verdict is "Ship" → "Looks good. Want me to post via xurl or hand it back to you?"
Brand Voice Documentation Framework
When the user wants to define their voice (often after a few reviews), use the template at references/brand-voice-template.md. It has pre-built tables for each section — the user fills it in, the skill references it on every review.
Minimum useful structure (see template for full detail):
- Personality — describe the brand as a person (1 paragraph)
- Voice attributes — 3-5 attributes, each with:
- "We are: [what this means in practice]"
- "We are not: [common misinterpretation]"
- "This sounds like: [example]"
- "This does NOT sound like: [example]"
- Tone calibration — how voice shifts across X / LinkedIn / blog / email
- Preferred terms / avoided terms — concrete list
- POV rules — first person? "I" or "we"?
Voice Attribute Spectrums (for picking attributes)
| Spectrum |
One End |
Other End |
| Formality |
Formal, institutional |
Casual, conversational |
| Authority |
Expert, authoritative |
Peer-level, collaborative |
| Emotion |
Warm, empathetic |
Direct, matter-of-fact |
| Complexity |
Technical, precise |
Simple, accessible |
| Energy |
Bold, energetic |
Calm, measured |
| Humor |
Playful, witty |
Serious, earnest |
Indie-hacker defaults usually land: casual, peer-level, direct, technical-but-accessible, calm, dry-humor.
Pitfalls
Don't be precious about the user's draft. If something is mid, say so. Flattery hurts the writer.
Don't auto-rewrite without permission. Flag issues, propose fixes, let the user decide. Their voice > your suggestion.
Don't over-flag on Low-severity issues. If a post is 95% good, lead with that and surface only the High/Medium issues. Drowning the user in nitpicks is its own failure mode.
Calibrate severity to channel. A "leverage" in a LinkedIn post is Medium. In a build-in-public tweet, it's High — different audiences tolerate different things.
Don't review your own drafts. If draft-post produced the content in the same session, the writer's-block bias applies. Ask the user to read it first OR explicitly note "self-review, treat skeptically."
Voice drift is real. If the user has documented voice, compare to it directly. If they've been posting for 6+ months, the voice has probably evolved — offer to re-document after 5+ reviews.
Related Skills
draft-post — drafting layer (the thing this skill reviews)
build-in-public — strategy layer (cadence, X Premium, infra)
reply-research — replies are a different beast; this skill is for original content
1---2name: brand-review-content3description: Review a content draft (X post, thread, LinkedIn post, blog, email) against brand voice and authenticity standards before it ships. Flags AI-isms, corporate jargon, unsubstantiated claims, manufactured stakes, and voice inconsistencies. Provides severity-rated findings with before/after fixes. Use after drafting and before posting.4---5
6# Brand Review (Content)
7
8Quality gate between drafting and posting. Optimized for indie-hacker / build-in-public content where authenticity is the moat. Adapted from Anthropic's marketing/brand-review skill, stripped of corporate-compliance framing.
9
10## When to Use
11
12- User pastes a draft and asks "is this good", "review this", "any feedback"
13- Output of `draft-post` needs a second pass before shipping
14- User wants to audit existing posts to catch voice drift over time
15
16## When NOT to Use
17
18- Initial drafting → use `draft-post`
19- Reply to someone else's post → use `reply-research`
20- Documenting brand voice from scratch → see the "Brand Voice Documentation" section below, then save the result somewhere persistent (skill, memory, or vault note)
21
22## Inputs
23
241. **Content to review** — paste, file path, or URL. Accept multiple pieces for batch review.
252. **Channel context** — X, LinkedIn, blog, etc. Standards shift by channel.
263. **Brand voice source** — if user has documented voice (in this skill's reference files, memory, or vault), apply it. Otherwise use the defaults below and offer to document afterward.
27
28## Review Dimensions
29
30### 1. AI-ism Detection (the highest-severity check for indie content)
31
32Flag any of these as **HIGH severity**:
33
34| Pattern | Why it kills authenticity |
35|---------|---------------------------|
36| "leverage", "unlock", "game-changer", "revolutionize" | Universal corporate-AI tells |
37| "seamless", "holistic", "robust", "synergy", "cutting-edge" | Same |
38| "In today's fast-paced world..." | Opener used by every AI blog |
39| "Let's dive in" / "Let's unpack" | Pure filler |
40| "It's important to note that..." | Hedge that adds nothing |
41| "This is a game-changer for X" | Manufactured stakes |
42| Three-bullet structures where one sentence works | Listicle bloat |
43| Em-dashes followed by reformulations of the same point | Padding |
44| "Not just X, but Y" parallel structure repeated | AI rhythm tell |
45| Tweets that end with engagement bait ("Thoughts?", "Agree?") | Generic |
46
47Flag and propose a rewrite for every instance.
48
49### 2. Specificity Check
50
51For build-in-public content specifically:
52
53- Are there real numbers? ("47 users" beats "some users")
54- Are products/tools named? ("Hermes on a Hetzner CX22" beats "my server")
55- Are failures named? Or only wins? (Failure stories drive 2-3x engagement)
56- Is there a real trigger event? (What happened today, not "thoughts on X")
57
58Flag vague claims as **MEDIUM**. Push the writer toward specifics.
59
60### 3. Voice Consistency
61
62If brand voice is documented (see Documentation Framework below), compare each section against:
63
64- Defined voice attributes (e.g. "warm, dry, technical")
65- Tone calibration for the channel (X is punchier than LinkedIn)
66- Preferred vs avoided terms
67- POV consistency (don't drift between "I" and "we")
68
69If voice is undocumented, evaluate against generic indie-hacker defaults:
70
71- First-person consistent
72- Past tense for stories, present tense for live updates
73- No marketing-speak
74- Honest about scope and impact
75
76### 4. Structural Hygiene
77
78- **Hook** — does the first 8 words earn the click?
79- **One idea** — single tweet should have one point, not three
80- **Threads** — does each tweet stand alone? Is the structure (setup → body → reversal → CTA) intact?
81- **CTAs** — only present if real. No manufactured "DM me" lines.
82- **Length** — tight is better. Cut filler ruthlessly.
83
84### 5. Authenticity Flags
85
86Always check:
87
88- **Manufactured stakes** — "This changed everything" when it didn't
89- **Borrowed authority** — claims that imply expertise the writer doesn't have
90- **Fake humility** — "I'm just a humble builder" patterns
91- **Inflated metrics** — rounding, vanity numbers, cherry-picked timeframes
92- **Stolen frames** — phrasing that's clearly lifted from another big account
93
94### 6. Hard No's (rarely needed but worth checking)
95
96- Unsubstantiated comparative claims about real competitors
97- Health/financial/legal claims without grounding
98- Quotes attributed without permission
99- Content that punches down
100
101## Output Format
102
103```
104## Brand Review: [Content type]
105
106### Summary
107- **Verdict:** [Ship / Ship after small fixes / Rework needed]
108- **Strengths (1-2 lines):** [what's working]
109- **Main issues (1-2 lines):** [headline problems]
110
111### Findings
112
113| # | Issue | Location | Severity | Fix |
114|---|-------|----------|----------|-----|
115| 1 | [issue] | [quote or section] | High/Med/Low | [specific rewrite] |
116
117### Revised Sections (top 3-5 high-severity)
118
119**Before:**
120> [original quote]
121
122**After:**
123> [proposed rewrite]
124
125**Why:** [1 line]
126
127### Open Questions
128[anything you need from the user to refine further]
129```
130
131## After Review
132
133Offer one clear next step. Don't list a menu:
134
135- If verdict is "Ship after small fixes" → "Want me to apply the highlighted fixes and give you the final version?"
136- If verdict is "Rework needed" → "The hook needs to change before anything else lands. Want me to redraft from the hook down?"
137- If verdict is "Ship" → "Looks good. Want me to post via xurl or hand it back to you?"
138
139## Brand Voice Documentation Framework
140
141When the user wants to define their voice (often after a few reviews), use the template at [`references/brand-voice-template.md`](references/brand-voice-template.md). It has pre-built tables for each section — the user fills it in, the skill references it on every review.
142
143Minimum useful structure (see template for full detail):
144
1451. **Personality** — describe the brand as a person (1 paragraph)
1462. **Voice attributes** — 3-5 attributes, each with:
147 - "We are: [what this means in practice]"
148 - "We are not: [common misinterpretation]"
149 - "This sounds like: [example]"
150 - "This does NOT sound like: [example]"
1513. **Tone calibration** — how voice shifts across X / LinkedIn / blog / email
1524. **Preferred terms / avoided terms** — concrete list
1535. **POV rules** — first person? "I" or "we"?
154
155### Voice Attribute Spectrums (for picking attributes)
156
157| Spectrum | One End | Other End |
158|----------|---------|-----------|
159| Formality | Formal, institutional | Casual, conversational |
160| Authority | Expert, authoritative | Peer-level, collaborative |
161| Emotion | Warm, empathetic | Direct, matter-of-fact |
162| Complexity | Technical, precise | Simple, accessible |
163| Energy | Bold, energetic | Calm, measured |
164| Humor | Playful, witty | Serious, earnest |
165
166Indie-hacker defaults usually land: casual, peer-level, direct, technical-but-accessible, calm, dry-humor.
167
168## Pitfalls
169
1701. **Don't be precious about the user's draft.** If something is mid, say so. Flattery hurts the writer.
171
1722. **Don't auto-rewrite without permission.** Flag issues, propose fixes, let the user decide. Their voice > your suggestion.
173
1743. **Don't over-flag on Low-severity issues.** If a post is 95% good, lead with that and surface only the High/Medium issues. Drowning the user in nitpicks is its own failure mode.
175
1764. **Calibrate severity to channel.** A "leverage" in a LinkedIn post is Medium. In a build-in-public tweet, it's High — different audiences tolerate different things.
177
1785. **Don't review your own drafts.** If `draft-post` produced the content in the same session, the writer's-block bias applies. Ask the user to read it first OR explicitly note "self-review, treat skeptically."
179
1806. **Voice drift is real.** If the user has documented voice, compare to it directly. If they've been posting for 6+ months, the voice has probably evolved — offer to re-document after 5+ reviews.
181
182## Related Skills
183
184- `draft-post` — drafting layer (the thing this skill reviews)
185- `build-in-public` — strategy layer (cadence, X Premium, infra)
186- `reply-research` — replies are a different beast; this skill is for original content