reverse-document

$npx mdskill add pixel-cellar/Claude-Code-Game-Studios/reverse-document

从代码或原型生成设计或架构文档

  • 解决缺失文档问题,逆向分析现有实现
  • 使用读取、搜索和文件操作工具处理代码库
  • 根据代码结构和模式推断设计意图和决策
  • 输出结构化文档,供开发团队审查和补充
SKILL.md
.github/skills/reverse-documentView on GitHub ↗
---
name: reverse-document
description: "从现有实现生成设计或架构文档。从代码/原型逆向工作,创建缺失的规划文档。"
argument-hint: "<类型> <路径>(例如 'design src/gameplay/combat' 或 'architecture src/core')"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Edit, Bash
---

# 逆向文档化

本技能分析现有实现(代码、原型、系统)并生成相应的设计或架构文档。适用于以下场景:
- 你在没有先写设计文档的情况下构建了一个功能
- 你接手了一个没有文档的代码库
- 你原型化了一个机制并需要将其规范化
- 你需要记录现有代码背后的 "为什么"

---

## 工作流

### 1. 解析参数

**格式**:`/reverse-document <类型> <路径>`

**类型选项**:
- `design` -> 生成游戏设计文档 (GDD 章节)
- `architecture` -> 生成架构决策记录 (ADR)
- `concept` -> 从原型生成概念文档

**路径**:要分析的目录或文件
- `src/gameplay/combat/` -> 所有战斗相关代码
- `src/core/event-system.cpp` -> 特定文件
- `prototypes/stealth-mech/` -> 原型目录

**示例**:
```bash
/reverse-document design src/gameplay/magic-system
/reverse-document architecture src/core/entity-component
/reverse-document concept prototypes/vehicle-combat
```

### 2. 分析实现

**阅读并理解代码/原型**:

**对于设计文档 (GDD)**:
- 识别机制、规则、公式
- 提取玩法数值(伤害、冷却时间、范围)
- 找到状态机、技能系统、成长系统
- 检测代码中处理的边缘情况
- 映射依赖(哪些系统之间有交互?)

**对于架构文档 (ADR)**:
- 识别模式(ECS、单例、观察者等)
- 理解技术决策(线程、序列化等)
- 映射依赖和耦合关系
- 评估性能特征
- 找到约束和权衡

**对于概念文档(原型分析)**:
- 识别核心机制
- 提取涌现的玩法模式
- 记录什么有效、什么无效
- 发现技术可行性洞见
- 记录玩家幻想 / 手感

### 3. 提出澄清问题(协作协议)

**不要**只是描述代码。**要问**关于意图:

**设计问题**:
- "我看到一个在战斗中消耗的体力系统。这是为了:
  - 节奏控制(防止乱按)?
  - 资源管理(策略深度)?
  - 还是其他原因?"
- "击倒机制似乎很核心。这是一个核心支柱,还是辅助功能?"
- "伤害随等级指数缩放。是有意为之的力量幻想,还是需要重新平衡?"

**架构问题**:
- "你使用了服务定位器模式。这是为了:
  - 可测试性(模拟依赖)?
  - 解耦(减少硬引用)?
  - 还是继承了现有代码?"
- "我看到使用了手动内存管理而非智能指针。是性能需求,还是历史遗留?"

**概念问题**:
- "原型强调潜行而非战斗。这是预期的核心支柱吗?"
- "玩家似乎在利用抓钩加速。这是功能还是 Bug?"

### 4. 展示发现

在起草之前,展示你发现了什么:

```
我已经分析了 src/gameplay/combat/。以下是我的发现:

已实现的机制:
- 3 连击系统,带时机窗口
- 破防机制(重攻击 vs 格挡中的敌人)
- 体力系统(攻击/闪避时消耗,空闲时恢复)
- 击倒系统(累积触发脆弱状态)

发现的公式:
- 伤害 = 基础值 * (1 + 力量缩放 * 等级)
- 击倒累积 = 攻击击倒值 / (敌人.定力 * 0.5)
- 体力消耗 = 基础体力消耗 * (1 - 效率加成)

意图不明确的区域:
1. 体力系统 — 节奏控制还是资源管理?
2. 击倒 — 核心支柱还是辅助功能?
3. 伤害缩放 — 力量幻想还是需要调整?

在起草设计文档之前,能否请您澄清这些要点?
```

等待用户澄清意图后再起草。

### 5. 使用模板起草文档

根据类型,使用相应模板:

