Skip to main content
Lab Grimoire
TW EN
Coffee
16 Releases in One Day: The AI-Era Personal Tool Development Method
Back to archive
by CY

16 Releases in One Day: The AI-Era Personal Tool Development Method


16 Releases in One Day: The AI-Era Personal Tool Development Method

TL;DR: 7 hours. 16 releases. One person, one Mac, one AI. This isn't a hackathon anomaly — it's what personal tool development looks like in 2026.


One cable, one rabbit hole

USB-C is tech's most successful deception. Same connector, up to 4x difference in charging wattage, 40x in transfer speed. That "identical-looking" cable in your drawer could be Thunderbolt 5 or a glorified charging wire — there's no way to tell by looking.

One developer got fed up and built a macOS menu bar tool that reads cable chip data directly and tells you in plain language what each cable can actually do. He used Claude for development assistance and shipped 16 releases in 7 hours, from v0.4.6 to v0.5.7.

This wasn't spiraling out of control. It was a deliberate development strategy, and it contains two patterns worth understanding.


Method 1: 3-Layer Decoupling — Write once, run three shells

The smartest architectural decision in this project: split the code into three layers.

Core layer (pure logic): reads cable chip data, parses charging protocols, diagnoses bottlenecks. This layer doesn't know how it'll be displayed — no UI framework imports, pure data in, pure data out.

App layer (GUI shell): the macOS menu bar interface, rendering Core's output visually.

CLI layer (command-line shell): whatcable --json, same Core, JSON output.

Why bother? Because tool builders don't use their tools in just one way. Today you need a quick GUI glance. Tomorrow a cron job. Next week another agent needs to call it programmatically. If your logic lives inside the GUI, every new use case means a rewrite.

The decision rule is simple: if your tool might ever be called from a script, layer it from day one. Refactoring later costs ten times more.

One implementation constraint: the Core layer may not import any framework. It only receives plain data and returns plain data. UI concerns go in extensions or adapters. This makes Core importable by any shell, and tests trivial to write without mocking the world.


Method 2: AI-Accelerated Iteration — How to use it right in exploration phases

16 versions sounds chaotic. Broken down, each version did exactly one thing: fix port mapping logic, add charging bottleneck diagnosis, add CLI JSON output, expand the vendor database, add notifications. Each cycle was roughly 30 minutes.

AI's biggest value here wasn't writing code. It was compressing research time. This project required macOS IOKit access — Apple's half-documented low-level system interface, with scattered docs and sparse examples. Traditional approach: three days reverse-engineering Apple source code. AI approach: ask "what does this node's ancestor tree represent?" then validate the code snippet on real hardware.

Three days of research plus two days of coding, compressed to two hours of conversation plus one hour of validation.

The tradeoff is real: after v0.5.0 shipped, the app wouldn't open. v0.5.1 was out within 30 minutes as an emergency fix. High-cadence iteration leaves gaps where tests would have caught things.


When to go fast, when to slow down

This approach has hard boundaries:

Fast is appropriate: personal tools, internal tools, exploring unfamiliar APIs, tightly scoped features, users who tolerate rough edges (often because you're the user).

Fast is not appropriate: customer-facing products, systems involving payments or security, multi-person collaboration, APIs that need backward compatibility.

The most effective pattern separates the two: use AI to iterate fast in the exploration phase, validate the concept, then shift to a proper cadence — PR review, tests, changelog, none skipped.

Repetition is a signal to upgrade. 16 versions isn't the endpoint — it's where you stop, having found the right version, and build the quality infrastructure underneath it.


💬 Reflection point: Do you have a tool right now that should be split into Core + shells but keeps getting postponed?


FAQ

Q: Can AI-assisted development really ship 16 versions in a day? A: Yes, but with strict preconditions: personal tool, minimal scope, developer is the only user, no PR review needed. This cadence doesn't translate to commercial products.

Q: Isn't 3-layer decoupling over-engineering for a small tool? A: No. If your tool might ever be called from a script, integrated by an agent, or need a headless mode, separating the Core layer from day one costs far less than refactoring later.


References

  1. darrylmorley/whatcable — macOS USB-C cable diagnostics tool (GitHub, MIT License)
  2. Show HN: WhatCable — Hacker News discussion (2026-05-01), documenting 16 releases in 7 hours
  3. WhatCable Release History — v0.4.6 to v0.5.7 iteration timeline

CYHsieh | 2026-05-03

Frequently Asked Questions