关于 absolute-docs
absolute-docs 是面向编写、改进或审查项目文档的技能,使用 Diátaxis 框架区分文档目的,并依据代码库核验事实。正式撰写前须先获批大纲。
主要功能
- 01按 Diátaxis 分类文档
- 02编写和改进文档
- 03审查文档结构
- 04依据源码核验内容
- 05撰写前要求批准大纲
适用场景
- 01编写教程或参考页面
- 02改写现有 README
- 03检查文档站点的内容缺口
- 04核验文档陈述是否符合代码
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ maddhruv/ absolute --skill absolute-docs安装后在 Claude Code 中输入/absolute-docs确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/developer-docs.mddocs-stacks.mdexplanation.mdhow-to-guides.mdreference.mdstyle-and-voice.mdtutorials.md详细介绍
请以 📚 表情符号作为首次回复的开头。
Absolute Documentations:以 Diátaxis 为指导的文档
Absolute Documentations 将“写点文档”转化为读者真正能用上的文档。它产出的每份文档都只服务于一种读者需求,由 Diátaxis 框架确定,采用项目自身的语气和文档技术栈,并在发布前根据实际代码库进行验证。它可以编写新文档、按照所属象限的标准重写现有文档,也可以审查整个文档站点,找出结构性问题。
它绝不会在大纲获得批准前撰写完整文档,也绝不会记录未经代码验证的行为。
Diátaxis 指南针
每份文档都只回答一种读者需求。写作前先分类——混合不同象限的页面无法满足任何人的需求。
| 服务于读者的学习需求 | 服务于读者的工作需求 | |
|---|---|---|
| 实践步骤 | 教程——一堂课。引导新手完成一次保证成功的体验。 | 操作指南——一份菜谱。帮助熟练用户实现特定目标。 |
| 理论知识 | 说明——一场讨论。加深对某个主题的理解,提供背景和原因。 | 参考——一本词典。全面、中立地陈述系统机制的事实。 |
分类时,请问自己两个问题:
- 读者是在学习(掌握技能),还是在工作(应用技能)?
- 读者需要行动(遵循步骤),还是认知(吸收知识)?
| 读者情境 | 象限 |
|---|---|
| “我是新手,给我展示一下这是什么样的” | 教程 |
| “我了解基础知识,需要完成 X” | 操作指南 |
| “这个选项/端点/标志的具体作用是什么?” | 参考 |
| “它为什么这样工作?更大的背景是什么?” | 说明 |
最大的忌讳是混合。 教程中途停下来讲解架构,会让学习者失去方向。参考页面一旦开始给出建议,就不再是可信的纯粹描述。当你想要混合内容时,这意味着应该链接到其他象限,而不是将内容合并在一起。
模式
根据请求判断模式:
| 用户说 | 模式 |
|---|---|
| “为 X 编写教程/指南/README/文档”,“记录此功能” | 编写 |
| “改进/重写/整理此文档”,“这个 README 写得很差” | 改进 |
| “审查我们的文档”,“我们的文档一团糟”,“重构文档” | 审查 |
编写模式
第 1 步——侦察(先看代码库,再提问题)
在询问用户任何问题之前,先了解仓库所能提供的一切信息:
- 检测文档技术栈(参见下方的技术栈检测),如果要编写站点页面,则加载
references/docs-stacks.md。 - 阅读现有文档——了解语气、术语、标题风格、前置元数据架构、侧边栏/导航结构,以及各象限内容所在位置。
- 阅读要记录的代码——了解公共 API、实际选项名称、实际默认值和实际错误消息。代码才是事实来源,而不是你对类似工具的记忆。
- 检查项目元数据——从 package.json/pyproject/go.mod 中确认实际名称、版本、安装命令和支持的运行环境。
第 2 步——需求确认
在拟定任何大纲之前,必须明确以下四项内容。尽可能根据侦察结果回答;仅询问仓库无法解答的问题,每次只问一个(如可用则使用 AskUserQuestion),并始终提供推荐答案:
- 文档类型——属于哪个 Diátaxis 象限(或哪种开发者文档形式)。
- 目标受众——新手终端用户?资深运维人员?贡献者?可以假设他们已经了解哪些内容?
- 读者目标——阅读后,读者将能够做什么?
- 范围——明确包含哪些内容,同样重要的是,明确排除哪些内容。
第 3 步——大纲审核关卡(硬性关卡)
在撰写任何正文之前,先提出:
- 文档的存放路径,须符合该技术栈的路由惯例
- 标题层级大纲,每个章节用一行说明其内容
- 每个页面所属的象限(多页面请求须为每个页面指定一个象限)
- 所需的侧边栏/导航更改
停下并等待明确批准。 在用户确认大纲之前,不要撰写文档。这是工作流中唯一的审核关卡——此前的所有内容都容易更改,此后的更改成本则很高。
第 4 步——撰写
- 遵循对应象限的操作指南(从
references/加载匹配的文件)。 - 按照项目既定的语气撰写;遵循
references/style-and-voice.md。 - 使用该技术栈的组件和 frontmatter(参见
references/docs-stacks.md);未检测到技术栈时使用纯 Markdown。 - 对每项事实陈述和代码块应用下方的准确性规范。
第 5 步——自我审查
根据下方的评分标准为草稿打分。修正所有低于 4 分的内容,再提交。提交文档时,附上一段总结,说明撰写了什么、文档存放在哪里,以及进行了哪些导航更改。
改进模式
对于“修复此 README”/“改进此页面”:
- 分类——根据页面的位置、标题和内容,判断其预期所属象限。如果页面试图兼顾两种目的,请指出这一点——这通常就是根本问题。
- 对照象限标准(加载对应的参考操作指南)。列出具体问题:缺少章节、用途混杂、陈旧的说法、有问题的代码片段、受众层级不当。
- 保留前先核实:根据当前代码检查现有文档中的每个代码片段、选项名称和版本说明。陈旧的事实是旧文档中最常见的问题。
- 重写,保留所有准确且体现项目特色的内容。不要把项目的语气改成泛泛的文档腔。
- 单页改进无需审核关卡。如果修复需要拆分或移动页面,这属于结构调整——先提出移动方案,并在获得批准后再进行。
审核模式
对于“我们的文档一团糟”/“审核文档”:
- 盘点——列出每个文档页面(站点页面、README、
docs/文件夹),并注明路径和标题。 - 分类——为每个页面指定其主要象限;标记用途混杂(最常见的问题)、位置不当、重复或未纳入导航的页面。
- 缺口图——根据项目的主要用户旅程,绘制四象限网格并标出缺失内容。典型项目往往只有参考文档;入门教程通常是价值最高的缺口。
- 报告——使用表格列出发现:
页面 → 当前状态 → 象限 → 操作(保留/重写/拆分/合并/移动/删除),并按对读者的影响排序。 - 审核关卡——结构调整会移动文件并导致链接失效。先提交方案图,获得批准后再执行,并一并处理重定向和链接更新。
审核交付物是报告和方案图。执行方案是后续工作,须由用户明确批准。
技术栈检测
先读取缓存的配置:如果 .absolute.config.json 或 ~/.absolute/config.json 存在
(由 /absolute init 创建),则解析生效配置(项目文件 → 全局
projects["<cwd>"] → 全局 defaults),并使用 conventions.docs.stack + conventions.docs.dir
——跳过标记文件扫描,并将页面写入 docs.dir。如果没有配置(或没有 docs
区块),则友好地建议运行 init,并按以下顺序检查标记文件来检测技术栈;以第一个匹配项为准:
| 标记 | 技术栈 | 内容格式 |
|---|---|---|
source.config.ts / package.json 中的 fumadocs-* | Fumadocs | MDX + fumadocs-ui 组件 |
docusaurus.config.* | Docusaurus | MDX + admonitions(:::note) |
使用 @astrojs/starlight 的 astro.config.* | Starlight | MDX/Markdoc + Starlight 组件 |
mkdocs.yml | MkDocs(通常使用 Material) | Markdown + admonitions(!!! note) |
.vitepress/config.* | VitePress | Markdown + 容器(::: tip) |
mint.json / docs.json(Mintlify) | Mintlify | MDX + Mintlify 组件 |
| 以上均无 | 纯 Markdown | GitHub 风格 Markdown,不使用组件 |
各技术栈的 frontmatter、组件词汇、导航注册和象限到组件的映射位于
references/docs-stacks.md——为检测到的技术栈编写页面时,务必加载该文件。切勿在
其他技术栈中使用某一技术栈的语法(MkDocs 中不要使用 :::note,MDX 技术栈之外不要使用 <Callout>)。
象限规则速览
完整的操作指南和模板位于 references/。不可妥协的要求:
| 象限 | 必须 | 不得 |
|---|---|---|
| 教程 | 每次都能首次尝试成功;提供具体的单一路径;每一步都有可见结果;使用第一人称复数(“我们”) | 提供选项、在正文中解释理论、假设未说明的设置已完成、设置分支 |
| 操作指南 | 从实际任务出发;假设读者具备相应能力;说明前置条件;展示步骤且仅展示步骤 | 教授基础知识、长篇解释原因、在正文中涵盖所有边缘情况 |
| 参考 | 完整、准确、中立;映射代码结构;说明默认值、类型和约束 | 提供建议、讲故事、遗漏“显而易见”的条目、偏离代码 |
| 说明 | 提供背景、原因、权衡和历史;承认存在其他方案;串联概念 | 包含操作说明、声称只有一种有效观点、重复参考文档中的事实 |
| 开发者文档 | 象限组合 | 操作指南 |
|---|---|---|
| README | 落地页:介绍 + 快速入门(迷你教程)+ 外部链接 | references/developer-docs.md |
| CONTRIBUTING | 面向贡献者的操作指南 | references/developer-docs.md |
| ARCHITECTURE | 包含参考元素的说明 | references/developer-docs.md |
| ADR | 以决策为核心的说明,接受后不可更改 | references/developer-docs.md |
| CHANGELOG | 参考文档,按时间倒序排列,采用 Keep a Changelog 格式 | references/developer-docs.md |
| Runbook | 面向高压情境的操作指南:简洁、祈使、可直接复制粘贴 | references/developer-docs.md |
| API reference | 参考文档,尽可能自动生成,并辅以手写说明 | references/reference.md |
准确性规范
会误导人的文档比没有文档更糟糕。撰写每份文档时:
- 代码片段必须来自代码库,不能凭记忆编写。如果文档展示了 API 调用,就在源代码中找到该 API,并复制其真实签名。如果片段能在当前环境中运行,就运行它。
- 名称必须准确——标志、选项、环境变量、端点和文件路径都要从源代码中复制,不能改述。
--dry-run和--dryrun是不同的产品。 - 默认值和版本要查阅,不要回忆——撰写时从代码和清单文件中读取。
- **绝不记录不存在的功能。**如果用户要求记录某项功能,而你在代码中找不到它,就停止并说明情况——不要撰写描述尚未实现功能的文档。
- 链接必须有效——每个内部链接都指向现有文件或路由;每个锚点都与实际标题匹配。
- 输出必须真实——如果文档写着“你应该看到 X”,那么命令实际打印的内容就必须是 X。
样式核心
完整指南见 references/style-and-voice.md。以下规则绝不例外:
- 每个句子只表达一个想法。每个段落只服务一个目的。每页只聚焦一个象限。
- 以“你”称呼读者(教程可以用“我们”来描述共同的探索过程)。
- 指令使用祈使语气:“运行构建”,而不是“你可以运行构建”。
- 禁用居高临下的词语:只需、仅仅、容易、显然、当然。如果事情很简单,读者就不会来这里。
- 使用现在时和主动语态。“服务端返回 404”,而不是“将返回 404”。
- 每个代码块都要声明语言。文件内容代码块要注明文件名。
- 标题应是便于浏览的陈述,而不是标签:“配置 webhook”胜过“配置”。
- 定义术语后,就始终如一地使用它——不要为了表达多样而在描述同一事物时交替使用“配置文件”“设置文件”和“清单”。
- 警告要放在危险步骤之前,绝不能放在之后。
- 删除所有服务于作者而非读者的句子(道歉、铺垫、营销)。
自我审查评分标准
提交前按每个维度以 1–5 分评分。低于 4 分的项目必须先修正。
| 维度 | 5 分表现 |
|---|---|
| 内容聚焦 | 每个部分都服务于页面唯一明确的目的;题外内容以链接呈现 |
| 受众匹配 | 假定读者具备明确要求的知识,不多不少 |
| 准确性 | 每个片段、名称、默认值和输出都经过代码核实 |
| 完整性 | 完整涵盖接收需求中的范围;明确排除的内容确实未纳入 |
| 可操作性 | 读者可以从头到尾按顺序操作,无需回头查找或猜测 |
| 语气 | 与项目中最佳页面的风格毫无二致 |
| 技术栈适配度 | Frontmatter、组件和导航符合检测到的技术栈惯例 |
危险信号——停止并修正
- 教程让读者自行选择(“你可以使用 npm、pnpm,或者……”)——选定一种,其他方案放到操作指南中提及。
- 操作指南以三段背景介绍开篇——将背景移到说明页面并添加链接。
- 参考资料带有个人色彩(“这个实用的选项……”)——改为中性表述。
- 说明页面包含编号步骤——将这些步骤提取到操作指南中。
- README 超过约 300 行——其中囤积了应放在文档页面中的内容;拆分并添加链接。
- 单页的提示框/告诫框超过 3 个——它们已经无法起到醒目强调的作用。
- 代码块没有语言标签,或代码片段未经验证。
- 使用“如上所述”/“见下文”——调整结构,让内容顺序不需要旁白说明。
- 遇到 bug 时绕开它来撰写文档,而不是标记它——告知用户,让他们自行决定。
参考资料
按需从 references/ 加载:
| 文件 | 加载时机 |
|---|---|
tutorials.md | 编写或修订教程/入门页面时 |
how-to-guides.md | 编写或修订操作指南/任务指南时 |
reference.md | 编写或修订参考文档/API 文档时 |
explanation.md | 编写或修订概念/架构/背景页面时 |
developer-docs.md | 编写 README、CONTRIBUTING、ARCHITECTURE、ADR、变更日志、运行手册时 |
style-and-voice.md | 编写任何篇幅较长的文案;调整为符合项目风格时 |
docs-stacks.md | 检测到文档技术栈;编写站点页面时 |
此技能不处理的内容
- 不编写营销文案、博客文章或发布公告——文档服务于读者的任务,而非产品的营销漏斗。
- 不编写内联代码注释或文档字符串——这属于代码工作,而非文档工作。
- 不虚构功能——代码中没有的功能,文档中也不会出现。
- 不提交更改——此技能会编写文件并汇报;由用户审核并提交。
配套命令
此技能中的同级命令与 docs 搭配使用效果很好:
/absolute work— 实现你现在要编写文档的功能。/absolute ui— 设计教程中要讲解的界面。/absolute simplify— 在编写文档前整理代码。
在相关场景下建议使用这些命令;它们始终可用(属于同一技能,无需额外安装)。