name: describe-pr description: 根据仓库模板生成全面的PR描述
生成PR描述
您被任务根据仓库的标准模板生成全面的拉取请求描述。
步骤遵循:
-
读取PR描述模板:
- 首先,检查
thoughts/shared/pr_description.md是否存在 - 如果不存在,通知用户需要在
thoughts/shared/pr_description.md创建PR描述模板 - 仔细阅读模板以理解所有部分和要求
- 首先,检查
-
识别要描述的PR:
- 检查当前分支是否有相关的PR:
gh pr view --json url,number,title,state 2>/dev/null - 如果当前分支没有PR,或者如果在main/master分支上,列出打开的PR:
gh pr list --limit 10 --json number,title,headRefName,author - 询问用户想要描述哪个PR
- 检查当前分支是否有相关的PR:
-
检查现有描述:
- 检查
thoughts/shared/prs/{number}_description.md是否已存在 - 如果存在,读取它并通知用户将更新它
- 考虑自上次描述写入以来发生了什么变化
- 检查
-
收集全面的PR信息:
- 获取完整的PR差异:
gh pr diff {number} - 如果收到没有默认远程仓库的错误,指示用户运行
gh repo set-default并选择适当的仓库 - 获取提交历史:
gh pr view {number} --json commits - 审查基础分支:
gh pr view {number} --json baseRefName - 获取PR元数据:
gh pr view {number} --json url,title,number,state
- 获取完整的PR差异:
4b. 收集推理历史(如果可用):
- 检查推理文件是否存在:
ls .git/claude/commits/*/reasoning.md 2>/dev/null - 如果存在,聚合它们:
bash "$CLAUDE_PROJECT_DIR/.claude/scripts/aggregate-reasoning.sh" main - 这显示了在最终解决方案之前尝试了哪些方法
- 保存输出以便包含在PR描述中
-
彻底分析更改:(深入思考代码更改、其架构含义和潜在影响)
- 仔细阅读整个差异
- 对于上下文,读取任何在差异中未显示但被引用的文件
- 理解每个更改的目的和影响
- 识别面向用户的更改与内部实现细节
- 寻找破坏性更改或迁移要求
-
处理验证要求:
- 查找模板中“如何验证”部分的任何清单项
- 对于每个验证步骤:
- 如果是可以运行的命令(如
make check test、npm test等),运行它 - 如果通过,将复选框标记为已勾选:
- [x] - 如果失败,保持未勾选并记录失败原因:
- [ ]并说明 - 如果需要手动测试(UI交互、外部服务),保持未勾选并通知用户
- 如果是可以运行的命令(如
- 记录任何无法完成的验证步骤
-
生成描述:
- 彻底填写模板中的每个部分:
- 基于分析回答每个问题/部分
- 具体说明解决的问题和所做的更改
- 在相关处关注用户影响
- 在适当部分包含技术细节
- 编写简洁的变更日志条目
- 如果找到推理文件(来自步骤4b):
- 在“## How to verify it”之前添加“## Approaches Tried”部分
- 包含聚合的推理,显示失败的尝试和学到的内容
- 这有助于审阅者理解过程,而不仅仅是结果
- 确保所有清单项都被处理(勾选或解释)
- 彻底填写模板中的每个部分:
-
保存描述:
- 将完成的描述写入
thoughts/shared/prs/{number}_description.md - 向用户显示生成的描述
- 将完成的描述写入
-
更新PR:
- 直接更新PR描述:
gh pr edit {number} --body-file thoughts/shared/prs/{number}_description.md - 确认更新成功
- 如果任何验证步骤保持未勾选,提醒用户在合并前完成它们
- 直接更新PR描述:
重要注意事项:
- 此命令适用于不同的仓库 - 始终读取本地模板
- 要彻底但简洁 - 描述应易于扫描
- 关注“为什么”和“什么”一样重要
- 突出显示任何破坏性更改或迁移说明
- 如果PR涉及多个组件,相应组织描述
- 尽可能尝试运行验证命令
- 明确沟通哪些验证步骤需要手动测试