From escc
Build a rep writing-style profile from real sent messages. Trigger: 'doesn't sound like me', 'set up my voice', new-rep baselining. Produces the VOICE PROFILE all drafting skills consume. Auto-triggers.
How this skill is triggered — by the user, by Claude, or both
Slash command
/escc:brand-voiceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
_Adapted from ECC's `brand-voice` (MIT, (c) Affaan Mustafa). See LICENSE._
Adapted from ECC's brand-voice (MIT, (c) Affaan Mustafa). See LICENSE.
Build a durable [VOICE PROFILE] from real source material -- real messages
that got replies, real openers that landed meetings -- then reuse that profile
across every drafting skill instead of re-deriving style or defaulting to
generic AI sales copy.
This skill owns the VOICE PROFILE format. Every drafting skill that needs
voice consistency cites [VOICE PROFILE] and reads the output this skill
produces. Defining a competing voice structure anywhere else is an anti-pattern.
Governing rule:
rules/common/selling-principles.md-- voice is a style overlay, never a license to fabricate claims or misrepresent the sender. A profile captures how to say things; what to say is governed byproduct-knowledgeand the deal context.
Activate this skill when:
Do not activate to make generic copy "sound less generic" by adjusting one or two surface words. If the problem is that a draft is too long or too formal, that is a revision task, not a voice-profile task. If the draft is fabricating claims, fix the claim source -- the voice layer cannot fix that.
Use the strongest real source set available, in this order:
Do not use generic sales email templates, training library examples, or any content the rep did not author or explicitly endorse as "my voice". The profile is a fingerprint, not a persona assigned from the outside.
Minimum sample: 5 messages. Ideal: 10-20. More than 20 adds diminishing returns unless the rep writes in clearly different modes for different segments.
[VOICE PROFILE] block using the canonical format defined
in this skill (see "Voice Profile Format" section below).For each source sample, note the following signal dimensions:
Produce a [VOICE PROFILE] block using this exact structure. Keep bullets
concrete -- short phrases, not essays. Every Banned Move must be observable
in the source set or explicitly requested; do not add bans speculatively.
[VOICE PROFILE]
===============
Rep:
Segment focus:
Confidence: high / medium / low (based on sample size and consistency)
Sample count:
Last updated:
Source Set
- <description of source 1, e.g. "6 cold emails, SaaS AE targets, Q1 2026">
- <description of source 2>
- <note any mode splits, e.g. "cold vs. warm voice differ -- see Channel Notes">
Rhythm
- <sentence length and pacing: e.g. "short sentences, 1-2 per paragraph, no filler">
Compression
- <density: e.g. "high -- one idea per sentence, no lead-in context before the claim">
Opening Move
- <how the rep opens: e.g. "prospect-first: names the trigger before anything else">
Personalization Style
- <e.g. "one concrete research line max, then the pivot; does not pad with flattery">
Question Use
- <frequency and type: e.g. "one question per message max, always at the end, direct ask">
Claim Style
- <e.g. "number or reference within the same sentence as the claim; no bare adjectives">
Preferred Moves
- <move 1: e.g. "names the trigger in line one">
- <move 2>
- <move 3>
Banned Moves
- <ban 1: e.g. "no 'I hope this finds you well' or any variant">
- <ban 2>
CTA Pattern
- <e.g. "single ask, specific times offered, 'worth a chat?' as the minimal variant">
Sign-off
- <e.g. "first name only, no 'Best' or 'Thanks'">
Channel Notes
- Email: <what changes in email vs. baseline>
- LinkedIn: <e.g. "shorter; no formal sign-off; opener is one line max">
- Cold call opener: <e.g. "lead with the trigger; permission ask within first 10 seconds">
These are banned regardless of the rep's personal sample, because they are statistically low-reply patterns. A rep's profile can override any item in this list only if the rep's source set shows they work in their specific book of business and the rep explicitly confirms them.
[VOICE PROFILE] across related tasks in the
same session without re-deriving it..claude/escc/voice/<rep-slug>.md (workspace-local; never committed
with personal data unless the rep explicitly requests repo tracking)..claude/escc/voice/account/<account>.md.cold-outreach, outbound-sequences,
follow-up-ops, reply-handling, email-outbound-ops,
meeting-followthrough, or inbox-triage, check whether a session-local
[VOICE PROFILE] already exists before starting a new collection.A [VOICE PROFILE] captures how the rep writes. A per-account voice
overlay captures how a specific account writes, so a draft to that account
mirrors their register and vocabulary on top of the rep's base profile.
Contract for consumers. Every voice-consuming skill (cold-outreach,
outbound-sequences, follow-up-ops, reply-handling, email-outbound-ops,
meeting-followthrough, inbox-triage) layers this overlay on the rep base
profile whenever it drafts to a known account with prior correspondence: load
it with escc voice show "<account>". The overlay only adjusts register and
word choice — the rep base profile still wins on Banned/Preferred Moves, and
facts still come only from approved product-knowledge.
.claude/escc/voice/account/<account>.md (gitignored — it is
mined from real correspondence and never belongs in the source repo). It
layers on the rep base profile at .claude/escc/voice/<rep-slug>.md; it
never replaces it.escc voice account "<account>" --input '{"texts":[...]}', then read it back
with escc voice show "<account>". The extractor is no-ML and deterministic —
it does not "interpret" the account, it tallies observable style.texts are the buyer's words — the
emails they sent you and their turns in a call transcript — gathered through
the read-only quarantine/thread path (transcript-analyzer,
email-outbound-ops), never the rep's own sent copy. Raw bytes never reach a
privileged context.The style/content split is enforced here, not just stated. The overlay mirrors the buyer's words, never their claims or numbers. The lexicon is pure-alphabetic terms only — a metric, a percentage, or a currency figure can never become a term, and a source sentence is never echoed into the overlay. You may sound like the account; you may never repeat their figure back as if it were our proof. Facts and metrics come only from approved
product-knowledge. (Enforced byscripts/lib/account-register.js+scripts/lib/voice-overlay.js, pinned bytests/unit/content-guard-lexicon-leak.test.js.)
Profile built from 8 cold emails:
[VOICE PROFILE]
===============
Rep: A. Patel
Segment focus: SaaS mid-market RevOps
Confidence: high
Sample count: 8 sent emails with positive reply
Last updated: 2026-06-16
Source Set
- 8 cold emails to RevOps Directors, sent Q4 2025 - Q1 2026, all had positive reply
or booked meeting
Rhythm
- 1-2 sentences per paragraph; no paragraph over 3 lines; deliberately fragmented
for scannability
Compression
- high; no contextual preamble before the claim; no "as you may know" framing
Opening Move
- always leads with a specific company or persona observation within the first line
(trigger, role change, or segment-specific assumption)
Personalization Style
- one research line tied to a real signal (job post, announcement, funding); moves
to the pivot immediately; never pads
Question Use
- one per message, at the end; always a direct yes/no or specific time ask
Claim Style
- cites a reference or number in the same sentence; never bare adjectives
("fast" or "better"); always "X faster" or "teams like yours report Y"
Preferred Moves
- Opens with prospect's situation, not own product
- Lands the value in one short sentence before the CTA
- Uses one concrete proof point from product-knowledge, attributed correctly
Banned Moves
- "I hope this finds you well" or any greeting filler
- "I wanted to reach out" as an opener
- Feature-dump before the prospect hook
- Stacked asks
CTA Pattern
- single ask; offers two specific time slots; "worth a 15?" as the minimum variant
Sign-off
- first name only
Channel Notes
- Email: baseline above
- LinkedIn: opener compressed to one line; no sign-off; uses "open to it?" as CTA
- Cold call opener: trigger first ("I saw you just posted for a Revenue Ops
Director -- that usually means..."); permission ask by second sentence
When a drafting skill should cite the profile:
cold-outreach: building first-touch email for A. Patel -> GlobalBank RevOps VP
brand-voice: [VOICE PROFILE] loaded (A. Patel, confirmed 2026-06-16)
cold-outreach: applying profile --
- opener: GlobalBank just raised Series C; leading with funding trigger
- compression: high; claim in line two
- one proof point from product-knowledge PP-031 (onboarding velocity)
- CTA: "worth a 15 this week?" -- no stacked ask, specific times in follow-up
- sign-off: "A." only
product-knowledge. The profile does
not override the evidence-first requirement.cold-outreach, outbound-sequences, follow-up-ops,
reply-handling, email-outbound-ops, meeting-followthrough,
inbox-triage, meeting-booking (opener scripts).product-knowledge.account-memory.rules/common/outbound-compliance.md and are not overridden by voice
preferences.npx claudepluginhub aura-farming/escc --plugin esccRoutes gstack requests to the correct skill (planning, review, QA, shipping, debugging, docs, security, design). Invokes when user types /gstack or asks which skill to use.
Provides UI/UX design intelligence with 50+ styles, 161 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 10 stacks. Use for designing pages, components, or reviewing visual quality.