mcpField
C
coding-agent-docs-optimization

coding-agent-docs-optimization

github.com/samberAgent 工作流611.2k 次安装2 天前更新
代码仓库

关于 coding-agent-docs-optimization

coding-agent-docs-optimization 是面向文档工程的 skill,帮助编码 Agent 在集成 SDK、API 或协议时使用产品文档。它通过可重复的冷启动测试审查已发布内容,并依据任务失败情况和投入排序改进项。

主要功能

  1. 01审查 Agent 可访问的文档
  2. 02执行可重复的冷启动测试
  3. 03盘点文档呈现形式
  4. 04按失败任务改写页面
  5. 05标注机器可读规范
  6. 06依据退出标准比较结果

适用场景

  1. 01为 Agent 集成准备 SDK 文档
  2. 02发现测试中虚构的 API 调用
  3. 03改善版本化文档的可访问性
  4. 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.json
references/
agent-surfaces.md
cold-run-protocol.md
page-rewrite-patterns.md
published-findings.md
spec-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;如果使用的是其他记忆系统,则继续使用该系统。将不同任务的信息放在不同章节中。完成的任务要删除。为任务添加日期;通用项目背景信息不添加日期。不同任务的部分访谈回答可能有所不同。

  1. 要编写文档的内容是什么——客户端 SDK、托管 API、协议或规范、CLI,还是其中几种?
  2. 是否有机器可读的规范(OpenAPI、AsyncAPI、GraphQL SDL、protobuf、已发布的类型)?它是否由实现生成?是否通过公共 URL 提供?
  3. 文档位于哪里:生成的网站、仓库中的 Markdown,还是两者都有?你能否修改构建输出、服务器标头和 CDN 的机器人策略?
  4. 最重要的 5-10 项集成任务是什么?请用开发者提出需求时会用的说法描述。
  5. 目前有哪些问题:虚构方法名、版本过时、代码片段无法运行、缺少身份验证设置、未提示的破坏性变更?
  6. 谁负责维护——合并贡献者 PR 的志愿维护团队,还是拥有文档团队和 CDN 控制权的供应商?
  7. 哪些语言必须保持功能一致?产品如何进行版本管理?
  8. 是否有必须完成的日期——发布、合作伙伴集成、客户升级事件——还是这属于持续的质量工作?
  9. 你想要的是一轮发布周期内能完成的修复,还是要搭建好各个文档面和冷启动测试框架,让每次发布后的内容都便于 Agent 读取?
  10. 你的资源上限是什么——你自己的工时、文档构建变更、SDK 发布周期内的工程时间,还是需要由其他人签字批准的机器人策略决策?

根据第 8-10 个问题的回答,重新排列下方各项的优先级,并指出哪个回答导致了哪项调整。

  • 截止日期紧迫时,应移除所有需要修改构建或等待其他团队发布周期的事项。
  • 若任务是长期持续的,SDK 文档注释和冷启动测试框架应优先,因为它们每次发布都能带来回报,而非只发挥一次作用。
  • 如果上限是你自己的工时,就应从计划中删除文档注释和终端路径,而不是把它们排到最后。

工作流

  1. 先确认 Agent 能否获取文档,再审查文档内容。如果可以发起出站 HTTP 请求,就使用你关注的每个 Agent 用户代理字符串获取一个页面和索引,并记录状态码;否则请文档所有者执行这些请求并报告结果。默认屏蔽 AI 爬虫的 CDN 会导致后续每一步都悄无声息地失败。参见 ./references/agent-surfaces.md。
  2. 运行一次基线冷启动测试。使用全新 Agent,不提供先验知识,将来源限制为已发布的表面;冻结任务集中的每项任务各运行一次。记录每一轮纠正。参见 ./references/cold-run-protocol.md。
  3. 梳理 Agent 已能访问的内容:索引文件、页面的 Markdown 版本、机器可读规范、版本化入口、SDK 文档注释、终端或包管理器路径。将每项标记为已提供、部分提供或缺失,然后使用「应优先构建哪个表面」为缺失项排序。
  4. 根据任务影响决定哪些内容纳入发现列表,再按每项修复每小时带来的收益排序。冷启动测试未失败的任务,不得列入发现列表,无论修复起来多么容易;在符合条件的发现中,影响营收最高的任务的页面即使只是十项外观问题中的一项,也应排在前面,因为它的价值更高,而不是因为修复工作量不再重要。
  5. 重写失败测试实际涉及的页面,并应用下方的页面规则。
  6. 如果规范导致参数凭空捏造或调用错误,请在规范中添加注释。参见 ./references/spec-annotation-rules.md。
  7. 发布缺失的入口点,并在 README、文档导航和响应标头中分别宣传。Agent 获取索引,是因为有人、规则文件或工具指向了它——只发布而不宣传,毫无作用。
  8. 使用相同的任务集重新运行并进行比较。持续迭代,直到满足下方的退出标准。

如果你的环境具有持久记忆,请保存任务集、表面清单和上次的评分,以便下一次运行基于相同的基线进行衡量,而不是换用新的基线。

