markdown-docs
Skill1 starsChanged 7 months agoMITView on GitHub
Markdown documentation standards for developer-facing and project documentation. Use when: writing or auditing a README, creating project documentation, structuring a docs/ folder, documenting design decisions, writing ADRs, linking documents for discoverability, or ensuring an existing project has adequate developer documentation.
- Installs packages
In this repository42 other files it gives its agents.
- accessibility-testingSkill
- alternatives-analysisSkill
- anomaly-detectionSkill
- api-designSkill
- async-messagingSkill
- caching-strategiesSkill
- chartsSkill
- cicdSkill
- code-reviewSkill
- commsSkill
- critical-feedbackSkill
- data-analysisSkill
- databaseSkill
- data-migrationsSkill
- data-visualizationSkill
- dependency-managementSkill
- dockerSkill
- error-handlingSkill
- feature-flagsSkill
- git-workflowSkill
- goalsSkill
- ide-setupSkill
- large-changeSkill
- logging-metricsSkill
- mcp-serverSkill
- meeting-agendasSkill
- okrsSkill
- presentationsSkill
- product-managementSkill
- prompt-writingSkill
- pythonSkill
- reclassificationSkill
- release-managementSkill
- retrospectivesSkill
- roadmap-planningSkill
- securitySkill
- stakeholder-commsSkill
- statisticsSkill
- status-updatesSkill
- testingSkill
- ticket-writingSkill
- typescriptSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
24 rules. About 0 are common, 17 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈17
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 36
Keep docs in-repo whenever possible.
- Distinctive: line 37
Use one canonical source per topic, then link instead of duplicating.
- Distinctive: line 38
Treat docs updates as part of the feature/fix definition of done.
- Distinctive: line 44
Every project must have a README at the repository root.
- Distinctive: line 91
No badge farming — only include badges that provide real signal (build status, coverage).
- Very specific: line 114
Every file in
docs/must be linked fromdocs/README.md: No orphan documents. - Distinctive: line 141
Write an ADR when:
- Distinctive: line 188
Every document must be reachable from the README:
- Very specific: line 202
Every file in docs/ is linked from docs/README.md
- Distinctive: line 205
No orphan documents — if it exists, it's linked from its parent index
- Very specific: line 215
Use ## for major sections, ### for subsections
- Very specific: line 216
Don't go deeper than ####
- Very specific: line 221
Use - for unordered lists
- Very specific: line 222
Use 1. for ordered steps
- Distinctive: line 224
Keep items parallel in grammar and length
- Distinctive: line 228
Always specify the language:
- Very specific: line 237
Use inline code for command names (ruff), file names (pyproject.toml), environment variables (APP_DATABASE_URL), and short expressions (X | …
- Distinctive: line 244
Use tables for structured comparisons or reference data
- Distinctive: line 250
Every link has two parts with different jobs:
- Distinctive: line 273
Use the canonical human-readable name
- Distinctive: line 276
Never expose raw IDs or URLs as display text
- Distinctive: line 279
Use relative paths for documents within the repository
- Distinctive: line 280
Use stable, ID-based URLs for external links when available
- Distinctive: line 291
Use blockquotes for important notes:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Markdown Documentation Standards
When to Use
- Writing or improving a project README
- Creating a
docs/folder structure - Documenting a design decision (ADR)
- Writing a guide for a significant feature
- Auditing an existing project for documentation gaps
- Establishing documentation conventions
Scope: This skill covers developer-facing docs (README, docs/, ADRs). For in-product explanatory UX, use the ui-design skill.
Core Principle
Documentation lives with the code. It is version-controlled, reviewed in PRs, and updated alongside the code it describes. The README is the entry point — everything else is one or two links away.
- Keep docs in-repo whenever possible.
- Use one canonical source per topic, then link instead of duplicating.
- Treat docs updates as part of the feature/fix definition of done.
README.md
Every project must have a README at the repository root.
Required Sections
# Project Name
One-sentence description of what this project does and why it exists.
## Overview
2-3 paragraphs describing the problem, key design choices, and what
someone should understand before working on this codebase.
## Quick Start
Minimum commands to get the project running locally:
git clone <repo>
cd <project>
npm install && npm run dev
## Usage
How to use the project — commands, endpoints, or screens.
## Local Development
Dependencies, run, test, and lint commands.
## Configuration
Table of environment variables with descriptions and defaults.
## Documentation
Links to docs/ contents: architecture, ADRs, runbooks.README Rules
- Keep it short — the README introduces and orients, it doesn't explain
everything. Link to
docs/for depth. - Quick Start must be copy-pasteable — every command must work on a fresh checkout.
- Update with every significant change — outdated install instructions are worse than none.
- No badge farming — only include badges that provide real signal (build status, coverage).
docs/ Folder Structure
docs/
├── README.md ← index linking to every document
├── architecture.md ← system architecture and data flows
├── concepts.md ← domain objects and terminology
├── runbooks/
│ ├── deploy.md
│ └── rollback.md
├── adr/
│ ├── README.md ← ADR index with status summaries
│ ├── 0001-use-dynamodb.md
│ └── 0002-oauth2-auth.md
└── changes/
└── v2.0-migration.mdEvery file in docs/ must be linked from docs/README.md. No orphan
documents.
docs/README.md Index Template
# Documentation
## Architecture
- [Architecture Overview](architecture.md)
- [Key Concepts](concepts.md)
## Runbooks
- [Deployment](runbooks/deploy.md)
- [Rollback](runbooks/rollback.md)
## Decisions
- [ADR Index](adr/README.md)
## Changes
- [Migration Guides](changes/)Architecture Decision Records (ADRs)
Write an ADR when:
- You chose one technology or approach over clear alternatives
- A decision is hard to reverse or expensive to change
- Future developers will wonder "why did they do it this way?"
ADR Template
# ADR 0001: Title of Decision
**Date**: YYYY-MM-DD
**Status**: Proposed | Accepted | Superseded | Deprecated
## Context
What is the problem or situation that requires a decision?
## Decision
What was decided and why.
## Alternatives Considered
| Option | Pros | Cons |
|--------|------|------|
| Option A | ... | ... |
| Option B | ... | ... |
| **Chosen** | ... | ... |
## Consequences
What follows from this decision — both positive and negative.ADR Status Values
| Status | Meaning |
Proposed | Under discussion, not yet accepted |
Accepted | Decision is approved and in effect |
Superseded | Replaced by a later ADR |
Deprecated | No longer recommended for new work |
Linking and Discoverability
Every document must be reachable from the README:
README.md
→ docs/README.md (index)
→ docs/architecture.md
→ docs/adr/README.md
→ docs/adr/0001-use-dynamodb.md
→ docs/runbooks/deploy.md
→ CHANGELOG.mdLink rules
- Every file in
docs/is linked fromdocs/README.md docs/README.mdis linked from the top-level README- ADRs are catalogued in
docs/adr/README.md - No orphan documents — if it exists, it's linked from its parent index
- Reference other docs with links, don't copy content
Markdown Formatting
Structure
- One
# H1per document (the title) - Use
##for major sections,###for subsections - Don't go deeper than
#### - Separate headings from preceding content with a blank line
Lists
- Use
-for unordered lists - Use
1.for ordered steps - Limit nesting to 2 levels
- Keep items parallel in grammar and length
Code blocks
Always specify the language:
```python
def greet(name: str) -> str:
return f"Hello, {name}"
```Use inline code for command names (ruff), file names (pyproject.toml),
environment variables (APP_DATABASE_URL), and short expressions (X | Y).
Tables
- Include a header row with
---separators - Right-align numeric columns with
---: - Use tables for structured comparisons or reference data
Links
Display text vs URL
Every link has two parts with different jobs:
| Part | Role | Rule |
| Display text | Human-readable label | Friendly, descriptive, never a raw ID or "click here" |
| URL | Machine-readable address | Stable, ID-based when possible, relative for repo links |
Good links
[Architecture Overview](docs/architecture.md)
[GitHub Issues](https://github.com/owner/repo/issues)Bad links
[click here](docs/architecture.md)
[docs/architecture.md](docs/architecture.md)
https://github.com/owner/repo/issuesDisplay text rules:
- Use the canonical human-readable name
- Match detail to context — "architecture doc" inline vs "Architecture Overview" in an index
- Never expose raw IDs or URLs as display text
URL rules:
- Use relative paths for documents within the repository
- Use stable, ID-based URLs for external links when available
- Validate that links resolve before committing
Line length and whitespace
- Hard-wrap prose at 100 characters where practical
- Separate paragraphs and sections with a blank line
- No trailing whitespace
Callouts
Use blockquotes for important notes:
> **Note:** This only applies to production environments.
> **Warning:** This operation is destructive and cannot be undone.Change Documents
For major changes, write a focused guide in docs/changes/:
# Migrating from v1 to v2
## What Changed
Summary of breaking changes.
## Steps
### 1. Update Authentication
**Before (v1):**
GET /api/users
X-API-Key: your-key
**After (v2):**
GET /api/users
Authorization: Bearer your-tokenRequired for every major version release. Recommended for significant changes that alter development workflows, even if not breaking.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

