ProjAnvil

tech-documentation

技术文档编写技能,涵盖 API 文档、架构文档、部署指南和各种技术写作最佳实践。使用此技能创建技术文档、编写 API 文档、创建架构设计文档,或需要部署和运维手册模板时使用。

ProjAnvil 3 1 Updated 5mo ago
GitHub

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