Communitygithub.com

TheColliery/CoalLedger

面向AI编码代理的文档健康金丝雀套件——监测文档腐化。6+1个金丝雀,通过零依赖的CommonMark+GFM AST引擎检测文档结构;严重性由上下文决定,修复为用户选择,永不自动应用。文档变化但MEMORY.md未更新时会悄悄提醒。属于TheColliery项目的一部分。

CoalLedger 是什么?

CoalLedger是一个专门设计用于AI编码代理(如Claude Code、Cursor、Codex等)的文档健康监测工具。它通过6+1个金丝雀(检查项目)来识别和报告文档中的内容失效问题,即文档随时间推移而过时或错误。其核心引擎是零依赖的CommonMark+GFM AST解析器,能够精确检测文档结构。该工具区分“已验证的腐化”(CONFIRMED)和“仅推测的陈旧”(SUSPECTED),严重性根据上下文动态评估,而非使用固定的严重性映射。修复是选择性的,始终由用户决定是否应用安全修复(如更新版本号或刷新日期),绝不自动修复。此外,它会在文档发生变化但MEMORY.md未同步更新时发出轻微提醒。该工具支持多语言文档,通过结构化方式解析日期格式,避免依赖特定语言。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add TheColliery/CoalLedger

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

文档腐化检测(Doc-Rot)

使用用户的语言回答;保留技术术语、命令、路径和检查ID不变。

查找因时间而过时失效的文档内容。报告已验证的腐化(CONFIRMED);将仅属陈旧的放入推测的腐化(SUSPECTED)。

参数

  • 范围(SCOPE): 指定文件(默认,若给出)| 本会话中触及的文档文件 | 整个仓库的文档 — .md/.mdx/.markdown/.rst/.txt/.adoc/.asciidoc/.org(若文件大于20个,先确认)。
  • 层级(TIER): 快速(Quick)= 仅机械年龄标记(约免费)· 完整(Full)= 语义陈旧判断(付费模式)。默认值来自.coalledger.json的quickVsFull配置;完整模式始终需要单独同意。

年龄标记(机械层——确定性检测)

标记(marker)信号(signal)
版本号字符串文档中提到的版本低于项目当前版本(与版本的权威来源对比,例如清单文件)
日期戳“最后更新”/需重新验证/已验证的日期过于久远或已过期
死亡任务标记无明显生命迹象的 TODO / FIXME / “即将推出” / “尚未”
过时徽章硬编码的状态/版本徽章与仓库当前状态矛盾

检测是确定性的;但标记是否代表腐化并非确定——归档文件上的旧日期没问题,但在安装指南上则不行。

方法

  1. 快速检查(Quick): 按上表收集年龄标记。陈旧≠腐化:单独的标记只放入推测的腐化(SUSPECTED)。
  2. 完整检查(Full): 在上下文中判断每个标记,并寻找无日期的腐化——已更改的界面的过时说明,声称被后续文档取代的声明(实时文档之间的纯粹矛盾属于文档一致性范畴;腐化是时间轴上的问题)。
  3. 确认后才放入已验证的腐化(CONFIRMED): 仅当当前状态与文档矛盾时(版本来源指明更新版本;被引用的界面已消失),发现才视为CONFIRMED。任何推断的内容保持为SUSPECTED。
  4. 通过上下文判断严重性( 绝无固定映射),然后遵循severityFloor:腐烂的安装/安全步骤(读者依赖)为高-严重;过时的徽章或版本提及为中;归档文档中的旧日期为低。

升级边界

一个声明是否曾经为真属于文档根基(doc-grounding)的职责;对高风险声明的正式验证会升级到CoalBoard(/coalboard)(如果该工具已安装)。此金丝雀仅回答“时间是否破坏了它”。

输出

| # | 路径:行号 | 标记 | 证据(当前状态) | 严重性 | 修复 |

仅输出CONFIRMED表格;SUSPECTED(陈旧但未证实)作为单独列表,绝不在主表格中。

报告: 若可调用则调用ReportFindings——file/line必须是指标所在行,不得转述;无法解析的行报告您的最佳猜测,在总结中注明不精确,不得删除。严重性在summary中加前缀(例如[HIGH] …),根据上述按上下文判断严重性的规则,按严重性从高到低排序,SUSPECTED(陈旧但未证实)的verdict: PLAUSIBLE;聊天中仅包含总结行(数量 · SUSPECTED列表 · 超过32项的溢出)+ 修复菜单,不得重申事实。若不可调用 → 保持上表不变。点击“应用修复”表示同意下方“应用安全修复”类别(仅限明确当前值的更新),与修复模式(Fix mode)结合使用——绝不绕过。任何修复轮次后,重新报告相同发现,并附上outcome: fixed/skipped/no_change_needed。

修复模式(用户选择)

在任何互动会话中报告后,您必须通过问题工具呈现此菜单(仅当发现为零或没有用户时跳过)。绝不自动修复实时文档。

  • 应用安全修复: 仅更新那些当前值明确的项(将版本号更新为清单中的版本,根据用户确认刷新日期,根据用户确认删除已弃用的TODO)。每次修复:创建检查点(在git仓库中执行git stash/commit;否则拷贝文件——绝不假设git存在)-> 应用修复 -> 重新读取更改的行。
  • 让我选择: 列出所有发现;用户选择。
  • 仅报告: 退出,不进行任何更改。

绝不自动修复: 重写过时的说明(内容决策)、删除章节、任何您未验证其当前真实性的内容。

多语言支持

年龄标记是语言无关的(版本、日期和徽章在任何散文语言中看起来都一样;日期格式多样——按结构解析,不依赖英文月份名称)。对于处理欠佳的语言,语义判断降级为低置信度标志,绝不产生误报警。

问题报告

若此金丝雀表现异常,请提供选项让用户到https://github.com/TheColliery/CoalLedger/issues提交问题,并附上经用户审核的摘要——绝不自动提交。

相关技能