Files
WorkBuddy df56c2c137 初始化提交:contentm_agent 工作区全量快照
内容分四块:
1、产品规划产出 —— MCN 短视频整合营销工作台的①段五份(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)、②段两份(2a 功能/2b 布局)、③段界面(DESIGN.md 契约与令牌表 + mcn-workbench.html 原型 + 实测/会诊/审查三份 + 23 张闸门截图)。
2、开源竞品调研 —— 5 个内容工作台项目的取证原始件与 1b 系列分析文档。
3、参考资料 —— 竞品视频抽帧 1145 张 + 2 个源视频 + 功能点截图。
4、机制侧 —— 协作脚本与状态台账、工作区记忆日志、抽帧/OCR 脚本。

.gitignore 只排运行时日志、脚本备份副本与一次性探针输出,其余按原样入库。
2026-10-08 08:13:02 +08:00

26 KiB
Raw Permalink Blame History

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 说明区与演示引导归④段

口径:②段钉骨架,③段做皮肉。用户原话:「3 是负责设计和交互,页面关系和布局必须在第二步确认清楚,不然第三步没有方向 一会一个样子」。②段要给全的是有哪几页、每页几个板块、板块怎么排、跨页关系;③段不许增删移动板块,缺板块回②段改。配色 / 字体 / 间距 / 组件样式 / 动效,以及每个板块的视觉与交互实现,都归③段。

②→③ 最容易搞坏。旧病灶:②段说「必须能读到」,③段读成「必须常驻主屏」,五类信息就全铺一屏成了信息墙。分档表把「读到」明确成「一次点击内可达」,防的就是这句歧义。骨架是灰块(有哪些块、什么顺序),③段给的是视觉与交互实现(排版、点哪有什么反馈、空态、响应式)。两件事各管一维,③段不会退化成照抄。

四段各占一个词,互不共用(2026-10-02 定):产品 / 功能 / 界面 / 说明。改段名前先对照这张表;两个段名里出现同一个词,边界一定在漂。旧名「调研与方案 / 需求与结构」都含「需求」,③段旧名里的「交付」是三段共有的属性,都属名实不符,已改。 ①叫「产品需求」不叫「需求调研」:该段产出 research/1a-需求文档.md、1b-竞品分析.md、1c-用户画像.md,也产出 1d-产品策略.md、1e-使用场景.md,「调研」二字盖不住后半截。 ⭐ 1b 是①段唯一交两种体例的子步(2026-10-07 用户定案「竞品分析 有独立分析也有汇总分析 都应该要用上」):独立分析体 research/1b-独立分析/<竞品名>.md(竞品池每一个一份),汇总对比体 research/1b-竞品分析.md(恒一份)。职责边界见 references/stage-discovery/references/competitor-analysis.md §0.4。

⭐ grill-me 全场只有①段一份(2026-10-06 用户定案):用户原话「grill 也应该拿到第一步了,第二部就是细化功能」。①段那份按 A / B 两节提问:A 节问「要做什么、为谁、边界在哪」,B 节问「做成什么样、哪些情况不成立、状态怎么流转」,B 节结论落进 research/1a-需求文档.md。

⭐ ②段产出两份(2026-10-06 收窄,2026-10-07 定为两份):用户原话「不需要 就用使用场景,其余6分都不需要了」「2 产品功能 和 界面布局不就是两个文档嘛」。prd/2a-产品功能.md(功能清单:做哪些 / 不做哪些 / 每条带优先级 + 状态流转)与 prd/2b-界面布局.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/<项目>/ux/、docs/pm/<项目>/ux/diagrams/
③ 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 交付)。先判页型:营销页取 open-design 技能的 design-templates/web-prototype/,工具型页面取③段 references/layouts-tooling.md 不判页型就套 web-prototype 种子——那是营销落地页骨架,会把后台做成营销页
设计规范文件 ③段 3a 生成 DESIGN.md(令牌表由 open-design 技能选定套的 tokens.css 产出,加该项目②段的界面需求) 凭空编一套 token
架构图 / 流程图 / 时序图 diagram-design 手写 Mermaid
状态迁移的守卫、副作用、并发 state-machine 指望 diagram-design 覆盖这些
审美方向 / 风格定调 open-design 技能里选一套(读候选套 DESIGN.md 第 1 章,按页面类型挑) 「米白+衬线+陶土色」这类默认审美,或凭感觉编
多方向比选 / 独立评审打分 oil-ui-pro 技能(方向探索 design-direction.md,对比页 style-explorer.md,评审协议 visual-review.md) 拿它的评分循环替代本段 Gate-1/2/3

