| name | documentation |
| description | Write effective technical documentation including READMEs, API docs, architecture decisions, and inline code documentation. |
| triggers | ["/documentation","/docs"] |
Technical Documentation Writing
This skill guides you through creating effective technical documentation that helps users understand, use, and contribute to your software.
When to use this skill
Use this skill when you need to:
- Write README files for projects
- Document APIs and interfaces
- Create architecture documentation
- Write inline code documentation
- Maintain project wikis or knowledge bases
Prerequisites
- Understanding of the target audience
- Knowledge of the system being documented
- Familiarity with documentation tools (Markdown, Sphinx, Docusaurus)
- Access to code and subject matter experts
Guidelines
Documentation Types
README.md - Project entry point
- Project description and purpose
- Installation instructions
- Quick start guide
- Links to detailed documentation
- Contribution guidelines
API Documentation - Interface reference
- Endpoint descriptions
- Request/response examples
- Authentication details
- Error codes and handling
Architecture Decision Records (ADRs) - Design decisions
- Context and problem statement
- Decision drivers
- Considered options
- Decision outcome
- Consequences
Code Comments - Inline explanations
- Why, not what (code shows what)
- Complex algorithms
- Non-obvious behavior
- Public API documentation
README Structure
# Project Name
Brief description of what the project does and its main purpose.
## Features
- Core feature 1
- Core feature 2
- Core feature 3
## Installation
```bash
# Clone the repository
git clone https://github.com/user/repo.git
# Install dependencies
npm install
# Configure environment
cp .env.example .env
Quick Start
npm start
Visit http://localhost:3000 to see the application.
Documentation
License
MIT
### API Documentation
**OpenAPI/Swagger Example**
```yaml
openapi: 3.0.0
info:
title: Orders API
version: 1.0.0
paths:
/orders:
post:
summary: Create a new order
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [customer_id, items]
properties:
customer_id:
type: integer
description: ID of the customer
items:
type: array
items:
type: object
properties:
product_id:
type: integer
quantity:
type: integer
responses:
201:
description: Order created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
Code Documentation
Docstring Standards
def process_payment(order_id: int, amount: Decimal) -> PaymentResult:
"""
Process a payment for the given order.
Args:
order_id: The unique identifier of the order
amount: The payment amount (must be positive)
Returns:
PaymentResult containing transaction_id and status
Raises:
OrderNotFoundError: If the order doesn't exist
InvalidAmountError: If amount is negative or zero
PaymentGatewayError: If the payment processor fails
Example:
>>> result = process_payment(123, Decimal("99.99"))
>>> print(result.status)
'success'
"""
Documentation Principles
- Document intent, not implementation
- Keep examples runnable
- Update docs with code changes
- Use consistent terminology
Architecture Documentation
C4 Model Approach
- Context Diagram - System in its environment
- Container Diagram - High-level tech stack
- Component Diagram - Major building blocks
- Code Diagram - Detailed implementation
ADR Template
# ADR 001: Use PostgreSQL for Primary Database
## Status
Accepted
## Context
We need a relational database for our application data.
## Decision
We will use PostgreSQL as our primary database.
## Consequences
- Team familiarity with PostgreSQL
- ACID compliance for data integrity
- Need to manage database migrations
Documentation Best Practices
Writing Style
- Use active voice
- Be concise and specific
- Include code examples
- Use diagrams for complex concepts
- Define acronyms on first use
Maintenance
- Review docs with code reviews
- Version documentation with code
- Track documentation issues
- Regular cleanup of outdated content
Accessibility
- Use semantic Markdown
- Add alt text to images
- Ensure good contrast in diagrams
- Provide text alternatives
Examples
See the examples/ directory for:
readme-template.md - Complete README template
api-docs-example/ - API documentation samples
adr-template.md - Architecture Decision Record format
style-guide.md - Documentation style guidelines
References