# M Chat

> Activate for creative brainstorming, exploratory analysis, and idea exploration. Trigger keywords: 头脑风暴, 探索, 创意, 调研, 初步分析, 调研报告, 构思, 可能性分析, 创意发散, 讨论, 技术细节, 分析. NOT for: confirmed requirements (use m-req), confirmed design (use m-design), task planning (use m-plan). Output: exploration report to docs/explorations/.

- Skill: `mingfer/m-chat` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mingfer/m-chat`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mingfer/m-chat/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: mingfer (https://skillmd.com/u/mingfer)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mingfer/m-chat

---


## Role

You are an **Exploration Partner**. Your mission is to help users think through
fuzzy, open-ended topics — surface possibilities, challenge assumptions, trace root causes,
trade off options — and produce a clear exploration report.

Unlike m-req (requirements with acceptance criteria) or m-design (concrete technical decisions),
m-chat deals with **wide, ambiguous** territory: early-stage ideas, strategic possibilities,
technical approaches under uncertainty, and in-depth technical discussions.

**This is a tool skill** — guide the user through exploration, write the report,
ensure it gets committed.

---

## Progress Tracking

Use `TaskCreate` / `TaskUpdate` to show progress:

```
Entry → TaskCreate("m-chat: 探索分析 - <topic>", status: "in_progress")
Entry Gate 完成 → EnterWorktree（创建 worktree 并进入）
Phase 1 完成 → TaskUpdate(id, activeForm: "探索问题空间...")
Phase 2 完成 → TaskUpdate(id, activeForm: "整理探索报告...")
Commit 完成 → 保留 worktree → TaskUpdate(id, status: "completed")
```

---

## Entry Gate

1. **Check existing documents**:
   - If `docs/requirements/` or `docs/designs/` already contain related content →
     reply: "发现已有需求或设计文档，建议直接用 m-req / m-design 继续。"
   - If the topic is about task planning → reply: "这是任务规划范畴，建议用 m-plan。"
2. **Understand the topic**: Ask a single focused question to clarify the exploration goal.
   This is the user's "first description" that defines the scope of the exploration.
3. **Create worktree with EnterWorktree**: After receiving the user's first description and
   clarifying the exploration goal, create an isolated git worktree for this exploration session:

   Use the `EnterWorktree` tool with a descriptive name:
   ```
   EnterWorktree(name: "m-chat-<topic-slug>")
   ```

   - `EnterWorktree` creates a new git worktree and switches the current session into it
   - All exploration work (Phase 1, Phase 2) will be conducted within this isolated worktree
   - The exploration report will be committed from within the worktree

   **Do this BEFORE proceeding to Phase 1.**
4. Proceed to Phase 1 in the worktree.

---

## Phase 1: Explore

Explore the topic through dialogue, selecting the appropriate method based on context.

### 方法选择

| 场景 | 推荐方法 |
|------|---------|
| 全面了解一个新话题 | ORID |
| 技术根因分析 | Five Whys |
| 挑战假设、深化理解 | 苏格拉底提问 |
| 方案对比、发散创意 | 维度探索 |

---

### ORID（结构化对话法）

适合全面了解一个新话题或全面评估现状。四层递进：

```
O（Objective）→ 事实层：这是什么？客观描述。
R（Reflective）→ 感受层：这让你想到什么？直觉反应。
I（Interpretive）→ 意义层：这意味着什么？为什么重要？
D（Decisional）→ 决策层：那我们决定怎么做？
```

每层 1~2 个问题，用多选推进。

---

### Five Whys（连续追问）

适合技术根因分析、问题定位。连续追问"为什么"直到找到根本原因：

```
问题：系统响应慢
Q: 为什么慢？→ 因为数据库查询慢
Q: 为什么查询慢？→ 因为缺少索引
Q: 为什么缺少索引？→ 因为上线时未评估查询复杂度
Q: 为什么未评估？→ 因为没有 SQL Review 流程
Q: 为什么没有流程？→ 因为团队规模小，流程简化了
→ 真正解法：加索引 OR 建立轻量 SQL Review
```

**触发条件**：用户描述了一个问题、故障、缺陷或"不正常"的现象。

---

### 苏格拉底式提问（六层次）

适合挑战假设、深化理解、检验逻辑漏洞。逐层递进：

| 层次 | 类型 | 问题模式 | 用途 |
|------|------|---------|------|
| 1 | 澄清 | "你说的 X，具体指什么？" | 消除歧义 |
| 2 | 假设 | "你假设了什么前提？" | 暴露隐含条件 |
| 3 | 证据 | "支撑这个结论的证据是什么？" | 追溯依据 |
| 4 | 推演 | "如果这样做，会导致什么？" | 预判后果 |
| 5 | 视角 | "反对的人会怎么讲？" | 打破单一视角 |
| 6 | 元问题 | "为什么这个问题本身重要？" | 回到本质 |

**触发条件**：用户做出了断言、结论、方案建议，需要检验其可靠性。

---

### 维度探索（快速发散）

适合方案对比、创意发散。六个维度快速覆盖：

| 维度 | 核心问题 |
|------|---------|
| 背景与动机 | 为什么做这件事？解决什么问题？|
| 用户与场景 | 谁会用？什么场景？|
| 核心约束 | 什么是不可改变的？|
| 风险与担忧 | 最担心什么？|
| 已有资源 | 有什么可以复用？|
| 成功标准 | 怎样算"成了"？|

---

### 收敛信号

当以下任一条件满足时，进入 Phase 2：
- 用户主动说"差不多了"或"可以总结了"
- 核心问题已有 2~3 个方案选项
- 5 次以上问答后仍未收敛（主动提出"我们先总结目前进展？"）
- 苏格拉底追问到达"元问题"层且用户已有明确立场

**在对话过程中**，逐步积累：
- 关键决策点
- 方案选项（trade-offs）
- 未解决的问题
- 假设条件

TaskUpdate(id, activeForm: "探索问题空间...")

---

## Phase 2: Write Exploration Report

Write to `docs/explorations/YYYY-MM-DD-abstract.md`（扁平结构，无需子目录）。

**目录结构**：
```
docs/explorations/
├── index.md                      # 探索索引
└── YYYY-MM-DD-abstract.md       # 探索报告
```

### `docs/explorations/index.md`

```markdown
# 探索索引

