agentleFS
MindrallyMindrally/skills/readme-best-practices/SKILL.md

readme-best-practices

Skill275 starsChanged 35 days agoApache-2.0View on GitHub

Structure, tone, and content conventions for writing effective project README files, covering hooks, quick starts, feature presentation, badges, and common documentation sections. Use when writing a new README, rewriting an existing one, or reviewing README quality for a repository, library, or CLI tool.

  • Installs packages

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. About 0 are common, 12 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Start with a bold one-liner saying what the project does and why someone should care — not "A tool that...", a punchline.

    line 25
  2. Distinctive:

    Put a working code example in the first 5 lines.

    line 26
  3. Distinctive:

    Never open with "In today's fast-paced world..." or similar throat-clearing.

    line 27
  4. Distinctive:

    Never close with "Happy coding!" or similar filler sign-offs.

    line 28
  5. Distinctive:

    Avoid AI-marketing words: "seamless", "robust", "comprehensive", "cutting-edge", "powerful", "effortless".

    line 29
  6. Very specific:

    Use feature tables (two columns: feature, description) instead of Feature: bullet lists — tables scan faster than repeated bold-prefix …

    line 50
  7. Distinctive:

    Must be copy-paste ready: zero to running in 30 seconds.

    line 62
  8. Very specific:

    Do not prefix shell commands with $ — it breaks copy-paste.

    line 63
  9. Distinctive:

    Use headings to let readers jump straight to the section they need.

    line 82
  10. Distinctive:

    Prefer runnable examples over prose descriptions of behavior wherever both are possible.

    line 83
  11. Very specific:

    Keep line-level formatting consistent: one fenced code block per language/command, explicit language tags ( bash , json ) for syntax …

    line 84
  12. Distinctive:

    Use badges for objective, machine-checkable facts: CI status, published version, license, downloads, coverage.

    line 88
  13. Distinctive:

    Keep the badge row short — 3-6 badges.

    line 89
  14. Very specific:

    Check that referenced assets (demo.gif, screenshots) actually exist on disk before adding image links — a broken image in the first screen …

    line 94
  15. Distinctive:

    Verify internal anchor links (table of contents, "see Configuration below") resolve to real headings.

    line 95
  16. Distinctive:

    Prefer relative paths for repo-local assets so they render correctly on the git host and in package registries alike.

    line 96

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

README Best Practices

This skill covers how to write a README that reads like a landing page rather than an API reference — the reader decides whether to keep reading within 3-5 seconds, so the first screen has to earn the rest.

Workflow for Writing a README

  1. Draft the one-liner — Write a bold, specific sentence stating what the project does and why someone should care. Avoid "A tool that..."; aim for a punchline.
  2. Write a working code example first — Put a copy-pasteable example in the first 5-10 lines of content, before installation instructions. Show the value proposition immediately.
  3. Add badges — Build status, version, license, and coverage badges directly under the title, if the project has CI/publishing set up.
  4. Write Quick Start — Zero-to-running in under 30 seconds, with no placeholder values the reader has to mentally substitute.
  5. Fill in supporting sections — Features, Usage, Configuration, Contributing, License — using the structure below, only including sections that carry real information.
  6. Verify every asset and link — Confirm referenced images (screenshots, demo.gif) exist on disk and that internal links resolve before publishing.
  7. Read it cold — Reread the first screen as if seeing the project for the first time; cut anything that doesn't help a decision to keep reading or stop.

Opening Hook

  • Start with a bold one-liner saying what the project does and why someone should care — not "A tool that...", a punchline.
  • Put a working code example in the first 5 lines. Show the value proposition immediately, before explaining installation.
  • Never open with "In today's fast-paced world..." or similar throat-clearing.
  • Never close with "Happy coding!" or similar filler sign-offs.
  • Avoid AI-marketing words: "seamless", "robust", "comprehensive", "cutting-edge", "powerful", "effortless". State what it does instead of how impressive it sounds.

Standard Structure

A typical README benefits from these sections, roughly in this order — include only the ones that add real information for this project:

  1. Title + one-liner — project name and the bold hook sentence.
  2. Badges — build status, latest version, license, test coverage.
  3. Quick demo — a code snippet, GIF, or screenshot showing the thing working.
  4. Features — a two-column table, not a wall of bullets (see below).
  5. Installation — the exact command(s) to install, per package manager if there's more than one.
  6. Quick Start / Usage — copy-paste-ready minimal example, then a couple of more advanced examples.
  7. Configuration — options, environment variables, config file format, with defaults noted.
  8. API Reference (or a link to one) — for libraries with a non-trivial public surface.
  9. FAQ / Troubleshooting — the 3-5 questions people actually ask in issues.
  10. Contributing — how to set up the dev environment, run tests, and submit a PR; link to CONTRIBUTING.md if it exists.
  11. License — name and link to the license file.
  12. Author / Acknowledgments — credit maintainers and major dependencies.

Feature Presentation

  • Use feature tables (two columns: feature, description) instead of **Feature:** bullet lists — tables scan faster than repeated bold-prefix bullets.
| Feature | Description |
|---|---|
| Zero-config | Works out of the box with sensible defaults |
| Streaming | Handles gigabyte-scale files without loading them into memory |
| Type-safe | Full TypeScript definitions, no `any` in the public API |

Quick Start Requirements

  • Must be copy-paste ready: zero to running in 30 seconds.
  • Do not prefix shell commands with $ — it breaks copy-paste.
  • Show the install command and the minimal usage example together, not split across distant sections.
npm install awesome-lib

awesome-lib run --input data.csv --output report.json
import { parse } from "awesome-lib";

const result = parse("data.csv");
console.log(result.summary);

Prose and Formatting

  • Vary sentence length and structure — mix one-liners with short paragraphs and tables. Walls of same-length bullets read as filler.
  • Use headings to let readers jump straight to the section they need; don't force a linear read.
  • Prefer runnable examples over prose descriptions of behavior wherever both are possible.
  • Keep line-level formatting consistent: one fenced code block per language/command, explicit language tags (```bash, ```json) for syntax highlighting.

Badges

  • Use badges for objective, machine-checkable facts: CI status, published version, license, downloads, coverage.
  • Keep the badge row short — 3-6 badges. A wall of badges is as noisy as a wall of bullets.
  • Common sources: shields.io for custom badges, the CI provider's own badge markdown, npm/PyPI's official badge snippets.

Assets and Links

  • Check that referenced assets (demo.gif, screenshots) actually exist on disk before adding image links — a broken image in the first screen kills credibility instantly.
  • Verify internal anchor links (table of contents, "see Configuration below") resolve to real headings.
  • Prefer relative paths for repo-local assets so they render correctly on the git host and in package registries alike.

Author / Contact Section

  • Include a visual card or badge for the author/maintainer rather than plain text like "Made by username" — a GitHub profile badge, a small avatar + link, or a sponsor button reads as more intentional.
  • For multi-maintainer projects, list maintainers with their role or area of ownership rather than a flat name list.

Common Mistakes to Avoid

  • Leading with installation instead of value — readers don't know why they should install it yet.
  • Documenting every configuration option in prose instead of a table.
  • Letting the README drift from the actual CLI/API surface — stale examples that no longer run are worse than no examples.
  • Mixing marketing language ("blazing fast", "enterprise-grade") with technical documentation — pick one register and stay technical.
  • Duplicating full API docs in the README when a generated reference (TypeDoc, Sphinx, godoc) already exists — link to it instead.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.