用户令「C 保持引用」,并确认两个说人话技能已在仓。 - 新增「取哪一份」:模式清单取 `humanizer`(它另有 `references/patterns.zh.md`,中文产出读那一份); 评分与门槛取 `humanizer-zh` 的五维表;两份口径冲突时以 `humanizer-zh` 为准(本项目产出是中文) - 新增「⛔ 取不到判据来源时」:两份技能都不在位或读不到 ⇒ 不许凭感觉判「这条够人话」, 在段末报告与 `3d-审查报告.md` 里明写「无判据来源,本项未判」, 与 §供给·工艺数值判据 的「证据缺口」同口径处理 ⛔ 未把 humanizer / humanizer-zh 的内容整合进本包 —— 那会制造第二处定义(本包「单一可信源」纪律 专门治这个病,2026-10-08 的事故刚证明过代价),且这两个技能是全包乃至跨包通用的 (用户 2026-10-07 定案「不管是写规则还是写文档都要按说人话的技能执行」),整合等于把它们降格成附件。 两个技能本身早已入库(提交 `777f7fe`,9 个文件全部被跟踪、无未提交改动),本提交只改引用写法。 闸门:通过 2060 | 失败 0 | 提示 27
26 KiB
name, description
| name | description |
|---|---|
| product-planning | 产品规划总入口(唯一入口),四段式调度:① 产品需求 ② 产品功能 ③ 界面交互 ④ 原型说明文档。四段以 references/stage-* 承载,本文件是总调度与约束。可整段跑也可只调一段。当用户要做产品规划、从零做新产品、只做某一阶段、或不知道从哪开始时调用。 |
产品规划总入口
本 skill 由模型按需自动加载,没有斜杠命令。对话里还没定出对象时,先按「项目与路径约定」定出
<项目>;定不出来就停下问用户,不要自行假设。
用途
用户丢来一句模糊想法(例如「我要做一个 AI 短剧分镜画布」)时,本 skill 判断该走哪一段,只做那一段的最小必要工作,产出可交付物,再推进到下一段。
本文件管调度与约束。各段怎么做,写在 references/stage-* 各自的文件里。
四段结构(可整段跑,也可只调一段)
| 段 | 回答的问题 | 子步 | 调用 | 产出物 |
|---|---|---|---|---|
| ① 产品需求 | 要做的东西凭什么成立:什么问题、为谁、为什么值得做 | 1a 需求文档(grill 压测)/ 1b 竞品分析 / 1c 用户画像 / 1d 产品策略 / 1e 使用场景 | stage-discovery |
docs/pm/<项目>/research/*。其中 1b 交两种体例:research/1b-竞品分析.md(汇总对比)+ research/1b-独立分析/<竞品名>.md(独立分析) |
| ② 产品功能 | 要做哪些功能、什么不做、长成什么骨架 | 2a 产品功能 / 2b 界面布局 | stage-requirements |
docs/pm/<项目>/prd/2a-产品功能.md 与 prd/2b-界面布局.md(两份) |
| ③ 界面交互 | 长什么样、怎么操作 | 3a 视觉规范 / 3b 原型 / 3c GPT参考版 / 3d 审查打磨 | stage-delivery |
docs/pm/<项目>/DESIGN.md、designs/<项目>/*.html、designs/<项目>/3c-GPT参考版.md |
| ④ 原型说明文档 | 每个状态有哪些场景、每步做什么、边界在哪、坏了怎样 | 4a 场景盘点 / 4b 说明区 / 4c 演示引导 | stage-proto-doc |
同一份原型 HTML 里的说明区与演示引导 |
四段只通过落盘文件耦合。段间交接口如下,这是唯一的契约,越界即失效:
| 交接 | 由谁给 | 给什么 | 给到哪为止 |
|---|---|---|---|
| ① → ② | ① | 问题定义、需求澄清决策表(含 grill 压测的 B 节:做成什么样 / 哪些情况不成立 / 状态怎么流转)、取证结论(1b 汇总对比体 + 1b 独立分析体、1c 用户画像)、产品定位、《使用场景》=用户故事(②段功能的直接推导依据) | 功能清单归②段产出,1a 写到需求与形态为止 |
| ② → ③ | ② | 功能清单(每条带优先级 + 状态流转)、界面布局(有哪几页 / 每页几个板块 / 板块怎么排 / 跨页关系)、每页主操作、信息承载分档(主屏常驻 / 可点入) | 视觉归③段。骨架必须给全,骨架不给全,③段就一版一个样 |
| ③ → ④ | ③ | 已跑通的单文件原型 HTML | 说明区与演示引导归④段 |
口径:②段钉骨架,③段做皮肉。两侧逐行对照与用户原话只在②段
references/stage-requirements/SKILL.md的 §②—③ 交接口 定义一次 —— 本入口不复述。要点两条:②段要给全「归②段」列;③段不许增删移动板块,缺板块回②段改。
②→③ 最容易搞坏。旧病灶:②段说「必须能读到」,③段读成「必须常驻主屏」,五类信息就全铺一屏成了信息墙。分档表把「读到」明确成「一次点击内可达」,防的就是这句歧义。骨架是灰块(有哪些块、什么顺序),③段给的是视觉与交互实现(排版、点哪有什么反馈、空态、响应式)。两件事各管一维,③段不会退化成照抄。
四段各占一个词,互不共用(2026-10-02 定):产品 / 功能 / 界面 / 说明。改段名前先对照这张表;两个段名里出现同一个词,边界一定在漂。旧名「调研与方案 / 需求与结构」都含「需求」,③段旧名里的「交付」是三段共有的属性,都属名实不符,已改。 ①叫「产品需求」不叫「需求调研」:该段产出
research/1a-需求文档.md、1b-竞品分析.md、1c-用户画像.md,也产出1d-产品策略.md、1e-使用场景.md,「调研」二字盖不住后半截。 ⭐ 1b 是①段唯一交两种体例的子步:独立分析体research/1b-独立分析/<竞品名>.md(竞品池每一个一份),汇总对比体research/1b-竞品分析.md(恒一份)。职责边界与定案原话见references/stage-discovery/references/competitor-analysis.md§0.4。
⭐ grill-me 全场只有①段一份(2026-10-06 用户定案):①段那份按 A / B 两节提问,火力点划分、节次归属与定案原话见 references/stage-discovery/references/grill-me.md —— ⛔ 本入口不复述。B 节结论落进 research/1a-需求文档.md。
⭐ ②段产出两份(2026-10-06 收窄,2026-10-07 定为两份):prd/2a-产品功能.md(功能清单:做哪些 / 不做哪些 / 每条带优先级 + 状态流转)与 prd/2b-界面布局.md(页面关系 + 页面内板块布局)。定案原话与理由见 references/stage-requirements/SKILL.md 开头。
(交接口反转前的口径、②段收窄前的产出清单与去向 → references/_留痕/③段与总入口-旧口径.md)
⚠️ ①段功能按「使用场景」组织(一条场景可跨多个页面),不按页面组织。
段内的子步顺序、方法论文档、硬约束、完成标准,都在各段自己的 SKILL.md 与 references/ 里。
①段 1a 需求文档:全程最先做,且只做一次。用 grill-me 与用户互动,产出 docs/pm/<项目>/research/1a-需求文档.md(开头写清做什么 / 为谁 / 不做什么,往下是决策表)。
项目与路径约定(单一真源)
四段全部遵守本节。各段
SKILL.md与references/里出现docs/pm/...时,<项目>一律指本节定义的 slug。
<项目> 是什么
项目 slug 用小写字母、数字、连字符(例 my-tool、video-canvas)。它同时是 docs/pm/<项目>/ 与 designs/<项目>/ 的目录名,两处必须同名,一个字都不能差。
slug 怎么定(按序取第一个成立的)
| 序 | 条件 | 取值 |
|---|---|---|
| 1 | 用户在当前会话里明确说了项目名 | 该名字 slug 化 |
| 2 | .registry/current-project 存在且非空 |
其内容 |
| 3 | docs/pm/ 下恰有一个非 _ 开头的目录 |
该目录名 |
| 4 | 以上都不成立 | 停下问用户 |
写任何文件之前先核对:目标路径里的 <项目> 段与按上表得出的 slug 是否一致。不一致就停下说明,不要「先写了再说」——猜错会把产物写进别的项目,事后极难拆干净。
产物落哪
| 段 | 路径 |
|---|---|
| ① 产品需求 | docs/pm/<项目>/research/ |
| ② | docs/pm/<项目>/prd/ |
| ③ | docs/pm/<项目>/DESIGN.md、designs/<项目>/*.html、designs/<项目>/3c-GPT参考版.md |
| ④ | 写进原型 HTML 自身(designs/<项目>/*.html),不额外落 md |
DESIGN.md 为什么在项目目录、不在仓库根
DESIGN.md 是③段的绑定视觉规范,一个项目一份,③段按当前项目的 slug 去读它。仓库根只能放一份,多项目会互相覆盖,所以一律放 docs/pm/<项目>/DESIGN.md。
推论(硬规则):读 DESIGN.md 时,路径必须由本节定义的 <项目> slug 拼出,不许用「当前工作目录碰巧有 DESIGN.md」这类推断。仓库根不放任何项目的 DESIGN.md。
工具选择规则(防止选错,最重要的一节)
下表是选型总则。这些工具都已封装在对应段内,本文件只负责让你不选错;具体调用路径见各段
SKILL.md。
| 要什么 | 用谁 | 别用 |
|---|---|---|
| 页面设计全链(规范 → 原型 → 审查) | ③段 stage-delivery 自己的 D0→D5 流水线 |
另找风格库,或自己手搓一套 token 与门禁 |
| 评审用的可点原型 / 生产级前端页面 | ③段 3b(按 D2 构建,单文件 HTML 交付)。先判页型:营销页取③段 §供给·版式骨架 的可选档,工具型页面取其默认档 | 不判页型就套可选档种子——那是营销落地页骨架,会把后台做成营销页 |
| 设计规范文件 | ③段 3a 生成 DESIGN.md(令牌表取自③段选定套,见③段 §供给·定调与令牌;再加该项目②段的界面需求) |
凭空编一套 token |
| 架构图 / 流程图 / 时序图 | diagram-design |
手写 Mermaid |
| 状态迁移的守卫、副作用、并发 | state-machine |
指望 diagram-design 覆盖这些 |
| 审美方向 / 风格定调 | ③段 §供给·定调与令牌 的默认档里选一套(可选档亦见该处),读候选套按页面类型挑。⛔ 每次只选一套 | 「米白+衬线+陶土色」这类默认审美,或凭感觉编 |
| 多方向比选 / 独立评审打分 | ③段 §供给·多方向比选 与 §供给·独立评审协议 | 拿它的评分循环替代本段 Gate-1/2/3 |
③段的页面设计供给 —— 默认主线、定调与令牌、版式骨架、工艺数值判据、独立评审协议、多方向比选,共六档;各档的默认来源 / 可选来源 / 路径只在③段 references/stage-delivery/SKILL.md 的 §供给 定义一次,本入口不复述,要改供给只改那一块(2026-10-08 起)。oil-ui-pro 是界面设计方法论:五步流程(探索方向 → 建结构 → 取实证 → 独立评审打分 → 验证交付),加风格对比页与截图工具;它自带联网版本检查与自动更新,是用户明确要求全量搬入的例外项(既有纪律是「依赖外部服务一律不收」),已记录在案,不扩散。
默认走 oil-ui-pro 主线,不与可选档缝成一条流水线:可选档只在 §供给 里列,选了才作补强(多一路定调候选、多一套工艺数值判据),不选也不影响开工。
四样东西供给件里都没有对应,由 stage-delivery 自己扛:设计契约十二字段、结构骨架、交互清单、工具型版式库。
页型分流(2026-10-05 新增):③段 §供给·版式骨架 的可选档是营销落地页向,工具型页面照它做会长出「标题上下各一行小字」的三段式(骨架名单与理由见③段 references/stage-delivery/references/layouts-tooling.md 开头)。本项目实测踩过这个坑,结构判据全绿也拦不住。所以③段 D0 必须先判页型,工具型页面版式一律走 §供给·版式骨架 的默认档。
只读一处来源:同一条判据若在默认档与可选档各有一份且口径不同,以本项目追加条为准 —— ⛔ 但追加条不得放宽基础层(oil-ui-pro 是基础层、其余是叠加层,分层规则见③段 §供给),并在 runbook §3.4 显式标注「本项目追加」。
DESIGN.md 说明:@google/design.md 提供 lint / diff / export / spec 四个子命令,目前是 alpha(v0.4.0)。非 TTY 的管道里可能不回显输出,需在真实终端里确认。本机实测该命令完全不可用,不要拿它当校验关卡;改由 D3 收口与 D5 终检按真实像素人工复测对比度(判据见③段 §供给·工艺数值判据 里配色那一份)。原两把门禁脚本(静态文案检查 / 渲染机检)已随旧主干从磁盘移除,当前没有机器复现,结论只能记「人工判定」,不得写成「脚本已通过」。
可调用工具(自然语言触发)
两个随段携带的独立工具,装在③段
references/stage-delivery/assets/下,按用户说法直接触发,产物落项目目录。它们都挂在③段下,不单独成段。
| 用户说 | 触发工具 | 做什么 | 产物 |
|---|---|---|---|
| 「分析 XXX 视频」「把这个视频抽帧」「拆一下这条视频的画面」 | stage-delivery/assets/video-capture/ |
取视频(本地文件 / 直链 URL)+ 抽帧(双因素 + 首尾 + 补帧) | 关键帧 frames/ + frame_times.json(供①竞品分析、③视觉参考) |
| 「获取 XXX 网站的设计风格」「抓这个网站的风格/组件/配色」 | stage-delivery/assets/design-capture/ |
抓网页设计系统(色彩 / 排版 / 组件),生成样式模板 | 一套 design-system-<名>/(与 design-system-tiaoyue 同构,可直接被③段 D1 选用) |
两者都独立可单跑:video-capture 只依赖 ffmpeg;design-capture 只依赖本机 Chrome(CDP)+ vendor/ 里搬运的抽取脚本,不需要任何外部服务在场。用法与边界见各自 SKILL.md,来源与署名见各自 ATTRIBUTION.md。
触发时机:①②段拆竞品视频用 video-capture;③段要新建样式或拆参考站用 design-capture。
两个工具都只做合规最小集:不抓平台页内视频,不调付费接口;抽取结果须先目视比对再采用。
进入方式
| 你说什么 | 模式 | 从哪开始 |
|---|---|---|
| 「规划 XX」「从零做 XX」 | 全流程(自动处理) | stage-discovery → stage-requirements → stage-delivery → stage-proto-doc,一路跑完,段间不停下来问(含①段末) |
| 「先确认方案」「跑完方案停下等我」「规划 XX,先给方案」 | 方案确认 | 同一套四段,唯一差别是①段末停下等你确认方案,确认后才进②③④ |
| 「只做产品需求」「只做产品功能」「只做界面交互」「只做原型说明文档」 | 单段 | 只调对应那一个 stage skill,不展开其他段 |
| 已有②段,要出原型 | 单段 | 直接调 stage-delivery,从它的 3a 起 |
| 已有原型,要补说明 | 单段 | 直接调 stage-proto-doc,从它的 4a 起 |
| 只问某个单点 | 单段 | 不跑任何段,在对应 stage skill 内点名子步,或直接说要看哪份方法论 |
「只调一段」成立的原因:四段之间只通过落盘文件耦合,没有隐式状态。
- ②只读
docs/pm/<项目>/research/*;缺失时标注【假设】继续,不催促回补① - ③只读
docs/pm/<项目>/prd/*;缺失时同样标【假设】继续 - ④只读
designs/<项目>/*.html,另按需读docs/pm/<项目>/prd/*校准术语;缺失时标【假设】继续
执行规则
只有三种模式,没有第四种:
| 模式 | 段之间 | 段之内 |
|---|---|---|
| 全流程(自动处理) | 一路跑完,段间不停下来问(含①段末)。每段结束按「标准收尾格式」输出一段报告,输出完即刻进下一段 | 子步之间不反问,做完直接进下一个子步 |
| 方案确认 | 与全流程完全相同,只有一处不同:①段末停下等你确认方案;确认后②③④一路跑完、段间不停 | 同上 |
| 单段 | 不涉及 | 不越界,不催促回补前段 |
这两条是全流程模式下的两个独立分支,不要混:全流程(自动处理)没有①段末的强制停;「停下等确认方案」只在「方案确认」模式下发生。二选一由用户定(界面里点【生成原型和文档】时选「自动处理」或「先确认方案」,或在会话里直接说明);用户没明说时按自动处理走,不要在自动处理模式下自作主张停下来问。
「停下」指什么,不要读成「每一步都要反问用户」。只有这四种情况才停:
- 信息不足且查不到,必须用户给(如「项目与路径约定」slug 第 4 条)——停下问
- 破坏性 / 不可逆动作——二次确认
- 用户显式要求某个子步做完停下
- ①段末的方案确认(仅「方案确认」模式)——把方案摆给用户:做什么 / 不做什么 / MVP 边界 / 未复核的
【假设】,明说「等你确认方案,确认前不进②段」
段末报告:全流程(自动处理)模式下,所有段(含①)都只输出报告,不提问、不等回答;方案确认模式下①段是唯一例外,其余段同样只输出报告。
①段末的确认是回环,不是一次问答(仅「方案确认」模式):用户看到方案后可以提问题要求改,可能多轮,每轮的「问题+怎么改的」都要留痕、不得覆盖上一轮;改完由用户显式说「确认方案」才算过闸门。该模式下,没拿到用户确认的方案不得当成既定事实带进②段——这是实测踩过的坑:②段拿着未经确认的方案往下跑,把用户已拍板的需求裁掉了。
其余规则:
- 声明制(全段适用,不止③段):开工前、每进一个子段或子步、每处偏离,都要声明三件事——当前在哪、依据哪个文件的哪一节、产出落哪;偏离当场写明原因与影响,段末附偏离单。不许静默偏离。实测踩过的坑:③段 3b 交付了原型却没走当时声明的主流程、没读依据文件,也没当场说,用户追问「基于哪个 skill」才知道。
- 不做八股:不介绍方法论来源,不列人名,不复述框架历史,直接给结论。
- ⭐ 内容准则:一切落盘文字都要先过「说人话」这一关(2026-10-07 用户定案,同日扩大到规则文件)。用户原话:「当作第一步 和 第二步 生成文档时 必须遵循的内容准则」「不管是写规则 还是 写文档 都要严格按照说人话的技能去执行」。
- 适用面两类都算,只改产出不改规则等于半改。一是产出文档:
research/1a-需求文档.md到1e-使用场景.md(5 份)、research/1b-独立分析/(独立分析体)、prd/2a-产品功能.md与prd/2b-界面布局.md(2 份)。二是规则本身:本技能包内的一切落盘文字,SKILL.md、references/**、模板与清单。 - 判据来源(单一可信源,本文件不复述模式清单):
humanizer(55 条模式、5 种口吻档 casual / professional / technical / warm / blunt),humanizer-zh(24 条模式、快速检查清单、50 分制评分)。两份技能都在E:/ProgramData/.workbuddy/skills/,完整判据以源技能正文为准。 - 取哪一份(2026-10-08 补):模式清单取
humanizer(它另有references/patterns.zh.md,中文产出读那一份);评分与门槛取humanizer-zh的五维表。两份口径冲突时以humanizer-zh为准 —— 本项目产出是中文。 - 门槛:按
humanizer-zh五维评分(直接性 / 节奏 / 信任度 / 真实性 / 精炼度)≥45 / 50 才准落盘;低于 45 回炉重写。 - ⛔ 取不到判据来源时(2026-10-08 补):两份技能都不在位或读不到 ⇒ 不许凭感觉判「这条够人话」。在段末报告与
3d-审查报告.md里明写「无判据来源,本项未判」,按与 §供给·工艺数值判据 的「证据缺口」同一口径处理。 - 五条核心原则(源技能《核心规则速查》摘引):删填充短语(开场白、强调性拐杖词);打破公式结构(二元对比、戏剧性分段、修辞性设置);变化节奏(长短交错,两项优于三项,段尾多样);信任读者(直接陈述事实,跳过软化、辩解、手把手引导);删金句(读起来像可引用的话,就重写它)。
- 交付留证:产出文档在段末报告里写明「已过内容准则,评分 X/50」;改规则文件时,在当日 memory 里记下这一关过了。
- 适用面两类都算,只改产出不改规则等于半改。一是产出文档:
- 只调一段时不越界:用户说「只做第 N 段」,就跑该段,不展开其他段,也不用「你还没做调研」去催促。
- 提问上限 3 个:其余用合理假设,并在文档里标注
【假设】。例外是grill-me提问模式,不受此限(①段的「需求澄清」与②段的「需求压测」各一次),该模式的价值就是穷尽提问;此时须先声明「将连续多轮提问」,退出后恢复本约束。 - 反问优先,允许自动补全:
grill-me的默认动作是把问题抛给用户并附推荐答案。用户说「你定」、连续两轮不回应、或属事实类问题时,模型自行给答案并标【假设】,换来「不卡住」;但每轮结束要汇出待复核清单,未经复核的【假设】不得在下游当事实用。 - 停线规则(单一真源,全包只在本节写一次,各段一律引用、⛔ 不复述):只有三种情况停 —— ① 信息不足且查不到;② 破坏性/不可逆动作;③ 用户显式要求。
- MVP 边界优先:任何阶段都先回答「第一版做什么、不做什么」。
- 必须落盘:产出写入文件,不要只在对话里输出。
- 无来源就标注:任何查不到来源的数据都标为「估算」并写明口径,不编造数字当事实。
- 禁止长文:单份产出物默认一页纸(≤120 行),超长必须拆分。
每段的标准收尾格式
## 本段结论
- (3-5 条,可直接决策的话)
## 已落盘
- ...
## 待确认(最多 3 条)
## 建议下一步
→ 用 <skill-name> 完成 <具体事>
反面清单
- 为一个小功能跑完整调研
- 输出长文却给不出一个结论
- 跳过「不做什么」
- 用户只问单点,却强行拉进全链路
- 把估算数据写成确凿事实
- 跳过③段 D0 的 Gate-1(未定死令牌表与设计契约)就开写页面代码
- 在
grill-me提问模式下仍套用「提问上限 3 个」,把提问做成走过场 - 只跑一次
grill-me:①没定义需求就去取证,或②拿①段的需求定义代替功能压测直接写②段 - 把自动补全当默认动作:用户没说话就替用户拍板,还没标
【假设】、没进待复核清单 - 把④的说明区写进产品功能范围,或让③顺手把说明文档一起写了(该调
stage-proto-doc就调) - 手写 Mermaid 代替 diagram-design,手写 token 表代替 DESIGN.md
- 绕过四段自己手搓,或重写它们的内容(该调
stage-*就调) - 把供给件的内部路径按本 skill 目录去拼,或改它们的正文 —— 供给件指③段自带的
oil-ui-pro,以及 §供给 各档落在assets/下的件(它们是随③段携带的供给件,改动只写stage-delivery自己的SKILL.md/references/;默认档与可选档平行,不缝成一条流水线,也不把oil-ui-pro的评分循环当成本段 Gate 的替代) - 猜
<项目>:定不出来还硬写,把产物落到别的项目目录下 - 把
DESIGN.md写到仓库根:多项目会互相覆盖 - 段间停下来问「要不要继续」:全流程(自动处理)模式下直接进下一段,只在段末输出报告
- 把两种模式混用:在自动处理模式下自作主张停下问方案,或在「方案确认」模式下确认前就开跑②③④
- 在「方案确认」模式下把①段的方案当成已确认就往下跑:该模式下①段末必须停下等用户确认(含「不做什么」)
- 下游擅自裁剪上游已拍板项:②③④发现要砍①段或决策表里已拍板的东西时,不许自行裁掉或改口径,必须列成「与已定决策的差异」交用户显式确认
- 把模式当成段:模式是「要不要在①段末停」的开关,不是第五个段,别为它单独造段或造产物
- 跑了却不说:没声明当前段 / 子步与依据文件,或偏离了被调 skill 的主流程却不声明、不记偏离单(应为:开工先声明、每个子步再声明、偏离当场声明)
改名 / 改供给后的自检
python scripts/check_naming.py --ws <工作区>
它查四段段名与子步名在「总入口 ↔ 各段 SKILL.md ↔ 各段 references/」之间有没有漂,包括 H1 与子步表是否一致、总入口子步列有没有漏项、runbook 必读表有没有引用已移除的资产、两份副本是否一致。纯静态比对,不需要渲染,不需要外部依赖。
为什么必须有它:实测当天漏过两次,当时没有任何门禁会报错。
第一次(2026-10-02):改段名时 SKILL.md 改了,但 references/stage-discovery/references/grill-me.md 的 H1 仍写「需求澄清(grill-me · 调研段)」;references/stage-requirements/SKILL.md 子步表写「2b 功能流转」而正文 H2 写「## 2b 状态机」;总入口④段子步列只写「4a 说明区 / 演示引导」漏了 4b / 4c。三处都只能靠回读发现。
第二次(2026-10-06):②段收窄为「只细化功能」(7 份产出变 1 份)后,各段 SKILL.md 都改了,但总入口的三处仍写着旧结构——四段表的②段子步列仍是「2a 功能定义与压测 / 2b 功能流转 / 2c 功能图示」,四段表的①段子步列「1c 产品定位与商业设计」未随段内改名(段内已改称「产品定位与场景」),正文仍写「①与②各跑一次 grill-me」并指向两份同名文档,实际全场只有①段一份。闸门当场报 6 个 FAIL,根因是「改了承载段、忘了总入口」。
由此立一条硬纪律,与「换供给不能只改承载段」同型:凡改子步结构 / 段内产出清单 / 段间交接口,必须连带改总入口 product-planning/SKILL.md 的「四段结构」表与「交接口」表,不改就是半改状态。
改了段名 / 子步名 / 判据供给源之后必须跑一次,并把结果记进当日 memory。改完不校验,下次读契约的人拿到的是错的配方。
本脚本只查文本一致性(H1 ↔ 子步表 ↔ 总入口 ↔ 副本),查不出「判据口径是否自相矛盾」。例如「②段到底该不该给页面结构」这种反转,闸门一个字都报不出来。口径类改动要靠人工回读,且必须把反转理由与用户原话写进文档留痕。
脚本输出里的 [提示] 项(旧名出现)不计入失败,但要人工看一眼是不是落在「废止理由块」里——落在里面是正当留痕,散落在正文里就是真残留。
2026-10-07 起本技能只在全局一份:E:/ProgramData/.workbuddy/skills/product-planning/。它就是本体,不再有「主 / 副 / 装入」三副本,也不再需要「三处 md5 复核」(那只在有副本时才有意义)。改完只跑一次 check_naming.py --ws <工作区>。用户原话:「把产品规划复制到 workbuddy 全局skills中 后续维护和使用全局技能」。工作区原先那三份已归档到 归档/技能迁全局-20261007/(未直删,可随时取回)。