# Specification A compliant README must satisfy all the requirements listed below. > Note: Standard Readme is designed for open source libraries. Although it's [historically](README.md#background) made for Node and npm projects, it also applies to libraries in other languages and package managers. **Requirements:** - Be called README (with capitalization) and have a specific extension depending on its format (`.md` for Markdown, `.org` for Org Mode Markup syntax, `.html` for HTML, ...) - If the project supports i18n, the file must be named accordingly: `README.de.md`, where `de` is the BCP 47 Language tag. For naming, prioritize non-regional subtags for languages. If there is only one README and the language is not English, then a different language in the text is permissible without needing to specify the BCP tag: e.g., `README.md` can be in German if there is no `README.md` in another language. Where there are multiple languages, `README.md` is reserved for English. - Be a valid file in the selected format (Markdown, Org Mode, HTML, ...). - Sections must appear in order given below. Optional sections may be omitted. - Sections must have the titles listed below, unless otherwise specified. If the README is in another language, the titles must be translated into that language. - Must not contain broken links. - If there are code examples, they should be linted in the same way as the code is linted in the rest of the project. ## Table of Contents _Note: This is only a navigation guide for the specification, and does not define or mandate terms for any specification-compliant documents._ - [Sections](#sections) - [Title](#title) - [Banner](#banner) - [Badges](#badges) - [Short Description](#short-description) - [Long Description](#long-description) - [Table of Contents](#table-of-contents-1) - [Security](#security) - [Background](#background) - [Install](#install) - [Usage](#usage) - [Extra Sections](#extra-sections) - [API](#api) - [Maintainers](#maintainers) - [Thanks](#thanks) - [Contributing](#contributing) - [License](#license) - [Definitions](#definitions) ## Sections ### Title **Status:** Required. **Requirements:** - Title must match repository, folder and package manager names - or it may have another, relevant title with the repository, folder, and package manager title next to it in italics and in parentheses. For instance: ```markdown # Standard Readme Style _(standard-readme)_ ``` If any of the folder, repository, or package manager names do not match, there must be a note in the [Long Description](#long-description) explaining why. **Suggestions:** - Should be self-evident. ### Banner **Status:** Optional. **Requirements:** - Must not have its own title. - Must link to local image in current repository. - Must appear directly after the title. ### Badges **Status:** Optional. **Requirements:** - Must not have its own title. - Must be newline delimited. **Suggestions:** - Use http://shields.io or a similar service to create and host the images. - For static badges, consider using a locally hosted image to avoid external requests, which can result in tracking, and to avoid unnecessary resource usage. - Add the [Standard Readme badge](https://github.com/RichardLitt/standard-readme#badge). ### Short Description **Status:** Required. **Requirements:** - Must not have its own title. - Must be less than 120 characters. - Must not start with `> ` - Must be on its own line. - Must match the description in the packager manager's `description` field. - Must match GitHub's description (if on GitHub). **Suggestions:** - Use [gh-description](https://github.com/RichardLitt/gh-description) to set and get GitHub description. - Use `npm show . description` to show the description from a local [npm](https://npmjs.com) package. ### Long Description **Status:** Optional. **Requirements:** - Must not have its own title. - If any of the folder, repository, or package manager names do not match, there must be a note here as to why. See [Title section](#title). **Suggestions:** - If too long, consider moving to the [Background](#background) section. - Cover the main reasons for building the repository. - "This should describe your module in broad terms, generally in just a few paragraphs; more detail of the module's routines or methods, lengthy code examples, or other in-depth material should be given in subsequent sections. Ideally, someone who's slightly familiar with your module should be able to refresh their memory without hitting "page down". As your reader continues through the document, they should receive a progressively greater amount of knowledge." ~ [Kirrily "Skud" Robert, perlmodstyle](http://perldoc.perl.org/perlmodstyle.html) ### Table of Contents **Status:** Required; optional for READMEs shorter than 100 lines. **Requirements:** - Must link to all sections in the file. - Must start with the next section; do not include the title or Table of Contents headings. - Must be at least one-depth: must capture all level two headings (e.g.: Markdown's `##` or Org Mode's `**` or HTML's `