← All notes

README for people, AGENTS.md for agents

Why every repository of mine has four documents, and why a person and an executor must never get the same text.

· 2 min read

Maxim reads a warm document with paragraphs; the holographic cat holds a strict one with checklists; a box with four sheets between them

Every repository of mine — from a Go library to a wrapper around someone else’s image — has four files: README.md, CONTRIBUTING.md, CHANGELOG.md and AGENTS.md. All four are required, with no exceptions by repository type.

There is one main rule: README, CONTRIBUTING and CHANGELOG are written by a person for a person. AGENTS.md is written by an agent for an agent. They don’t mix in either direction.

Why one text won’t do

A document addressed to both readers serves neither. The person is put off by machine density: lists of commands, invariants, prohibitions with no explanation. The executor is put off by everything else: introductions, reasons, invitations to “read this to get the idea”. In the end each reads half and misses what matters.

Hence a few consequences you can check at a glance:

  • the human files never mention “agents” or “AI” — they are written as if agents didn’t exist;
  • the human files don’t link to AGENTS.md: for their reader it isn’t there;
  • AGENTS.md doesn’t say hello or explain “why this matters to people”; it lists facts, commands and prohibitions;
  • AGENTS.md is self-contained and repeats the facts it needs. This is the only duplication allowed, and it is deliberate.

Four files, four questions

filereaderquestion
READMEsomeone opening the repository for the first timewhat is this and how do I use it
CONTRIBUTINGsomeone about to change somethinghow to change it and what gets checked
CHANGELOGsomeone updating the version on their sidewhat changed and what will break
AGENTS.mdan executor starting workwhat lives where, what must stay true, what is forbidden

“But there’s nothing to write here”

The most common objections, and why I disagree with them:

  • “It’s a one-person repository, there’s no one to agree with.” You are agreeing with yourself a year from now. CONTRIBUTING is the only place that records why things are done this way and not another.
  • “The executor will figure it out from the code.” It will figure it out and do it its own way: the code shows neither the prohibitions, nor what is generated, nor which check has to stay green.
  • “It’s three lines, what code style?” Three lines follow rules too: one source of truth, generated files are not edited by hand, the build runs in the pipeline.

A missing file of the four is as much a defect to me as a red build. It sounds strict, but in practice it saves time: neither people nor agents have to guess anymore.