Agent skill · Create

linkedin-post

Draft a LinkedIn post built for how the LinkedIn feed actually works: a hook that earns the "…see more" click in the first 200 characters, white-space rhythm…

frontmatter · SKILL.md+
name: linkedin-post
description: >
  Draft a LinkedIn post built for how the LinkedIn feed actually works: a hook that earns
  the "…see more" click in the first 200 characters, white-space rhythm, one idea per
  post, a specific call to action, and no hashtag soup. Reads social-context.md for the
  user's brand voice, audience, and content pillars, so drafts sound like them instead
  of like LinkedIn. Use when the user says "write a LinkedIn post", "draft a LinkedIn
  update", asks for a "LinkedIn version of this", or says "post this on LinkedIn".
  Produces two hook variants, self-checks the draft against the user's voice rules, and
  handles links the LinkedIn-native way (first comment, not the body).
metadata:
  version: 1.0.0
  category: Create
  topics: [linkedin, writing]
  examplePrompt: "Write a LinkedIn post about the lesson from our failed launch"

Write a LinkedIn post that sounds like the user and survives the feed: hook above the fold, one idea, room to breathe, a CTA that asks for something specific.

Context

Read social-context.md at the project root (also check .agents/social-context.md) for Voice rules, Audience, Pillars, and the Never list. If it's missing, offer to run the social-context skill first, but don't block — ask three quick inline questions (who's the audience, what tone: casual/professional/spicy, any hard nos) and proceed.

Workflow

  1. Get the raw material immediately. Ask what the post is about if not stated; if the user gave a topic, dig for the specific: the number, the mistake, the exact moment, the line someone actually said. A post about "lessons from our launch" is dead; a post about "the day-3 metric that told us it was over" is alive. Don't draft until you have at least one concrete detail.
  2. Pick the angle. Map the material to one of the user's Pillars and check it against the Never list. If the material could serve two audiences (peers vs. buyers), ask the user which one this post is for — the same story is told differently to each.
  3. Ruthlessly cut to one idea. If the material contains two lessons, tell the user and ask which one ships today (the other becomes a future post). A LinkedIn post that argues two things argues nothing.
  4. Draft the hook first, in two different patterns. The hook is everything before the fold — roughly the first 200 characters, about 1–3 short lines. Pick two contrasting patterns:
    • Outcome-first: the result, no context. "We deleted our pricing page. Trials went up 40%."
    • Confession: the mistake stated flat. "I spent $30k on a launch nobody noticed."
    • Contrarian claim: the belief they're wrong about. "Your case studies aren't building trust. They're screening you out."
    • Specific scene: drop into the moment. "Tuesday, 6:14am, our biggest customer's name in my inbox with the subject 'we need to talk'." Never open with throat-clearing ("I've been thinking a lot lately about…") and respect any Voice rule about openers.
  5. Write the body for each hook: 60–180 words, one thought per paragraph, a line break every 1–2 sentences. Structure = tension → turn → takeaway. The takeaway must be something the reader can use, not a moral ("be resilient" fails; "kill the launch if week-1 activation is under 20%" passes).
  6. End with one specific CTA matched to the post's goal:
    • a pointed question that has a real answer ("What's your kill threshold?"), or
    • an offer ("I wrote up the full postmortem — comment 'launch' and I'll send it"), or
    • a plain follow reason. Never "Thoughts?" or "Agree?".
  7. Links: never in the body — say why once (the preview eats the hook, and readers leaving mid-post kills the post). If the user has a link, write a first-comment version: one line of context plus the link.
  8. Hashtags: default zero. Maximum 3, only if the user asks or their context specifies them, always at the very end, always specific (#devtools not #business).
  9. Self-check both variants against every Voice rule in social-context.md, line by line. Fix violations; if a rule conflicts with a strong hook, keep the voice and note the tradeoff to the user.
  10. Format pass — read it as it will render:
    • no markdown (LinkedIn shows literal asterisks),
    • em-dash and emoji usage per Voice,
    • no paragraph over 2 sentences,
    • hook intact within the first ~200 characters,
    • total under 3,000 characters. Count characters and show the counts.
  11. Present both variants labeled by hook pattern, with hook char count and total char count for each, plus the first-comment link text if any. Ask which variant to refine, and iterate on the winner.

Quality bar

Constraint Rule
Total length ≤ 3,000 characters (sweet spot 600–1,300)
Hook ≤ 200 characters; must work standing alone, before "…see more"
Paragraphs 1–2 sentences each; line break between every paragraph
Ideas per post Exactly one
Hashtags 0 by default, 3 max, end of post only
Links Never in body; first-comment text provided instead
CTA One, specific, answerable; no "Thoughts?"/"Agree?" engagement bait
Formatting Plain text only — no markdown bold/italics/bullets syntax
Voice Passes every rule in the Voice section of social-context.md

Deliverable

Two ready-to-paste variants (labeled by hook pattern, with hook and total character counts), the first-comment link text if a link was involved, and a one-line note on which variant you'd pick and why. End there.

Related skills