mcpField
C
coinagerie-triage

coinagerie-triage

github.com/organizzolini开发013 次安装今天更新
代码仓库

关于 coinagerie-triage

这项 skill 面向维护代码库词汇表的开发者,指导诊断 Coinagerie 检查失败并选择合适处理方式。它区分扫描、解析、配置、命令行和目标路径问题,并提醒处理过时术语时保护已有定义。

主要功能

  1. 01区分五类检查失败
  2. 02指导处理缺失术语
  3. 03说明如何安全处理过时术语
  4. 04涵盖格式错误词汇表的修复
  5. 05诊断机器间及缓存差异

适用场景

  1. 01排查词汇表检查失败
  2. 02安全处理重命名或删除的术语
  3. 03解决本地与 CI 扫描结果不一致

安装

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

$npx skills add https://github.com/organizzolini/codebase --skill coinagerie-triage

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

详细介绍

处理 coinagerie 检查失败

失败分为五种,每种都需要不同的处理方式。在打开配置文件之前,先查看发生的是哪一种。

日志内容类型
Found a glossary out of step with the code缺少词条和过时词条
Refused a glossary it cannot parse格式错误的目标
Rejected the configuration配置错误
Rejected the command line本次运行无法使用的标志
Found no glossary destination to check没有 outputs,也没有目标标志

最后三种情况各有一种修复方式:更正配置(coinagerie-configure 技能)、移除冲突的标志(--check 和 --write 不能同时使用,--format 接受 json 或 markdown),或添加目标。

缺少词条

代码使用了词库中没有的词。逐个判断每个词:

这个词是……处理方式
代码库中的真实术语--write 会将其作为词条添加,然后为其编写定义(coinagerie-define)
在任何地方含义都相同的语言关键字或样板文本添加一个 exclude.words 条目,并注明相应原因
没人写过的词头(例如 settings 中的 set)添加一个 fold 条目,将其映射到人们实际使用的词
偶然出现的词:拼写错误或临时名称在代码中重命名
来自非代码库自有词汇的文件为生成文件或 vendored 文件添加一个 exclude.paths glob

要查明词头的来源,请在代码中搜索这个词及其各种形式:复数形式、-ing 和 -ed 形式,以及 camelCase 名称中的组成部分。折叠映射意味着词头可能不会原样出现。

空白词条是检查永远不会收集到的欠账。在添加有含义的词条时,就在同一次修改中为每个词编写定义。

过时词条

词库列出了代码已不再使用的词,而 --write 会将其连同定义一起删除。写入前先查明词条过时的原因:

  • 已重命名。 定义属于新词,而重命名是唯一会丢失手写文本的情况。在任何写入之前,手动将旧词条中的粗体词头改为新词:定义会保留下来,检查也会直接通过,无需写入。如果写入已将其删除,请从版本控制中的词库文件历史记录恢复文本。
  • 有意移除。 执行写入。追踪代码就是设计目的。
  • 被新添加的词语或路径条目排除。 执行写入;删除正是预期结果。
  • 扫描范围变了,而代码没变。 如果修改 include、exclude.paths、检出内容或缺失的构建步骤后出现几十个过时词条,说明扫描集合缩小了。恢复扫描范围,然后重新检查:此时写入会删除扫描范围缩小后无法再看到的所有定义。

每次写入前都要查看过时词条列表。写入后,运行 --check 并确认检查通过。

无法解析的词库

错误会指出文件名;如果是 Markdown 格式错误,还会指出行号;不会写入任何内容。可能的原因包括:块中有一行既不是项目符号,也不是缩进续行;同一个词列出了两次;冒号后直接跟了文本,中间没有空格;锚点缺失、重复或顺序颠倒;JSON 无效;或者值不是字符串。手动修复指出的行,其周围的所有定义都会保留。

为了绕过错误而删除整个块或文件,会导致下一次写入从头开始,所有定义都变成空白。

在不同机器上检查结果不一致

  • 本地通过,CI 中失败。 扫描的集合不同。可能的原因:本地存在而 CI 中忽略的生成文件夹或构建文件夹,反之亦然;尚未提交的术语表或配置;工作目录不同。分别运行不带参数的 coinagerie --format json 并进行比较。
  • 编辑后,缓存的通过结果仍然有效。 在任务运行器的缓存中,配置从其他位置读取的文件(例如父级术语表)必须声明为该检查的输入。
  • 父级术语表更改后,某个词又被列为缺失。 如果子级的 exclude.words 读取父级的词条,父级排除的所有词都会被列出。请有意将定义下移,或恢复父级中的词条。

将冲动转化为决策

冲动应采取的做法
排除所有缺失词条,让检查通过根据上表逐一决定;被排除的词条将失去定义
扩大 exclude.paths 的范围,直到没有缺失项只排除不属于代码库自身词条的文件
运行 --write 后继续查看过时列表以查找重命名,并先编辑每个重命名的主词条
删除整个代码块并重新生成修复错误指出的那一行
把通过的检查视为完成检查通过并不代表可以留空定义;请为新增内容编写定义

评论

支持 Markdown