agentleFS
michaelsvanbeekmichaelsvanbeek/personal-agent-skills/skills/markdown-docs/SKILL.md

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

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
  1. Distinctive:

    Keep docs in-repo whenever possible.

    line 36
  2. Distinctive:

    Use one canonical source per topic, then link instead of duplicating.

    line 37
  3. Distinctive:

    Treat docs updates as part of the feature/fix definition of done.

    line 38
  4. Distinctive:

    Every project must have a README at the repository root.

    line 44
  5. Distinctive:

    No badge farming — only include badges that provide real signal (build status, coverage).

    line 91
  6. Very specific:

    Every file in docs/ must be linked from docs/README.md: No orphan documents.

    line 114
  7. Distinctive:

    Write an ADR when:

    line 141
  8. Distinctive:

    Every document must be reachable from the README:

    line 188
  9. Very specific:

    Every file in docs/ is linked from docs/README.md

    line 202
  10. Distinctive:

    No orphan documents — if it exists, it's linked from its parent index

    line 205
  11. Very specific:

    Use ## for major sections, ### for subsections

    line 215
  12. Very specific:

    Don't go deeper than ####

    line 216
  13. Very specific:

    Use - for unordered lists

    line 221
  14. Very specific:

    Use 1. for ordered steps

    line 222
  15. Distinctive:

    Keep items parallel in grammar and length

    line 224
  16. Distinctive:

    Always specify the language:

    line 228
  17. Very specific:

    Use inline code for command names (ruff), file names (pyproject.toml), environment variables (APP_DATABASE_URL), and short expressions (X | …

    line 237
  18. Distinctive:

    Use tables for structured comparisons or reference data

    line 244
  19. Distinctive:

    Every link has two parts with different jobs:

    line 250
  20. Distinctive:

    Use the canonical human-readable name

    line 273
  21. Distinctive:

    Never expose raw IDs or URLs as display text

    line 276
  22. Distinctive:

    Use relative paths for documents within the repository

    line 279
  23. Distinctive:

    Use stable, ID-based URLs for external links when available

    line 280
  24. Distinctive:

    Use blockquotes for important notes:

    line 291

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.md

Every 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

StatusMeaning
ProposedUnder discussion, not yet accepted
AcceptedDecision is approved and in effect
SupersededReplaced by a later ADR
DeprecatedNo 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.md

Link rules

  • Every file in docs/ is linked from docs/README.md
  • docs/README.md is 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 # H1 per 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:

PartRoleRule
Display textHuman-readable labelFriendly, descriptive, never a raw ID or "click here"
URLMachine-readable addressStable, 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/issues

Display 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-token

Required for every major version release. Recommended for significant changes that alter development workflows, even if not breaking.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.