| 类型 | 模板 | 输出路径 |
|------|------|---------|
| `design` | `templates/design-doc-from-implementation.md` | `design/gdd/[系统名称].md` |
| `architecture` | `templates/architecture-doc-from-code.md` | `docs/architecture/[决策名称].md` |
| `concept` | `templates/concept-doc-from-prototype.md` | `prototypes/[名称]/CONCEPT.md` 或 `design/concepts/[名称].md` |

**草稿结构**:
- 捕获**存在什么**(机制、模式、实现)
- 记录**为什么存在**(经用户澄清的意图)
- 识别**缺失什么**(未处理的边缘情况、设计中的空白)
- 标记**后续工作**(数值平衡调整、缺失功能)

### 6. 展示草稿并请求批准

**协作协议**:
```
我已经根据你的代码和澄清内容起草了战斗系统设计文档。

[展示关键章节:概述、机制、公式、设计意图]

我添加的内容:
- 根据你的澄清,将体力记录为 "节奏控制机制"
- 添加了代码中未涉及的边缘情况(如果体力在连击中途归零怎么办?)
- 标记了平衡隐患:高等级的指数伤害缩放

标记为不完整的章节:
- "敌人 AI 与击倒的交互"(尚未完全实现)
- "武器多样性和缩放"(目前只实现了剑)

可以将此内容写入 design/gdd/combat-system.md 吗?
```

等待批准。用户可能在写入前要求修改。

### 7. 带元数据写入文档

获得批准后,使用特殊标记写入文件:

```markdown
---
status: reverse-documented
source: src/gameplay/combat/
date: 2026-02-13
verified-by: [用户名称]
---

# 战斗系统设计

> **注意**:本文档是从现有实现逆向工程得出的。
> 它记录了当前行为和经澄清的设计意图。某些部分可能不完整,
> 特别是实现不完整或意图不明确的地方。

[文档其余部分...]
```

### 8. 标记后续工作

写入后,建议下一步操作:

```
已写入 design/gdd/combat-system.md

建议后续工作:
1. 对战斗公式运行 /balance-check(指数缩放隐患)
2. 为体力系统的架构决策创建 ADR
3. 实现缺失的边缘情况:
   - 连击中途体力归零的行为
   - 闪避期间的击倒状态
4. 当实现武器多样性时扩展设计文档

需要我现在处理其中任何一项吗?
```

---

## 模板选择逻辑

| 如果分析... | 使用模板... | 因为... |
|-----------|-----------|--------|
| `src/gameplay/*` | design-doc-from-implementation.md | 玩法机制 -> GDD |
| `src/core/*`、`src/ai/*` | architecture-doc-from-code.md | 核心系统 -> ADR |
| `prototypes/*` | concept-doc-from-prototype.md | 实验 -> 概念文档 |
| `src/networking/*` | architecture-doc-from-code.md | 技术系统 -> ADR |
| `src/ui/*` | design-doc-from-implementation.md | UI/UX -> 设计规范 |

---

## 示例会话:逆向文档化战斗代码

```
用户: /reverse-document design src/gameplay/combat

代理: 我将分析你的战斗实现来创建设计文档。
      [读取代码,发现机制、公式]

代理: 我已经分析了 src/gameplay/combat/。以下是我的发现:
      [展示机制、公式、不明确的区域]

      在起草之前,能否请您澄清:
      1. 体力系统的意图?
      2. 击倒是核心支柱吗?
      3. 伤害缩放 — 有意为之还是需要调整?

用户: 1. 体力是为了节奏控制,防止乱按
      2. 击倒是核心 — 我想要深思熟虑的战斗
      3. 对,指数缩放太过分了,应该是线性的

代理: 明白了,这澄清了愿景。让我起草设计文档。
      [展示含澄清意图的草稿]

      可以将此内容写入 design/gdd/combat-system.md 吗?

用户: 好,写入吧。

代理: 已写入 design/gdd/combat-system.md
      已标记为 [逆向文档化]
      已标记伤害缩放需要重新平衡

      后续步骤:
      - 将伤害公式更新为线性缩放
      - 运行 /balance-check 验证成长曲线
      - 在 game-pillars.md 中将击倒记录为核心支柱
```

---

## 协作协议

本技能遵循协作设计原则:

1. **先分析**:阅读代码,理解实现
2. **询问意图**:问 "为什么",而不仅仅是 "是什么"
3. **展示发现**:展示发现,高亮不明确的区域
4. **用户澄清**:将意图与偶然结果分开
5. **起草文档**:基于现实 + 意图创建文档
6. **展示草稿**:展示关键章节,解释添加的内容
7. **获取批准**:"可以写入 [文件路径] 吗?"
8. **标记后续**:建议相关工作,不要自动执行

**绝不要假设意图。在记录 "为什么" 之前,始终先询问。**
More from pixel-cellar/Claude-Code-Game-Studios