SuperAPI AI 工具集

implement-issue

编程与开发

查看项目

更新于 10-16 03:21

技能介绍

用途

implement-issue 用于从一个 GitHub issue 的 URL 或编号出发,端到端地完成该 issue 的实现工作,覆盖分支创建、代码库分析与具体编码。

前置检查

技能要求先验证三项条件:

  1. 是否处于 git 仓库:git rev-parse --is-inside-work-tree
  2. gh CLI 是否可用且已认证:gh auth status
  3. 是否存在未提交改动:git status --porcelain

若检查失败则停止并提示用户:不在 git 仓库时提示导航到 git 项目;gh 未认证时提示先运行 gh auth login;存在未提交改动时提示先提交或暂存。

输入

用户提供以下任一形式的 issue 引用:完整 URL(如 https://github.com/owner/repo/issues/123)、短形式(在仓库内时可用 #123 或 123)。

工作流程

第 1 步:提取 issue 信息

使用 gh issue view <ISSUE_NUMBER_OR_URL> --json number,title,body,state,author,labels,milestone,assignees,comments,createdAt,updatedAt 获取元数据,并用 gh repo view --json owner,name,defaultBranchRef 获取仓库信息用于分支命名。解析标题、正文(需求、验收标准、上下文)、标签(工作类型)与评论(补充上下文与澄清)。

第 2 步:同步到最新主分支

检测默认分支(main 或 master),执行 git fetch origin $DEFAULT_BRANCH,再 git checkout $DEFAULT_BRANCH 与 git pull origin $DEFAULT_BRANCH。

第 3 步:创建 issue 分支

分支命名约定为 <type>/<issue-number>-<short-description>。根据标签选择前缀:bug/bugfix 用 fix/;feature/enhancement 用 feat/;docs/documentation 用 docs/;refactor 用 refactor/;test 用 test/;chore 用 chore/;默认用 issue/。示例:Issue #42 "Add user authentication" → feat/42-add-user-authentication;Issue #15 "Fix login redirect bug" → fix/15-fix-login-redirect;Issue #99 "Update README" → docs/99-update-readme。随后执行 git checkout -b <BRANCH_NAME>。

第 4 步:深入分析代码库

在实现前充分理解代码库,包括:项目结构分析(查看目录、配置文件、package.json/Cargo.toml/go.mod 等);理解既有模式(架构、编码模式如错误处理/日志/测试、相关代码、依赖库);并行启动多个 explore 代理分别了解整体架构、与 issue 主题相关的代码与模式、测试模式与约定;并据此确定需要修改的文件、需要新建的文件、需要新增或更新的测试以及需要更新的文档。

第 5 步:制定实现计划

编码前创建详细的 todo 列表,包含理解需求、分析相关代码、具体实现任务、添加/更新测试、运行测试并修复、按需更新文档、最终验证等条目,并标注状态与优先级。

第 6 步:实现解决方案

遵循原则:匹配既有模式、增量修改、边做边测、为复杂逻辑添加注释。每个实现任务标记为进行中、完成修改、对改动文件运行 lsp_diagnostics、再标记完成。

第 7 步:测试

根据 package.json、Makefile 等检测测试命令(如 npm test、yarn test、go test ./...、cargo test、pytest、make test),确保既有测试全部通过、为新功能添加测试、覆盖边界情况。

第 8 步:最终验证

检测并运行 lint 与构建命令,使用 git diff --stat 与 git diff 审查全部改动。

第 9 步:提交改动

执行 git add -A,使用约定式提交信息格式 <type>(scope): <description>,并在提交正文中引用 issue 编号,例如:

git commit -s -m "<type>: <short description>

<detailed description of changes>

Closes #<ISSUE_NUMBER>"

提交信息示例:feat: add user authentication system、fix: resolve login redirect loop、docs: update API documentation。

输出格式

完成后提供:实现摘要(issue 编号与标题、分支名、状态:已实现/部分实现/受阻);改动清单(文件、改动类型、说明);实现细节(2-5 句说明实现内容及如何解决 issue);新增/更新的测试;验证结果(构建、测试、lint、诊断的状态与备注);后续步骤建议(审查改动 git diff origin/<DEFAULT_BRANCH>...HEAD、推送分支 git push -u origin <BRANCH_NAME>、创建 PR gh pr create --title "<PR_TITLE>" --body "<PR_BODY>",或在用户要求时自动创建 PR)。

重要说明

实现前先理解 issue 与代码库;需求不清晰时先询问;只做必要的最小改动;遵循既有代码风格与模式;充分测试避免破坏既有功能;若改动影响公共 API 或面向用户的功能则更新文档。

错误处理

issue 未找到时核对编号/URL 与仓库访问权限;分支已存在时询问用户是使用现有分支还是创建带后缀的新分支;出现合并冲突时报告用户并建议解决步骤;测试失败时排查是既有问题还是本次改动导致;需求不清晰时先向用户澄清;实现受阻时记录阻塞点并建议替代方案。