技术文档编写技能,涵盖 API 文档、架构文档、部署指南和各种技术写作最佳实践。使用此技能创建技术文档、编写 API 文档、创建架构设计文档,或需要部署和运维手册模板时使用。
Install
npx skillscat add projanvil/mindforge/skills-zh-cn-tech-documentation Install via the SkillsCat registry.
SKILL.md
技术文档编写技能
技术文档编写技能库,提供全面的技术文档写作方法论和模板。
概述
这是一个专注于技术文档编写的综合性技能模块,涵盖各类技术文档的编写规范、模板和最佳实践,帮助团队产出高质量、易理解、易维护的技术文档。
核心能力
1. API文档
- OpenAPI/Swagger规范
- RESTful API文档
- GraphQL文档
- gRPC接口文档
- API变更日志
- 认证授权说明
2. 架构文档
- 架构设计文档 (Architecture Design Document)
- 架构决策记录 (Architecture Decision Records, ADR)
- 系统架构图 (C4模型、UML)
- 技术选型报告
- 架构演进路线图
3. 详细设计文档
- 模块设计文档
- 数据库设计文档
- 接口设计文档
- 算法设计说明
- 时序图/流程图
4. 部署运维文档
- 部署手册
- 运维手册
- 故障处理手册
- 监控告警配置
- 性能优化指南
- 备份恢复流程
5. 用户手册
- 产品使用手册
- 快速开始指南
- 常见问题FAQ
- 故障排查指南
- 最佳实践
6. 开发者文档
- 贡献指南 (CONTRIBUTING.md)
- 代码规范
- 开发环境搭建
- 测试指南
- 发布流程
7. 项目管理文档
- 项目计划
- 需求文档
- 测试计划
- 发布说明 (Release Notes)
- 变更日志 (CHANGELOG)
8. 知识库文档
- 技术博客
- 案例分析
- 问题总结
- 学习笔记
文档编写原则
1. 5C原则
- Clear (清晰): 语言简洁,逻辑清晰
- Concise (简洁): 避免冗余,直击要点
- Complete (完整): 信息全面,覆盖所需
- Correct (正确): 内容准确,经过验证
- Consistent (一致): 风格统一,术语规范
2. 读者导向
- 了解目标读者(开发者、运维、产品、用户)
- 使用读者熟悉的语言和概念
- 提供不同层次的信息(概览→详细)
- 包含实际示例和最佳实践
3. 结构化
- 清晰的层次结构
- 统一的格式和风格
- 目录和导航
- 交叉引用
4. 可维护性
- 版本控制
- 变更记录
- 定期审查和更新
- 反馈机制
文档模板
API文档模板
# API文档
## 概述
简要描述API的用途和功能
## 基础信息
- **Base URL**: `https://api.example.com/v1`
- **认证方式**: Bearer Token
- **数据格式**: JSON
- **字符编码**: UTF-8
## 认证
### 获取Token
```http
POST /auth/token
Content-Type: application/json
{
"username": "user@example.com",
"password": "password"
}
```
**响应**:
```json
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 3600
}
```
## 接口列表
### 用户管理
#### 创建用户
**请求**:
```http
POST /users
Authorization: Bearer {token}
Content-Type: application/json
{
"email": "user@example.com",
"name": "John Doe",
"role": "user"
}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| email | string | 是 | 用户邮箱,需唯一 |
| name | string | 是 | 用户姓名 |
| role | string | 否 | 用户角色,默认user |
**响应**: `201 Created`
```json
{
"id": 123,
"email": "user@example.com",
"name": "John Doe",
"role": "user",
"created_at": "2024-12-16T10:00:00Z"
}
```
**错误响应**:
- `400 Bad Request` - 参数错误
- `401 Unauthorized` - 未认证
- `409 Conflict` - 邮箱已存在
```json
{
"error": {
"code": "EMAIL_EXISTS",
"message": "Email already registered",
"field": "email"
}
}
```
## 错误码
| 错误码 | HTTP状态 | 说明 |
|--------|----------|------|
| EMAIL_EXISTS | 409 | 邮箱已注册 |
| INVALID_TOKEN | 401 | Token无效 |
| RATE_LIMIT_EXCEEDED | 429 | 请求过于频繁 |
## 限流规则
- 每用户 100 请求/分钟
- 超限返回 429 状态码
## 变更日志
### v1.1.0 (2024-12-16)
- 新增用户角色管理接口
- 优化Token过期机制
### v1.0.0 (2024-12-01)
- 初始版本发布架构设计文档模板
# 架构设计文档
## 文档信息
- **项目名称**: [项目名]
- **文档版本**: 1.0
- **编写日期**: 2024-12-16
- **作者**: [姓名]
- **审阅者**: [姓名]
## 1. 概述
### 1.1 背景
[项目背景和目标]
### 1.2 目标读者
- 开发团队
- 架构师
- 运维团队
### 1.3 术语表
| 术语 | 说明 |
|------|------|
| API | Application Programming Interface |
| QPS | Queries Per Second |
## 2. 需求分析
### 2.1 功能性需求
1. [需求1]
2. [需求2]
### 2.2 非功能性需求
- **性能**: API响应时间 < 200ms
- **可用性**: 99.9% SLA
- **扩展性**: 支持水平扩展
### 2.3 约束条件
- 预算: $10,000/月
- 时间: 3个月开发周期
- 团队: 5人开发团队
## 3. 架构设计
### 3.1 架构风格
选择微服务架构,原因:
- 独立部署需求
- 不同模块有不同的扩展需求
- 多团队并行开发
### 3.2 系统架构图
```
┌─────────┐
│ Client │
└────┬────┘
│
↓
┌─────────────┐
│ API Gateway │
└──────┬──────┘
│
┌───┴───┬─────────┐
↓ ↓ ↓
┌─────┐ ┌─────┐ ┌─────┐
│Svc A│ │Svc B│ │Svc C│
└──┬──┘ └──┬──┘ └──┬──┘
↓ ↓ ↓
┌─────┐ ┌─────┐ ┌─────┐
│ DB │ │Cache│ │ MQ │
└─────┘ └─────┘ └─────┘
```
### 3.3 组件说明
#### API Gateway
- **技术**: Kong
- **职责**:
- 请求路由
- 认证授权
- 限流
- **部署**: 2个实例
## 4. 技术选型
| 组件 | 技术 | 理由 |
|------|------|------|
| 后端框架 | Spring Boot | 团队熟悉,生态完善 |
| 数据库 | PostgreSQL | 需要ACID,复杂查询 |
| 缓存 | Redis | 高性能,持久化选项 |
## 5. 数据设计
### 5.1 数据模型
```sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
name VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
### 5.2 数据流
```
Write: Client → Service → DB → Cache (async)
Read: Client → Service → Cache → DB (if miss)
```
## 6. 接口设计
### 6.1 内部接口
- gRPC用于服务间通信
- Protocol Buffers定义接口
### 6.2 外部接口
- RESTful API
- OpenAPI 3.0规范
## 7. 安全设计
### 7.1 认证授权
- OAuth 2.0 + JWT
- RBAC权限模型
### 7.2 数据安全
- TLS 1.3传输加密
- AES-256存储加密
## 8. 部署架构
### 8.1 环境规划
- Dev: 单节点
- Test: 小规模集群
- Prod: 多AZ部署
### 8.2 容器化
- Docker容器
- Kubernetes编排
## 9. 监控运维
### 9.1 监控指标
- 系统指标: CPU, Memory, Disk
- 应用指标: QPS, 响应时间, 错误率
- 业务指标: 订单量, 活跃用户
### 9.2 日志
- ELK Stack
- 日志保留30天
## 10. 风险评估
| 风险 | 概率 | 影响 | 应对措施 |
|------|------|------|----------|
| 性能瓶颈 | 中 | 高 | 压测验证,缓存优化 |
| 安全漏洞 | 低 | 高 | 安全审计,渗透测试 |
## 11. 架构演进
### Phase 1: MVP (2个月)
- 核心功能
- 单region部署
### Phase 2: 优化 (1个月)
- 性能优化
- 监控完善
### Phase 3: 扩展
- 多region
- 高级功能
## 附录
### A. 参考文档
- [技术选型报告](./tech-selection.md)
- [API文档](./api-docs.md)
### B. 变更记录
| 版本 | 日期 | 变更内容 | 作者 |
|------|------|----------|------|
| 1.0 | 2024-12-16 | 初始版本 | John |部署文档模板
# 部署文档
## 概述
本文档描述 [系统名] 的部署流程和配置说明。
## 环境要求
### 硬件要求
- CPU: 4核及以上
- 内存: 8GB及以上
- 磁盘: 100GB SSD
### 软件要求
- 操作系统: Ubuntu 20.04 LTS
- Docker: 20.10+
- Kubernetes: 1.25+
- Helm: 3.10+
## 部署步骤
### 1. 准备工作
#### 1.1 创建命名空间
```bash
kubectl create namespace myapp-prod
```
#### 1.2 配置镜像仓库密钥
```bash
kubectl create secret docker-registry regcred \
--docker-server=registry.example.com \
--docker-username=user \
--docker-password=password \
-n myapp-prod
```
### 2. 数据库部署
#### 2.1 部署MySQL
```bash
helm install mysql bitnami/mysql \
--set auth.rootPassword=secretpassword \
--set primary.persistence.size=50Gi \
-n myapp-prod
```
#### 2.2 初始化数据库
```bash
kubectl exec -it mysql-0 -n myapp-prod -- \
mysql -uroot -psecretpassword < schema.sql
```
### 3. Redis部署
```bash
helm install redis bitnami/redis \
--set auth.password=redispassword \
--set replica.replicaCount=2 \
-n myapp-prod
```
### 4. 应用部署
#### 4.1 部署配置
创建 `values.yaml`:
```yaml
image:
repository: registry.example.com/myapp
tag: v1.0.0
pullPolicy: IfNotPresent
replicaCount: 3
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 500m
memory: 512Mi
env:
- name: SPRING_PROFILES_ACTIVE
value: prod
- name: DB_HOST
value: mysql.myapp-prod
- name: REDIS_HOST
value: redis-master.myapp-prod
```
#### 4.2 执行部署
```bash
helm install myapp ./helm-chart \
-f values.yaml \
-n myapp-prod
```
### 5. 配置Ingress
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
namespace: myapp-prod
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- api.example.com
secretName: myapp-tls
rules:
- host: api.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp
port:
number: 80
```
```bash
kubectl apply -f ingress.yaml
```
## 配置说明
### 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| SPRING_PROFILES_ACTIVE | Spring Profile | prod |
| DB_HOST | 数据库地址 | localhost |
| REDIS_HOST | Redis地址 | localhost |
### 配置文件
应用配置文件位于 `/app/config/application.yml`
```yaml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://${DB_HOST}:3306/myapp
username: ${DB_USER}
password: ${DB_PASSWORD}
```
## 验证部署
### 检查Pod状态
```bash
kubectl get pods -n myapp-prod
```
预期输出:
```
NAME READY STATUS RESTARTS AGE
myapp-6d4f7b5c9-abc12 1/1 Running 0 2m
myapp-6d4f7b5c9-def34 1/1 Running 0 2m
myapp-6d4f7b5c9-ghi56 1/1 Running 0 2m
```
### 健康检查
```bash
curl https://api.example.com/actuator/health
```
预期响应:
```json
{
"status": "UP"
}
```
### 查看日志
```bash
kubectl logs -f deployment/myapp -n myapp-prod
```
## 升级部署
### 滚动更新
```bash
helm upgrade myapp ./helm-chart \
--set image.tag=v1.0.1 \
-n myapp-prod
```
### 回滚
```bash
# 查看历史
helm history myapp -n myapp-prod
# 回滚到上一版本
helm rollback myapp -n myapp-prod
# 回滚到指定版本
helm rollback myapp 3 -n myapp-prod
```
## 监控配置
### Prometheus
```yaml
apiVersion: v1
kind: ServiceMonitor
metadata:
name: myapp
namespace: myapp-prod
spec:
selector:
matchLabels:
app: myapp
endpoints:
- port: metrics
interval: 30s
```
### Grafana Dashboard
导入Dashboard ID: 12345
## 故障排查
### Pod无法启动
1. 查看Pod状态: `kubectl describe pod <pod-name> -n myapp-prod`
2. 查看日志: `kubectl logs <pod-name> -n myapp-prod`
3. 常见原因:
- 镜像拉取失败
- 配置错误
- 资源不足
### 数据库连接失败
1. 检查数据库Pod状态
2. 验证网络连接: `kubectl exec -it myapp-xxx -- nc -zv mysql 3306`
3. 检查密码配置
### 服务无法访问
1. 检查Service: `kubectl get svc -n myapp-prod`
2. 检查Ingress: `kubectl get ingress -n myapp-prod`
3. 检查DNS解析
4. 检查证书状态
## 维护操作
### 备份数据库
```bash
kubectl exec mysql-0 -n myapp-prod -- \
mysqldump -uroot -p$MYSQL_ROOT_PASSWORD myapp > backup.sql
```
### 扩缩容
```bash
kubectl scale deployment myapp --replicas=5 -n myapp-prod
```
### 重启应用
```bash
kubectl rollout restart deployment/myapp -n myapp-prod
```
## 安全检查清单
- [ ] 使用非root用户运行容器
- [ ] 配置资源限制
- [ ] 启用网络策略
- [ ] 敏感信息使用Secret
- [ ] 定期更新镜像
- [ ] 配置RBAC权限
- [ ] 启用Pod安全策略
## 附录
### A. 常用命令
```bash
# 查看所有资源
kubectl get all -n myapp-prod
# 进入容器
kubectl exec -it <pod-name> -n myapp-prod -- /bin/bash
# 端口转发
kubectl port-forward svc/myapp 8080:80 -n myapp-prod
# 查看事件
kubectl get events -n myapp-prod --sort-by='.lastTimestamp'
```
### B. 联系方式
- 技术支持: support@example.com
- 紧急联系: +86-xxx-xxxx-xxxx
### C. 变更记录
| 版本 | 日期 | 变更内容 | 作者 |
|------|------|----------|------|
| 1.0 | 2024-12-16 | 初始版本 | DevOps Team |使用场景
新项目启动
为新项目创建完整的文档体系:
- README.md
- API文档
- 架构设计文档
- 部署文档
- 贡献指南API设计评审
编写API设计文档,包括:
- 接口定义
- 数据模型
- 错误处理
- 安全认证系统交付
准备系统交付文档包:
- 系统架构文档
- 部署运维手册
- 用户使用手册
- 故障处理手册知识沉淀
技术方案总结:
- 问题分析
- 解决方案
- 技术决策
- 经验教训集成示例
在Agent中使用
{
"agent": "tech-writer",
"skills": [
"tech-documentation",
"system-architecture",
"api-design"
]
}在对话中引用
@tech-documentation 请为这个API创建完整的文档文档质量检查清单
内容质量
- 信息准确完整
- 逻辑清晰连贯
- 示例真实可用
- 术语统一规范
可读性
- 语言简洁明了
- 结构层次分明
- 格式统一美观
- 配图清晰易懂
可维护性
- 版本信息明确
- 变更记录完整
- 联系方式准确
- 定期审查更新
可访问性
- 目录导航清晰
- 搜索功能完善
- 链接有效准确
- 支持多种格式
工具推荐
文档编写
- Markdown编辑器: Typora, VS Code
- API文档: Swagger Editor, Postman
- 图表工具: Draw.io, PlantUML, Mermaid
- 截图工具: Snipaste, Xnip
文档托管
- 静态站点: GitBook, Docusaurus, VuePress
- 团队协作: Confluence, Notion
- 版本控制: Git, GitHub/GitLab
文档生成
- API文档: Swagger/OpenAPI, ApiDoc
- 代码文档: JavaDoc, JSDoc, Sphinx
- README生成: readme-md-generator
学习资源
推荐书籍
- 《技术写作手册》
- 《Docs for Developers》
- 《The Documentation Compendium》
在线资源
版本: 1.0.0
最后更新: 2024-12
维护者: MindForge Team