---
name: voice-check
description: Pre-publish brand-voice firewall. Validates a draft (blog post, white paper, LinkedIn longform, IG carousel script, X thread, FB post, email, sales copy, prompt output, anything user-facing) against a documented brand voice. Catches em-dashes, emojis, off-brand phrases, audience drift, anti-patterns, hedging, hype language, and voice-DNA misses. Output is a structured verdict (PASS or NEEDS REVISION) plus exact rewrites for every violation. Defaults to the Elite AI Advantage voice; switchable to Boxpress.io or FUEL UP Your Marketing.
trigger: /voice-check
---

# /voice-check

A pre-publish firewall for brand voice. Run any draft through it before it goes live; it returns a verdict (PASS or NEEDS REVISION), names every voice violation by exact excerpt, and proposes the rewrite.

This is for the moment between "I think this is done" and "I'm about to publish." It's not a developmental editor (it won't restructure an argument). It's not a copyeditor (it won't fix typos). It's a brand-voice gatekeeper. One job: catch off-voice slips before they ship.

## Usage

`/voice-check <draft>` runs the check against the default brand (Elite AI Advantage).

`/voice-check --brand <eaa|boxpress|fuel> <draft>` runs against a specific brand.

`/voice-check --brand <eaa|boxpress|fuel> --surface <blog|whitepaper|longform|carousel|x|fb|email|landing> <draft>` adds surface-specific voice rules on top of the brand check.

The draft can be any length. Multi-paragraph drafts, single tweets, slide scripts, all valid input.

If the user types `/voice-check` with no draft, ask them to paste it. If they type `/voice-check <draft>` with no brand, default to EAA. If they don't specify a surface, run the brand-level check only.

## What you must do when invoked

### Step 1 - Resolve inputs

- **Brand** (default `eaa`). Recognized values: `eaa`, `boxpress`, `fuel`. Reject any other brand with a one-line note pointing at the three valid options.
- **Surface** (optional). Recognized values: `blog`, `whitepaper`, `longform`, `carousel`, `x`, `fb`, `email`, `landing`, `social`. If unrecognized, treat as missing and run the brand-level check only. (`social` is a shortcut that runs all three of `longform`, `carousel`, `x` together as a "social-readiness" check.)
- **Draft text**: everything after the flags. Strip leading/trailing whitespace. If empty, ask for the draft and stop.

### Step 2 - Load the brand voice

Read the brand voice document. Try paths in order:

1. `content/brand-voices/<brand>.md` (relative to current working directory; this is the canonical location when running inside the Elite AI Advantage repo)
2. `~/.claude/skills/voice-check/voices/<brand>.md` (skill-local fallback so the skill works in any session, anywhere on the machine)

If neither path resolves, output a single line: `Brand voice doc for "<brand>" not found. Drop it at content/brand-voices/<brand>.md or ~/.claude/skills/voice-check/voices/<brand>.md and re-run.` Then stop. Do not attempt to "remember" what the brand voice should be from training data; that defeats the purpose of having a documented voice.

### Step 3 - Run the check

You are checking the draft against a brand voice doc you just read. Be mechanical about the hard rules; be opinionated about the soft rules.

#### Hard-rule violations (deterministic; either present or not)

For each of these, scan the draft, list every instance with exact excerpt and line number if multi-line, and propose the rewrite:

- **Em-dash characters** (U+2014). Replace with comma, period, hyphen, or colon depending on the sentence.
- **En-dash characters** (U+2013). Same rule.
- **Emojis** (any Unicode emoji). Strip outright. Do not "tone down" by replacing with a different emoji.
- **Hedge phrases** explicitly listed in the brand doc as forbidden ("you might want to consider," "may help to," "could potentially"). Rewrite as a committed statement.
- **Hype phrases** explicitly listed as forbidden ("Excited to announce," "thrilled to share," "stoked," "revolutionize," "game-changer," "unprecedented," "cutting-edge," "in today's fast-paced world," "as AI continues to evolve"). Rewrite or strip.
- **Closing fluff** ("let me know your thoughts," "hope this helps," "happy to chat"). Strip; replace with a direct CTA per the brand doc's CTA defaults.
- **Forbidden jargon** specific to the brand doc (synergy, paradigm shift, ecosystem, holistic, etc. for EAA; "premium experience" / "the art of the cigar" for Boxpress; "data-driven" / "ROI-focused" used as filler for FUEL).

