mcpField
W
write-spec

write-spec

github.com/anthropics开发33.6k3.6k 次安装1 天前更新
代码仓库

关于 write-spec

引导用户收集功能背景并撰写结构化产品需求文档的技能,涵盖目标、范围、用户故事、需求、指标、待解问题和时间安排。

主要功能

  1. 01收集功能背景
  2. 02撰写结构化 PRD
  3. 03定义目标与非目标
  4. 04整理需求和验收标准
  5. 05明确指标与待解问题

适用场景

  1. 01将功能构想整理为 PRD
  2. 02参考现有任务与研究资料
  3. 03检查范围、指标和依赖项

MCP 相关

若项目跟踪器、知识库或设计工具已连接,技能会搜索相关工作项、研究、规格文档和设计材料。

安装

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

$npx skills add https://github.com/anthropics/knowledge-work-plugins --skill write-spec

安装后在 Claude Code 中输入/write-spec确认已加载。

详细介绍

编写规格说明

如果你看到不熟悉的占位符,或需要确认已连接哪些工具,请参阅 CONNECTORS.md。

编写功能规格说明或产品需求文档(PRD)。

用法

/write-spec $ARGUMENTS

工作流

1. 了解功能

询问用户想要规划的内容。以下任一形式均可接受:

  • 功能名称(“SSO 支持”)
  • 问题陈述(“企业客户一直在要求集中式身份验证”)
  • 用户请求(“用户希望将数据导出为 CSV”)
  • 模糊的想法(“我们应该解决新手引导流失的问题”)
2. 收集上下文

向用户询问以下信息。保持对话式交流,不要一次性抛出所有问题。先问最重要的问题,并在交流过程中补全缺失信息:

  • 用户问题:这个功能要解决什么问题?谁会遇到这个问题?
  • 目标用户:这个功能服务于哪些用户群体?
  • 成功指标:我们如何判断这项功能是否成功?
  • 约束条件:技术约束、时间线、合规要求、依赖项
  • 已有方案:此前是否尝试过?是否存在现有解决方案?
3. 从已连接的工具中获取上下文

如果已连接 ~~project tracker:

  • 搜索相关的工单、史诗(epic)或功能项
  • 提取已有的需求或验收标准
  • 识别与其他工作项的依赖关系

如果已连接 ~~knowledge base:

  • 搜索相关的研究文档、历史规格说明或设计文档
  • 提取相关的用户研究结论
  • 查找相关的会议纪要或决策记录

如果已连接 ~~design:

  • 提取相关的原型图、线框图或设计探索稿
  • 搜索与该功能相关的设计系统组件

如果这些工具未连接,则完全基于用户提供的信息开展工作。不要要求用户连接工具,直接使用现有信息继续即可。

4. 生成 PRD

按照以下章节生成结构化的 PRD。各章节应包含的具体内容请参阅下方的 PRD 结构。

  • 问题陈述:用户问题、受影响的人群,以及不解决该问题的影响(2-3 句话)
  • 目标:3-5 项具体、可衡量、与用户或业务指标挂钩的成果
  • 非目标:3-5 项明确不在范围内的事项,并附上简要理由
  • 用户故事:采用标准格式(“作为【用户类型】,我希望【能力】,以便【收益】”),按用户角色分组
  • 需求:分为必须具备(P0)、最好具备(P1)和未来考虑(P2),每项均附验收标准
  • 成功指标:领先指标(快速变化)和滞后指标(随时间变化),并给出具体目标值
  • 待解决问题:尚未解决的问题,并标注需要回答的人员(工程、设计、法务、数据)
  • 时间线考量:硬性截止日期、依赖关系与分期安排
5. 审阅与迭代

生成 PRD 后:

  • 询问用户是否需要调整任何章节
  • 主动提出对特定章节进行扩展说明
  • 提议创建后续产出物(设计简报、工程工单拆分、利益相关方汇报材料)

PRD 结构

问题陈述
  • 用 2-3 句话描述用户问题
  • 谁会遇到这个问题,以及发生的频率
  • 不解决该问题的代价(用户痛点、业务影响、竞争风险)
  • 以证据为依据:用户研究、支持数据、指标或客户反馈
