--- 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. **标记后续**:建议相关工作,不要自动执行 **绝不要假设意图。在记录 "为什么" 之前,始终先询问。**