文档代理Skill docs-agent

文档代理技能负责自动化维护和更新软件开发项目中的各类文档,包括README文件、系统概述、API文档、架构设计以及变更日志等,以确保文档与代码库的同步。

DevOps 0 次安装 0 次浏览 更新于 3/3/2026

文档代理技能

概览

文档代理负责维护 Unite-Hub 项目的准确、最新的文档:

  1. README.md - 项目概览、安装、使用
  2. .claude/claude.md - 系统概览和配置
  3. .claude/agent.md - 代理定义(规范)
  4. API 文档 - 端点参考
  5. 架构文档 - 系统设计文档
  6. 变更日志 - 版本历史和发布说明

模型配置

模型: claude-haiku-4-5-20251001 原因: 快速、成本效益高,非常适合文档任务 成本: ~$0.10-0.20 每个文档更新(与 Sonnet/Opus 的 $1-2 相比)

如何使用此代理

触发

用户说:“更新 README”、“记录新的 API 端点”、“添加变更日志条目”、“同步文档与代码”

代理的工作内容

1. 确定文档需求

要问的问题

  • 代码中有哪些变化?
  • 哪些文档文件需要更新?
  • 这是一个新功能、bug修复还是重构?
  • 目标受众是谁(开发者、用户或两者)?

2. 阅读当前文档

步骤 A: 定位文档文件

# 查找所有 markdown 文件
find . -name "*.md" | grep -v node_modules

关键文档文件

  • README.md - 主项目 README
  • .claude/claude.md - 系统概览
  • .claude/agent.md - 代理定义
  • ARCHITECTURE.md - 系统架构
  • API_DOCUMENTATION.md - API 参考
  • DEPLOYMENT_GUIDE.md - 部署说明
  • 根目录下的 *.md 文件(各种指南)

步骤 B: 阅读相关文件

// 使用 text_editor 工具
text_editor.view("README.md");
text_editor.view(".claude/claude.md");

3. 更新文档

步骤 A: README.md 更新

Unite-Hub 的 README 结构:

# 项目名称

简短描述(1-2 句话)

## 特性

- 特性 1
- 特性 2
- 特性 3

## 技术栈

### 前端
- Next.js 16
- React 19
- Tailwind CSS

### 后端
- Supabase
- Next.js API 路由

### AI
- Claude Opus 4
- Claude Sonnet 4.5

## 安装

逐步安装说明

## 使用方法

如何使用应用程序

## API 文档

链接到 API 文档

## 部署

部署说明

## 贡献

如何贡献

## 许可证

许可证信息

更新流程

  1. 阅读当前 README
  2. 识别过时部分
  3. 更新相关部分
  4. 保持结构
  5. 保持一致的语气

步骤 B: API 文档更新

当创建新的 API 端点时:

## API 端点

### POST /api/contacts/bulk-update

**描述**:批量更新多个联系人

**认证**:需要(Supabase 认证)

**请求正文**:
```json
{
  "workspaceId": "uuid",
  "contactIds": ["uuid1", "uuid2"],
  "updates": {
    "status": "prospect",
    "tags": ["warm", "interested"]
  }
}

响应

{
  "success": true,
  "updated": 2,
  "contacts": [...]
}

错误

  • 400 - 输入无效
  • 401 - 未授权
  • 500 - 服务器错误

示例

const res = await fetch("/api/contacts/bulk-update", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    workspaceId: "...",
    contactIds: ["..."],
    updates: { status: "prospect" }
  })
});

const data = await res.json();

**步骤 C: .claude/claude.md 更新**

在重大代码更改后:

1. **更新“当前系统状态”部分**:
   - 将修复的问题从“关键问题”移动到“工作组件”
   - 如果发现新问题,则添加新问题
   - 更新组件计数(例如,“21 个仪表板页面” → “22 个仪表板页面”)

2. **更新“技术栈详情”部分**:
   - 添加新依赖项
   - 更新版本号
   - 记录新集成

3. **更新“数据流分析”部分**:
   - 添加新工作流
   - 修复断开的流程
   - 记录关键断点

4. **更新“立即下一步”部分**:
   - 移除已完成的任务
   - 添加新优先任务
   - 重新确定剩余工作优先级

**步骤 D: .claude/agent.md 更新**

当代理更改时:

1. **添加新代理定义**:
   ```markdown
   ### 7. 新代理名称

   **ID**: `unite-hub.new-agent`
   **模型**: `claude-sonnet-4-5-20250929`
   **技能文件**: `.claude/skills/new-agent/SKILL.md`

   #### 角色
   这个代理做什么

   #### 能力
   - 能力 1
   - 能力 2

   #### 可用工具
   - 工具 1
   - 工具 2

   #### 何时调用
   - 场景 1
   - 场景 2
  1. 如果工作流程更改,则更新代理交互模式

  2. 如果添加了新工具,则更新工具使用指南

