name: dot-ai-prd-close description: 关闭一个已经实现或不再需要的PRD user-invocable: true
关闭PRD
关闭一个已经实现(在先前工作或外部项目中)或不再需要的PRD。此工作流更新PRD状态、归档它、更新GitHub问题,并直接提交到主分支,不触发CI。
何时使用此命令
在以下情况下使用 /prd-close :
- ✅ PRD功能已在单独项目或先前工作中实现
- ✅ PRD不再相关(被取代、需求变更、超出范围)
- ✅ PRD需求由现有功能满足
- ✅ 不需要在此存储库中编写新代码
不要在以下情况下使用 /prd-close :
- ❌ 您刚完成PRD的实现(请改用
/prd-done) - ❌ PRD有正在进行的实现工作
- ❌ 有未提交的代码更改需要作为PR的一部分
用法
# 交互模式 - 将提示输入PRD编号和关闭原因
/prd-close
# 带PRD编号
/prd-close 20
# 带PRD编号和原因
/prd-close 20 "已由 dot-ai-controller 实现"
注意:如果任何 gh 命令失败并显示“command not found”,请告知用户需要GitHub CLI,并提供安装链接:https://cli.github.com/
工作流步骤
步骤 1:识别PRD和原因
如果未提供PRD编号:
- 检查对话上下文以获取最近PRD讨论
- 检查git分支以获取PRD指示器(例如
feature/prd-X) - 如果不清楚,提示用户输入PRD编号
关闭原因类别:
- 已实现:功能存在于外部项目或先前工作中
- 不再需要:需求变更、超出范围或被取代
- 重复:另一个PRD覆盖相同功能
- 推迟:移至未来版本或不同项目
所需信息:
- PRD编号
- 关闭原因(简要描述)
- 实现参考(如果已实现):链接到仓库、PR或文档
步骤 2:读取和验证PRD
从 prds/[number]-*.md 读取当前PRD文件:
验证检查:
- [ ] PRD文件存在且可读
- [ ] 与用户确认此PRD应关闭
- [ ] 验证关闭原因基于PRD内容合理
- [ ] 如果“已实现”,询问用户实现证据
向用户呈现PRD摘要:
## PRD #X: [标题]
**状态**: [当前状态]
**创建日期**: [日期]
**摘要**: [PRD请求的简要描述]
**提议操作**: 作为 [原因] 关闭
**实现参考**: [如果适用]
继续关闭?(是/否)
步骤 3:更新PRD文件
更新PRD元数据:
元数据更新:
**状态**: 已完成 [或] 不再需要 [或] 重复
**最后更新**: [当前日期]
**完成日期**: [当前日期] [或] **关闭日期**: [当前日期]
步骤 4:将PRD移动到归档
将PRD文件移动到完成目录并更新路线图:
git mv prds/[number]-[name].md prds/done/
注意:如果移动失败因为 prds/done/ 不存在,使用 mkdir -p prds/done 创建并重试。
更新 ROADMAP.md(如果存在):
- [ ] 检查
docs/ROADMAP.md是否存在 - [ ] 从路线图中移除已关闭的PRD(搜索“PRD #[number]”)
- [ ] 移除引用此PRD的整行
- [ ] 已关闭的PRD不应出现在未来路线图中,因为它们不再被处理
步骤 5:更新GitHub问题
暂时重新打开问题以更新:
gh issue reopen [number]
更新问题描述以包含新PRD路径和状态:
gh issue edit [number] --body "$(cat <<'EOF'
## PRD: [标题]
**问题**: [原始问题陈述]
**解决方案**: [原始解决方案陈述]
**详细PRD**: 参见 [prds/done/[number]-[name].md](./prds/done/[number]-[name].md)
**优先级**: [原始优先级]
**状态**: ✅ **[完成/已关闭]** - [简要原因]
EOF
)"
步骤 6:关闭GitHub问题
关闭问题并添加全面的关闭评论:
gh issue close [number] --comment "$(cat <<'EOF'
## ✅ PRD #[number] 已关闭 - [原因类别]
[为什么PRD被关闭的详细解释]
### [如果是“已实现”]
**实现细节**
此PRD请求 [功能]。**所有核心需求已满足** 通过 [实现参考]。
| 需求 | 实现 | 状态 |
|-------------|----------------|--------|
| [需求 1] | [实现位置] | ✅ 完成 |
| [需求 2] | [实现位置] | ✅ 完成 |
**实现参考**: [链接到项目/仓库/PR]
[如果有差距]
**未实现**(推迟或超出范围):
- [功能 X] - [为什么不需要或推迟]
### [如果是“不再需要”]
**关闭原因**
[解释为什么需求变更、什么取代了此PRD,或为什么超出范围]
**替代方法**: [如果适用]
[什么取代了此PRD或需求如何以不同方式满足]
### 文件
**PRD位置**: `prds/done/[number]-[name].md`
**状态**: [完成/已关闭]
**关闭日期**: [日期]
EOF
)"
步骤 7:提交和推送
直接提交到主分支并跳过CI:
# 暂存所有更改
git add .
# 验证将要提交的内容
git status
# 使用跳过CI标志提交
git commit -m "docs(prd-[number]): 关闭PRD #[number] - [简要原因] [skip ci]
- 将PRD移动到 prds/done/ 目录
- 更新PRD状态为 [完成/已关闭]
- 更新GitHub问题描述以包含新路径
- [实现细节或原因]
Closes #[number]"
# 拉取最新并推送到远程
git pull --rebase origin main && git push origin main
重要:
- 始终使用
[skip ci]标志以避免文档更改的不必要CI运行 - 包括问题引用(
Closes #[number])以链接提交到问题
示例场景
示例 1:在外部项目中已实现
/prd-close 20 "由 dot-ai-controller 实现"
关闭评论:
## ✅ PRD #20 已关闭 - 已实现
此PRD请求主动Kubernetes集群监控与AI驱动的修复。
**核心功能(60-80%)已实现** 通过单独的
[dot-ai-controller](https://github.com/vfarcic/dot-ai-controller) 项目。
| 需求 | 实现 | 状态 |
|-------------|----------------|--------|
| 持续健康检查 | 基于K8s事件的监控 | ✅ 完成 |
| 智能警报 | 带AI分析的Slack通知 | ✅ 完成 |
| 自动化修复 | 自动/手动模式带置信度阈值 | ✅ 完成 |
| 异常检测 | AI驱动的事件分析 | ✅ 完成 |
**未实现**(高级功能,可能作为未来PRD):
- 持续指标监控(Prometheus风格)
- 带基线学习的预测分析
- 多渠道警报(电子邮件、PagerDuty)
示例 2:重复PRD
/prd-close 45 "PRD #44 的重复"
关闭评论:
## 🔄 PRD #45 已关闭 - 重复
此PRD覆盖与PRD #44相同的功能。将所有工作合并到PRD #44下以避免碎片化。
**操作**:继续在PRD #44上工作。
示例 3:不再需要
/prd-close 12 "需求变更,超出范围"
关闭评论:
## ⏸️ PRD #12 已关闭 - 不再需要
经过讨论,此方法不再与项目方向一致。需求已演变,此PRD超出范围。
**替代方法**:使用 [不同解决方案/方法] 代替。
成功标准
✅ PRD文件已更新 包含完成/关闭元数据
✅ PRD已归档 到 prds/done/ 目录
✅ GitHub问题已更新 包含新PRD路径
✅ GitHub问题已关闭 带有全面关闭评论
✅ 更改已提交到主分支 带跳过CI标志
✅ 更改已推送到远程 仓库
注意
- 不需要PR:此工作流直接提交到主分支用于仅文档更改
- 跳过CI:始终包括
[skip ci]以避免不必要CI运行 - 全面文档:确保问题评论清楚解释关闭原因
- 实现参考:链接到功能存在的外部项目、仓库或PR
- 差距确认:诚实说明已实现与未实现的内容