TAPD 需求评审技能。用于需求澄清或需求拆分结果已回写 TAPD 后,发起评审、@指定评审人、 读取父单和子单评论、汇总待处理意见,并在满足评审通过规则前,驱动 重新澄清或重新拆分。Use this skill whenever the user mentions 需求评审, review需求, 评审澄清结果, 评审拆单结果, TAPD评论处理, 需求review闭环, 需求待审批, or any workflow involving TAPD story review after clarification or evaluation.
82%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
本技能用于围绕 TAPD 需求形成一个可重入的评审闭环。
职责边界:
for approve,并在父单 / 子单评论区 @ 评审人,将单据处理人更新为评审人列表approved本技能不负责:
这些动作应由用户或上层 pipeline 根据本 skill 的结论决定。
workspace_id 可由用户提供,或从项目根目录 project.json 读取| 参数 | 来源 | 必需 | 说明 |
|---|---|---|---|
| 父需求 ID | 用户输入 | 是 | 支持短 ID 或 19 位长 ID |
| workspace_id | 用户输入 > project.json | 是 | TAPD 工作空间 ID |
| phase | 调用方传入 / 本地元数据 / 上下文推断 | 否 | clarification 或 evaluation;优先自动推断,无法判断时再询问用户 |
| mode | 调用方传入 / 本地元数据 / 上下文推断 | 否 | request-review / process-feedback / check-status;优先自动推断 |
| reviewers | 用户输入 / 本地元数据 / 历史评论解析 | 否 | 评审人用户名列表,使用 @用户名 格式;后续轮次默认沿用上一轮评审人 |
| answered_questions | 调用方传入 / questions.md 已回答条目 | 否 | 当上一轮因待确认问题返回 blocked 后,调用方应把当前 phase 最新 round 的已回答问题传回本 skill,用于继续裁决 |
| include_children | 用户输入 / phase 默认值 / 父单结构推断 | 否 | 是否将父单下子单一起纳入评审;evaluation 默认 true,clarification 默认 false |
| sync_children_status | 用户输入 | 否 | 是否将子单也流转到 for approve,默认 false |
| 背景知识 | 用户指定 > AGENTS.md 自动查找 | 否 | 架构文档、模块文档、接口文档等 |
phase按以下优先级确定:
docs/reqs/<父需求短ID>/<phase>-review-meta.yamlclarificationevaluationmode按以下优先级确定:
check-statusfor approve → process-feedbackrequest-reviewreviewers按以下优先级确定:
reviewers:docs/reqs/<父需求短ID>/<phase>-review-meta.yaml【需求评审发起】 评论中解析 @用户名因此,第二次及后续复审时,若用户未重新指定评审人,默认沿用上一轮评审人。
include_children按以下优先级确定:
phase=evaluation → 默认 truephase=clarification → 默认 false当 include_children=true 时,不要求用户手动提供子单列表。系统会自动:
children_idrequest-review用于发起新一轮评审。典型场景:
process-feedback用于读取评论并决定后续动作。典型场景:
check-status用于只检查当前评审状态,不做任何写回。典型场景:
approvedworkspace_id按以下优先级确定:
project.json 中的 workspace_id → 使用 read_file 读取并解析从用户输入提取需求 ID,并同时归一化出短 ID / 长 ID:
short_idlong_idlong_idlong_id 的后 8 位截取为 short_id约束:
long_idshort_idlong_id 后 8 位作为 short_id使用 TAPD MCP stories_get 提取父需求信息:
调用参数:
workspace_id: <workspace_id>
id: <父需求ID>
with_v_status: "1"
fields: "id,name,description,owner,parent_id,children_id,priority_label,v_status"记录以下字段:
idnamedescriptionownerchildren_idv_status如果父需求不存在,终止并告知用户。
当 phase=evaluation 且 include_children=true 时:
children_idid、name、description、v_status若父单没有子需求,则继续流程,但输出中明确标注“当前未检测到子需求,本轮仅评审父单”。
按以下优先级确定:
AGENTS.md,从中识别相关架构文档、模块文档、
安全规范、接口文档等背景知识在分析评论合理性时使用,不足以替代用户确认。
为保证技能可重入,在本地维护评审元数据文件。
路径规则如下:
docs/reqs/<父需求短ID>/<phase>-review-meta.yaml建议至少记录:
short_id: "32139656"
long_id: "1070046748132139656"
story_id: "1070046748132139656"
phase: "clarification"
round: 1
reviewers:
- "@alice"
- "@bob"
previous_owner: "alice"
previous_children_owners: {}
current_review_owners:
- "@alice"
- "@bob"
approval_rule: "any_one_reviewer_approve"
include_children: false
children_ids: []
last_request_comment_ids: []
last_processed_comment_ids: []
status: "waiting_review"如果文件不存在,则视为首次进入该阶段评审。
为避免多轮 review 返工时把父单或子单的既有内容整段覆盖丢失,同时减少本地产物数量,本 skill 在每个评审阶段只维护 1 个供人阅读的评审详情文件。
路径规则:
docs/reqs/<父需求短ID>/clarification-review.mddocs/reqs/<父需求短ID>/evaluation-review.md命名规则:
<phase>-review.md<phase>-review-meta.yamldocs/reqs/32139656/clarification-review.mddocs/reqs/32139656/clarification-review-meta.yamldocs/reqs/32139656/evaluation-review.mddocs/reqs/32139656/evaluation-review-meta.yaml文件内容按轮次追加,至少包含以下章节:
Round N / 发起评审基线快照:本轮发起评审时父单 description 的完整快照Round N / 子单基线快照:每个子单 description 的完整快照(仅 evaluation 且
include_children=true 时需要)Round N / 评审发起评论:本轮发起评审时写入评论区的正文Round N / 评审反馈摘要:处理评论后的结构化意见摘要Round N / 修订保护边界:本轮返工时必须保留的内容清单与修订边界约束如下:
needs_rework 时,上层流程必须把“当前 TAPD 内容 + 评审详情文件中最近一轮的基线快照 /
反馈摘要 / 修订保护边界”一起作为下一轮修订输入description默认通过规则为:any_one_reviewer_approve。
含义:
approve 且 是否阻塞=no,即可视为本轮评审通过approvedapproved 前,应先将处理人从评审人列表恢复为 previous_owner如后续需要支持“全员通过”或更复杂规则,应通过新增 approval_rule 扩展,而不是修改默认语义。
request-review 模式发起评审前检查:
description 不为空reviewers 非空phase=clarification 时父单已完成澄清回写phase=evaluation 时父单已完成拆单说明回写;若要求包含子单,则子单描述也已写回如上述任一条件不满足,终止并告知用户先完成对应前置 skill。
按以下优先级确定轮次:
round + 1【需求评审发起】 标记 → 最大轮次 + 11在发起评审前,先把本轮评审基线写入当前阶段的评审详情文件:
## Round <round> 章节description 的完整快照phase=evaluation 且 include_children=true,在同一轮次章节中追加所有子单的
description 快照这一步的目的不是做归档,而是为后续
needs_rework提供“保留原内容”的修订基线。
for approvephase=evaluation 且 sync_children_status=true,将子需求状态也流转为 for approveowner 为 previous_ownerprevious_children_ownerscurrent_review_owners父单状态是唯一评审完成信号。子单状态仅用于辅助展示,不作为结束条件。
在父单评论区添加标准评论,并 @ 评审人,将单据处理人字段修改为完整评审人列表:
【需求评审发起】
评审阶段:clarification / evaluation
评审轮次:R<round>
评审范围:父单 / 父单+子单
父需求:<名称> #<短ID>
本轮变更摘要:
1. ...
2. ...
请评审人按以下格式反馈:
- 结论:approve / change_required / question
- 范围:父单 / 子单 #<ID>
- 是否阻塞:yes / no
- 反馈内容:...
评审人:
@alice @bob若用户未提供“本轮变更摘要”,则由 Agent 基于当前 description 与上一轮元数据自动总结。
当 phase=evaluation 且 include_children=true 时,在每个子单评论区补充一条简化评论:
【子需求待评审】
所属父需求:<父需求名称> #<父需求短ID>
评审阶段:evaluation
评审轮次:R<round>
请在本子单下评论拆分边界、依赖关系、工时和价值规模是否合理。
@alice @bob更新当前阶段 review 元数据文件:docs/reqs/<父需求短ID>/<phase>-review-meta.yaml
waiting_reviewcurrent_review_ownersapproval_rule输出结构化结果:
## 评审已发起
- 父需求:xxx
- 评审阶段:clarification
- 当前轮次:R1
- 状态:for approve
- 评审人:@alice, @bob
- 下一步:等待评审人评论,随后使用 `process-feedback` 处理process-feedback 模式优先读取父需求当前 v_status:
approved → 先恢复处理人为 previous_owner,再结束并输出“评审已完成”for approve → 继续处理评论读取父单评论:
调用参数:
workspace_id: <workspace_id>
entry_type: "stories"
entry_id: <父需求长ID>当 phase=evaluation 且 include_children=true 时,逐一读取子单评论。
评论筛选规则:
last_processed_comment_ids 中的评论若检测到当前轮次已有评审人发表有效评论,且父单当前处理人仍包含 current_review_owners,
则应立即将处理人恢复为 previous_owner。若本轮同步过子单状态,也按同样规则恢复对应子单
处理人。该恢复操作应为幂等,多次执行不应产生副作用。
将评论整理为“评审意见清单”,每条至少包含:
accept / reject / needs-user-confirmation分类原则:
本技能可以判断评论“是否有修改价值”,但不能擅自改变关键业务方向。涉及业务取舍时必 须向用户确认。
汇总完成后,应将本轮“评审反馈摘要”写回当前阶段评审详情文件的
Round <round>对应章节。
若存在 needs-user-confirmation 项,按以下规则处理:
answered_questions,则输出 verdict=blockedmode=process-feedback 调用本 skill待确认问题的结构至少包含:
question_id:如 R2-Q1round:所属轮次source_comment_id:来源评论 IDscope:父单 / 子单及对应 IDblocking:yes / noquestion:待确认问题正文options:可选答案列表(A/B/C...)recommended_option:推荐选项impact:影响范围answer:用户回答(首次 blocked 时为空)调用方映射到 questions.md 时,应保留以上字段,至少保证 question_id、round、
blocking、question、options、answer 可稳定回传。
若已传入 answered_questions,则先将其与待确认问题按 question_id 对齐,再继续进入修订或回复阶段。
若当前轮次没有新的有效评论,输出:
verdict=waiting_review不做任何写回。
若当前轮次出现任一评审人的 approve 且 是否阻塞=no 评论,则:
previous_ownerapprovedverdict=approvedfor approveverdict=waiting_review输出:
verdict=blockedquestions.md,待用户回答后再次调用 process-feedback输出:
verdict=needs_rework同时需要把以下内容补写回当前轮次章节:
评审反馈摘要修订保护边界修订保护规则:
更新以下字段:
roundlast_processed_comment_idsstatuslast_actionprevious_ownerprevious_children_ownerscurrent_review_ownersapproval_rule输出结构化结果:
## 评审意见已处理
- 父需求:xxx
- 评审阶段:evaluation
- 当前轮次:R2
- 结论:waiting_review / needs_rework / approved / blocked
- 下一步:继续等待评审 / 由上层流程重跑当前阶段 / 用户补充确认信息check-status 模式仅检查父需求状态和元数据:
v_status=approved → 恢复处理人为 previous_owner 后,输出“评审通过”v_status=for approve → 输出“评审中”本模式不读取评论、不修改单据、不更新本地文件。
以下任一条件满足时,本次评审处理可视为结束:
any_one_reviewer_approve 规则后,父需求状态被本 skill 推进为 approved评审完成信号以父单状态为准,不以“评论清空”或“子单都已回复”作为自动结束条件。
为提高自动化稳定性,发起评审时应尽量引导评审人使用以下格式:
结论:approve / change_required / question
范围:父单 / 子单 #12345
是否阻塞:yes / no
反馈内容:...若评审人未按模板评论,也应尽量兼容自然语言,只是在输出中标注“非结构化评论,需人工复核”。
| 错误场景 | 处理方式 |
|---|---|
| TAPD MCP 不可用 | 终止执行,提示用户检查 MCP 配置 |
| 父需求不存在 | 终止执行并提示用户确认需求 ID |
| 父需求未写回 description | 终止执行,提示先运行澄清或拆单 skill |
reviewers 为空 | 终止执行,要求用户指定评审人 |
| 评论读取失败 | 重试一次,仍失败则输出当前状态并提示人工检查 |
| 评审意见冲突严重 | 输出冲突摘要,请用户决策 |
| 子单缺失或部分查询失败 | 继续处理父单,输出异常子单列表 |
| 文件 | 用途 | 何时读取 |
|---|---|---|
../tapd-story-evaluation/references/requirement-doc-template.md | 子需求文档结构参考 | 分析拆单评论时 |
docs/reqs/<父需求短ID>/<phase>-review-meta.yaml 评审元数据docs/reqs/<父需求短ID>/<phase>-review.md 评审详情文件waiting_review / needs_rework / approved / blockedapproved用户输入:评审需求 12345 的澄清结果,评审人 @alice @bob
系统处理:
1. 读取父需求 12345 当前内容和状态
2. 将父单流转为 for approve
3. 在父单评论区发起 R1 评审并 @alice @bob
4. 写入本地 review 元数据
5. 输出“已发起评审”用户输入:处理需求 12345 的拆单评审意见,评审人 @alice @bob
系统处理:
1. 读取父单与子单评论
2. 识别本轮新增评论并汇总意见
3. 输出 verdict=needs_rework 与结构化意见清单
4. 由用户或上层 pipeline 决定是否重跑当前阶段TencentBlueKing/bk-bcs
259aff2
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.