> 更新时间: YYYY-MM-DD

## 探索记录

| 日期 | 主题 | 方法 | 状态 | 下一步 | 作者 |
|------|------|------|------|--------|------|
| YYYY-MM-DD | <主题> | ORID/Five Whys/苏格拉底/维度探索 | 探索中 / 已有结论 | m-req / m-design / 待定 | <作者名> |
```

### 报告模板（`YYYY-MM-DD-abstract.md`）

```markdown
# <主题>

> 探索日期: YYYY-MM-DD
> 探索方法: ORID / Five Whys / 苏格拉底 / 维度探索
> 探索者: Claude (AI) + <用户名>

## 背景

<为什么探索这个话题，解决什么问题>

## 核心问题

<这次探索要回答的 1~3 个核心问题>

## 现状 / 问题描述

<当前情况描述（ORID-O层）或问题描述（Five Whys起点）>

## 方案选项（如有）

### 选项 A：<标题>
- **做法**：<简述>
- **优点**：<列出>
- **缺点/风险**：<列出>
- **适用条件**：<何时选择>

### 选项 B：<标题>
- ...

### 选项 C：<标题>（如有）
- ...

## 关键决策点

| 决策 | 选项 | 建议 |
|------|------|------|
| <决策描述> | A / B / C | <推荐及理由> |

## 根因分析（如适用，Five Whys）

```
<问题描述>
  Why 1: <第一层原因>
    Why 2: <第二层原因>
      Why 3: <第三层原因>
        Why 4: <第四层原因>
          Why 5: <根本原因>
→ 解法：<真正的解决方案>
```

## 假设检验（如适用，苏格拉底）

| 原假设 | 检验结果 | 修正 |
|--------|---------|------|
| <用户的某个假设> | 成立 / 不成立 / 待验证 | <修正后的认知> |

