开发与工程 linterstatic-analysisdocumentation-syncpre-commitrust-clicode-driftkeep-sortedci-integration

BlockWatch

用 <block> 标注把代码与文档、配置绑定在一起,一旦其中一方漂移,CI 或 pre-commit 立即失败。

FollowSkills 评估 · FSRS-2.0
推荐
67/ 100 五分制 3.4 / 5
1 2 3 4 5 6
1信任安全18 / 25 · 3.6/5

技能本身是文档型指令,不索取权限;核心校验器均为本地确定性检查。check-ai 会把块内容发送到外部 LLM API(需 BLOCKWATCH_AI_API_KEY),文档已明确披露其非确定性;check-lua 在 fork PR 场景下的沙箱/非沙箱区分在 blockwatch.yml 中有明确信任模型。扣分:check-lua 允许运行文件内嵌脚本,安全依赖工具侧实现且本仓库内未完整审计;API 密钥经环境变量传递的完整数据流说明有限。

2可靠稳定14 / 20 · 3.5/5

文档内部自洽,覆盖了大量边界情况(diff 前缀、stdin 空/着色、keep-sorted-format 的硬错误、line-pattern 引号陷阱)并给出可诊断的失败反馈;仓库含 CI(blockwatch.yml、CodeQL)与测试数据(tests/testdata),支持高于纯静态锚点的评分。扣分:静态审查未执行,关键路径复现与失败输出质量未经独立验证;check-ai 结果本身非确定。

3适用触发12 / 15 · 4.0/5

触发条件写得非常精确(frontmatter description 枚举场景与标签类型),明确适用边界(仅在已采用 BlockWatch 的项目中使用、高价值才加块),三种使用场景清晰。扣分:check-ai 依赖境外 LLM API,在中国大陆网络下不可用或受限;Lua 校验器对使用者的编程能力有隐性门槛。

4规范维护11 / 15 · 3.7/5

MIT 许可清晰,版本化(Cargo.toml 0.5.3、pre-commit rev 指引)、安装说明(brew/cargo/预编译二进制)、已知限制章节诚实完整,文档分层(SKILL.md → docs/validators)。扣分:发布者身份未经验证、无明确的维护责任与更新路径承诺;本次提供的 SKILL.md 在 GitHub Actions 章节处截断,完整性核验受限;无变更日志证据。

5有效结果7 / 15 · 2.3/5

技能解决真实问题(代码与文档漂移),与手动方式相比边际价值明确:增量注释成本低、CI 集成近乎即时,README 中的实际 JSON 输出示例展示可直接可用的结果。扣分:静态审查无法验证实际输出可用性;check-ai 结果需人工复核,部分价值依赖项目已存在的注释。

6证据核验5 / 10 · 2.5/5

仓库内有交叉印证材料:README 使用示例与输出、CI 工作流、测试数据文件、Cargo.toml 依赖清单、crates.io 徽章。扣分:静态审查未能独立复现测试,未见到实际通过的 CI 运行记录或完整测试套件源码,证据类型仍以声明与局部材料为主。

证据充分度: 评估于 2026年9月10日 审查版本 8feed80e2278
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
使用前请注意
  • check-ai 会把被扫描块的内容发送到外部 LLM API,勿将其用于含敏感信息的块,且其结果不稳定、需人工复核;该功能在中国大陆网络下可能无法访问。
  • check-lua 会执行扫描文件内嵌的脚本;在处理不可信代码(如 fork PR)时务必使用沙箱模式,本审查未独立验证其沙箱强度。
  • 发布者身份未经注册表验证;SKILL.md 文件在证据中似乎被截断,安装/CI 章节的完整性未完全核验。
  • 本评分为静态源码审查,未执行任何命令;请先在隔离环境中运行 cargo test 与示例验证后再采用。
查看完整评分方法 →

这个 Skill 能做什么,适合哪些场景?

BlockWatch 是一个用 Rust 编写、语言无关的 linter,通过在注释里声明 HTML 风格的 <block> 标签来执行规则,无需任何配置文件。它能检测代码与其文档/配置之间的共变关系(affects)、跨文件数值一致性(same-as),以及列表排序、去重、行格式和行数等本地约束。支持 33 种语言,通过读取 git diff 可以只校验被改动的块,使 pre-commit 和 CI 校验几乎瞬时完成。仓库自带的 Agent Skill 教 AI 代理何时添加块、如何遵守已有块并自行验证改动。