目标
  • 3-5 项该功能应实现的具体、可衡量的成果
  • 每个目标都应回答:“我们如何判断它成功了?”
  • 区分用户目标(用户获得什么)与业务目标(公司获得什么)
  • 目标应为成果而非产出物(“将首次获得价值的时间缩短 50%”,而非“构建新手引导向导”)
非目标
  • 3-5 项本功能明确不会做的事情
  • 本版本范围之外的相邻能力
  • 对每个非目标,简要说明其超出范围的原因(影响不足、过于复杂、独立计划、时机尚早)
  • 非目标可以防止实施过程中的范围蔓延,并为利益相关方设定预期
用户故事

按照标准格式编写用户故事:"作为 [用户类型],我希望 [能力],以便 [收益]"

指南:

  • 用户类型应足够具体,才有意义(例如"企业管理员"而不是仅仅"用户")
  • 能力应描述他们想完成什么,而不是如何完成
  • 收益应解释"为什么"——这带来了什么价值
  • 包含边界情况:错误状态、空状态、边界条件
  • 如果功能服务于多种角色,请包含不同的用户类型
  • 按优先级排序——最重要的故事放在最前面

示例:

  • "作为团队管理员,我希望为我的组织配置 SSO,以便团队成员可以使用企业凭据登录"
  • "作为团队成员,我希望自动跳转到公司的 SSO 登录页面,以便无需记住单独的密码"
  • "作为团队管理员,我希望查看哪些成员通过 SSO 登录过,以便确认推广是否正常运作"
需求

必须具备(P0):没有这些,功能无法发布。这些代表功能的最小可行版本。提问:"如果去掉这项,功能是否仍能解决核心问题?"如果否,则它为 P0。

最好具备(P1):能显著改善体验,但没有它们核心用例也能运行。这些通常会在上线后作为快速后续迭代推出。

未来考虑(P2):明确不在 v1 范围内,但我们希望以支持其后续实现的方式进行设计。记录这些内容可以防止意外的架构决策使其日后难以实现。

对于每项需求:

  • 清晰、无歧义地描述预期行为
  • 包含验收标准(见下文)
  • 记录任何技术考虑或约束
  • 标明对其他团队或系统的依赖
待解决问题
  • 需要在实施前或实施期间得到答案的问题
  • 为每个问题标注应由谁回答(工程、设计、法务、数据、利益相关方)
  • 区分阻塞性问题(开始前必须回答)与非阻塞性问题(可在实施期间解决)
时间线考虑
  • 硬性截止日期(合同承诺、活动、合规日期)
  • 对其他团队工作或发布的依赖
  • 如果功能过大无法一次发布,建议的分阶段计划

用户故事编写

好的用户故事应当是:

  • 独立的:可以单独开发和交付
  • 可协商的:细节可以讨论,故事不是合同
  • 有价值的:为用户(而不仅是团队)带来价值
  • 可估算的:团队可以大致估算工作量
  • 小的:可在一个 Sprint/迭代内完成
  • 可测试的:有明确的方法验证其是否可行
用户故事的常见错误
  • 过于模糊:"作为用户,我希望产品更快" —— 具体应该哪里更快?
  • 指定解决方案:"作为用户,我希望有一个下拉菜单" —— 描述需求,而不是 UI 控件
  • 没有收益:"作为用户,我希望点击一个按钮" —— 为什么?它能完成什么?
  • 过于庞大:"作为用户,我希望管理我的团队" —— 将其拆分为具体能力
  • 内部视角:"作为工程团队,我们希望重构数据库" —— 这是任务,而不是用户故事

需求分类

