Use this skill whenever the user asks to create, write, generate, overhaul, or improve a README.md (or README.rst/README) for a repository, project, or package — including vague requests like "make my repo look professional," "write docs for this," "add a README," or "clean up my project page." This skill governs the FULL workflow of professional README creation — it investigates the actual codebase first (never inventing content), studies real high-quality README conventions (badges, hero images, Mermaid diagrams, ToCs, collapsible sections), and assembles a final README.md that looks like it belongs to a serious, actively maintained open-source project. Trigger this even if the user only says "write a README" with no other detail — that terse phrasing is the signal to launch full repo investigation, not to write a generic template from memory.
A README is not a form to fill in. It is a landing page with one job: get a stranger from "what is this?" to "I get it, and here's my next action" in under 60 seconds — then serve as the reference doc for everyone who stays longer.
Three non-negotiable principles govern everything in this skill:
Investigate before writing. Never write a single line of README content from assumption, from the project name alone, or from a half-read file. A README that describes the repo wrong is worse than no README. Section 1 is mandatory and comes first, always.
Ground style in real repos, not vibes. "Professional README" is not a feeling — it's a set of concrete, observable patterns used by repos with tens of thousands of stars. Section 2 tells you what those patterns actually are, sourced from real, current conventions, not generic AI-README energy (no "🚀 Blazing fast!", no filler paragraphs, no emoji-per-bullet-point unless the project's own voice already uses that style).
Match ambition to project reality. A weekend CLI script and a 200-file distributed system do not get the same README. Over-scaffolding a small script (contributor guides, roadmaps, architecture diagrams for 80 lines of code) is exactly as wrong as under-scaffolding a serious library. Section 3 has you classify the project before choosing sections.
Do not start generating markdown until Sections 1 and 3 are done. This is the difference between an agent that produces a generic template and one that produces a README that actually reflects the repo.
Section 1 — Investigate the Repository (mandatory, do this first)
You cannot write an honest README without reading the actual code. Treat this like onboarding as a new contributor. Budget real effort here — this is most of the value of this skill, not a preamble to skip.
1.1 Map the structure
# Get the shape of the repo before reading anything in detail
find . -maxdepth 3 -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/venv/*' -not -path '*/__pycache__/*' | sort
Use view on the top-level directory too. You're looking for:
Manifest/config files — package.json, pyproject.toml, Cargo.toml, go.mod, composer.json, Gemfile, pom.xml, requirements.txt. These tell you the real name, description, dependencies, scripts, and often the license.
Existing docs — any current README, docs/, CONTRIBUTING.md, ARCHITECTURE.md, CHANGELOG.md, .github/ (issue templates, workflows, FUNDING.yml)
CI/CD config — .github/workflows/*.yml, .gitlab-ci.yml, Jenkinsfile — proves what's tested/deployed and how, and is a source of real (not invented) badges
License file — LICENSE, LICENSE.md, COPYING
Existing visual assets — assets/, images/, docs/img/, .github/assets/ — check if a logo, banner, or screenshots already exist before offering to create one
1.2 Read the manifest for ground truth
Whichever manifest exists, actually open it — it usually has the truest one-line description, the real dependency list, the actual scripts/commands, and the license:
Don't just skim filenames — open the real entry point(s) and the most important 3–6 files. You're trying to answer, in your own words:
What problem does this solve, for whom?
What's the primary interface? (CLI? HTTP API? importable library? web app? background service?)
What are the 3–5 features that actually matter, versus incidental utility code?
What does a first successful run look like — literally, what command, what output?
What does it depend on externally (a database, an API key, a specific runtime version, a GPU)?
Is there an existing test suite? (test/, tests/, *.spec.*, *_test.*) — proves how to verify it works, and whether to include a "running tests" section.
If the repo is large, don't try to read every file. Prioritize: entry point → core module(s) it immediately imports → config/settings → one representative test. That's usually enough to describe the project honestly.
1.4 Detect the real tech stack (for badges later)
Cross-reference what you actually found — don't guess:
Framework(s): from dependency list (react, fastapi, express, django, next, axum...)
Package registry presence: is this published to npm/PyPI/crates.io/RubyGems? (Check manifest name + registry, or ask/search if uncertain — never fabricate a package existing.)
CI provider: from .github/workflows/
License: from LICENSE file or manifest license field
1.5 Check for architecture worth diagramming
Skim for signs of non-trivial structure that a diagram would clarify: multiple services, a request/response pipeline, a plugin system, client+server split, a data pipeline with distinct stages, a state machine. If the whole repo is a single-purpose script or a small flat library, there is no architecture to diagram — don't invent one (see Section 5).
1.6 If genuinely insufficient context exists
If after steps 1.1–1.3 you still can't determine the project's purpose (e.g., an empty scaffold, or a repo of pure data with no code), ask the user directly what the project does rather than fabricating a description. This is the one clarifying question worth spending: everything downstream depends on an accurate description, and a wrong guess here contaminates the whole README.
Section 2 — What Real, Excellent READMEs Actually Do
This is not a generic checklist — these are concrete, observable patterns pulled from READMEs that are widely regarded as excellent (patterns documented in matiassingers/awesome-readme, othneildrew/Best-README-Template, and repos like Prettier, create-react-app, Express, and countless well-run OSS libraries). Internalize the pattern, not any one project's exact wording.
2.1 The first screen is everything
Everything above the fold (before anyone scrolls) should answer: what is this, and why should I care, in under 10 seconds. That means, in order:
Title (and logo/hero image if one exists or is wanted — see Section 5)
Badge row (see 2.3)
One-sentence description — not marketing fluff ("a blazing-fast next-gen solution"), the actual concrete thing it does and for whom
3–6 bullet feature highlights, OR a single short paragraph — pick whichever is truer to the project's complexity
A demo — screenshot, GIF, or terminal recording, if one exists or can be reasonably created/requested (see Section 5)
Quick-start code block — the fastest path to running it, copy-pasteable, showing real commands from the actual manifest, not placeholder pseudo-commands
If a stranger reads only this and closes the tab, they should still walk away knowing what the project is for.
2.2 Structure that scales down as well as up
The most well-regarded READMEs are skimmable: headers a reader can jump between via a table of contents, with real content under each — not padding. Common section order for a substantial project:
Title / Logo
Badges
One-line description
Table of Contents (for anything past ~5 sections)
Features
Demo / Screenshots
Installation
Usage / Quick Start
Configuration
API Reference (if applicable)
Architecture (if the project has meaningful internal structure — see Section 6)
Roadmap (if genuinely tracked, e.g. via GitHub Projects/issues — don't invent one)
Contributing
Testing
License
Acknowledgments / Credits
Not every project needs every section. A CLI script needs Install → Usage → License and nothing else. Forcing all sections onto a small project is exactly the kind of over-scaffolding Section 3 warns against.
2.3 Badges: real, not decorative
Badges at the top act as a trust signal (build passing, license, latest version, downloads) — but only when true. Standard pattern using shields.io:
Only add a badge you can back with something real you found in Section 1. A CI badge with no .github/workflows/ is a lie. A PyPI badge for an unpublished package is a lie. If unsure whether it's published, say so to the user rather than guessing.
?style=flat-square or ?style=for-the-badge are the two most common styles in high-quality READMEs; for-the-badge reads bolder/larger, flat-square reads more understated — match the project's tone.
3–6 badges is the sweet spot. A wall of 15 badges reads as noise, not credibility.
Center the badge row under the title using an <p align="center"> wrapper if the project uses a hero image too (see Section 5), since GitHub markdown doesn't center by default outside raw HTML.
2.4 Visuals carry more trust than prose
Patterns seen repeatedly in the best-regarded READMEs:
A hero image or logo immediately under the title, centered.
An actual GIF or screenshot of the thing working, not a static diagram, for anything with a UI or CLI output worth seeing.
Collapsible <details> blocks for anything long (full CLI flag reference, extended config options, alternate installation methods) so the main flow stays short:
Tables for anything tabular (CLI flags, config keys, API parameters) — far more scannable than prose paragraphs.
2.5 Voice
Concrete, declarative sentences. "Parses a directory of CSVs and emits a normalized SQLite database" beats "A powerful and flexible tool for seamlessly transforming your data." Avoid: superlatives with no backing metric ("blazing fast," "production-ready" without evidence), a wall of emoji as bullet decoration when the project itself doesn't use that voice, and restating the same fact three different ways across three sections.
2.6 Living document signals
Real, actively-maintained READMEs tend to include things that prove someone is still there: a "Contributing" section that actually names the workflow (not just "PRs welcome"), a genuine link to open issues/discussions, and a license section that names the real license found in Section 1 — not a default guess.
Section 3 — Classify the Project Before Choosing Sections
Based on Section 1's findings, place the project on this spectrum and let it set your section list. Don't ask the user to classify it — infer it from what you found (LOC, file count, presence of tests/CI, whether it's a library vs application, dependency count).
Tier
Signal
Section list
Micro (script, single-file tool, gist-tier)
<~300 LOC, one file or a couple, no tests/CI
Title, 1-line description, Install, Usage, License. That's it.
Standard (typical library/app)
Real package structure, some tests, single maintainer or small team
Serious project (framework, platform, active OSS with CI, multiple contributors, public issue tracker)
CI configured, CONTRIBUTING exists or is warranted, multiple modules/services, external users implied by registry publication
Full structure from 2.2, plus architecture diagram (Section 5.3), API reference, roadmap if genuinely tracked, acknowledgments
When unsure between tiers, undershoot rather than overshoot — a lean, accurate README beats a bloated one with empty/placeholder sections. It's always easy for the user to ask you to expand a section; it's a worse experience to hand them boilerplate they have to delete.
Some content cannot be reliably inferred from the repo and must come from the user. Batch these into a single round of questions using the agent's ask-user tool (e.g. the question tool in OpenCode/Claude Code, or equivalent interactive prompt) rather than trickling questions one at a time — but only ask what Section 1 genuinely couldn't determine.
Typical gaps worth asking about, if not already evident from the repo:
Hero image / logo: does one already exist, should one be generated, or should the README skip it? (See Section 5.)
Live demo URL or hosted docs site, if applicable
Target audience framing: is this for end users, other developers integrating it as a library, or internal team members? This changes tone and what "Usage" should show.
License intent, only if no LICENSE file exists at all — don't ask if you already found one.
Contribution stance: actively seeking contributors vs. personal/portfolio project not soliciting PRs — changes whether a Contributing section belongs at all.
Don't ask about things you can determine yourself (name, description, install command, dependencies, license text) — that's what Section 1 is for. Re-deriving instead of asking is the entire point of the investigation step.
Section 5 — Hero Images, Logos, and Diagrams
5.1 Check first
Before creating or asking about anything visual, check assets/, images/, .github/, and the repo root for an existing logo/banner (Section 1.1 already covers this). If one exists, reference it — don't replace it unasked.
5.2 If none exists, ask, don't assume
Visual identity is a preference call, not a fact to infer. Offer the choice:
Use the agent's ask-user tool (e.g. question in OpenCode/Claude Code, or equivalent interactive prompt): "Want a hero banner for the top of the README?" with options like "Yes, generate one," "I have my own image to add," "Skip it — text only."
If they have their own: ask for the file or a description of where it'll live, and reference it with  centered via <p align="center"><img src="assets/logo.png" width="..."/></p>.
If they want one generated: this is a visual asset, not a diagram — use image generation capability if available for this environment, or offer to create a clean typographic SVG banner (title + tagline, using the project's actual name) as a lightweight alternative if photographic image generation isn't available. Don't silently skip this if the user asked for it.
5.3 Architecture diagrams — only when Section 1.5 found real structure
GitHub natively renders Mermaid inside fenced code blocks — no image export needed, no external tool, and it stays version-controllable as text. Confirmed current behavior:
The fence language must be exactly the lowercase word mermaid — variants like Mermaid or mmd silently fall back to plain text.
Prefer flowchart TD (top-down) over LR (left-right) for anything with more than 3–4 nodes — GitHub renders inside the fixed markdown column width, and wide LR diagrams overflow with an ugly horizontal scrollbar.
Quote any node label containing parentheses, colons, or punctuation: A["Step 1 (init)"], not A[Step 1 (init)], which breaks parsing.
Group related nodes into subgraph blocks for anything with distinct components (e.g., client/server, pipeline stages).
Basic architecture flow:
flowchart TD
A[Client Request] --> B[API Gateway]
B --> C{Auth Valid?}
C -->|Yes| D[Route Handler]
C -->|No| E[401 Response]
D --> F[(Database)]
D --> G[External Service]
Sequence diagram for request/response or multi-actor flows:
sequenceDiagram
participant U as User
participant A as API
participant D as Database
U->>A: POST /login
A->>D: Verify credentials
D-->>A: User record
A-->>U: JWT token
Only include a diagram if Section 1.5 found genuine structure to show. A diagram for a single-file script is exactly the kind of padding this skill exists to avoid — it signals the README was templated, not written.
Section 6 — Assembly Checklist (final pass before delivering)
Before presenting the README, verify:
Every factual claim (name, install command, license, dependency, badge) traces back to something actually found in Section 1 — nothing invented
The quick-start code block uses the real command from the manifest, copy-pasteable as-is
Section list matches the project's tier (Section 3) — no empty/placeholder sections, no missing essentials
Badges only for things verified true (real CI config, real registry publication, real license)
A table of contents is present if the doc has more than ~5 major sections
Any diagram reflects real structure found in Section 1.5, not invented architecture
Voice is concrete and specific, not generic AI-marketing language (re-read Section 2.5)
License section names the actual license found in Section 1, or flags that none was found
If this replaces an existing README, anything genuinely useful in the old one (badges tied to real accounts, existing contributor docs, links) has been preserved, not silently dropped
Output
Write the final file as README.md in the repo root (or wherever the user's existing README lives). This is a file deliverable — create the actual file, don't just print markdown into the chat. If a docx/pdf/pptx skill instinct fires, ignore it: README.md is always plain Markdown, never Word/PDF/PowerPoint. Present the finished file to the user rather than pasting its full contents inline once it's of any real length.
1---2name: readme-architect3description: Use this skill whenever the user asks to create, write, generate, overhaul, or improve a README.md (or README.rst/README) for a repository, project, or package — including vague requests like "make my repo look professional," "write docs for this," "add a README," or "clean up my project page." This skill governs the FULL workflow of professional README creation — it investigates the actual codebase first (never inventing content), studies real high-quality README conventions (badges, hero images, Mermaid diagrams, ToCs, collapsible sections), and assembles a final README.md that looks like it belongs to a serious, actively maintained open-source project. Trigger this even if the user only says "write a README" with no other detail — that terse phrasing is the signal to launch full repo investigation, not to write a generic template from memory.4license: MIT5---67# README Architect89## Core Philosophy1011A README is not a form to fill in. It is a **landing page with one job**: get a stranger from "what is this?" to "I get it, and here's my next action" in under 60 seconds — then serve as the reference doc for everyone who stays longer.1213Three non-negotiable principles govern everything in this skill:14151. **Investigate before writing.** Never write a single line of README content from assumption, from the project name alone, or from a half-read file. A README that describes the repo wrong is worse than no README. Section 1 is mandatory and comes first, always.162. **Ground style in real repos, not vibes.** "Professional README" is not a feeling — it's a set of concrete, observable patterns used by repos with tens of thousands of stars. Section 2 tells you what those patterns actually are, sourced from real, current conventions, not generic AI-README energy (no "🚀 Blazing fast!", no filler paragraphs, no emoji-per-bullet-point unless the project's own voice already uses that style).173. **Match ambition to project reality.** A weekend CLI script and a 200-file distributed system do not get the same README. Over-scaffolding a small script (contributor guides, roadmaps, architecture diagrams for 80 lines of code) is exactly as wrong as under-scaffolding a serious library. Section 3 has you classify the project before choosing sections.1819Do not start generating markdown until Sections 1 and 3 are done. This is the difference between an agent that produces a generic template and one that produces a README that actually reflects the repo.2021---2223## Section 1 — Investigate the Repository (mandatory, do this first)2425You cannot write an honest README without reading the actual code. Treat this like onboarding as a new contributor. Budget real effort here — this is most of the value of this skill, not a preamble to skip.2627### 1.1 Map the structure2829```bash30# Get the shape of the repo before reading anything in detail31find . -maxdepth 3 -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' -not -path '*/venv/*' -not -path '*/__pycache__/*' | sort32```3334Use `view` on the top-level directory too. You're looking for:3536- **Entry points** — `main.py`, `index.js`, `src/`, `cmd/`, `app/`37- **Manifest/config files** — `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `composer.json`, `Gemfile`, `pom.xml`, `requirements.txt`. These tell you the real name, description, dependencies, scripts, and often the license.38- **Existing docs** — any current `README`, `docs/`, `CONTRIBUTING.md`, `ARCHITECTURE.md`, `CHANGELOG.md`, `.github/` (issue templates, workflows, `FUNDING.yml`)39- **CI/CD config** — `.github/workflows/*.yml`, `.gitlab-ci.yml`, `Jenkinsfile` — proves what's tested/deployed and how, and is a source of real (not invented) badges40- **License file** — `LICENSE`, `LICENSE.md`, `COPYING`41- **Existing visual assets** — `assets/`, `images/`, `docs/img/`, `.github/assets/` — check if a logo, banner, or screenshots already exist before offering to create one4243### 1.2 Read the manifest for ground truth4445Whichever manifest exists, actually open it — it usually has the truest one-line description, the real dependency list, the actual scripts/commands, and the license:4647```bash48cat package.json 2>/dev/null49cat pyproject.toml 2>/dev/null50cat Cargo.toml 2>/dev/null51cat go.mod 2>/dev/null52```5354Extract: package name, version, description field, `scripts`/entry-point commands, dependencies vs devDependencies (signals what's core vs tooling), license identifier, repository URL, author.5556### 1.3 Understand what the code actually does5758Don't just skim filenames — open the real entry point(s) and the most important 3–6 files. You're trying to answer, in your own words:5960- What problem does this solve, for whom?61- What's the primary interface? (CLI? HTTP API? importable library? web app? background service?)62- What are the 3–5 features that actually matter, versus incidental utility code?63- What does a first successful run look like — literally, what command, what output?64- What does it depend on externally (a database, an API key, a specific runtime version, a GPU)?65- Is there an existing test suite? (`test/`, `tests/`, `*.spec.*`, `*_test.*`) — proves how to verify it works, and whether to include a "running tests" section.6667If the repo is large, don't try to read every file. Prioritize: entry point → core module(s) it immediately imports → config/settings → one representative test. That's usually enough to describe the project honestly.6869### 1.4 Detect the real tech stack (for badges later)7071Cross-reference what you actually found — don't guess:7273- Language(s): from manifest + file extensions (`find . -name "*.py" | head`, etc.)74- Framework(s): from dependency list (`react`, `fastapi`, `express`, `django`, `next`, `axum`...)75- Package registry presence: is this published to npm/PyPI/crates.io/RubyGems? (Check manifest `name` + registry, or ask/search if uncertain — never fabricate a package existing.)76- CI provider: from `.github/workflows/`77- License: from LICENSE file or manifest `license` field7879### 1.5 Check for architecture worth diagramming8081Skim for signs of non-trivial structure that a diagram would clarify: multiple services, a request/response pipeline, a plugin system, client+server split, a data pipeline with distinct stages, a state machine. If the whole repo is a single-purpose script or a small flat library, there is no architecture to diagram — don't invent one (see Section 5).8283### 1.6 If genuinely insufficient context exists8485If after steps 1.1–1.3 you still can't determine the project's purpose (e.g., an empty scaffold, or a repo of pure data with no code), ask the user directly what the project does rather than fabricating a description. This is the one clarifying question worth spending: everything downstream depends on an accurate description, and a wrong guess here contaminates the whole README.8687---8889## Section 2 — What Real, Excellent READMEs Actually Do9091This is not a generic checklist — these are concrete, observable patterns pulled from READMEs that are widely regarded as excellent (patterns documented in `matiassingers/awesome-readme`, `othneildrew/Best-README-Template`, and repos like Prettier, create-react-app, Express, and countless well-run OSS libraries). Internalize the *pattern*, not any one project's exact wording.9293### 2.1 The first screen is everything9495Everything above the fold (before anyone scrolls) should answer: **what is this, and why should I care, in under 10 seconds.** That means, in order:96971. Title (and logo/hero image if one exists or is wanted — see Section 5)982. Badge row (see 2.3)993. One-sentence description — not marketing fluff ("a blazing-fast next-gen solution"), the actual concrete thing it does and for whom1004. 3–6 bullet feature highlights, OR a single short paragraph — pick whichever is truer to the project's complexity1015. A demo — screenshot, GIF, or terminal recording, if one exists or can be reasonably created/requested (see Section 5)1026. Quick-start code block — the fastest path to running it, copy-pasteable, showing real commands from the actual manifest, not placeholder pseudo-commands103104If a stranger reads only this and closes the tab, they should still walk away knowing what the project is for.105106### 2.2 Structure that scales down as well as up107108The most well-regarded READMEs are **skimmable**: headers a reader can jump between via a table of contents, with real content under each — not padding. Common section order for a substantial project:109110```111Title / Logo112Badges113One-line description114Table of Contents (for anything past ~5 sections)115Features116Demo / Screenshots117Installation118Usage / Quick Start119Configuration120API Reference (if applicable)121Architecture (if the project has meaningful internal structure — see Section 6)122Roadmap (if genuinely tracked, e.g. via GitHub Projects/issues — don't invent one)123Contributing124Testing125License126Acknowledgments / Credits127```128129**Not every project needs every section.** A CLI script needs Install → Usage → License and nothing else. Forcing all sections onto a small project is exactly the kind of over-scaffolding Section 3 warns against.130131### 2.3 Badges: real, not decorative132133Badges at the top act as a trust signal (build passing, license, latest version, downloads) — but only when true. Standard pattern using shields.io:134135```markdown136[](https://github.com/OWNER/REPO/actions)137[](LICENSE)138[](https://www.npmjs.com/package/PACKAGE_NAME)139[](https://pypi.org/project/PACKAGE_NAME/)140[](https://github.com/OWNER/REPO/stargazers)141```142143Rules:144145- **Only add a badge you can back with something real you found in Section 1.** A CI badge with no `.github/workflows/` is a lie. A PyPI badge for an unpublished package is a lie. If unsure whether it's published, say so to the user rather than guessing.146- `?style=flat-square` or `?style=for-the-badge` are the two most common styles in high-quality READMEs; `for-the-badge` reads bolder/larger, `flat-square` reads more understated — match the project's tone.147- 3–6 badges is the sweet spot. A wall of 15 badges reads as noise, not credibility.148- Center the badge row under the title using an `<p align="center">` wrapper if the project uses a hero image too (see Section 5), since GitHub markdown doesn't center by default outside raw HTML.149150### 2.4 Visuals carry more trust than prose151152Patterns seen repeatedly in the best-regarded READMEs:153154- **A hero image or logo** immediately under the title, centered.155- **An actual GIF or screenshot of the thing working**, not a static diagram, for anything with a UI or CLI output worth seeing.156- **Collapsible `<details>` blocks** for anything long (full CLI flag reference, extended config options, alternate installation methods) so the main flow stays short:157158 ```markdown159 <details>160 <summary>Full configuration options</summary>161162 | Option | Default | Description |163 |---|---|---|164 | ... | ... | ... |165166 </details>167 ```168169- **Tables** for anything tabular (CLI flags, config keys, API parameters) — far more scannable than prose paragraphs.170171### 2.5 Voice172173Concrete, declarative sentences. "Parses a directory of CSVs and emits a normalized SQLite database" beats "A powerful and flexible tool for seamlessly transforming your data." Avoid: superlatives with no backing metric ("blazing fast," "production-ready" without evidence), a wall of emoji as bullet decoration when the project itself doesn't use that voice, and restating the same fact three different ways across three sections.174175### 2.6 Living document signals176177Real, actively-maintained READMEs tend to include things that prove someone is still there: a "Contributing" section that actually names the workflow (not just "PRs welcome"), a genuine link to open issues/discussions, and a license section that names the real license found in Section 1 — not a default guess.178179---180181## Section 3 — Classify the Project Before Choosing Sections182183Based on Section 1's findings, place the project on this spectrum and let it set your section list. Don't ask the user to classify it — infer it from what you found (LOC, file count, presence of tests/CI, whether it's a library vs application, dependency count).184185| Tier | Signal | Section list |186|---|---|---|187| **Micro** (script, single-file tool, gist-tier) | <~300 LOC, one file or a couple, no tests/CI | Title, 1-line description, Install, Usage, License. That's it. |188| **Standard** (typical library/app) | Real package structure, some tests, single maintainer or small team | Title, badges, description, features, demo/screenshot if applicable, install, usage, configuration (if any), contributing, license |189| **Serious project** (framework, platform, active OSS with CI, multiple contributors, public issue tracker) | CI configured, CONTRIBUTING exists or is warranted, multiple modules/services, external users implied by registry publication | Full structure from 2.2, plus architecture diagram (Section 5.3), API reference, roadmap if genuinely tracked, acknowledgments |190191When unsure between tiers, undershoot rather than overshoot — a lean, accurate README beats a bloated one with empty/placeholder sections. It's always easy for the user to ask you to expand a section; it's a worse experience to hand them boilerplate they have to delete.192193---194195## Section 4 — Gathering Missing Pieces (ask, don't fabricate)196197Some content cannot be reliably inferred from the repo and must come from the user. Batch these into a single round of questions using the agent's ask-user tool (e.g. the `question` tool in OpenCode/Claude Code, or equivalent interactive prompt) rather than trickling questions one at a time — but only ask what Section 1 genuinely couldn't determine.198199Typical gaps worth asking about, if not already evident from the repo:200201- **Hero image / logo**: does one already exist, should one be generated, or should the README skip it? (See Section 5.)202- **Live demo URL** or hosted docs site, if applicable203- **Target audience framing**: is this for end users, other developers integrating it as a library, or internal team members? This changes tone and what "Usage" should show.204- **License intent**, only if no LICENSE file exists at all — don't ask if you already found one.205- **Contribution stance**: actively seeking contributors vs. personal/portfolio project not soliciting PRs — changes whether a Contributing section belongs at all.206207Don't ask about things you can determine yourself (name, description, install command, dependencies, license text) — that's what Section 1 is for. Re-deriving instead of asking is the entire point of the investigation step.208209---210211## Section 5 — Hero Images, Logos, and Diagrams212213### 5.1 Check first214215Before creating or asking about anything visual, check `assets/`, `images/`, `.github/`, and the repo root for an existing logo/banner (Section 1.1 already covers this). If one exists, reference it — don't replace it unasked.216217### 5.2 If none exists, ask, don't assume218219Visual identity is a preference call, not a fact to infer. Offer the choice:220221- Use the agent's ask-user tool (e.g. `question` in OpenCode/Claude Code, or equivalent interactive prompt): "Want a hero banner for the top of the README?" with options like "Yes, generate one," "I have my own image to add," "Skip it — text only."222- If they have their own: ask for the file or a description of where it'll live, and reference it with `` centered via `<p align="center"><img src="assets/logo.png" width="..."/></p>`.223- If they want one generated: this is a visual asset, not a diagram — use image generation capability if available for this environment, or offer to create a clean typographic SVG banner (title + tagline, using the project's actual name) as a lightweight alternative if photographic image generation isn't available. Don't silently skip this if the user asked for it.224225### 5.3 Architecture diagrams — only when Section 1.5 found real structure226227GitHub natively renders Mermaid inside fenced code blocks — no image export needed, no external tool, and it stays version-controllable as text. Confirmed current behavior:228229- The fence language must be **exactly** the lowercase word `mermaid` — variants like `Mermaid` or `mmd` silently fall back to plain text.230- Prefer `flowchart TD` (top-down) over `LR` (left-right) for anything with more than 3–4 nodes — GitHub renders inside the fixed markdown column width, and wide `LR` diagrams overflow with an ugly horizontal scrollbar.231- Quote any node label containing parentheses, colons, or punctuation: `A["Step 1 (init)"]`, not `A[Step 1 (init)]`, which breaks parsing.232- Group related nodes into `subgraph` blocks for anything with distinct components (e.g., client/server, pipeline stages).233234Basic architecture flow:235236```mermaid237flowchart TD238 A[Client Request] --> B[API Gateway]239 B --> C{Auth Valid?}240 C -->|Yes| D[Route Handler]241 C -->|No| E[401 Response]242 D --> F[(Database)]243 D --> G[External Service]244```245246Sequence diagram for request/response or multi-actor flows:247248```mermaid249sequenceDiagram250 participant U as User251 participant A as API252 participant D as Database253 U->>A: POST /login254 A->>D: Verify credentials255 D-->>A: User record256 A-->>U: JWT token257```258259**Only include a diagram if Section 1.5 found genuine structure to show.** A diagram for a single-file script is exactly the kind of padding this skill exists to avoid — it signals the README was templated, not written.260261---262263## Section 6 — Assembly Checklist (final pass before delivering)264265Before presenting the README, verify:266267- [ ] Every factual claim (name, install command, license, dependency, badge) traces back to something actually found in Section 1 — nothing invented268- [ ] The quick-start code block uses the real command from the manifest, copy-pasteable as-is269- [ ] Section list matches the project's tier (Section 3) — no empty/placeholder sections, no missing essentials270- [ ] Badges only for things verified true (real CI config, real registry publication, real license)271- [ ] A table of contents is present if the doc has more than ~5 major sections272- [ ] Any diagram reflects real structure found in Section 1.5, not invented architecture273- [ ] Voice is concrete and specific, not generic AI-marketing language (re-read Section 2.5)274- [ ] License section names the actual license found in Section 1, or flags that none was found275- [ ] If this replaces an existing README, anything genuinely useful in the old one (badges tied to real accounts, existing contributor docs, links) has been preserved, not silently dropped276277## Output278279Write the final file as `README.md` in the repo root (or wherever the user's existing README lives). This is a file deliverable — create the actual file, don't just print markdown into the chat. If a `docx`/`pdf`/`pptx` skill instinct fires, ignore it: README.md is always plain Markdown, never Word/PDF/PowerPoint. Present the finished file to the user rather than pasting its full contents inline once it's of any real length.
Run npx skillmds@latest add beast-ofcourse/readme-architect in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Use this skill whenever the user asks to create, write, generate, overhaul, or improve a README.md (or README.rst/README) for a repository, project, or package — including vague requests like "make my repo look professional," "write docs for this," "add a README," or "clean up my project page." This skill governs the FULL workflow of professional README creation — it investigates the actual codebase first (never inventing content), studies real high-quality README conventions (badges, hero images, Mermaid diagrams, ToCs, collapsible sections), and assembles a final README.md that looks like it belongs to a serious, actively maintained open-source project. Trigger this even if the user only says "write a README" with no other detail — that terse phrasing is the signal to launch full repo investigation, not to write a generic template from memory. It is listed under Productivity on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
beast-ofcourse (@beast-ofcourse) published this skill. Their other Agent Skills are listed on their SkillMD profile.