home / skills / nilecui / skillsbase / documentation-writing

documentation-writing skill

/.cursor/skills/documentation-writing

This skill writes clear, runnable documentation in docs/ using the Eight Rules and Diataxis to ensure discoverable, linked, and up-to-date content.

npx playbooks add skill nilecui/skillsbase --skill documentation-writing

Review the files below or copy the command above to add this skill to your agents.

Files (16)
SKILL.md
5.7 KB
---
name: documentation-writing
version: 1.0.0
description: Writing clear, discoverable software documentation following the Eight Rules and Diataxis framework. Use when creating README files, API docs, tutorials, how-to guides, or any project documentation. Automatically enforces docs/ location, linking requirements, and runnable examples.
source_urls:
  - https://diataxis.fr/
  - https://www.writethedocs.org/guide/writing/docs-principles/
  - https://github.blog/developer-skills/documentation-done-right-a-developers-guide/
auto_activates:
  - "write documentation"
  - "create docs"
  - "document this feature"
  - "create a README"
  - "write a tutorial"
  - "api docs"
  - "how-to guide"
token_budget: 1800
---

# Documentation Writing Skill

## Purpose

Creates high-quality, discoverable documentation following the Eight Rules and Diataxis framework. Ensures all docs are properly located, linked, and contain real runnable examples.

## When I Activate

I load automatically when you mention:

- "write documentation" or "create docs"
- "document this feature/module/API"
- "create a README" or "write a tutorial"
- "explain how this works"
- Any request to create markdown documentation

## Core Rules (MANDATORY)

### The Eight Rules

1. **Location**: All docs in `docs/` directory
2. **Linking**: Every doc linked from at least one other doc
3. **Simplicity**: Plain language, remove unnecessary words
4. **Real Examples**: Runnable code, not "foo/bar" placeholders
5. **Diataxis**: One doc type per file (tutorial/howto/reference/explanation)
6. **Scanability**: Descriptive headings, table of contents for long docs
7. **Local Links**: Relative paths, context with links
8. **Currency**: Delete outdated docs, include update metadata

### What Stays OUT of Docs

**Never put in `docs/`:**

- Status reports or progress updates
- Test results or benchmarks
- Meeting notes or decisions
- Plans with dates
- Point-in-time snapshots

**Where temporal info belongs:**

- Test results → CI logs, GitHub Actions
- Status updates → GitHub Issues
- Progress → Pull Request descriptions
- Decisions → Commit messages

## Quick Start

### Creating a New Document

```markdown
# [Feature Name]

Brief one-sentence description of what this is.

## Quick Start

Minimal steps to get started (3-5 steps max).

## Contents

- [Configuration](#configuration)
- [Usage](#usage)
- [Troubleshooting](#troubleshooting)

## Configuration

Step-by-step setup with real examples.

## Usage

Common use cases with runnable code.

## Troubleshooting

Common problems and solutions.
```

### Document Types (Diataxis)

| Type        | Purpose       | Location          | User Question           |
| ----------- | ------------- | ----------------- | ----------------------- |
| Tutorial    | Learning      | `docs/tutorials/` | "Teach me how"          |
| How-To      | Doing         | `docs/howto/`     | "Help me do X"          |
| Reference   | Information   | `docs/reference/` | "What are the options?" |
| Explanation | Understanding | `docs/concepts/`  | "Why is it this way?"   |

## Workflow

### Step 1: Determine Document Type

Ask: What is the reader trying to accomplish?

- Learning something new → Tutorial
- Solving a specific problem → How-To
- Looking up details → Reference
- Understanding concepts → Explanation

### Step 2: Choose Location

```
docs/
├── tutorials/     # Learning-oriented
├── howto/         # Task-oriented
├── reference/     # Information-oriented
├── concepts/      # Understanding-oriented
└── index.md       # Links to all docs
```

### Step 3: Write with Examples

Every concept needs a runnable example:

