$npx -y skills add Varnan-Tech/opendirectory --skill show-hn-writerDraft a Show HN post backed by real HN performance data. Uses observed patterns from 250 top HN posts to maximise score.
| 1 | # Show HN Writer — Data-Backed Edition |
| 2 | |
| 3 | This skill drafts HN posts using patterns extracted from 250 real top-ranking posts. |
| 4 | Every rule below comes from observed data, not convention. |
| 5 | |
| 6 | --- |
| 7 | |
| 8 | ## What the data says (internalize this before writing anything) |
| 9 | |
| 10 | These are the findings from 250 top HN posts scraped April 18 2026. They override |
| 11 | any received wisdom about HN writing. |
| 12 | |
| 13 | **Title length is the single strongest predictor of score.** |
| 14 | - Under 40 chars: avg 248 pts (n=82) |
| 15 | - 40–59 chars: avg 192 pts (n=68) |
| 16 | - 60–79 chars: avg 150 pts (n=91) |
| 17 | - 80+ chars: avg 131 pts (n=9) |
| 18 | Default target: under 40 characters. Hard ceiling: 60. |
| 19 | |
| 20 | **Body text does not affect score.** |
| 21 | 90% of posts had no body. With-body avg: 189. Without-body avg: 193. Statistically |
| 22 | identical. A body is only worth writing if you have genuinely interesting technical |
| 23 | detail that won't fit in a title. Never write a body to pad credibility. |
| 24 | |
| 25 | **Show HN prefix suppresses score.** |
| 26 | Show HN posts averaged 94 pts vs 186+ for plain statements. The label signals |
| 27 | "I want feedback on my thing" which triggers a more skeptical read. Only use "Show HN:" |
| 28 | when the project is genuinely novel. Always offer a plain-title alternative. |
| 29 | |
| 30 | **First-person titles outperform anonymous statements.** |
| 31 | First-person ("I…", "My…", "We…"): avg 291 pts (n=9). |
| 32 | Plain statement: avg 186 pts (n=126). |
| 33 | If the builder's perspective is part of the story, lead with it. |
| 34 | |
| 35 | **Questions generate comments more than upvotes.** |
| 36 | Question titles avg ratio of comments-to-score above 1.0×. Best for discussions, |
| 37 | not for raw score. Ask the user which they're optimising for before writing. |
| 38 | |
| 39 | **Themes that consistently outperform:** |
| 40 | - Security / backdoor / breach stories: avg 308 pts |
| 41 | - Privacy / surveillance / data stories: avg 282 pts |
| 42 | - AI / LLM releases: avg 266 pts (42 posts — largest category) |
| 43 | - Open source releases: avg 485 pts (small n, but strong signal) |
| 44 | |
| 45 | **The highest-scoring titles share one trait: they are stories, not topics.** |
| 46 | "Someone bought 30 WordPress plugins and planted a backdoor in all of them" — 1192 pts. |
| 47 | "Google broke its promise to me – now ICE has my data" — 1688 pts. |
| 48 | A topic is "WordPress plugin security". A story has an actor, an action, and stakes. |
| 49 | |
| 50 | --- |
| 51 | |
| 52 | ## Step 1: Ask the user one question before anything else |
| 53 | |
| 54 | Before drafting, ask: |
| 55 | |
| 56 | "Two quick questions: |
| 57 | 1. Are you optimising for **score** (reach) or **comments** (discussion)? |
| 58 | 2. What does the project do — one sentence, technical, no adjectives?" |
| 59 | |
| 60 | Do not proceed until you have both answers. |
| 61 | |
| 62 | --- |
| 63 | |
| 64 | ## Step 2: Determine the right post type |
| 65 | |
| 66 | Based on the project and goal, decide which format to use: |
| 67 | |
| 68 | **Plain title (recommended default)** |
| 69 | No prefix. Just what it is or what happened. Highest avg score. |
| 70 | Use when: sharing a release, article, tool, or event. |
| 71 | |
| 72 | **Show HN: prefix (use sparingly)** |
| 73 | Use only when: the project is a working demo, the builder is present to answer |
| 74 | questions, and the technical implementation is the interesting part. |
| 75 | Avg score is low (94), but it signals authenticity when the project is genuinely novel. |
| 76 | Always also draft a plain-title alternative for comparison. |
| 77 | |
| 78 | **Ask HN: prefix** |
| 79 | Use when: the goal is discussion, not promotion. Avg engagement ratio > 1.0×. |
| 80 | Best for "who is using X?" or "should I do Y?" posts. |
| 81 | |
| 82 | **Tell HN: prefix** |
| 83 | Whistleblowing, accountability, or disclosure. One data point at 819 pts. |
| 84 | Only use if the post is factual, verifiable, and the builder is named. |
| 85 | |
| 86 | --- |
| 87 | |
| 88 | ## Step 3: Draft the title |
| 89 | |
| 90 | **The title is the entire post.** Treat the body as optional. |
| 91 | |
| 92 | Rules derived from data: |
| 93 | - Target under 40 characters. Every 20 chars over that costs roughly 30 avg points. |
| 94 | - Write a story, not a category. Actor + action + stakes beats noun phrases. |
| 95 | - First person ("I…") adds ~100 pts avg vs plain statement when builder perspective matters. |
| 96 | - No marketing adjectives. Not "fast", "simple", "powerful", "lightweight" unless |
| 97 | it is a literal spec (e.g. "35B-A3B" is a spec, "powerful" is not). |
| 98 | - Specificity beats generality. "30 WordPress plugins" beats "popular CMS plugins". |
| 99 | - Year in brackets signals classic worth reading: (2008), (1956). Use when linking |
| 100 | older content that has aged well. |
| 101 | - En dash (–) for subtitle format: "Product Name – what it does". Not a hyphen (-). |
| 102 | |
| 103 | Draft three variants: |
| 104 | 1. Shortest possible (aim for under 35 chars) — strip everything non-essential |
| 105 | 2. Story angle — actor + action + stakes |
| 106 | 3. Technical angle — lead with the interesting engineering decision |
| 107 | |
| 108 | Then apply the length test: count chars on each. Flag any over 60. |
| 109 | |
| 110 | --- |
| 111 | |
| 112 | ## Step 4: Decide whether to write a body |
| 113 | |
| 114 | Ask yourself: does the technical implementation have a detail that cannot fit in |
| 115 | the title and that HN en |