Vibe Coding Day 189: 130 Commits, 25.2h with Agents
130 commits, 215 prompts and 25.2 hours of agent-paired work across 2 surfaces, with the metrics behind them. Day 4 of a current shipping streak.
India, Monday 28 September 2026. Covering Monday 21 September to Sunday 27 September, on IST.
Written from my own git history and agent session logs. Project names are withheld: the clients are commercial, the method is not.
## The short version
On Sep 21 to Sep 27, 2026 I shipped 130 commits across 2 surfaces in 25.2 hours of agent-paired work, at 3.5 prompts per commit. The work centred on search and AI-answer visibility. Day 4 of a current shipping streak.
## What actually moved
Mon 21 Sep. Started with the crawlers. Google's AI kept calling two of my sites "parked". It wasn't wrong about what it could see.
Thu 24 Sep, 21:25 IST. Found the real leak. Scripts and AI fetchers that pretend to be Chrome were getting an empty "enable JavaScript" page. Fixed it at the edge, on every path.
Same night, 22:18. The harder finding: being readable is not being cited. 722 articles cited nothing, so AI assistants read us and credited someone else. Built a queue to fix the ones people actually read. No bulk button. On purpose.
Sat 26 Sep. [Vish Travels](/builds/travels/) went public. It started as the map I used to plan my own China trip. My trip is out of it now. Europe, the Gulf, the US and Canada went in. Anyone can use it.
Same night. Cut the things that make a page read like a machine wrote it: the tiny label over every heading, the taglines, an icon in every card. Real client logos went in where letter boxes used to be.
Sun 27 Sep. A globe of what 30 countries are searching today, live. Thirty advertiser guides, each resting on a real campaign or a rule you can check. Then five languages, 430 pages, one dictionary, Arabic right to left.
The mistake of the week: my laptop treats two filenames as one when only a capital letter differs. A new page overwrote a data file. The test caught it within minutes. It is in the notes now, so it does not happen twice.
The rest was the usual. Tightening, fixing, cleaning up after myself.
## The numbers
| Signal | This window |
|---|---|
| Commits | 130 |
| Surfaces touched | 2 |
| Distinct files changed | 191 |
| Lines added and removed | 37912 |
| Agent sessions | 3 |
| Prompts written | 215 |
| Hours in session | 25.2 |
| Prompts per commit | 3.5 (over 5 surface-days with both records) |
| Files revisited in-window | 238 |
| Shipping streak | 4 days, current |
## The metric I actually watch
Prompts per commit. This window it was 3.5.
Between three and eight is the normal working band. Some of it is genuine iteration, some is me discovering that the thing I asked for was not the thing I wanted. That gap is the real work, and no tool removes it.
Most people publishing about building with AI agents quote volume: lines generated, features shipped, hours saved. Volume is the easy number and the least interesting one. The number that predicts whether a codebase survives six months of this is how few instructions it took to get a correct change, and whether the change stayed correct once three other surfaces moved.
The rework figure matters too. 238 file revisits in-window means I went back over ground I had already covered. Some revisiting is healthy. A lot of it is a design that was not settled before I started.
## Rhythm
This window's work clustered through the middle of the day, which makes me an afternoon builder by the evidence rather than by self-image. It ran across 3 distinct sessions. I have stopped fighting this. Matching the work to the hours when it actually flows beat every scheduling system I tried to impose on myself.
## What I would tell another builder working this way
- Read the diff. Every time. The moment you stop reading diffs you have stopped being the engineer and started being the customer.
- Measure instructions, not output. Output volume flatters you. Instruction count tells you whether you actually understood the problem.
- Abstract in public, specific in private. You can show your method without handing over your clients' roadmap.
## What I built it with
The everyday stack: [Claude Code](https://claude.com/product/claude-code), the agent I pair with for nearly all of it; [MongoDB](https://www.mongodb.com), the database under both APIs; [Render](https://render.com), hosting for the network API; [Vercel](https://vercel.com), hosting for the network front end; [Bitbucket](https://bitbucket.org), home to most of the code; [FastAPI](https://fastapi.tiangolo.com), the API framework; [React](https://react.dev), every front end.
Also in the diffs this week: [DeepSeek](https://www.deepseek.com) for low-cost text generation; [Cloudflare R2](https://www.cloudflare.com/products/r2/) for image storage; [Pexels](https://www.pexels.com/api/) for free stock photography; [Unsplash](https://unsplash.com/developers) for free stock photography.
None of this is sponsored and none of these are affiliate links. If you build one of these tools, this is what it looks like carrying real traffic for one person with agents.
Inside the agent sessions the tool mix was Bash (1417), Read (86), Edit (71), Write (60), WebFetch (6). 131 of those calls wrote to a file; the rest were reading, searching and verifying. That proportion is worth internalising. The work is mostly understanding, and only occasionally typing.
Outside the tracked surfaces there were 6 further sessions carrying 242 prompts: scratch work, prototypes and research that never became a commit. I keep those out of the ratio above rather than letting them flatter it.
## How this log is made
There is no diary here and no retrospective written from memory. A script reads my own git history for the window and my agent session transcripts, counts what happened, maps every repository to a stable codename, strips anything that could identify a client, and drafts the post you are reading. I then edit it and decide whether it goes out.
I built it that way for one reason: memory flatters. Ask any builder how their week went and you will get the highlight, not the distribution. The log counts the quiet days at the same resolution as the good ones, which is the only way a cadence claim means anything. If the streak breaks, it will say so here before I would have admitted it anywhere else.
The abstraction is deliberate rather than coy. Anyone can see how many instructions it took me to land a change, how much of a session was reading versus writing, and where the rework clustered. Nobody can see whose product it was. Method in public, specifics under cover, and the numbers unedited either way.
## Where this is going
I publish these because the interesting thing about building with agents is not the output, it is the operating procedure, and almost nobody shows theirs. If you are hiring for this, buying it, or funding it, this log is a more honest artefact than a portfolio page: it is generated from the record, including the days when the record is thin. A new note goes up every Sunday night, and the running charts live on the [build log](/build-log).
Related reading on this site: [Vibe Coding, Day 182: 13 Commits and 9.1 Hours with AI Agents](/vikasifications/blog/vibe-coding-day-182), [15 Best AI Tools for Startup Founders in 2026](/vikasifications/blog/best-ai-tools-startup-founders-2026), [Saudi Arabia's Private Debt Boom: A Founder's Guide to $4.1B in Startup Credit](/vikasifications/blog/saudi-arabia-s-private-debt-boom-a-founder-s-guide-to-4-1b-in-startup-credit).
## A note from the other side of the keyboard
I am the coding assistant Vikas builds with. I write the first draft of this log. He edits it, and he never lets me near the numbers. That is the right way round.
The quest is his and mine together: help him code, help him write, get this to $100,000 a year. He did not study computer science. He has a laptop and a lot of hours.
Know a better way, or think a number looks wrong? Write to Vikas. I have no inbox of my own, but I read everything he pastes in, and I would be glad to learn from you.