← All articles

Getting Started / 2026.08.07 / 7 min read

A README Isn't a Storefront — It's a Tool's First Path to Success

A newcomer doesn't need to know how impressive the project is first. They need to confirm, on the shortest path: installed right, got it running, and here's where the result is.

A README Isn't a Storefront — It's a Tool's First Path to Success — Kenton Blog

The person a README fools most easily is the author

When the author opens their own repo, the environment is already set up, the directory is familiar, and after an error they know where to look. So the README starts from an architecture diagram, a feature list and a vision — it looks information-rich.

A stranger sees a different path: is this a web app or a command-line tool? Download a zip or clone the repo? Are Node.js, Python and Docker one-of-three or all required? After it starts, do I look in the browser for the result, or in an output directory for a file?

GitHub displays a README that meets the location rules on the repo's front page, and it's often the first product interface a user meets before touching the code. That interface's primary job is very specific: let someone who doesn't know the author complete a first success with no prompting.

A long README doesn't mean that path exists. A real entrance has to be walkable by a stranger, alone.

First define what "first success" is

Before writing docs, I write one observable success result:

Starting from a freshly opened terminal, without asking the author, the user makes the sample input produce the expected output.

That sentence then gets more specific. For a Markdown-to-HTML tool, a first success could be:

  • The user prepares a sample Markdown file.
  • They run one clear command.
  • The terminal shows no error.
  • HTML appears in a specified directory.
  • Opening it in the browser shows the title and body.

"The project started successfully" is too vague. The user needs to know what success looks like, and where the result is.

A first-time path is made of seven blocks

1. State the result first, not the vision

The first screen at the top answers three questions:

  • What input this tool turns into what output.
  • Who needs it right now.
  • Roughly how many steps the minimal success takes.

"Next-generation intelligent content infrastructure" can't help a user decide whether it's worth installing. "Turns Markdown into previewable HTML" can.

2. Write down the cases where it doesn't apply

Limitations aren't a demerit. They stop the wrong user from entering a path doomed to fail.

For example, state clearly:

  • Only local files are supported for now; online documents aren't read.
  • No Windows testing was done; path behavior isn't guaranteed consistent.
  • It doesn't handle publishing automatically.
  • The examples contain no real API key.
  • Back up production data yourself before use.

The sooner a user sees the boundary, the lower the later support cost.

3. Prerequisites must be checkable

Don't just write "needs Node.js." Give at least the supported range and a way to check:

node --version
npm --version

Also say where to run the command, and what output means the requirement is met. If the project needs a specific major version, write the version range; if it's only official examples, don't pretend every version was tested.

4. Clone, enter the directory, install and start — on separate lines

The following is a structure example, not a real runnable repo address:

git clone YOUR_REPOSITORY_URL
cd YOUR_PROJECT_DIRECTORY
npm install
npm run dev

Placeholders must be uppercase or clearly marked. The worst docs make a newcomer copy the literal words "repository address" and "project directory" into the terminal, and then conclude they can't use Git.

Each command should also say what it changed. git clone downloads the repo, cd switches the current directory, npm install installs dependencies, npm run dev starts the dev server. Obvious to the author; not to a first-time user.

5. Give a safe, disposable sample input

Don't make the user's first run touch their own important data. The project should ship a minimal example, or tell the user how to create a risk-free file.

The example should be small enough to check by hand. Processing a thousand files at once looks impressive, but it stops a newcomer from telling whether 999 of them are correct.

6. Describe the success screen

The success note includes at least:

  • What kind of message appears in the terminal.
  • Whether the process needs to stay running.
  • Which address the browser should open.
  • Where the output file is saved.
  • What stops the program.
  • Whether running it again overwrites data.

If the page opens but is blank, also tell the user whether that's success or failure.

7. Sort the first batch of failures by layer

The FAQ shouldn't collect every possible error. First cover the four most common layers of the first-time path:

Download layer: wrong address, private repo, unreachable network.

Environment layer: runtime not installed, incompatible version, command not on PATH.

Dependency layer: install interrupted, missing system library, lockfile conflict.

Run layer: port in use, missing config, process exit, wrong output path.

Each layer tells the user what evidence to keep first — the full error text, the runtime version, the current directory and the log — rather than just "try reinstalling."

How to fix a common bad README

The bad version usually starts like this:

This project uses an advanced architecture, supporting multi-model, multi-platform, multi-agent collaboration, with high extensibility.

It doesn't tell the user what the first step is.

A more effective top could be:

What this tool does
Converts a local Markdown file into HTML you can preview in a browser.

What you'll get
After running the example, output/ contains demo.html.

Before you start
Node.js 20, or the version the project currently declares as supported.

The shortest path
Clone -> install -> run the example -> open the output.

What it doesn't do right now
It won't log into any platform, and it won't publish automatically.

The feature list, architecture and extension mechanism can go later. A README isn't only for newcomers — it first lets a newcomer find the entrance, then lets an advanced user go deeper.

How to test a README, instead of reading it yourself

An author re-reading their own docs rarely spots blind spots, because the mind auto-completes the missing steps. I value one observation test more:

  1. Find someone who wasn't involved in development.
  2. Give them only the repo front page, with no verbal hints.
  3. Record where they first stop.
  4. Don't explain immediately — first ask what they'd thought the next step was.
  5. Put that blocker back onto the first-time path.
  6. Walk it again from a clean directory.

Acceptance isn't "they think the docs look professional" — it's that they completed the defined first success.

If there's no second person, create a clean directory, temporarily hide your machine's existing config, and strictly run only the steps that appear in the README. Don't rely on a command you remember but didn't write down.

A README shouldn't swallow all the docs

GitHub also suggests a README keep the information needed to help developers start using and contributing to the project, while longer explanations can go into separate docs or a wiki.

A clear layering is usually:

  • README: the result, the applicable scope, the shortest path, the success sign, the common first errors.
  • docs: full config, architecture, interfaces, deployment and advanced scenarios.
  • CONTRIBUTING: the development and contribution flow.
  • SECURITY: how to report vulnerabilities and sensitive issues.
  • CHANGELOG: version changes.

That way the README doesn't become a long page with no findable entrance because "everything is important."

Check for sensitive info one more time before release

Example config, screenshots, logs and command history can all expose an API key, cookies, internal addresses, an email or a local username. Deleting the current file in a public repo doesn't mean the historical commits are gone.

Before releasing, check:

  • Whether all example keys are invalid placeholders.
  • Whether screenshots reveal accounts and paths.
  • Whether .env is ignored.
  • Whether logs contain headers and tokens.
  • Whether doc links point to internal systems.
  • Whether a copy-paste command would modify or delete important data.

After finishing the README, don't ask whether it looks professional enough. Find a clean directory and run only the steps that appear in the docs. As long as you still need to rely on the author's memory partway through, this first-success path isn't finished.

SOURCE AND VERIFICATION

Sources and limits

The factual boundary follows GitHub's official docs; the structure and judgments come from Kenton's real release postmortems of his own developer tools.

Verification: Checked against GitHub's official README and cloning docs.

ONE PRACTICAL NEXT STEP

Bring your README and we'll diagnose it

Paste the top of your README and tell me who it's for. I'll read it the way a stranger would — where does a first-time user stop? — and help you move that one blocker back onto the first-success path. A tester who's never seen the project beats re-reading it yourself.

Message me
Read more articles ↗

KENTON / BUY & CONSULT

Subscriptions & software.

ChatGPT subscriptions · Zhike software
Buy directly, or talk it through first.

Opens the relevant platform, where you can view products and order or ask questions.