Team AI Workflow

团队 AI 研发工作流

15 环节 · 12 skills · 更新于 2026-08-24(含实现前置 Gate · git 三件套 + PR 合并 · UI 规范 · 需求标识)

流程总览

需求阶段 前置 0 — 6
前置 0
需求探索
consensus-doc(复杂:PRD+原型必产;UI 类 → 提取 UI规范)
1
建共识
consensus-doc · 共识-{模块}-{需求标识}.md
2
发基线
consensus-doc
3
扫描
consensus-scan
4
待确认闭环
consensus-scan
5
评审
consensus-doc
6
拆解
consensus-doc
A
Gate A · 评审就绪 (5 后)共识基线发布,规则编号完整,才可拆解子需求;技术方案评审走「评审机制」四选一(见团队配置.md:需求级覆盖 > 项目级默认 > 默认 self-check):gate(正式 Gate 评审留痕)/ self-check(AI 自查通过即 frozen)/ review(先给人 review 再 frozen)/ review-auto(先给用户 review 给选项 A/B/C,用户跳过则 AI 自查冻结)
契约阶段 7 — 9
7
契约
story-to-contract
8
复核(FE/QA)
story-to-contract
9
澄清
story-to-contract
B
Gate B · 契约冻结 (8 后)FE+QA 两轮复核通过 + CONS-02 双文件一致,才可判级进实现
C
Gate C · 实现前置(强制) 契约冻结 → 实现之间,缺一项不得开始实现:① 判级留痕 ② 复杂必产方案且 frozen ③ 工程基线三问 ④ 核验回查判级匹配
实现阶段 ★ 判级 / ● 纪律 / 10
★ 判级 / 技术方案
判级 / 技术方案
tech-design(方案 draft→frozen)
● 实现纪律
实现纪律
implement-discipline(前端实现读 UI规范)
10 · Gate D
交付核验
story-to-contract(三层)
收尾阶段 11 — 12
11
变更传播
change-propagation
12
沉淀
lesson-deposit

项目概览扫描(project-overview,先概览后详情)

强制关卡总览

A

Gate A · 评审就绪

(5 后)共识基线发布,规则编号完整,才可拆解子需求。

B

Gate B · 契约冻结

(8 后)FE+QA 两轮复核通过 + CONS-02 双文件一致,才可判级进实现。

C

Gate C · 实现前置(强制)

(★ 前)① 判级留痕 ② 复杂必产方案且 frozen ③ 工程基线三问 ④ 核验回查判级匹配。

D

Gate D · 交付核验

(10)三层:① 设计核验 ② 契约核验 ③ PRD/业务核验;判级缺失/错判 → 不通过。

实现前置 Gate(契约冻结 → 实现之间,缺一项不得开始实现)

判级矩阵(tech-design)

级别触发条件要求
复杂 跨模块、新架构/greenfield、契约变更、状态机、外部系统集成 必出技术方案文档 + 评审(frozen 才进实现);需求探索必产 PRD+原型(UI 类);完整实现纪律
常规 单模块、CRUD、纯 UI、已有模式简单延伸 跳过方案;轻量实现纪律(lint 单次 + 工程基线三问复核)
安全敏感 密钥/权限/支付/资金/数据(叠加在任一级之上) 强制安全扫描(Semgrep 或等价工具),不得降级

实现纪律(implement-discipline,分级)

工具降级记录在案,交付核验可见;留痕 docs/records/<id>-record.md(实现记录 + 核验记录两节)。

契约防漂移(story-to-contract)

双文件单一事实源

  • 字段级结构(Schema/参数/响应字段)+ 示例值 → OpenAPI yaml 唯一权威
  • 业务语义(错误语义/状态转换/幂等/审计/测试要点)→ md
  • md 接口清单 = 导航摘要表,行与 yaml paths 一一对应(含完整路径前缀)
  • 双文件同生同步,禁止只改其一

强制检查与状态

  • CONS-02 Blockermd 接口清单行 ↔ yaml paths 集合双向相等((方法, 完整路径) 精确匹配),不一致 = 打回
  • 契约状态三态锁定:草案 / 待评审 / 已冻结,禁止自创状态词
  • 部分实施受阻 → 开放问题表(阻塞接口/字段列 + Q-xxx 行级标记)
  • 已冻结 = 全部行已冻结 + CONS-02 双文件一致

产物目录(8 个)

目录内容命名
docs/spec/共识、规则索引、团队配置、变更摘要(L1 索引 + L2 模块详情 变更摘要-<模块>.md)、影响清单{模块}-共识文档.md规则索引.md
docs/api/契约双文件(叙事 + OpenAPI){platform}-{item_id}-{prd_slug}-api-contract.md + -openapi.yaml
docs/design/技术方案(draft→frozen)<id>-<module>-{prd_slug}-design.md
docs/prd/需求文档<date>-<slug>-prd.md
docs/prototype/交互原型<date>-<slug>-prototype(与 PRD 同 slug,保证回溯链)
docs/records/实现/核验记录(两节)<id>-{prd_slug}-record.md(与技术方案同 id,优先后端子任务 key)
docs/lessons/经验沉淀(三硬标准,90 天无引用归档)<date>-<slug>-{prd_slug}-lesson.md
docs/ui/项目级 UI 规范(复杂 UI 原型后提取,前端实现必读)UI规范.md(模板见 templates/UI规范模板.md)

