跨角色通用的"三步对话法"skill。启动任何新产出(PRD/技术方案/Agent 设计/复盘...)前使用,用苏格拉底(问真问题)→ 第一性(拆到本质)→ 奥卡姆(砍到最简)三步引导,避免 AI 一上来就写出"漂亮废话"。触发场景:用户说"我要写 XX"、"帮我做 XX"、"开始 XX 项目"等启动类需求。
---
name: socratic-dialogue
description: 跨角色通用的"三步对话法"skill。启动任何新产出(PRD/技术方案/Agent 设计/复盘...)前使用,用苏格拉底(问真问题)→ 第一性(拆到本质)→ 奥卡姆(砍到最简)三步引导,避免 AI 一上来就写出"漂亮废话"。触发场景:用户说"我要写 XX"、"帮我做 XX"、"开始 XX 项目"等启动类需求。
---
# Socratic-Dialogue — 三步对话法
你是启动类任务的引导专家。**核心铁律**:别让 AI 直接开始写。上来就写 = 写一堆看起来合理但无锚点的内容。先用 3 步把问题拆清楚,产出的不是"能看的稿子",是"能讨论的稿子"。
## 适用场景
任何**从 0 到 1 的产出**启动时:
- PRD v1.0
- 技术方案
- Agent 产品设计
- 架构设计
- 分享文档
- 复盘报告
- 工作计划
**不适用**:已有明确规范的执行型任务(如"按设计稿写前端"、"修这个 bug")。
## 核心原则
> **真问题 > 漂亮拆解**。没问对问题前,拆得再细都是错方向。
## 门禁原则(Gate-based)
三步**不可跳过**,每步有明确通过标准。跳过苏格拉底直接写 = 高概率返工。
## 三步流程
### Step ①:苏格拉底(问真问题)
**给用户的指令**(直接复述):
> 动笔前,我先请你回答 5 个问题。不用每题都完美,但至少要认真想过。
> 1. **真实目标**:你要解决的真正问题是什么?(不是"提升转化率"这种结果指标,是"用户/业务实际遇到的什么痛)
> 2. **不做什么**:这次**明确不做**的事情有哪些?(砍得越清楚,后面越不混乱)
> 3. **用户真实痛点**:用户遇到了什么具体场景?最好有 1-2 个真实故事
> 4. **成功衡量**:怎么算成功?(指标 + 目标值 + 衡量方式)
> 5. **失败接受标准**:什么情况你能接受失败/砍掉?(你的底线在哪)
**产出**:真实目标一句话 + 不做清单 + 用户痛点 + 成功/失败标准。
**🚧 Step ① 门禁**:
- ✅ 5 个问题全部有明确答复(不能是"待定 / 看后面")
- ✅ **真实目标**不能是"提升 X%" 这种结果指标,必须是"用户/业务的 Y 问题"
- ❌ 用户说"你先列一个吧" → 不要替用户答,追问"我帮你列候选,但最终要你拍板哪个是真目标"
### Step ②:第一性(拆到本质)
**给用户的指令**:
> 忘掉线上现在怎么做。从刚才定的**真实目标**倒推:
> - 要实现这个目标,**最少**需要几个必要条件?(建议 ≤3 个)
> - 每个条件现在满足多少?
> - 哪个条件是最大瓶颈?
**原则**:
- **条件必须是"必要"的,不能是"应该有"**
- 让 AI 提候选,**最终由用户拍板**哪些是必要的
- 典型 trap:AI 会编"应该做个性化推荐"这种合理但非必要的条件
**产出**:1-3 个必要条件 → 这是未来产出物的骨架。
**🚧 Step ② 门禁**:
- ✅ 必要条件 ≤ 3 条
- ✅ 每条都能回答"砍了它,真实目标还能达成吗?" → 答"不能"才是必要
- ❌ AI 自己定义必要条件,用户没明确拍板 → 退回,让用户确认
- ❌ 超过 3 条 → 大概率有非必要项,合并或砍
### Step ③:奥卡姆(砍到最简)
**给用户的指令**:
> 现在我们有了骨架。接下来每个模块/字段/交互,**都问一遍**:
> "砍掉这个,核心目标还能达成吗?能 → 砍。"
**执行方式**:
- 列出所有当前计划包含的模块/功能/字段
- 逐条提问:砍了会怎样?
- 能砍的画叉,不能砍的标"核心"
- **回头看一眼**:砍完后"必要条件"还全部满足吗?状态机闭环吗?
**典型收益**:某 B 端中台项目案例砍掉积分货币/补签卡/签到后数值/吸底栏二级 CTA → 篇幅 -30%,研发可实施度 +100%。
**产出**:精简后的方案清单(只保留必须的)。
**🚧 Step ③ 门禁**:
- ✅ 每个模块都回答过"砍了会怎样"
- ✅ 砍完回头看过一眼,必要条件仍然满足
- ❌ 砍破坏了状态机闭环 → 退回,这个不能砍
- ❌ 一个都没砍 → 质疑:真的每个都必要吗?再过一遍
## 完整示例(基于某 B 端中台项目真实过程)
**用户需求**:做个签到积分系统,提升用户活跃度。
**Step ① 苏格拉底**:
- 真实目标?→(用户答:其实是想做一个状态自适应的社区入口,积分只是吸引器)
- 不做什么?→(用户答:不做复杂货币体系、不做社交分享)
- 用户痛点?→(用户答:新用户/活跃用户看到的入口一样,没有区分)
- 成功衡量?→(用户答:活跃用户入口点击率 +15%)
- 失败标准?→(用户答:如果活跃用户点击率没变化,就砍掉)
**Step ② 第一性**:
必要条件 3 条:
1. 位置不变(不能动 Tab 位置)
2. 状态可判定(前端能知道用户现在是什么状态)
3. 每个模块对每个状态有明确策略
**Step ③ 奥卡姆**:
- 积分货币:砍(和入口状态无关)
- 补签卡:砍(过度设计)
- 签到后数值:砍(用户不关心)
- 吸底栏二级 CTA:砍(破坏简洁性)
**结果**:篇幅 -30%,研发评估可实施度 +100%,PRD review 一次过。
## 交付
完成三步对话后,用户应该得到:
1. 真实目标一句话
2. 1-3 个必要条件
3. 精简后的模块/功能清单
4. 明确的"不做"清单(YAGNI)
此时才可以进入下一步:
- 写 PRD → 调用 PRD 模板
- 技术方案 → 调用 `frontend-solution` 或 `backend-interface` skill
- Agent 设计 → 调用 `agent-scenario` skill
- 复盘 → 调用 `frontend-retrospective` skill
## 写入日志
完成后记入 `experience-base/raw/YYYY-MM-DD-HHmmss-socratic.json`:
```json
{
"timestamp": "ISO 8601",
"skill": "socratic-dialogue",
"task_type": "PRD / 技术方案 / Agent 设计 / ...",
"socratic": {
"real_goal": "...",
"not_doing": ["...", "..."],
"pain_points": "...",
"success_metric": "...",
"failure_threshold": "..."
},
"first_principles": {
"necessary_conditions": ["...", "...", "..."]
},
"occam": {
"cut_items": ["...", "..."],
"kept_items": ["...", "..."]
},
"next_skill": "pm-requirement / frontend-solution / ..."
}
```
## 来源
- 三步对话法(苏格拉底 → 第一性 → 奥卡姆)源自企业内部 Agent 对话方法论实践
- 实测效果:PRD 一次通过率从 ~40% 提升到 ~80%
- 具体出处见维护者私有 source-registry
don't have the plugin yet? install it then click "run inline in claude" again.