```python
# Example: Analyze file complexity
from amplihack import analyze

result = analyze("src/main.py")
print(f"Complexity: {result.score}")
# Output: Complexity: 12.5
```

### Step 4: Link from Index

Add entry to `docs/index.md`:

```markdown
- [New Feature Guide](./howto/new-feature.md) - How to configure X
```

### Step 5: Validate

Checklist before completion:

- [ ] File in `docs/` directory
- [ ] Linked from index or parent doc
- [ ] No temporal information
- [ ] All examples tested
- [ ] Follows one Diataxis type

## Navigation Guide

### When to Read Supporting Files

**reference.md** - Read when you need:

- Complete frontmatter specification
- Detailed Diataxis type definitions
- Markdown style conventions
- Documentation review checklist

**examples.md** - Read when you need:

- Full document templates for each type
- Real-world documentation examples
- Before/after improvement examples
- Complex documentation patterns

## Anti-Patterns to Avoid

| Anti-Pattern       | Why It's Bad  | Better Approach                |
| ------------------ | ------------- | ------------------------------ |
| "Click here" links | No context    | "See [auth config](./auth.md)" |
| foo/bar examples   | Not realistic | Use real project code          |
| Wall of text       | Hard to scan  | Use headings and bullets       |
| Orphan docs        | Never found   | Link from index                |
| Status in docs     | Gets stale    | Use Issues/PRs                 |

## Retcon Documentation Exception

When writing documentation BEFORE implementation (document-driven development):

````markdown
# [PLANNED - Implementation Pending]

This document describes the intended behavior of Feature X.

## Planned Interface

```python
# [PLANNED] - This API will be implemented
def future_function(input: str) -> Result:
    """Process input and return result."""
    pass
```
````

Once implemented, remove the `[PLANNED]` markers and update with real examples.

```

---

**Full reference**: See [reference.md](./reference.md) for complete specification.
**Templates**: See [examples.md](./examples.md) for copy-paste templates.
```

Overview

This skill produces clear, discoverable software documentation following the Eight Rules and the Diataxis framework. It enforces placement in docs/, requires linking and runnable examples, and structures files by purpose so users can find the right content quickly. Use it to create READMEs, API docs, tutorials, how-tos, and reference pages that are consistent and testable.

How this skill works

The skill inspects your repository and ensures all documentation files live under docs/ with one Diataxis type per file (tutorial, how-to, reference, explanation). It validates that each document is linked from an index or parent doc, uses relative links, contains runnable code examples, and omits temporal or status content. It can generate templates, add entries to docs/index.md, and produce a final checklist to validate currency, scanability, and example execution.

When to use it

  • Creating a new README or project overview
  • Writing API reference pages or configuration docs
  • Authoring tutorials or step-by-step how-tos
  • Converting ad-hoc notes into discoverable docs under docs/
  • Validating documentation before release or pull request

Best practices

  • Place every doc in the appropriate docs/ subfolder (tutorials, howto, reference, concepts)
  • Follow Diataxis: one purpose per file and make the user question clear up front
  • Include short Quick Start with 3–5 steps and at least one runnable example
  • Use descriptive headings, a table of contents for long pages, and relative links
  • Avoid temporal content; put progress, tests, and decisions in Issues/CI/commits

Example use cases

  • Generate a README with Quick Start, Configuration, Usage, and Troubleshooting sections and add it to docs/index.md
  • Turn a feature spec into a How-To with runnable code snippets and configuration examples
  • Create an API reference page with examples that run in CI and link back to tutorials
  • Convert a large explainer into a concise concepts page and link to related how-tos and references

FAQ

How do I choose the right Diataxis type?

Ask what the reader wants: learn (tutorial), do (how-to), look up details (reference), or understand (explanation). Place the file in the matching docs/ subfolder.

What counts as a runnable example?

Code that can be copied and executed with real inputs and outputs, not placeholders. Prefer small, self-contained snippets and include expected output or test cases.