# readme-md
> Guides README creation and improvement with audience-matched templates. Use when writing READMEs for open source, personal, internal, or config projects, or when the user mentions documentation, README, or project setup.
- Author: Costantino Marcello
- Repository: costa-marcello/skillkit
- Version: 20260209170351
- Stars: 0
- Forks: 0
- Last Updated: 2026-02-09
- Source: https://github.com/costa-marcello/skillkit
- Web: https://mule.run/skillshub/@@costa-marcello/skillkit~readme-md:20260209170351
---
---
name: readme-md
description: Guides README creation and improvement with audience-matched templates. Use when writing READMEs for open source, personal, internal, or config projects, or when the user mentions documentation, README, or project setup.
context: fork
---
# Crafting Effective READMEs
## Overview
READMEs answer questions your audience will have. Different audiences need different information - a contributor to an OSS project needs different context than future-you opening a config folder.
**Always ask:** Who will read this, and what do they need to know?
## Quick Workflow
Copy this checklist:
```
README Progress:
- [ ] Task identified: Creating / Adding / Updating / Reviewing
- [ ] Audience identified: _____
- [ ] Project type: OSS / Personal / Internal / Config
- [ ] Template selected from templates/
- [ ] Draft complete
- [ ] Asked: "Anything else to highlight?"
```
## Process
### Step 1: Identify the Task
**Ask:** "What README task are you working on?"
| Task | When |
|------|------|
| **Creating** | New project, no README yet |
| **Adding** | Need to document something new |
| **Updating** | Capabilities changed, content is stale |
| **Reviewing** | Checking if README is still accurate |
### Step 2: Task-Specific Questions
**Creating initial README:**
1. What type of project? (see Project Types below)
2. What problem does this solve in one sentence?
3. What's the quickest path to "it works"?
4. Anything notable to highlight?
**Adding a section:**
1. What needs documenting?
2. Where should it go in the existing structure?
3. Who needs this info most?
**Updating existing content:**
1. What changed?
2. Read current README, identify stale sections
3. Propose specific edits
**Reviewing/refreshing:**
1. Read current README
2. Check against actual project state (package.json, main files, etc.)
3. Flag outdated sections
4. Update "Last reviewed" date if present
### Step 3: Always Ask
After drafting, ask: **"Anything else to highlight or include that I might have missed?"**
## Project Types
| Type | Audience | Key Sections | Template |
|------|----------|--------------|----------|
| **Open Source** | Contributors, users worldwide | Install, Usage, Contributing, License | `templates/oss.md` |
| **Personal** | Future you, portfolio viewers | What it does, Tech stack, Learnings | `templates/personal.md` |
| **Internal** | Teammates, new hires | Setup, Architecture, Runbooks | `templates/internal.md` |
| **Config** | Future you (confused) | What's here, Why, How to extend, Gotchas | `templates/xdg-config.md` |
**Ask the user** if unclear. Don't assume OSS defaults for everything.
## Essential Sections (All Types)
Every README needs at minimum:
1. **Name** - Self-explanatory title
2. **Description** - What + why in 1-2 sentences
3. **Usage** - How to use it (examples help)
## Examples
**Task:** Creating README for OSS CLI tool
**Before (typical first draft):**
```markdown
# mytool
A tool for doing stuff with files.
## Installation
npm install mytool
## Usage
mytool [options]
```
**After (audience-focused):**
```markdown
# mytool
Convert CSV files to JSON with one command. Handles messy data, encoding issues, and files up to 2GB.
## Quick Start
```bash
npm install -g mytool
mytool input.csv > output.json
```
## Common Use Cases
```bash
# Skip header row
mytool --skip-header data.csv
# Handle non-UTF8 encoding
mytool --encoding latin1 legacy.csv
```
```
**Why better:** Shows the problem it solves, demonstrates real scenarios, gives copy-paste commands.
**Task:** Updating README after adding new feature
**Before (buried in wall of text):**
```markdown
## Features
This tool does X, Y, Z. It also now supports authentication via OAuth which can be configured using environment variables or a config file.
```
**After (scannable, actionable):**
```markdown
## Features
- **X** - Does this
- **Y** - Does that
- **Z** - Does the other thing
- **OAuth auth** (new in v2.0) - See [Authentication](#authentication)
## Authentication
Set `MYTOOL_OAUTH_TOKEN` or add to `~/.mytoolrc`:
```yaml
auth:
provider: oauth
token: your-token
```
```
**Why better:** New feature is discoverable, has its own section, shows exactly how to use it.
**Task:** Config folder README (for future-you)
**Before (no README or unhelpful):**
```markdown
# Config
My config files.
```
**After (answers future-you's questions):**
```markdown
# Neovim Config
## What's Here
- `init.lua` - Entry point, loads everything else
- `lua/plugins/` - Plugin configs (lazy.nvim)
- `lua/keymaps.lua` - All custom keybindings
## Key Choices
- **Why lazy.nvim?** Fastest loader, good defaults
- **Why no LSP here?** Using Mason, see `lua/plugins/lsp.lua`
## Gotchas
- Run `:Lazy sync` after pulling changes
- `` is space (set in init.lua line 12)
```
**Why better:** Future-you at 2am will thank past-you for the "Gotchas" section.
## References
- `references/section-checklist.md` - Which sections to include by project type
- `references/style-guide.md` - Common README mistakes and prose guidance
- `references/using-references.md` - Guide to deeper reference materials