/kai-social — A Week or Month of Posts, Ready to Schedule
Kai root note: knowledge/, harness/, and scripts/ paths in this skill live in the Kai install, not the user's project. Resolve them against the first ancestor directory of this SKILL.md that contains a knowledge/ folder (the Kai plugin root, ~/.claude/kai, or the kai-cmo-harness repo). MARKETING.md, memory/, and any output files live in the current project. If a referenced scripts/ command is not available in this install, say so, skip it, and continue with the file-based guidance — never fabricate its output.
Objective
A calendar the user approves, then a batch of finished posts against it — each one written natively for its platform, each carrying a hook that survives the first line or first three seconds, and none of which could have been written for any other brand. The batch is scheduleable as-is: copy, hashtags where they apply, visual direction, posting time.
The failure mode this skill exists to prevent is one post reformatted five ways. Platform-native means written for the platform, not resized for it.
Done when
Work type social-post — floor E5/C2/O3 (harness/eco-floors.yaml), read per post.
- E5 — the provider returns a post id and the public permalink read-back matches the approved text. Drafting reaches E2 (
harness/skill-contracts/social-post.yaml satisfied); the calendar's approval reaches E3; only publishing carries a post to E5. A batch sitting in workspace/social/ is not shipped.
- C2 —
four_us_score at 10/16 minimum and banned_word_check pass on every post.
- O3 — reach, engagement rate, profile clicks, and link clicks read from platform insights at 7 days.
Constraints
- Approval gate before production. Present the calendar and get sign-off before writing posts. Publishing is a second, separate approval — this skill does not post to any live account.
- Load the platform's organic posting rules before writing for that platform, same as ad policy references bind ad copy:
harness/references/x-organic-posting-rules.md, harness/references/meta-organic-posting-rules.md (Instagram/Facebook/Threads), harness/references/linkedin-organic-posting-rules.md, harness/references/tiktok-organic-posting-rules.md, harness/references/youtube-organic-posting-rules.md, harness/references/pinterest-organic-posting-rules.md, harness/references/snapchat-organic-posting-rules.md, harness/references/reddit-organic-posting-rules.md. Automation and volume limits: harness/references/social-automation-rules.md.
- Material connections get disclosed — paid, gifted, affiliate, or employee-authored content follows
harness/references/creator-disclosure.md. No buried #ad.
- No invented proof. Customer results, metrics, testimonials, and case-study numbers come from a source or they do not appear. A social-proof pillar with no proof is a data gap, not a creative prompt.
- Read
MARKETING.md from the project root before asking the user anything. If it does not exist, build it from the codebase — README, manifests, landing pages, route files, analytics and email config — and confirm the draft.
Per-post bar — every post clears all six:
- Hook in the first line. No warm-up, no preamble.
- Zero banned words.
- Zero AI slop.
- Platform character limits respected.
- One CTA, or none for a pure value post.
- Not generic — it could only have come from this brand.
Pillar mix — the default balance, adjusted only for a stated reason:
| Pillar | Share |
|---|
| Value / educational | 40% |
| Social proof | 25% |
| Product | 20% |
| Culture / behind-the-scenes | 15% |
Platform format contracts:
| Platform | Format |
|---|
| LinkedIn | Hook line (pattern interrupt or bold claim), 3–5 short paragraphs, line breaks between every thought, CTA at the end, 1200–1500 chars optimal |
| X/Twitter | Single tweets max 280 chars with the hook front-loaded; threads 3–7 tweets, each standalone valuable, numbered, CTA or summary at the end |
| Instagram | Captions 150–300 words with the hook before the "…more" cut; carousels 5–10 slides, one idea per slide, bold text; Reels scripted with the hook in the first 3 seconds |
| TikTok | Hook in the first 2 seconds (question, bold claim, or visual pattern interrupt), 15–60 second script, trending format adaptation, CTA as the last frame |
| YouTube | Shorts 30–60 second hook-first script; community posts as a poll or discussion question |
Context
Seven things must be known before the calendar is built — MARKETING.md answers most: what the brand is posting about, which platforms, the time horizon (one week or one month), cadence per platform, the content pillars (educational, behind-the-scenes, product, social proof, culture), tone (professional, casual, bold, irreverent), and what existing content — blog posts, videos, assets — can be repurposed.
| Need | Load |
|---|
| Output structure, gate thresholds | harness/skill-contracts/social-post.yaml |
| Cross-platform strategy and cadence | knowledge/playbooks/social-media-strategy.md |
| Instagram formats and behavior | knowledge/channels/instagram.md |
| X/Twitter formats and behavior | knowledge/channels/x-twitter.md |
| TikTok distribution mechanics | knowledge/channels/tiktok-algorithm.md |
| YouTube formats | knowledge/channels/youtube.md |
| LinkedIn long-form | knowledge/channels/linkedin-articles.md |
| Product, ICP, voice, current channels | MARKETING.md (project root) |
Output goes to workspace/social/: _calendar.md (day, platform, pillar, format, hook, status), one file per post under a per-platform folder (linkedin/, x-twitter/, instagram/, tiktok/), and _quality-report.md. Each post file carries format, hook, copy, hashtags where applicable, visual direction, and posting notes (best time, cross-post targets). Same paths as v1 — downstream tooling does not branch on version.
Escalate when
- A pillar the user asked for has no sourced material behind it — social proof without results, product posts without a shipped feature.
- The requested cadence exceeds what the platform's automation rules allow for the account type.
- A post would make a regulated, health, financial, or comparative claim needing substantiation.
- Content involves a creator, employee, or partner and the disclosure obligation is unresolved.
- The user asks to publish or schedule directly to a live account.