Technical writing expert for API documentation, README files, tutorials, changelog management, and developer documentation. Covers style guides, information architecture, versioning docs, OpenAPI/Swagger, and documentation-as-code. Activates for technical writing, API docs, README, changelog, tutorial writing, documentation, technical communication, style guide, OpenAPI, Swagger, developer docs.
View on GitHubanton-abyzov/specweave
sw-docs
January 25, 2026
Select agents to install to:
npx add-skill https://github.com/anton-abyzov/specweave/blob/main/plugins/specweave-docs/skills/technical-writing/SKILL.md -a claude-code --skill technical-writingInstallation paths:
.claude/skills/technical-writing/# Technical Writing Skill
**Self-contained technical documentation expertise for ANY user project.**
Expert in developer-focused documentation: READMEs, API references, tutorials, and changelogs.
---
## Core Documentation Types
### 1. README Files
**Essential Structure**:
```markdown
# Project Name
One-sentence description.
## Features
- Key feature 1
- Key feature 2
## Installation
```bash
npm install project-name
```
## Quick Start
```javascript
import { ProjectName } from 'project-name';
const instance = new ProjectName();
```
## Usage
[Basic example]
## API Reference
[Link or inline reference]
## Contributing
[Link to CONTRIBUTING.md]
## License
MIT
```
**Best Practices**:
- Lead with value (what problem solved?)
- Code examples > long explanations
- Progressive disclosure (quick start → advanced)
- Keep updated with code
### 2. API Documentation
**Function/Method Documentation**:
```typescript
/**
* Compress image with quality settings
*
* @param {string} input - Path to input image
* @param {CompressOptions} options - Compression options
* @param {number} options.quality - Quality 0-100 (default: 80)
* @param {string} options.format - Output format: jpeg|png|webp
*
* @returns {Promise<CompressResult>} Compression result with saved bytes
*
* @example
* const result = await compress('photo.jpg', { quality: 90 });
* console.log(`Saved ${result.savedBytes} bytes`);
*/
```
**REST API Documentation**:
```markdown
### POST /api/users
Create a new user.
**Request**:
```json
{
"email": "user@example.com",
"name": "John Doe"
}
```
**Response** (201 Created):
```json
{
"id": "uuid",
"email": "user@example.com",
"name": "John Doe",
"created": "2025-11-24T12:00:00Z"
}
```
**Errors**:
- 400: Invalid email format
- 409: Email already exists
```
### 3. Tutorials
**Structure**:
```markdown
# Tutorial: Build X in 10 Minutes
**You'll learn**:
- How to set up X
- Core concepts
- Build a working example
**Prerequisites**:
- Node.j