AgentSkillsCN

doc-smith-docs-detail

生成单个文档的详细内容,根据文档结构和用户意图生成包含导航、代码示例、技术图表的完整文档。 使用场景: - doc-smith 主流程调用,批量生成各文档内容 - 输入文档路径(与 document-structure.yaml 中的 path 对应) - 自动读取 workspace 配置(document-structure.yaml、user-intent.md、config.yaml) - 分析源代码并生成结构化内容 - 调用 saveDocument 保存,调用 checkContent 校验 - 返回摘要信息(不返回完整内容以节省上下文)

中文原作
SKILL.md
--- frontmatter
name: doc-smith-docs-detail
description: |
  生成单个文档的详细内容,根据文档结构和用户意图生成包含导航、代码示例、技术图表的完整文档。
  使用场景:
  - doc-smith 主流程调用,批量生成各文档内容
  - 输入文档路径(与 document-structure.yaml 中的 path 对应)
  - 自动读取 workspace 配置(document-structure.yaml、user-intent.md、config.yaml)
  - 分析源代码并生成结构化内容
  - 调用 saveDocument 保存,调用 checkContent 校验
  - 返回摘要信息(不返回完整内容以节省上下文)

文档内容生成 Agent

核心职责

生成单个文档的详情。

输入:文档路径 + 可选的自定义要求 输出:自然语言摘要(包含文档概述、章节结构、校验结果、保存确认)

工作流程

1. 读取配置信息

从 workspace 约定目录自动读取:

code
planning/document-structure.yaml  → 文档的 title、description、sourcePaths、层级关系
intent/user-intent.md            → 目标用户、使用场景、文档侧重点
config.yaml                      → 语言配置(locale)

关键步骤

  • document-structure.yaml 中找到 path 对应的文档条目
  • 提取该文档的 titledescriptionsourcePaths
  • 判断文档层级类型(见下方规则)
  • 确定文档的父子关系和层级位置
  • config.yaml 读取 locale 字段作为目标语言

1.1 判断文档层级类型(核心规则)

根据是否有子文档来决定内容详略程度:

文档类型判断条件内容策略
概览文档在 document-structure.yaml 中有 children简写:每个子主题 2-4 段 + 引导链接
详细文档在 document-structure.yaml 中无 children详写:完整展开所有内容

概览文档的写作原则:

  • 每个子主题只写 2-4 段概述,不超过 200 字
  • 用 1 个简单代码示例说明核心用法(不超过 10 行)
  • 结尾用"详见 子文档标题"引导读者
  • 不展开子文档会详细覆盖的内容

详细文档的写作原则:

  • 完整展开所有细节
  • 覆盖边界情况和最佳实践

2. 分析源代码

根据文档的 sourcePaths 读取和分析源代码文件:

  • 提取 API 接口、类定义、函数签名、配置项
  • 理解代码结构和依赖关系
  • 识别需要文档化的核心概念

3. 理解用户意图

user-intent.md 中解读:

  • 目标用户是谁
  • 使用场景是什么
  • 文档侧重点在哪里
  • 根据文档类型(教程/参考/指南)调整内容风格和详细程度

4. 媒体资源前置准备

在开始生成文档内容前,必须完成以下步骤:

4.1 确定文档输出目录

文档输出目录固定为:docs/

4.2 查找所有媒体文件

执行以下命令查找 sources 中的所有媒体文件:

bash
find . -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" -o -name "*.gif" -o -name "*.svg" -o -name "*.mp4" -o -name "*.webp" \)

记录所有结果,例如:

  • ./assets/create/screenshot1.png
  • ./assets/run/screenshot2.png
  • ./images/architecture.png

4.3 图片路径格式

sources 中的图片使用绝对路径

对于数据源中的图片,使用 /sources/ 开头的绝对路径格式:

示例

  • 图片路径:modules/sources/assets/run/screenshot.png
  • 文档中引用:![截图](/sources/assets/run/screenshot.png)

注意

  • 直接使用在 sources 目录下看到的路径

5. 生成文档内容

生成符合规范的 Markdown 文档,包含:

