Documentation

readme-generator

$npx skills add blunotech-dev/agents --skill readme-generator

Generate a structured, professional README.md from a project's files, such as file structure, manifests (e.g., package.json), and entry points. Use when users want to create or improve a README, document a project, or explain a codebase. Includes project purpose, tech stack, setup, usage, API/CLI reference, environment variables, folder structure, and contribution guidelines.

namedescriptioncategory
readme-generatorGenerate a structured, professional README.md from a project's files, such as file structure, manifests (e.g., package.json), and entry points. Use when users want to create or improve a README, document a project, or explain a codebase. Includes project purpose, tech stack, setup, usage, API/CLI reference, environment variables, folder structure, and contribution guidelines.Documentation

README Generator

Generate a clear, developer-friendly README.md by analyzing a project's actual files — not generic boilerplate. The output should reflect what the project actually does.


Step 1 — Gather Project Context

Before writing anything, collect as much signal as possible. Read these files if present:

PriorityFiles to read
Highpackage.json, pyproject.toml, Cargo.toml, go.mod, composer.json
Highindex.js, main.py, app.py, src/index.*, cmd/main.go, src/main.*
Medium.env.example, .env.sample, config.example.*
MediumMakefile, Dockerfile, docker-compose.yml
MediumCONTRIBUTING.md, LICENSE, CHANGELOG.md (if exists, link don't duplicate)
Lowsrc/ or lib/ folder structure (top 2 levels only)

Use bash_tool to list the project structure:

find . -maxdepth 3 -not -path '*/node_modules/*' -not -path '*/.git/*' \
       -not -path '*/__pycache__/*' -not -path '*/dist/*' -not -path '*/build/*' \
       | sort | head -80

Also read the entry point file (first 60–80 lines) to understand what the app does.


Step 2 — Infer Project Intent

From what you've gathered, determine:

  • What does this project do? (in 1–2 plain sentences)
  • Who is it for? (CLI tool, library, web app, API service, script, etc.)
  • What's the tech stack? (language, framework, key deps)
  • How do you run it? (scripts in package.json, Makefile targets, CLI commands)
  • Are there environment variables? (from .env.example or config files)

If there's an existing partial README, read it and improve it — don't replace content that's already accurate or detailed.


Step 3 — Write the README

Use this section structure. Skip sections that don't apply. Don't add empty headings.

# Project Name

> One-line tagline describing what it does.

Brief paragraph (2–4 sentences) expanding on purpose and key use case.

## Features

- Bullet list of notable capabilities (skip if obvious or trivial)

## Requirements

- Runtime versions, OS requirements, required services (DB, Redis, etc.)

## Installation

​```bash
# Commands to install / clone / set up
​```

## Configuration

| Variable | Description | Default |
|----------|-------------|---------|
| `VAR_NAME` | What it controls | `value` |

(Only include if there are env vars or config files)

## Usage

​```bash
# Primary usage command(s)
​```

Include 2–3 real examples if the CLI/API has notable options.

## Project Structure

​```
src/
├── index.js       # Entry point
├── routes/        # Express route handlers
└── utils/         # Shared utilities
​```

(Only include if structure is non-obvious; keep to ~10 lines max)

## API Reference

Brief table or list of public exports / endpoints (only for libraries/APIs)

## Development

​```bash
# How to run in dev mode, run tests, lint
​```

## Contributing

Brief guide or link to CONTRIBUTING.md

## License

[MIT](LICENSE) — or whatever the LICENSE file says

Style Rules

  • Concrete over generic. Use actual project names, real command names, real env var names.
  • Code blocks for all commands. Never describe a command in prose if you can show it.
  • No filler. Don't write "This project is designed to..." or "Feel free to...".
  • Infer don't hallucinate. If you can't find the install command, say # TODO: add install command rather than guessing.
  • Short is fine. A 30-line README that's accurate beats a 200-line one with padding.
  • Badges are optional. Only add them if the project has CI/npm/PyPI that you can confirm.

Step 4 — Output

Write the final README as a README.md file in the project root (or /mnt/user-data/outputs/README.md if working in the container). Then call present_files so the user can download it.

If you're unsure about any section (e.g., license, test command), add a <!-- TODO: verify --> comment so the developer knows to review it.


Edge Cases

SituationWhat to do
No manifest file foundInfer stack from file extensions; note uncertainty
MonorepoDocument the root, then list packages with one-line descriptions
Existing README presentRead it first; improve/expand rather than replace
Private/internal toolSkip badges, keep contribution section minimal
Library/packageEmphasize API reference and import examples
CLI toolLead with usage examples; show --help output if inferable