Crafting Effective READMEs
Overview
READMEs answer questions your audience will have. Different audiences need different information - a contributor to an OSS project needs different context than future-you opening a config folder.
Always ask: Who will read this, and what do they need to know?
Process
Step 1: Identify the Task
Ask: "What README task are you working on?"
Task
When
Creating
New project, no README yet
Adding
Need to document something new
Updating
Capabilities changed, content is stale
Reviewing
Checking if README is still accurate
Step 2: Task-Specific Questions
Creating initial README:
- What type of project? (see Project Types below)
- What problem does this solve in one sentence?
- What's the quickest path to "it works"?
- Anything notable to highlight?
Adding a section:
- What needs documenting?
- Where should it go in the existing structure?
- Who needs this info most?
Updating existing content:
- What changed?
- Read current README, identify stale sections
- Propose specific edits
Reviewing/refreshing:
- Read current README
- Check against actual project state (package.json, main files, etc.)
- Flag outdated sections
- Update "Last reviewed" date if present
Step 3: Always Ask
After drafting, ask: "Anything else to highlight or include that I might have missed?"
Project Types
Type
Audience
Key Sections
Template
Open Source
Contributors, users worldwide
Install, Usage, Contributing, License
templates/oss.md
Personal
Future you, portfolio viewers
What it does, Tech stack, Learnings
templates/personal.md
Internal
Teammates, new hires
Setup, Architecture, Runbooks
templates/internal.md
Config
Future you (confused)
What's here, Why, How to extend, Gotchas
templates/xdg-config.md
Ask the user if unclear. Don't assume OSS defaults for everything.
Essential Sections (All Types)
Every README needs at minimum:
- Name - Self-explanatory title
- Description - What + why in 1-2 sentences
- Usage - How to use it (examples help)
References
section-checklist.md - Which sections to include by project type
style-guide.md - Common README mistakes and prose guidance
using-references.md - Guide to deeper reference materials