技术文档写作(Technical Documentation)

Verified 入门 Starter 参考型 Reference ⚡ Claude Code 专属 ⚡ Claude Code Optimized
2 min read · 122 lines

README + API 文档 + ADR + 变更日志,专业技术文档写作全指南

技术文档写作(Technical Documentation)

概述

代码告诉机器做什么,文档告诉人类为什么。没有文档的项目,新人要花三倍时间上手;没有 README 的仓库,没人愿意尝试你的库。本技能覆盖日常开发中最常见的文档类型及其写作标准。

何时使用

  • 为开源项目编写 README
  • 撰写 API 接口文档
  • 记录架构决策(ADR)
  • 编写新人入职指南
  • 审查文档质量

文档类型总览

类型 目标读者 核心问题
README 首次访问者 这是什么?怎么用?
API 文档 集成开发者 怎么调用?参数是什么?
架构决策记录(ADR) 团队成员、未来维护者 为什么这样设计?
变更日志(Changelog) 用户、运维 这次发布改了什么?
入职指南 新团队成员 怎么搭建开发环境?

README 模板

一个完整的 README 应包含以下部分(按顺序):

  1. 项目名称 + 徽标(Badge)
  2. 一句话描述 — 用一句话说清楚项目是什么
  3. 快速开始(Quickstart) — 3 步以内跑起来
  4. 安装 — 详细安装步骤
  5. 使用方法 — 核心功能示例
  6. 配置 — 可配置项及默认值
  7. 贡献指南 — 如何参与开发
  8. 许可证 — 开源协议

原则:读者 30 秒内判断是否需要这个项目,3 分钟内跑通第一个示例。

API 文档结构

每个端点必须包含:

  • 端点路径和方法POST /api/v1/users
  • 请求参数:路径参数、查询参数、请求体(含类型和是否必填)
  • 请求示例:完整的 curl 或代码示例
  • 响应示例:成功响应 + 错误响应各一个
  • 错误码列表:可能返回的错误码及处理建议
  • 认证说明:是否需要认证、需要什么权限

架构决策记录(ADR)

格式(Architecture Decision Record):

# ADR-001: 选择 PostgreSQL 作为主数据库

## 状态(Status)
已采纳(Accepted)

## 背景(Context)
项目需要支持复杂查询、事务一致性和 JSON 数据存储...

## 决策(Decision)
采用 PostgreSQL 15,原因是...

## 后果(Consequences)
正面:强事务支持、JSON 查询能力...
负面:运维复杂度高于 SQLite...

ADR 的价值在于记录"为什么",而不是"是什么"。六个月后回头看代码,ADR 能解释当初的权衡。

写作原则

  1. 可扫描(Scannable) — 用标题、列表、表格组织内容,不写大段文字
  2. 示例优先(Example-first) — 先给例子,再解释原理
  3. 假设读者很忙 — 把最重要的信息放在最前面
  4. 测试你的示例 — 文档中的每个代码示例都必须能运行
  5. 展示输入和输出 — 代码示例同时展示输入数据和期望输出

代码示例规范

# 好的示例:展示输入和输出,使用真实数据
response = client.post("/api/v1/users", json={
    "name": "Alice Chen",
    "email": "alice@example.com"
})
# 输出:{"id": 42, "name": "Alice Chen", "status": "active"}

不要用 foobartest123 这类占位数据,用接近真实场景的数据。

文档维护

  • 文档即代码(Docs-as-Code) — 文档和代码放在同一个仓库,同一个 PR
  • 标注文档版本 — 文档对应哪个版本的 API / 软件
  • 链接到源码 — 关键概念链接到具体的代码文件
  • 定期审查 — 每次发版检查文档是否过期

必须做 / 禁止做

必须做(MUST DO):

  • 修改代码时同步更新文档
  • README 必须包含快速开始(Quickstart)部分
  • 文档中的代码示例必须经过测试
  • API 文档提供成功和失败两种响应示例

禁止做(MUST NOT):

  • 写大段不分节的文字(Wall of Text)
  • 使用专业术语却不解释
  • 让文档和实际实现脱节(文档说 v1,代码已经是 v3)
  • 只写"怎么用"不写"为什么这样设计"

相关技能 Related Skills