需求标识(命名唯一性 = 合并 Gate)

命名规则

  • 共识文档:共识-{模块}-{需求标识}.md(如 共识-桌面壳-m1.md
  • 规则编号:CON-R-{需求标识}-{序号}(各需求独立编号域,不撞号)
  • 分支:feature/<需求标识>(如 feature/m1feature/login
  • 复杂需求用 PRD slug(2026-08-14-m1-prd.mdm1);常规需求手给短 slug(login);检测 docs/ 已用 slug 避免重复

唯一性 Gate(合并时强制)

  • 主分支 = 唯一事实源:新增文档名与主分支已有 slug 冲突 → 检测 → 自动改名 + 同步改引用 → 再合并
  • 需求不做 → feature 分支留着(代码+文档都不合并),主分支干净
  • 改共享文档前 → 先 merge 主分支最新(减少冲突窗口)
  • 契约/设计/记录在 feature 分支生成,不直接写主分支

git 工具规范(phper666-git-*,全员基础工具)

工具场景要点
git-commit 提交 / 写 commit message Conventional Commits:<type>(<scope>): <summary>;type 必选(feat/fix/refactor/perf/docs/test/chore/build/ci/style/revert);scope 可带需求标识(m1);summary 祈使句 ≤50 字符;body 只写非显然 why;commit 在 feature/<需求标识> 上做
git-worktree 多需求并行开发 一需求一 worktree = feature/<需求标识> 分支,独立工作区互不干扰;git worktree add ../<repo>-<需求标识> feature/<需求标识>;需求不做留分支/worktree,合并后清理(git branch -d + git worktree prune
git-rollback 回滚 / 撤已合并需求 固定三步:先列历史看清再动 → 双重确认 → 自动备份(backup/<分支>-<时间戳>);合并过主分支 = revert 不 reset(保留历史);reset --hard 仅限本地未推送
git-pr 提 PR / 合并需求到主分支 按合并模式 full/semi/manual 走流程(见下节);push/提 PR 前最小检查:只跑受影响测试、修复再 push、禁 raw force 用 --force-with-lease、有 CI 则 PR 后查 CI(无 CI 跳过);合并前做需求标识唯一性 gate,合并后清理 feature/<需求标识> 分支

PR 合并模式(git-pr,feature → PR → 主分支)

配置(两级)

  • 需求级覆盖:表「合并模式(需求级覆盖)」项目 | 需求标识 | 模式,命中当前需求标识 → 用该模式
  • 项目级默认:表「合并模式(项目级默认)」项目 | 默认模式,需求级无覆盖 → 用项目默认
  • 查找顺序:需求级覆盖 > 项目级默认 > 问用户
  • 切换模式 = 改 docs/spec/团队配置.md 一行,不改 skill 代码

合并 gate(合并前强制)

  • 主分支 = 唯一事实源:检测 PR 新增文档名 vs 主分支已有 slug(需求标识唯一性)
  • 冲突 → 自动改名m1m1b)+ 同步改所有引用(文档名/规则编号/契约/设计/记录)→ 再合并
  • 检测放在合并时而非生成前(避免生成前竞态窗口)
  • 需求不做 → 不合并,feature 分支留着(主分支干净);合并后清理分支 + 标记完成
模式流程merge 按钮谁按检测合并
full 全自主 AI 提 PR → 合并 gate → AI 自己 merge → 清理分支 AI 不需要(AI 自己合,结果自知)
semi 半自主 AI 提 PR → 等人工 approve → merge → 检测合并 → 清理分支 AI 或人工(按团队约定) 要(gh pr view <编号> --json state,mergedAt,state=MERGED = 已合并)
manual 人工 AI 提 PR → 人工全权 merge → 后续推进时 检测合并 → 清理分支 人工 要(同上;gh 不可用时兜底 git branch --merged origin/main

三模式区别只在「merge 按钮谁按」;「检测合并」是 semi/manual 通用能力(merge 非 AI 自做时 AI 无法自知结果,必须显式检测),full 不需要。检测合并也用于继续对话时判断上一步 PR 是否已合并——未合并则提示用户,不静默继续。合并是变更 → 需要时走 change-propagation 更新变更摘要。

配置说明(docs/spec/团队配置.md 的可配置项 / 模式 / 修改方法)

UI 规范(docs/ui/UI规范.md)

验证基线 evals/:低频跑(大改动 / 发布时全量),覆盖 git 三件套触发 + 需求标识产出断言;日常小改静态检查即可。