| Viral tool | What actually worked | Applied here |
|---|---|---|
| htmx | Meme strategy + tribal identity ("you don't need React") | Contrarian position: "vibe-coding without product structure IS the new tech debt" |
| Bun | Benchmark numbers designed to be screenshot-worthy | Gate audit output as the "benchmark" — pass/fail is the number |
| shadcn/ui | One counterintuitive claim ("this is not a component library") | "This is not a project scaffolder" |
| Boris Cherny | Specific numbers + 100% claim + challenges identity | "3 products shipped, 0 spec docs written manually" |
| Railway | Named the void (Heroku death) | Name the void: "vibe-coding has a PMF-shaped hole" |
| Zed | Credibility transfer + waitlist scarcity | Research citations are credibility (CB Insights 43%) |
I've shipped 3 products this month.
I wrote zero product specs, test configs, or CI setups manually.
One command. 9 hard gates. A deployed URL at the end.
github.com/mturac/product-init
Why this works: Boris Cherny formula. "I did X without doing Y" + specific number + one-sentence mechanism + link. No thread. No explanation. The link does the work.
Vibe-coding without a product spec isn't moving fast.
It's building the wrong thing at the speed of AI.
43% of startups die from this. Not from bad code.
No link. No CTA. Pure position statement. Reply 48h later: "I built a system that makes it structurally impossible to start building before the product is validated. 9 hard gates. Thread →"
This month:
- 3 products shipped
- 9 gates passed per product
- 0 CRITICAL audit findings unresolved
- 1 session each
I didn't write a single test config or deploy script manually.
product-init — Claude Code skill
This is what /product-init looks like after Gate 5:
[GIF: terminal showing unit tests → integration tests → E2E, all green, gate unlocking]
Not "mostly passing."
Not "known flake, ignore."
Green.
Annotation on GIF: Each frame shows a different test suite finishing. Audio: keyboard clicks. 15 seconds max.
product-init is not a project scaffolder.
A scaffolder gives you files.
This gives you a reason to have files.
The spec comes before the code. Always.
v0 → UI components
Bolt → full-stack app
Lovable → polished UI
Cursor → AI code editor
product-init → the thing before all of those
Different category.
Title: Show HN: product-init – Claude Code skill that gates your build behind product validation
Body:
Hi HN,
I built product-init after watching too many well-engineered products die because
nobody validated the problem first. CB Insights puts "no market need" at 43% of
startup failures — not bad code, not running out of money. Wrong product.
product-init is a Claude Code skill (works on Codex CLI and OpenClaw too). When
you type /product-init "build an HR assessment tool", it runs 9 gates in sequence:
Gate 1: Discovery Constitution (JTBD + four-risk model — blocks Gate 2 until green)
Gate 2: Statement of Work (Shape Up appetite, Amazon PR-FAQ format)
Gate 3: Design (every screen must map to a job from Gate 1)
Gate 4: Build
Gate 5: QA (unit + integration + E2E — all three, all green)
Gate 6: UAT (real human signs off)
Gate 7: Deploy (HTTP 200 to prod URL, not "it should be fine")
Gate 8: Handoff (ADRs, runbook, rollback — a contract, not a README)
Gate 9: Warranty (72-hour monitoring window, error rate + latency + uptime)
CRITICAL findings block the next gate. There is no --skip flag.
I dogfooded it last week and shipped an AI-powered HR interview tool in one session.
Live at demorpoject.vercel.app. All 9 gates passed. Handoff package signed.
The audit scripts are plain Python. No magic. The methodology is public:
CB Insights, Christensen JTBD, Basecamp Shape Up, Amazon PR-FAQ, Cagan four-risk.
GitHub: github.com/mturac/product-init
Day-of rules: Post 9am ET Tuesday/Wednesday. Reply to every comment in first 2 hours. Have 3 prepared answers: "why not just use a checklist?", "what if the spec is wrong?", "does this work without Claude Pro?"
Recurring format to build tribal identity:
[image: developer confidently vibe-coding]
Caption: me shipping before Gate 1 is green
Ship fast → fail from PMF
(same thing)
"our AI wrote 50,000 lines in a week"
also us: [no users]
Gate 1 would have caught this.
Claude Code skill that asks "who is this for"
before it writes a single line: product-init
Claude Code skill that just builds whatever
you described: everything else
[0:00–0:03] Black screen, white text:
"I shipped 3 products this month. I didn't write a single spec document manually."
[0:03–0:08] Terminal appears. Cursor blinks.
Voice: "One command." Type:
/product-init "build an HR assessment tool"
[0:08–0:15] Three questions flash. Answers typed.
Voice: "Three questions. The AI drafts the rest."
[0:15–0:28] Fast-cut: each gate label flashes, audit script runs, green checkmark.
Voice: "Nine gates. Each one has a Python script. CRITICAL findings block the next gate." On screen:
Gate 5: unit ✓ integration ✓ E2E ✓
[0:28–0:40] Cut to live product. Interview room. Dashboard. Report.
Voice: "This is what came out. One session."
[0:40–0:50] Browser bar: demorpoject.vercel.app → 200 OK.
Voice: "Gate 7 checks the prod URL. Not 'it works locally.' Two hundred."
[0:50–0:58] Terminal again. Single line:
CRITICAL: 0 HIGH: 0 All gates: greenVoice: "43% of startups die from no PMF. This is the system I built to not be one of them."
[0:58–1:00] Text: product-init — github.com/mturac/product-init
home-desktop.png
"Hire on evidence, not on a feeling."
This app didn't exist 24 hours ago.
/product-init → 9 gates → prod URL.
The spec came before the first component.
screen-interview.png
LIVE. 15:34. AI interviewer running.
This screen exists because Gate 3 asked:
"what job is the hiring manager hiring this for?"
The dark cinematic UI isn't a design choice.
It's what happens when the design gate knows
who's in the room.
dashboard.png
Scores: 84. 91. Pending. Complete.
Not vibes. Not gut calls.
Four weighted dimensions, validated in UAT
before Gate 7 opened.
Built in one session with product-init.
report.png
Problem Solving: 91
Communication: 84
Technical: 88
Cultural Alignment: 82
Each dimension traced back to a job-to-be-done
captured in Gate 1.
This is what it looks like when the spec
comes before the code.
create.png
The form only has the fields that belong in the appetite.
Shape Up discipline: if it's not in the golden path,
it's not in the MVP.
Gate 2 blocked the rest.
| Day | Platform | Format | Content |
|---|---|---|---|
| Day 1 morning | Twitter/X | Single tweet | LAUNCH TWEET (numbers + link) |
| Day 1 evening | Twitter/X | Thread | 9-gate walkthrough with terminal screenshots |
| Day 2 morning | HN | Show HN | Full Show HN post |
| Day 2 | Twitter/X | Single tweet | THE CONTRARIAN (no link) |
| Day 3 | Long post | "We built a full HR tool in one session" story | |
| Day 4 | Twitter/X | GIF | Gate 5 test runner (output tweet) |
| Day 5 | Twitter/X | Single tweet | COMPETITOR COMPARISON |
| Day 7 | Twitter/X | Meme | First tribal identity meme |
| Day 8 | Twitter/X | Thread | "The research behind product-init" (CB Insights + JTBD + Shape Up) |
| Day 10 | Product Hunt | Launch | After HN traction validates the positioning |
| Day 14 | Twitter/X | Single tweet | THE COUNTERINTUITIVE CLAIM (shadcn play) |
Rule: never post two "features" in a row. Alternate: position → demo → story → meme → position.