Approach
The effort does not disappear, it moves — from the code to the specification.
With agents, implementation becomes cheap. Specifying and checking remain work. That is why I work in fixed steps, each with an artefact and a check. The last column names the file with which the step was carried out for this website.
| # | Step | Artefact | Check | Agent | Human | On this site |
|---|---|---|---|---|---|---|
| 1 | Delimit the context | Context delimitation, context map | Responsibility of each context stated | proposes | decides | context_map.md |
| 2 | Fix the domain language | Binding glossary | Terms in code = terms in the glossary | applies | defines | ubiquitous_language.md, CLAUDE.md |
| 3 | Formalise the model | Grammar, metamodel | Parser accepts, cross-references valid | co-drafts | owns | profile.tx |
| 4 | Record decisions | Architecture decision record (ADR) | Context, decision, consequences, rejected alternatives | drafts | approves | ADR-013 |
| 5 | Generate | Generated code, generated pages | Generated output is never edited by hand | generator or agent | reviews | codegen.py, website.py |
| 6 | Verify and validate | Tests, static analysis, check report | All green; any finding aborts | drafts tests | adds edge cases, approves | website_checks.py, Check report |
| 7 | Document and iterate | arc42, commit history | Documentation matches the current state; AI share marked in the commit | drafts | approves | arc42 |
The steps
1. Delimit the context. Before an agent writes a line, it is clear what a subsystem is responsible for and what it is not. An agent works as well as its context is bounded.
2. Fix the domain language. The terms of the business domain are binding: in conversation, in code and in the instructions to the agent. Deviations are bugs, not matters of style.
3. Formalise the model. Whatever can be stated formally goes into a grammar. The parser checks what no review checks reliably: completeness and valid references.
4. Record decisions. Architecture decisions are kept as ADRs in the repository, together with the rejected alternatives. The agent inherits these decisions; it does not make them.
5. Generate. Whether a generator or an agent writes the code: corrections are made in the specification, not in the output. Otherwise the code knows something the specification does not.
6. Verify and validate. Every output has a check that a machine can evaluate. For this website, that includes: no name of a client or project may appear. The block list for this is derived from the profile model.
7. Document and iterate. Documentation is a working basis, not an afterthought. Commits with a substantial AI share are marked as such.
1999 and today
The first version of this domain had a page called “Arbeitsschritte zur Projektdurchführung” (steps for carrying out a project). The steps have stayed the same, the tools have not. The earlier version of vorgehen.de is kept in the archive (in German).
vorgehen.de