← All notes

Codex built, Claude reviewed. And I said no to yet another green

Sławek Łukjanow · · Not by Prompt Alone · episode 11 · Czytaj po polsku

"It's off-putting and looks like cheap junk". That's how Maciek summed up the story selection screen in our game. And he was right 😂

But let's start from the beginning. In 2016 the three of us - Magda, Maciek and I - made Agile ZOO, a game for Product Owners. It was built for internal training at GetResponse (more about it here, in Polish), and later Maciek and I showed it at Agile by Example. A team runs a ZOO for three sprints. Each player looks after one area - the Africarium, the Aviary, the Oceanarium or the Insectarium - and each knows the problems of their own area. But there's one budget of points, shared by everyone. The elephant needs a vet, the flamingos need a new enclosure, the electricity bill hasn't been paid for three months... and you have to come to an agreement. After each sprint visitors come (or leave), and the newspaper writes about how it all turned out.

A while ago Maciek, with some help from AI, moved the game to a new Laravel, because the 2016 version needed a PHP I couldn't get running on my old server. In October Claude rewrote it from Laravel to a new stack, 1:1 with the original - we checked that against 504 reference games run through the old PHP code. On top of that came an animated 3D ZOO on the home page. The game worked just like in 2016. And it looked just the same.

A workshop version

In v1 only the trainer has a screen. They put it on the projector and click for all the teams. In v2 we wanted to offer a choice - from everything done by the trainer, to a remote game where every participant clicks on their own device. The facilitator sets up a session, participants join with their phones via a QR code, everyone gets their own area, the team plans the shared budget live, and the projector shows the clock and the results.

This time Codex (GPT Sol 6.1) was building. And I have to admit - it started like a proper team. Documents first: product, architecture, eleven work packages. After each package an acceptance report - what works, what wasn't checked, screenshots.

Functionally it was going well. Visually... it was better than v1. But not DRAMATICALLY better. And after Maciek's line about cheap junk I didn't want "a bit better".

One designs, the other builds

I asked Claude to design the look of v2 - with the /design command right inside Claude Code, not in the separate Claude Design. It does the job and I use it much more willingly 🙂 There was just one condition - "don't change the game's look yourself". Codex was in the middle of its work, in the same repository, and I didn't want two agents editing the same files.

Claude made ten screens: planning on a computer and on a phone, joining via QR, the facilitator's screen, the projector screen, results as the "ZOO Courier". Plus a package for Codex - colours as ready CSS variables, a spec for every component and renders of the islands from the same 3D scene that's on the home page. The budget bar, where every task is a coloured segment in its area's colour, was its idea.

The first version was green. Of course 🙂

I wrote: "sorry, but I'm not agreeing to yet another green... No dominant green!". The graphics of this series are green, half the apps I see are green. We went for a muted navy, greys, blue for "ready" and red for the main action. And then the font - "less popular, fitting the game". We ended up with Unbounded for headings and numbers, wide and rounded, a bit like from a board game.

These are decisions no agent will make for me. They can propose five variants. But I'm the one who knows I've had enough of green.

A release at one in the morning

Codex implemented the design and finished the rest of v2. The release went out at night, around 1:00, while I was sound asleep.

The first time, the API stopped responding. Restrictive permissions when installing the package - the service couldn't read its own files. The automatic rollback... didn't come up either, for the same reason. Codex fixed the permissions, the second attempt stopped on its own header check, the third went through. The old game kept running, not a single saved game was lost.

And here's a big plus - all of this is described in the release report. No sugar-coating, with a database backup before every attempt and a new gate in the script so it doesn't happen again. That's the kind of report I'd like to get from everyone, not just from an agent.

A small minus - four commits went straight to the main branch, without a pull request. The previous eight changes in this repo went through PRs. CI was green, only nobody except the author looked at the code before production. It shows how important it is to prepare a repo for working with agents, and this time I didn't give it enough attention.

Review, or the second agent checks the first

In the morning I asked Claude for a code review and a design review. Not just reading the code - playing a session. It spun up a separate server locally and played: four teams, fourteen players, a facilitator and a projector screen. At the same stage where Codex had finished its tests.

There were really a lot of tests - 797 on the backend, 65 on the frontend, 7 scenarios in two browsers. All green. And yet:

  1. A player's click could get lost. The whole room has one change counter. If anyone in the room clicked something in the last two seconds, your choice gets rejected with a conflict. With four people in a test that's rare. With sixteen planning at the same time - it's the norm. And the message said "The session changed in another tab" and on a phone it showed up off screen. All the player sees is that they clicked and nothing happened.
  2. Closing the tab = losing your seat. The player's identity lived only in the current browser tab. The phone kills the tab in the background and the facilitator has to assign someone all over again, in front of the whole room.
  3. The projector screen was a web page. With a header, a footer and a table that's hard to read from the back rows. Above the results the planning caption was still hanging around.
  4. On the phone, on the planning screen, there wasn't a single story. You had to scroll almost two screens. Exactly the screen Maciek called "cheap junk" 😮

None of these break the tests, because the tests checked what someone had foreseen. Only simulating the room showed how it behaves when people do things at the same time.

That doesn't mean Claude is "better" than Codex. Swap their roles and Codex would probably find something in Claude's work. Every model misses something, just each one misses something different. The one who builds tests what they designed themselves. The one who reviews comes in without that baggage. Exactly like in a team of humans.

Fixes and what's next

The review report was supposed to wait for Codex. In the end Claude made the fixes - the same day, and this time through a pull request. Clicks from several phones at once no longer get lost. Your seat in the team survives a closed tab, and the QR link offers "Back to the game". The projector screen has its own 16:9 layout, with a clock and results as visitor bars plus the ZOO Courier. On the phone the tasks are visible right away, on the first screen. The tests gained cases nobody had foreseen before - for example two phones of the same team clicking at the very same moment.

As you read this, the game is already live at agile-zoo.com and v2 opens by default. If something goes wrong at a workshop, you can go back to v1. Because green tests tell you the code does what it was supposed to do. They don't tell you whether the people at the table will have a good time 😉


What this means for your team: if an agent writes the code, have another one review it - a different model, or at least a fresh session without the author's context. And don't let it just read the code - have it run the product in conditions close to real ones, with many users at once. And the decisions no test can check - colour, tone, what to show on the first screen - stay with a human. That's exactly how we prepare projects for working with AI agents at ANSLAN.

Agile ZOO is free at agile-zoo.com (and in Polish at agilezoo.pl).