$37
A GitHub README is the front door of a project. The best ones combine a clear value proposition above the fold, scannable structure, credibility signals (badges, contributors, stars), copy-pasteable install/usage, visuals (banner, demo GIF, screenshots), and — most overlooked of all — prose that sounds like a human wrote it.
That last point is non-negotiable. A visitor smells AI-generated marketing copy in seconds. Once they do, every other quality signal on the page loses its weight. See references/voice-and-prose.md for the full anti-AI-slop protocol; apply it to every draft before writing to disk.
This skill produces two kinds of READMEs:
| Kind | Lives at | Purpose |
|---|---|---|
| Project README | repo-root/README.md | Sells and explains a software project to potential users / contributors |
| Profile README | username/username/README.md (special repo) | Personal GitHub landing page — bio, skills, stats, socials |
Grammar differs per kind. See references/profile-readme.md for profile specifics.
Trigger on any of:
shields.io, contrib.rocks, github-readme-stats, typing SVG, snake animation, Best-README-Template, Standard-Readme1. DISCOVER — read the repo (package.json, pyproject.toml, Cargo.toml,
go.mod, src/, LICENSE, CI workflows, existing README)
2. CLASSIFY — library / CLI / web-app / desktop-app / research /
template / profile-readme
3. SELECT — pick sections from the catalog (see references/sections.md)
based on project type + what the repo actually has
4. DRAFT — write the README using templates (references/templates.md)
+ badge stack (references/badges.md)
5. HUMANIZE — mandatory audit pass against references/voice-and-prose.md:
strip promotional adjectives, significance inflation, em-dash
overuse, superficial -ing clauses, rule-of-three synonym
cycling, chatbot artifacts, generic uplift conclusions.
Use the two-prompt audit: "what makes this obviously AI
generated?" → rewrite.
6. POLISH — banner/logo placement, TOC, back-to-top anchors,
`<details>` collapses, anchor links
7. VERIFY — no broken links, all code blocks language-tagged, badges
resolve, placeholder tokens (owner/repo) all replaced
8. WRITE — output README.md. If one exists, diff + confirm before
overwriting; offer a `README.md.bak` save
Before writing, scan:
| What | How | Signals |
|---|---|---|
| Project name | repo folder name, name in manifest | title |
| Description | manifest description, top-of-src doc | tagline |
| Language(s) | file extensions, manifest | install syntax, code-block lang |
| Package manager | package.json, pyproject.toml, etc. | install command |
| Entry point | main, bin, src/index.* | usage example |
| Tests | tests/, __tests__/, *_test.* | testing section |
| CI | .github/workflows/*.yml | build badge |
| License | LICENSE* file | license badge + section |
| Docs site | docs/, mkdocs.yml, existing URL | "Docs" link |
| Screenshots | images/, assets/, docs/images/ | visuals section |
| Contributing | CONTRIBUTING.md, CODE_OF_CONDUCT.md | contrib section |
| Releases | CHANGELOG.md, GitHub releases | roadmap / release history |
Ask user for anything missing: owner/repo, live demo URL, logo path, social handles, preferred badge style (flat / flat-square / for-the-badge / plastic).
Full definitions → references/sections.md.
Above the fold (always)
Navigation
<details> if longProof
Onboarding
Community
Profile-README only (see references/profile-readme.md)
```bash
npm install
```
```python
from mypkg import thing
thing.run()
```
Never use bare . Syntax highlighting = instant credibility.
Users paste without thinking. So:
<your-token> inside the command — put it on a separate line with a comment$ prompt prefix — breaks pastesh / bash tag for shell5–8 badges max. Order: identity (version) → health (build, coverage) → reach (downloads, stars) → legal (license) → social (Twitter, Discord). See references/badges.md for copy-paste templates.
width attribute, descriptive altTools: VHS (terminal), ScreenToGif (Windows), Gifski (macOS), Peek (Linux), terminalizer. See references/visuals.md.
For READMEs > 300 lines, end each major section with:
<p align="right">(<a href="#readme-top">back to top</a>)</p>
Paired with <a id="readme-top"></a> at the top.
<details> collapse long blocksTOCs over 15 items, long config lists, OS-specific install variants, FAQ — wrap in <details>:
<details>
<summary>Advanced configuration</summary>
...long content...
</details>
Keeps prose readable. All shields.io URLs and repo anchors go at the bottom:
[![Stars][stars-shield]][stars-url]
[stars-shield]: https://img.shields.io/github/stars/owner/repo.svg?style=for-the-badge
[stars-url]: https://github.com/owner/repo/stargazers
Ship no section you can't back up. Empty "Acknowledgments" or "Features" = worse than no section. Replace with <!-- hide until real --> comment.
The single highest-leverage polish after structure is voice. Most generated READMEs fail here.
Strip on sight:
blazing-fast, seamless, intuitive, powerful, robust, cutting-edge, next-generation, best-in-class, vibrant, groundbreakingpivotal, crucial, testament to, stands as, serves as, represents a, marks a, evolving landscape, ecosystem, journeyis / are / has over serves as, boasts, features, offers, delivers-ing pseudo-analyses: ..., empowering developers, ..., ensuring X, ..., highlighting YIt's not just a library, it's a philosophythe future is bright, exciting times ahead, continues to evolveOf course!, Let me know if, Here's a breakdown, I hope this helpsFavor:
is, are, has)I, we) when a real person is behind the projectwe're still figuring out, probably, about 94% of the time)faster than quicktype on 10 MB payloads beats blazing-fast)After drafting, run the two-prompt audit:
Ship the second version. Full patterns and worked examples in references/voice-and-prose.md. For deep humanization of long-form prose (about pages, philosophy sections), hand off to the humanizer skill for a final pass.
See references/anti-patterns.md. Highlights:
# Project Name and nothing else for 3 paragraphs before telling user what it isimages/logo.png but images/ not committed)github_username, repo_name) left in after forkInstall v1.2 when package.json says 2.5)Full templates → references/templates.md.
| Project type | Use template | Key features |
|---|---|---|
| Library / SDK | library.md | API section, install via pkg mgr, import example |
| CLI tool | cli.md | --help output, usage GIF (VHS), subcommand table |
| Web app | webapp.md | Live demo link, screenshot grid, .env example |
| Desktop app | desktop.md | Download badges per-OS, screenshot, system requirements |
| Research / ML | research.md | Abstract, cite-as BibTeX, dataset, reproducibility |
| Template / Boilerplate | template.md | "Use this template" button, what's included, scaffolding flow |
| Monorepo | monorepo.md | Packages table with per-pkg badges, workspace layout |
| Profile README | profile.md | Intro card, stats widgets, socials — see profile-readme.md |
When producing a README:
md code block) for user reviewREADME.mdREADME.md exists: cp README.md README.md.bak first, then write<owner>/<repo> or Lorem ipsum-like fillerIf the user asks you to improve or humanize an existing README (rather than generate one), skip to the audit pass: run the checklist, diff, and propose edits preserving their voice.
humanizer — full Wikipedia "Signs of AI writing" treatment; hand off long-form README prose for a deep humanization pass.