应该先构建哪种接入形式

爬虫访问不在此列表中。它是准入门槛:在针对你关注的 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:

  1. 为每个操作指定稳定的动词-名词式 operationId。几乎不费工夫,纯属机械操作,而且生成器会据此推导面向 Agent 的工具名称——自动生成的回退名称会让模型难以处理。

  2. 限定取值范围——优先使用以下方式,而非自由格式字符串:

    • 枚举。
    • 明确标注 required。
    • default 值。
    • format 关键字。
    • 带有判别字段的 oneOf。

    不受约束的字段最容易出现凭空编造的值,而每项约束只需一行修改,就能消除一整类此类问题。

  3. 如果计划将规范转换为工具,就在转换前整理规范。这项工作成本低;否则完全可以跳过。OpenAI 的函数调用指南建议:在一轮开始时可用的函数少于 20 个——超过此数量时,应按标签或厂商扩展字段筛选,而不是全部暴露。

  4. 按职责拆分 summary 和 description:

    • summary:一行祈使句,用于选择调用。
    • description:前置条件、副作用、幂等性、授权范围、速率限制,以及指向可能更合适的同级操作的说明。

    这是每个操作都要撰写的说明,因此在真实规范中需要一两天,其中大部分时间都要核对每项描述是否符合实现;尽管 Agent 选择调用时首先会阅读它,但它的优先级仍低于前三项成本更低的修改。

  5. 将各语言可运行的示例附加到操作本身,让契约与调用在同一次获取中呈现。这是排序中被压到最后的一项:每种语言、每个操作都维护一个持续可运行的示例,是一项长期工作,按投入产出比永远排不上优先级。对于冷启动测试中反复失败的两三个操作,应将它提升到首位——在这些场景里,一个完整示例胜过你能写出的任何说明。

将以上规则应用到 OpenAPI 以外的场景前,有一点需要注意:针对 AsyncAPI 和裸 JSON Schema 的指导是从 OpenAPI 场景推导而来,并非来自独立资料。应用时请注明这一点。

所有权影响计划

失败情况相同;可实现的修复措施却不尽相同。

  • 由维护者运营的开源项目:你能控制仓库文件,但无法控制标头或文档 CDN。优先处理仓库根目录中的资料、生成的规范文件、SDK 源码中的文档注释,以及与版本发布一同提交的版本化索引。将页面规则写入贡献指南,避免 PR 撤销这些规则。
  • 拥有文档平台的商业厂商:你能控制构建产物、标头、重定向和机器人策略。优先处理访问检查、Markdown 端点,以及由文档构建过程生成的索引,确保这些界面不会与页面内容脱节。
  • 两者皆适用:冷启动测试流程、任务集和页面规则完全相同。不要针对不同所有权模式重新推导这些内容。

调用示例

典型请求及其应产生的结果:

  • “用户一直告诉我们,他们的编码 Agent 会臆造 Python SDK 中并不存在的方法。” → 开展访谈,围绕被臆造的接口构建任务集,进行冷启动测试,并返回审计报告。根本原因通常在规范的 description 字段或仅以文字形式提供的辅助文档中,而不是在那些看起来最糟糕的页面中。
  • “为 docs.example.com 编写 llms.txt。” → 不要只生成文件。先盘点内容,根据导航源生成索引,在三个位置推广该文件,并明确说明仅靠这个文件不会带来任何可衡量的变化。
  • “我们的文档适合 AI 使用吗?” → 开展 Agent 就绪度审计:提供基线分数、界面盘点表、按优先级排列的发现结果和修复计划。在完成冷启动测试之前,拒绝给出“是”或具体分数的答复。
  • “让我们的 OpenAPI 规范更适用于 MCP 服务。” → 应用规范规则并完成整理步骤。构建或托管服务本身不在范围内;应将其交由他人处理(见参考资料)。

交付内容始终是下方的审计报告,以及报告所依据的页面和规范修改。若只需要工作流中的一部分,应说明报告中哪些章节会留空,以及原因。

输出格式

生成一份审计报告,而不是一堆页面修改:

  1. 任务集和基线分数,并记录模型和日期。
  2. 访问检查:哪些 Agent 用户代理可以获取哪些界面,以及相应的状态码。
  3. 界面盘点表:界面、状态、工作量、可解锁的能力。
  4. 发现结果:按任务影响程度筛选,并按每小时可完成的修复数量排序;每项都要指出失败的任务、页面或规范字段,以及 Agent 实际采取了什么替代做法。
  5. 修复计划分为本周发布的内容和需要构建变更的内容;注明所有者对问题 8-10 的回答分别让哪些事项发生了变化,以及哪些界面被直接从计划中删除。
  6. 对照基线的重新测试分数,以及仍然失败的项目和原因。

常见失败模式

  • 审计被边缘规则拦截的网站内容。所有分数都会归零,而且不是重写页面就能解决的。先检查访问情况。
  • 发布索引文件后就停止。在 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 Skill
  • samber/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,了解本技能使用的所有数据和阈值、其来源,以及哪些目标是自行设定的基准。

评论

支持 Markdown