PRD关闭工作流Skill dot-ai-prd-close

此技能用于自动化管理产品需求文档(PRD)的关闭流程。当PRD已经实现或不再需要时,通过命令触发,自动更新PRD状态、归档文档、同步GitHub问题并提交代码,优化项目管理效率。关键词:PRD关闭、自动化工作流、GitHub集成、CI/CD跳过、产品管理、项目管理、DevOps。

项目管理 0 次安装 0 次浏览 更新于 3/18/2026

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
  • 差距确认:诚实说明已实现与未实现的内容