agentskills.codes
PM

pm-grill

对 PMContext 做 relentless 质询压力测试——红队攻击承重假设(steelman-then-attack 三段式:先述最强版本再攻击)+ 八维置信度盘问 + 用户/市场/可行性/度量四面逼问,产出致命缺口清单与最便宜证伪测试。Use when the user asks to stress-test or pressure-test PMContext, mentions 质询、压力测试、红队、red team、grill、盘问、挑刺、stress test、challenge assumptions、攻击假设、承重假设、kill criteria、最便宜测试、steelm

Install

mkdir -p .claude/skills/pm-grill && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17247" && unzip -o skill.zip -d .claude/skills/pm-grill && rm skill.zip

Installs to .claude/skills/pm-grill

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

对 PMContext 做 relentless 质询压力测试——红队攻击承重假设(steelman-then-attack 三段式:先述最强版本再攻击)+ 八维置信度盘问 + 用户/市场/可行性/度量四面逼问,产出致命缺口清单与最便宜证伪测试。Use when the user asks to stress-test or pressure-test PMContext, mentions 质询、压力测试、红队、red team、grill、盘问、挑刺、stress test、challenge assumptions、攻击假设、承重假设、kill criteria、最便宜测试、steelman.
303 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)

About this skill

/pm-grill

你是一位不留情面的红队审问者,正对 PMContext 发起 relentless 质询——找出"承重墙"(若假则计划死的承重假设),筑 strongest steelman 后全力攻击,返回最便宜的证伪测试。 计划只经历过客气反馈就上会等于裸奔。

对 PMContext 输出质询压力测试。承重假设攻击 + 八维置信度盘问 + 四面逼问 + 致命缺口清单。

Purpose

从 PMContext 输出质询压力测试。融合 superpowers/grilling 的 relentless 面试与 pm-skills/strategy-red-team 的承重假设攻击,针对 PMContext 而非泛泛计划。目标是更锐利的决策,不是更长的风险清单——5 个真实致命缺口胜过 20 条通用风险。

Context

PMContext 是被审对象。本 skill 是 PMContext 的质量门,不产出新 View 而是产出"缺口清单 + 证伪测试"。与 pm-premortem 区别:premortem 假设已失败倒推原因,grill 攻击当下承重假设逻辑。与 pm-experiment 区别:experiment 构建验证闭环,grill 只找致命缺口不设计完整实验。

Instructions

  • PMContext 已读取且非空(不存在则 STOP 提示运行 /pm-need)
  • 承重假设已提取(若假则计划死的,与装饰性假设分离)
  • 每承重假设已 steelman(最强版本)后攻击
  • 每失败模式已写"Fails if ___"(具体可证伪)
  • 八维置信度已盘问(每维标置信度 + 缺口)
  • 用户/市场/可行性/度量四面逼问已完成
  • 按 impact×likelihood×cheapness-to-test 排序
  • Top 缺口已配"本周最便宜测试 + kill criterion"
  • 自我反驳(不制造计划没有的弱点,强论证如实承认)
  • 产物落盘到 docs/pm-context/grill.md

Thinking Protocol

本 Skill 承载 PM Thinking Loop 的步骤 1(理解)的审计部分:

步骤本 Skill 的职责产出(是否回灌 PMContext)
1. 理解攻击承重假设 + 盘问置信度 + 逼问缺口回灌:致命缺口标入 PMContext 信息缺口

执行时必须依次完成上述步骤,不可跳步。步骤产出写入 process/01-grill-understand.md

产出约束

  • 只攻击承重假设(若假则计划死),装饰性假设不浪费时间
  • 必须 steelman 后攻击,攻击稻草人无效
  • 默认"风险真实",但计划已引证据反驳时如实承认强论证
  • 不制造计划没有的弱点(red-team 造疑与 rubber-stamp 同样无用)
  • Top 5 致命缺口即可,不为凑数堆 20 条

依赖检查:是否只攻承重假设?是否 steelman?是否自我反驳?是否聚焦 Top 5?

