mcpField
C
codely-plan-phase-implement-github

codely-plan-phase-implement-github

github.com/codelytvAgent 工作流296158 次安装1 天前更新
代码仓库

关于 codely-plan-phase-implement-github

用于逐阶段实现以 GitHub Issue 编排的计划,每次只处理一个阶段。它涵盖仓库与阶段确认、实现、验证,并在继续或创建拉取请求前等待用户批准。

主要功能

  1. 01选择当前未完成阶段
  2. 02核对仓库及 Issue 关联
  3. 03每次仅实现一个阶段
  4. 04更新 Issue 检查清单
  5. 05停止前验证更改
  6. 06创建拉取请求前等待批准

适用场景

  1. 01实现父计划 Issue 中的一个阶段
  2. 02处理已关联的子阶段 Issue
  3. 03准备经过验证、供用户审阅的更改

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/codelytv/agent-harness --skill codely-plan_phase-implement-github

安装后在 Claude Code 中输入/codely-plan_phase-implement-github确认已加载。

详细介绍

🫡 实施一个计划阶段

[!CRITICAL] 每次调用只能实施一个阶段。完成当前阶段后,停止并等待用户审查更改。未经用户明确批准,绝不继续下一个阶段。

[!CRITICAL] 绝不合并拉取请求。 此技能可以创建功能分支、提交更改、推送分支并创建拉取请求,但何时合并由用户决定。合并后,阶段议题会关闭。

🎯 输入

调用此技能时使用 /codely-plan-phase-implement-github <github-issue-url>。URL 可以指向以下任一内容:

  • 阶段(子)议题:实施该阶段。
  • 父计划议题:找到当前阶段并实施(见下文)。

如果未提供 URL,请先向用户索要,然后再进行任何操作。

🗂️ 仓库

计划及其阶段以 GitHub 议题的形式存储在当前工作目录所属的仓库中,拉取请求也会在该仓库中创建。绝不硬编码仓库:让 gh 根据本地 Git 远程仓库解析。

gh issue view <number>
gh issue develop <number> --checkout
gh pr create --title "..." --body "..."

使用 gh repo view --json nameWithOwner --jq .nameWithOwner 确认 gh 解析出的仓库,并检查所提供的 URL 是否属于该仓库。如果不属于,请停止并要求用户从该仓库的克隆目录运行此技能:阶段分支必须创建在你实施任务的同一仓库中。

🔍 确定当前阶段

  1. 使用 gh issue view <url> 查看给定议题。
  2. 如果该议题是阶段(子)议题(其中包含 Part of #<parent> 引用和待办清单),则应实施该阶段。
  3. 如果该议题是父计划议题(其中包含指向子议题的 Phases 清单),则应实施该清单中第一个仍处于开放状态的子议题。读取该子议题并实施它。
  4. 如果所有子议题都已关闭,请告知用户所有阶段均已完成,不要实施任何内容。

🪜 实施计划阶段的步骤

  1. 按照上述规则,确定要实施的阶段议题。

  2. 为该阶段议题创建并检出关联分支,使分支与议题关联:

    gh issue develop <phase-issue-number> --checkout
    
  3. 实施该阶段的待办事项。不要实施其他阶段的内容。

  4. 使用 gh issue edit <phase-issue-number> --body ... 更新阶段议题正文,并勾选已完成的待办事项(- [x] ...)。

  5. 验证更改(类型检查、lint 和测试),并在继续之前修复发现的问题。

  6. 停止。 向用户说明所做的更改,并提供 3 个符合 Conventional Commits 规范的提交/拉取请求标题备选项(例如 feat:、fix:、refactor:、test:、docs:)。3 个备选项应使用不同且合理的类型。标题应简洁,方便用户回复“使用标题 1 创建 PR”之类的指示。

  7. 用户选定标题后,提交更改、推送分支,并创建引用阶段议题的拉取请求,以便合并时自动关闭该议题:

    gh pr create \
      --title "<chosen title>" \
      --body "Closes #<phase-issue-number>"
    
    • 如果这是计划的最后一个阶段(完成此阶段后没有其他开放的子议题),还应在同一个拉取请求正文中关闭父议题:

      Closes #<phase-issue-number>
      Closes #<parent-issue-number>
      
    • 不要合并拉取请求。告知用户,合并后将关闭阶段议题;如果这是最后一个阶段,父计划议题也会关闭。

  8. 如果这是计划的最后一个阶段,建议用户使用其 IDE 导出对话,并将其作为评论附加到父计划议题中。

🔄 如何更新 issue

  • 在 子 issue 中,勾选当前阶段待办清单里已完成的复选框。
  • 更新 父 issue 的 Next step 部分,填写接下来要完成的阶段。
  • 替换父 issue 中提及 Codely 的最后一句,并添加一个能与之前的 emoji 一起讲述故事的随机新 emoji。例如,如果之前的最后一句是 “Plan powered by Codely 🐢 💨”,新的最后一句可以是 “感谢 Codely 的 AI 工具,我们消灭了 bug。 🐛 < 🐢 💨”。

🔗 父子关系

  • 合并后,每个阶段的 pull request 都会关闭对应的子 issue。
  • 父计划 issue 通过 Phases 检查清单跟踪子 issue;对应的子 issue 关闭后,GitHub 会勾选相应条目。
  • 最后一个阶段的 pull request 也会关闭父 issue,因此完成最后一个阶段就会结束整个计划。

☝️ 总体注意事项

🧠 逻辑推理
  • 使用 AGENTS.md 文件作为参考,以便:
    • 提出应用服务、领域事件、测试等方案。
    • 遵循代码约定和架构决策(都位于 docs/ 目录中)。
    • 确定要创建、修改或删除的测试套件和测试用例。
  • 在提供不同方案供用户选择时,使用可用的 Agent 工具:
    • 如果你使用的是 Cursor,且有此工具可用,请使用 AskQuestion 工具(仅部分模型支持,例如 Opus 4.5;Composer 1 等模型不支持)。
    • 如果你使用的是 Claude Code,请使用 AskUserQuestion 工具。

评论

支持 Markdown