mcpField
A
absolute-docs

absolute-docs

github.com/maddhruv开发223155 次安装2 天前更新
代码仓库

关于 absolute-docs

absolute-docs 是面向编写、改进或审查项目文档的技能,使用 Diátaxis 框架区分文档目的,并依据代码库核验事实。正式撰写前须先获批大纲。

主要功能

  1. 01按 Diátaxis 分类文档
  2. 02编写和改进文档
  3. 03审查文档结构
  4. 04依据源码核验内容
  5. 05撰写前要求批准大纲

适用场景

  1. 01编写教程或参考页面
  2. 02改写现有 README
  3. 03检查文档站点的内容缺口
  4. 04核验文档陈述是否符合代码

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/maddhruv/absolute --skill absolute-docs

安装后在 Claude Code 中输入/absolute-docs确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
developer-docs.md
docs-stacks.md
explanation.md
how-to-guides.md
reference.md
style-and-voice.md
tutorials.md

详细介绍

请以 📚 表情符号作为首次回复的开头。

Absolute Documentations:以 Diátaxis 为指导的文档

Absolute Documentations 将“写点文档”转化为读者真正能用上的文档。它产出的每份文档都只服务于一种读者需求,由 Diátaxis 框架确定,采用项目自身的语气和文档技术栈,并在发布前根据实际代码库进行验证。它可以编写新文档、按照所属象限的标准重写现有文档,也可以审查整个文档站点,找出结构性问题。

它绝不会在大纲获得批准前撰写完整文档,也绝不会记录未经代码验证的行为。


Diátaxis 指南针

每份文档都只回答一种读者需求。写作前先分类——混合不同象限的页面无法满足任何人的需求。

服务于读者的学习需求服务于读者的工作需求
实践步骤教程——一堂课。引导新手完成一次保证成功的体验。操作指南——一份菜谱。帮助熟练用户实现特定目标。
理论知识说明——一场讨论。加深对某个主题的理解,提供背景和原因。参考——一本词典。全面、中立地陈述系统机制的事实。

分类时,请问自己两个问题:

  1. 读者是在学习(掌握技能),还是在工作(应用技能)?
  2. 读者需要行动(遵循步骤),还是认知(吸收知识)?
读者情境象限
“我是新手,给我展示一下这是什么样的”教程
“我了解基础知识,需要完成 X”操作指南
“这个选项/端点/标志的具体作用是什么?”参考
“它为什么这样工作?更大的背景是什么?”说明

最大的忌讳是混合。 教程中途停下来讲解架构,会让学习者失去方向。参考页面一旦开始给出建议,就不再是可信的纯粹描述。当你想要混合内容时,这意味着应该链接到其他象限,而不是将内容合并在一起。


模式

根据请求判断模式:

用户说模式
“为 X 编写教程/指南/README/文档”,“记录此功能”编写
“改进/重写/整理此文档”,“这个 README 写得很差”改进
“审查我们的文档”,“我们的文档一团糟”,“重构文档”审查

编写模式

第 1 步——侦察(先看代码库,再提问题)

在询问用户任何问题之前,先了解仓库所能提供的一切信息:

  • 检测文档技术栈(参见下方的技术栈检测),如果要编写站点页面,则加载 references/docs-stacks.md。
  • 阅读现有文档——了解语气、术语、标题风格、前置元数据架构、侧边栏/导航结构,以及各象限内容所在位置。
  • 阅读要记录的代码——了解公共 API、实际选项名称、实际默认值和实际错误消息。代码才是事实来源,而不是你对类似工具的记忆。
  • 检查项目元数据——从 package.json/pyproject/go.mod 中确认实际名称、版本、安装命令和支持的运行环境。
第 2 步——需求确认

在拟定任何大纲之前,必须明确以下四项内容。尽可能根据侦察结果回答;仅询问仓库无法解答的问题,每次只问一个(如可用则使用 AskUserQuestion),并始终提供推荐答案:

  1. 文档类型——属于哪个 Diátaxis 象限(或哪种开发者文档形式)。
  2. 目标受众——新手终端用户?资深运维人员?贡献者?可以假设他们已经了解哪些内容?
  3. 读者目标——阅读后,读者将能够做什么?
  4. 范围——明确包含哪些内容,同样重要的是,明确排除哪些内容。
第 3 步——大纲审核关卡(硬性关卡)

在撰写任何正文之前,先提出:

  • 文档的存放路径,须符合该技术栈的路由惯例
  • 标题层级大纲,每个章节用一行说明其内容
  • 每个页面所属的象限(多页面请求须为每个页面指定一个象限)
  • 所需的侧边栏/导航更改

停下并等待明确批准。 在用户确认大纲之前,不要撰写文档。这是工作流中唯一的审核关卡——此前的所有内容都容易更改,此后的更改成本则很高。

