skill.md 和 llms.txt:发现层与执行层
llms.txt 帮 Agent 发现文档地图,skill.md 规定怎么用与判断顺序。二者互补,可与 MCP 分层;对照 Docsalot 机制说明。

给 Agent 接文档库时,有人建 llms.txt,有人写 skill.md,容易当成重复配置。skill.md 和 llms.txt 区别在职责:前者是「怎么用」的流程指令,后者是「有什么」的站点地图,互补而不是二选一。
llms.txt 管发现
llms.txt 约定 是在网站根路径放一份 Markdown 索引,列出对人类和 LLM 有用的文档入口、简短说明、可选详情链接。爬虫和 Agent 先读它,知道「这套文档有哪些章节、优先读哪几页」,而不必全站 blind crawl。
它回答的是 orientation 问题:文档范围、版本、核心 API 列表、Getting Started 在哪。类似 sitemap,但面向 LLM 可读性,句子短、链接带摘要。Docsalot 2026 年 6 月的对比文把 llms.txt 定位在 discovery layer。
站点很大时,llms.txt 通常只放 curated 链接,不是每个 HTML 页都列。维护成本和站点发布流程绑定,文档改名时要同步改 llms.txt,否则 Agent 会读到 404 摘要。
skill.md 管执行
Anthropic Agent Skills 规范里的 SKILL.md 是另一类文件:YAML frontmatter 加正文步骤,教 Agent 在特定任务上如何操作、按什么顺序判断、何时停。它回答的是 procedure 问题:发版检查先跑哪条命令、失败时看哪个 log、输出格式是什么。
skill 按需加载,描述进清单、正文在触发后才全量进入上下文。和 llms.txt 的「全站静态索引」不同,skill 是「某工作流的操作员手册」。细节过长时应拆到同目录 reference.md,避免一次触发吃满窗口。
Docsalot 博文(2026-06-04)强调二者非竞争关系。该文距今已超过两个月,下文机制对照仍可用;字段命名与加载行为若有变动,请对照 Anthropic Skills 规范与 llmstxt.org 最新说明。
分层怎么叠
典型三层栈:
| 层 | 载体 | 作用 |
|---|---|---|
| 发现 | llms.txt | 告诉 Agent 文档在哪、读什么 |
| 流程 | skill.md | 告诉 Agent 任务步骤与判据 |
| 连接 | MCP | 拉活数据、写外部系统 |
这和 Skills 与 MCP 的差异 一致:MCP 不是文档索引的替代品。llms.txt 也不能替代 MCP 去查「当前 production 指标」,它只指向静态文档 URL。
实践里可以 llms.txt 链到「安装指南」「API 参考」,再提供一个 deploy-check skill 把「读文档→跑命令→看结果」串起来。Agent 先通过 llms.txt 知道有 deploy 章节,被用户说「按团队规范发版」时加载 skill 执行。
写 llms.txt 的最低可行内容
根路径 /llms.txt,UTF-8 Markdown。开头一段说明项目名、版本、一句话用途。下面用二级标题分块:Quick start 链到入门页;API 链到 reference;Changelog 链到发布说明。每条链接后跟一行「这篇适合解决什么问题」。
别让 llms.txt 变成 second homepage 全文粘贴。超过几百行就失去索引意义,和把整本手册塞进 CLAUDE.md 的风险 类似,占上下文却不增加结构化发现能力。
写 skill.md 时别重复 llms.txt
skill 正文不要复制 llms.txt 里已有的 URL 列表。skill 应写:何时触发、步骤顺序、失败分支、可执行脚本路径。需要读文档时,一步「打开 llms.txt 中的 API 节」即可,而不是把 API 页全文贴进 skill。
frontmatter 的 description 要含触发词,方便 Agent 匹配。手动才用的流程加 disable-model-invocation: true,避免描述占常驻清单。
谁该维护哪一层
文档站维护者:每次 major 发布更新 llms.txt 里的版本号与 Changelog 链接,保证 Agent 不会读到已下架 URL。应用仓库维护者:把团队发版、Review、On-call 流程写成 skill,放在 .claude/skills/ 或 Cursor 等价目录。平台团队:MCP server 接监控、工单、内部 wiki API。
三角色不重叠时,Agent 接到任务的路径是:读 llms.txt 定位官方 API 文档 → 加载 deploy skill 按步骤执行 → 某步需要当前告警状态时再调 MCP。缺 llms.txt 时 Agent 可能 hallucinate 文档 URL;缺 skill 时 Agent 每次问「下一步做什么」;缺 MCP 时 Agent 只能读静态页里的过时示例。
小项目可以只有 skill 没有 llms.txt(文档就几页,全写进 skill reference 也行)。对外开源库或 API 产品几乎总是需要 llms.txt,否则外部 Agent 找不到你的 doc 入口。
llms.txt 与 sitemap 的分工
sitemap.xml 给搜索引擎爬虫,llms.txt 给 LLM 与 coding agent。二者可并存:sitemap 列全站 URL,llms.txt 只列「人类和模型应该先读的十页」。Agent 读 llms.txt 的 token 成本远低于爬整站。
发布静态文档站(VitePress、Docusaurus、MkDocs)时,把 llms.txt 生成进 public/,随 deploy 一起上线。CI 可加一步检查:llms.txt 里的链接返回 200,避免 Agent 阅读踩 404。静态站 rebuild 后若 URL 结构变了,llms.txt 应与 sitemap 同一 PR 更新,别留半套新半套旧。
一句话验收:新人 Agent 能否在三分钟内从 llms.txt 找到「正确的 API 页」,再靠 skill 跑完一次最小发版演练。过不了,就缺层,不是模型不够聪明。
常见问题
只有 llms.txt 够吗?
不够,若你有重复性多步流程。llms.txt 帮 Agent 找到「测试怎么写」,不会帮它「每次 PR 前按团队顺序跑哪三条命令」。后者需要 skill 或 Rules。
只有 skill.md 够吗?
不够,若文档集很大。skill 触发前 Agent 不知道还有哪些参考页没读。大文档库应同时提供 llms.txt 或等价索引,skill 负责编排访问顺序。
和 Cursor Rules 怎么分?
Rules 是持续约束,skill 是按需流程,llms.txt 是公开文档索引。Rules 放「禁止改某目录」,skill 放「怎么发版」,llms.txt 放「官方 doc 链接地图」。三者叠加不冲突。Cursor 的 Project Rules 管编辑器内常驻约束,与文档站根路径的 llms.txt 不在同一层,别混为一个文件。