15 KiB
15 KiB
| name | description | argument-hint |
|---|---|---|
| Discuss SDK Feature Solution | 方案讨论优先 skill:用于 ReadViewSDK 新需求的实现方案分析、路径对比、取舍沟通、已定方案细化和实现交接。 | 粘贴需求、目标模块、约束、已知备选方案;可附加:是否已确定方案 / 是否需要推荐方案 / 是否需要落方案文档。 |
Discuss SDK Feature Solution
Purpose
面向 ReadViewSDK 的"实现方案讨论入口" skill。 用于在正式开发前,先把需求、约束、可选实现路径和关键取舍聊透;若方案已经确定,则只围绕已选方案继续细化,再交接给开发 skill 进入实现。
该 skill 借鉴 spec-driven 工作流思想:讨论阶段专门捕获灰区决策,计划阶段必须经过代码 / 文档事实核验,最终输出能直接喂给开发 skill 的结构化方案文档,避免"聊完还是不能开发"。
该 skill 的职责固定为:
- 先理解需求与约束
- 捕获灰区问题和实现假设
- 用现有代码 / 文档核验方案可行性
- 未定方案时:输出 2-4 个可行实现方案,并做对比
- 已定方案时:只围绕确认方案展开实现讨论,不再继续扩展其他方案
- 最后给出交接到开发 skill 的明确指令
- 最终必须产出一份可直接供开发 skill 使用的开发详细文档,或一段可直接执行的开发详细描述
Core Discussion Rules
- Rule 1 — Think Before Coding
- 在提出方案前先核对代码和文档事实,不静默假设
- 必须显式写出关键假设、主要取舍和已知风险
- 遇到会改变实现路径的关键灰区,先提出并请求确认,不靠猜测补完整个方案
- 若存在更简单且满足目标的实现路径,必须主动指出并优先推荐
- Rule 2 — Simplicity First
- 推荐方案优先选择最小可落地路径,而不是概念上更"完整"的设计
- 不为了未来可能性预埋推测性扩展,不为单次使用引入抽象
- 若某个方案明显过度设计,必须直接指出并解释为什么不推荐
- Rule 3 — Surgical Changes
- 方案只覆盖完成当前目标所必需的改动面
- 不把无关重构、顺手统一风格或额外治理动作夹带进推荐方案
- 若确有相邻改动依赖,必须明确标注"必要改动"与"可选优化"的边界
- Rule 4 — Goal-Driven Execution
- 讨论输出必须先定义成功标准和验证方式,再给实现交接建议
- 不把讨论步骤本身当结果,重点是产出可执行、可验证的方案
- 交接给开发 skill 时,必须让对方清楚"做到什么算完成"
When To Use
当用户提出以下类型需求时使用:
- "先讨论一下这个需求怎么实现"
- "这个功能可能有多种实现方式,先分析方案"
- "先别写代码,先帮我想实现路径"
- "先比较几种方案,再决定怎么做"
适用场景:
- 同一个需求可以通过多种技术路径实现
- 需要权衡 SDK 分层(EPUBCore / EPUBTextRendering / RDReaderView / EPUBUI)、复用、维护成本、回归影响
- 需要在实现前先明确推荐方案和待确认细节
- 已经明确采用某个方案,但还需要继续细化实现边界、拆解落地路径和交接开发
不适用场景:
- 用户已经明确要直接实现,且实现路径基本单一时,优先使用开发类 skill
- 用户只想生成文档,不需要方案讨论时,优先使用文档类 skill
Inputs
推荐输入:
- 需求描述
- 目标模块或 Feature(属于哪一层:EPUBCore / EPUBTextRendering / RDReaderView / EPUBUI / Legacy)
- 已知约束(兼容性、性能、API 兼容、CocoaPods 发布等)
- 已有备选方案(如有)
- 已确认方案(如已决定)
- 是否需要推荐方案
- 是否需要最终落方案文档
若信息不足:
- 先通过代码和文档补齐可发现事实
- 再围绕真正影响方案选择的灰区进行澄清
- 若用户不想继续问答,必须显式列出"实现假设",并把假设写入方案或交接摘要
若用户已经明确指定"采用方案 X / 就按这个方案做":
- 视为进入"已定方案模式"
- 后续输出禁止继续罗列其他候选方案、备选实现或横向对比
- 仅允许在必要时补充"当前方案的风险、前提、边界和实现细化"
Scope / Required Context
默认先读:
Doc/ARCHITECTURE.md— 四层架构、数据流、分页模式、位置模型、已知限制Doc/CODING_STYLE.md— 命名规范(RD/RDEPUB 前缀)、分层规则、extension 拆分规则、SS→RD 迁移计划Doc/EPUB_MAINTENANCE.md— 文件职责表、DTCoreText 渲染管线、常见排查场景
按需再读:
- 涉及 EPUB 解析时:
Sources/RDReaderView/EPUBCore/下相关文件 - 涉及文本渲染时:
Sources/RDReaderView/EPUBTextRendering/下相关文件 - 涉及阅读器容器时:
Sources/RDReaderView/RDReaderView.swift及同级文件 - 涉及 UI 层时:
Sources/RDReaderView/EPUBUI/下相关文件 - 涉及遗留代码时:
Sources/RDReaderView/LegacyRDReaderController/下相关文件 - 涉及 JS 桥接时:
Sources/RDReaderView/Resources/epub-bridge.js
若文档与代码不一致:
- 以代码事实为准做方案讨论
- 在推荐方案中指出不一致点和可能影响
方案文档落地目录约束:
- 讨论型方案文档统一落到
Doc/FeatureSolution/(若目录不存在则创建) - 不要把方案讨论文档写入其他目录
SDK-Specific Discussion Rules
讨论时必须考虑的 SDK 特有约束:
- 分层边界:方案必须明确落在哪一层,不得跨层引入反向依赖(上层依赖下层允许,反之不允许)
- Public API 兼容性:若改动涉及公共接口(
RDReaderView、RDReaderDataSource、RDURLReaderController、RDEPUBReaderController等),必须评估对宿主 App 的 breaking change 影响 - 渲染路径差异:方案必须考虑三种渲染路径(
webFixedLayout/webInteractive/textReflowable)的适用性,不能只覆盖单一路径 - CocoaPods 发布影响:若方案涉及新增依赖、资源文件或模块结构调整,必须评估 podspec 变更
- RD 前缀规范:所有新增类型必须使用
RD前缀,EPUB 相关使用RDEPUB前缀 - Legacy 层边界:不在 Legacy 层新增功能;若方案涉及 Legacy 代码,必须明确是迁移还是在新层实现
GSD-Inspired Discussion Rules
讨论阶段要像 discuss -> plan -> verify 闭环一样,先捕获决策,再验证计划,而不是直接跳到实现建议。
必须执行:
- 灰区捕获:先识别布局、接口形态、数据结构、错误态、路由、持久化、兼容性、回归范围等不明确点
- 事实核验:方案落地前必须用本仓库代码和
Doc/文档确认入口、复用点、约束和风险 - 假设显式化:不能确认的问题必须写成
Assumption,不得藏在方案正文里 - 阻塞分级:会改变实现路径的问题标记为
Blocking Decision,不会改变路径的问题标记为Follow-up - 审计留痕:若落方案文档,必须包含"讨论结论 / 关键决策 / 假设 / 非范围 / 验证清单 / 开发交接指令"
- 计划可执行:最终方案必须足够小,能被开发 skill 直接逐项执行
禁止行为:
- 不得只输出宽泛建议,必须落到文件、类、方法、数据流或协议层面的执行点
- 不得在用户已确认方案后继续展开新方案,除非用户明确要求重新比较
- 不得把未经核验的包、SDK、接口能力写成已确认事实
- 不得把需要用户拍板的关键决策伪装成默认实现
Required Workflow
Phase 1 — 识别需求、范围、约束、现状
- 明确目标价值、影响模块(EPUBCore / EPUBTextRendering / RDReaderView / EPUBUI / Legacy)、In Scope / Out of Scope
- 识别当前项目里已有的实现模式、相邻能力和复用点
- 判断这是单层需求还是跨层需求
- 建立灰区清单,区分
Blocking Decision与Follow-up
Phase 2 — 判断讨论模式
- 若方案未定:进入"多方案对比模式"
- 若方案已定:进入"单方案细化模式"
- 一旦用户已确认方案,后续同一轮讨论默认保持"单方案细化模式",除非用户明确要求重新打开方案比较
Phase 3 — Research / Verify:核验代码与文档事实
- 对照当前仓库确认真实入口、调用链、数据模型、复用的 cell / view / handler / controller / protocol
- 若方案涉及新增文件,必须确认所属目录层级和是否需要更新 podspec 的 source_files
- 若方案涉及接口或数据字段,必须明确字段来源、空值策略和兼容策略
- 若方案涉及 JS 桥接,必须确认 epub-bridge.js 的交互契约
- 若发现文档和代码不一致,必须标注为风险或阻塞项
- 若核验结果推翻原方案,必须暂停说明,不得继续包装成可执行方案
Phase 4A — 多方案对比模式:列出多种实现路径
- 至少提出 2 个可行方案,推荐 2-4 个方案
- 每个方案都要有清晰的实现方向,而不是抽象建议
- 优先从现有项目模式和复用能力出发
Phase 4B — 多方案对比模式:比较方案优缺点和影响范围
- 比较每个方案的:
- 核心思路
- 落在哪一层(EPUBCore / EPUBTextRendering / RDReaderView / EPUBUI)
- 适用前提
- 优点
- 风险 / 成本
- 对 SDK 分层、Public API、podspec、回归范围的影响
- 明确哪些差异会真正影响后续实现和维护
Phase 5A — 多方案对比模式:提出推荐方案,并列出待确认细节
- 必须明确推荐一个默认方案,不能只平铺选项
- 待确认项只保留真正影响实现的关键决策
- 默认产物为对话输出;若用户明确要求,再可选落到
Doc/FeatureSolution/下方案文档
Phase 5B — 单方案细化模式:围绕确认方案展开
- 不再输出"方案 A / 方案 B / 方案 C"式内容
- 不再补充"其他也可以这样做"的备选实现,除非用户明确要求回到方案比较
- 只讨论以下内容:
- 当前方案的实现拆解(文件 / 类 / 方法 / 协议)
- SDK 分层内的模块边界与职责分配
- 关键数据流 / 状态流 / 渲染流
- 复用点、依赖点、回归点
- 对三种渲染路径的覆盖情况
- 风险、前提、灰度方式、验证要点
- 交接给开发 skill 的实现摘要
Phase 6 — 输出实现交接建议
- 在方案确认后,明确下一步应交给哪个开发 skill:
- 小中型、单层、MVP 优先:轻量开发 skill
- 跨层、复杂联调、完整交付:完整开发 skill
- 无论是否落文档,最终都必须产出开发交接载体,且二选一不能缺失:
- 完整开发 skill:产出可直接执行的开发详细文档,默认落到
Doc/FeatureSolution/ - 轻量开发 skill:产出可直接粘贴执行的开发详细描述,覆盖实现目标、范围、代码落点、关键步骤、验收标准和自测要点
- 完整开发 skill:产出可直接执行的开发详细文档,默认落到
- 给出可直接粘贴给开发 skill 的实现摘要;若已有更完整的详细文档/描述,则摘要必须引用它而不是只给一句话概括
- 若落方案文档,必须让开发指令引用该文档的真实路径,并提醒开发 skill 严格按计划执行
Output Contract
默认输出结构按模式区分:
若方案未定:
- A. 需求理解
- B. 灰区问题与实现假设
- C. 当前实现与约束
- D. 可选方案对比
- E. 推荐方案
- F. 待确认实现细节
- G. 实现交接建议
若方案已定:
- A. 需求理解
- B. 灰区问题与实现假设
- C. 当前实现与约束
- D. 确认方案拆解
- E. 实现风险与关键细节
- F. 实现交接建议
其中要求:
- 未定方案时:
B. 灰区问题与实现假设必须区分 Blocking Decision / Follow-up / AssumptionD. 可选方案对比至少给出 2 个方案,推荐 2-4 个E. 推荐方案必须明确推荐一个默认方案F. 待确认实现细节只保留会改变实现路径的关键问题
G. 实现交接建议必须明确下一步交给哪个开发 skillG. 实现交接建议必须附带可供开发 skill 直接使用的交接内容:- 若下一步是完整开发 skill,必须提供开发详细文档路径或完整文档正文
- 若下一步是轻量开发 skill,必须提供开发详细描述正文
- 已定方案时:
B. 灰区问题与实现假设必须列出阻塞项、假设和后续项D. 确认方案拆解只能围绕确认方案展开,禁止附带其他方案信息E. 实现风险与关键细节只讨论该方案落地所需信息F. 实现交接建议必须明确下一步交给哪个开发 skill,并附带可直接执行的详细文档或详细描述
若用户要求落方案文档,文档必须包含:
- 需求目标
- 讨论结论
- 关键决策
- 实现假设
- 非范围
- SDK 分层落点(文件 / 类 / 方法 / 协议)
- 数据流 / 状态流 / 渲染流
- 开发任务清单
- 验收标准
- 自测清单
- 待确认项
- 给开发 skill 的执行指令
若未落方案文档,但下一步要交给轻量开发 skill,则最终输出中的"开发详细描述"至少必须包含:
- 实现目标
- In Scope / Out of Scope
- SDK 分层落点(文件 / 类 / 方法 / 协议)
- 实现步骤
- 关键约束与复用点
- 对三种渲染路径的覆盖说明
- 验收标准
- 自测清单
- 待确认项或实现假设
Validation
- 本 skill 默认只做方案讨论,不直接进入代码实现
- 默认不修改仓库文件;只有用户明确要求时,才可选落方案文档到
Doc/FeatureSolution/ - 即使不落方案文档,最终回复也必须包含一份可直接交给开发 skill 使用的详细交接内容,不能只停留在高层方案结论
- 若本次调用只做讨论或只新增方案文档,可不执行构建验证
- 若新增或移动方案文档,建议同步更新目录索引
- 若后续进入代码实现,则由对应开发 skill 负责执行项目默认构建验证(
xcodebuild或 CocoaPods 集成验证) - 若用户已确认方案,则默认进入单方案细化模式,除非用户明确要求重新比较备选方案
Maintenance Rules
- 该 skill 的职责是"讨论后交接实现",不和开发 skill、文档类 skill 重叠
- 优先复用
Doc/作为知识源,不新增独立 references 体系 - 方案文档目录固定为
Doc/FeatureSolution/ - 持续保持
discuss -> research/verify -> plan handoff的轻量闭环,避免退化成只聊天不交付的建议列表 - 若该 skill 的默认输出结构、交接规则或适用边界调整,必须同步更新对应文档
- SDK 四层架构(EPUBCore → EPUBTextRendering → RDReaderView → EPUBUI)是方案讨论的核心参照框架,任何方案都必须明确标注落点层级