1
0 Comments

This Developer Shipped Four Claude Code Tools with Zero Tests.Then He Fixed That

Then He Fixed That.

Nikhil Jathar (co-founder and CTO of AvanSaber Inc. https://www.avansaber.com has been building open source software with Claude Code – Anthropic’s CLI coding assistant – since it launched. His projects include ERPClaw, a complete AI-native ERP system for the OpenClaw platform covering accounting, invoicing, payroll, and financial reporting; a PHP Reddit API client that the PHP developer community adopted; and SiteKit, a site builder. These are real tools with real users.

Not a single one had tests. That was fine until it was not.

The Portfolio

Jathar built three projects using Claude Code before creating tailtest:

• avansaber-php-reddit-api: A typed, PSR-18/7/3 compliant PHP Reddit API client with a Laravel bridge that is framework-agnostic. The PHP community picked it up, and real people are using it in production.
• SiteKit: A site builder tool built using Claude Code.
• ERPClaw: An AI-native ERP system for the OpenClaw platform featuring accounting, invoicing, inventory, payroll, tax, and financial reporting. It contains 413 actions across 14 domains, utilizing double-entry bookkeeping, compound tax calculations, and payroll with US federal and state brackets.

For financial software, correctness is not optional. Yet across all three projects, Claude Code wrote the code, Jathar reviewed it, it worked, and it shipped with zero test coverage.

The Problem With Having Real Users

When developing solo, having no tests is a personal risk. The developer finds a bug, traces it, and fixes it. However, when real users depend on a system like ERPClaw for accounting and payroll, missing tests becomes a different category of problem. Every Claude Code session that touches accounting logic opens a window where a silent regression can enter the codebase undetected.

During ERPClaw development, Claude Code refactored the journal entry creation logic for the invoicing workflow, and the refactor made sense. The code ran, invoices generated, and totals displayed correctly, so Jathar moved on. Two sessions later, he was reviewing a financial report and realized the general ledger was off. Debits and credits were not balancing on multi-line invoices with compound tax rates, but nothing had crashed or announced itself. The numbers were just quietly wrong.

It took 45 minutes of manual tracing to find one logic error in the compound tax distribution calculation. A single unit test would have caught it in three seconds.

“ERPClaw has 413 actions,” Jathar says. “That is 413 surfaces that can break silently. I was spending more time manually verifying Claude’s output than Claude was spending writing it. That ratio does not scale.”

What He Tried First

CLAUDE.md instructions: Jathar tried adding “write tests after every file edit” to the project config. Claude Code follows it sometimes, but in focused multi-file build sessions, test generation falls off because it is advisory, not enforced.
• Asking in every session: This works when the developer remembers, but long sessions move fast. Even when asked, Claude Code sometimes writes the feature and moves on.

Both approaches require the developer to be the enforcement mechanism, which is the core problem. At AI development speed, that enforcement fails consistently.

What He Built

Jathar built tailtest (https://www.tailtest.com) – a plugin for Claude Code that uses Claude Code’s PostToolUse hook (part of its built-in plugin system) to automatically generate and run tests after every file write.

When Claude Code writes a file, tailtest fires, runs an intelligence filter to skip config files and boilerplate, generates test scenarios for the code that was just written, and runs them immediately. There are two outcomes: passing means nothing happens and the session continues. Failing means specific output appears immediately, while the developer still knows exactly what changed.

One important clarification: while tailtest generates tests, developers are still responsible for reviewing whether the generated scenarios match the actual intent of the code. For straightforward logic—like utility functions, data transformations, and validation rules—the generated tests are accurate and useful immediately. For complex business logic with domain-specific constraints, the generated test is a starting point that may need a human look before it is trusted.

The silence-on-pass design is deliberate. Developers know the problem as alert fatigue; tools that report on every event train users to ignore them. If tailtest notified on every passing run, it would become background noise within days and developers would stop reading it. The tool only speaks when something is actually wrong.

The Numbers

• 332+ tests currently exist in tailtest’s own suite.
• Most of those tests were generated by tailtest itself during development.
• At one point, tailtest caught a bug in its own filter logic before Jathar even noticed anything was wrong.
• 8 languages supported: Python (pytest), TypeScript/JavaScript (vitest, jest), Go, Rust, Ruby, Java, and PHP.
• Token cost: Roughly $5 or under per typical session in additional LLM costs, on top of regular Claude Code usage for development.

“For production software with real users, $5 a session is a rounding error on the cost of a 45-minute manual debug,” Jathar says. “For a hobby project you are not maintaining seriously, it is a genuine tradeoff. I am not going to pretend otherwise.”

What Changed

Jathar now runs tailtest on all ERPClaw (https://www.erpclaw.ai) sessions. He is currently backfilling coverage on older ERPClaw code using the ramp-up scan feature, which queues existing untested files for gradual background coverage upon first install.

“Pushing to production when you have a passing test run feels different from pushing and hoping,” he says. “The first time tailtest caught a regression I had not noticed, I understood why that difference matters.”

What Is Next

• Coverage trend tracking across sessions.
• Team project support.
• Cursor and Codex support (currently Claude Code only).
• Better test quality for complex multi-entity business logic.

Install (Bash)

claude plugin marketplace add avansaber/tailtest

claude plugin install tailtest@avansaber-tailtest

The installation commands for tailtest.

• Source: github.com/avansaber/tailtest
• Website: tailtest.com
• Open source, Apache licence, free.

on April 17, 2026
Trending on Indie Hackers
How to rank #1 on ChatGPT? User Avatar 111 comments I Tested Agenmatic for Finding Customers in Communities — Here’s What I Learned User Avatar 63 comments I built a startup-idea scanner. It just told me none of my 3,400 ideas are easy wins. User Avatar 51 comments A chat assistant that runs your server so you don't have to live in the terminal User Avatar 43 comments Building a Shopify bundles app for stores with real fulfillment: here's the wedge User Avatar 42 comments “I’ll just post on Upwork” is not a client strategy. Here’s what I built instead. User Avatar 31 comments