mcpField
P
plan-feature

plan-feature

github.com/gtrabanco开发2297 次安装1 天前更新
代码仓库

关于 plan-feature

plan-feature 为产品定义和评审均已完成的功能安排工程规划。它生成规划文档并登记路线图,不修改代码或创建分支。

主要功能

  1. 01路由到专门的规划步骤
  2. 02要求产品范围已设计并评审
  3. 03生成工程规划文档
  4. 04登记并核验路线图条目
  5. 05检查依赖项和阻塞问题

适用场景

  1. 01为已批准的功能制定执行计划
  2. 02将问题转为范围明确的功能计划
  3. 03推荐实施前检查依赖关系

安装

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

$npx skills add https://github.com/gtrabanco/agentic-workflow --skill plan-feature

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

附带文件references/ROUTING.md

详细介绍

规划功能(路由器)

为产品定义已存在的功能提供工程规划入口。路由到一个专注的内部步骤,只运行所需工作(不使用臃肿的单体技能)。仅限文档——不写代码,不建分支。 产品定义(原始想法访谈、能力闭环)属于 design-feature,不属于本流程——路由重定向门负责强制划分两者。

回合约定——结束回合前验证

✓ The redirect gate ran FIRST, before any SPEC edit: undesigned input → STOP,
  print the fixed `/design-feature <slug>` block, do nothing else this turn
✓ Then the Product-review gate ran: no current `spec-review-pass` receipt bound to
  the recomputed snapshot → STOP with its fixed block and the `/review-spec`
  hand-off; a candidate/verification receipt, a Plan receipt, or readiness never counts
✓ Designed input only: engineering half filled, artifacts written, and the
  roadmap entry registered (number, order, deps verified)
✓ If `plan-feature-scaffold` ran this turn: the roadmap row was re-read
  AFTER the write and literally reads `planned` — a dropped `defined→planned`
  write fails this box; do not end the turn until it's fixed
✓ Planned, not reviewed: the ledgers are frozen, `stage: plan` readiness printed
  `READY-FOR-REVIEW`, and the turn hands off to `/review-plan` — this skill never
  reviews the plan it just wrote and never hands off to `/execute-phase` for a
  plan with no current Plan review receipt
✓ The dependency & blocker check was RUN and its result decides which closing block is printed
✓ An unmet dependency? The closing block lists the complete dependency chain, deepest first, joined with ` + `
✓ Artifact language: explicit user instruction > the project's declared docs language > English. The CONVERSATION language never decides — a Spanish prompt still produces English PRs/issues/commits/SPECs unless one of the first two says otherwise
✓ The closing `→ Next:` block is printed as the ABSOLUTE last output

即将结束回合,但仍有任何复选框未勾选?回合就尚未完成——先完成缺失项(较弱的模型容易漏掉文档末尾的职责;因此将此列表放在最前面)。

步骤 0——了解项目(始终首先执行)

遵循 Agent 指南中的 工作流约定 和 文档地图,然后阅读本技能所需的内容:路线图(docs/features/ROADMAP.md),确保路由和路线图登记符合项目的实际布局。

渐进式加载——先路由,再规划

参考资料白名单严格限定为以下两个路径:

  1. 每次调用都必须读取重定向门与路由,先应用状态门,再应用产品审查门,并在要求停止时按其明确指示停止。
  2. 对于任何可能写入规划产物的路由:重定向门允许路由后,先读取规划预检——它负责读取规范化的仓库状态,并做出唯一的最终架构分类——然后再编写内部步骤,包括基于 issue 的路由。
  3. 编写内部步骤前:加载阶段约定,确保本回合写入的每份 SPEC 都包含规范的 8 项阶段 lint 和规范化阶段指纹。

重定向停止后,不要加载规划门。这两项资源都是规范性要求,且距本文件仅一跳;缺失时必须默认拒绝继续。

流程

  1. 重定向门:使用 ROUTING.md——始终首先执行。
  2. 产品审查门:使用同一资源——必须有与重新计算的快照绑定的当前 spec-review-pass 收据,否则停止。不得使用绕过标记。
  3. 路由:使用同一资源。对于 issue 输入,仅解析并验证 issue 身份;在规划预检确认允许写入规划内容后,再编写基于 issue 的内部步骤,产出已填写且已定规模的 SPEC 产品部分;该内部步骤在产品审查门处停止,因此只有 review-spec 审查通过该部分后,plan-feature-scaffold 才会运行:它会填写工程部分,将产物规模调整为符合 SPEC 的大小(XS/S → 仅 SPEC;M/L → 完整产物集),并登记路线图。已经完成设计的既定路径则直接运行 plan-feature-scaffold。每条路径都持有一个不可变的规划上下文——写入前取得的路线图快照(以及 --from-issue 时的一份 issue 载荷)——并在内部步骤间复用;规划过程中不得重新获取。
  4. 确认路线图。 验证功能已在 docs/features/ROADMAP.md 中登记,且编号、排序和依赖关系均正确;三者中任何一项缺失或有误,都要立即修正条目——不得留待以后登记。
  5. 依赖项和阻塞项检查(始终在建议执行前完成)。
    • 沿功能的 Depends on: 依赖关系闭包(传递地)逐项检查:每项依赖都必须为 done 且已合并。只要有未满足项,结束区块就应建议先构建最深层的未满足依赖,而不是当前功能。
    • 检查修复索引和未关闭的 issue(forge CLI),查找涉及本 SPEC 所列相同模块的立即修复项。只要命中,结束区块就应建议在执行前运行 /plan-fix <n>(“基于已知缺陷构建会把缺陷固化进来”)。
    • 规划本身不会因上述任一项而阻塞——仍要编写 SPEC/产物;只有建议的下一步会改变。
  6. 打印下一步,遵循上述检查结果(参见“完成时”)。

