Since I read some articles from the Phoenix Architecture blog by Chad Fowler, I’ve been eager to try come implementation of this harness architecture as it seems to structure well what’s been going around in terms of automating the part that AI should handle versus humans in the new abstraction that LLM bring to the software engineering cycle. Naturally I started by working with Claude to ask it to read the whole blog and generate the corresponding tooling to run an agentic SDLC using these principles/architecture. Once the tool was generated with subcommands matching the various layers/steps of the workflow, I started a test project to test it.
The first part was using Claude to wrtire specifications for the first feature: username/password authentication. I picked a typical feature to see how things would go. The generate phx (phoenix) tool was built with to abstract which LLM tool is used and when I started to use it with Claude code (vs Claude API), it started bringing some permission issues.
One of the first issue to tackel after initial generation on this authentication cell, was the code layout. Without any constraint, Claude generated everything in one file: python, html, etc. So back to the drawing board on the phoenix tool, I figured out a way to provide conventions for the AI to use during generation, these conventions are shared by all cells and each cell generation records the hash of the convention it used so we have a way to check the convention used for a given cell generation.
Reference: The Phoenix Arhcitecture