37f 产品研发工作流 Agent
上一篇: 37e RAG 知识库搭建 | 下一篇: 37g 数据分析与运营 Agent
本篇实现覆盖完整 SDLC 的 Agent 工作流:从需求收集到上线验收的全流程自动化。核心是事件驱动 + 状态机编排,通过 OpenClaw 记忆系统在 Skill 之间传递上下文,在关键节点保留 Human-in-the-Loop 审批。最后以 HackQuest “新增 Solana 课程模块”为例演示完整流程。
1. 研发流程状态机
1.1 状态定义
1.2 状态转换表
| 当前状态 | 目标状态 | 触发事件 | 执行 Skill | 人工确认 |
|---|---|---|---|---|
| — | 待评审 | 用户提出需求 | requirement-create | ❌ |
| 待评审 | 已通过 | 评审人在飞书确认 | requirement-status-change | ✅ 评审人确认 |
| 待评审 | 已关闭 | 评审人拒绝 | requirement-status-change | ✅ 评审人确认 |
| 已通过 | PRD编写中 | 状态变更事件 | requirement-prd-generate | ❌ 自动触发 |
| PRD编写中 | 设计中 | 产品经理审阅 PRD | requirement-status-change | ✅ PM 确认 |
| 设计中 | 开发中 | 设计评审通过 | requirement-status-change | ✅ 设计评审 |
| 开发中 | 待审查 | 开发者提交 PR | code-pr-review | ❌ 自动检测 |
| 待审查 | 测试中 | CR 通过并合并 | requirement-status-change | ✅ Reviewer 确认 |
| 待审查 | 开发中 | CR 打回 | requirement-status-change | ✅ Reviewer 确认 |
| 测试中 | 待部署 | 测试通过 | requirement-status-change | ✅ 测试确认 |
| 测试中 | 开发中 | 测试不通过 | bug-create | ✅ 测试确认 |
| 待部署 | 已上线 | 部署完成 | ops-deploy-trigger | ✅ 运维确认 |
2. 事件驱动触发
2.1 事件源
| 事件源 | 事件类型 | 触发的 Skill |
|---|---|---|
| 飞书消息 | 用户 @机器人 说”创建需求” | requirement-create |
| 飞书消息 | 用户 @机器人 说”生成 PRD” | requirement-prd-generate |
| 多维表格 | 需求状态字段变更 | requirement-status-change |
| 多维表格 | 缺陷状态字段变更 | bug-status-change |
| GitHub | PR 创建/更新 | code-pr-review |
| GitHub | CI 完成 | code-ci-trigger |
| 定时 | 每天 9:30 | 站会提醒 Skill |
| 定时 | 每周五 17:00 | 迭代总结 Skill |
2.2 事件路由流程
事件到达 OpenClaw
│
▼
识别事件类型
│
├─→ 飞书消息事件 → 意图识别 → 匹配 Skill
├─→ 多维表格变更事件 → 解析变更字段 → 匹配状态转换 Skill
├─→ GitHub Webhook → 解析 PR/CI 事件 → 匹配代码 Skill
└─→ 定时事件 → 直接触发对应 Skill
│
▼
加载上下文(从记忆系统读取相关信息)
│
▼
执行 Skill
│
▼
写入记忆 → 回复用户/更新表格/发送通知3. 核心 Skill 实现
3.1 需求收集 Skill
创建 skills/requirement/requirement-create.md:
# requirement-create
从用户消息中提取需求信息,创建需求记录并归档到飞书多维表格。
## 触发条件
用户消息包含"创建需求"、"新需求"、"提需求"、"我想做一个"等关键词。
## 执行步骤
1. 从用户消息中提取以下信息:
- 标题(必填)
- 描述(可选,如果用户未提供则追问)
- 优先级(可选,默认 P2)
- 所属模块(可选,根据内容自动推断)
2. 如果标题或描述信息不完整,向用户追问缺失字段
3. 从记忆中读取多维表格 app_token 和需求表 table_id
4. 调用 lark-mcp 在需求多维表格中创建记录,状态设为"待评审"
5. 在需求评审群发送通知消息,包含需求摘要和多维表格链接
6. 将需求信息写入记忆,格式:
- 记忆键:requirement_{record_id}
- 内容:标题、描述、优先级、创建人、创建时间
## 输出格式
✅ 需求已创建
- 标题:{title}
- 优先级:{priority}
- 状态:待评审
- 模块:{module}
- 多维表格:[查看]({bitable_link})
已通知评审群,等待评审。
## 示例输出
✅ 需求已创建
- 标题:新增 Solana 课程模块
- 优先级:P1
- 状态:待评审
- 模块:课程
- 多维表格:[查看](https://xxx.feishu.cn/base/xxx)
已通知评审群,等待评审。
## 权限要求
- 飞书多维表格写入权限
- 飞书消息发送权限
## 错误处理
- 多维表格写入失败:提示用户稍后重试,记录错误日志
- 用户信息不完整:最多追问 2 次,仍不完整则创建草稿状态3.2 PRD 生成 Skill
创建 skills/requirement/requirement-prd-generate.md:
# requirement-prd-generate
根据需求信息和知识库上下文,自动生成 PRD 文档草稿。
## 触发条件
- 需求状态从"待评审"变为"已通过"时自动触发
- 用户消息包含"生成 PRD"、"写 PRD"
## 执行步骤
1. 从记忆中读取需求详情(标题、描述、优先级、模块)
2. 调用 knowledge-rag-search 检索相关的历史需求和技术文档
3. 基于需求信息和检索结果,生成 PRD 文档,包含:
- 背景与目标
- 用户故事
- 功能需求(按优先级排列)
- 非功能需求(性能、安全、兼容性)
- 技术方案建议(基于知识库中的架构文档)
- 验收标准
- 里程碑计划
4. 调用 lark-mcp 创建飞书文档,写入 PRD 内容
5. 更新需求多维表格的 PRD 链接字段
6. 在需求评审群发送通知:"PRD 已生成,请 @产品经理 审阅"
7. 将 PRD 文档 token 写入记忆
## 输出格式
📄 PRD 已生成
- 需求:{requirement_title}
- PRD 文档:[查看]({doc_link})
- 状态:AI 生成-待审阅
请 @产品经理 审阅后确认。
## PRD 模板
### {需求标题} — 产品需求文档
#### 1. 背景与目标
(基于需求描述和知识库上下文生成)
#### 2. 用户故事
- 作为 [角色],我希望 [功能],以便 [价值]
#### 3. 功能需求
| 编号 | 功能点 | 优先级 | 描述 |
|------|--------|--------|------|
#### 4. 非功能需求
- 性能:
- 安全:
- 兼容性:
#### 5. 技术方案建议
(基于知识库中的架构文档生成)
#### 6. 验收标准
- [ ] 标准 1
- [ ] 标准 2
#### 7. 里程碑
| 阶段 | 时间 | 交付物 |
## 权限要求
- 飞书文档创建权限
- 飞书多维表格读写权限
- 向量数据库读取权限(RAG 检索)
- 飞书消息发送权限3.3 代码审查 Skill
创建 skills/code/code-pr-review.md:
# code-pr-review
当 GitHub PR 创建或更新时,自动生成审查摘要并关联需求。
## 触发条件
- GitHub PR 创建或更新事件
- 用户消息包含"查看 PR"、"PR 审查"
## 执行步骤
1. 通过 GitHub MCP 获取 PR 详情(标题、描述、变更文件列表、diff)
2. 从 PR 描述或分支名中提取关联的需求编号
3. 从记忆中读取关联需求的上下文
4. 分析 PR 变更:
- 变更文件数和行数统计
- 主要变更内容摘要
- 潜在风险点(大文件变更、敏感文件修改、缺少测试)
5. 生成审查摘要并发送到开发群
6. 如果 PR 关联了需求,更新需求状态为"待审查"
## 输出格式
🔍 PR 审查摘要:#{pr_number} {pr_title}
📊 变更统计:
- 文件数:{files_changed}
- 新增:+{additions} 行
- 删除:-{deletions} 行
📝 主要变更:
- {change_summary_1}
- {change_summary_2}
⚠️ 关注点:
- {risk_point_1}
- {risk_point_2}
🔗 关联需求:{requirement_title}
🔗 PR 链接:{pr_url}
## 权限要求
- GitHub MCP(PR 读取权限)
- 飞书消息发送权限
- 飞书多维表格读写权限(更新需求状态)3.4 测试验收 Skill
创建 skills/requirement/requirement-test-verify.md:
# requirement-test-verify
测试完成后更新需求状态,生成测试报告摘要。
## 触发条件
- 用户消息包含"测试通过"、"验收通过"、"测试不通过"
- 缺陷表中关联需求的所有缺陷状态变为"已关闭"
## 执行步骤
### 测试通过
1. 更新需求状态为"待部署"
2. 统计该需求关联的缺陷数量和修复情况
3. 生成测试报告摘要
4. 通知运维团队准备部署
### 测试不通过
1. 保持需求状态为"测试中"
2. 自动创建缺陷记录(调用 bug-create)
3. 通知开发负责人
## 输出格式(测试通过)
✅ 测试验收通过
- 需求:{requirement_title}
- 关联缺陷:{bug_count} 个(全部已关闭)
- 状态:待部署
- 已通知运维团队
## 权限要求
- 飞书多维表格读写权限
- 飞书消息发送权限4. 跨 Skill 编排
完整的多 Agent 配置和编排文件格式见 37d 第 3 节:多 Agent 编排与配置。跨部门 Agent 全链路协作(如线上故障→修复→复盘的 4 Agent 接力)见 37d 3.9 节:跨部门 Agent 全链路协作。本节聚焦研发工作流中 Skill 之间的上下文传递和链式调用。
4.1 编排配置:研发流程状态机
在 skills/_orchestration/requirement-lifecycle.md 中定义完整的研发流程编排(详见 37d 3.6 节)。核心是将第 1 节的状态机转化为 OpenClaw 可执行的编排配置:
# requirement-lifecycle
需求全生命周期编排。
## 编排类型
事件驱动状态机
## 状态转换定义
### 待评审 → 已通过
- 触发:飞书卡片回调,action = "approve"
- 执行:requirement-status-change(PM Agent)
- 自动链式触发:requirement-prd-generate(PM Agent)
- 委派:dev-agent → code-issue-create
### 已通过 → 开发中
- 触发:PM 确认 PRD + 设计评审通过
- 执行:requirement-status-change(PM Agent)
### 开发中 → 待审查
- 触发:GitHub PR 创建事件
- 执行:code-pr-review(Dev Agent)
- 读取共享记忆:requirement_{id}
### 待审查 → 测试中
- 触发:GitHub PR 合并事件
- 执行:requirement-status-change(PM Agent)
### 测试中 → 待部署
- 触发:用户消息"测试通过"
- 执行:requirement-test-verify(PM Agent)
- 委派:dev-agent → ops-deploy-trigger(需人工确认)
### 待部署 → 已上线
- 触发:运维确认部署(飞书卡片回调)
- 执行:requirement-status-change(PM Agent)
- 通知:项目群上线公告这个编排文件让 OpenClaw 知道”什么事件触发什么 Skill、由哪个 Agent 执行、需不需要委派”,而不是完全依赖 LLM 隐式判断。
4.2 记忆系统传递上下文
OpenClaw 的记忆系统是 Skill 之间传递上下文的核心机制。每个 Skill 执行后将结果写入记忆,下一个 Skill 可以读取。
requirement-create
│ 写入记忆:requirement_rec001 = {title, priority, status, creator}
│
▼
requirement-prd-generate
│ 读取记忆:requirement_rec001
│ 写入记忆:prd_doc_token = {doc_token, doc_url}
│
▼
code-pr-review
│ 读取记忆:requirement_rec001, prd_doc_token
│ 写入记忆:pr_info = {pr_number, pr_url, review_summary}
│
▼
requirement-test-verify
│ 读取记忆:requirement_rec001, pr_info
│ 写入记忆:test_result = {passed, bug_count}
│
▼
ops-deploy-trigger
读取记忆:requirement_rec001, pr_info, test_result4.3 记忆键命名规范
| 记忆键格式 | 说明 | 示例 |
|---|---|---|
requirement_{record_id} | 需求详情 | requirement_rec001 |
bug_{record_id} | 缺陷详情 | bug_rec042 |
prd_{requirement_id} | PRD 文档信息 | prd_rec001 |
pr_{pr_number} | PR 信息 | pr_156 |
sprint_{sprint_name} | 迭代信息 | sprint_2026-W28 |
deploy_{date} | 部署记录 | deploy_2026-07-15 |
4.4 Skill 链式调用
某些场景需要一个 Skill 主动触发另一个 Skill:
## 链式调用示例:需求通过 → 自动生成 PRD
requirement-status-change Skill 检测到状态变为"已通过"后:
1. 更新多维表格状态
2. 将需求信息写入记忆
3. 在回复消息中提示:"需求已通过,正在自动生成 PRD..."
4. OpenClaw 识别到需要调用 requirement-prd-generate
5. requirement-prd-generate 从记忆中读取需求信息,生成 PRD4.5 错误处理和重试
| 错误类型 | 处理策略 |
|---|---|
| MCP 工具调用超时 | 自动重试 1 次,仍失败则通知用户 |
| 飞书 API 限流 | 等待 1 秒后重试,最多 3 次 |
| LLM 生成内容不符合格式 | 重新生成 1 次,附加更严格的格式约束 |
| 记忆读取失败 | 从多维表格重新查询数据 |
| 权限不足 | 立即通知用户,不重试 |
5. Human-in-the-Loop 设计
5.1 审批节点
| 审批节点 | 审批人 | 审批方式 | 超时处理 |
|---|---|---|---|
| 需求评审 | 产品负责人 | 飞书消息卡片(通过/拒绝) | 24h 未处理提醒,48h 升级到 CTO |
| PRD 审阅 | 产品经理 | 飞书文档评论 + 确认消息 | 24h 提醒 |
| 设计评审 | 设计负责人 + 技术负责人 | 飞书消息卡片 | 24h 提醒 |
| 代码审查 | 指定 Reviewer | GitHub PR Review | 48h 未处理自动提醒 |
| 测试验收 | 测试负责人 | 飞书消息卡片 | 24h 提醒 |
| 部署确认 | 运维 + 技术负责人 | 飞书消息卡片(双重确认) | 不超时,必须人工确认 |
5.2 飞书消息卡片交互
需求评审的消息卡片示例:
{
"msg_type": "interactive",
"card": {
"header": {
"title": { "tag": "plain_text", "content": "📋 需求评审" },
"template": "blue"
},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**需求标题**:新增 Solana 课程模块\n**优先级**:P1\n**提出人**:张三\n**描述**:用户对 Solana 生态学习需求增长,需要新增完整的 Solana 开发课程,包含基础、智能合约、DApp 开发三个阶段。"
}
},
{
"tag": "action",
"actions": [
{
"tag": "button",
"text": { "tag": "plain_text", "content": "✅ 通过" },
"type": "primary",
"value": { "action": "approve", "record_id": "rec001" }
},
{
"tag": "button",
"text": { "tag": "plain_text", "content": "❌ 拒绝" },
"type": "danger",
"value": { "action": "reject", "record_id": "rec001" }
},
{
"tag": "button",
"text": { "tag": "plain_text", "content": "💬 需要讨论" },
"value": { "action": "discuss", "record_id": "rec001" }
}
]
}
]
}
}5.3 超时升级机制
审批请求发出
│
├─→ 24h 内确认 → 正常流转
│
├─→ 24h 未确认 → 发送提醒消息
│ │
│ ├─→ 48h 内确认 → 正常流转
│ │
│ └─→ 48h 未确认 → 升级到上级审批人
│
└─→ 部署确认:无超时,必须人工确认6. 完整示例:HackQuest “新增 Solana 课程模块”
以下演示一个需求从提出到上线的完整 Agent 辅助流程。
6.1 第一步:需求提出
张三(前端开发)在飞书群 @机器人:
@HackQuest AI Agent 创建一个 P1 需求:新增 Solana 课程模块,包含 Solana 基础、智能合约开发、DApp 实战三个阶段,目标用户是有以太坊基础的开发者
Agent 回复:
✅ 需求已创建
- 标题:新增 Solana 课程模块
- 优先级:P1
- 状态:待评审
- 模块:课程
- 多维表格:查看
已通知评审群,等待评审。
同时,Agent 在需求评审群发送消息卡片(含通过/拒绝按钮)。
6.2 第二步:需求评审
李四(产品负责人)点击消息卡片的”✅ 通过”按钮。
Agent 自动执行:
- 更新需求状态为”已通过”
- 自动触发 PRD 生成
Agent 回复:
✅ 需求”新增 Solana 课程模块”已通过评审 正在自动生成 PRD…
6.3 第三步:PRD 生成
Agent 自动执行(无需人工触发):
- 从记忆读取需求详情
- 检索知识库中的相关文档(课程体系架构、已有课程模板、Solana 技术资料)
- 生成 PRD 文档
Agent 回复:
📄 PRD 已生成
- 需求:新增 Solana 课程模块
- PRD 文档:查看
- 状态:AI 生成-待审阅
请 @李四 审阅后确认。
6.4 第四步:设计与开发
李四审阅 PRD 后确认 → Agent 更新状态为”设计中”
设计完成后,设计评审通过 → Agent 更新状态为”开发中”
张三在 GitHub 创建 PR:
PR #156: feat: add solana course module
Agent 自动检测到 PR 创建,生成审查摘要:
🔍 PR 审查摘要:#156 feat: add solana course module
📊 变更统计:
- 文件数:23
- 新增:+1,850 行
- 删除:-120 行
📝 主要变更:
- 新增 Solana 课程数据模型和 API
- 新增课程页面组件(3 个阶段)
- 更新课程导航配置
⚠️ 关注点:
- 缺少单元测试文件
api/courses/solana.ts中有硬编码的 RPC 端点🔗 关联需求:新增 Solana 课程模块 🔗 PR 链接:https://github.com/hackquest/web/pull/156
6.5 第五步:测试与部署
CR 通过,PR 合并 → Agent 更新需求状态为”测试中”
测试通过后,王五(测试)@机器人:
@HackQuest AI Agent 需求”新增 Solana 课程模块”测试通过
Agent 回复:
✅ 测试验收通过
- 需求:新增 Solana 课程模块
- 关联缺陷:2 个(全部已关闭)
- 状态:待部署
- 已通知运维团队
Agent 在运维群发送部署确认卡片 → 运维确认后触发部署 → 部署完成后 Agent 更新状态为”已上线”
6.6 全流程时间线
| 时间 | 事件 | Agent 行为 | 人工操作 |
|---|---|---|---|
| Day 1 09:00 | 张三提出需求 | 创建记录,通知评审群 | 张三 @机器人 |
| Day 1 14:00 | 李四评审通过 | 更新状态,触发 PRD 生成 | 李四点击”通过” |
| Day 1 14:05 | PRD 生成完成 | 创建文档,通知 PM | — |
| Day 2 10:00 | PRD 审阅通过 | 更新状态为”设计中” | 李四确认 |
| Day 3 16:00 | 设计评审通过 | 更新状态为”开发中” | 设计评审会 |
| Day 7 11:00 | 张三提交 PR | 生成审查摘要,关联需求 | 张三提交 PR |
| Day 8 15:00 | CR 通过 | 更新状态为”测试中” | Reviewer 合并 |
| Day 10 17:00 | 测试通过 | 更新状态,通知运维 | 王五确认 |
| Day 11 10:00 | 部署上线 | 更新状态为”已上线” | 运维确认部署 |
整个流程中,Agent 自动完成了 12 次状态更新、3 次通知发送、1 次 PRD 生成、1 次 PR 审查摘要。人工只需要在 6 个关键节点做确认操作。
7. 工具与资源推荐
| 工具 | 用途 | 价格 | 适用场景 |
|---|---|---|---|
| OpenClaw 记忆系统 | Skill 间上下文传递 | 内置免费 | 所有跨 Skill 编排 |
| 飞书消息卡片 | Human-in-the-Loop 审批 | 免费 | 需求评审、部署确认 |
| GitHub MCP Server | PR 检测和代码审查 | 开源免费 | 代码 Skill |
| Mermaid | 状态机可视化 | 开源免费 | 流程文档 |
8. 项目 AI 就绪初始化
前面 1-7 节讲的是研发流程中 Agent 如何自动流转状态、生成 PRD、审查 PR。但这一切有个前提:每个 GitHub 仓库必须是”AI 友好”的 — Agent 需要规则文件、架构文档、Spec 文件等上下文才能高质量地工作。本节提供一组 Skill,让 Agent 自动为项目仓库生成这些基础设施文件。
8.1 为什么需要项目 AI 就绪
Agent 写代码的质量 90% 取决于它拿到的上下文。一个”空白”仓库和一个”AI 就绪”仓库的差距:
| 维度 | 空白仓库 | AI 就绪仓库 |
|---|---|---|
| Agent 理解项目 | 只能从代码推断,经常猜错 | 读取规则文件和架构文档,准确理解 |
| 代码风格一致性 | 每次生成风格不同 | 规则文件约束,风格统一 |
| 需求→代码的转化 | Agent 需要大量追问 | Spec 文件提供完整上下文,直接开工 |
| PR 质量 | 缺少模板,描述随意 | PR 模板规范化,自动关联需求 |
| 新人/新 Agent 上手 | 需要老人口头传授 | 文档自解释,Agent 和人都能快速理解 |
8.2 AI 就绪仓库的标准结构
your-project/
├── CLAUDE.md ← Agent 规则文件(Claude Code / Kiro 通用)
├── docs/
│ ├── architecture.md ← 系统架构说明
│ ├── tech-stack.md ← 技术栈和编码约定
│ ├── api-conventions.md ← API 设计规范
│ └── database-schema.md ← 数据库 Schema 文档
├── specs/ ← 需求规格文档目录
│ └── _template.md ← Spec 文件模板
├── .github/
│ ├── PULL_REQUEST_TEMPLATE.md ← PR 模板
│ └── ISSUE_TEMPLATE/
│ ├── feature.md ← 需求 Issue 模板
│ └── bug.md ← Bug Issue 模板
└── ...(项目代码)每个文件的作用:
| 文件 | 消费者 | 作用 |
|---|---|---|
| CLAUDE.md | AI Agent(Claude Code / Kiro / Cursor) | 告诉 Agent 项目技术栈、代码规范、禁止事项 |
| docs/architecture.md | AI Agent + 新人 | 系统架构、模块划分、数据流 |
| docs/tech-stack.md | AI Agent | 技术选型、版本号、编码约定 |
| docs/api-conventions.md | AI Agent + 前后端开发 | API 命名、请求/响应格式、错误码规范 |
| docs/database-schema.md | AI Agent + 后端开发 | 表结构、字段说明、索引策略 |
| specs/_template.md | 产品经理 | Spec 文件模板,产品按此格式写需求 |
| .github/PULL_REQUEST_TEMPLATE.md | 开发者 + AI Agent | PR 描述规范,自动关联需求 |
| .github/ISSUE_TEMPLATE/*.md | 产品 + 开发 | Issue 创建规范 |
8.3 项目初始化 Skill
创建 skills/code/code-project-init.md:
# code-project-init
为 GitHub 仓库生成 AI 就绪的基础设施文件,包括规则文件、文档模板、PR/Issue 模板。
## 触发条件
- 用户消息包含"初始化项目"、"AI 就绪"、"生成规则文件"、"项目初始化"
- 用户消息包含"为 xxx 仓库配置 AI 环境"
## 执行步骤
1. 从用户消息中提取目标仓库信息:
- GitHub 仓库名(如 hackquest/web-app)
- 如果未指定,列出团队仓库让用户选择
2. 通过 GitHub MCP 读取仓库信息:
- package.json / requirements.txt / go.mod(判断技术栈)
- 目录结构(判断项目类型和架构)
- 已有的配置文件(.eslintrc, tsconfig.json 等)
- README.md(提取项目描述)
3. 基于仓库分析结果,生成以下文件:
- CLAUDE.md(Agent 规则文件)
- docs/architecture.md(架构文档骨架)
- docs/tech-stack.md(技术栈文档)
- specs/_template.md(Spec 文件模板)
- .github/PULL_REQUEST_TEMPLATE.md
- .github/ISSUE_TEMPLATE/feature.md
- .github/ISSUE_TEMPLATE/bug.md
4. 通过 GitHub MCP 创建 PR,包含所有生成的文件
5. 在开发群通知:"已为 {repo} 生成 AI 基础设施文件,请审阅 PR"
6. 将仓库信息写入记忆,供后续 Skill 使用
## 生成规则
### CLAUDE.md 生成逻辑
- 从 package.json 提取框架和依赖(Next.js / Express / React 等)
- 从 tsconfig.json 提取 TypeScript 配置
- 从 .eslintrc 提取代码风格规则
- 从目录结构推断架构模式(App Router / Pages Router / MVC 等)
- 从 README.md 提取项目描述和业务上下文
### docs/architecture.md 生成逻辑
- 分析 src/ 目录结构,识别模块划分
- 识别数据库(Prisma / Drizzle / TypeORM schema 文件)
- 识别 API 层(app/api/ 或 routes/)
- 生成架构图(文本格式)和模块说明
### specs/_template.md 生成逻辑
- 固定模板,包含:Background、Requirements、API Design、
Database Changes、UI Behavior、Out of Scope
- 根据项目类型调整模板细节(前端项目侧重 UI,后端项目侧重 API)
## 输出格式
🚀 项目 AI 就绪初始化完成
仓库:{repo_name}
检测到技术栈:{tech_stack_summary}
已生成文件:
- ✅ CLAUDE.md(Agent 规则文件)
- ✅ docs/architecture.md(架构文档)
- ✅ docs/tech-stack.md(技术栈文档)
- ✅ specs/_template.md(Spec 模板)
- ✅ .github/PULL_REQUEST_TEMPLATE.md
- ✅ .github/ISSUE_TEMPLATE/feature.md
- ✅ .github/ISSUE_TEMPLATE/bug.md
PR 链接:[查看]({pr_url})
请团队审阅后合并。
⚠️ 注意:生成的文件是 AI 初稿,请技术负责人审阅并补充以下内容:
1. CLAUDE.md 中的"Do NOT"部分(项目特有的禁止事项)
2. architecture.md 中的业务模块说明
3. 数据库 Schema 文档(需要从实际数据库导出)
## 示例
### 示例 1
**用户**: 帮 hackquest/web-app 仓库初始化 AI 环境
**Agent**:
🚀 项目 AI 就绪初始化完成
仓库:hackquest/web-app
检测到技术栈:Next.js 15 + TypeScript + Tailwind CSS + Drizzle ORM + PostgreSQL
已生成文件:
- ✅ CLAUDE.md(Agent 规则文件)
- ✅ docs/architecture.md(架构文档)
- ✅ docs/tech-stack.md(技术栈文档)
- ✅ specs/_template.md(Spec 模板)
- ✅ .github/PULL_REQUEST_TEMPLATE.md
- ✅ .github/ISSUE_TEMPLATE/feature.md
- ✅ .github/ISSUE_TEMPLATE/bug.md
PR 链接:[查看](https://github.com/hackquest/web-app/pull/200)
## 权限要求
- GitHub MCP(仓库读取 + PR 创建权限)
- 飞书消息发送权限
- 记忆写入权限
## 错误处理
- 仓库不存在或无权限:提示用户检查仓库名和 Token 权限
- 无法识别技术栈:生成通用模板,提示用户手动补充
- PR 创建失败:输出文件内容到飞书消息,让用户手动创建8.4 生成文件的模板
以下是各文件的生成模板。Agent 会根据仓库分析结果填充具体内容。
CLAUDE.md 模板
# Project: {project_name}
## Overview
{从 README.md 提取的项目描述}
## Tech Stack
- {framework} {version}
- {language} ({mode})
- {css_framework}
- {orm} + {database}
- Auth: {auth_solution}
## Project Structure{从目录分析生成的结构树,只列主要目录}
## Code Conventions
- {从 .eslintrc / prettier 提取的代码风格规则}
- {从目录结构推断的命名约定}
- {从已有代码推断的架构约定}
## Important Context
- {项目业务背景}
- {关键的业务逻辑说明}
- {第三方服务集成说明}
## Do NOT
- 不要修改 {敏感目录} 下的文件,除非明确要求
- 不要删除或修改现有的数据库 migration 文件
- 不要在前端暴露任何 API Key 或密钥
- 不要修改 CI/CD 配置文件,除非明确要求
- {项目特有的禁止事项 — 需人工补充}
## Testing
- 测试框架:{test_framework}
- 运行测试:`{test_command}`
- 新功能必须包含对应的测试文件
## Build & Run
- 安装依赖:`{install_command}`
- 开发模式:`{dev_command}`
- 构建:`{build_command}`Spec 文件模板
# Feature: {功能标题}
## Background
{为什么要做这个功能,解决什么问题}
## Requirements
1. {需求点 1}
2. {需求点 2}
3. {需求点 3}
## API Design
### {METHOD} {endpoint}
Request:
```json
{ }Response:
{ }Database Changes
-- 新增表或字段UI Behavior
- {交互行为 1}
- {交互行为 2}
- {响应式设计要求}
Out of Scope
- {明确不在本次迭代范围内的功能}
Acceptance Criteria
- {验收标准 1}
- {验收标准 2}
#### PR 模板
```markdown
## 变更说明
{简要描述本次 PR 的变更内容}
## 关联需求
- 需求链接:{飞书多维表格链接}
- Spec 文件:{specs/feature-xxx.md}
## 变更类型
- [ ] 新功能 (feature)
- [ ] Bug 修复 (fix)
- [ ] 重构 (refactor)
- [ ] 文档 (docs)
- [ ] 测试 (test)
## 变更范围
- [ ] 前端
- [ ] 后端 API
- [ ] 数据库
- [ ] 配置/基础设施
## 测试
- [ ] 已添加/更新单元测试
- [ ] 已在本地测试通过
- [ ] 已测试边界情况
## 截图(UI 变更时必填)
{截图}
## Checklist
- [ ] 代码符合项目编码规范
- [ ] 无硬编码的密钥或敏感信息
- [ ] 数据库变更有对应的 migration 文件
- [ ] API 变更已更新文档Issue 模板 — 需求
---
name: 功能需求
about: 提出新功能需求
title: '[Feature] '
labels: feature
---
## 需求描述
{简要描述需要实现的功能}
## 用户故事
作为 {角色},我希望 {功能},以便 {价值}。
## 验收标准
- [ ] {标准 1}
- [ ] {标准 2}
## 优先级
- [ ] P0 - 紧急
- [ ] P1 - 高
- [ ] P2 - 中
- [ ] P3 - 低
## 补充信息
{设计稿链接、参考资料等}Issue 模板 — Bug
---
name: Bug 报告
about: 报告一个 Bug
title: '[Bug] '
labels: bug
---
## Bug 描述
{简要描述问题}
## 复现步骤
1. {步骤 1}
2. {步骤 2}
3. {步骤 3}
## 期望行为
{应该发生什么}
## 实际行为
{实际发生了什么}
## 环境信息
- 浏览器:
- 操作系统:
- 页面 URL:
## 截图
{如有}8.5 Spec 生成 Skill
产品经理写 Spec 是最关键的环节 — Spec 质量直接决定开发 Agent 的输出质量。这个 Skill 帮助产品经理从需求描述自动生成 Spec 初稿。
创建 skills/requirement/requirement-spec-generate.md:
# requirement-spec-generate
根据需求信息和项目上下文,生成 Spec 文件初稿并提交到 GitHub 仓库。
## 触发条件
- 用户消息包含"生成 Spec"、"写 Spec"、"创建 Spec"
- PRD 审阅通过后自动触发(可选)
## 执行步骤
1. 从记忆中读取需求详情和 PRD 内容
2. 通过 GitHub MCP 读取目标仓库的:
- specs/_template.md(Spec 模板)
- docs/architecture.md(架构文档)
- docs/database-schema.md(数据库 Schema)
- docs/api-conventions.md(API 规范)
3. 基于需求、PRD 和项目上下文,生成 Spec 文件:
- Background:从 PRD 提取
- Requirements:从 PRD 的功能需求转化为技术需求
- API Design:根据 API 规范设计接口(RESTful 格式)
- Database Changes:根据现有 Schema 设计新增表/字段
- UI Behavior:从 PRD 的交互描述转化
- Out of Scope:从 PRD 提取
- Acceptance Criteria:从 PRD 的验收标准转化
4. 通过 GitHub MCP 将 Spec 文件提交到仓库的 specs/ 目录
5. 更新需求记忆,关联 Spec 文件路径
6. 通知开发群:"Spec 已生成,请技术负责人审阅"
## 输出格式
📋 Spec 文件已生成
- 需求:{requirement_title}
- 文件:specs/{feature_name}.md
- PR 链接:[查看]({pr_url})
请 @技术负责人 审阅 Spec 中的 API 设计和数据库变更。
## 示例
### 示例 1
**用户**: 为"新增 Solana 课程模块"生成 Spec
**Agent**:
📋 Spec 文件已生成
- 需求:新增 Solana 课程模块
- 文件:specs/solana-course-module.md
- PR 链接:[查看](https://github.com/hackquest/web-app/pull/201)
Spec 包含:
- 3 个新 API 端点(课程列表、课程详情、进度记录)
- 2 个新数据库表(solana_courses, solana_progress)
- 课程页面 UI 行为描述
请 @技术负责人 审阅 Spec 中的 API 设计和数据库变更。
## 权限要求
- GitHub MCP(仓库读取 + PR 创建权限)
- 飞书消息发送权限
- 记忆读写权限
- 向量数据库读取权限(检索相关技术文档)
## 错误处理
- 仓库中无 Spec 模板:使用内置默认模板
- 无法读取架构文档:生成通用 Spec,标注"需补充技术细节"
- PR 创建失败:将 Spec 内容发送到飞书消息8.6 产品→设计→开发的上下文传递链
项目 AI 就绪后,产品到开发的信息传递链变成:
产品经理 设计师 开发 Agent
│ │ │
▼ ▼ ▼
飞书提需求 Figma 设计稿 读取 Spec 文件
│ │ │
▼ ▼ ▼
Agent 创建需求记录 附 UI Spec 文字描述 读取 CLAUDE.md
│ │ │
▼ ▼ ▼
Agent 生成 PRD UI Spec 写入 Spec 文件 读取架构文档
│ │ │
▼ ▼ ▼
PM 审阅 PRD 设计评审通过 开始写代码
│ │
▼ ▼
Agent 生成 Spec ─────────────────────────────────→ Agent 按 Spec 实现
│ │
▼ ▼
Spec 提交到 GitHub 创建 PR(自动关联需求)关键点:
- 产品的输出物(PRD → Spec)是结构化的、机器可读的
- 设计的输出物(UI Spec)直接写入 Spec 文件的 UI Behavior 部分
- 开发 Agent 拿到 Spec + CLAUDE.md + 架构文档,有足够上下文直接开工
- 整个链路中,Agent 在飞书里辅助产品和设计,在 IDE 里辅助开发
8.7 批量初始化与维护
对于有多个仓库的团队,可以批量初始化:
## 批量初始化用法
**用户**: 批量初始化以下仓库的 AI 环境:
- hackquest/web-app
- hackquest/api-server
- hackquest/course-engine
- hackquest/admin-dashboard
**Agent**:
🚀 批量初始化进行中...
| 仓库 | 技术栈 | 状态 | PR |
|------|--------|------|-----|
| hackquest/web-app | Next.js 15 + TS | ✅ 完成 | [#200](url) |
| hackquest/api-server | Express + TS | ✅ 完成 | [#85](url) |
| hackquest/course-engine | Python + FastAPI | ✅ 完成 | [#42](url) |
| hackquest/admin-dashboard | React + Vite | ✅ 完成 | [#31](url) |
4 个仓库全部初始化完成,请各仓库负责人审阅 PR。维护方面,当项目技术栈变更时(如升级框架版本、新增依赖),可以用同一个 Skill 重新生成:
用户: 更新 hackquest/web-app 的规则文件,我们刚升级到 Next.js 16
Agent: 已检测到 package.json 中 Next.js 版本为 16.0.0,
已更新 CLAUDE.md 和 docs/tech-stack.md,PR: [#250](url)下一篇: 37g 数据分析与运营 Agent — 搭建数据查询和运营分析 Agent,实现即时数据洞察