mcpField
C
codely-plan-create-github

codely-plan-create-github

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

关于 codely-plan-create-github

将 GitHub issue 整理为分阶段计划,并以相互关联的父子 issue 保存。创建或编辑 issue 前,必须先获得用户对阶段和公共契约的批准。

主要功能

  1. 01读取父级 GitHub issue
  2. 02拆分分阶段实施任务
  3. 03创建 issue 前征求批准
  4. 04创建阶段 issue 并关联子 issue
  5. 05在父 issue 中更新计划

适用场景

  1. 01将 issue 拆解为实施阶段
  2. 02规划前审查公共契约
  3. 03通过关联的 GitHub issue 跟踪阶段任务

安装

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

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

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

附带文件resources/plan-guidelines.md

详细介绍

🧠 如何创建计划

[!CRITICAL] 在用户同意要考虑的具体公开契约和实施阶段之前,切勿创建或编辑任何 GitHub issue。先提出方案,获得批准后,再创建 issue。

计划的结构、各个章节以及编写规则均定义在 resources/plan-guidelines.md 中。提出任何内容之前,请先阅读。

🎯 输入

此技能通过 /codely-plan-create-github <github-issue-url> 调用。

  • <github-issue-url> 是描述待规划任务的 GitHub issue 的 URL。此 issue 将成为父级“计划” issue。
  • 如果未提供 URL,请先向用户索要 URL,再执行其他操作。

🗂️ 仓库

所有计划都以 GitHub issue 的形式存放在当前工作目录对应的仓库中。切勿硬编码仓库:让 gh 从本地 Git 远程仓库解析。

gh issue view <number>
gh issue create --title "..." --body "..."
gh issue edit <number> --body "..."

从提供的 URL 中提取 <number>。使用 gh repo view --json nameWithOwner --jq .nameWithOwner 确认 gh 解析到的仓库,并检查所提供的 URL 是否属于该仓库。如果不属于,请停止操作,并让用户从该仓库的克隆目录运行此技能。

要将某个阶段关联为父级 issue 的原生 GitHub 子 issue,请使用子 issue REST API。该 API 需要子 issue 的数字数据库 id(而非 issue 编号),因此请先解析该 ID。{owner} 和 {repo} 占位符会由 gh 替换为当前仓库:

# Resolve the child issue database id from its number
child_id=$(gh api repos/{owner}/{repo}/issues/<child> --jq .id)

# Attach the child as a native sub-issue of the parent
gh api --method POST repos/{owner}/{repo}/issues/<parent>/sub_issues -F sub_issue_id="$child_id"

🧱 Issue 结构

计划以issue 树的形式存储,使用 GitHub 的原生子 issue功能:

  • 父级“计划” issue:其 URL 由用户提供。它包含 Goal、Context、已达成一致的设计决策,以及一份阶段清单,每项都链接到对应的子 issue。父级依赖其子 issue:所有子 issue 关闭后,父级也会关闭。
  • 每个阶段对应一个子 issue:每个子 issue 包含该阶段的描述及以复选框列表列出的待办操作,并引用父级 issue(Part of #<parent>)。每个子 issue 都会通过子 issue API 作为原生 GitHub 子 issue关联到父级,而不只是作为清单链接。
#12 Product Bundles (parent plan)
     Goal / Context / design decisions
     - [ ] #13 Phase 1: ...
     - [ ] #14 Phase 2: ...
#13 Phase 1: ...   (child, to-do checkboxes)
#14 Phase 2: ...   (child, to-do checkboxes)

🪜 创建计划的步骤

  1. 通过 gh issue view <parent> 阅读父问题中的任务。

  2. 按照指南定义任务阶段,并让用户选择阶段数量。

  3. 按照指南,指定每个阶段任务中要创建、修改或删除的公共契约。

  4. 向用户提出计划以供批准。重要:在用户同意要考虑的具体契约和实施阶段之前,不要创建任何问题。

  5. 使用 gh issue create 为每个阶段创建一个子问题。每个子问题的正文必须包含:

    • 阶段描述。
    • 阶段待办事项,以复选框列表形式呈现(- [ ] ...)。
    • 该阶段的公共契约。
    • Part of #<parent> 引用行。

    记录 gh 返回的每个子问题编号。

  6. 将每个子问题关联为父问题的原生子问题。 对于每个子问题,解析其数据库 ID,并通过子问题 API 将其关联到父问题(参见上文“仓库”部分中的代码片段):

    child_id=$(gh api repos/{owner}/{repo}/issues/<child> --jq .id)
    gh api --method POST repos/{owner}/{repo}/issues/<parent>/sub_issues -F sub_issue_id="$child_id"
    

    按顺序对每个阶段执行此操作,使父问题将所有阶段都列为原生子问题。

  7. 使用 gh issue edit <parent> --body ... 更新父问题,使其正文包含 Goal、Context、已同意的设计决策,以及链接到每个子问题的 Phases 清单(- [ ] #<child> Phase N: <title>)。保留父问题中的原始任务描述:原样保留,并在其下方添加新的计划内容,中间用 --- 行分隔(不要丢失或改写原文)。

  8. 建议后续步骤。询问用户想要做什么:

    • 什么也不做。
    • 执行 /codely-plan-phase-implement-github <parent-issue-url> 技能来实施计划(仅实施阶段 1)。
    • 执行 /codely-plan-phase-implement-github <child-issue-url> 技能来实施指定阶段。

    重要

    /codely-plan-phase-implement-github 每次调用只处理一个阶段。切勿一次性实施所有阶段。

🗃️ 计划元数据

GitHub 问题没有 YAML frontmatter,因此请在父问题正文末尾添加计划元数据,作为页脚:

---

<sub>Created by { tool } · { model.name } { model.version } (reasoning effort: { model.reasoning_effort }) · { current_date }</sub>
  • current_date:当前日期,格式为 ISO 8601 RFC 3339(YYYY-MM-DDTHH:MM:SSZ)。
  • tool:使用的 AI 编码工具(例如 Claude Code、Cursor、Copilot、Codex)。
  • model.name:用于进行更改的模型名称(例如 Claude Opus、Cursor Composer、OpenAI GPT)。
  • model.version:用于进行更改的模型版本(例如 4.6、1.5、5.4)。
  • model.reasoning_effort:用于进行更改的模型推理力度(例如 low、medium、high)。

🗂️ 各计划部分的位置

父问题包含 resources/plan-guidelines.md 中所述的 Goal、Context、Phases 清单和 Next step 部分。每个子问题包含其所属阶段的描述和待办事项列表。

通过拉取请求实施各阶段时,每个阶段的最后一项待办事项应要求填写拉取请求标题,而不是提交消息。

评论

支持 Markdown