name: gitcode-issue-review description: | 对 GitCode Issue 进行深度内容评审,包括信息完整度检查、需求分析、 需求分解、开发实现建议和安全隐患排查。在 Issue 评论区发布评审意见。
TRIGGER when: 用户要求 review issue、评审issue、分析issue需求、 分解issue、issue实现建议、评估issue质量、检查issue完整性、 或对 GitCode issue 做深度分析。与 issue triage(分类贴标签) 不同,本 skill 关注内容深度和开发可行性。只要是围绕 issue 内容 质量做深度分析,即应触发。
GitCode Issue 深度评审
对 GitCode Issue 进行深度内容评审:检查信息完整度、分析需求、分解任务、提出实现建议, 并在 Issue 评论区发布评审意见。
与 gitcode-issue-triage 的区别
| 维度 | gitcode-issue-triage | gitcode-issue-review(本 skill) |
|---|---|---|
| 关注点 | 分类、标签、优先级 | 内容质量、需求深度、开发可行性 |
| 输出 | 类型判断 + 标签建议 | 需求分析 + 任务分解 + 实现方案 |
| 目标 | 快速归类分流 | 深度理解后推动落地 |
两个 skill 互补:triage 适合新 issue 的快速分流,review 适合需要深入分析后再动手的 issue。
适用范围
- 需要弄清楚"这个 issue 到底要做什么"时
- 开发前需要技术方案建议时
- 发现 issue 描述不清需要指出缺失信息时
- 需要把大 issue 拆成可执行子任务时
- Bug report 需要评估复现步骤是否完备时
核心工作流
第一步:收集 Issue 信息
# Issue 详情(标题、描述、标签、受理人、里程碑)
gc issue view <number> --json
# Issue 评论区(了解已有讨论和补充信息)
gc issue comments <number> --json
# 关联的 PR(了解是否已有修复方案)
gc issue prs <number>
# 关联关系(了解 issue 之间的依赖)
gc issue relations <number>
从 gc issue view --json 中提取:
- 标题、描述(body)、作者、状态、创建/更新时间
- 当前标签、受理人、里程碑
- 描述中是否包含:复现步骤、期望行为 vs 实际行为、环境信息
第二步:代码库调研
根据 issue 涉及的功能区域,了解相关代码:
# 根据 issue 关键词搜索相关代码
grep -r "<issue关键词>" --include="*.go" .
# 了解相关模块的结构
find . -path "*<module>*" -name "*.go" | head -20
# 查看最近的 git log(了解模块变更历史)
git log --oneline -20 -- <related_path>/
调研目的:
- 理解 issue 涉及模块的现有实现
- 评估修改范围和复杂度
- 为后续实现建议提供代码级参考
第三步:多维度分析
1. 信息完整度检查
根据 issue 类型分别检查:
Bug Report 检查清单:
- 问题现象:发生了什么?(预期 vs 实际)
- 复现步骤:最小复现操作是什么?
- 环境信息:版本号、OS、相关配置
- 影响范围:影响了哪些用户/功能
- 日志/截图/错误信息:是否有支撑证据
- 是否可稳定复现 vs 偶发
Feature Request 检查清单:
- 需求背景:为什么要做?解决什么问题?
- 功能描述:具体要做什么?(What,不是 How)
- 验收标准:做到什么程度算完成?
- 优先级/紧迫度:为什么现在要做?
- 影响范围:涉及哪些模块、用户
缺少关键信息时:在评审结论中列出,建议添加 needs-info 标签待作者补充。
2. 需求分析
从技术角度分析 issue 提出的需求:
- 核心诉求:用一句话概括本质问题
- 需求边界:做什么 + 不做什么(Scope 清晰比什么都重要)
- 技术可行性:基于现有代码库架构是否可行
- 影响评估:涉及多少模块、多少文件、是否破坏性变更
- 优先级判断:是否阻塞其他功能、是否有 workaround
- 潜在坑点:容易出错的地方、需要特别注意的边界条件
3. 需求分解
将 issue 拆解为可独立执行的子任务:
### 需求分解
#### Sub-task 1: <标题> [预估: Xh]
- 做什么
- 涉及文件
- 依赖前提
#### Sub-task 2: <标题> [预估: Xh]
- 做什么
- 涉及文件
- 依赖前提
拆分原则:
- 每个子任务可独立完成和验证
- 按依赖关系排序(先基础后上层)
- 每个子任务预估工作量(XS < 2h, S < 1d, M < 3d, L > 3d)
4. 开发实现建议
基于代码库调研,给出具体的实现指导:
- 推荐方案:技术路线和原因
- 备选方案(如有):权衡利弊
- 涉及的关键文件:列出现有文件(需修改的)和新增文件
- 核心逻辑设计:关键函数/接口的设计思路,必要时给出伪代码
- 数据库/配置变更(如有):migration、新增配置项
- 测试策略:需要覆盖的测试场景(单元/集成/e2e)
- 风险点:性能瓶颈、兼容性问题、安全注意事项
- 文档同步:需要更新的文档(README、CHANGELOG、API 文档等)
5. 安全隐患排查
检查 issue 本身是否存在安全问题:
- 描述中是否包含敏感信息(密码、token、内网地址)
- 需求本身是否有安全风险(权限绕过、数据泄露)
- 修复方案是否会引入新的安全隐患
第四步:生成评审报告
报告结构
## Issue 深度评审报告
### 整体评价
[1-2 句话评估 issue 质量和可行性]
### Issue 基本信息
- 标题
- 类型:[bug/feature/enhancement/docs/question]
- 当前状态
- 关联 PR
### 信息完整度
| 检查项 | 状态 | 说明 |
|--------|------|------|
| ... | ✅/❌/⚠️ | ... |
**缺失信息**(如有):
- [ ]
### 需求分析
**核心诉求**: [一句话]
**需求边界**:
- 范围内:...
- 范围外:...
**技术可行性**: [可行/需调研/不可行] + 理由
**影响范围**: X 模块, ~Y 文件
**潜在坑点**:
1. [ ]
### 需求分解
| # | 子任务 | 涉及模块 | 预估 | 依赖 |
|---|--------|----------|------|------|
| 1 | ... | ... | S | - |
| 2 | ... | ... | M | #1 |
### 开发实现建议
**推荐方案**:
[技术路线概述]
**关键设计要点**:
1. ...
2. ...
**涉及文件**:
- 修改: `path/to/file.go` — 改什么
- 新增: `path/to/new_file.go` — 做什么
**测试建议**:
- 单元测试:...
- 集成测试:...
- 手动验证:...
**风险提示**:
- [ ]
### 安全审查
| 检查项 | 状态 |
|--------|------|
| 描述无敏感信息 | ✅/❌ |
| 需求无安全隐患 | ✅/❌ |
| 方案无新增风险 | ✅/❌ |
### 最终建议
- [ ] 信息充分,可开始开发
- [ ] 需要补充信息后再评估
- [ ] 建议拆分为多个小 issue
- [ ] 需要进一步技术调研
- [ ] 建议关闭/合并到其他 issue
第五步:发布评审意见
# 发布整体评审报告
gc issue comment <number> --body-file review-report.md
# 如需补充简短评论
gc issue comment <number> --body "简要评论内容"
# 如需建议标签
gc issue label <number> --add <labels>
发布前与用户确认,尤其当评审结论是"需要补充信息"或"建议关闭"时。
评审原则
- 先理解再评判:阅读完整描述和已有评论,不凭标题下结论
- 先验证再建议:通过代码搜索确认技术可行性,不在空中楼阁上给方案
- 具体优于笼统:实现建议落实到具体文件和函数级别
- 拆解优于通吃:大 issue 拆成小任务,降低启动门槛
- 开发者视角:评审结论要能直接指导开发,不只是"写得好/不好"
- 尊重作者:假设作者有合理意图,缺失信息先问再判
注意事项
- issue 质量参差不齐,对描述简陋的 issue 重点做信息完整度检查,告知需要补充什么
- 需求分解的粒度适中:太粗无法指导开发,太细变成 micromanagement
- 实现建议定位在"指导"而非"替代",给开发者留发挥空间
- 与
gitcode-issue-triage配合:先用 triage 分流,再用 review 深入 - 如果 issue 已有大量讨论,先总结已有共识再补充新观点
- 安全审查只检查 issue 描述本身,不扩展到代码审查
示例用法
完整 Issue 评审:
全面评审 Issue #42,我需要搞清楚这个需求要做什么、怎么实现
Bug 信息检查:
review Issue #15 这个 bug report,看看信息够不够开始修复
需求分解:
帮我把 Issue #128 拆成可以独立开发的子任务
实现建议:
分析 Issue #67,给出具体的技术实现方案
评审但不发布:
评审 Issue #89 给我看,先不要评论到 issue 上