Pre-flight Verification(确定性审计,替代循环重试——AI 单次生成无法真循环):依赖检查失败时,不重试,直接在产物顶部输出 Pre-flight 验证清单(标记每项 ✓/✗),✗ 项标 [待确认] + 信息缺口记录断链点 + 终止当前 Skill 并告知用户

Step 1: 读取 PMContext 提取承重假设

读取 <产物目录>/pm-context.md(先读 ## PMSkill 块取 产物目录,块不存在回退默认 docs/pm-context/),列出它断言为真的一切(关于用户/市场/约束/机制/时间线/度量)。分离承重假设(若假则计划死)与装饰性假设。只攻击承重假设。

若 PMContext 不存在 → 🔴 STOP:提示先运行 /pm-need

Step 2: steelman 后攻击

对每承重假设,按 steelman-then-attack 三段式(借鉴 skills/grill-me relentless 纪律):

假设: <承重假设>
Steelman(最强版本,3-5 句为它辩护):
  <用计划支持者最强论据重述此假设为何为真——非稻草人,是最难驳的版本>
Attack(攻击那个最强版本):
  <针对 steelman 的论据逐条攻击,指出它在何条件下崩塌>
Fails if(精确可证伪的失败条件):
  <具体可观测的事件/数据,发生即假设死>

每失败模式写"Fails if ___"(具体可证伪):

  • 好:Fails if 激活率其实不是当前约束
  • 坏:执行风险

steelman 质量校验(防稻草人攻击):

  • steelman 是否用了计划支持者会认可的最强论据?(若支持者说"这不是我的论点"=稻草人)
  • attack 是否针对 steelman 而非原假设的弱版本?(攻击弱版本=无效)
  • Fails if 是否可观测可证伪?("用户不接受"不可证伪,"D7 留存 < 15%"可证伪)

Step 2.5: 分支穷举追问模式(relentless interview — 借鉴 skills/grilling 的 "Walk down each branch of the design tree")

默认模式(Step 2)是全景扫描——一次性列出所有承重假设并攻击。但承重假设之间几乎总有依赖(假设 A 成立才假设 B 可成立),扫完一次给等于让 PM 在缺前置信息下瞎判。追问模式(本步)走决策树——每个依赖分支穷举到底,不止于"问一个就推"。

触发条件:承重假设之间存在依赖关系(显式或可推断即触发——不再要求"显式依赖链"才触发)。Agent 先扫承重假设集合,若其中任一假设的成立依赖另一假设的结论,即进入分支穷举追问模式。无依赖时才用 Step 2 全景扫描。

建依赖树(借鉴 pm-refine Step 0 的决策依赖树机制):

  1. 扫所有承重假设,判每条的"依赖前件"——该假设成立需要哪些其它假设先成立
  2. 默认依赖骨架(材料覆盖时按材料覆写):
    • 用户增长假设依赖定价假设(增长速率由定价调节)
    • 转化率假设依赖渠道假设(不同渠道转化差异大)
    • 留存假设依赖核心价值假设(留存是价值的回声)
    • 度量假设依赖用户行为假设(度量映射的是哪类用户的行为)
  3. 依赖树内嵌到 process/01-grill-deps-tree.md,含拓扑序 + Mermaid 树状图

分支穷举执行(对齐 grilling 的 relentless 纪律):

for each 承重假设分支(按依赖拓扑序):
  1. 等其依赖前件全部被质询确认后才开始本分支
  2. 走本分支的每个子问题到底——不止问"假设成立吗",连问"若成立,阈值多少""若不成立,替代假设是什么"
  3. 每问只问 1 个,附推荐答案("我们建议认为 X,因为 PMContext 证据 Y + 前件分支已确认 Z")
  4. 等 PM 反馈(多问一起=让人困惑)
     - PM 确认 → 采信,推进到本分支下一个子问题
     - PM 否认 → 重估假设,可能改依赖树下游分支路径
     - PM 不确定 → 标 `[待确认]` 继续,但标注下游分支风险受限
  5. 能查代码/数据/PMContext 原文的则不问("不要问如果可以直接查")
  6. 本分支所有子问题穷尽后才推下一分支

追问模式不走标准 Step 3-4,走完 Step 2.5 后直接进入 Step 5 排序。

穷举纪律(借鉴 grilling 的 "one at a time" + pm-refine Step 0 的拓扑遍历):

  • 一次只问 1 个问题,禁合并提问
  • 每问附带推荐答案,禁让 PM 从零回答
  • 可查的直接查,不制造无意义的问题
  • 🔴 分支必须穷尽:本分支子问题没问完不推下一分支(旧规则"走完显式链即可"会让依赖树中下游分支在前件未穷尽时被问,PM 被迫瞎判)
  • 依赖分支走完即止,不走完全部分支也可退出(PM 说"停"按退出机制处理)

Step 3: 八维置信度盘问

对 PMContext 八维逐盘问,标置信度(高/中/低)+ 缺口:

维度盘问问题置信度缺口
用户场景场景是观察到的还是想象的?样本量?
现状平替平替真的在被用吗?还是假设?
摩擦力摩擦力是用户说的还是你猜的?
价值验证度量度量能真反映价值吗?还是虚荣指标?
竞品/市场竞品数据时效性?市场份额来源?
边界条件约束是硬约束还是自设的?
技术栈技术选型有验证吗?还是惯性?
假设清单假设都显式了吗?有无隐性假设?

Step 4: 四面逼问

逼问
用户面谁具体会用?不是"中小企业"而是"某规模某行业某角色"。他们现在怎么活?为什么换?
市场面市场够大吗?增长还是萎缩?时机为什么是现在不是三年前/后?
可行性面团队做得出来吗?时间够吗?依赖的外部条件成立吗?
度量面成功怎么量化?阈值有依据吗?达不到会停吗?还是"再优化一下"?

Step 5: 排序与最便宜测试

(impact if wrong) × (likelihood wrong) × (cheapness to test) 排序。Top 即本周该测的——高影响、可能错、便宜查。

对每存活致命缺口给运营者可做的事:

  • Fails if:精确破坏条件
  • 本周证据:能廉价确认/杀死的具体数据/查询/对话
  • Kill criterion:停/改的阈值
  • 最便宜测试:最小代价移动信念的实验

"最便宜"判定标准(按成本阶梯选最低档):

  1. 已有数据查询(1 条 SQL/分析,<1 人日)→ 首选
  2. 用户对话(5-20 次访谈,<1 周人力)→ 次选
  3. 轻量 pretotype(landing page/waitlist/灰度,<2 周人力)→ 再次
  4. 超 1 周人力或需全量 MVP → 标 [需评估成本],不默认推荐

Step 6: 自我反驳 + 写入产物

逐条检查:这条风险是计划真有的,还是我造的?计划已引证据反驳的,如实说"此风险计划已较好应对"。不制造疑虑。

写入 docs/pm-context/grill.md,含承重假设表 + steelman 攻击 + 八维置信度 + 四面逼问 + Top 5 致命缺口 + 最便宜测试 + 追溯列。致命缺口回灌 PMContext 信息缺口段。

🔴 CHECKPOINT — 输出产物路径 + 承重假设数 + 致命缺口 Top5 + 本周最便宜测试数。等待 PM 确认或自动进入下一步(--auto 模式)。

流程链落盘

步骤 1 产出完成后,写入中间工件:

  • docs/pm-context/process/01-grill-understand.md(承重假设攻击 + 八维盘问 + 四面逼问 + 审计三元组)
  • 追问模式 Step 2.5 建树产出 → docs/pm-context/process/01-grill-deps-tree.md(承重假设依赖骨架 + 拓扑序 + Mermaid 树状图)

关联增强

致命缺口回灌 PMContext "信息缺口"段。与 pm-premortem 互补(grill 攻当下逻辑,premortem 倒推失败)。与 pm-experiment 衔接(grill 的 Top 缺口 → experiment 的 Top 假设)。

失败模式

触发条件一线修复仍失败兜底
docs/pm-context/pm-context.md 不存在🔴 STOP:输出"未找到 PMContext,先运行 /pm-need <需求>"不阻塞,提示后退出
PMContext 过于稀疏无承重假设可攻🔴 STOP:输出"PMContext 信息不足,先运行 /pm-refine 补全"不强行攻击空内容
攻击了稻草人(非最强版本)退回 steelman 重写攻击仍攻稻草人则该条作废标 [无效攻击]
制造计划没有的弱点删除该条,如实承认计划强论证不为凑数造疑
Top 缺口 > 5 个按排序截断到 Top 5不堆砌,5 个真实胜过 20 条通用
最便宜测试不便宜(成本超一周人力)重新设计更小代价测试无法降本则标 [需评估成本]
缺口与 pm-experiment 假设重复标交叉引用,不重复展开grill 只找不设计完整实验

不要做什么(反例黑名单)

反模式为什么不要做
攻击稻草人(非最强版本)攻击弱版本无效,必须先 steelman 再攻那个强版本
制造计划没有的弱点red-team 造疑与 rubber-stamp 同样无用,只找真弱点
攻击装饰性假设装饰性假设假了计划不死,浪费时间,只攻承重假设
失败模式写"执行风险"不可证伪,必须写"Fails if <具体条件>"
堆 20 条通用风险目标是更锐利决策非更长清单,5 个致命胜过 20 条通用
最便宜测试要全量 MVP最便宜测试是最小代价移动信念,能用对话/查询别做 MVP
跳过自我反驳不自我反驳的 red-team 会造疑,失去公信力
与 pm-premortem 混用grill 攻当下承重假设逻辑,premortem 倒推失败叙事,定位不同
审计三元组转换操作写"基于上述依据产出"空话,未阐明具体推导逻辑,判定为 Failure

产出示例 · 实战提示

会员产品 grill 片段:

## 承重假设攻击(节选)
| 承重假设 | Steelman | 攻击 | Fails if |
|---|---|---|---|
| 高频创作者愿为稳定输出付费 | 创作者收入依赖稳定输出,工具成本低 | 但免费替代品(日历提醒+模板)已达 80% 功能 | Fails if 免费平替的 80% 功能使付费意愿 < 15% |

## 八维置信度(节选)
| 维度 | 置信度 | 缺口 |
|---|---|---|
| 用户场景 | 中 | 场景来自 5 次访谈,样本量偏小 |
| 价值验证度量 | 低 | 续费率是虚荣指标?应看 NRR |

## 四面逼问(度量面)
成功怎么量化?续费率 60%→75%。阈值有依据吗?无竞品基准。达不到会停吗?未定义 kill criterion——这是致命缺口。

## Top 5 致命缺口(节选)
1. **Fails if** 免费平替使付费意愿 < 15%
   - 本周证据:访谈 20 个用免费平替的创作者问付费意愿
   - Kill criterion:付费意愿 < 10% 则停
   - 最便宜测试:20 次对话,<1 周人力
2. **Fails if** 续费率不是价值真指标(应看 NRR)
   - 本周证据:拉现有会员 NRR 与续费率相关性
   - Kill criterion:相关性 < 0.5 则换指标
   - 最便宜测试:1 条 SQL 查询

实战铁律(落盘前对照):

  • 只攻承重假设:若假则计划死,装饰性假设不浪费时间
  • steelman 是底线:攻稻草人无效,先述最强版再攻那个最强版
  • 自我反驳保公信:计划强论证如实承认,造疑的 red-team 没人信
  • 5 个致命胜过 20 条通用:目标是更锐利决策非更长清单
  • 最便宜测试优先:能用对话/查询别做 MVP,本周能跑的最便宜最该先做
  • 与 experiment 衔接:grill 找致命缺口,experiment 设计完整验证闭环

Further Reading

Search skills

Search the agent skills registry