4. 生成变更日志条目

当代码更改发布时:

# 变更日志

## [1.1.0] - 2025-11-16

### 添加
- 新的联系人批量更新 API 端点
- 仪表板分析页面
- 热门潜在客户电子邮件发送功能

### 变更
- 更新 README,添加新的 API 文档
- 在所有页面上改进工作区过滤

### 修复
- 修复仪表板概览中缺失的工作区过滤器
- 修复 AuthContext 中的未定义组织
- 修复 src/lib/db.ts 中的缺失导入

### 安全
- 在所有 API 路由上重新启用认证
- 为新表添加 RLS 策略

变更日志类别

  • 添加:新功能
  • 变更:对现有功能的更改
  • 弃用:将被移除的功能
  • 移除:已移除的功能
  • 修复:错误修复
  • 安全:安全改进

5. 更新架构图

当系统架构更改时:

基于文本的图(使用 Markdown):

## 系统架构

┌─────────────────┐ │ Next.js 应用 │ │ (React 19 + │ │ App Router) │ └────────┬────────┘ │ ┌────┴────┐ │ │ ┌───▼───┐ ┌──▼─────────┐ │ API │ │ 仪表板 │ │路由 │ │ 页面 │ └───┬───┘ └────────────┘ │ ┌───▼────────────────┐ │ AI 代理层 │ │ • 电子邮件代理 │ │ • 内容代理 │ │ • 协调器 │ └───┬────────────────┘ │ ┌───▼────────────────┐ │ Supabase 层 │ │ • PostgreSQL │ │ • 行级安全 │ │ • 实时订阅 │ └────────────────────┘

Mermaid 图(用于复杂流程):

## 数据流

```mermaid
graph TD
    A[用户登录] --> B[OAuth]
    B --> C[Supabase 认证]
    C --> D[仪表板]
    D --> E[加载联系人]
    E --> F[显示热门潜在客户]

## 常见任务

### 任务 1: 记录新的 API 端点

**步骤**:
1. 阅读 API 路由文件(`src/app/api/new-endpoint/route.ts`)
2. 提取:
   - HTTP 方法(GET、POST 等)
   - 请求正文模式
   - 响应格式
   - 错误代码
   - 认证要求
3. 添加到 `API_DOCUMENTATION.md`
4. 如果是主要功能,则更新 README
5. 添加示例用法

**示例输出**:
```markdown
### POST /api/agents/analyze

使用 Claude AI 分析联系人以提取洞察

**请求**:
```json
{
  "workspaceId": "uuid",
  "contactId": "uuid",
  "analysisType": "intelligence" | "sentiment"
}

响应

{
  "success": true,
  "analysis": {
    "score": 85,
    "insights": "...",
    "recommendations": ["..."]
  }
}

### 任务 2: 功能发布后更新 README

**步骤**:
1. 阅读当前 README
2. 在“特性”部分添加功能
3. 如果有新依赖项,则更新“技术栈”
4. 如果面向用户,则添加使用示例
5. 如果 UI 更改,则更新屏幕截图
6. 验证所有链接仍然有效

**示例更新**:
```markdown
## 特性(已更新)

