<!-- AI-friendly guide template for `ai_guides/` -->
# AI 文档与维护指南 (AI Documentation & Maintenance Guide)

## Summary
本文档包含两部分内容：
1.  **Writing Guide**: 供 AI 和人类编写新文档时的标准模板与风格规范。
2.  **Maintenance Guide**: 供 AI 维护者进行文档更新、同步与体检的操作指南。

---

# Part 1: Writing Guide (编写指南)

## 目的
提供统一、结构化的 Markdown 模板，便于 AI 自动解析、索引与生成功能性示例。

## 建议风格
- 使用中文为主，代码示例使用 TypeScript。
- **受众意识**: 文档面向 SDK 的**外部使用者**。避免暴露无用的内部实现细节（如私有属性、临时状态），除非对调试有帮助。
- **结构规范**: 严格使用二级标题 (`##`) 作为主要段落分割（如 `## Schema`, `## Concepts`），避免使用中文标题（如 `## 格式说明`）。
- **代码缩进**: 强制使用 **两个空格** 缩进。
- **相对路径**: 内部文档链接必须使用 **相对路径**（如 `./state.md`）。
- **Schema**: 必须提供 TypeScript Interface 定义，并保留关键字段的注释（JSDoc）。
    - **精简原则**: 仅展示核心与常用字段，避免列出所有内部或废弃字段。
- **Configuration**: 对于参数较多的配置项，建议按 **“常用 (Common)”**、**“进阶 (Advanced)”**、**“内部 (Internal)”** 进行分类表格展示，并在内部参数处添加“不建议修改”的警告。
- **Source Link**: 引用源码文件时，请在 `## Schema` 章节中使用 `> **Definition**: [InterfaceName](../../path/to/source.ts)` 的格式。**支持多个链接**（如 `[Five](...), [EventTypes](...)`），以便完整覆盖相关类型。**必须** 指向 `lib/` 目录下的 `.ts` 文件。构建脚本会自动将其转换为发布包中的 `.d.ts` 链接。
- **Related**: 文档末尾建议包含 `## Related` 章节，提供相关文档的**相对路径链接**。
    - **语义化**: 链接文字应准确反映目标文档的主题（如 `[Coordinate System](./coordinate.md)`）。
- **Metadata**: 结尾必须包含 YAML 格式的 `tags`。
- **文档拆分与审查**: 单个文档应保持精简。若内容过多需拆分为新专题，**必须**在创建新文件前向用户确认并获得批准，严禁擅自创建新文件。

## 最佳实践 (Best Practices)

### 1. 变量命名语义化 (Semantic Variable Naming)
在示例代码中，变量名应准确反映其通用性或特定上下文。
- **Good**: `parentParameter` (暗示可用于 Model, ViewLayer 等多种父级)
- **Bad**: `modelParam` (若该逻辑同样适用于 ViewLayer，则会误导用户)

### 2. 区分属性与方法 (Property vs Method)
明确区分“直接访问属性”与“调用方法计算”。
- 若 API 设计为 Getter (如 `parameter.opacity`)，文档应引导用户直接访问属性，避免混淆使用 `get()` 方法。
- 对于涉及计算或继承的逻辑 (如 `resolveValue()`)，应显式说明其与直接访问的区别。

### 3. 显式说明默认行为 (Explicit Default Behavior)
对于有默认值或继承逻辑的方法，务必说明“不传参”时的行为。
- 例如：`resolveValue()` 不传参时仅计算默认值；传入 `upstream` 时会包含继承逻辑。

## 标准模板结构 (Standard Template Structure)

无论是**新建文档**还是**维护现有文档**，都请参考独立模板文件：[template.md](./template.md)。

- **新建文档**: 直接复制模板内容开始编写。
- **维护文档**: 在修改现有文档时，请检查其结构是否符合模板要求（如 Schema 的 Definition 引用、Configuration 的分类等）。如果发现结构过时，请顺手将其标准化。
- **特殊说明 (Special Notes)**:
    - **模板链接格式 (Template Link Format)**:
        - 模板(`template.md`)中所有的占位符链接（如 `Definition` 处的 `[InterfaceName](...)` 或 `Related` 处的 `[RelatedConcept](...)`）均使用了**代码块**包裹，以避免构建时因路径不存在而报错。
        - **AI 操作**: 在编写正式文档时，**必须将其还原为可点击的标准 Markdown 链接**（即去掉反引号），并确保路径指向真实存在的文件。

请严格遵循该模板的结构，以保证文档风格一致性。

---

# Part 2: Maintenance Guide (维护指南)

## 核心原则 (Core Principles)
为了防止文档与代码脱节，我们遵循 **“代码变更驱动文档更新”** 的原则。

## 1. 语义化检索 (Semantic Retrieval)
不再维护硬编码的“源码-文档”映射表。AI 维护者在修改代码后，应利用自身的语义搜索能力（如 `SearchCodebase` 或 `Grep`）来定位需要更新的文档。

**推荐策略**:
- 搜索**类名/方法名**: 如修改了 `five.load`，搜索 `five.load` 或 `load`。
- 搜索**概念关键词**: 如修改了射线检测逻辑，搜索 `Raycast` 或 `project2d`。

## 2. 单一事实来源 (Single Source of Truth)
- **API 签名**: 以 `package/five/index.d.ts` 和代码中的 TSDoc 为准。
- **ai_guides/api.md**: 仅作为 **索引 (Index)** 和 **摘要 (Summary)**。不要试图复制所有参数细节，除非是核心参数。
- **ai_guides/features/*.md**: 重点解释 **“为什么”** 和 **“怎么用”**，避免机械复制类型定义。

## 3. 维护工作流 (Maintenance Workflow)

### 场景 A：代码功能迭代后 (Post-Coding)
当修改了 SDK 源码后，请执行以下检查：
1.  **反向查找**: 利用工具搜索关键词（API 名称、Feature 名称），找到 `ai_guides/` 下相关的文档。
2.  **更新文档**:
    *   如果修改了 API 签名 -> 更新对应的 `Schema` 和 `Examples`。
    *   如果废弃了功能 -> 在文档中添加 `> [!WARNING] Deprecated` 提示。
3.  **更新索引**: 如果是新功能，确保将其添加到 `ai_guides/README.md` 的合适章节中。
4.  **同步 llms.txt**: 若新增了文档或修改了文档路径，**必须**同步更新项目根目录下的 `llms.txt`，确保外部索引与 `ai_guides/` 保持一致。

### 场景 B：API 文档同步 (Sync API Doc)
定期检查 `ai_guides/api.md` 的完整性：
1.  读取 `package/five/index.d.ts` 获取最新公开 API。
2.  对比 `ai_guides/api.md`，找出缺失的高频 API 或已删除的 API。
3.  **注意**: 只收录高频/核心 API，低频 API 应引导用户查看源码或专门的 Feature 文档。

## 目录结构说明
- `ai_guides/`: 文档根目录。
- `ai_guides/features/`: 功能性文档 (Features)。
- `ai_guides/release_notes/`: 版本更新记录。
- `ai_guides/api.md`: 核心 API 索引。
- `ai_guides/README.md`: 文档总索引。
- `package/five/index.d.ts`: **API 签名的真理来源**。