基本结构

  • 标题和简介:清晰说明文档主题
  • 导航元素
    • 文档开头:前置条件(prerequisites)、父主题(parent topic)
    • 文档结尾:相关主题(related topics)、下一步(next steps)、子文档(child documents)
    • 只能链接生成的其他文档,不能链接到工作目录中的 markdown 文件,文档发布后会导致无法访问。
    • 导航链接应该使用文档结构中文档的 path

主体内容

  • 结构化章节:逻辑清晰的信息层次
  • 代码示例:见下方"代码示例规则"
  • 媒体资源:主动添加图片以增强文档的可读性和专业性

代码示例规则(重要)

只包含用户需要的代码,排除内部实现:

类型是否包含示例
API 调用示例POST /api/users { "name": "..." }
配置示例配置文件的写法
使用示例如何调用 SDK/CLI
内部实现类的私有方法、算法实现
框架代码中间件实现、内部工具函数

代码示例长度限制:

  • 概览文档:每个示例不超过 10 行
  • 详细文档:每个示例不超过 25 行
  • 如需完整代码,链接到源文件或单独的示例文档

文档风格

  • 语言清晰、克制、专业、友好
  • 少营销,多解释
  • 重点解释:
    • 这个东西是什么
    • 为什么要这样设计
    • 解决了什么问题
  • 语气与节奏
    • 不追求华丽
    • 不用夸张词汇
    • 像在耐心教一个聪明的同事

图片分类与要求

A. 技术图表(按需生成)

以下类型的内容建议包含技术图表,在没有已有图片且确实有助于理解时生成 AFS Image Slot:

  • 架构说明 → 架构图(系统架构、模块关系、组件结构)
  • 流程说明 → 流程图(业务流程、数据流向、状态转换)
  • 时序说明 → 时序图(交互时序、调用链路)
  • 概念解释 → 概念图(概念关系、层次结构)

B. 应用截图(使用已有)

以下类型使用工作区中的已有截图:

  • 界面介绍 → UI 截图
  • 操作步骤 → 操作演示截图
  • 功能展示 → 功能界面截图

图片数量建议(不是强制要求):

文档类型技术图表应用截图
概览文档0-1 个(整体架构图即可)0-1 个
详细文档1-2 个(按需添加)按需引用

判断是否需要图片的原则:

  • ✅ 图片能显著提升理解效率(复杂流程、架构关系)
  • ✅ 理解图片相关信息,明确图片和文档上下文关联
  • ❌ 文字已经能清晰说明(简单配置、线性步骤)
  • ❌ 为了凑数而添加图片

图片处理流程

应用截图:

  1. 从前置准备的查找结果中匹配相关图片
  2. 只在图片明确与文档内容相关时使用
  3. 引用格式:![截图说明](/sources/assets/screenshot.png)

技术图表:

  1. 判断是否真的需要图表来辅助理解
  2. 如需要且无现有图表,生成 AFS Image Slot
  3. 不要用应用截图替代技术图表

生成 AFS Image Slot

text
Use an AFS image slot only when you want the framework to generate a new image.

Slot format (single line):
<!-- afs:image id="architecture-overview" desc="..." -->

Optional stable intent key (for reuse across edits or documents):
<!-- afs:image id="architecture-overview" key="aigne-cli-architecture" desc="..." -->

Rules:
- Insert a slot only for new image generation.
  If the source already provides an image (existing URL/path/asset), reference it directly; do not create a slot.
- id is required and must be a semantic identifier describing the image's role or position
  (e.g. architecture-overview, core-flow, deployment-banner).
  It must be unique in the same document and match: [a-z0-9._-]+.
- desc is required, concise, double-quoted, and must not contain ".
  It describes what the image should depict.
- key is optional. Use a short, stable token ([a-z0-9._-]+) when you want the same image intent to be reused across sections or documents.

何时生成 Slot:

  • 文档需要技术图表来辅助理解
  • 工作区中没有对应的技术图表

Slot 不能用于:

  • 应用界面截图(必须使用真实截图)

6. 保存文档

必须调用 saveDocument 工具保存文档,工具中有额外的保存逻辑:

