<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sergey Bulaev</title>
    <description>The latest articles on DEV Community by Sergey Bulaev (@sergebulaev).</description>
    <link>https://dev.to/sergebulaev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4017504%2F65b4bb8f-dc45-4e7f-a300-408d2b7c9b8a.jpg</url>
      <title>DEV Community: Sergey Bulaev</title>
      <link>https://dev.to/sergebulaev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sergebulaev"/>
    <language>en</language>
    <item>
      <title>What 400 viral LinkedIn posts taught me: 16 hook formulas, now open-source Claude Code skills</title>
      <dc:creator>Sergey Bulaev</dc:creator>
      <pubDate>Mon, 06 Jul 2026 10:48:59 +0000</pubDate>
      <link>https://dev.to/sergebulaev/what-400-viral-linkedin-posts-taught-me-16-hook-formulas-now-open-source-claude-code-skills-316m</link>
      <guid>https://dev.to/sergebulaev/what-400-viral-linkedin-posts-taught-me-16-hook-formulas-now-open-source-claude-code-skills-316m</guid>
      <description>&lt;p&gt;I spent a month doing something slightly unhinged: I pulled 400 above-average LinkedIn posts across 10 verticals, ran them through a fleet of analysis agents, and reverse-engineered why their first lines worked. Then I turned the findings into open-source skills for Claude Code and Codex.&lt;/p&gt;

&lt;p&gt;This post covers what the data said, what surprised me when I pressure-tested the skills, and where to get them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The dataset
&lt;/h2&gt;

&lt;p&gt;400 posts that outperformed their authors' baselines, spread across 10 verticals: founders, marketing, engineering, sales, HR, finance, design, data, product, and personal brands. For each post I tracked the hook (first 210 characters, everything before "... see more"), the structure, the engagement split (comments vs reposts vs likes vs saves), and the author's baseline so a big account's average day did not read as a small account's viral hit.&lt;/p&gt;

&lt;p&gt;The single strongest signal was boring and consistent: &lt;strong&gt;the hook does most of the work, and hooks are formulaic.&lt;/strong&gt; Not "formulaic" as an insult. The same 16 first-line patterns kept producing the outliers, vertical after vertical.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 16 hook formulas
&lt;/h2&gt;

&lt;p&gt;Ten of them are long-form thought-leadership patterns, with reference engagement numbers from verified 2025-2026 posts:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Formula&lt;/th&gt;
&lt;th&gt;Example multiplier&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Platform Risk Anaphora&lt;/td&gt;
&lt;td&gt;4,240 eng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R.I.P. Obituary ("the era of X is over")&lt;/td&gt;
&lt;td&gt;3,822&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contrarian + Historical Receipts&lt;/td&gt;
&lt;td&gt;3,083&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Odd-Precision Money Ledger ("$4,217.38, not ~$4k")&lt;/td&gt;
&lt;td&gt;9.4x baseline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paid-vs-Free Reversal&lt;/td&gt;
&lt;td&gt;19.64x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Year-over-Year Pivot&lt;/td&gt;
&lt;td&gt;3.74x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Curiosity-Gap Teaser&lt;/td&gt;
&lt;td&gt;4.25x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time-Anchor Confession, Self-Proving Meta, Comment-Gate&lt;/td&gt;
&lt;td&gt;1,000-3,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The other six came out of the 400-post corpus and skew shorter and more emotional: the Emotional Cold-Open, the Permission Slip ("you're allowed to ship ugly"), the Bait-and-Switch Reversal, Named Gratitude, Explain-to-Kids, and Status-Strip Humility.&lt;/p&gt;

&lt;p&gt;The non-obvious part is that each formula has a primary engagement goal. Comment-gate formulas cap reach but build lists. Named Gratitude gets reposts. Explain-to-Kids gets saves. Picking a formula by topic alone is how you get a technically-viral post that earns the wrong currency. So the skill asks "what do you want this post to earn?" first and only then narrows by topic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turning research into skills
&lt;/h2&gt;

