Skip to content
Back to skills

Draft Post

ASecurity

Draft a single piece of social content — X post, X thread, LinkedIn post, blog post, or short email — with channel-specific structure, hook patterns, and brand-voice application. Use when the user asks to "write a tweet about X", "draft a thread on Y", "post about today's progress", or any other single-asset content request. Pairs with brand-review (check before posting) and build-in-public (strategy layer).

  • 36 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 10, 2026
ai-agentsgogit

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 10, 2026

npx -y skills add theheavenlyd3mon/hermes-profiles --skill draft-post --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Draft Post?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Draft Post
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/theheavenlyd3mon-draft-post/badge)](https://www.skillsdirectory.com/skills/theheavenlyd3mon-draft-post)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: draft-post
description: Draft a single piece of social content — X post, X thread, LinkedIn post, blog post, or short email — with channel-specific structure, hook patterns, and brand-voice application. Use when the user asks to "write a tweet about X", "draft a thread on Y", "post about today's progress", or any other single-asset content request. Pairs with brand-review (check before posting) and build-in-public (strategy layer).
version: 1.0.0
author: senna
triggers:
  - "draft a post"
  - "write a tweet"
  - "draft a thread"
  - "write a LinkedIn post"
  - "post about"
  - "blog post about"
metadata:
  hermes:
    tags: [social-media, x, twitter, linkedin, content, writing, build-in-public]
    related_skills: [build-in-public, brand-review-content, reply-research, xurl]
---

# Draft Post

Generate a single content asset tailored to one channel. Strategic layer lives in `build-in-public` — this is the execution layer for "I need to ship one good post right now."

## When to Use

- User says "draft a tweet/thread/post about X"
- A cron job from `build-in-public` is triggered and needs to produce the actual draft
- User wants 2-3 variations of the same idea for different channels

## When NOT to Use

- Multi-asset campaign with a calendar → use `campaign-plan` (TBD) or just iterate this skill
- Quality check on existing draft → use `brand-review-content`
- Engagement reply to someone else's post → use `reply-research`

## Inputs to Gather

If any of these are unclear, ASK before drafting. Do not invent context.

1. **Channel** — X post, X thread, LinkedIn, blog, email. Default to X if unspecified.
2. **Topic/Trigger** — what shipped, what failed, what you're thinking about. Specific > abstract.
3. **Goal** — engagement, build-in-public transparency, lead-gen, education, or community signal.
4. **Length constraint** — auto-derived from channel but override if user asks.
5. **Voice** — if user has a configured brand voice (see `brand-review-content` skill for the framework), apply it. Otherwise default to: first-person, specific, no AI-isms, no corporate jargon, dry humor OK, never "leverage" / "game-changer" / "unlock".

## Channel-Specific Structure

### X Post (single tweet, ≤280 chars)

Pattern:
- **Hook in first 8 words** — concrete detail, surprising number, contrarian take, or sharp question
- **One specific point** — never two. Threads exist for that reason.
- **Optional CTA** — only if there's a real ask (link, reply prompt, follow). Don't manufacture one.

Avoid:
- Opening with "Just" or "So"
- Generic engagement bait ("agree?", "thoughts?")
- More than 1 emoji unless writing in a tone where 2-3 fit
- Hashtags inside body text (max 1-2 at the end if needed)

Output 2-3 variants when possible. Different hook angles, same point.

### X Thread (5-10 tweets, optional 25k mode for power users)

Structure:
1. **Hook tweet** — earn the click. Promise something specific.
2. **Setup** — 1 tweet of context for people who don't know you
3. **Body** — 3-7 tweets, one idea per tweet. Use line breaks aggressively.
4. **Reversal or insight** — the moment readers screenshot
5. **CTA** — soft. Follow, reply, link out. Match the goal.

Pitfalls:
- Don't start tweet 2 with "A thread 🧵" — the hook should make people want it
- Don't number tweets unless the content is genuinely a list
- End on substance, not "follow for more"

### LinkedIn Post (150-300 words, paragraph breaks every 1-2 lines)

Structure:
- Hook line, then a blank line
- Setup paragraph (2-3 short lines)
- Substance (3-5 short paragraphs, one idea each)
- Takeaway / insight
- Optional question to drive comments

Tone shift from X: more professional framing, less in-jokes, no shitposting. Same authenticity, dressed differently.

### Blog Post (500-2000 words)

Structure:
- **Headline** — provide 2-3 options. Specific beats clever.
- **Lede** — first paragraph promises what the reader gets and proves the writer earned the read
- **3-5 H2 sections** with descriptive headings
- **Code blocks, screenshots, or specific numbers** wherever possible
- **Conclusion** — what changed for you, what the reader should try
- **CTA** — relevant link, follow, newsletter

SEO is secondary for build-in-public blogs. Voice and specificity win.

### Short Email (newsletter, ≤300 words)

- **Subject line** — provide 2-3 options. Curiosity > clickbait.
- **Preview text** — extends the subject, doesn't repeat it
- **One main idea**, treated like a long-form tweet
- **Sign-off** consistent with brand voice

## Voice Defaults (when no brand voice configured)

If the user hasn't defined their voice, apply these defaults — they match indie-hacker / build-in-public conventions:

- First person, present tense for what's happening now
- Past tense for stories — "I shipped X and Y broke" beats "shipping X"
- Specific numbers over vague claims: "47 users" not "some users"
- Name the thing — products, tools, libraries by name
- Failure stories outperform success stories — write the honest version
- Dry humor lands; forced humor doesn't. Skip if unsure.
- Never use these words: leverage, unlock, game-changer, revolutionize, seamless, holistic, robust, cutting-edge, synergy
- Never start a post with "Just" or "So" (filler openers)

## Workflow

1. **Confirm channel and topic.** Ask if either is unclear. Do not guess.
2. **Pull context.** Check recent git activity, recent posts (via `xurl` if relevant), notes the user references.
3. **Pick the hook angle.** State which hook pattern you're using and why (1 line, not a paragraph).
4. **Draft.** Output 2-3 variants for short content, one full draft for long content.
5. **Annotate.** Brief note on which voice rules were applied, any guesses you made.
6. **Offer next step.** "Want me to run this through brand-review-content?" or "Adapt for LinkedIn?" or "Tighten one of these variants?"

## Output Format

```
## Draft: [Channel] — [Topic]

**Hook angle:** [which pattern, 1 line]

---

[Variant 1 or full draft]

---

[Variant 2 if short content]

---

[Variant 3 if short content]

---

**Voice notes:** [what was applied, e.g. "specific numbers, failure framing, no corporate words"]
**Open questions:** [anything you guessed and want the user to confirm, e.g. "I assumed your goal was engagement — if it's lead-gen, the CTA should change"]
```

## Pitfalls

1. **Don't draft without a trigger.** Generic "thoughts on building in public" posts are filler. If the user can't name what happened today, push back: "What specifically shipped or broke? That's the post."

2. **Don't auto-add hashtags.** Most indie-hacker accounts under 10K followers get nothing from hashtags. Only add if user asks or the post genuinely fits a tagged community.

3. **Don't manufacture stakes.** "This changed everything" when it didn't is the loudest tell of AI-generated content. If the impact was small, say it was small.

4. **Don't write threads when a single tweet works.** Most build-in-public updates are single tweets. Reserve threads for genuine deep-dives.

5. **Don't write in someone else's voice.** If the user has 50+ existing posts, reference 2-3 of them in your draft logic. If they don't, draft conservatively and ask for feedback to calibrate.

6. **Don't end with "DM me if interested" unless that's the real ask.** Most CTAs are filler. Cut them.

## Source

Adapted from Anthropic's knowledge-work-plugins (Apache-2.0). See `references/anthropic-source-notes.md` for origin repo, adaptation decisions, and further mining candidates.

## Related Skills

- `build-in-public` — strategy layer (cadence, X Premium, VPS, cron setup)
- `brand-review-content` — run drafts through voice/quality check before posting
- `reply-research` — drafting replies to other accounts (different workflow)
- `xurl` — actually posting to X

Files in this skill

  • SKILL.md7.7 KB
  • references/anthropic-source-notes.md1.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.