用途
Issue Lifecycle 是一个用于在开发过程中持续更新 GitHub Issue 的技能。其核心原则是:Issue 是唯一事实来源,必须保持最新。该技能应在整个工作过程中使用,而不是作为一个单独的步骤。
主要能力
该技能定义了在以下关键时刻应执行的更新:
| 时刻 | 更新类型 |
|---|---|
| 开始工作 | 状态 → In Progress |
| 遇到阻塞 | 评论说明阻塞 |
| 做出决策 | 评论记录决策 |
| 发现新信息 | 评论记录发现 |
| 完成验收标准 | 在正文中勾选 |
| 完成验证 | 发布验证报告 |
| 创建 PR | 将 PR 链接到 Issue |
| 工作完成 | 状态 → Done |
更新类型包括状态更新(项目字段)、评论更新和复选框更新(验收标准)。
使用方式
状态更新(项目字段)
# 获取 item ID
ITEM_ID=$(gh project item-list [PROJECT_NUMBER] --owner @me \
--format json | jq -r '.items[] | select(.content.number == [ISSUE_NUMBER]) | .id')
# 更新状态
gh project item-edit --project-id [PROJECT_ID] --id $ITEM_ID \
--field-id [STATUS_FIELD_ID] \
--single-select-option-id [NEW_STATUS_OPTION_ID]
评论更新
gh issue comment [ISSUE_NUMBER] --body "## Progress Update
**Time:** $(date -u +%Y-%m-%dT%H:%M:%SZ)
### Completed
- Implemented X
- Fixed Y
### In Progress
- Working on Z
### Blockers
- None
### Next Steps
- Will do A next"
复选框更新(验收标准)
当验收标准满足时:
- 读取当前 Issue 正文
- 找到验收标准复选框
- 将
- [ ]改为- [x] - 更新 Issue 正文
# 获取当前正文
BODY=$(gh issue view [ISSUE_NUMBER] --json body -q '.body')
# 更新复选框(使用 sed 的示例)
NEW_BODY=$(echo "$BODY" | sed 's/- \[ \] First criterion/- [x] First criterion/')
# 更新 Issue
gh issue edit [ISSUE_NUMBER] --body "$NEW_BODY"
更新频率
最低更新要求:
- 开始时 - “Starting work on this issue”
- 被阻塞时 - 立即记录阻塞
- 解除阻塞时 - 记录解决方案
- 创建 PR 时 - 链接 PR
- 完成时 - 最终状态更新
推荐更新:
- 每个重要步骤之后
- 做出影响方法的决策时
- 发现意外复杂性时
- 每 30-60 分钟活跃工作
更新内容
进度评论格式:
## Progress Update - [TIME]
### Completed
- [What was done]
### Currently Working On
- [Active work]
### Decisions Made
- [Decision]: [Rationale]
### Issues Encountered
- [Issue]: [How resolved or current status]
### Next Steps
- [What comes next]
决策评论格式:
## Decision: [Brief Title]
**Context:** [Why this decision was needed]
**Options Considered:**
1. [Option A] - [Pros/Cons]
2. [Option B] - [Pros/Cons]
**Decision:** [Chosen option]
**Rationale:** [Why this option was chosen]
阻塞评论格式:
## Blocked: [Brief Description]
**Blocked at:** [TIME]
**Blocking issue:** [What's preventing progress]
**What was tried:**
1. [Attempt 1]
2. [Attempt 2]
**Needs:** [What's needed to unblock]
**Impact:** [How this affects timeline/scope]
阅读 Issue 历史
在开始任何 Issue 的工作之前:
# 查看 Issue 及所有评论
gh issue view [ISSUE_NUMBER] --comments
# 查看时间线
gh issue view [ISSUE_NUMBER] --json timeline
查找:
- 之前的尝试
- 已知阻塞
- 已做出的决策
- 相关讨论
项目字段更新
保持以下字段最新:
| 字段 | 更新时间 |
|---|---|
| Status | 工作状态变化时 |
| Verification | 运行验证后 |
| Criteria Met | 勾选标准后 |
| Last Verified | 验证运行后 |
适用场景
该技能适用于使用 GitHub Issue 进行任务跟踪的开发工作流,特别是需要实时可见性和协作的场景。它被以下技能使用:
- issue-driven-development - 贯穿所有步骤
- acceptance-criteria-verification - 验证后报告
- error-recovery - 记录失败
限制与反模式
应避免的反模式:
| 反模式 | 问题 |
|---|---|
| 最后批量更新 | 工作期间无可见性 |
| “Made progress”评论 | 不够具体 |
| 只在成功时更新 | 失败也需要记录 |
| 跳过阻塞记录 | 丢失出错上下文 |
| 未验证就关闭 | 关闭前必须验证 |
推荐的良好模式:
| 良好模式 | 好处 |
|---|---|
| 随做随更新 | 实时可见性 |
| 具体的进度说明 | 清晰记录发生了什么 |
| 记录失败 | 从问题中学习 |
| 立即记录阻塞 | 更快解除阻塞 |
| 关闭前验证 | 确保质量 |
检查清单
每次工作会话,确保:
- Issue 状态反映当前状态
- 任何阻塞都已记录
- 决策已记录
- 完成的验收标准已勾选
- 验证报告已发布
- PR 已链接