③段的页面设计供给来自两个独立技能(2026-10-05 定),都装在 .workbuddy/skills/ 技能仓库,都可脱离本段单独使用。open-design 是判据供给库:design-systems/(153 套,定调只从这里选)、craft/(13 份工艺判据:状态穷举 / 字阶 / 配色 / 动效 / 反 AI 味 / 无障碍)、design-templates/web-prototype/(版式骨架种子,营销页向)。oil-ui-pro 是界面设计方法论:五步流程(探索方向 → 建结构 → 取实证 → 独立评审打分 → 验证交付),加风格对比页与截图工具;它自带联网版本检查与自动更新,是用户明确要求全量搬入的例外项(既有纪律是「依赖外部服务一律不收」),已记录在案,不扩散。

两者平行同层级,不缝成一条流水线:多数页面走 open-design 主线;需要「先拉开方向让用户挑」或「独立评审打分」时,取 oil-ui-pro。

四样东西两个技能都没有对应,由 stage-delivery 自己扛:设计契约十二字段、结构骨架、交互清单、工具型版式库。

页型分流(2026-10-05 新增):web-prototype 的种子与 8 个骨架全是营销落地页结构(hero / features / stats / quote / CTA),自带 .eyebrow(眉标)与 .lead(副标题)。工具型页面(后台 / 控制台 / 列表 / 详情)照它做会长出「标题上下各一行小字」的三段式。本项目实测踩过这个坑,结构判据全绿也拦不住。所以③段 D0 必须先判页型,工具型页面零 .eyebrow、零 .lead、零 .hero,版式走③段 references/layouts-tooling.md。

只读一处来源:同一条判据若在 stage-delivery 与 craft 各有一份且口径不同,以本项目追加条为准,并在 runbook §3.4 显式标注「本项目追加」。

DESIGN.md 说明:@google/design.md 提供 lint / diff / export / spec 四个子命令,目前是 alpha(v0.4.0)。非 TTY 的管道里可能不回显输出,需在真实终端里确认。本机实测该命令完全不可用,不要拿它当校验关卡;改由 D3 收口与 D5 终检按真实像素人工复测对比度(判据见 open-design 技能的 craft/color.md)。原两把门禁脚本(静态文案检查 / 渲染机检)已随旧主干从磁盘移除,当前没有机器复现,结论只能记「人工判定」,不得写成「脚本已通过」。

可调用工具(自然语言触发)

两个随段携带的独立工具,装在③段 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/ 里搬运的抽取脚本,不需要 open-design daemon 在场。用法与边界见各自 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/<项目>/strategy/*;缺失时标注 【假设】继续,不催促回补①
  • ③只读 docs/pm/<项目>/prd/* 与 docs/pm/<项目>/ux/state-machine.md;缺失时同样标 【假设】继续
  • ④只读 designs/<项目>/*.html,另按需读 docs/pm/<项目>/prd/* 与 docs/pm/<项目>/ux/state-machine.md 校准术语;缺失时标 【假设】继续

执行规则

只有三种模式,没有第四种:

模式 段之间 段之内
全流程(自动处理) 一路跑完,段间不停下来问(含①段末)。每段结束按「标准收尾格式」输出一段报告,输出完即刻进下一段 子步之间不反问,做完直接进下一个子步
方案确认 与全流程完全相同,只有一处不同:①段末停下等你确认方案;确认后②③④一路跑完、段间不停 同上
单段 不涉及 不越界,不催促回补前段

这两条是全流程模式下的两个独立分支,不要混:全流程(自动处理)没有①段末的强制停;「停下等确认方案」只在「方案确认」模式下发生。二选一由用户定(界面里点【生成原型和文档】时选「自动处理」或「先确认方案」,或在会话里直接说明);用户没明说时按自动处理走,不要在自动处理模式下自作主张停下来问。

「停下」指什么,不要读成「每一步都要反问用户」。只有这四种情况才停:

  1. 信息不足且查不到,必须用户给(如「项目与路径约定」slug 第 4 条)——停下问
  2. 破坏性 / 不可逆动作——二次确认
  3. 用户显式要求某个子步做完停下
  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/,完整判据以源技能正文为准。
    • 门槛:按 humanizer-zh 五维评分(直接性 / 节奏 / 信任度 / 真实性 / 精炼度)≥45 / 50 才准落盘;低于 45 回炉重写。
    • 五条核心原则(源技能《核心规则速查》摘引):删填充短语(开场白、强调性拐杖词);打破公式结构(二元对比、戏剧性分段、修辞性设置);变化节奏(长短交错,两项优于三项,段尾多样);信任读者(直接陈述事实,跳过软化、辩解、手把手引导);删金句(读起来像可引用的话,就重写它)。
    • 交付留证:产出文档在段末报告里写明「已过内容准则,评分 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-* 就调)
  • 把两个页面设计技能(open-design / oil-ui-pro)的内部路径按本 skill 目录去拼,或改它们的正文(它们是技能仓库里的供给技能,改动只写 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/(未直删,可随时取回)。