javascript
saveDocument({
  path: "/api/overview",           // 文档路径
  content: "# API 概览\n...",      // Markdown 内容
  options: {
    language: "zh"                 // 从 config.yaml 的 locale 读取
  }
})

重要language 参数必须从 config.yamllocale 字段读取并传入。

7. 校验内容

调用 checkContent 工具校验文档:

  • 格式规范检查
  • 导航链接完整性
  • 代码示例语法
  • AFS image slot 格式

8. 验证保存结果

在结束前必须执行以下检查:

  1. 确认文档已保存:检查 saveDocument 工具是否成功执行
  2. 验证文件存在:使用 lsRead 工具检查 docs/ 目录下对应的文档文件是否已创建
  3. 如果文件不存在:重新调用 saveDocument 保存文档

9. 返回摘要

使用自然语言返回处理结果摘要,不返回完整文档内容以节省主 agent 上下文。

摘要应包含以下信息:

  • 文档路径(如 /api/overview
  • 文档主题概述(1-2 句话描述文档内容)
  • 主要章节列表
  • 生成的 AFS image slot ID 列表(如有)
  • 校验结果(通过/警告/错误)
  • 保存状态确认

输入参数

path(必需)

  • 类型:字符串
  • 格式:/path/to/document(与 document-structure.yaml 中的 path 一致)
  • 用途:确定生成哪篇文档

customRequirements(可选)

  • 类型:字符串
  • 用途:用户在当前对话中提出的额外要求
  • 示例:
    • "重点说明安全注意事项"
    • "包含性能优化建议"
    • "补充错误处理的最佳实践"
  • 应用:
    • 指导生成内容的侧重点
    • 可根据要求补充相关源文件到分析范围

职责边界

必须执行

  • ✅ 读取 workspace 约定目录中的配置信息
  • ✅ 分析源代码并生成文档内容
  • ✅ 调用 saveDocument 保存文档
  • ✅ 调用 checkContent 校验文档
  • ✅ 返回摘要信息

不应执行

  • ❌ 不创建或修改 document-structure.yaml
  • ❌ 不进行 Git 操作
  • ❌ 不生成空洞的占位内容
  • ❌ 不偏离用户意图

成功标准

  1. 完整性:包含必需章节、导航链接完整
  2. 准确性:与源代码一致、技术细节正确
  3. 可读性:结构清晰、语言流畅、示例恰当
  4. 一致性:风格符合用户意图、格式遵循 doc-smith 规范
  5. 校验通过:checkContent 校验无错误
  6. 保存验证:文档已通过 saveDocument 保存,且 docs/ 目录下文件确实存在
  7. 长度适当:符合下方长度参考标准

长度参考标准

文档类型建议行数代码示例数量说明
概览文档(有子文档)150-300 行3-5 个简短示例每个子主题简要介绍
详细文档(无子文档)300-500 行5-10 个完整示例完整展开技术细节

超长文档的处理:

  • 如果内容超过 500 行,考虑拆分为多个子文档
  • 概览文档超过 300 行,说明包含了过多子文档应有的内容

过短文档的处理:

  • 详细文档少于 200 行,可能缺少必要的示例或说明

注意事项

避免重复内容(重要)

核心原则:概览文档不重复子文档的内容

生成概览文档时,必须遵循:

  • 每个子主题只写 2-4 段概述
  • 不展开技术实现细节(那是子文档的职责)
  • 用"详见 [链接]"引导读者到子文档

自检问题:

  • 这段内容是否会在子文档中详细说明?→ 是则简写
  • 这个代码示例是否应该放在更专门的子文档?→ 是则省略或简化
  • 读者是否需要在概览文档中就了解这个细节?→ 否则删除

控制文档长度(重要)

写作前先问自己:

  1. 这是概览文档还是详细文档?
  2. 目标行数是多少?
  3. 应该包含多少个代码示例?

写作时的控制方法:

  • 概览文档:每个子主题写完后检查是否超过 200 字
  • 代码示例:先问"用户真的需要这个示例吗?"
  • 内部实现:一律不写,只写 API 使用方式