第 4 步——撰写
  • 遵循对应象限的操作指南(从 references/ 加载匹配的文件)。
  • 按照项目既定的语气撰写;遵循 references/style-and-voice.md。
  • 使用该技术栈的组件和 frontmatter(参见 references/docs-stacks.md);未检测到技术栈时使用纯 Markdown。
  • 对每项事实陈述和代码块应用下方的准确性规范。
第 5 步——自我审查

根据下方的评分标准为草稿打分。修正所有低于 4 分的内容,再提交。提交文档时,附上一段总结,说明撰写了什么、文档存放在哪里,以及进行了哪些导航更改。


改进模式

对于“修复此 README”/“改进此页面”:

  1. 分类——根据页面的位置、标题和内容,判断其预期所属象限。如果页面试图兼顾两种目的,请指出这一点——这通常就是根本问题。
  2. 对照象限标准(加载对应的参考操作指南)。列出具体问题:缺少章节、用途混杂、陈旧的说法、有问题的代码片段、受众层级不当。
  3. 保留前先核实:根据当前代码检查现有文档中的每个代码片段、选项名称和版本说明。陈旧的事实是旧文档中最常见的问题。
  4. 重写,保留所有准确且体现项目特色的内容。不要把项目的语气改成泛泛的文档腔。
  5. 单页改进无需审核关卡。如果修复需要拆分或移动页面,这属于结构调整——先提出移动方案,并在获得批准后再进行。

审核模式

对于“我们的文档一团糟”/“审核文档”:

  1. 盘点——列出每个文档页面(站点页面、README、docs/ 文件夹),并注明路径和标题。
  2. 分类——为每个页面指定其主要象限;标记用途混杂(最常见的问题)、位置不当、重复或未纳入导航的页面。
  3. 缺口图——根据项目的主要用户旅程,绘制四象限网格并标出缺失内容。典型项目往往只有参考文档;入门教程通常是价值最高的缺口。
  4. 报告——使用表格列出发现:页面 → 当前状态 → 象限 → 操作(保留/重写/拆分/合并/移动/删除),并按对读者的影响排序。
  5. 审核关卡——结构调整会移动文件并导致链接失效。先提交方案图,获得批准后再执行,并一并处理重定向和链接更新。

审核交付物是报告和方案图。执行方案是后续工作,须由用户明确批准。

技术栈检测

先读取缓存的配置:如果 .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-*FumadocsMDX + fumadocs-ui 组件
docusaurus.config.*DocusaurusMDX + admonitions(:::note)
使用 @astrojs/starlight 的 astro.config.*StarlightMDX/Markdoc + Starlight 组件
mkdocs.ymlMkDocs(通常使用 Material)Markdown + admonitions(!!! note)
.vitepress/config.*VitePressMarkdown + 容器(::: tip)
mint.json / docs.json(Mintlify)MintlifyMDX + Mintlify 组件
以上均无纯 MarkdownGitHub 风格 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

准确性规范

会误导人的文档比没有文档更糟糕。撰写每份文档时:

  1. 代码片段必须来自代码库,不能凭记忆编写。如果文档展示了 API 调用,就在源代码中找到该 API,并复制其真实签名。如果片段能在当前环境中运行,就运行它。
  2. 名称必须准确——标志、选项、环境变量、端点和文件路径都要从源代码中复制,不能改述。--dry-run 和 --dryrun 是不同的产品。
  3. 默认值和版本要查阅,不要回忆——撰写时从代码和清单文件中读取。
  4. **绝不记录不存在的功能。**如果用户要求记录某项功能,而你在代码中找不到它,就停止并说明情况——不要撰写描述尚未实现功能的文档。
  5. 链接必须有效——每个内部链接都指向现有文件或路由;每个锚点都与实际标题匹配。
  6. 输出必须真实——如果文档写着“你应该看到 X”,那么命令实际打印的内容就必须是 X。

样式核心

完整指南见 references/style-and-voice.md。以下规则绝不例外:

  1. 每个句子只表达一个想法。每个段落只服务一个目的。每页只聚焦一个象限。
  2. 以“你”称呼读者(教程可以用“我们”来描述共同的探索过程)。
  3. 指令使用祈使语气:“运行构建”,而不是“你可以运行构建”。
  4. 禁用居高临下的词语:只需、仅仅、容易、显然、当然。如果事情很简单,读者就不会来这里。
  5. 使用现在时和主动语态。“服务端返回 404”,而不是“将返回 404”。
  6. 每个代码块都要声明语言。文件内容代码块要注明文件名。
  7. 标题应是便于浏览的陈述,而不是标签:“配置 webhook”胜过“配置”。
  8. 定义术语后,就始终如一地使用它——不要为了表达多样而在描述同一事物时交替使用“配置文件”“设置文件”和“清单”。
  9. 警告要放在危险步骤之前,绝不能放在之后。
  10. 删除所有服务于作者而非读者的句子(道歉、铺垫、营销)。

自我审查评分标准

提交前按每个维度以 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 — 在编写文档前整理代码。

在相关场景下建议使用这些命令;它们始终可用(属于同一技能,无需额外安装)。

评论

支持 Markdown