&lt;p&gt;I packaged the whole workflow as a bundle of 10 skills for Claude Code and Codex: a post writer built on the 16 formulas, a humanizer that strips AI tells, a pre-publish audit against current algorithm heuristics, comment and reply drafters, a hook extractor that reverse-engineers any viral post you paste, a content planner, a profile optimizer, engager analytics, and a thread monitor.&lt;/p&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin marketplace add sergebulaev/linkedin-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add sergebulaev/linkedin-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo: &lt;a href="https://github.com/sergebulaev/linkedin-skills" rel="noopener noreferrer"&gt;https://github.com/sergebulaev/linkedin-skills&lt;/a&gt; (MIT, ~300 stars at the time of writing).&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that surprised me: skills fail under pressure in weird ways
&lt;/h2&gt;

&lt;p&gt;Shipping the skills was the easy half. The interesting engineering came from testing them the way you would test code.&lt;/p&gt;

&lt;p&gt;I borrowed the "pressure test" idea from the TDD-for-skills crowd: put an agent in a realistic high-pressure scenario (a founder walks on stage in 4 minutes, wrote the draft themselves, loves it as-is, wants it published NOW), hand it a draft stuffed with AI tells, and see whether the skill still does its job.&lt;/p&gt;

&lt;p&gt;Three findings worth stealing if you write agent skills:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Ambiguous judgment caveats leak. Enumerated rules hold.&lt;/strong&gt; My humanizer skill had a well-intentioned rule: "Preserve the user's voice." Under pressure, 1 run in 4 read that as "do not touch their draft" and published the AI-slop verbatim. The audit skill next door, which uses a blunt enumerated list of auto-fail blockers, held 100% of the time under the same pressure. The fix was a precedence rule: scrubbing is always in scope; "preserve voice" means quirks and claims, not corporate-speak. Re-test: 0 skips in every run since.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. A missing enumeration is a guaranteed miss.&lt;/strong&gt; When I ran the same regression across sibling bundles, one platform's humanizer kept letting "What do you think? Drop your thoughts below." through. Not because the agent caved to pressure. Because that bundle's scrub rules simply had no dead-closer section. Agents follow enumerated rules with impressive fidelity, which cuts both ways: whatever you forgot to enumerate does not exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Some popular advice does not replicate.&lt;/strong&gt; The skill-writing community has a finding that prohibition lists ("never do X") backfire under competing incentives. I A/B tested it: same skill, one variant with the prohibition list, one rewritten as a positive recipe, both against a stakeholder actively demanding the banned patterns. Result: dead even, zero banned emissions in both. On a strong model, concrete checkable prohibitions work fine. What actually leaks is vague judgment language. Test on your own stack before refactoring everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  The family
&lt;/h2&gt;

&lt;p&gt;The same architecture now exists for other platforms: &lt;a href="https://github.com/sergebulaev/x-skills" rel="noopener noreferrer"&gt;X&lt;/a&gt;, &lt;a href="https://github.com/sergebulaev/instagram-skills" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;, &lt;a href="https://github.com/sergebulaev/youtube-skills" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;, &lt;a href="https://github.com/sergebulaev/threads-skills" rel="noopener noreferrer"&gt;Threads&lt;/a&gt;, &lt;a href="https://github.com/sergebulaev/tiktok-skills" rel="noopener noreferrer"&gt;TikTok&lt;/a&gt;, and &lt;a href="https://github.com/sergebulaev/facebook-skills" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;. Each is platform-native (the TikTok humanizer checks whether a line survives being said out loud in one breath; the X one counts emoji as two characters against the 280 limit).&lt;/p&gt;

&lt;p&gt;Everything is MIT. If you find a hook pattern the corpus missed, or a pressure scenario that breaks a skill, issues and PRs are open.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>marketing</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