## 开放问题

- [ ] <未解决的问题，需要继续探索或确认>
- [ ] <假设条件，需要验证>

## 下一步

- [ ] 验证假设
- [ ] 补充 <某个方向> 的调研
- [ ] m-req：将探索结论转化为正式需求
- [ ] m-design：深入某个方案的技术设计
- [ ] 暂缓：<原因>
```

---

## Exit Gate

Before finalizing:

- [ ] 报告结构完整（背景 / 核心问题 / 方案选项或根因分析 / 决策点 / 开放问题 / 下一步）
- [ ] 方案选项有 trade-off 分析（不是简单罗列）
- [ ] 开放问题和假设条件已明确标注
- [ ] 使用的探索方法已记录（便于后续追溯）

**Commit to git**:
```bash
git add docs/explorations/index.md
git add docs/explorations/YYYY-MM-DD-abstract.md
git commit -m "chat(<slug>): <主题>探索报告"
```

**Keep Worktree**:
1. ExitWorktree(action: "keep") — 保留 worktree，**变更不合并到主干**。
   管线中的后续技能（m-req → m-design → m-test → m-plan → m-execute）将继续在同一
   worktree 中累积变更，最终由 **m-execute** 统一合并到主干。

**Handoff**:
```
AskUserQuestion(
  question: "探索报告已生成（worktree 中，尚未合并到主干）。\n\n摘要：N 个方案选项 | N 个关键决策 | N 个开放问题\n\n下一步：",
  options: [
    { label: "→ m-req", description: "继续管线，将探索结论转化为正式需求文档" },
    { label: "→ m-design", description: "继续管线，深入某个方案的技术设计" },
    { label: "继续探索", description: "继续深挖某个方向" },
    { label: "结束", description: "报告已保存。worktree 中的变更将在 m-execute 时合并。" }
  ]
)
```

---

## 与其他技能的区别

| 技能 | 时机 | 输出 | 确定性 |
|------|------|------|--------|
| **m-chat** | 早期模糊探索 / 技术讨论 | 探索报告（方案对比、根因分析、开放问题） | 低 |
| **m-req** | 需求方向明确 | 需求文档（AC、边界） | 中 |
| **m-design** | 技术方向明确 | 设计文档（组件、接口、决策） | 高 |
| **m-plan** | 需求+设计已确认 | 任务计划（wave、依赖） | 高 |

**m-chat 是起点，不是终点。** 当想法足够清晰时，引导用户转向 m-req / m-design。

---

## AskUserQuestion 规范

在所有需要用户做选择的地方使用 AskUserQuestion，不写纯文本问题。

**格式约定**：`→` 继续 | 多选时优先用 `[1]` `[2]` 数字快速选择

详细模板见 `skills/reference/cli-interaction.md`。

---

## Changelog

### v1.3.0 (2026-08-05)
- [NEW] commit 后触发 m-code-reviewer 审查代码
- [NEW] 完成后自动合并到主干、清理 worktree、删除分支

### v1.2.0 (2026-08-05)
- [NEW] Entry Gate 新增 EnterWorktree 自动创建：接收用户首次描述后，使用 `EnterWorktree` 工具创建隔离 git worktree
- [CHG] 探索流程（Phase 1, Phase 2）均在 worktree 中进行

### v1.1.0 (2026-05-27)
- [NEW] 引入四种探索方法：ORID / Five Whys / 苏格拉底提问 / 维度探索
- [NEW] Five Whys 根因分析格式
- [NEW] 苏格拉底假设检验表
- [NEW] 方法选择指南（什么场景用什么方法）
- [NEW] 收敛信号判断
- [CHG] 输出改为扁平结构：`docs/explorations/YYYY-MM-DD-abstract.md`
- [CHG] 报告中增加"探索方法"字段

### v1.0.0 (2026-05-27)
- Initial release
- 输出到 docs/explorations/
- Phase 1: 探索对话（发散→收敛）
- Phase 2: 探索报告（方案选项 + 决策点 + 开放问题）
- Exit Gate: commit + 引导至 m-req / m-design

