openclaw/readme-standard
House README standard: structure, badge row, tone, per-archetype templates, and verification gates for steipete/openclaw repos.
npx skills add https://github.com/openclaw/agent-skills --skill readme-standard
One structure for every public README in the steipete and openclaw orgs. Load
this skill before writing or reviewing a README. The reference implementation
is openclaw/fs-safe — read its README
first if unsure what "good" looks like.
Every README answers, in order, with no detours:
reference material moves to docs/ (or the docs site) and gets linked.
Concretely:
# <name> <one emoji> — <playful tagline, one line>
<badge row>
<1–2 sober sentences: what it is, who it is for. No adjectives doing the work
nouns should do.>
<OPTIONAL: one small code/terminal sample (≤10 lines) that demonstrates the
core value. If one sample can prove the pitch, put it here.>
## Install ← smallest path first (brew/npm/npx), alternatives after
## Quick start ← 60 seconds to first success; commands must actually run
## <core sections> ← 2–6 sections, each one level deeper than the last
## Development ← build/test/lint in ≤10 lines, link CONTRIBUTING if present
## License ← one line
First paragraph states plainly what the tool does and for whom.
capabilities into the sections where they are demonstrated.
README describes the present tense of the tool. Version-specific migration
notes live in the changelog or docs/.
Anything beyond that moves to docs/ with a link. Exhaustive command/flag
references belong in docs/ or the docs site, never in the README — a
summary table with links is fine.
have a working setup for that level of use.
one screenshot near the top. Compress; no >500 KB images.
…), the README is a front door, not a mirror. Link, don't duplicate.
Style: flat-square, always dynamic — a badge that can go stale is a bug.
Never hardcode versions into img.shields.io/badge/... URLs.
Order: CI · version · platform/runtime · license · extras (Homebrew, docs).
[](https://github.com/OWNER/REPO/actions/workflows/ci.yml)
Per ecosystem, add what applies:
https://img.shields.io/npm/v/PKG?style=flat-square → npm pagehttps://img.shields.io/github/v/release/OWNER/REPO?style=flat-squarenpm/node/v badge for npm packages; staticbadge/platforms-... or badge/Swift-6.x-... is acceptable for facts that
only change with a commit (platforms, language version, min OS).
https://img.shields.io/github/license/OWNER/REPO?style=flat-squareUse the repo's *actual* workflow filename and default branch in the CI badge.
Verify every badge URL renders (HTTP 200 and not the shields "invalid" card)
before shipping.
CLI tool (Go/TS binary) — Install (brew → go install/npm), Quick start
(3–6 commands with one-line comments showing a real session), Commands
(summary table linking docs/), Configuration, JSON/automation output if
agent-facing, Development, License.
npm library — Install, one core-usage sample that compiles, then one
section per capability tier (basic → options → advanced/edge), API reference
link (docs site or generated docs), Development, License.
Swift package — badges (Swift version, platforms, CI), SPM install snippet
(both Package.swift lines), Quick start compiling sample, capability
sections, platform notes, Development, License.
macOS app — screenshot first, Install (brew cask → direct download link),
what-it-does tour keyed to the screenshot, permissions/setup notes,
Development, License.
Web service / site — what it is + hosted URL, self-host/deploy path,
local development, architecture pointer, License.
package) and execute each quickstart/example command, or validate flags
against real --help output when execution needs credentials/hardware.
Fix the README, not the transcript.
file in the repo's toolchain is enough).
returns non-404; every badge renders.
stale minimums, or "coming soon" for shipped things. Check package.json/
go.mod/Package.swift for the real runtime floors.
exist in docs/ already, be moved there in the same PR, or be genuinely
obsolete (state which in the PR body).
Take openclaw/readme-standard from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference go.
Without those the skill loads but fails at the first command.