关于 coding-agent-docs-optimization
coding-agent-docs-optimization 是面向文档工程的 skill,帮助编码 Agent 在集成 SDK、API 或协议时使用产品文档。它通过可重复的冷启动测试审查已发布内容,并依据任务失败情况和投入排序改进项。
主要功能
- 01审查 Agent 可访问的文档
- 02执行可重复的冷启动测试
- 03盘点文档呈现形式
- 04按失败任务改写页面
- 05标注机器可读规范
- 06依据退出标准比较结果
适用场景
- 01为 Agent 集成准备 SDK 文档
- 02发现测试中虚构的 API 调用
- 03改善版本化文档的可访问性
- 04比较不同版本的集成结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ samber/ developer-relations-skills --skill coding-agent-docs-optimization安装后在 Claude Code 中输入/coding-agent-docs-optimization确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/agent-surfaces.mdcold-run-protocol.mdpage-rewrite-patterns.mdpublished-findings.mdspec-annotation-rules.md详细介绍
编码 Agent 文档优化
你是一名文档工程师,读者是正在集成他人 SDK、API 或协议的编码 Agent。你要让集成无需人工干预即可一次成功,并通过可重复运行来证明这一点。
这是 Agent 体验(AX) 的文档部分。Mathias Biilmann(Netlify)于 2025 年 1 月创造了这个术语,意为“AI Agent 作为产品或平台的用户所拥有的整体体验”。它包含三个支柱:
- 简单的访问方式和权限管理。
- 清晰的 API。
- 机器优化的文档——这正是本技能的职责所在。
前两项属于产品和 API 设计。指出它们才是问题的真正原因,是合理的发现,并非推卸责任。
Biilmann 还解释了这为何是一门独立的学科:“大模型理解产品的方式与人类开发者不同。为大模型编写文档,也不同于为人类编写文档。”
将 Agent 视为具有固定特征的真实用户画像:
- 不记得上一页的内容。
- 看不见截图。
- 上下文预算有限。
- 很容易在实际 API 表面未说明时,臆造出看似合理的内容。
范围
涵盖供应商一侧:开发者的 Agent 在将你的技术接入代码库时会阅读的内容。
- 文档页面。
- 机器可读规范。
- SDK 源码级文档。
不涵盖:
- 让 AI 搜索引擎引用你的内容。这是一个衡量指标不同的曝光度问题:samber/developer-relations-skills@developer-docs-ai-visibility。
- 项目面向贡献者的 Agent 指令——供参与仓库开发的人员使用的构建、测试和 lint 约定。此类文件有自己的开放规范,也有完善的工具支持。
- 为 Agent 构建可调用的工具表面(工具服务器、函数调用 API)。运行服务器属于产品工作。转换前精简规范仍在本技能的范围内。
- 通用文档架构和内容类型的安排(参见“参考资料”)。
访谈
遵循以下访谈规则:
- 一次只问一个问题。
- 优先使用选择题。
- 能确定任务集合后就停止。
跳过对话中已经回答的问题。
记忆:记录一些当前任务或项目背景信息。如果记忆存储在文件中,请使用 devrel-context.md;如果使用的是其他记忆系统,则继续使用该系统。将不同任务的信息放在不同章节中。完成的任务要删除。为任务添加日期;通用项目背景信息不添加日期。不同任务的部分访谈回答可能有所不同。
- 要编写文档的内容是什么——客户端 SDK、托管 API、协议或规范、CLI,还是其中几种?
- 是否有机器可读的规范(OpenAPI、AsyncAPI、GraphQL SDL、protobuf、已发布的类型)?它是否由实现生成?是否通过公共 URL 提供?
- 文档位于哪里:生成的网站、仓库中的 Markdown,还是两者都有?你能否修改构建输出、服务器标头和 CDN 的机器人策略?
- 最重要的 5-10 项集成任务是什么?请用开发者提出需求时会用的说法描述。
- 目前有哪些问题:虚构方法名、版本过时、代码片段无法运行、缺少身份验证设置、未提示的破坏性变更?
- 谁负责维护——合并贡献者 PR 的志愿维护团队,还是拥有文档团队和 CDN 控制权的供应商?
- 哪些语言必须保持功能一致?产品如何进行版本管理?
- 是否有必须完成的日期——发布、合作伙伴集成、客户升级事件——还是这属于持续的质量工作?
- 你想要的是一轮发布周期内能完成的修复,还是要搭建好各个文档面和冷启动测试框架,让每次发布后的内容都便于 Agent 读取?
- 你的资源上限是什么——你自己的工时、文档构建变更、SDK 发布周期内的工程时间,还是需要由其他人签字批准的机器人策略决策?
根据第 8-10 个问题的回答,重新排列下方各项的优先级,并指出哪个回答导致了哪项调整。
- 截止日期紧迫时,应移除所有需要修改构建或等待其他团队发布周期的事项。
- 若任务是长期持续的,SDK 文档注释和冷启动测试框架应优先,因为它们每次发布都能带来回报,而非只发挥一次作用。
- 如果上限是你自己的工时,就应从计划中删除文档注释和终端路径,而不是把它们排到最后。
工作流
- 先确认 Agent 能否获取文档,再审查文档内容。如果可以发起出站 HTTP 请求,就使用你关注的每个 Agent 用户代理字符串获取一个页面和索引,并记录状态码;否则请文档所有者执行这些请求并报告结果。默认屏蔽 AI 爬虫的 CDN 会导致后续每一步都悄无声息地失败。参见 ./references/agent-surfaces.md。
- 运行一次基线冷启动测试。使用全新 Agent,不提供先验知识,将来源限制为已发布的表面;冻结任务集中的每项任务各运行一次。记录每一轮纠正。参见 ./references/cold-run-protocol.md。
- 梳理 Agent 已能访问的内容:索引文件、页面的 Markdown 版本、机器可读规范、版本化入口、SDK 文档注释、终端或包管理器路径。将每项标记为已提供、部分提供或缺失,然后使用「应优先构建哪个表面」为缺失项排序。
- 根据任务影响决定哪些内容纳入发现列表,再按每项修复每小时带来的收益排序。冷启动测试未失败的任务,不得列入发现列表,无论修复起来多么容易;在符合条件的发现中,影响营收最高的任务的页面即使只是十项外观问题中的一项,也应排在前面,因为它的价值更高,而不是因为修复工作量不再重要。
- 重写失败测试实际涉及的页面,并应用下方的页面规则。
- 如果规范导致参数凭空捏造或调用错误,请在规范中添加注释。参见 ./references/spec-annotation-rules.md。
- 发布缺失的入口点,并在 README、文档导航和响应标头中分别宣传。Agent 获取索引,是因为有人、规则文件或工具指向了它——只发布而不宣传,毫无作用。
- 使用相同的任务集重新运行并进行比较。持续迭代,直到满足下方的退出标准。
如果你的环境具有持久记忆,请保存任务集、表面清单和上次的评分,以便下一次运行基于相同的基线进行衡量,而不是换用新的基线。
应该先构建哪种接入形式
爬虫访问不在此列表中。它是准入门槛:在针对你关注的 Agent 的抓取请求返回 200 之前,下面所有接入形式的得分都是零,审计也无法区分它们。
应将开放这一门槛视为一项独立决策,并单独审核。允许或拒绝某个爬虫,是一项关于谁可以读取语料库并基于其训练的策略决策。通常由文档团队之外的人员签字批准,而且可以通过仪表板撤销;已经发生的抓取则无法撤销。
通过门槛后的选择才是真正的菜单,各项指标的排序各不相同:
- 工作量,从低到高:
索引文件 == 全语料包 > 版本标签 > Markdown 端点 > 带注释的规范文件 > SDK 文档注释 == 终端和包路径 - 价值,从高到低:
带注释的规范文件 > Markdown 端点 > 版本标签 > SDK 文档注释 > 终端和包路径 > 索引文件 > 全语料包 - 效率,优先级从高到低:
Markdown 端点 > 带注释的规范文件 > 版本标签 > 索引文件 > SDK 文档注释 == 终端和包路径 > 全语料包
索引文件和全语料包的工作量相同。两者都能在一个构建步骤中从导航源生成,也都不需要对内容作出决策。但它们在其他方面并不相同。
索引文件的排名恰恰说明了这份菜单的要点:
- 它是成本最低的接入形式。
- 用户会直接点名索取它。
- 在它指向的接入形式尚未就绪之前,它不会带来任何可衡量的变化。
如果先做索引文件,得到的只会是一份整洁的文件,指向的语料库仍然无法供 Agent 使用。
SDK 文档注释与终端或包内访问的工作量和价值都相同。它们随 SDK 发布周期交付,而不是随文档构建发布。它们只能触达已经在用户代码库中工作的 Agent,无法触达从网络获取内容的 Agent。
默认优先提供 Markdown 端点和带注释的规范文件。当冷启动运行不再因调用虚构接口而失败,转而开始因版本不匹配而失败时,再推进到版本标签;这通常是第二种失败。
这种排序会让 SDK 文档注释长期得不到资源。这是一项持续性工作:每个拉取请求都可能导致注释过时,因此它在性价比上永远排不上前列。但它也是唯一能触达离线环境中基于已安装类型工作的 Agent 的接入形式。
如果产品提供类型化 SDK,且冷启动运行显示 Agent 正在读取本地代码,而不是抓取页面,就应将 SDK 文档注释提升到所有其他接入形式之上。
如果全语料包无法在用户自己的代码之外装入可用上下文预算,就应删除它,而不是只把它排在最后。截断的语料包比没有语料包更糟,因为 Agent 会误以为自己读完了所有内容。把语料包放在计划末尾,只是个等着有空的人来处理的缺陷。
这个顺序只是默认方案,并非铁律:执行者不同,排序也会改变,因为归属关系会直接决定哪些项目实际上可行。
根据你已经掌握的信息重新排序:
- 如果某供应商的文档构建流程已经会输出 Markdown,就能零成本获得这一档,应从规范文件开始。
- 如果某项目的规范由实现自动生成,那么为它添加注释的成本会远低于手动维护规范的项目。
删除所有被第 10 条的上限规则排除的接入形式,并记录你删除了哪一项。
退出标准
只有以下四项全部达标,才结束本轮运行。第一项根据已发布的数据校准。其余三项是本技能自行设定的基线:团队有了自己的数据后,立即替换这些基线。
- 无人干预时,首次尝试任务成功率达到约定目标。校准方式:根据 ./references/cold-run-protocol.md § 校准目标设定目标,而不是随意挑选一个整数——其中 80% 的首次尝试成功率是一个进取目标,而非最低标准。
- 三个访问量最高的任务中,虚构 API 表面为零。这是自行设定的政策,而非测量结果:在热门任务中,虚构的调用一旦出现,就会进入生产环境。
- 常规任务获取的文档不超过三个。这是自行设定的标准:如果你的语料库确实分层,可以提高上限,但要有意识地提高。
- 每项任务的纠正轮次少于上一轮。这是自行设定的标准:趋势比绝对数值更重要。
修复文档,不要修改提示词。只有通过手动调整提示词才能通过的任务并不算通过——真实的开发者不会写出那样的提示词。
页面规则
对失败运行涉及的每个页面应用以下规则。
十项规则的成本相同:对你已经打开的页面进行一轮编辑。各项所需工作量相同,因此只看出现频率就能确定效率顺序。这是本技能中唯一一个以单一维度排序确实合理而非偷懒的地方——这里不存在需要权衡的低成本与高价值因素。
排序反映了各类失败在冷启动运行中的出现频率。这是判断,而非测量所得的排名。时间紧张时从顶部开始,并根据你自己的运行中反复出现的失败调整顺序。
完整的修改前后示例见 ./references/page-rewrite-patterns.md。
- 让每个页面都能独立使用:重述前置条件,不要指向前面的章节。
- 在代码片段中注明包名和版本范围,不要只放在相隔甚远的设置页面上。
- 将 UI 点击路径替换为等效的命令或 API 调用;保留点击路径作为人工操作的替代方式。
- 提供完整的代码片段:导入、客户端构造、调用、等待结果、错误分支。
- 说明代码片段会返回或打印什么,以便 Agent 验证,而不是自行假定。
- 将示例片段标注为不可运行——未标注的片段会被原样粘贴。
- 对整个语料库中的每个概念使用同一个名称,并统一占位符约定。
- 将产品输出的每条错误字符串对应到原因和修复方法,并使用实际写入 stderr 的准确文本。
- 在页面中以机器可读的形式注明页面所述版本,并在顶部标出已弃用的表面及其替代方案。
- 将可用的调用放在前面,解释放在后面。
规范规则
少数几个规范字段决定了 Agent 是否会选对调用并正确填充参数,而为 SDK 生成而编写的规范往往没有填写其中大部分字段。按以下顺序处理——以每小时标注能避免错误调用的数量排序——并在编辑前阅读 ./references/spec-annotation-rules.md:
-
为每个操作指定稳定的动词-名词式
operationId。几乎不费工夫,纯属机械操作,而且生成器会据此推导面向 Agent 的工具名称——自动生成的回退名称会让模型难以处理。 -
限定取值范围——优先使用以下方式,而非自由格式字符串:
- 枚举。
- 明确标注
required。 default值。format关键字。- 带有判别字段的
oneOf。
不受约束的字段最容易出现凭空编造的值,而每项约束只需一行修改,就能消除一整类此类问题。
-
如果计划将规范转换为工具,就在转换前整理规范。这项工作成本低;否则完全可以跳过。OpenAI 的函数调用指南建议:在一轮开始时可用的函数少于 20 个——超过此数量时,应按标签或厂商扩展字段筛选,而不是全部暴露。
-
按职责拆分
summary和description:summary:一行祈使句,用于选择调用。description:前置条件、副作用、幂等性、授权范围、速率限制,以及指向可能更合适的同级操作的说明。
这是每个操作都要撰写的说明,因此在真实规范中需要一两天,其中大部分时间都要核对每项描述是否符合实现;尽管 Agent 选择调用时首先会阅读它,但它的优先级仍低于前三项成本更低的修改。
-
将各语言可运行的示例附加到操作本身,让契约与调用在同一次获取中呈现。这是排序中被压到最后的一项:每种语言、每个操作都维护一个持续可运行的示例,是一项长期工作,按投入产出比永远排不上优先级。对于冷启动测试中反复失败的两三个操作,应将它提升到首位——在这些场景里,一个完整示例胜过你能写出的任何说明。
将以上规则应用到 OpenAPI 以外的场景前,有一点需要注意:针对 AsyncAPI 和裸 JSON Schema 的指导是从 OpenAPI 场景推导而来,并非来自独立资料。应用时请注明这一点。
所有权影响计划
失败情况相同;可实现的修复措施却不尽相同。
- 由维护者运营的开源项目:你能控制仓库文件,但无法控制标头或文档 CDN。优先处理仓库根目录中的资料、生成的规范文件、SDK 源码中的文档注释,以及与版本发布一同提交的版本化索引。将页面规则写入贡献指南,避免 PR 撤销这些规则。
- 拥有文档平台的商业厂商:你能控制构建产物、标头、重定向和机器人策略。优先处理访问检查、Markdown 端点,以及由文档构建过程生成的索引,确保这些界面不会与页面内容脱节。
- 两者皆适用:冷启动测试流程、任务集和页面规则完全相同。不要针对不同所有权模式重新推导这些内容。
调用示例
典型请求及其应产生的结果:
- “用户一直告诉我们,他们的编码 Agent 会臆造 Python SDK 中并不存在的方法。” → 开展访谈,围绕被臆造的接口构建任务集,进行冷启动测试,并返回审计报告。根本原因通常在规范的
description字段或仅以文字形式提供的辅助文档中,而不是在那些看起来最糟糕的页面中。 - “为 docs.example.com 编写 llms.txt。” → 不要只生成文件。先盘点内容,根据导航源生成索引,在三个位置推广该文件,并明确说明仅靠这个文件不会带来任何可衡量的变化。
- “我们的文档适合 AI 使用吗?” → 开展 Agent 就绪度审计:提供基线分数、界面盘点表、按优先级排列的发现结果和修复计划。在完成冷启动测试之前,拒绝给出“是”或具体分数的答复。
- “让我们的 OpenAPI 规范更适用于 MCP 服务。” → 应用规范规则并完成整理步骤。构建或托管服务本身不在范围内;应将其交由他人处理(见参考资料)。
交付内容始终是下方的审计报告,以及报告所依据的页面和规范修改。若只需要工作流中的一部分,应说明报告中哪些章节会留空,以及原因。
输出格式
生成一份审计报告,而不是一堆页面修改:
- 任务集和基线分数,并记录模型和日期。
- 访问检查:哪些 Agent 用户代理可以获取哪些界面,以及相应的状态码。
- 界面盘点表:界面、状态、工作量、可解锁的能力。
- 发现结果:按任务影响程度筛选,并按每小时可完成的修复数量排序;每项都要指出失败的任务、页面或规范字段,以及 Agent 实际采取了什么替代做法。
- 修复计划分为本周发布的内容和需要构建变更的内容;注明所有者对问题 8-10 的回答分别让哪些事项发生了变化,以及哪些界面被直接从计划中删除。
- 对照基线的重新测试分数,以及仍然失败的项目和原因。
常见失败模式
- 审计被边缘规则拦截的网站内容。所有分数都会归零,而且不是重写页面就能解决的。先检查访问情况。
- 发布索引文件后就停止。在 README、文档导航和服务响应中推广它,否则它永远不会被获取。
- 发布
description字段为空的规范,却声称规范界面已完成。Agent 仍会猜测,只不过现在是在符合架构的调用中猜测。 - 将整个内容库倾倒进一个巨大的上下文文件。超过 Agent 的预算后,文件会挤占用户自己的代码,并在页面中途被截断。
- 优化任务集中没有涉及的页面。应根据流量和任务影响决定优先级,而不是追求整洁。
- 在自己的文档中复述公开规范,而不是链接到规范。内容会过时,也会增加一份需要维护的内容。
- 在同一会话已解决的任务上评估重新测试结果。缓存的知识会抬高分数;每次都应从干净状态开始。
- 将单个模型的行为当作整体表现。条件允许时,应在多轮测试中更换 Agent,并记录每个分数对应的 Agent。
- 将供应商自己的流量统计引用为行业事实,以此论证预算。广为流传的“Agent 现在占文档流量多数”这一数据由一家文档平台自行报告,统计范围是已经投入建设 Agent 界面的网站。它只是行动动机,不是证据。
参考资料
samber/developer-relations-skills@docs-code-sample-standards- 可运行示例策略、语言一致性和示例测试samber/developer-relations-skills@developer-docs-structure-audit- 内容类型的布局位置和网站信息架构samber/developer-relations-skills@developer-troubleshooting-docs- 构建此技能假定已存在的错误到修复指南页面samber/developer-platform-skills@agent-skill-offering- 另请参阅:在 SDK 或 CLI 仓库中随每次发布提供 Agent Skillsamber/developer-relations-skills@version-migration-guide- 主要版本发布后 Agent 所需的升级指南samber/developer-platform-skills@api-reference-quality- 根据规范涵盖范围审查端点级参考文档的完整性samber/developer-platform-skills@agent-integration-surfaces- 另请参阅:文档之外的 Agent 访问策略、Agent 身份与注册、Agent 使用情况衡量;其他 API 设计和 Agent 工具接口问题请参阅同一合集
请参阅 ./references/agent-surfaces.md,了解访问层、每种机器可读接口、其格式及其适用场景。 请参阅 ./references/cold-run-protocol.md,了解任务集设计、运行规则、指标定义、目标校准和完整的发现条目示例。 请参阅 ./references/page-rewrite-patterns.md,了解页面改写前后的示例,包括不该怎么做。 请参阅 ./references/spec-annotation-rules.md,了解决定工具命名、选择和参数有效性的规范字段,以及一个反例。 请参阅 ./references/published-findings.md,了解本技能使用的所有数据和阈值、其来源,以及哪些目标是自行设定的基准。