{"id":"19948879-3524-4ca7-9ec3-fd7c940cd4c4","shortId":"VM7Cgs","kind":"skill","title":"document-review","tagline":"Audits brand/ files for completeness, consistency, and freshness. Use when the agent or user wants to review brand files, audit marketing docs, check brand consistency, verify brand health, or assess what's missing from brand memory. Produces a structured audit report with per-fi","description":"# /document-review — Brand Document Audit\n\nYou 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`).\n\nFor brand memory protocol, see /cmo [rules/brand-memory.md](../cmo/rules/brand-memory.md).\n\n## On Activation\n\n1. Verify `brand/` directory exists. If it does not exist, report Overall Health as **Not Started** and recommend `mktg init`. Skip all phases.\n2. Read all 9 `brand/` files (or confirm which are missing).\n3. Determine audit scope based on user request.\n4. Run all four phases sequentially.\n\n## Phase 0: Assess Scope\n\n| Request | Scope |\n|---------|-------|\n| \"review brand files\" | Full brand/ audit (default) |\n| \"check audience.md\" | Single-file deep review |\n| \"is my brand consistent?\" | Consistency-only (Phase 2) |\n| \"what's stale?\" | Freshness-only (Phase 3) |\n| No specific request | Full brand/ audit |\n\nFor single-file reviews, still cross-reference against other brand files for consistency.\n\n## Phase 1: Completeness Check\n\nFor each of the 10 brand files, assess status:\n\n### Profile Files (7)\n\nThese should contain substantive content beyond the template scaffold.\n\n| File | Key Sections | Owner Skill |\n|------|-------------|-------------|\n| `voice-profile.md` | Voice DNA (tone, personality, vocabulary), do/don't examples | `/brand-voice` |\n| `positioning.md` | Core positioning (category, for, unlike, we), angles | `/positioning-angles` |\n| `audience.md` | Primary audience (who, pain points, watering holes), personas | `/audience-research` |\n| `competitors.md` | Named competitors with positioning, strengths, weaknesses | `/competitive-intel` |\n| `keyword-plan.md` | Priority keywords table (keyword, intent, difficulty, priority) | `/keyword-research` |\n| `creative-kit.md` | Brand colors, typography, visual style | `/creative` |\n| `stack.md` | Available tools (email, social, video, search, media) | `mktg init` |\n\n**Scoring:**\n\n| Score | Meaning | Criteria |\n|-------|---------|----------|\n| **complete** | Ready for use | File exists, has substantive content beyond template, key sections populated |\n| **partial** | Needs work | File exists but some key sections are empty or still contain template placeholders (`<!-- Generated by mktg init -->` without real content below) |\n| **empty** | Template only | File exists but matches the `mktg init` template exactly (no customization) |\n| **missing** | Not created | File does not exist |\n\n**How to detect template-only content:**\n- Look for lines like `- **Tone:**` with no value after the colon\n- Look for empty table rows\n- Look for `<!-- Generated by mktg init. Fill in or let /cmo build this. -->` as the only substantive comment\n- Profile files with fewer than 5 lines of real content (excluding headers and comments) are likely empty\n\n### Append-Only Files (2)\n\n| File | Purpose | Owner |\n|------|---------|-------|\n| `assets.md` | Log of created assets | All skills (append) |\n| `learnings.md` | What worked, what didn't, audience insights | All skills (append) |\n\n**Scoring:**\n\n| Score | Meaning | Criteria |\n|-------|---------|----------|\n| **complete** | Has entries | File exists with dated entries |\n| **empty** | No entries | File exists but contains only the header/comment |\n| **missing** | Not created | File does not exist |\n\nAppend-only files are never \"partial\" — they either have entries or they don't.\n\n## Phase 2: Consistency Check\n\nCross-reference files for contradictions. Only check files that are `complete` or `partial` (skip `empty` and `missing`).\n\n### Cross-References to Check\n\n| Check | Files Involved | What to Look For |\n|-------|---------------|-----------------|\n| **Audience alignment** | `positioning.md` ↔ `audience.md` | Does positioning's \"For:\" match audience's primary persona? |\n| **Voice-brand fit** | `voice-profile.md` ↔ `positioning.md` | Does the tone match the brand positioning? (e.g., playful voice + enterprise positioning = mismatch) |\n| **Keyword-positioning alignment** | `keyword-plan.md` ↔ `positioning.md` | Do target keywords reflect the positioning angles? |\n| **Competitor consistency** | `competitors.md` ↔ `positioning.md` | Are competitor names consistent across both files? |\n| **Audience-keyword fit** | `audience.md` ↔ `keyword-plan.md` | Do keywords match the language/pain points of the target audience? |\n| **Stack-skill alignment** | `stack.md` ↔ all profile files | Do other files reference tools or channels not listed in stack.md? |\n| **Creative-voice alignment** | `creative-kit.md` ↔ `voice-profile.md` | Does visual style complement the voice? (e.g., minimalist design + maximalist voice = tension) |\n| **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) |\n\n### Contradiction Severity\n\n| Severity | Meaning | Example |\n|----------|---------|---------|\n| **high** | Files directly contradict | Positioning targets \"enterprise CTOs\" but audience.md says \"indie developers\" |\n| **medium** | Files are misaligned but not contradictory | Voice is \"casual and fun\" but positioning is \"premium and exclusive\" |\n| **low** | Minor inconsistency | Different competitor names used (abbreviation vs full name) |\n\n## Phase 3: Freshness Check\n\nFlag files that may be outdated.\n\n### Freshness Rules\n\n- **Profile files**: Check file modification date. Flag as stale if older than 30 days.\n- **Append-only files**: Always considered current if they exist (they accumulate, not expire).\n- **No modification date available**: Flag as \"freshness unknown — recommend re-running owner skill.\"\n\n### Staleness Signals (Beyond Date)\n\n- File references a competitor that no longer exists or has rebranded\n- Positioning mentions a feature the product no longer has\n- Keywords target trends that have passed\n- Audience describes a persona the product has pivoted away from\n\nNote these as \"content staleness\" separately from \"date staleness.\"\n\n## Phase 4: Audit Report\n\nOutput a structured audit report. This is the primary deliverable.\n\n### Report Format\n\n```markdown\n# Brand Audit Report\n\n**Date:** YYYY-MM-DD\n**Scope:** [Full audit | Single file | Consistency only | Freshness only]\n**Overall Health:** [Healthy | Needs Attention | Incomplete | Not Started]\n\n## Summary\n\n- **Files:** X/9 complete, Y partial, Z empty, W missing\n- **Contradictions:** X found (H high, M medium, L low)\n- **Stale files:** X flagged\n\n## Completeness\n\n| File | Score | Notes |\n|------|-------|-------|\n| voice-profile.md | complete | All sections populated |\n| positioning.md | partial | Missing \"Unlike\" differentiator |\n| audience.md | missing | — |\n| competitors.md | empty | Template only |\n| keyword-plan.md | complete | 12 keywords mapped |\n| creative-kit.md | partial | Colors defined, typography missing |\n| stack.md | complete | 5 tools configured |\n| assets.md | complete | 8 entries |\n| learnings.md | empty | No entries yet |\n\n## Contradictions\n\n### [Severity]: [Short description]\n- **Files:** file-a.md ↔ file-b.md\n- **Detail:** [What contradicts what]\n- **Recommendation:** [Which file to update and how]\n\n## Freshness\n\n| File | Last Modified | Status | Action |\n|------|--------------|--------|--------|\n| voice-profile.md | 15 days ago | current | — |\n| positioning.md | 45 days ago | stale | Re-run /positioning-angles |\n\n## Recommended Next Steps\n\nPriority-ordered list of skills to run:\n\n1. **Run `/audience-research`** — audience.md is missing. This blocks positioning and copy quality.\n2. **Run `/positioning-angles`** — positioning.md is stale (45 days) and missing differentiator.\n3. **Run `/competitive-intel`** — competitors.md is still template-only.\n```\n\n### Overall Health Scoring\n\n| Health | Criteria |\n|--------|----------|\n| **Healthy** | 7+ files complete, 0 high contradictions, 0 stale files |\n| **Needs Attention** | 5-6 files complete, or 1+ high contradictions, or 2+ stale files |\n| **Incomplete** | 2-4 files complete, foundation gaps |\n| **Not Started** | 0-1 files complete, brand/ mostly empty or missing |\n\n### Recommended Next Steps Logic\n\nPriority order for recommendations:\n1. Missing foundation files (audience, positioning, voice-profile) — these unlock everything else\n2. High-severity contradictions — these corrupt downstream output\n3. Stale foundation files — outdated context is worse than no context\n4. Missing strategy files (keywords, competitors) — these improve targeting\n5. Empty append-only files — nice to have, build over time\n6. Missing creative files — needed for visual output skills\n\nAlways map recommendations to specific skills:\n\n| Gap | Skill to Run |\n|-----|-------------|\n| voice-profile.md missing/empty/stale | `/brand-voice` |\n| positioning.md missing/empty/stale | `/positioning-angles` |\n| audience.md missing/empty/stale | `/audience-research` |\n| competitors.md missing/empty/stale | `/competitive-intel` |\n| keyword-plan.md missing/empty/stale | `/keyword-research` |\n| creative-kit.md missing/empty/stale | `/creative` |\n| stack.md missing/empty | `mktg init` (re-run) |\n| Contradictions between files | Skill that owns the less-accurate file |\n| learnings.md empty | No action — accumulates naturally |\n| assets.md empty | No action — accumulates naturally |\n\n---\n\n## Anti-Patterns\n\n| Anti-Pattern | Instead |\n|-------------|---------|\n| Fixing files directly | Report the issue, recommend the owner skill |\n| Overwriting brand files | Read-only audit. Never write to brand/ |\n| Skipping files because they're empty | Score them as empty, recommend the fix |\n| Reporting everything as high severity | Reserve \"high\" for direct contradictions |\n| Generic recommendations (\"improve your brand\") | Specific: \"Run /audience-research to fill audience.md\" |\n| Auditing non-brand files | Scope to brand/ directory only (extend later) |\n\n## Related Skills\n\n- **/cmo** — Orchestrates skills including document-review for health checks\n- **/brand-voice** — Fixes voice-profile.md issues\n- **/positioning-angles** — Fixes positioning.md issues\n- **/audience-research** — Fixes audience.md issues\n- **/competitive-intel** — Fixes competitors.md issues\n- **/keyword-research** — Fixes keyword-plan.md issues\n- **/creative** — Fixes creative-kit.md issues","tags":["document","review","marketing","cli","moizibnyousaf","agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills"],"capabilities":["skill","source-moizibnyousaf","skill-document-review","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/document-review","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 (10,328 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:49.224Z","embedding":null,"createdAt":"2026-05-04T19:06:13.259Z","updatedAt":"2026-05-18T19:05:49.224Z","lastSeenAt":"2026-05-18T19:05:49.224Z","tsv":"'-1':1014 '-4':1006 '-6':993 '/audience-research':77,254,945,1111,1209,1245 '/brand-voice':235,1105,1237 '/cmo':85,1227 '/cmo/rules/brand-memory.md':87 '/competitive-intel':262,968,1114,1249 '/creative':278,1120,1257 '/document-review':49 '/keyword-research':271,1117,1253 '/positioning-angles':244,931,957,1108,1241 '0':139,984,987,1013 '1':90,197,943,997,1030 '10':204 '12':871 '15':919 '2':113,166,399,467,955,1001,1005,1043 '3':124,174,682,966,1052 '30':705 '4':132,785,1063 '45':924,961 '5':383,882,992,1072 '6':1084 '7':211,981 '8':887 '9':116 'abbrevi':677 'accumul':718,1143,1149 'accur':1137 'across':553 'action':917,1142,1148 'activ':89 'agent':15 'ago':921,926 'align':501,535,575,594 'alway':711,1093 'angl':243,544 'anti':1152,1155 'anti-pattern':1151,1154 'append':396,410,421,452,708,1075 'append-on':395,451,707,1074 'assess':33,140,207 'asset':407 'assets.md':403,885,1145 'attent':822,991 'audienc':247,417,500,509,557,571,765,1034 'audience-keyword':556 'audience.md':79,152,245,503,560,648,863,946,1109,1212,1247 'audit':4,23,43,52,54,126,149,180,786,791,802,811,1174,1213 'avail':280,724 'away':773 'base':128 'belong':72 'beyond':217,302,737 'block':950 'brand':5,21,27,30,38,50,56,81,92,117,145,148,160,179,192,205,273,515,524,801,1017,1169,1178,1206,1216,1220 'build':1081 'casual':661 'categori':239 'channel':586 'check':26,151,199,469,477,492,493,684,695,1236 'colon':365 'color':274,876 'comment':377,391 'competitor':257,545,550,674,742,1068 'competitors.md':255,547,865,969,1112,1251 'complement':600 'complet':8,60,198,293,426,481,829,849,854,870,881,886,983,995,1008,1016 'configur':884 'confirm':120 'consid':712 'consist':9,28,61,161,163,195,468,546,552,814 'consistency-on':162 'contain':214,320,440 'content':216,301,325,354,387,778 'context':1057,1062 'contradict':475,634,642,836,894,903,986,999,1047,1128,1201 'contradictori':658 'copi':953 'core':237 'corrupt':1049 'creat':343,406,446 'creativ':592,1086 'creative-kit.md':272,595,874,1118,1259 'creative-voic':591 'criteria':292,425,979 'cross':188,471,489 'cross-refer':187,470,488 'ctos':646 'current':713,922 'custom':340 'date':432,698,723,738,782,804 'day':706,920,925,962 'dd':808 'deep':156 'default':150 'defin':877 'deliver':797 'describ':766 'descript':897 'design':605 'detail':901 'detect':350 'determin':125 'develop':651 'didn':415 'differ':673 'differenti':862,965 'difficulti':269 'direct':641,1160,1200 'directori':57,93,1221 'dna':228 'do/don':232 'doc':25 'document':2,51,1232 'document-review':1,1231 'domain':74 'downstream':1050 'e.g':76,526,603,620 'either':459 'els':1042 'email':282 'empti':317,327,368,394,434,485,833,866,890,1019,1073,1140,1146,1184,1188 'enterpris':529,645 'entri':428,433,436,461,888,892 'everyth':1041,1193 'exact':338 'exampl':234,638 'exclud':388 'exclus':669 'exist':94,99,298,311,331,347,430,438,450,716,746 'expir':720 'extend':1223 'favor':630 'featur':753 'fewer':381 'fi':48 'file':6,22,118,146,155,184,193,206,210,221,297,310,330,344,379,398,400,429,437,447,454,473,478,494,555,579,582,614,640,653,686,694,696,710,739,813,827,846,850,898,907,913,982,989,994,1003,1007,1015,1033,1055,1066,1077,1087,1130,1138,1159,1170,1180,1217 'file-a.md':899 'file-b.md':900 'fill':1211 'fit':516,559 'fix':69,71,78,1158,1191,1238,1242,1246,1250,1254,1258 'flag':685,699,725,848 'form':633 'format':799 'found':838 'foundat':1009,1032,1054 'four':135 'fresh':11,63,171,683,691,727,816,912 'freshness-on':170 'full':147,178,679,810 'fun':663 'gap':1010,1099 'generic':1202 'h':839 'header':389 'header/comment':443 'health':31,102,819,976,978,1235 'healthi':820,980 'high':639,840,985,998,1045,1195,1198 'high-sever':1044 'hole':252 'improv':1070,1204 'includ':1230 'incomplet':823,1004 'inconsist':672 'indi':650 'init':109,288,336,1124 'insight':418 'instead':1157 'integr':610 'intent':268 'involv':495 'issu':1163,1240,1244,1248,1252,1256,1260 'key':222,304,314 'keyword':265,267,533,540,558,563,759,872,1067 'keyword-plan.md':263,536,561,869,1115,1255 'keyword-posit':532 'l':843 'language/pain':566 'last':914 'later':1224 'learn':609,616,621 'learnings.md':411,611,889,1139 'less':1136 'less-accur':1135 'like':358,393 'line':357,384,625 'list':588,938 'log':404 'logic':1025 'long':632 'long-form':631 'longer':745,757 'look':355,366,371,498 'low':670,844 'm':841 'map':873,1094 'markdown':800 'market':24 'match':333,508,522,564 'maximalist':606 'may':688 'mean':291,424,637 'media':286 'medium':652,842 'memori':39,82 'mention':751 'minimalist':604 'minor':671 'misalign':655 'mismatch':531 'miss':36,123,341,444,487,835,860,864,879,948,964,1021,1031,1064,1085 'missing/empty':1122 'missing/empty/stale':1104,1107,1110,1113,1116,1119 'mktg':108,287,335,1123 'mm':807 'modif':697,722 'modifi':915 'most':1018 'name':256,551,675,680 'natur':1144,1150 'need':308,821,990,1088 'never':68,456,1175 'next':933,1023 'nice':1078 'non':1215 'non-brand':1214 'note':775,852 'older':703 'orchestr':1228 'order':937,1027 'outdat':690,1056 'output':788,1051,1091 'overal':101,818,975 'overwrit':1168 'own':1133 'owner':224,402,733,1166 'pain':249 'partial':307,457,483,831,859,875 'pass':764 'pattern':1153,1156 'per':47 'per-fi':46 'person':230 'persona':253,512,768 'phase':112,136,138,165,173,196,466,681,784 'pivot':772 'placehold':322 'play':527 'point':250,567 'popul':306,857 'posit':238,259,505,525,530,534,543,643,665,750,951,1035 'positioning.md':236,502,518,537,548,858,923,958,1106,1243 'premium':667 'primari':246,511,796 'prioriti':264,270,936,1026 'priority-ord':935 'problem':66 'produc':40 'product':755,770 'profil':209,378,578,613,629,693,1038 'protocol':83 'purpos':401 'qualiti':59,954 're':731,929,1126,1183 're-run':730,928,1125 'read':114,1172 'read-on':1171 'readi':294 'real':324,386 'rebrand':749 'recommend':107,729,905,932,1022,1029,1095,1164,1189,1203 'refer':189,472,490,583,740 'reflect':541,617 'relat':1225 'report':44,65,100,787,792,798,803,1161,1192 'request':131,142,177 'reserv':1197 'review':3,20,144,157,185,1233 'row':370 'rule':692 'rules/brand-memory.md':86 'run':133,732,930,942,944,956,967,1102,1127,1208 'say':622,649 'scaffold':220 'scope':127,141,143,809,1218 'score':289,290,422,423,851,977,1185 'search':285 'section':223,305,315,856 'see':84 'separ':780 'sequenti':137 'sever':635,636,895,1046,1196 'short':623,896 'signal':736 'singl':154,183,812 'single-fil':153,182 'skill':75,225,409,420,574,734,940,1092,1098,1100,1131,1167,1226,1229 'skill-document-review' 'skip':110,484,1179 'social':283 'source-moizibnyousaf' 'specif':176,1097,1207 'stack':573 'stack-skil':572 'stack.md':279,576,590,880,1121 'stale':169,701,735,779,783,845,927,960,988,1002,1053 'start':105,825,1012 'status':208,916 'step':934,1024 'still':186,319,971 'strategi':619,1065 'strength':260 'structur':42,790 'style':277,599 'subject':624 'substant':215,300,376 'summari':826 'tabl':266,369 'target':539,570,644,760,1071 'templat':219,303,321,328,337,352,867,973 'template-on':351,972 'tension':608 'time':1083 'tone':229,359,521 'tool':281,584,883 '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' 'trend':761 'typographi':275,878 'unknown':728 'unlik':241,861 'unlock':1040 'updat':909 'use':12,296,676 'user':17,130 'valu':362 'verifi':29,91 'video':284 'visual':276,598,1090 'vocabulari':231 'voic':227,514,528,593,602,607,628,659,1037 'voice-brand':513 'voice-profil':1036 'voice-profile.md':226,517,596,853,918,1103,1239 'vs':678 'w':834 'want':18 'water':251 'weak':261 'without':323 'work':309,413,626 'wors':1059 'write':1176 'x':837,847 'x/9':828 'y':830 'yet':893 'yyyi':806 'yyyy-mm-dd':805 'z':832","prices":[{"id":"14d7ec73-b8d1-4059-9aed-b436e5f12ac7","listingId":"19948879-3524-4ca7-9ec3-fd7c940cd4c4","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:13.259Z"}],"sources":[{"listingId":"19948879-3524-4ca7-9ec3-fd7c940cd4c4","source":"github","sourceId":"MoizIbnYousaf/marketing-cli/document-review","sourceUrl":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/document-review","isPrimary":false,"firstSeenAt":"2026-05-04T19:06:13.259Z","lastSeenAt":"2026-05-18T19:05:49.224Z"}],"details":{"listingId":"19948879-3524-4ca7-9ec3-fd7c940cd4c4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"MoizIbnYousaf","slug":"document-review","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":"78a6657257c9e9779a0fe85ecf18576b93decb82","skill_md_path":"skills/document-review/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/document-review"},"layout":"multi","source":"github","category":"marketing-cli","frontmatter":{"name":"document-review","description":"Audits brand/ files for completeness, consistency, and freshness. Use when the agent or user wants to review brand files, audit marketing docs, check brand consistency, verify brand health, or assess what's missing from brand memory. Produces a structured audit report with per-file scores, cross-file contradiction detection, staleness flags, and recommended next skills to run. This is the quality gate for the brand memory system. Also use when someone says 'check my brand', 'brand audit', 'what's missing', 'is my brand ready', 'brand health', 'review my marketing docs', or before running any campaign to verify brand foundations are solid."},"skills_sh_url":"https://skills.sh/MoizIbnYousaf/marketing-cli/document-review"},"updatedAt":"2026-05-18T19:05:49.224Z"}}