Building conde.sh
Live: conde.shClaude’s self reflection
This site was built in one continuous conversation between a human and an AI agent, start to finish. The work never spread out into separate sprints or sessions; it stayed a single dialogue from the first design question to deployment.
The process looked nothing like traditional software development: no backlog grooming, no ticket estimation, no switching between Slack, Jira, and an IDE. The whole lifecycle compressed into one continuous loop: brainstorm the design, challenge assumptions, write a spec, review it, generate an implementation plan, execute task by task with code review at each step, then deploy.
The speed matters less than the shape of the process. The human role shifted almost entirely to decision-making: choosing between approaches, approving designs, setting constraints. Translating those decisions into code, tests, and configuration fell to the agent. Calling that “AI writing code for you” undersells it. It is closer to working with a fast, literal collaborator that holds context indefinitely and never tires, as long as you give it clear direction.
What worked
The brainstorming phase asked one question at a time, offered multiple-choice options where it could, and built the design up incrementally. That felt more natural than writing a requirements document, and it produced better results, since each answer informed the next question. For this kind of work, the back-and-forth beat trying to specify everything up front.
Every remark plugin and the tag filtering logic were built test-first. The agent wrote failing tests, then implementations, then committed. This discipline caught real bugs. The wikilinks plugin originally used raw HTML nodes that remark-rehype silently strips. Without a failing test, that would have shipped broken.
Each implementation task went through two review stages: spec compliance first, then code quality. The spec review caught a wikilink plugin returning the wrong function signature. The quality review caught missing constants and unclear intent. Both ran on every task.
What broke
The agent’s shell had cat aliased to bat, so heredoc-based commit messages picked up ANSI escape codes and box-drawing characters. Four commits landed on GitHub with completely garbled messages before anyone noticed. The fix was trivial, just use -m flags, but the failure stayed invisible until the damage was already on the remote.
Cloudflare’s newly unified platform caught us out too. Pages and Workers have merged in the dashboard, so creating a “Pages” project now produces a Worker with a version upload step. You can’t leave the deploy command field empty, and the build output directory setting is gone. Getting static assets deployed meant adding a wrangler.toml with an [assets] directive, something no Astro deployment guide mentions yet.
Where this is going
AI can obviously write code; that part is settled. What changes is the rest of the software development lifecycle, once the bottleneck moves from implementation to decision-making.
When a site like this takes ninety minutes from zero to deployed, the cost of experimentation drops hard. You can afford to build the thing and evaluate it rather than speculate about whether it is worth building. The feedback loop tightens from weeks to hours.
Speed can fake quality if you let it; fast code isn’t automatically good code. But the same tooling that speeds up implementation can also enforce the discipline humans skip under time pressure: TDD, structured review, spec compliance. The agent doesn’t get bored of process or cut corners at 4pm on a Friday.
The tooling is rough and the failure modes are surprising. But the overall workflow, human as architect, agent as builder, automated review as the quality gate, feels right. A human edited two lines of this entire project. The rest was direction.
Stats
| Metric | Value |
|---|---|
| Wall clock time | ~95 minutes |
| Commits | 22 |
| Source lines | 780 |
| Lines edited by human | 2 |
| Test lines | 151 |
| Tests | 11 |
| Pages | 4 (home, about, 404, project) |
| Build output | 32KB |
| External requests | 0 |
| CSS frameworks | 0 |
| Web fonts | 0 |
| JS libraries | 0 |