Project README
The README is the front door to a project and usually the most-read doc you'll
write. Within the first screen a reader should learn what this is, why it
exists, and how to use it. Write for a newcomer who arrived with zero
context; optimise for being skimmable in ~30 seconds.
When to use it
For any repo, package, or service that another human (including future you) will
open. Keep the README focused on orientation and getting started — push deep
material elsewhere (see Scope & Diátaxis below).
Canonical structure
Based on the Standard Readme spec. Sections must appear in this order; omit
optional ones, but don't reorder. Required sections are marked.
- Title (required) — the project name as an H1.
- Badges (optional) — build, version, license status.
- Short description (required) — one paragraph: what it is and what it's
for, immediately under the title.
- Long description (optional) — more detail if the short one isn't enough.
- Table of contents (required unless short) — links to the level-2 headings.
- Security (optional) — security-sensitive setup, if relevant.
- Background (optional) — context and motivation: the problem it solves,
why it exists, prior art.
- Install (required) — exact, runnable steps to install it. Should work
verbatim.
- Usage (required) — the smallest runnable example, then common usage.
Show, don't just tell.
- API (optional) — interface reference, or a link to it.
- Maintainers (optional) — who owns it.
- Contributing (required) — how to contribute / where the guide lives.
- License (required) — the exact license.
Scope & Diátaxis
Keep the README to orientation + getting started. When a project needs deeper
docs, don't bloat the README — split content by reader need using the
Diátaxis model and link out to it:
- Tutorial — learning-oriented, hand-holding first project.
- How-to guide — task-oriented recipe for one goal.
- Reference — dry, accurate technical description (API, config).
- Explanation — the why: design, background, trade-offs.
These serve different needs and shouldn't be mixed into one page (or crammed into
the README). The README links to them; it isn't all of them.
Quality rubric
A strong README:
- Answers "what / why / how" on the first screen — no scrolling to learn what
the project is.
- Has a runnable Install and Usage — copy-pasteable steps and a minimal
working example, not just description.
- States honest scope — what it does and what it deliberately doesn't.
- Is skimmable — clear headings, short paragraphs, a TOC when long.
- Is current — install/usage match the actual code; no dead links.
Common pitfalls
- A title and a wall of prose with no quick "what is this?".
- Install/usage steps that don't actually run, or assume hidden setup.
- Everything dumped into the README instead of linked reference/how-tos.
- Missing license or contributing guidance.
Naming & storage
README.md at the repo root (or the relevant package/subdirectory root).
- Supporting docs under
docs/ (organised per Diátaxis when they grow).
Template
Copy templates/readme.md and fill it in.
Sources
1---2name: readme3description: Write or improve a project README. Use when the user wants to create, rewrite, or review a README — the front-door doc explaining what a project is, why it exists, and how to install and use it. Follows the Standard Readme spec.4---56# Project README78The README is the front door to a project and usually the most-read doc you'll9write. Within the first screen a reader should learn **what this is**, **why it10exists**, and **how to use it**. Write for a newcomer who arrived with zero11context; optimise for being skimmable in ~30 seconds.1213## When to use it1415For any repo, package, or service that another human (including future you) will16open. Keep the README focused on orientation and getting started — push deep17material elsewhere (see *Scope & Diátaxis* below).1819## Canonical structure2021Based on the Standard Readme spec. Sections **must appear in this order**; omit22optional ones, but don't reorder. Required sections are marked.23241. **Title** *(required)* — the project name as an H1.252. **Badges** *(optional)* — build, version, license status.263. **Short description** *(required)* — one paragraph: what it is and what it's27 for, immediately under the title.284. **Long description** *(optional)* — more detail if the short one isn't enough.295. **Table of contents** *(required unless short)* — links to the level-2 headings.306. **Security** *(optional)* — security-sensitive setup, if relevant.317. **Background** *(optional)* — context and motivation: the problem it solves,32 why it exists, prior art.338. **Install** *(required)* — exact, runnable steps to install it. Should work34 verbatim.359. **Usage** *(required)* — the smallest runnable example, then common usage.36 Show, don't just tell.3710. **API** *(optional)* — interface reference, or a link to it.3811. **Maintainers** *(optional)* — who owns it.3912. **Contributing** *(required)* — how to contribute / where the guide lives.4013. **License** *(required)* — the exact license.4142## Scope & Diátaxis4344Keep the README to orientation + getting started. When a project needs deeper45docs, **don't bloat the README** — split content by reader need using the46[Diátaxis](https://diataxis.fr) model and link out to it:4748- **Tutorial** — learning-oriented, hand-holding first project.49- **How-to guide** — task-oriented recipe for one goal.50- **Reference** — dry, accurate technical description (API, config).51- **Explanation** — the *why*: design, background, trade-offs.5253These serve different needs and shouldn't be mixed into one page (or crammed into54the README). The README links to them; it isn't all of them.5556## Quality rubric5758A strong README:5960- **Answers "what / why / how" on the first screen** — no scrolling to learn what61 the project is.62- **Has a runnable Install and Usage** — copy-pasteable steps and a minimal63 working example, not just description.64- **States honest scope** — what it does and what it deliberately doesn't.65- **Is skimmable** — clear headings, short paragraphs, a TOC when long.66- **Is current** — install/usage match the actual code; no dead links.6768## Common pitfalls6970- A title and a wall of prose with no quick "what is this?".71- Install/usage steps that don't actually run, or assume hidden setup.72- Everything dumped into the README instead of linked reference/how-tos.73- Missing license or contributing guidance.7475## Naming & storage7677- `README.md` at the repo root (or the relevant package/subdirectory root).78- Supporting docs under `docs/` (organised per Diátaxis when they grow).7980## Template8182Copy `templates/readme.md` and fill it in.8384## Sources8586- Standard Readme spec — https://github.com/RichardLitt/standard-readme/blob/main/spec.md87- Make a README — https://www.makeareadme.com/88- Diátaxis (documentation framework) — https://diataxis.fr/