Twitter Thread Drafter — CMO weekly content (v1.0)
Wedge keystone. Per
EXECDESK-WEDGE-VALIDATION-RESULT.md:
- Maya (F1): "That's the whole job. That's what I'd pay for."
- Asha (F5): "If a CMO drafted my weekly /r/soapmaking post and queued it for me to approve? That's exactly what I keep almost-doing-myself but never get around to."
This is THE skill the wedge wants. Voice fidelity is the line between "I'd publish this" and "canceling subscription."
CMO drafts a 5–7 tweet thread tied to the founder's brief (audience, voice, current product / launch / season). Output goes straight to the approval queue with default-ON gate per §0.7 #9 — never auto-publishes externally.
When it runs
On-demand (today)
User types "draft a thread about [topic]" in /#/execdesk chat. Topic can be:
- A current product/launch ("the new card-holder line")
- A milestone or AMA ("our $50k MRR moment")
- A craft/build-in-public update ("the new vegetable-tan supplier")
- A community AMA prep ("/r/EDC AMA next week — draft the opener")
If no topic provided, the CMO infers one from the brief's "this quarter" goals + recent memory. If still ambiguous, asks ONE question: "What's the thread about — a product launch, a milestone, a community AMA, or something else?"
Scheduled (Phase 2)
Default cron 0 9 * * 1 (Monday 9am, founder TZ — runs AFTER the weekly-brief at 8am so it can pick up the CEO's "this week's bet"). Output:
- Drafts a thread on the highest-priority topic from the weekly brief's Monday action
- Auto-queues to
/#/execdesk-approvalwith default-ON gate - Surfaces in home view's "What your team did this week" feed
Output schema (locked v1.0)
**[Thread topic — one line]**
1/ [Hook tweet — under 240 chars. Must stop the scroll. The first 7 words decide whether anyone reads tweet 2.]
2/ [Concrete specific. Numbers, names, places. NOT "we've grown a lot" — "we hit $42k MRR in 18 months from a basement workshop in Ohio."]
3/ [The story or insight. Founder voice. Not influencer voice.]
4/ [Continue the thread — 3–5 more tweets max. Each one self-contained but tied to the next.]
5/ [Optional: a tactical or contrarian angle. The thing your audience knows but Twitter writers don't.]
6/ [Optional: the lesson or what's next.]
7/ [CTA tweet — soft. Link in comments / DM me / etc. Never "BUY NOW".]
—
*[1-line rationale: why this angle, why this tone. Max 20 words.]*
**Auto-queued to `/#/execdesk-approval` for your review before posting.**
Voice rules (locked — these are why founders stay)
Required:
- Founder-mirror voice. If brief says "shop" not "store," every tweet says "shop." If brief says "folks" not "customers," every tweet says "folks."
- Concrete specifics. Names, numbers, places. "Vegetable-tanned leather, made in Ohio, no hardware" beats "premium materials."
- Self-contained tweets. Each tweet should make sense on its own when retweeted.
- Under 280 chars per tweet.
- Numbered with
N/prefix (the de facto Twitter thread convention).
Banned:
- "Are you ready to..." / "Imagine if..." / "Here's the thing..." / "Plot twist:" — viral-thread cliché openers
- 🧵 emoji as the opener (cliché). Use it ONLY if the brief signals the founder uses it naturally.
- "Game-changer", "10x", "leverage", "ecosystem", "drive engagement", "value prop" — LinkedIn-speak
- "I want to share..." / "I'd love to share..." / "Excited to announce..." — corporate filler
- Generic CTAs — "If you liked this thread, follow for more!" is a tell. Don't.
- More than 7 tweets unless the founder explicitly asks. Brevity > comprehensive.
Brief grounding requirements
The thread MUST cite at least 2 of these from the brief, by name:
- A specific product, line, or SKU
- A specific number (revenue, customer count, AOV, % growth, time-in-business)
- A specific community or audience reference (subreddit, niche, geography)
- A specific competitor or comparison anchor
If you can't fit any of those, the thread is too generic — re-anchor and rewrite.
Approval gate (default-ON, locked exception)
Per §0.7 #9, this skill ALWAYS routes through the approval queue. The approval gate is default-ON and CAN be turned off by the founder per-skill (it's not hard-locked like CFO outflows). But until they do, the gate is on.
The skill enqueues via window.ExecDeskApproval.enqueue({...}) (browser-side) when run from the /#/execdesk UI, OR via /api/exec/save-approval (Phase 2 endpoint TBD when scheduled-cron path lands).
Queue payload:
{
"source": "execdesk-action-twitter-thread-drafter",
"source_label": "CMO",
"source_color": "#16a34a",
"action": "twitter-thread",
"title": "[Thread] {topic} — {N} tweets",
"summary": "Auto-drafted by CMO. Review voice, specifics, CTA before posting.",
"payload_preview": "{first 600 chars of thread}",
"gate_reason": "External publish — default-ON per §0.7 #9"
}
Failure modes to avoid
- Generic motivational thread. "Here are 5 lessons from building a $42k MRR business…" — no. That's LinkedIn slop. Concrete > generic; specific > universal.
- Founder-impersonation drift. If the brief says the founder is dry and self-deprecating, don't write earnest enthusiasm. Mirror their actual voice from quotes in the brief.
- Over-engineered hook. "Plot twist: I almost shut down my company last year. Here's what changed." → cliché. Skip the artificial cliffhanger; lead with the real thing.
- Missing CTA or wrong CTA. Soft, voice-aligned CTAs only. "Link in comments" / "DM if curious" / "Reply with your favorite color and we'll bump you up the list" — these match craft-community vibes. "BUY NOW WITH CODE LAUNCH20" doesn't.
- Too many tweets. Threads over 7 tweets lose readership fast. Default to 5–6. Earn the 7th.
Output destination
- Render in chat so the founder sees it immediately
- Enqueue to
/#/execdesk-approvalwith the payload above - Persist to memory at
workbench:skill:execdesk-cmoso the CMO sees its own draft history
Eval target
Two golden prompts in evals/execdesk/golden-sets/cmo/:
002-tweet-thread.md(already exists) — covers basic thread shape- New:
006-thread-no-topic.md— verifies the CMO asks ONE clarifier when topic missing
Eval pass conditions: 5–7 numbered tweets, ≥2 brief citations, voice-banned-phrases absent, length per tweet ≤280, includes a soft CTA.
What this skill does NOT do (out of scope)
- ❌ Doesn't post to Twitter directly. Approval queue gates external publish, always.
- ❌ Doesn't draft single tweets. Use a different skill or just chat with the CMO.
- ❌ Doesn't draft threads on topics outside the founder's brief without asking. If the user wants "draft a thread about AI ethics" and the founder sells leather goods, the CMO asks: "That's outside your usual lane — sure you want it from me?"
- ❌ Doesn't engage in viral-thread tropes (numbered list of life lessons, "I built a 7-figure business and here's what I learned" framing, etc.). Draft real content, not Twitter-formula content.