{"id":"14f568b2-822b-4beb-9703-df25e047bd41","shortId":"Lm4zF8","kind":"skill","title":"brand-voice","tagline":"Define or extract a consistent brand voice that other skills can use. Three modes: Extract (analyze existing content), Build (interview-based), Auto-Scrape (from URL). Use when copy sounds generic, when starting any new project, when voice feels inconsistent across channels, when","description":"# /brand-voice -- Brand Voice Engine\n\nGeneric copy converts worse than copy with a distinct voice. Not because the\nwords are different -- because the reader feels like they're hearing from a\nPERSON, not a marketing team.\n\nThis skill defines that voice. Either by extracting it from existing content,\nbuilding it strategically from scratch, or auto-scraping a URL to analyze a\nbrand's public presence.\n\nFor output formatting, see /cmo [rules/output-format.md](../cmo/rules/output-format.md).\n\n---\n\n## On Activation\n\n1. Read `brand/` context:\n   - **positioning.md** — If available, use market angles to inform voice differentiation. A brand positioned as \"the anti-course course\" needs a different voice than one positioned as \"enterprise-grade.\"\n   - **audience.md** — If available, tailor vocabulary and tone to the target reader. Technical builders get different language than busy executives.\n   - If neither exists, proceed with defaults. Ask the user about their market and audience during the question sequence.\n2. Check if `./brand/voice-profile.md` already exists:\n   - **Exists** → Update mode: show current profile summary, ask what to change.\n   - **Does not exist** → Proceed to Mode Selection below.\n3. Assess the user's request to determine which mode to use (Extract, Build, or Auto-Scrape).\n\n## Three Modes\n\n### Mode 1: Extract (analyze existing content)\n\nUser provides 3-5 pieces of existing content (blog posts, emails, social posts, about page, etc).\n\n**The analysis process:**\n\n1. **Read all provided content** -- look for patterns, not individual word choices\n2. **Identify the voice DNA:**\n   - Sentence structure (short/punchy vs. flowing/complex)\n   - Vocabulary level (everyday vs. technical vs. academic)\n   - Emotional register (warm/friendly vs. authoritative vs. irreverent)\n   - Perspective (first-person storytelling vs. objective analysis)\n   - Rhythm (varies sentence length? staccato? musical?)\n3. **Map the personality axes** (see Voice DNA Framework below)\n4. **Generate the voice profile**\n5. **Write to ./brand/voice-profile.md**\n\n### Mode 2: Build (construct from scratch)\n\nNo existing content. Build voice strategically through guided questions.\n\n**The question sequence:**\n\n1. \"If your brand were a person at a dinner party, how would they talk?\"\n2. \"Who is your audience? Technical builders, creative professionals, busy executives, everyday consumers, or a mix?\"\n3. \"Name 2-3 brands whose tone you admire (not their product -- their VOICE).\"\n4. \"What words should NEVER appear in your marketing? What feels off-brand?\"\n5. \"Show me something you've written that felt 'right' -- even a Slack message or email.\"\n\n### Mode 3: Auto-Scrape (URL analysis)\n\nUser provides a URL. Skill uses Exa MCP to research the brand's public presence.\n\n1. Use Exa MCP to search for the brand's website content, social profiles, and public-facing copy\n2. Analyze homepage, about page, social bios, recent posts\n3. Extract voice patterns using the same DNA framework as Mode 1\n4. Present findings and ask user to confirm/adjust\n5. Generate voice profile\n\n## Mode Selection\n\nNot sure which mode? Here's the decision tree:\n- **Have 3+ pieces of existing content** (blog posts, emails, landing pages) → Mode 1: Extract\n- **Starting fresh with no content** → Mode 2: Build via interview\n- **Have a live website URL** → Mode 3: Auto-Scrape\n\nIf the brand has both a website AND existing content, prefer Mode 1 (Extract) — it captures the voice the brand already uses, which is more authentic than what a URL scan reveals.\n\n---\n\n## Voice DNA Framework\n\nEvery voice maps across these axes:\n\n### Personality Spectrum\n\nRate each 1-10 with brief justification:\n- Formal / Casual\n- Reserved / Expressive\n- Serious / Playful\n- Traditional / Progressive\n- Complex / Simple\n- Cautious / Bold\n\n### Voice Markers\n\n**Sentence patterns:** Average length, variation, structure (simple/compound/fragmented)\n\n**Vocabulary:** Jargon level (none/light/technical), power words, forbidden words\n\n**Perspective:** Person (I/we/you), distance (intimate/conversational/professional), authority (peer/mentor/expert/challenger)\n\n### The Do/Don't Table\n\nMinimum 5 rows, maximum 10. Specific voice behaviors and example phrases.\n\n### Platform Adaptation Table\n\n| Platform | Tone Shift | Length | Special Notes |\n|----------|-----------|--------|--------------|\n| LinkedIn | More professional, authority-forward | Medium | Lead with insight |\n| Twitter/X | Punchier, more direct | Short | Fragment sentences OK |\n| Instagram | Warmer, more visual language | Short-Medium | Casual, aspirational |\n| Email | Most personal, conversational | Medium-Long | First-person storytelling |\n| Blog/SEO | Most detailed, structured | Long | Can be more technical |\n| TikTok | Most casual, spoken-word feel | Very short | Conversational, raw |\n| Threads | Thoughtful, conversational | Short-Medium | Opinion-led |\n| Bluesky | Nuanced, substantive | Short | Informed, not aggressive |\n\n---\n\n## Output Format\n\n### Header\n\n```\n  BRAND VOICE PROFILE\n  [Brand/Person Name]\n  Generated [Month Day, Year]\n```\n\n### Content\n\n1. **Voice Summary** (2-3 sentences capturing the essence)\n2. **Personality Spectrum** (rated axes)\n3. **Voice Markers** (sentence patterns, vocabulary, perspective)\n4. **The Do/Don't Table**\n5. **Platform Adaptation Table**\n6. **Sample Copy** (3 examples: short social post, email opener, landing page headline)\n\n### Files Saved\n\nWrite to `./brand/voice-profile.md`.\n\n### What's Next\n\n```\n  -> /positioning-angles   Find your market angle\n  -> /direct-response-copy Write copy in your voice\n  -> /content-atomizer     Create social content\n```\n\n---\n\n## File Output Protocol\n\nWrite ./brand/voice-profile.md with: last updated, voice summary, personality spectrum, voice markers, do/don't table, platform adaptations, sample copy.\n\n**If ./brand/voice-profile.md already exists:** Read existing file, show what will change, ask for confirmation before overwriting.\n\n---\n\n## Feedback\n\nAfter the voice profile is saved and used in at least one downstream skill, collect feedback:\n- \"How did the voice feel in that [email/post/page]? (a) Nailed it, (b) Close but edited, (c) Off, (d) Haven't used yet\"\n- For (a) or (b): append what worked to `brand/learnings.md` with date and skill name.\n- For (c): ask what felt wrong, adjust the voice profile, and log the change to `brand/learnings.md`.\n\n\n## Voice Test Loop (Required)\n\nAfter generating a voice profile from ANY mode, validate before saving. Full details in [references/voice-modes.md](references/voice-modes.md).\n\n1. Generate 3 sample paragraphs in the brand's voice: email opening, social post, landing page hero.\n2. Present with options: (1) Nails it → save, (2) Close but needs adjustment → ask what's off, revise, re-test, (3) Not quite right → ask for examples, rebuild relevant sections, re-test.\n3. After 3 rounds without confirmation, offer: save current version, one more round, or restart with a different mode.\n\nNever skip this step. Never save a profile without user confirmation.\n\n## Anti-Patterns\n\n| Anti-pattern | Instead | Why |\n|-------------|---------|-----|\n| Generating a generic \"professional yet approachable\" voice | Extract specific patterns from real content or deep questioning | Generic profiles are useless — every downstream skill produces the same bland output. The whole point is differentiation. |\n| Skipping the Voice Test Loop | Always validate with 3 samples before saving | A profile that looks right on paper can sound wrong in practice. The test loop catches mismatches before they propagate to all other skills. |\n| Copy-pasting platform adaptation template defaults | Each brand has different platform behaviors — think about each one | A casual brand might be MORE formal on LinkedIn. A formal brand might loosen up on Twitter. Defaults are wrong by definition. |\n| Writing the profile without reading existing brand context | Check positioning.md and audience.md first | Voice should align with positioning and audience. Writing voice in isolation means rewriting it later when those files exist. |\n| Overwriting an existing profile without showing diff | Read existing file, show what will change, get confirmation | The user may have manually tweaked the profile. Blindly overwriting loses their refinements. |\n| Producing a profile with no example phrases | On-brand and off-brand examples are required | Examples are the fastest way for downstream skills to calibrate. Without them, other skills have to interpret abstract axes, which leads to drift. |\n\n## Invocation\n\nThis skill activates when:\n- User asks \"what's my voice\" or \"analyze my brand\"\n- User says copy sounds \"generic\" or \"off-brand\"\n- Another skill needs voice context but ./brand/voice-profile.md doesn't exist\n- User provides a URL and asks to analyze the brand\n\n## What This Skill Is NOT\n\n- Does NOT write copy (that is /direct-response-copy)\n- Does NOT define positioning (that is /positioning-angles)\n- Does NOT research the audience (that is /audience-research)\n- Does NOT create visual identity (that is /creative)","tags":["brand","voice","marketing","cli","moizibnyousaf","agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills"],"capabilities":["skill","source-moizibnyousaf","skill-brand-voice","topic-agent-skills","topic-ai-agents","topic-ai-marketing","topic-brand-memory","topic-brand-voice","topic-claude-code","topic-claude-code-skills","topic-cli","topic-cmo","topic-marketing-automation","topic-marketing-cli","topic-seo"],"categories":["marketing-cli"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/MoizIbnYousaf/marketing-cli/brand-voice","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add MoizIbnYousaf/marketing-cli","source_repo":"https://github.com/MoizIbnYousaf/marketing-cli","install_from":"skills.sh"}},"qualityScore":"0.459","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 18 github stars · SKILL.md body (9,069 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:05:48.017Z","embedding":null,"createdAt":"2026-05-04T19:06:11.991Z","updatedAt":"2026-05-18T19:05:48.017Z","lastSeenAt":"2026-05-18T19:05:48.017Z","tsv":"'-10':590 '-3':384,746 '-5':247 '/audience-research':1302 '/brand-voice':48 '/brand/voice-profile.md':196,331,789,812,830,1262 '/cmo':117 '/cmo/rules/output-format.md':119 '/content-atomizer':804 '/creative':1310 '/direct-response-copy':798,1287 '/positioning-angles':793,1294 '1':122,239,263,350,447,486,522,556,589,742,934,955 '10':638 '2':193,275,333,365,383,466,530,745,751,951,959 '3':218,246,313,381,426,475,511,540,756,775,936,972,985,987,1064 '4':323,395,487,763 '5':328,409,495,635,768 '6':772 'abstract':1226 'academ':291 'across':45,582 'activ':121,1235 'adapt':646,770,826,1096 'adjust':904,963 'admir':389 'aggress':728 'align':1146 'alreadi':197,564,831 'alway':1061 'analysi':261,306,431 'analyz':19,107,241,467,1244,1273 'angl':131,797 'anoth':1256 'anti':142,1016,1019 'anti-cours':141 'anti-pattern':1015,1018 'appear':400 'append':888 'approach':1028 'ask':181,206,491,840,900,964,976,1238,1271 'aspir':681 'assess':219 'audienc':188,369,1150,1299 'audience.md':156,1142 'authent':569 'author':628,658 'authorit':296 'authority-forward':657 'auto':27,102,234,428,542 'auto-scrap':26,101,233,427,541 'avail':128,158 'averag':610 'axe':317,584,755,1227 'b':873,887 'base':25 'behavior':641,1104 'bio':472 'bland':1049 'blind':1187 'blog':252,516 'blog/seo':693 'blueski':722 'bold':605 'brand':2,9,49,109,124,137,353,385,408,443,455,546,563,732,941,1100,1111,1120,1137,1201,1205,1246,1255,1275 'brand-voic':1 'brand/learnings.md':892,913 'brand/person':735 'brief':592 'build':22,95,231,334,341,531 'builder':168,371 'busi':173,374 'c':877,899 'calibr':1218 'captur':559,748 'casual':595,680,704,1110 'catch':1083 'cautious':604 'chang':209,839,911,1176 'channel':46 'check':194,1139 'choic':274 'close':874,960 'collect':860 'complex':602 'confirm':842,990,1014,1178 'confirm/adjust':494 'consist':8 'construct':335 'consum':377 'content':21,94,243,251,267,340,458,515,528,553,741,807,1035 'context':125,1138,1260 'convers':685,711,715 'convert':54 'copi':33,53,57,465,774,800,828,1093,1249,1284 'copy-past':1092 'cours':143,144 'creat':805,1305 'creativ':372 'current':203,993 'd':879 'date':894 'day':739 'decis':508 'deep':1037 'default':180,1098,1126 'defin':4,85,1290 'definit':1130 'detail':695,930 'determin':225 'diff':1169 'differ':67,147,170,1002,1102 'differenti':135,1055 'dinner':359 'direct':667 'distanc':626 'distinct':60 'dna':279,320,482,577 'do/don':631,765,822 'doesn':1263 'downstream':858,1044,1215 'drift':1231 'edit':876 'either':88 'email':254,424,518,682,780,944 'email/post/page':869 'emot':292 'engin':51 'enterpris':154 'enterprise-grad':153 'essenc':750 'etc':259 'even':419 'everi':579,1043 'everyday':287,376 'exa':438,449 'exampl':643,776,978,1197,1206,1209 'execut':174,375 'exist':20,93,177,198,199,212,242,250,339,514,552,832,834,1136,1162,1165,1171,1265 'express':597 'extract':6,18,90,230,240,476,523,557,1030 'face':464 'fastest':1212 'feedback':845,861 'feel':43,71,405,708,866 'felt':417,902 'file':785,808,835,1161,1172 'find':489,794 'first':301,690,1143 'first-person':300,689 'flowing/complex':284 'forbidden':621 'formal':594,1115,1119 'format':115,730 'forward':659 'fragment':669 'framework':321,483,578 'fresh':525 'full':929 'generat':324,496,737,919,935,1023 'generic':35,52,1025,1039,1251 'get':169,1177 'grade':155 'guid':345 'haven':880 'header':731 'headlin':784 'hear':75 'hero':950 'homepag':468 'i/we/you':625 'ident':1307 'identifi':276 'inconsist':44 'individu':272 'inform':133,726 'insight':663 'instagram':672 'instead':1021 'interpret':1225 'interview':24,533 'interview-bas':23 'intimate/conversational/professional':627 'invoc':1232 'irrever':298 'isol':1154 'jargon':616 'justif':593 'land':519,782,948 'languag':171,676 'last':814 'later':1158 'lead':661,1229 'least':856 'led':721 'length':310,611,651 'level':286,617 'like':72 'linkedin':654,1117 'live':536 'log':909 'long':688,697 'look':268,1071 'loop':916,1060,1082 'loosen':1122 'lose':1189 'manual':1183 'map':314,581 'marker':607,758,821 'market':81,130,186,403,796 'maximum':637 'may':1181 'mcp':439,450 'mean':1155 'medium':660,679,687,718 'medium-long':686 'messag':422 'might':1112,1121 'minimum':634 'mismatch':1084 'mix':380 'mode':17,201,215,227,237,238,332,425,485,499,504,521,529,539,555,925,1003 'month':738 'music':312 'nail':871,956 'name':382,736,897 'need':145,962,1258 'neither':176 'never':399,1004,1008 'new':39 'next':792 'none/light/technical':618 'note':653 'nuanc':723 'object':305 'off-brand':406,1203,1253 'offer':991 'ok':671 'on-brand':1199 'one':150,857,995,1108 'open':781,945 'opinion':720 'opinion-l':719 'option':954 'output':114,729,809,1050 'overwrit':844,1163,1188 'page':258,470,520,783,949 'paper':1074 'paragraph':938 'parti':360 'past':1094 'pattern':270,478,609,760,1017,1020,1032 'peer/mentor/expert/challenger':629 'person':78,302,316,356,585,624,684,691,752,818 'perspect':299,623,762 'phrase':644,1198 'piec':248,512 'platform':645,648,769,825,1095,1103 'play':599 'point':1053 'posit':138,151,1148,1291 'positioning.md':126,1140 'post':253,256,474,517,779,947 'power':619 'practic':1079 'prefer':554 'presenc':112,446 'present':488,952 'proceed':178,213 'process':262 'produc':1046,1192 'product':392 'profession':373,656,1026 'profil':204,327,460,498,734,849,907,922,1011,1040,1069,1133,1166,1186,1194 'progress':601 'project':40 'propag':1087 'protocol':810 'provid':245,266,433,1267 'public':111,445,463 'public-fac':462 'punchier':665 'question':191,346,348,1038 'quit':974 'rate':587,754 'raw':712 're':74,970,983 're-test':969,982 'read':123,264,833,1135,1170 'reader':70,166 'real':1034 'rebuild':979 'recent':473 'references/voice-modes.md':932,933 'refin':1191 'regist':293 'relev':980 'request':223 'requir':917,1208 'research':441,1297 'reserv':596 'restart':999 'reveal':575 'revis':968 'rewrit':1156 'rhythm':307 'right':418,975,1072 'round':988,997 'row':636 'rules/output-format.md':118 'sampl':773,827,937,1065 'save':786,851,928,958,992,1009,1067 'say':1248 'scan':574 'scrape':28,103,235,429,543 'scratch':99,337 'search':452 'section':981 'see':116,318 'select':216,500 'sentenc':280,309,608,670,747,759 'sequenc':192,349 'serious':598 'shift':650 'short':668,678,710,717,725,777 'short-medium':677,716 'short/punchy':282 'show':202,410,836,1168,1173 'simpl':603 'simple/compound/fragmented':614 'skill':13,84,436,859,896,1045,1091,1216,1222,1234,1257,1278 'skill-brand-voice' 'skip':1005,1056 'slack':421 'social':255,459,471,778,806,946 'someth':412 'sound':34,1076,1250 'source-moizibnyousaf' 'special':652 'specif':639,1031 'spectrum':586,753,819 'spoken':706 'spoken-word':705 'staccato':311 'start':37,524 'step':1007 'storytel':303,692 'strateg':97,343 'structur':281,613,696 'substant':724 'summari':205,744,817 'sure':502 'tabl':633,647,767,771,824 'tailor':159 'talk':364 'target':165 'team':82 'technic':167,289,370,701 'templat':1097 'test':915,971,984,1059,1081 'think':1105 'thought':714 'thread':713 'three':16,236 'tiktok':702 'tone':162,387,649 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-marketing' 'topic-brand-memory' 'topic-brand-voice' 'topic-claude-code' 'topic-claude-code-skills' 'topic-cli' 'topic-cmo' 'topic-marketing-automation' 'topic-marketing-cli' 'topic-seo' 'tradit':600 'tree':509 'tweak':1184 'twitter':1125 'twitter/x':664 'updat':200,815 'url':30,105,430,435,538,573,1269 'use':15,31,129,229,437,448,479,565,853,882 'useless':1042 'user':183,221,244,432,492,1013,1180,1237,1247,1266 'valid':926,1062 'vari':308 'variat':612 've':414 'version':994 'via':532 'visual':675,1306 'vocabulari':160,285,615,761 'voic':3,10,42,50,61,87,134,148,278,319,326,342,394,477,497,561,576,580,606,640,733,743,757,803,816,820,848,865,906,914,921,943,1029,1058,1144,1152,1242,1259 'vs':283,288,290,295,297,304 'warm/friendly':294 'warmer':673 'way':1213 'websit':457,537,550 'whole':1052 'whose':386 'without':989,1012,1134,1167,1219 'word':65,273,397,620,622,707 'work':890 'wors':55 'would':362 'write':329,787,799,811,1131,1151,1283 'written':415 'wrong':903,1077,1128 'year':740 'yet':883,1027","prices":[{"id":"b1da1de2-8fc1-4f08-9b73-63a3009625bc","listingId":"14f568b2-822b-4beb-9703-df25e047bd41","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"MoizIbnYousaf","category":"marketing-cli","install_from":"skills.sh"},"createdAt":"2026-05-04T19:06:11.991Z"}],"sources":[{"listingId":"14f568b2-822b-4beb-9703-df25e047bd41","source":"github","sourceId":"MoizIbnYousaf/marketing-cli/brand-voice","sourceUrl":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/brand-voice","isPrimary":false,"firstSeenAt":"2026-05-04T19:06:11.991Z","lastSeenAt":"2026-05-18T19:05:48.017Z"}],"details":{"listingId":"14f568b2-822b-4beb-9703-df25e047bd41","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"MoizIbnYousaf","slug":"brand-voice","github":{"repo":"MoizIbnYousaf/marketing-cli","stars":18,"topics":["agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills","cli","cmo","marketing-automation","marketing-cli","seo","skills-sh","typescript"],"license":"mit","html_url":"https://github.com/MoizIbnYousaf/marketing-cli","pushed_at":"2026-05-13T21:06:05Z","description":"Agent-native marketing cli: 51 skills, 5 research agents, brand memory that compounds, plus a local Studio dashboard (beta). single agent-native cli, then /cmo in ur coding agent..","skill_md_sha":"0672f0337a0e2cd406fb40b3857a4d983480bf79","skill_md_path":"skills/brand-voice/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/brand-voice"},"layout":"multi","source":"github","category":"marketing-cli","frontmatter":{"name":"brand-voice","description":"Define or extract a consistent brand voice that other skills can use. Three modes: Extract (analyze existing content), Build (interview-based), Auto-Scrape (from URL). Use when copy sounds generic, when starting any new project, when voice feels inconsistent across channels, when onboarding a new brand, or when any skill needs voice-profile.md but it doesn't exist yet. This is always the first skill to run for a new project. Make sure to use this skill whenever the user mentions tone of voice, brand personality, 'my copy all sounds the same', 'how should I sound', 'analyze my website voice', 'define my tone', or anything about making content sound more human or distinctive. Even if the user just says 'my marketing sounds generic' — that's a voice problem."},"skills_sh_url":"https://skills.sh/MoizIbnYousaf/marketing-cli/brand-voice"},"updatedAt":"2026-05-18T19:05:48.017Z"}}