MoSCoW 框架
  • 必须有(Must have):没有这些,功能不可行。不可协商。
  • 应该有(Should have):重要但对上线并非关键。高优先级的快速后续迭代。
  • 可以有(Could have):时间允许时可以实现。如被砍掉也不会延误交付。
  • 本次不做(Won't have (this time)):明确超出范围。未来版本可能重新考虑。
分类提示
  • 对 P0 要严格把关。必做清单越精简,交付和学习就越快。
  • 如果所有需求都是 P0,那就没有真正的 P0。逐条质疑每个必做项:"如果没有这个,我们真的不能发布吗?"
  • P1 应该是你确信很快就会构建的事项,而不是愿望清单。
  • P2 是架构层面的保险,即使当前不构建,也能指导设计决策。

成功指标定义

领先指标

发布后变化较快的指标(数天到数周):

  • 采用率:尝试该功能的符合条件用户的百分比
  • 激活率:完成核心操作的用户百分比
  • 任务完成率:成功达成目标的用户百分比
  • 完成耗时:核心工作流所需的时间
  • 错误率:用户遇到错误或死路的频率
  • 功能使用频率:用户回到该功能使用的频率
滞后指标

需要较长时间才能显现的指标(数周到数月):

  • 留存影响:该功能是否提升用户留存?
  • 收入影响:该功能是否带动升级、扩展或新增收入?
  • NPS / 满意度变化:该功能是否改善用户对产品的感受?
  • 支持工单减少:该功能是否减轻支持负担?
  • 竞争赢单率:该功能是否帮助赢得更多订单?
设定目标
  • 目标应当具体,例如"30 天内采用率达到 50%",而不是"采用率高"
  • 目标应基于同类功能、行业基准或明确的假设
  • 设定一个"成功"阈值和一个"挑战"目标
  • 明确衡量方法:使用什么工具、什么查询、什么时间窗口
  • 指定评估时间:发布后 1 周、1 个月或 1 个季度

验收标准

以 Given/When/Then 格式或清单形式撰写验收标准:

Given/When/Then:

  • Given [前置条件或上下文]
  • When [用户采取的操作]
  • Then [预期结果]

示例:

  • Given 管理员已为其组织配置 SSO
  • When 团队成员访问登录页面
  • Then 系统自动将其重定向至组织的 SSO 提供方

清单格式:

  • 管理员可以在组织设置中输入 SSO 提供方 URL
  • 团队成员在登录页面上看到"使用 SSO 登录"按钮
  • 如果账户不存在,SSO 登录会创建新账户
  • 如果邮箱匹配,SSO 登录会关联到已有账户
  • SSO 登录失败时显示清晰的错误信息
验收标准撰写提示
  • 覆盖正常流程、错误情况和边界情况
  • 描述预期行为,而非实现方式
  • 包含不应发生的情况(反向测试用例)
  • 每条标准都应可独立测试
  • 避免模糊用词,如"快速"、"用户友好"、"直观",应具体定义其含义

范围管理

识别范围蔓延

范围蔓延通常发生在以下情况:

  • 规格说明获得批准后,仍不断有新需求加入
  • "小"的增加不断累积,最终变成规模大得多的项目
  • 团队在构建没有用户要求的功能("顺便……")
  • 上线日期不断推迟,却没有明确的重新定义范围
  • 利益相关方不断添加需求,却不删除任何内容
预防范围蔓延
  • 在每份规格说明中明确写出非目标
  • 要求任何范围新增都必须伴随范围削减或时间表延长
  • 在规格说明中清楚区分"v1"与"v2"
  • 对照最初的问题陈述审视规格说明:每项内容是否都服务于该问题?
  • 为调研设定时间上限:"如果我们在 2 天内无法弄清 X,就砍掉它"
  • 为好想法建立"待办池",存放不在当前范围内的想法

输出格式

使用带有清晰标题的 Markdown。保持文档便于快速浏览:忙碌的利益相关方应当只读标题和加粗文字,就能掌握要点。

提示

  • 对范围要有明确主张。一份边界清晰、定义明确的规格,比一份宽泛模糊的规格更好。
  • 如果用户的想法对于一份规格来说太大,建议将其拆分为多个阶段,并为第一阶段编写规格。
  • 成功指标应当具体且可衡量,而不是模糊的表述(例如“改善用户体验”)。
  • 非目标与目标同样重要。它们可以防止实现过程中出现范围蔓延。
  • 待定问题应当确实悬而未决,不要包含那些可以从上下文中得出答案的问题。

评论

支持 Markdown