{"id":"f64902de-73fd-4898-a45c-b5cd29f335a4","shortId":"9ASNdb","kind":"skill","title":"create-skill","tagline":"Create new marketing skills for the mktg playbook. Use when the agent needs to add a new capability, someone says 'create a skill', 'new skill', 'add a marketing skill', 'extend the playbook', 'I need a skill for X', 'build a skill', 'make a skill for Y', or 'add capability for Z","description":"# /create-skill — Skill Creator\n\nMeta-skill for extending the mktg marketing playbook. You create new skills that follow the drop-in contract so they work immediately with `/cmo`, `mktg doctor`, and the full skill ecosystem.\n\nFor brand memory protocol, see /cmo [rules/brand-memory.md](../cmo/rules/brand-memory.md).\n\n## On Activation\n\n1. Read the skill contract: [workflows/create-new-skill.md](workflows/create-new-skill.md)\n2. Read the template: [templates/marketing-skill.md](templates/marketing-skill.md)\n3. Read `skills-manifest.json` in the project root to understand existing skills and avoid overlap.\n4. Ask: **What marketing capability should this skill add?**\n\n## Phase 0: Validate the Need\n\nGate check. Before creating a new skill, verify it doesn't already exist:\n\n| Signal | Action |\n|--------|--------|\n| Capability covered by existing skill | Skip. Point to the existing skill. |\n| Slight variation of existing skill | Skip. Suggest extending the existing skill instead. |\n| Genuinely new marketing capability | Proceed. |\n| Orchestrator chaining existing skills | Proceed. Mark as orchestrator layer. |\n\nCheck `skills-manifest.json` for the full list. Common near-misses:\n- \"social media copy\" → `/content-atomizer` already handles this\n- \"brand guidelines\" → `/brand-voice` covers this\n- \"SEO strategy\" → `/keyword-research` + `/seo-audit` cover this\n\n## Phase 1: Gather Requirements\n\nAsk these questions (one at a time, stop when clear):\n\n1. **Name** — What should the skill be called? (kebab-case, e.g., `webinar-funnel`)\n2. **Trigger phrases** — What would someone say to invoke this? (5-8 natural phrases)\n3. **Category** — Where does it fit? (foundation / strategy / copy-content / distribution / creative / seo / conversion / growth / knowledge)\n4. **Layer** — What layer? (foundation / strategy / execution / orchestrator)\n5. **Tier** — How essential? (must-have / nice-to-have / experimental)\n6. **Brand reads** — Which `brand/` files does it need? (voice-profile.md, audience.md, etc.)\n7. **Brand writes** — Which `brand/` files does it update?\n8. **Dependencies** — Which skills should run first? (e.g., `brand-voice`, `audience-research`)\n9. **Core workflow** — What are the main phases? (3-5 phases typical)\n\n## Phase 2: Generate the Skill\n\n1. Copy the template from [templates/marketing-skill.md](templates/marketing-skill.md).\n2. Fill in all frontmatter fields from Phase 1 answers.\n3. Write the skill body following this structure:\n   - **Title line** — `# /<name> — <Short Description>`\n   - **Opening paragraph** — What this skill does and why it matters (2-3 sentences)\n   - **Brand memory reference** — Link to `/cmo` brand-memory rules\n   - **On Activation** — Steps to load context and assess the request\n   - **Phases 1-N** — The core workflow (3-5 phases)\n   - **Worked Example** — One concrete example showing the skill in action\n   - **Anti-Patterns** — Table of common mistakes and corrections\n   - **YAGNI Principles** — What NOT to add\n4. Write the description field carefully — it's used for routing. Include:\n   - What the skill does (first sentence)\n   - When to use it (second sentence)\n   - Trigger phrases (remaining text)\n\n## Phase 3: Create the Directory\n\n```\nskills/<name>/\n├── SKILL.md              # Required — the skill itself\n├── templates/            # Optional — reusable templates\n├── workflows/            # Optional — step-by-step procedures\n└── references/           # Optional — supporting knowledge\n```\n\nOnly create subdirectories if the skill genuinely needs them. Most skills are a single SKILL.md.\n\n## Phase 4: Register and Validate\n\n1. **Remind** the agent (or user) to add an entry to `skills-manifest.json`:\n   ```json\n   \"<name>\": {\n     \"source\": \"new\",\n     \"category\": \"<category>\",\n     \"layer\": \"<layer>\",\n     \"tier\": \"<tier>\",\n     \"reads\": [\"<file1>.md\"],\n     \"writes\": [\"<file1>.md\"],\n     \"depends_on\": [\"<skill1>\"],\n     \"triggers\": [\"<phrase1>\", \"<phrase2>\"],\n     \"review_interval_days\": 60\n   }\n   ```\n2. **Validate** with `mktg skill validate <name>` if the CLI is available. If CLI is unavailable, manually verify:\n   - Frontmatter has `name`, `description`, `allowed-tools` fields\n   - `name` matches the directory name exactly\n   - Description includes trigger phrases for routing\n   - All referenced brand files use valid names from the standard set\n   - No trigger phrases conflict with existing skills (check manifest)\n3. **Test** by invoking `/<name>` and verifying the On Activation flow works.\n\nDo NOT modify `skills-manifest.json` directly in this skill — that's a separate step to avoid merge conflicts.\n\n### Handling Modification Requests\n\nIf the user wants to modify an existing skill (not create a new one):\n- \"Update skill X\" or \"add a mode to Y\" → Read the existing SKILL.md, understand its structure, make targeted edits. Do not use the creation workflow.\n- \"Merge skill X into skill Y\" → Read both, propose the merge, confirm, then edit the target skill.\n- Route here only for genuinely new capabilities.\n\n---\n\n## Key Principles\n\n### Frontmatter Contract\n\nEvery SKILL.md must have this exact frontmatter structure:\n\n```yaml\n---\nname: <kebab-case-name>\ndescription: |\n  <Multi-line description. First sentence: what it does.\n  Second sentence: when to use it. Remaining: trigger phrases.>\nallowed-tools: []\n---\n```\n\n- `name` must match the directory name\n- `description` is used by Claude for skill routing — be specific and include trigger phrases\n- `allowed-tools` is always `[]` for marketing skills (they use the agent's default tools)\n\n### The On Activation Pattern\n\nEvery skill starts with On Activation — the first thing that runs when invoked:\n\n1. Load brand context (read `brand/` files)\n2. Show what loaded (visual tree with checkmarks)\n3. Assess the request\n4. Gate check (skip if wrong skill)\n\nThis pattern matters because it's what makes progressive enhancement work — skills produce useful output at zero context but get noticeably better with brand memory. Skipping it means the skill either errors on missing files or ignores context that would make output 3x better.\n\n### Progressive Enhancement\n\nSkills must NEVER gate on brand files. They enhance output but are never required:\n\n```\n# Good\n1. Read `brand/voice-profile.md` if it exists. Adapt tone accordingly.\n2. If not available, use defaults (direct, conversational).\n\n# Bad\n1. Read `brand/voice-profile.md`. ERROR if not found.\n```\n\n---\n\n## Writing Good Skill Content\n\nThe template gives structure. Here's how to fill it with substance:\n\n- **Phase instructions:** Use imperative verbs (\"Read X,\" \"Generate Y,\" \"Ask the user Z\"). Specify inputs and outputs for each phase. Include conditional logic where decisions vary (\"If the user has a URL, scrape it. If not, ask 3 questions.\").\n- **Worked examples:** Pick a realistic scenario the target user would actually encounter. Walk through key decision points, not just the happy path. Show what the output looks like, not just what it contains.\n- **Calibrating prescriptiveness:** Be specific where consistency matters (output format, file paths, frontmatter). Leave room for agent judgment where creativity matters (copy tone, strategic recommendations, question sequencing).\n- **Anti-patterns:** Think about the 3 most common ways this skill could go wrong. Usually: doing too much, doing too little, or doing the wrong thing entirely.\n\n## Anti-Patterns\n\n| Anti-pattern | Instead | Why |\n|-------------|---------|-----|\n| Creating a skill that overlaps with an existing one | Check manifest first, extend existing skill | Duplicate skills confuse routing — /cmo won't know which to pick, and the builder gets inconsistent results depending on which triggers. |\n| Skipping the description field or writing it vaguely | Description IS routing — be specific, include triggers | Claude decides whether to use a skill based almost entirely on the description. A vague description means the skill never gets invoked, no matter how good the content is. |\n| Making brand files required | Progressive enhancement — enhance, never gate | Brand files build up over time. A skill that errors on missing files is useless for new projects, which is exactly when builders need the most help. |\n| Adding 10+ phases | 3-5 phases. If more, split into multiple skills | Long skills are hard for agents to follow consistently. Each additional phase increases the chance of drift or skipped steps. |\n| Hardcoding file paths outside `brand/` and `campaigns/` | Use the standard directories | Non-standard paths break cross-skill references. If one skill writes to `output/` and another looks in `brand/`, the context chain is broken. |\n| Skills that call other skills | Skills read/write files. `/cmo` orchestrates | Skill-to-skill calls create hidden dependencies and ordering problems. Files are the API — they're inspectable, debuggable, and don't create call chains. |\n| Forgetting the worked example | Every skill needs one concrete example | Examples are worth more than abstract instructions. An agent reading a worked example can infer patterns that no amount of rules can convey. |\n\n## YAGNI Principles\n\n- Don't create orchestrator skills unless you have 3+ skills to chain\n- Don't add references/ directory for a simple skill — one SKILL.md is fine\n- Don't over-specify the workflow — leave room for the agent's judgment\n- Don't duplicate knowledge that lives in another skill\n- The skill contract is the source of truth, not this skill — if they diverge, update this skill","tags":["create","skill","marketing","cli","moizibnyousaf","agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills"],"capabilities":["skill","source-moizibnyousaf","skill-create-skill","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/create-skill","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,491 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.823Z","embedding":null,"createdAt":"2026-05-04T19:06:12.793Z","updatedAt":"2026-05-18T19:05:48.823Z","lastSeenAt":"2026-05-18T19:05:48.823Z","tsv":"'-3':392 '-5':346,421,1154 '-8':262 '/brand-voice':213 '/cmo':83,96,399,1053,1226 '/cmo/rules/brand-memory.md':98 '/content-atomizer':207 '/create-skill':55 '/keyword-research':218 '/seo-audit':219 '0':138 '1':101,223,236,354,369,415,522,772,859,877 '10':1151 '2':108,251,350,361,391,551,779,868 '3':114,265,345,371,420,477,608,787,937,1004,1153,1296 '3x':840 '4':128,282,448,518,791 '5':261,290 '6':302 '60':550 '7':314 '8':323 '9':337 'abstract':1268 'accord':867 'action':156,432 'activ':100,405,616,757,764 'actual':949 'ad':1150 'adapt':865 'add':18,29,51,136,447,529,657,1302 'addit':1172 'agent':15,525,751,987,1167,1271,1324 'allow':573,718,741 'allowed-tool':572,717,740 'almost':1093 'alreadi':153,208 'alway':744 'amount':1281 'anoth':1209,1334 'answer':370 'anti':434,999,1027,1030 'anti-pattern':433,998,1026,1029 'api':1242 'ask':129,226,909,936 'assess':411,788 'audienc':335 'audience-research':334 'audience.md':312 'avail':561,871 'avoid':126,633 'bad':876 'base':1092 'better':819,841 'bodi':375 'brand':92,211,303,306,315,318,332,394,401,590,774,777,821,849,1115,1123,1186,1212 'brand-memori':400 'brand-voic':331 'brand/voice-profile.md':861,879 'break':1197 'broken':1217 'build':42,1125 'builder':1062,1145 'calibr':972 'call':243,1220,1232,1251 'campaign':1188 'capabl':21,52,132,157,183,701 'care':453 'case':246 'categori':266,537 'chain':186,1215,1252,1299 'chanc':1176 'check':143,194,606,793,1043 'checkmark':786 'claud':730,1085 'clear':235 'cli':559,563 'common':200,438,1006 'concret':426,1261 'condit':921 'confirm':689 'conflict':602,635 'confus':1051 'consist':977,1170 'contain':971 'content':275,887,1112 'context':409,775,815,835,1214 'contract':77,105,705,1338 'convers':279,875 'convey':1285 'copi':206,274,355,992 'copy-cont':273 'core':338,418 'correct':441 'could':1010 'cover':158,214,220 'creat':2,4,24,68,145,478,503,649,1034,1233,1250,1290 'create-skil':1 'creation':676 'creativ':277,990 'creator':57 'cross':1199 'cross-skil':1198 'day':549 'debugg':1246 'decid':1086 'decis':924,954 'default':753,873 'depend':324,544,1066,1235 'descript':451,571,582,716,726,1072,1078,1097,1100 'direct':623,874 'directori':480,579,724,1192,1304 'distribut':276 'diverg':1349 'doctor':85 'doesn':151 'drift':1178 'drop':75 'drop-in':74 'duplic':1049,1329 'e.g':247,330 'ecosystem':90 'edit':671,691 'either':828 'encount':950 'enhanc':807,843,852,1119,1120 'entir':1025,1094 'entri':531 'error':829,880,1132 'essenti':293 'etc':313 'everi':706,759,1257 'exact':581,711,1143 'exampl':424,427,940,1256,1262,1263,1275 'execut':288 'exist':123,154,160,166,171,177,187,604,646,664,864,1041,1047 'experiment':301 'extend':33,62,175,1046 'field':366,452,575,1073 'file':307,319,591,778,832,850,981,1116,1124,1135,1183,1225,1239 'fill':362,896 'fine':1312 'first':329,464,766,1045 'fit':270 'flow':617 'follow':72,376,1169 'forget':1253 'format':980 'found':883 'foundat':271,286 'frontmatt':365,568,704,712,983 'full':88,198 'funnel':250 'gate':142,792,847,1122 'gather':224 'generat':351,907 'genuin':180,508,699 'get':817,1063,1105 'give':890 'go':1011 'good':858,885,1110 'growth':280 'guidelin':212 'handl':209,636 'happi':959 'hard':1165 'hardcod':1182 'help':1149 'hidden':1234 'ignor':834 'immedi':81 'imper':903 'includ':459,583,737,920,1083 'inconsist':1064 'increas':1174 'infer':1277 'input':914 'inspect':1245 'instead':179,1032 'instruct':901,1269 'interv':548 'invok':259,611,771,1106 'json':534 'judgment':988,1326 'kebab':245 'kebab-cas':244 'key':702,953 'know':1056 'knowledg':281,501,1330 'layer':193,283,285,538 'leav':984,1320 'like':966 'line':380 'link':397 'list':199 'littl':1019 'live':1332 'load':408,773,782 'logic':922 'long':1162 'look':965,1210 'main':343 'make':45,669,805,838,1114 'manifest':607,1044 'manual':566 'mark':190 'market':6,31,65,131,182,746 'match':577,722 'matter':390,800,978,991,1108 'md':541,543 'mean':825,1101 'media':205 'memori':93,395,402,822 'merg':634,678,688 'meta':59 'meta-skil':58 'miss':203,831,1134 'mistak':439 'mktg':10,64,84,554 'mode':659 'modif':637 'modifi':621,644 'much':1016 'multipl':1160 'must':295,708,721,845 'must-hav':294 'n':416 'name':237,570,576,580,594,715,720,725 'natur':263 'near':202 'near-miss':201 'need':16,37,141,310,509,1146,1259 'never':846,856,1104,1121 'new':5,20,27,69,147,181,536,651,700,1139 'nice':298 'nice-to-hav':297 'non':1194 'non-standard':1193 'notic':818 'one':229,425,652,1042,1203,1260,1309 'open':381 'option':488,492,499 'orchestr':185,192,289,1227,1291 'order':1237 'output':812,839,853,916,964,979,1207 'outsid':1185 'over-specifi':1315 'overlap':127,1038 'paragraph':382 'path':960,982,1184,1196 'pattern':435,758,799,1000,1028,1031,1278 'phase':137,222,344,347,349,368,414,422,476,517,900,919,1152,1155,1173 'phrase':253,264,473,585,601,739 'pick':941,1059 'playbook':11,35,66 'point':163,955 'prescript':973 'principl':443,703,1287 'problem':1238 'procedur':497 'proceed':184,189 'produc':810 'progress':806,842,1118 'project':119,1140 'propos':686 'protocol':94 'question':228,938,996 're':1244 'read':102,109,115,304,540,662,684,776,860,878,905,1272 'read/write':1224 'realist':943 'recommend':995 'refer':396,498,1201,1303 'referenc':589 'regist':519 'remain':474 'remind':523 'request':413,638,790 'requir':225,483,857,1117 'research':336 'result':1065 'reusabl':489 'review':547 'room':985,1321 'root':120 'rout':458,587,695,733,1052,1080 'rule':403,1283 'rules/brand-memory.md':97 'run':328,769 'say':23,257 'scenario':944 'scrape':932 'second':470 'see':95 'sentenc':393,465,471 'seo':216,278 'separ':630 'sequenc':997 'set':598 'show':428,780,961 'signal':155 'simpl':1307 'singl':515 'skill':3,7,26,28,32,39,44,47,56,60,70,89,104,124,135,148,161,167,172,178,188,241,326,353,374,385,430,462,481,485,507,512,555,605,626,647,654,679,682,694,732,747,760,797,809,827,844,886,1009,1036,1048,1050,1091,1103,1130,1161,1163,1200,1204,1218,1222,1223,1229,1231,1258,1292,1297,1308,1335,1337,1346,1352 'skill-create-skill' 'skill-to-skil':1228 'skill.md':482,516,665,707,1310 'skills-manifest.json':116,195,533,622 'skip':162,173,794,823,1070,1180 'slight':168 'social':204 'someon':22,256 'sourc':535,1341 'source-moizibnyousaf' 'specif':735,975,1082 'specifi':913,1317 'split':1158 'standard':597,1191,1195 'start':761 'step':406,494,496,631,1181 'step-by-step':493 'stop':233 'strateg':994 'strategi':217,272,287 'structur':378,668,713,891 'subdirectori':504 'substanc':899 'suggest':174 'support':500 'tabl':436 'target':670,693,946 'templat':111,357,487,490,889 'templates/marketing-skill.md':112,113,359,360 'test':609 'text':475 'thing':767,1024 'think':1001 'tier':291,539 'time':232,1128 'titl':379 'tone':866,993 'tool':574,719,742,754 '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' 'tree':784 'trigger':252,472,546,584,600,738,1069,1084 'truth':1343 'typic':348 'unavail':565 'understand':122,666 'unless':1293 'updat':322,653,1350 'url':931 'use':12,456,468,592,674,728,749,811,872,902,1089,1189 'useless':1137 'user':527,641,911,928,947 'usual':1013 'vagu':1077,1099 'valid':139,521,552,556,593 'vari':925 'variat':169 'verb':904 'verifi':149,567,613 'visual':783 'voic':333 'voice-profile.md':311 'walk':951 'want':642 'way':1007 'webinar':249 'webinar-funnel':248 'whether':1087 'won':1054 'work':80,423,618,808,939,1255,1274 'workflow':339,419,491,677,1319 'workflows/create-new-skill.md':106,107 'worth':1265 'would':255,837,948 'write':316,372,449,542,884,1075,1205 'wrong':796,1012,1023 'x':41,655,680,906 'y':49,661,683,908 'yagni':442,1286 'yaml':714 'z':54,912 'zero':814","prices":[{"id":"32767155-e6bd-40b3-8fa7-b84534fbfc72","listingId":"f64902de-73fd-4898-a45c-b5cd29f335a4","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:12.793Z"}],"sources":[{"listingId":"f64902de-73fd-4898-a45c-b5cd29f335a4","source":"github","sourceId":"MoizIbnYousaf/marketing-cli/create-skill","sourceUrl":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/create-skill","isPrimary":false,"firstSeenAt":"2026-05-04T19:06:12.793Z","lastSeenAt":"2026-05-18T19:05:48.823Z"}],"details":{"listingId":"f64902de-73fd-4898-a45c-b5cd29f335a4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"MoizIbnYousaf","slug":"create-skill","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":"5db4bb111880eccb5ad203a5ecda27448ce10c4c","skill_md_path":"skills/create-skill/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/create-skill"},"layout":"multi","source":"github","category":"marketing-cli","frontmatter":{"name":"create-skill","description":"Create new marketing skills for the mktg playbook. Use when the agent needs to add a new capability, someone says 'create a skill', 'new skill', 'add a marketing skill', 'extend the playbook', 'I need a skill for X', 'build a skill', 'make a skill for Y', or 'add capability for Z'. Also use when someone wants to capture a marketing workflow they just did into a reusable skill, or when they say 'turn this into a skill'. Reads the skill contract, generates SKILL.md with correct frontmatter and structure, creates the directory, and reminds the agent to register in the manifest."},"skills_sh_url":"https://skills.sh/MoizIbnYousaf/marketing-cli/create-skill"},"updatedAt":"2026-05-18T19:05:48.823Z"}}