### 🤖 AI 智能层
- **电子邮件代理**:自动处理传入电子邮件,提取意图,分析情感
- **内容生成器**:使用 Claude Opus 4 与扩展思考创建个性化营销内容
- **联系人智能**:基于参与度、情感和行为的 AI 驱动潜在客户评分(0-100)
- **协调器**:协调多代理工作流程以实现复杂自动化
- **新增:批量联系人分析器**:使用 Claude AI 同时分析多个联系人 ✨

### 📧 电子邮件集成(已更新)
- **Gmail OAuth 2.0**:安全连接到 Gmail 账户
- **电子邮件同步**:自动导入电子邮件并提取发件人
- **打开/点击跟踪**:基于像素的电子邮件参与度跟踪
- **线程管理**:按对话线程组织电子邮件
- **新增:电子邮件模板**:常用场景的预构建模板 ✨

任务 3: 创建架构文档

步骤

  1. 审查代码库结构
  2. 确定主要组件
  3. 映射数据流
  4. 记录集成点
  5. 创建图表
  6. 编写叙述性解释

示例输出

# Unite-Hub 架构

## 概览

Unite-Hub 遵循**三层架构**:
1. **前端**:Next.js 16 与 React 19(App Router)
2. **后端**:Next.js API 路由(无服务器)
3. **数据库**:Supabase PostgreSQL 与 RLS

## 组件层

### 1. 表示层(前端)

**位置**:`src/app/`, `src/components/`

**职责**:
- 使用 React 19 服务器组件渲染 UI
- 处理用户交互
- 管理客户端状态(React Context)
- 调用后端 API

**关键组件**:
- 仪表板页面(`src/app/dashboard/*`)
- UI 组件(`src/components/ui/*`)
- 客户端组件(`src/components/client/*`)
- 认证上下文(`src/contexts/AuthContext.tsx`)

### 2. 应用层(后端)

**位置**:`src/app/api/`, `src/lib/`

**职责**:
- 处理 API 请求
- 认证用户
- 查询数据库
- 调用外部 API(Claude, Gmail)
- 返回 JSON 响应

**关键组件**:
- API 路由(`src/app/api/*`)
- 数据库包装器(`src/lib/db.ts`)
- Supabase 客户端(`src/lib/supabase.ts`)
- 代理逻辑(`src/lib/agents/*`)

### 3. 数据层(数据库)

**位置**:Supabase PostgreSQL

**职责**:
- 存储应用程序数据
- 强制数据完整性
- 应用行级安全
- 提供实时订阅

**关键表**:
- 用户管理:`users`, `organizations`, `workspaces`
- CRM:`contacts`, `emails`, `interactions`
- 活动:`campaigns`, `drip_campaigns`, `campaign_steps`
- AI:`generatedContent`, `aiMemory`, `auditLogs`

## 数据流示例

### 联系人创建流程

1. 用户在仪表板中填写表单(`src/app/dashboard/contacts/new`)
2. 前端调用 API(`POST /api/contacts`)
3. API 验证输入,检查认证
4. API 插入带有工作区过滤器的联系人
5. Supabase 检查 RLS 策略
6. 数据库存储联系人
7. API 返回成功 + 联系人数据
8. 前端更新 UI
9. 创建审计日志

## 集成点

### 外部服务

- **Supabase**:认证,数据库,存储
- **Claude AI**:内容生成,电子邮件分析
- **Gmail API**:电子邮件同步,发送
- **Stripe**:计费(未来)
- **Vercel**:托管,无服务器函数

任务 4: 主要重构后同步文档

步骤

  1. 审查所有更改的文件
  2. 确定受影响的文档
  3. 更新技术细节
  4. 修复破损示例
  5. 更新版本号
  6. 生成变更日志条目

示例清单

# 文档同步清单

重构 `src/lib/db.ts` 后:

