Standard Readme Compliance Checklist
Source: Standard Readme by Richard Littauer (MIT licensed), full spec.
This is a structural compliance spec, not a quality rubric. It defines exact required sections, exact section order, and exact heading names. A README can satisfy every rule here and still be unhelpful, or fail several rules and still be genuinely good — this checklist only answers "does this follow the standard-readme format," not "is this a good README." Use scoring-rubric.md for quality; use this file only when the user asks specifically for standard-readme compliance (they say "standard-readme," ask for the compliance badge, or are publishing an npm library and want the ecosystem-standard format).
Required section order
Sections that are present must appear in this order. Optional ones may be skipped, but present sections must not be reordered:
- Title — no heading needed beyond
# Title - Banner (optional)
- Badges (optional)
- Short Description (required)
- Long Description (optional)
- Table of Contents (required if the README is 100+ lines; optional below that)
- Security (optional)
- Background (optional)
- Install (required, unless it's a documentation-only repo with no code)
- Usage (required, unless it's a documentation-only repo with no code)
- Extra Sections (optional — any number of freeform sections go here, after Usage and before API)
- API (optional)
- Maintainer(s) (optional)
- Thanks (optional)
- Contributing (required)
- License (required, and must be the last section)
Per-section rules
| Section | Rule |
|---|---|
| Title | Must match the repo, folder, and package-manager name. If it's a different, more readable title, put the actual name next to it in italics: # Standard Readme Style _(standard-readme)_. If names genuinely differ, explain why in Long Description. |
| Banner | No heading of its own. Must link to a locally-hosted image (not hotlinked). Must appear directly after the title. |
| Badges | No heading of its own. Newline-delimited. Prefer locally-hosted static badges over external services when avoiding tracking/requests matters. |
| Short Description | No heading of its own. Under 120 characters. Must not start with > . Must match the package.json description field and the GitHub repo description, if both exist. |
| Long Description | No heading of its own. If Title names diverge from repo/folder/package name, explain why here. |
| Table of Contents | Must link to every top-level (##) section. Starts with the section after the title/ToC itself — don't link to the Title or the ToC heading. |
| Install | Code block showing install. Add an ### Dependencies subsection if there are unusual manual dependencies. |
| Usage | Code block showing common usage. If it's a CLI, add a ### CLI subsection. If it's importable, show both the import and a usage call. |
| Extra Sections | No required heading — this is a catch-all label for "everything else," not a literal section name to use. |
| Maintainer(s) | Heading must be exactly Maintainer or Maintainers. List names with a contact method (GitHub handle or email). |
| Thanks | Heading must be exactly Thanks, Credits, or Acknowledgements. |
| Contributing | Must state where to ask questions, whether PRs are accepted, and any contribution requirements (e.g. commit sign-off). Link to CONTRIBUTING.md and a Code of Conduct if they exist. |
| License | Must state the license (SPDX identifier, or UNLICENSED, or SEE LICENSE IN <file>) and the license owner. Must be the last section in the file. |
Other rules (not about section order)
- Filename must be
READMEwith the correct extension for the format (README.md,README.org,README.html, ...). CapitalizeREADME. - For translated READMEs, use a BCP 47 language tag:
README.de.md. If there's only one README and it's not in English, plainREADME.mdis fine without a tag; once multiple languages exist,README.mdis reserved for English. - No broken links.
- Code examples should be linted the same way the rest of the codebase is linted.
- The compliance badge is optional, not a requirement for compliance itself:
[](https://github.com/RichardLitt/standard-readme)
Where this conflicts with the Mark Allen checklist
These two sources disagree on some things. When running standard-readme compliance mode, standard-readme's rules win for structure; don't silently blend the two.
- Order rigidity. Mark Allen has no opinion on strict section order beyond "description, then install, then usage, then dev setup." standard-readme mandates a full fixed order, ending in License. If both are in play, tell the user which one you're optimizing for.
- No dedicated Local Dev Setup section. Mark Allen treats "clone → install → run" for contributors as its own named section, distinct from end-user Install. standard-readme has no slot for this — it would have to live inside
Installitself or as anExtra Sectionsentry, which loses the install-vs-develop distinction. - No dedicated Publish/Deploy section. Same issue: standard-readme would fold this into
Extra SectionsorMaintainers-adjacent content, not treat it as a first-class section. - Short Description byte-matching. standard-readme requires the README's short description to literally match
package.jsonand GitHub's repo description. This is an npm/GitHub-specific constraint; it doesn't apply to non-npm ecosystems and Mark Allen's post has no equivalent rule. - Contributing and License are hard-required by standard-readme even for tiny personal projects; Mark Allen frames contribution guidance as more of a "signal you're open to help," optional in spirit for closed or non-collaborative projects.
Reporting format
Report compliance as pass/fail per rule, not a 0–5 score:
| Rule | Status | Note |
|---|---|---|
| Title matches repo/package name | ✅ Pass | — |
| Short Description < 120 chars | ❌ Fail | 143 chars, also doesn't match package.json |
| Table of Contents present (file is 140 lines) | ❌ Fail | Missing |
| Install section with code block | ✅ Pass | — |
| Usage section with code block | ✅ Pass | — |
| Contributing states PR/question policy | ⚠️ Partial | Says "PRs welcome," no mention of where to ask questions |
| License stated and last section | ❌ Fail | License section exists but Thanks section follows it |
Summarize with a compliant/non-compliant verdict and the specific rules to fix for full compliance.