Create a content brief using the Kai CMO Harness schema. Every piece of content starts with a brief.
Phase 0: Load Product Context
Check if MARKETING.md exists in the project root (same directory as CLAUDE.md, README.md, package.json).
If it exists: Read it — skip product discovery questions. It has the product name, ICP, value prop, monetization, brand voice, current channels, and competitive landscape.
If it does NOT exist: Auto-explore the codebase to create it in the project root (next to CLAUDE.md). Do NOT ask the user what the product is. Read CLAUDE.md, README.md, PROJECT.md, package.json, landing pages, and any project files. Search for email/ad/analytics config. Then create MARKETING.md using the template from /kai-email-system. Present draft to user for confirmation.
Process
1. Gather Inputs
Read from MARKETING.md. Only ask about things not covered there:
- What are we writing? (blog, email, LinkedIn, ad, etc.)
- What's the topic/keyword?
- Who's it for? (suggest a persona from the list below)
- What's the angle? Not just the topic — the specific frame. "AI for law firms" is a topic. "Why law firms lose 40% of leads after 5pm" is an angle.
- What should the reader do? (CTA)
- Any proof/data we can use?
2. Select Persona
Read knowledge/personas/_persona-index.md for the full list. Quick reference:
| Persona | Core Hook | Best For |
|---|---|---|
| Competent Cog | "The system treats you like a child" | B2B SaaS, enterprise |
| Shock Absorber | "Accountability without authority" | Middle management |
| Ghosted Applicant | "The game is rigged" | Job seekers, HR tech |
| Subscription Serf | "They bet you won't fight back" | Consumer SaaS |
| System Manager | "No village, only vendors" | Parents, household managers |
| Admin Martyr | "Death by a thousand tasks" | Admin/ops roles |
| Obsolescence Anxious | "Working hard isn't the variable" | Career-concerned professionals |
| Credibility Fighter | "You're not crazy" | Experts fighting misinformation |
Load the full persona file before writing the brief. It contains language patterns, pain points, and hooks that shape the angle.
3. Output Brief
Follow the schema from harness/brief-schema.md:
{
"target_site": "[site]",
"target_keyword": "[primary keyword]",
"secondary_keywords": ["2-3 terms"],
"format": "[blog|linkedin|email|ad|press]",
"persona": "[archetype name]",
"angle": "[specific frame]",
"hook_options": ["Hook 1", "Hook 2", "Hook 3"],
"audience_pain": "[single biggest frustration]",
"proof_available": "[data, stories, examples]",
"cta": "[desired action]",
"word_count_target": 0,
"publish_date": "YYYY-MM-DD"
}
4. Validate
Before passing the brief to /kai-write:
hook_optionshas exactly 3 variantsangleis differentiated fromtarget_keyword(not a restatement)proof_availablereferences actual data or a named example (not vague)