- [x] 更新 README.md - 数据库包装器部分
- [x] 更新 ARCHITECTURE.md - 数据访问层
- [x] 更新 API_DOCUMENTATION.md - 数据库查询示例
- [x] 更新 .claude/claude.md - 数据库模式部分
- [x] 添加 CHANGELOG.md 条目 - "重构数据库包装器"
- [x] 更新 `src/lib/db.ts` 中的内联代码注释
- [ ] 录制视频演示(主要更改时可选)

文档最佳实践

写作风格

语气:专业、简洁、有帮助

✅ 好例子

  • “此端点在指定的工作区中创建新的联系人”
  • “如果用户未认证,则返回 401”
  • “使用 workspaceId 参数过滤结果”

❌ 坏例子

  • “这是一个超级酷的 API,能做惊人的事情!”(太随意)
  • “端点执行操作”(太模糊)
  • “只需调用 API”(没有帮助)

代码示例

总是包括

  • 输入参数
  • 预期输出
  • 错误处理
  • TypeScript 类型(如果适用)

✅ 好例子

// 使用工作区过滤器获取联系人
const { data, error } = await supabase
  .from("contacts")
  .select("*")
  .eq("workspace_id", workspaceId);

if (error) {
  console.error("Error fetching contacts:", error);
  return;
}

console.log(`Found ${data.length} contacts`);

❌ 坏例子

// 获取联系人
const data = await supabase.from("contacts").select("*");

文档结构

每个文档文件都应包含

  1. 标题 - 清晰、描述性
  2. 概览 - 本文档涵盖的内容
  3. 目录 - 针对长文档
  4. 部分 - 按主题组织
  5. 示例 - 实际代码样本
  6. 故障排除 - 常见问题
  7. 参考资料 - 相关文档链接

保持文档同步

自动化检查(未来):

# 脚本检查文档是否过时
npm run docs:check

# 查找:
# - 文档中提到的 API 端点但在代码中不存在
# - 具有过时导入的代码示例
# - 断开的内部链接

手动审查

  • 每个主要 PR 后审查文档
  • 发布前更新版本号
  • 测试所有代码示例
  • 验证所有链接有效

V1 约束

我们为 V1 文档记录的内容

  • ✅ 所有 API 端点(104 条路由)
  • ✅ 代理定义和工作流程
  • ✅ 数据库模式和 RLS 策略
  • ✅ 安装和部署
  • ✅ 架构概览

我们不为 V1 文档记录的内容

  • ❌ 视频教程
  • ❌ 交互式 API 浏览器
  • ❌ 自动化 API 文档生成
  • ❌ 多语言文档
  • ❌ 贡献者指南(详细)

工具和自动化

文档工具

推荐(未来):

  • TypeDoc - 从 TypeScript 生成文档
  • Docusaurus - 文档网站
  • Mermaid - 图表生成
  • Markdown 检查器 - 确保一致性

当前使用

  • 手动 Markdown 文件
  • 文本编辑器工具进行更新
  • Git 用于版本控制

文档模板

API 端点模板

### [METHOD] /api/path

**描述**:简短描述

**认证**:需要 | 可选 | 无

**请求正文**:
```json
{
  "param": "value"
}

响应

{
  "success": true,
  "data": {}
}

错误

  • 400 - 请求错误
  • 401 - 未授权
  • 500 - 服务器错误

示例

// 代码示例

## 关键点

- **立即更新文档** - 不要让文档与代码脱节
- **使用代码示例** - 展示,而不仅仅是告诉
- **保持简洁** - 开发者会快速浏览文档
- **慷慨链接** - 连接相关文档
- **测试示例** - 所有代码示例都应该可以运行
- **适当版本控制** - 与代码版本一起跟踪文档版本

---

## 与其他代理的集成

文档代理与以下代理合作:
- **前端代理** - 文档 UI 组件
- **后端代理** - 文档 API 端点
- **协调器** - 在工作流程后协调文档更新
- **所有代理** - 接收变更摘要以进行文档记录