扫描源码注释中的 <block ...> 标签并执行其声明的规则:keep-sorted/keep-unique 检查列表排序与去重;affects 在 diff 中要求被引用的命名块同步修改;same-as 比较两个块的实际值是否一致(无需 diff);line-pattern、line-count 强制行级格式与数量;check-ai 用 LLM 执行自然语言规则(需 API key),check-lua 运行自定义 Lua 脚本。可直接运行校验全树,或用 git diff --patch | blockwatch --diff --only-changed 只校验改动涉及的块;blockwatch list 以 JSON 输出所有块。支持 --suppress 抑制违规、SARIF 输出、severity 分级。

  1. 维护多语言代码库的开发者:枚举新增变体时强制 README 中的语言列表同步更新。
  2. 团队负责人:把'请排序一下'这类 review 意见前置为 keep-sorted/keep-unique 自动检查。
  3. 配置敏感项目:保证代码中的端口、环境变量与 README 表格、manifest 中的数值一致(same-as)。
  4. 接入 pre-commit 或 GitHub Actions 的项目:只校验 diff 涉及的块,保持检查近瞬时。
  5. 已有代码库的首次批量标注:让代理扫描列表、枚举、常量并补齐最小化块标签。
  6. 使用 check-lua 的维护者:为正则表达不了的领域规则编写自定义校验脚本。

这个 Skill 有哪些优点和局限?

优点
  • 语言无关,支持 33 种语言,无配置文件,全部通过注释标签和 CLI 参数表达。
  • 基于 diff 的 --only-changed 模式使校验接近瞬时,适合 pre-commit 和 CI。
  • 确定性校验器(排序、去重、模式、数量)免费快速,无需 API key;check-ai 仅作兜底。
  • 支持 SARIF 输出、severity 分级、违规抑制,便于渐进式接入已有代码库。
局限
  • 删除块标签会静默删除其规则,运行仍通过;只有指向该块的引用才会报错。
  • 无法放注释的文件(JSON、CSV、.env)只能用整文件级 affects 链接。
  • 不支持的扩展名被静默跳过,需用 --verbosity summary 确认实际读取的文件数。
  • check-ai 依赖网络与 API key,且同一块可能一次通过一次失败,结果不稳定。
  • 仅 error 级别会使退出码为 1;diff 需带 Git 标准路径前缀,设置了 diff.noprefix 的仓库需加 --default-prefix --no-relative。

如何安装这个 Skill?

先安装 CLI:brew install mennanov/blockwatch/blockwatchcargo install blockwatch(也有预编译二进制)。对 Claude Code:/plugin marketplace add mennanov/blockwatch 然后 /plugin install blockwatch@blockwatch。Cursor、Copilot、Codex 等其他安装方式见仓库 docs/agents.md(具体步骤未在本源中列出)。

如何使用这个 Skill?

在编写或修改代码时,若内容命中块的价值目录(如需保持排序的列表、与文档共变的枚举),当场在注释中加入对应标签,例如在 Python 列表两侧加 # <block keep-sorted keep-unique> / # </block>。验证:git diff --patch | blockwatch --diff --only-changed。首次接入项目:用 rg/grep 找候选位置,加标签后运行 blockwatch list 确认解析、再跑 blockwatch 确认全树通过,然后按仓库示例配置 pre-commit 钩子或 mennanov/blockwatch-action@v1 的 GitHub Actions 工作流。编辑已含块的文件时,绝不能删除块标签,且必须遵守 affects 等指令。

这个 Skill 与同类方案有什么区别?

与 keep-sorted 这类只做单文件格式检查的 linter 不同,BlockWatch 的核心差异在于跨文件的共变(affects)与数值一致性(same-as)校验——它强制代码、文档和配置一起变动,而不是仅在 review 中被人肉发现。

常见问题

使用它有额外成本吗?
确定性校验器(keep-sorted、affects、line-pattern 等)完全本地、免费。只有 check-ai 需要设置 BLOCKWATCH_AI_API_KEY 并按块发起网络调用,因此文档建议优先用确定性校验器。
在已有不一致的旧代码上加标签会怎样?
先加标签,再运行裸 `blockwatch` 全树扫描,找出落在已不一致内容上的标签并修复;增量标注配合 --diff --only-changed 不会追溯失败无关代码。
它需要什么权限和运行环境?
需要能运行 blockwatch CLI 和 git(读取 diff)。纯本地运行无需网络;check-ai 例外。项目使用该工具的意图由已存在的 <block> 标签或已安装的 skill 表明,不应向未使用的项目添加块。
如果 check 失败了怎么办?
读取违规消息,修复排序/重复/格式/同步问题后重跑直到通过;可用 --suppress FILE[:BLOCK[:VALIDATOR[:HASH]]] 在不改源码的情况下把特定违规排除出退出码。

相关 Skills