knack ← all posts

· indie-hacker-launch · build-in-public · shipping · validation · claude-code

Why I parked the tester programme and shipped Pack #2 four days early

Why I shipped Pack #2 of the Knack catalogue without beta testers, four days ahead of plan: worked examples did the validation work, and Pack #3 is the test.

Shipping a product without beta testers is the kind of decision that looks reckless until you’ve shipped a few. The reflex is to recruit five testers, watch them install, wait a week, soft-launch, public-launch. On day three of building Pack #2 of the Knack catalogue, I deleted the step and shipped four days ahead of plan.

This post is the decision and the trade-off, named explicitly. What the tester loop was meant to catch, what the worked examples already caught, why I shipped without buyer signal, and the rule that decides whether the pattern stays for Pack #3. Solo founders shipping their second-to-fifth product on Claude Code: this is for you.

Why the tester loop stops earning its keep for the second product

Solo founders shipping their second-to-fifth product have a different relationship with the launch playbook than first-time founders. They’ve done it before. They know what a Product Hunt page needs, what a build-in-public cadence looks like, how to wire SEO foundations into a new domain. The friction is not figuring out the playbook. It is running the playbook for the product they care about while also building the next product on the side.

The standard de-risking loop is a meaningful tax. Recruit five testers (a day to find them, a day to onboard them). Wait for feedback (three days minimum). Cut a soft-launch build (one day). Public-launch (one day). That is roughly a week of calendar time and most of it is waiting on people. For a first product the waiting is doing the work: you learn whether your install runs on someone else’s machine, whether the value proposition reads, whether the price feels right.

For a second or third product on the same platform, in the same catalogue, with install scripts that already work, the loop catches fewer things. The honest question is which things it still catches that nothing else does. If you can answer that without hand-waving, you can decide whether to run the loop or skip it.

What I shipped instead

Pack #2 of the Knack catalogue is Indie Hacker Launch. Four skills, five worked examples, £99 once. It is for solo founders prepping their second-to-fifth product launch on Claude Code, the same audience this post is for.

The four skills, in order of when you’d use them in a launch week:

  • product-hunt-prep (listing copy, hunter outreach DM, gallery shot list, launch-day comment plan)
  • build-in-public-cadence (weekly X, LinkedIn, IndieHackers posts; optional blog stub; optional monthly recap)
  • seo-foundation-installer (sitemap, robots.txt, JSON-LD, Open Graph meta, Search Console and Bing walkthroughs)
  • launch-checklist-runner (T-7+ readiness audit or T-1 hour-by-hour playbook, auto-routed)

The five worked examples are the part that matters for the decision in this post. Each one runs a skill against a real launch scenario and prints the full output. Not a summary. Not a “here is the kind of thing it produces” gesture. The actual file the skill generates, end to end. A reader can scroll the pack landing page, read three worked examples, and know whether the deliverable matches the launch they need.

That is the validation signal that buyer surveys and tester batches are usually trying to get at. Buyers do not buy the skill; they buy the output the skill produces. Show the output.

The number: five days, no beta testers

The number is the ship velocity. Five days from kickoff to public ship. Nine days was the plan. Four days ahead.

This is not a vanity metric. There is no buyer-side number to report yet. Pack #2 went live on 13.05.2026, the same week this post was written. Catalogue traffic from the ship has not had time to convert. The honest reading of the four-day delta is that the build cost me less than I’d budgeted, because I deleted one of the budgeted activities.

The activity I deleted was the tester programme. The original sprint plan had the standard de-risking loop: build skills on days one to three, recruit testers on day four, gather feedback by day seven, soft-launch day eight, public-launch day nine. On day three I asked: what is the tester loop actually catching?

The two things a tester loop catches for a paid product are usually “did the install work on my machine” and “is the output worth the price”. The first is a function test: install scripts either run cleanly in a fresh environment or they do not. I had already tested that with CLAUDE_CONFIG_DIR pointed at a throwaway directory; the loop runs in twenty seconds and catches the same failure modes a tester would catch on day one. The second is buyer-signal, which is what the next six weeks of catalogue sales will tell me, faster than a five-person tester batch and with the buyers actually paying.

So the loop was set to catch one thing I could automate and one thing the testers could not actually give me. Park it.

Where this breaks

This pattern does not transfer cleanly. It worked for Pack #2 because Pack #1 had already shipped, the install scripts were proven, the brand voice was settled, the pricing was set, and the catalogue’s discovery surfaces (landing page, blog cluster, free starter pack) were live. Nothing in Pack #2’s build was new infrastructure. It was content authoring on a known scaffold. The Claude Code stack the catalogue runs on was already paid for.

For a first product, skipping the tester loop is reckless. The tester loop catches install failures on machines that are not yours, value-proposition confusion, price-anchoring errors, and copy that you have read too many times to see. None of those have a worked-example substitute.

For a second product in a catalogue, the loop only meaningfully catches install failures and value-prop confusion. Install failures are automatable. Value-prop confusion is what the worked examples are meant to handle: if the example output looks like what the buyer wants, the value prop is clear; if it doesn’t, no amount of tester feedback will fix the wrong product.

For a third product where you suspect the audience is different from the first two, the tester loop is back on the table. Audience-drift is the failure mode worked examples cannot catch. A worked example resonates with the founder who imagined the buyer, not necessarily with the buyer the product actually has.

The rule for Pack #3

Pack #3 is already in the queue. The decision rule from Pack #2 is conditional and named, so the result is unambiguous either way.

If Pack #2 has any non-self purchases by the end of June, the worked-examples-only pattern stays. Pack #3 gets the same treatment. The bet pays.

If Pack #2 doesn’t sell by then, the tester programme goes back in for Pack #3, on the assumption that worked examples weren’t sufficient buyer signal and the loop was catching value-prop confusion I couldn’t see from inside the build.

This post will get a follow-up in late June with the actual answer. I will name the number either way.

In the meantime, the four-day delta is the four-day delta. It bought time to write this post, to record the catalogue cover asset that’s still on the to-do list, and to start the brief for Pack #3. Cutting a step is cheaper than running it slowly, but only when you can name what the step was meant to catch and what catches it now.

What this looks like with Indie Hacker Launch

Indie Hacker Launch is the launch-week system for solo founders shipping their second-to-fifth product on Claude Code. Four skills that run the launch playbook end to end: Product Hunt listing and hunter outreach, weekly build-in-public posts across three channels, SEO foundations from sitemap to JSON-LD, and an auto-routed launch checklist (audit at T-7 or more, hour-by-hour playbook at T-1). Read the five worked examples on the pack page; if the output looks like the launch you need, that is the validation signal this post argues for.

Get the Indie Hacker Launch pack →