关于 codely-plan-create-github
将 GitHub issue 整理为分阶段计划,并以相互关联的父子 issue 保存。创建或编辑 issue 前,必须先获得用户对阶段和公共契约的批准。
主要功能
- 01读取父级 GitHub issue
- 02拆分分阶段实施任务
- 03创建 issue 前征求批准
- 04创建阶段 issue 并关联子 issue
- 05在父 issue 中更新计划
适用场景
- 01将 issue 拆解为实施阶段
- 02规划前审查公共契约
- 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)
🪜 创建计划的步骤
-
通过
gh issue view <parent>阅读父问题中的任务。 -
按照指南定义任务阶段,并让用户选择阶段数量。
-
按照指南,指定每个阶段任务中要创建、修改或删除的公共契约。
-
向用户提出计划以供批准。重要:在用户同意要考虑的具体契约和实施阶段之前,不要创建任何问题。
-
使用
gh issue create为每个阶段创建一个子问题。每个子问题的正文必须包含:- 阶段描述。
- 阶段待办事项,以复选框列表形式呈现(
- [ ] ...)。 - 该阶段的公共契约。
Part of #<parent>引用行。
记录
gh返回的每个子问题编号。 -
将每个子问题关联为父问题的原生子问题。 对于每个子问题,解析其数据库 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"按顺序对每个阶段执行此操作,使父问题将所有阶段都列为原生子问题。
-
使用
gh issue edit <parent> --body ...更新父问题,使其正文包含Goal、Context、已同意的设计决策,以及链接到每个子问题的Phases清单(- [ ] #<child> Phase N: <title>)。保留父问题中的原始任务描述:原样保留,并在其下方添加新的计划内容,中间用---行分隔(不要丢失或改写原文)。 -
建议后续步骤。询问用户想要做什么:
- 什么也不做。
- 执行
/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 部分。每个子问题包含其所属阶段的描述和待办事项列表。
通过拉取请求实施各阶段时,每个阶段的最后一项待办事项应要求填写拉取请求标题,而不是提交消息。