name: linkedin-post-writer description: > Write LinkedIn posts that generate handraiser comments or opt-in clicks. Two modes: aspirational identity (public CTA — comment keyword) and pain-driven (private CTA — opt-in link). Uses PGA hook formats, Advisory OS voice, and built-in copy QC. Use when: "write a LinkedIn post", "I need a post for this week", "help me write something for LinkedIn", "create a handraiser post", "write an opt-in post", or any request to produce LinkedIn content. metadata: author: Kathryn Brown, Advisory OS version: "1.1.0" updated: "2026-04-12" hook-framework: PGA LinkedIn Writing Coach (11 hook formats, 5 content styles) — source: Nicolas Cole, Premium Ghostwriting Academy. Original files in business-aos/inspiration/pga-linkedin-writing-coach/
LinkedIn Post Writer
Write LinkedIn posts that start conversations. Not thought leadership. Not content marketing. Posts that make someone comment or click because they want what you described.
Platform Gate
This skill writes for LinkedIn only. If the user asks for Facebook, Instagram, TikTok, or any other platform — stop and route to /organic (VIP). Do not adapt a LinkedIn post for another platform. Do not proceed. The platforms have different rules, different algorithms, different branding (LinkedIn = AOS brand, Facebook/Instagram = CYP/Practice Builders brand). Producing content for the wrong platform wastes time and requires a full rewrite.
Campaign Rules Check (Before Anything Else)
Before generating any content, read the campaign rules. If this post is for a specific campaign (e.g., Practice Command Center), read the STATUS.md or campaign rules section for that campaign and apply those rules in addition to this skill's rules. Campaign rules override skill defaults when they conflict.
Known campaign rules (Practice Command Center):
- "Claude skill" in the first sentence of every handraiser post — tested and proven
- Every post gets TWO files: HTML (image + analysis) + .txt (LinkedIn copy-paste ready)
- Numerals, not words in all marketing copy (3 not three, 6 not six)
- Image rows = outcomes, not process steps
If you don't know which campaign this post belongs to, ask.
Companion Files
Read before writing:
reference/core/voice.md— tone, vocabulary, avoid list. Voice.md wins over any rule in this skill.content/business/marketing/qc-agents/copy-qc.md— full AI pattern detection. Run before output.content/business/marketing/skills/linkedin-sentence-editor-skill.md— 8-rule sentence edit. Run before output.
Two Modes
Every post is one of two modes. Ask the user which one before writing.
Mode 1: Handraiser (Aspirational Identity)
CTA: Public comment with a keyword (e.g., "Comment BUILD if you want this") Hook lens: "I want to be that person" — the reader sees an identity they want Why aspirational: Nobody wants to publicly signal they're struggling. Commenting a keyword is a public act. People comment when the keyword signals who they're becoming, not what's broken.
Rules:
- "Claude skill" in the first sentence of every handraiser post for the Practice Command Center campaign. Tested: Post #1 and #3 converted with it in line 1. Post #2 got zero comments when it was buried. This is a proven pattern, not optional.
- Hook must create desire, not diagnose pain
- The keyword should be aspirational (BUILD, DEPLOY, SYSTEM) not pain-based (STUCK, HELP, FIX)
- The post body shows what's possible, not what's wrong
- End with: "Comment [KEYWORD] and I'll send you [specific micro-tool]."
Mode 2: Opt-in (Pain-Driven)
CTA: Link to opt-in page (private action) Hook lens: "That's my problem exactly" — the reader sees their situation named Why pain works here: Clicking a link is private. Nobody sees it. Pain-driven hooks work when the action is invisible. The reader can acknowledge their problem without announcing it.
Rules:
- Hook names the specific constraint or cost
- The post body quantifies the pain (hours, dollars, risk)
- End with: "I built a free [tool/skill] that [specific outcome]. Link in comments." or similar private CTA
Inputs
Before writing, collect:
- Mode — Handraiser or Opt-in?
- Topic — What is this post about? A specific insight, result, pattern, or tool.
- Target audience — Who specifically? (Default: practice owners in professional services)
- Proof — What specific numbers, results, client outcomes, or experiences back this up? No placeholders. Real numbers or nothing. Verify proof claims against actual data — check the IP library, client repos, or ask the user. Do not guess or round down. If you used "20+" last time and the real number is "over 100," you've undersold the proof and weakened the post.
- CTA — For handraiser: propose a keyword (short, easy to spell, aspirational, no weird associations — e.g., BUILD, EXTRACT, SYSTEM). State what they get. For opt-in: confirm the link destination and what they get. Do not ask the user to pick a keyword — propose one and let them change it.
- Existing content (optional) — Do you have a rough draft, email, session recap, or prior post to draw from? If yes, extract core ideas from it. Do not invent claims not present in the source material.
The 11 Hook Formats
Every post starts with a hook — the first 1-3 lines visible before "See More." A great hook creates an open loop that compels the click.
Hook rules:
- 2 short single-sentence paragraphs with a line break between them, OR a 2-3 line paragraph under 140 characters
- Last sentence ends with a colon ":" if appropriate
- No formatting, no headers, no hashtags
- Each line is exactly one sentence
Which hooks work for which mode
Aspirational (Handraiser):
- Format 1 (Most Powerful) — "The single most powerful system for..."
- Format 2 (Big Number vs Small Number) — small investment, massive transformation
- Format 5 (Oddly Ignored) — positions something as overlooked competitive advantage
- Format 6 (The Struggle) — before/after identity transformation
- Format 8 (Belief Flip) — "I used to think X, but then Y"
- Format 11 (Everyone Should) — aspirational universal statement
Pain-Driven (Opt-in):
- Format 3 (The Call Out) — directly addresses audience with actionable number
- Format 4 (The Secret) — impressive proof + cliffhanger
- Format 7 (How To) — addresses a fear, promises specific solution
- Format 9 (The List) — tangible list creates curiosity gap
- Format 10 (The Crazy Part) — credibility + counterintuitive intrigue
Works for either:
- All formats can be adapted. The above is guidance, not a rule. The lens (aspiration vs. pain) matters more than the format.
Format Templates
1. Most Powerful: Strong declarative + parenthetical credibility. "The single most powerful [thing] for [audience]: (I've [proof])"
2. Big Number vs Small Number: Large outcome contrasted with small investment. "In [timeframe], [big result]. It runs on [surprisingly small thing]."
3. The Call Out: Direct address + actionable number. "[Audience]: Stick these [number] [things] to your [place]:"
4. The Secret: Impressive proof + cliffhanger question. "[Proof statement]. The secret?"
5. The Oddly Ignored: Contrarian positioning + superlatives. "The most underrated, oddly-ignored, yet highest-leverage [thing] in [year]:"
6. The Struggle: Relatable struggle + transformation with proof. "I struggled for [time] to [thing]. But now, [proof of transformation]:"
7. How To: Addresses fear/benefit + specific solution + parenthetical. "How to [desired outcome] in [timeframe] (even if [objection]):"
8. Belief Flip: Limiting belief + contradictory evidence. "I used to think [common belief]. But [shocking contradictory proof]:"
9. The List: 3+ items creating curiosity gap. LinkedIn cuts at 3 lines — the list forces "See More." "[Context]:\n- [Item]\n- [Item]\n- [Item]"
10. The Crazy Part: Credibility + counterintuitive hook. "[Impressive achievement]. The crazy part?"
11. Everyone Should: Universal empowerment + relatable pain. "Everyone should have [aspirational thing]. Sadly, most [relatable barrier]."
Post Body Structure
5 Content Styles
Choose one style for each post. The style determines what kind of value the post delivers:
- Steps — A sequential process the reader can follow
- Stats — Data-backed insights, research-driven points
- Mistakes — Common errors to avoid (with what to do instead)
- Lessons — Hard-won insights from experience
- Examples — Real-world case studies or illustrations
Mirror the style in all headers (e.g., "Step 1...", "Mistake 1...", "Lesson 1...").
Formatting Rules
Rule 1: First 200 characters hook AND cliffhanger. The hook is the first ~200 characters. It must create an open loop. Do not change the chosen hook once selected.
Rule 2: Tangible, skimmable headers. LinkedIn has no bold. Signal headers with: "Item #1: Header sentence here." or "1/ Header sentence here." Each header is Sentence Style (first word capitalized, rest lowercase). Each header delivers a standalone tactical point — readers should get 80% of the value by scanning headers alone.
Rule 3: Sell-The-Reader introduction (200-400 chars). Follows the hook. Four blocks:
- Block 1: The hook (already written)
- Block 2: 3-5 sentences on the problem or desired outcome
- Block 3: 1-2 sentences on what you're helping with today
- Block 4: Short transition ("Let's walk through each one.")
Rule 4: Alternate formats across sections. Odd sections (1, 3, 5): bulleted lists. Even sections (2, 4, 6): paragraph style. Never two of the same format in a row. Each section follows What (declarative opener) / How (3-5 tactical pieces) / Why (closing insight) — internal structure, do NOT label these in output.
Rule 5: One sentence per paragraph. Every sentence gets its own line. No stacking sentences into blocks. Use bulleted lists for 3+ related items. This is a skimming environment.
Character Limits
| Section | Target |
|---|---|
| Hook | ~200 characters |
| Introduction | 300-400 characters |
| Each main section | 300-450 characters |
| Conclusion + CTA | 100-200 characters |
Total: Under 2,800 characters. Non-negotiable.
If over limit, compress in order: remove filler → shorten bullets → condense paragraphs → reduce examples per section.
Voice Constraints (Built In)
These are extracted from voice.md. Voice.md is the authority — if anything here conflicts with voice.md, voice.md wins.
Tone: Confident, direct. Skilled surgeon explaining what needs to happen. Calm authority, zero sales pressure. Warmer on client outcomes, sharper on industry BS.
Cadence: Short sentences for impact. Longer for patterns. Strategic fragments. Paragraphs: 2-3 sentences max. White space does work.
Use: Deploy, build, install, hand off, constraint, bottleneck, infrastructure, capability, system, protocol, diagnose, extract, codify, practitioner, practice owner, "the thing."
Never use: Leverage, synergy, scalable, coaching, accountability, mindset, crush it, game-changer, level up, pick my brain, hop on a call, journey, transformation, revolutionary, groundbreaking, silent.
The pattern-reveal move: Name the pattern the audience can't see from inside their situation. Show why their instinct is backwards. This is the brand's distinctive voice — counterintuitive framing based on genuine pattern recognition, not contrarian shock.
Quality test for every line:
- Can I see it in my head? (Concrete > Abstract)
- Could someone call BS on it? (Specific > Vague)
- Could a competitor copy-paste this? (Distinctive > Generic)
- Does it name a pattern or just describe a symptom?
Writing Constraints (Active During Generation)
These constraints must be active WHILE writing — not applied as QC afterward. QC is the safety net. These are the guardrails during generation.
The Twinning Trap
Twinning is the #1 recurring failure in AI-generated content. It shows up as:
- "Not X. Y." — "Not the deliverable. The change."
- "Stopped X. Started Y." — "I stopped creating. I started extracting."
- "Don't need X. Need Y." — "You don't need ideas. You need a system."
- "Isn't X. It's Y." — "It isn't a content problem. It's an extraction problem."
All of these are the same pattern: two sentences where one negates and the other corrects, using mirrored structure. AI defaults to this because it creates the feeling of insight without requiring actual insight.
The fix: State the positive directly. Drop the negation half. If the insight is real, it doesn't need the setup of "not this."
Three Consecutive Identical Openers
Three or more sentences starting with the same word = P3. Especially "What...? What...? What...?" questions or "I... I... I..." statements. Vary the subject and sentence structure.
Word Repetition
No word more than twice in the post. Track especially: the topic word, "post/posts/piece/pieces," "engagement," "content," "practice owner."
Mandatory QC Pass (Before Output)
Do not present ANY content to the user until both passes are complete. This applies to hooks AND posts — not just final output. This is not optional.
Pass 1: Sentence Edit (8 Rules)
Apply in sequence to every line:
- End Strong — last word of each sentence is the most impactful word. Restructure if it ends on a pronoun, preposition, or auxiliary verb.
- Acronyms — first use writes it out, then short form. Exception: universally known terms (CPA, IRS, P&L, RIA, AUM).
- Economy — remove words that don't earn their place. Targets: already, still, really, very, just, actually, start to, in order to, the fact that.
- No Repeats — every sentence says something new. If two consecutive sentences make the same point differently, cut one.
- Vary Words — no word appears more than twice in the post. Swap at least one instance of any repeated noun.
- Precision Vocabulary — fourth-grade baseline with 3-5 precision upgrades per post. Precise, not fancy. Check voice.md avoid list.
- Two-Comma Rule — most sentences max two commas. More means the sentence is doing too much.
- Kill Adverbs — remove -ly words and stealth adverbs (already, just, really, very, basically, simply). Replace with stronger verbs.
Pass 2: Copy QC (Critical Checks)
These are the P1 and P2 patterns from copy-qc.md. Full file has 11 patterns — read it for the complete pass. These are the ones that MUST be caught:
P1 — Must fix before output:
- No twinning. Any "Not X. Y." or "Stopped X. Started Y." or "Isn't X. It's Y." pattern. Fold the reframe into one declarative sentence. See Writing Constraints above for the full list of variants.
- No mirror reversals. Same word in reversed positions across two clauses. Say what you mean without the wordplay.
- No question → dramatic silence → revelation. No "He went quiet." No narrated pauses before the punchline.
- Compound check: If ANY two patterns from the correction-revelation family (twinning, mirror reversal, "not because X / because Y", formulaic setup) appear in the same post — that's P1 regardless of individual severity.
P2 — Rewrite unless exception applies:
- No three-beat parallel lists unless demonstrating a literal data pattern with varied structure.
- No "Not because X. Because Y." — just state the actual reason.
- No "Most people think X. Actually Y." — max one per post, and only with evidence from real client observations.
- No trying-to-be-quotable lines. If it sounds like a fortune cookie, rewrite it. Read it out loud — would you say this in conversation?
P3 — Fix if multiple:
- No 3+ consecutive sentences starting with the same word.
- No more than 1 dramatic fragment per post.
Piece-level checks:
- Sentence lengths vary — no metronomic rhythm
- No word appears more than twice
- Not every insight structured as correcting a belief
- Passes the read-aloud test at conversation speed
- Every line passes the voice.md test: would the writer say this in a real conversation?
- Aspirational mode: would the reader want their network to see them engaging with this?
Process
- Read campaign rules — if this post belongs to a campaign, read the STATUS.md and campaign rules section before doing anything else. Apply campaign-specific rules throughout.
- Collect inputs — mode, topic, audience, proof (verified against actual data), CTA (propose keyword, don't ask), optional existing content.
- Generate all 11 hooks — one per format, tailored to the mode and topic. Run QC on every hook before presenting. Fix any violations before the user sees them.
- Present all 11 hooks with top 3 recommendations. Each recommendation includes a business case: why this hook will perform for this audience on this platform, what identity signal the commenter/clicker is sending, and what makes it stronger than the alternatives.
- User picks one (or more for multiple posts).
- Write the post — using the chosen hook, selected content style, and all formatting rules. Apply writing constraints actively during generation. Stay under 2,800 characters.
- Run sentence edit — apply all 8 rules. Fix violations before presenting.
- Run copy QC — check all P1, P2, and P3 patterns. Fix violations before presenting. Do not show QC report unless asked.
- Present the post — ready to copy-paste. Include character count and metadata.
- Ask — "Want to iterate, try a different hook, or see the QC report?"
Critical: Do not present hooks or posts that haven't been QC'd. Every output the user sees must already be clean. If you catch a violation after presenting, own it, fix it, and note what the skill should have caught.
Output Format
Present the final post as a clean text block — no markdown formatting, no headers, no code fences. Just the post exactly as it would appear on LinkedIn.
Below the post, include:
- Characters: [count]
- Mode: Handraiser / Opt-in
- Hook format: [number and name]
- Content style: [name]
What This Skill Does NOT Do
- Does not write thought leadership articles (use briefing skills for that)
- Does not create images (use linkedin-image-SKILL.md)
- Does not write DM sequences (use micro-tool-dm-system-agent.md)
- Does not write email campaigns (use email-sequence-templates-v2.md)
- Does not replace the full copy-qc.md pass — for high-stakes content, run the full QC separately
The Line This Skill Walks
This skill writes posts that generate action — comments or clicks. Every design choice serves that goal:
- Aspirational hooks because people publicly signal who they're becoming, not what's broken
- Pain hooks only when the action is private (opt-in links)
- PGA hook formats because they're engineered for open loops, not clever phrasing
- Voice constraints because AI-sounding posts get scrolled past
- Copy QC baked in because AI-isms destroy credibility faster than bad hooks
- Character limits because LinkedIn rewards density, not length
- One sentence per paragraph because this is a skimming platform
The post is a door. The conversation happens in the DMs.