ReadViewSDK/.claude/skills/start-sdk-feature-dev-lite.md
2026-05-21 19:40:51 +08:00

214 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: "Start SDK Feature Dev Lite"
description: "轻量开发主控 skill用于 ReadViewSDK 的小中型功能开发、单层改动、局部重构、文档同步与编译修复。"
argument-hint: "粘贴需求、目标层级、验收标准;可附加:仅 MVP / 禁止新增依赖 / 指定渲染路径。"
---
# Start SDK Feature Dev Lite
## Purpose
面向 ReadViewSDK 的轻量开发入口 skill。
用于在现有项目约束下完成"小到中型"需求,遵循"先识别范围、再按需读文档、后实现、再验证、最后交付"的闭环。
该 skill 是默认开发入口,优先覆盖:
- 单层内的新功能 MVP 实现
- 小范围重构或代码整理
- 文档同步更新
- 编译错误定位与修复
- 单个模块的 bug 修复或行为调整
- podspec 小幅调整
默认吸收项目 `Doc/CODING_STYLE.md` 中的 Swift/iOS 通用规则;若任务重点落在并发、性能、可访问性或安全,再额外展开该专项的检查项。
## Core Execution Rules
- Rule 1 — Think Before Coding
- 先核对代码和文档事实,不静默假设
- 必须显式写出关键假设、主要取舍和已知风险
- 遇到会改变实现路径的关键灰区,先暂停确认,不靠猜测继续推进
- 若存在更简单且满足目标的实现路径,必须主动指出并优先采用
- Rule 2 — Simplicity First
- 只做满足需求和验收标准的最小实现
- 不增加推测性功能,不为单次使用引入抽象
- 若方案让资深工程师也会觉得过度设计,必须继续简化
- Rule 3 — Surgical Changes
- 只修改完成当前需求所必需的文件和代码
- 不顺手重构无关代码,不扩散到相邻层做"顺便优化"
- 非必要不改注释、格式或既有结构,新增代码保持现有风格
- Rule 4 — Goal-Driven Execution
- 先定义成功标准,再围绕成功标准实施和验证
- 不给自己堆步骤,重点是闭环达到验收结果
- 修改后必须验证,未验证通过前不能视为完成
## When To Use
当用户提出以下类型需求时使用:
- "使用 start-sdk-feature-dev-lite 完成这个功能"
- 在 ReadViewSDK 中开发单一功能或单层变更
- 需要修复局部编译错误或行为问题
- 需要同步更新文档
- 需要小幅调整 podspec
不适用场景:
- 需求跨多个 SDK 层级、涉及多阶段联调或需要完整项目级方案时,改用 `start-sdk-feature-dev`
- 目标是只生成文档而不改业务代码时,优先使用文档类 skill
- 目标是方案讨论而不进入实现时,优先使用 `discuss-sdk-feature-solution`
## Inputs
推荐输入:
- 功能名称
- 目标 / 用户价值
- 范围In Scope
- 非范围Out of Scope
- 目标层级EPUBCore / EPUBTextRendering / RDReaderView / EPUBUI
- 详细需求
- 验收标准
- 约束(兼容性 / 性能 / 禁止新增依赖 / 指定渲染路径)
若信息不足:
- 先基于代码和文档补齐可发现事实
- 再列最多 5 条关键假设
- 基于假设继续推进 MVP并在交付中标注待确认项
## Scope / Required Context
仅针对 ReadViewSDK 现有架构执行。
SDK 四层架构参照:
- Layer 1 — EPUBCore`Sources/RDReaderView/EPUBCore/`EPUB 解析引擎
- Layer 2 — EPUBTextRendering`Sources/RDReaderView/EPUBTextRendering/`):文本渲染路径
- Layer 3 — RDReaderView`Sources/RDReaderView/` 根目录):分页阅读器容器
- Layer 4 — EPUBUI`Sources/RDReaderView/EPUBUI/`):开箱即用 UI
- Legacy`Sources/RDReaderView/LegacyRDReaderController/`):遗留代码,不在其上新增功能
分层依赖规则(上→下允许,下→上禁止):
- EPUBUI → RDReaderView → EPUBTextRendering → EPUBCore
默认先读:
1. `Doc/ARCHITECTURE.md` — 四层架构、数据流、分页模式、位置模型
2. `Doc/CODING_STYLE.md` — 命名规范、分层规则、extension 拆分规则
3. `Doc/EPUB_MAINTENANCE.md` — 文件职责表、渲染管线、排查场景
按需再读:
- `Doc/FeatureSolution/*.md`(若有方案文档)
- 涉及哪一层就读该层目录下的相关源码
- 涉及 JS 桥接时:`Sources/RDReaderView/Resources/epub-bridge.js`
- 涉及 podspec 时:`RDReaderView.podspec`
若文档与代码不一致:
- 以代码事实为准完成本次实现
- 在交付中标注不一致点,并指出建议更新的文档
## Required Workflow
### Phase 1 — 识别需求和范围
- 明确目标价值、影响层级EPUBCore / EPUBTextRendering / RDReaderView / EPUBUI、In Scope / Out of Scope
- 优先做最小可落地实现,不做需求外重构
- 若需求信息不足,先通过仓库事实补齐,再基于假设推进
### Phase 2 — 按需读取 Doc 与代码事实
- 先读默认 DocARCHITECTURE / CODING_STYLE / EPUB_MAINTENANCE
- 根据需求类型补读对应层级的源码
- 用源码确认真实入口、调用链和复用点,不只依赖文档
### Phase 3 — 形成最小实现方案
- 保持分层边界:
- EPUB 解析逻辑在 EPUBCore
- 文本渲染逻辑在 EPUBTextRendering
- 分页容器逻辑在 RDReaderView
- 开箱即用 UI 在 EPUBUI
- 不在 Legacy 层新增功能
- 命名、注释、日志风格遵循 `Doc/CODING_STYLE.md`
- Swift / iOS 默认规则:
- 新增 Swift 类型遵循 `RD` / `RDEPUB` 前缀和层级目录归属
- 避免新增强制解包;确需使用时必须先收敛前置条件
- 不为"现代化"而重写稳定代码;仅在本次需求明确受益时再迁移系统 API
- 当前项目默认保持 UIKit + Auto Layout + 既有组件风格SDK 层不使用 SnapKit
- 注释和日志使用中文
- Debug 输出放在 `#if DEBUG` 守卫下
- 不在日志中输出敏感信息
- 异步闭包默认 `[weak self]`UI 更新回到主线程
- 通知 / 定时器 / 回调在生命周期结束时必须清理
- 数据模型用 `struct` + `Codable` + `Equatable`,服务对象用 `final class`
- 可见性按最小原则:`private` > `fileprivate` > `internal` > `public`
- 错误使用 `enum` + `LocalizedError`,禁止 force unwrap
- 单文件若预计超过 600 行,需主动拆分扩展文件
### Phase 4 — 执行修改与文档同步
- 所有代码改动遵循最小改动原则
- 修改代码时必须补充必要注释,重点说明关键逻辑、边界条件和不直观处理;不要省略应有注释,也不要添加无信息量的描述性注释
- 默认补做轻量 SDK 自检:
- 新增类型是否使用正确前缀和层级归属
- 本次改动涉及的渲染路径是否正常工作
- Public API 是否有意外 breaking change
- podspec 是否需要更新(新增文件时)
- 生命周期、通知/定时器/回调清理是否完整
- 异步闭包是否考虑 `[weak self]`
- 修改代码后必须同步更新受影响文档,不能只停留在代码实现
- 若本次改动涉及 EPUB 维护相关,必须回写 `Doc/EPUB_MAINTENANCE.md`
- 若本次是方案讨论文档交接落地,方案类文档统一放到 `Doc/FeatureSolution/`
- 若新增、重命名或移动文档,必须同步更新目录索引
### Phase 5 — 构建验证与交付
- 完成修改后,按项目默认命令执行编译验证
- 若出现编译错误,自动修复并重编译
- 若遇构建锁问题,自动重试
- 交付时固定输出:
- A. 需求理解
- B. 开发计划
- C. 开发实施
- D. 验证结果
- E. 交付摘要
## Output Contract
最终回复必须完整输出以下 5 个板块,标题保持一致:
- A. 需求理解
- B. 开发计划
- C. 开发实施
- D. 验证结果
- E. 交付摘要
各板块内容要求:
- A3-6 条,覆盖目标价值、范围、目标层级、限制
- B按"方案对齐 / MVP 实现 / 验证与交付"三阶段组织
- C描述实际改动、关键实现取舍以及本次补充了哪些关键代码注释
- D给出构建结果、关键路径验证、未覆盖风险
- E列出改动文件、关键取舍、已同步文档与具体文档落点、后续建议
## Validation
若本次调用修改了任何 Swift / Objective-C / 工程配置 / podspec 文件,必须执行构建验证。
验证方式:
- 若 Demo 工程可用:
```bash
xcodebuild build -workspace ReadViewSDKDemo/ReadViewSDKDemo.xcworkspace -scheme ReadViewSDKDemo -sdk iphonesimulator -derivedDataPath /private/tmp/readview-sdk-derived
```
- 若仅有 SDK 源码(无 workspace
```bash
pod lib lint RDReaderView.podspec --allow-warnings
```
验证规则:
- 编译失败时必须自行修复并重试
- 遇到 `database is locked` 等锁问题时自动重试,建议最多 5 次
- 直到 `BUILD SUCCEEDED``pod lib lint passed` 才可交付
- 如果本次仅修改文档或 skill 文件,可跳过构建,但要在交付中明确说明原因
## Maintenance Rules
- 优先复用 `Doc/`,不要把项目级规则复制进多个 skill 造成双份维护
- 新增项目约束时,优先更新 `Doc/CODING_STYLE.md`、`Doc/ARCHITECTURE.md` 等主文档,再调整 skill
- 轻量与完整要保持"轻重不同、规则不冲突",其中完整版应在轻量版闭环基础上扩展跨层与联调要求,而不是另起一套风格
- 变更默认流程、输出格式或适用场景时,必须同步更新相关文档
- 本 skill 持续作为默认开发入口,保持"轻量、清晰、可直接执行"
- SDK 四层架构是执行的核心参照框架,单层改动也必须明确标注落点层级