防护规则

  • 仅限文档——不写代码、不切分支(那是 execute-phase 的职责)。
  • 绝不规划未经设计的功能——重定向关卡没有绕过标志,永远没有。即使有人要求,也不要添加;请改为指向 /design-feature。
  • 绝不规划未经评审的 Product 部分——此关卡同样没有绕过标志。规划会绑定评审者的回执;不得写入、扩大范围或“刷新”回执。绑定到旧字节的回执已过期,不能将其视为足够接近。
  • 不要重复询问标志、问题或文档已经明确的内容。
  • 在写入前先指出冲突(编号冲突、依赖循环、范围重叠),而不是事后再提。
  • 其他方面遵循项目的 工作流约定(docs-language)。

内部步骤(不可由用户调用)

  • plan-feature-from-issue — issue → 范围明确的 SPEC Product 部分,Closes #N。
  • plan-feature-scaffold — SPEC → Engineering 部分 + 完整工件集 + 路线图条目。

这些步骤在同一段对话中运行(这就是“组合”的含义)——适用于任何 Agent,只需将其 SKILL.md 作为路由步骤内联执行。这套路由器过去包含的原始想法访谈内部步骤已废弃——参见 docs/workflow/MIGRATION.md;相关逻辑现已归入 design-feature,这是一个独立面向用户的技能(产品定义是独立的流水线阶段,而非此处的内部路由细节)。

可移植性(Claude Code 以外的 Agent)

工作流是约定;Claude Code 的功能只是便利手段。如果 Agent 缺少某项功能,请使用回退方案——绝不要跳过该功能所支持的步骤:

  • 没有斜杠命令菜单——本技能提到 /<skill> 时,请打开该技能的 SKILL.md(位于 Agent 安装技能的位置),并在新的对话中严格遵循:交接默认使用干净的上下文。上文所述的内部步骤除外——它们会在当前这段对话中内联运行。
  • 没有按技能设置的 model:/effort:——在 #claude 分支上,frontmatter 会固定这些级别;在此处,请自行选择级别:规划需要判断力——使用你最强的模型。交接的执行步骤可以使用成本较低的模型。

与其他技能的关系

  • 当重定向关卡因功能未经设计而停止时,转至 design-feature——绝不在当前回合内组合执行(规划类,≥级别交接)。
  • 当 Product 评审关卡停止时,转至 review-spec:已设计不等于已评审。其回执是本技能的输入,plan-feature-scaffold 会将其绑定为 Plan 快照的 Product 父项。
  • triage-issue 会将 issue 路由至此处,以便将其提升为功能(如果提升后的 issue 未经设计,仍受重定向关卡限制)。
  • execute-phase 随后执行各阶段(audit-docs 可随时审计)。

完成条件

  • 已运行重定向关卡;如果它停止,则本回合的其他操作都未触及 SPEC。

  • 仅限已设计的输入:已创建包含完整工件集的规划功能,并已登记到路线图中——且写入后重新读取了路线图条目,确认其字面内容为 planned(绝不能根据已运行写入步骤就假定如此)。

  • 两份规划台账已随 Engineering 部分冻结(规划台账),stage: plan 就绪预检已输出 READY-FOR-REVIEW,且交接中注明了新的 artifactRevisionId。已规划的单元不是可执行单元:本技能绝不评审自己的规划。

  • 已运行依赖项与阻塞项检查,且结尾的 → Next: 块与检查结果一致——无问题:

    → Next: /review-plan <NN> — the plan is written; an independent context must
      review it before any phase is executed
      · the review returned PLAN-REVIEW-FAIL → this skill replans the batch, then re-reviews
      · adjust scope first → re-run /design-feature <slug>   · audit the planning docs → /audit-docs
    

    已规划的功能(重定向关卡已停止,绝不重新搭建脚手架):

    → Next: /execute-phase <NN> — this feature is already planned; execute every
      remaining phase, don't re-plan it.
      · explicit atomic mode → /execute-phase <NN> P1
    

    未经设计的功能(重定向关卡已停止):

    → Next: /design-feature <slug> — this feature has no completed product design yet
      (capability closure not done). Design it first; then re-run /plan-feature <slug>.
    

    已设计但未经评审/已过期(Product 评审关卡已停止):使用 ROUTING.md 中固定的 PRODUCT-REVIEW GATE … BLOCKED 块,并以 /review-spec <NN>-<slug> 结尾。

    未满足的依赖项和/或阻塞性的立即修复问题:

    Dependency chain (deepest first): <deepest> + <dependency> + <NN> (replace with every actual member; never print `…`)
    → Next: /plan-feature <deepest-unmet-dep> (or /execute-phase <deepest-unmet-dep>) — build the
      complete dependency chain first: <deepest> + <dependency> + <NN>
      · blocking fix-now issue #<n> in the same area → /plan-fix <n> before executing
      · proceed anyway → /execute-phase <NN> --force (the gate logs the override)
    

评论

支持 Markdown