Skip to Content

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编写中设计中产品经理审阅 PRDrequirement-status-change✅ PM 确认
设计中开发中设计评审通过requirement-status-change✅ 设计评审
开发中待审查开发者提交 PRcode-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
GitHubPR 创建/更新code-pr-review
GitHubCI 完成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_result

4.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 从记忆中读取需求信息,生成 PRD

4.5 错误处理和重试

错误类型处理策略
MCP 工具调用超时自动重试 1 次,仍失败则通知用户
飞书 API 限流等待 1 秒后重试,最多 3 次
LLM 生成内容不符合格式重新生成 1 次,附加更严格的格式约束
记忆读取失败从多维表格重新查询数据
权限不足立即通知用户,不重试

5. Human-in-the-Loop 设计

5.1 审批节点

审批节点审批人审批方式超时处理
需求评审产品负责人飞书消息卡片(通过/拒绝)24h 未处理提醒,48h 升级到 CTO
PRD 审阅产品经理飞书文档评论 + 确认消息24h 提醒
设计评审设计负责人 + 技术负责人飞书消息卡片24h 提醒
代码审查指定 ReviewerGitHub PR Review48h 未处理自动提醒
测试验收测试负责人飞书消息卡片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 自动执行:

  1. 更新需求状态为”已通过”
  2. 自动触发 PRD 生成

Agent 回复:

✅ 需求”新增 Solana 课程模块”已通过评审 正在自动生成 PRD…

6.3 第三步:PRD 生成

Agent 自动执行(无需人工触发):

  1. 从记忆读取需求详情
  2. 检索知识库中的相关文档(课程体系架构、已有课程模板、Solana 技术资料)
  3. 生成 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:05PRD 生成完成创建文档,通知 PM
Day 2 10:00PRD 审阅通过更新状态为”设计中”李四确认
Day 3 16:00设计评审通过更新状态为”开发中”设计评审会
Day 7 11:00张三提交 PR生成审查摘要,关联需求张三提交 PR
Day 8 15:00CR 通过更新状态为”测试中”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 ServerPR 检测和代码审查开源免费代码 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.mdAI Agent(Claude Code / Kiro / Cursor)告诉 Agent 项目技术栈、代码规范、禁止事项
docs/architecture.mdAI Agent + 新人系统架构、模块划分、数据流
docs/tech-stack.mdAI Agent技术选型、版本号、编码约定
docs/api-conventions.mdAI Agent + 前后端开发API 命名、请求/响应格式、错误码规范
docs/database-schema.mdAI Agent + 后端开发表结构、字段说明、索引策略
specs/_template.md产品经理Spec 文件模板,产品按此格式写需求
.github/PULL_REQUEST_TEMPLATE.md开发者 + AI AgentPR 描述规范,自动关联需求
.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,实现即时数据洞察

Last updated on