Skip to content
Back to skills

Readme Generator

ASecurity

Generate and improve README files for Rust (libraries, CLI tools, services), TypeScript/JavaScript (npm) and Python (PyPI) projects, applying ecosystem conventions: badges, installation sections, MSRV, feature flags.

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsjavascripttypescriptpythonrustgojavabashgitapisecurity

Works with

  • terminal
  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 7 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add bug-ops/claude-plugins --skill readme-generator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Readme Generator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Readme Generator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bug-ops-readme-generator/badge)](https://www.skillsdirectory.com/skills/bug-ops-readme-generator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: readme-generator
description: "Generate and improve README files for Rust (libraries, CLI tools, services), TypeScript/JavaScript (npm) and Python (PyPI) projects, applying ecosystem conventions: badges, installation sections, MSRV, feature flags."
when_to_use: "'create readme', 'generate readme', 'write readme', 'improve readme', 'update readme', 'fix readme', 'readme for this project'."
---

# README Generator

Generate professional README files or improve existing ones. Applies ecosystem-specific best practices from 90+ curated examples.

> [!IMPORTANT]
> Always detect project type FIRST before generating. Wrong template = wrong conventions.

## Quick Reference

| Project Type | Detection | Key Requirements |
|-------------|-----------|------------------|
| Rust library | `Cargo.toml` + `src/lib.rs` | crates.io badge, docs.rs, MSRV, feature flags |
| Rust CLI | `Cargo.toml` + `src/main.rs` | Multi-platform install (cargo, brew, apt, etc.) |
| TypeScript | `package.json` + `tsconfig.json` | npm/yarn/pnpm/bun tabs, bundle size badge |
| Python | `pyproject.toml` or `setup.py` | pip/poetry/conda, Python versions badge |

## GitHub Callouts

> [!IMPORTANT]
> Use GitHub callouts in generated READMEs to highlight critical information. They render beautifully on GitHub. Note: callouts are GitHub-specific — see ecosystem reference files for per-platform restrictions.

### Callout Types

Use these callout blocks in generated README files:

```markdown
> [!NOTE]
> Useful information that users should know, even when skimming content.

> [!TIP]
> Helpful advice for doing things better or more easily.

> [!IMPORTANT]
> Key information users need to know to achieve their goal.

> [!WARNING]
> Urgent info that needs immediate user attention to avoid problems.

> [!CAUTION]
> Advises about risks or negative outcomes of certain actions.
```

### When to Use Each Callout

| Callout | Use For | Example |
|---------|---------|---------|
| `[!NOTE]` | Additional context, FYI | "This crate re-exports types from X" |
| `[!TIP]` | Best practices, recommendations | "Use `--release` for production builds" |
| `[!IMPORTANT]` | Breaking changes, requirements | "Requires Rust 1.70+" |
| `[!WARNING]` | Potential issues, deprecations | "This API will change in v2.0" |
| `[!CAUTION]` | Dangerous operations, data loss | "This command deletes all data" |

### Callout Placement in README

Place callouts strategically:

1. **After Installation** — compatibility warnings, system requirements
2. **In Usage section** — tips for common patterns, important gotchas  
3. **Before Breaking Changes** — migration notes, deprecation warnings
4. **In Configuration** — dangerous options, security considerations

### Examples in Generated READMEs

**Rust library with MSRV:**

```markdown
## Installation

\`\`\`toml
[dependencies]
my-crate = "1.0"
\`\`\`

> [!IMPORTANT]
> Requires Rust 1.70 or later. See [MSRV policy](#msrv-policy).
```

**CLI tool with destructive command:**

```markdown
## Usage

\`\`\`bash
my-tool clean --all
\`\`\`

> [!CAUTION]
> The `--all` flag removes ALL cached data including user preferences. This cannot be undone.
```

**Library with async feature:**

```markdown
## Features

> [!TIP]
> Enable the `async` feature for non-blocking I/O. Recommended for high-throughput applications.

\`\`\`toml
my-crate = { version = "1.0", features = ["async"] }
\`\`\`
```

**Python package with version requirement:**

```markdown
## Installation

\`\`\`bash
pip install my-package
\`\`\`

> [!WARNING]
> Python 3.8 reaches end-of-life in October 2024. Consider upgrading to Python 3.10+.
```

## Workflow

### 1. Detect Project Type

```bash
# Check for project markers
ls -la Cargo.toml package.json pyproject.toml setup.py tsconfig.json 2>/dev/null
```

Decision tree:

- `Cargo.toml` exists → Rust project
  - Has `[[bin]]` or `src/main.rs` → CLI tool (use `references/rust-cli.md`)
  - Otherwise → Library (use `references/rust-library.md`)
- `package.json` exists → JavaScript/TypeScript
  - `tsconfig.json` exists → TypeScript (use `references/typescript.md`)
  - Otherwise → JavaScript (use `references/typescript.md`)
- `pyproject.toml` or `setup.py` → Python (use `references/python.md`)

### 2. Gather Project Context

> [!TIP]
> Extract metadata from project files — don't ask the user for info that's already in Cargo.toml/package.json.

Extract from project files:

**Rust:**

```bash
# Get package info
grep -E "^name|^version|^description|^license|^rust-version" Cargo.toml
# Get features
grep -A 50 "^\[features\]" Cargo.toml | head -50
# Check for binary
grep -E "^\[\[bin\]\]" Cargo.toml || ls src/main.rs 2>/dev/null
```

**TypeScript/JavaScript:**

```bash
# Get package info
cat package.json | jq '{name, version, description, license, keywords}'
# Check for types
ls src/*.ts tsconfig.json 2>/dev/null
```

**Python:**

```bash
# From pyproject.toml
grep -E "^name|^version|^description|^license" pyproject.toml
# Or from setup.py
grep -E "name=|version=|description=" setup.py
```

### 3. Load Template

After detecting project type, read the appropriate reference file:

- Rust library → Read `references/rust-library.md`
- Rust CLI → Read `references/rust-cli.md`
- TypeScript/JavaScript → Read `references/typescript.md`
- Python → Read `references/python.md`

### 4. Generate README

> [!WARNING]
> Never use placeholder text like `[TODO]` or `<description>` in final output. Extract real values or ask user.

Apply the template structure. Essential sections in order:

1. **Hero section** (required)
   - Project name as H1
   - One-line description (from package metadata)
   - Badge row (ecosystem-specific)

2. **Visual hook** (highly recommended)
   - GIF/screenshot demo if exists in `assets/`, `docs/`, or `images/`
   - Terminal recording for CLI tools

3. **Installation** (required)
   - Ecosystem-appropriate commands
   - Multiple package managers for CLI tools

4. **Usage/Examples** (required)
   - Runnable code snippets
   - Common use cases

5. **Features** (recommended)
   - Bullet list of key capabilities

6. **API/Configuration** (if applicable)
   - For libraries: key types and functions
   - For CLI: command-line arguments
   - For services: environment variables

7. **Contributing** (recommended)
   - Link to CONTRIBUTING.md if exists
   - Basic guidelines otherwise

8. **License** (required)
   - License name with link to LICENSE file

### 5. Improve Existing README

> [!NOTE]
> When improving, preserve existing custom sections and contribution acknowledgments. Don't overwrite user's content.

When improving an existing README:

1. **Audit current state:**

   ```bash
   cat README.md
   ```

2. **Check against requirements:**
   - Missing essential sections?
   - Outdated badges?
   - No code examples?
   - Wall of text without structure?

3. **Common improvements:**
   - Add missing badges
   - Add installation section if missing
   - Add usage examples if missing
   - Break up long paragraphs
   - Add table of contents if >500 words
   - Update outdated version numbers

4. **Preserve existing content:**
   - Keep custom sections
   - Maintain existing links
   - Preserve contribution history acknowledgments

## Badge Reference

See `references/badges.md` for complete badge syntax by ecosystem.

Quick reference:

```markdown
<!-- Rust -->
[![Crates.io](https://img.shields.io/crates/v/CRATE)](https://crates.io/crates/CRATE)
[![docs.rs](https://img.shields.io/docsrs/CRATE)](https://docs.rs/CRATE)

<!-- TypeScript/npm -->
[![npm](https://img.shields.io/npm/v/PACKAGE)](https://www.npmjs.com/package/PACKAGE)
[![Bundle Size](https://img.shields.io/bundlephobia/minzip/PACKAGE)](https://bundlephobia.com/package/PACKAGE)

<!-- Python -->
[![PyPI](https://img.shields.io/pypi/v/PACKAGE)](https://pypi.org/project/PACKAGE)
[![Python](https://img.shields.io/pypi/pyversions/PACKAGE)](https://pypi.org/project/PACKAGE)
```

## Quality Checklist

Before completing, verify:

- [ ] One-line description is clear and specific
- [ ] Badges are valid and ecosystem-appropriate
- [ ] Installation commands are copy-pasteable
- [ ] At least one runnable code example
- [ ] License is specified
- [ ] No broken links
- [ ] No placeholder text remaining
- [ ] **Callouts used for warnings, tips, and important notes** (GitHub/crates.io only — avoid for PyPI and npm)

## Anti-patterns to Avoid

> [!CAUTION]
> These mistakes make READMEs significantly worse. Check against this list before completing.

- Wall of text without headers
- Generic descriptions ("A tool for doing things")
- Missing installation section
- No code examples
- Outdated badges/version numbers
- Excessive badges (>6 is usually too many)
- TOC for short READMEs (<300 words)

Files in this skill

  • SKILL.md8.6 KB
  • references/badges.md6.9 KB
  • references/examples.md5.7 KB
  • references/python.md7.3 KB
  • references/rust-cli.md6 KB
  • references/rust-library.md4.2 KB
  • references/typescript.md6.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…