让产品 PD 用自己的 Claude,在真仓库里"所见即所得"地把需求跑通,产出可被本仓库 deliver-feature 高保真消费的分层 spec。设计草稿,供 review。
| 层 | 内容举例 | 原型能否传递 | 还原度 |
|---|---|---|---|
| 可见层 | 页面结构、字段列表、主流程、组件选型、加载/空/错/无权限态、名单类型切换联动 poiid、调价方式切后缀切换 | 原型所见即所得 + 截图直接传 | 高 85–95% |
| 产品规则层 | 优先级可否重复、减价是否兜底、无权限"隐藏 vs 禁用"、生效时间口径、搜索维度(poiid vs 名称) | 点不出来,但 PD 能拍板 → 靠漏洞清单逼问 | 中,取决于是否逼问 |
| 实现契约层 | 枚举 INT 编码(1/2/3)、version 乐观锁、is_deleted 软删、ticket_markup_rule_log、时区落库、ACL 码、JSON scope 结构 |
原型完全看不见,也不该 PD 定 | 不在还原范围 |
ticket-pricing/10-prd.md 的 AC1–AC7 + 枚举双向映射 + 乐观锁 + 软删 + 操作日志——
不可见契约占了 spec 可判定内容的一半以上,PD 点原型一个都点不出来。所以"高度还原"只对可见层与产品规则层成立。
.harness/specs/本质:把 deliver-feature 的 Phase 0(摄入+澄清+写 spec)中"做什么"那半前移到 PD 侧,且用活原型消除歧义;"怎么实现"仍留研发侧。
clone 仓库 → 安装 → 注入 mock + 免登模式 → pnpm dev。
Claude 在真仓库用 shadcn/ui + Tailwind 语义 token + src/component/layout 搭功能 UI,接 mock 数据。
docs/ui)→ 原型天然产线级,截图+JSX 才是可信目标。PD 看浏览器 →「按钮放右边」「加个空态」「筛选多一个渠道」→ Claude 改 → PD 复看。循环到满意。
Claude 生成 10-prd / 20-ui 草稿 + 截图;并对本功能过一遍漏洞清单(逻辑分支/并发一致性/授权越权/金额精度/时区/歧义/假设依赖),分两栏:
■ PD 可拍板(如优先级可否重复、无权限隐藏还是禁用)→ 当场问,答复入 clarifications.md;
■ 留研发(枚举编码、锁机制)→ 标注移交,不静默丢。
分层 spec markdown + 截图 → issue;原型分支 push 上去。PD 确认即完成。
.harness/specs/(零翻译损耗)| PD 侧产出 | 落到研发侧 | Owner |
|---|---|---|
| 10-prd.md(目标/范围/主流程/验收) | .harness/specs/<f>/10-prd.md | PD |
| 20-ui.md(交互/视觉/状态) | 同名 | PD |
| clarifications.md(PD 拍板答复) | 同名 | PD |
| 关键步骤截图 | .harness/baselines/<f>/(兼作视觉基线) | PD |
| 原型分支(真仓库真组件) | 研发读 JSX 作实现参照 | PD |
| — | 30-api / schema.sql / 40-rules / tasks / 测试 | 研发(GATE1 后) |
deliver-feature 已消费的分层结构,我这边"拉取即进 spec"。
Phase 0 从"从零澄清"降级为"补不可见契约 + GATE1 对齐",起点大幅前移,返工大幅减少。
mcp__code__create_issue + 截图附件 + 原型分支链接。确认即按此。