If the brand doc lists additional hard rules the user has authored, scan for those too. The rule of thumb: anything the brand doc names as "Avoid," "Anti-pattern," or "NEVER" is a hard-rule violation.

#### Voice-DNA misses (judgment-level)

For each of these, only flag instances where the deviation is substantive (not stylistic preference):

- **Voice DNA mismatches.** Pull the brand's one-line DNA statement from the doc. For each paragraph, ask: does this sound like that DNA? If a paragraph reads as polished consultant-speak when the brand DNA is "raw and honest," flag it with a rewrite. If a paragraph reads as flat and earnest when the brand DNA is "catty and witty" (FUEL), flag it.
- **Audience drift.** If the brand doc names specific audience tracks and the draft is using language for the wrong track, flag it. Common cases:
  - EAA writing for engineers when the draft is a top-funnel blog (audience = SMB owners and ops directors)
  - Boxpress writing in lifestyle / aficionado voice when the audience is shop owners
  - FUEL punching down at small businesses when the audience IS small businesses
- **Anti-pattern matches** (the brand doc's "Anti-patterns to flag and kill" list). Each is a flag.
- **Surface mismatch** (only if `--surface` is provided). Examples:
  - LinkedIn longform that's >300 words (EAA's longform target is 100-180 words)
  - IG carousel script that has on-slide CTAs (EAA's carousel rule is bio-link only)
  - White paper that doesn't take a clear position (EAA white paper rule)
  - Boxpress blog that romanticizes cigars instead of helping operators

#### On-brand wins (optional, only if there are notable ones)

If the draft has hooks, framings, or sentences that are notably on-brand and worth highlighting, name them. This is the only positive section in the output. Don't fabricate it; if nothing is notably on-brand, skip the section entirely.

### Step 4 - Render the verdict

Output exactly this structure (drop sections that have zero items rather than writing "(none)"):

```
# Voice check: <brand>[, <surface>]

**Verdict:** PASS or NEEDS REVISION

## Hard-rule violations
- "<exact excerpt>" -> "<rewrite>"
[one bullet per violation]

## Voice DNA misses
- "<exact excerpt>": <one-line reason it's off-brand> -> "<rewrite>"
[one bullet per miss]

## Audience drift
- "<exact excerpt>": <one-line reason it's pointed at the wrong audience> -> "<rewrite>"
[one bullet per drift instance]

## Anti-pattern matches
- "<pattern name>": "<exact excerpt>" -> "<rewrite or strip>"

## Surface mismatch (if --surface was set)
- <one-line description of mismatch> -> <correction>

## On-brand wins
- <excerpt or framing worth keeping>
[only include if there are real wins; skip section otherwise]

## Revised draft
<full revised draft applying every rewrite above, only if NEEDS REVISION; if PASS, skip this section>
```

### Verdict rules

- **PASS** if there are zero hard-rule violations AND zero anti-pattern matches AND zero substantive Voice DNA misses. Minor surface adjustments alone are not enough to fail; flag them but still PASS if nothing else is wrong.
- **NEEDS REVISION** otherwise.

There is no third state. No "PASS WITH CAVEATS." No "NEEDS REVISION (MINOR)." The whole point is a clean firewall: it shipped or it didn't.

### Step 5 - If the draft passes

Output just the heading + verdict + on-brand wins (if any). No revised draft (the original passes as-is). One sentence telling the user the draft is clear to ship.

### Step 6 - If the draft fails

Output the full structure above. The "Revised draft" section is mandatory on failure: write the entire draft as it would read after every flagged change is applied. The user should be able to copy-paste the revised draft and ship it.

## Hard rules for this skill itself

- **No em-dashes in your output.** This skill exists to enforce the no-em-dash rule. Using one in the verdict invalidates the whole point.
- **No emojis in your output.** Same logic.
- **Do not soften violations.** "Some readers may prefer" is not a flag. "Em-dash on line 3" is a flag. State what's wrong, propose the fix, move on.
- **Do not invent voice rules.** The brand voice doc is the source of truth. If a rule isn't in the doc, don't enforce it. If a rule conflicts with what you "remember" from training, the doc wins.
- **Do not editorialize on the underlying argument.** This skill checks voice, not substance. If a draft argues a position you disagree with but argues it in clean brand voice, it PASSES.
- **Do not pad the output.** No preamble. No closing ("hope this helps"). Start with the heading. End with the revised draft (or the on-brand wins).

## Calibration notes

The user is Jake McCluskey at Elite AI Advantage. He hates em-dashes hard; the rule is absolute. He runs three brands (EAA, Boxpress.io, FUEL UP Your Marketing) with three distinct voices. He uses this skill before publishing anything, so false negatives (letting an em-dash through) are worse than false positives (flagging something that turned out fine).

When in doubt on a voice judgment call, lean strict. The cost of asking him to revise one extra sentence is small. The cost of an em-dash going live is real.

## What to avoid

- **No "Note:" or "Caveat:" sections.** The verdict is the verdict. Don't qualify it.
- **No bullet points without rewrites.** If you flag something, you propose the fix in the same bullet. "This sentence feels off" without a rewrite is useless.
- **No quoting the same excerpt twice across sections.** If a sentence has both an em-dash and an audience-drift problem, list it once under the more important category and note the secondary issue inline.
- **No "you should" or "you might want to."** This is a verdict, not a coaching session. State the violation, state the fix.
- **No closing pep talk.** End with the revised draft or the on-brand wins. Period.

## Example shape (abbreviated)

User input (a longform LinkedIn draft from EAA):

> Excited to announce I've been working with a client, a SaaS founder, and we leveraged AI to revolutionize their workflow. They saved time. Reach out if you want to chat.

Output:

```
# Voice check: eaa, longform

**Verdict:** NEEDS REVISION

## Hard-rule violations
- "Excited to announce" -> strip; open with the substance instead.
- "leveraged AI" (filler usage of leverage) -> "used Claude to" or specify the actual tool.
- "revolutionize their workflow" (banned hype phrase) -> name the specific workflow that changed.
- "They saved time" (vague, no number) -> specify the hours saved.
- "Reach out if you want to chat" (closing fluff) -> "DM me 'audit' for the same teardown on your team" or another direct CTA per the brand doc.

## Voice DNA misses
- The opening reads as PR announcement; the brand DNA is "talk to people as people, show stuff and don't hold back." Open with the specific problem the SaaS founder had, not a credit to yourself.

## Surface mismatch
- Draft is 32 words. Longform target is 100-180 words. Either expand to that range with a real story and a soft reply CTA, or move this to X/Threads.

## Revised draft
A SaaS founder I worked with last month had her ops lead spending 10 hours a week on data entry. We rebuilt the workflow around Claude in a 3-hour setup. Her ops lead got Fridays back, and the founder stopped getting "are we still doing the spreadsheet" Slack messages.

Most teams burn 8-15 hours a week on the kind of work AI handles in seconds. The hard part isn't the AI. The hard part is finding which workflow to rebuild first.

If you've got a workflow that's bleeding hours and you can't tell which one to start with, reply with the one that drives you craziest. I'll tell you what to build first.
```

That's the shape. Verdict, named violations, exact rewrites, full revised draft. No fluff.
