关于 piv-implement-issue
piv-implement-issue 是根据 RCA 文档修复 GitHub Issue 的编码技能,面向在本地 Git 仓库中处理问题的开发者。它先检查代码是否偏离 RCA,再按方案实现、测试和验证并生成报告。
主要功能
- 01检查 RCA 与当前代码是否偏离
- 02按 RCA 方案实现修复
- 03添加测试并运行验证
- 04汇总变更与验证结果
适用场景
- 01落实 GitHub Issue 的既定修复方案
- 02确认 RCA 仍符合当前代码
- 03为评审整理实现报告
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ coleam00/ skills --skill piv-implement-issue安装后在 Claude Code 中输入/piv-implement-issue确认已加载。
详细介绍
实施问题修复:GitHub Issue #$ARGUMENTS
前提条件
此技能基于 RCA 文档修复 GitHub 问题:
- 在本地 Git 仓库中工作,且仓库配置了 GitHub origin
- RCA 文档位于
docs/issues/issue-$ARGUMENTS.md - 已安装并通过身份验证的 GitHub CLI(可选,用于更新状态)
参考 RCA 文档
读取 RCA:docs/issues/issue-$ARGUMENTS.md
可选——查看 GitHub issue 以了解背景:
gh issue view $ARGUMENTS
实施说明
1. 阅读并理解 RCA
- 通读整个 RCA 文档
- 查看 GitHub issue 的详情(issue #$ARGUMENTS)
- 理解根本原因
- 查看建议的修复策略
- 记录所有需要修改的文件
- 查看测试要求
2. 验证当前状态,并检查是否存在偏差
更改前:
- 确认该 issue 仍然存在。
- 偏差检查:读取 RCA 指定的每个文件,并与 RCA 中的“当前代码”片段/行号引用进行比较。
如果代码自 RCA 编写后发生了实质性变化,则停止——指出偏差,并建议重新运行
piv-investigate-issue调查 issue #$ARGUMENTS,而不是实施已过时的方案。 - 确认建议的修复仍能解决根本原因——不要悄然偏离方案。
2b. 切换到正确的分支
- **在 worktree 中?**使用当前 worktree(它是为此工作创建的)。
- **位于基准分支且工作树干净?**创建修复分支——
git checkout -b fix/issue-$ARGUMENTS-<slug>(通过git symbolic-ref refs/remotes/origin/HEAD检测基准分支;不要硬编码main)。 - **已位于功能/修复分支?**使用当前分支(如果分支名未包含 #$ARGUMENTS,则发出警告)。
- **位于基准分支且工作树有未提交更改?**停止——请用户先提交或暂存更改。
3. 实施修复
按照 RCA 的“建议修复”部分进行:
对于每个需要修改的文件:
a. 阅读现有文件
- 理解当前实现
- 找到 RCA 中提到的特定代码
b. 进行修复
- 按照 RCA 中的说明实施更改
- 严格遵循修复策略
- 保持代码风格和惯例
- 如果修复不易理解,则添加注释
c. 处理相关更改
- 更新修复影响到的相关代码
- 确保整个代码库保持一致
- 按需更新导入
**遵循计划:**按 RCA 的说明实施——不要重构无关代码,也不要擅自添加计划外的“改进”。如果必须偏离计划,请注明更改内容及原因,并在报告(和 PR)中说明。
4. 添加/更新测试
按照 RCA 中的“测试要求”进行:
创建测试用例以:
- 验证修复能解决问题
- 测试与该 bug 相关的边缘情况
- 确保相关功能没有回归
- 测试引入的所有新代码路径
测试文件位置:
- 遵循项目的测试结构
- 与源文件位置对应
- 使用描述性测试名称
测试实施:
def test_issue_$ARGUMENTS_fix():
"""Test that issue #$ARGUMENTS is fixed."""
# Arrange - set up the scenario that caused the bug
# Act - execute the code that previously failed
# Assert - verify it now works correctly
5. 运行验证
执行 RCA 中的验证命令:
# Run linters
[from RCA validation commands]
# Run type checking
[from RCA validation commands]
# Run tests
[from RCA validation commands]
如果验证失败:
- 修复问题
- 重新运行验证
- 全部通过后再继续
6. 验证修复
手动验证:
- 按照 RCA 中的复现步骤操作
- 确认问题不再出现
- 测试边缘情况
- 检查是否产生意外副作用
7. 更新文档
如有需要:
- 更新代码注释
- 更新 API 文档
- 如果 README 面向用户,则更新 README
- 添加有关此修复的说明
输出报告
修复实施摘要
GitHub Issue #$ARGUMENTS:[简短标题]
Issue URL:[GitHub issue URL]
根本原因(来自 RCA): [用一行概述根本原因]
所做更改
修改的文件:
-
[file-path]
- 更改:[更改内容]
- 行号:[行号]
-
[file-path]
- 更改:[更改内容]
- 行号:[行号]
添加的测试
创建/修改的测试文件:
- [test-file-path]
- 测试用例:[列出添加的测试函数]
测试覆盖范围:
- ✅ 修复验证测试
- ✅ 边缘情况测试
- ✅ 防止回归测试
验证结果
# Linter output
[Show lint results]
# Type check output
[Show type check results]
# Test output
[Show test results - all passing]
验证
手动测试:
- ✅ 按照复现步骤操作——问题已解决
- ✅ 测试边缘情况——全部通过
- ✅ 未引入新问题
- ✅ 保留原有功能
与 RCA 的偏差
[无——按规范实现 | 列出与 RCA 的每项偏差及原因]
文件摘要
更改总计:
- 修改了 X 个文件
- 新建了 Y 个文件(测试)
- 新增了 Z 行
- 删除了 W 行
已准备好提交
所有更改均已完成并通过验证。已准备好使用 piv-commit 技能。
建议的提交信息:
fix(scope): resolve GitHub issue #$ARGUMENTS - [brief description]
[Summary of what was fixed and how]
Fixes #$ARGUMENTS
注意: 在提交信息中使用 Fixes #$ARGUMENTS,在合并到默认分支后会自动关闭对应的 GitHub 问题。
可选:更新 GitHub 问题
向问题添加实现说明:
gh issue comment $ARGUMENTS --body "Fix implemented in commit [commit-hash]. Ready for review."
更新问题标签(如有需要):
gh issue edit $ARGUMENTS --add-label "fixed" --remove-label "bug"
关闭问题(如果未通过提交信息自动关闭):
gh issue close $ARGUMENTS --comment "Fixed and merged."
注意事项
- 如果 RCA 文档缺失或不完整,请先使用
piv-investigate-issue技能为问题 #$ARGUMENTS 创建该文档 - 如果发现 RCA 分析有误,请记录调查结果并更新 RCA
- 如果在实现过程中发现其他问题,请记录下来,并为其单独创建 GitHub 问题和 RCA
- 严格遵循项目编码规范
- 确保所有验证均通过后再宣布完成
- 提交信息
Fixes #$ARGUMENTS会将提交与 GitHub 问题关联