用途:把评审者本需手工统计的限制变成构建失败项,再补写仅剩的一页文字约定。两条原则贯穿:每个门禁都是 error(warn 等于永久豁免,暂时达不到的上限只做棘轮 ratchet,不降级);规则名必须对照已安装工具现场解析,不凭记忆。
主要能力:先检测工具链(已有 linter 及配置、版本、包管理器与脚本、pre-commit、CI、rules/ 目录),无 linter 则装生态默认并最小配置。要门禁的意图包括:函数体长度 50 行、认知/圈复杂度 15、位置参数最多 3 个、禁止嵌套三元、禁止 any/退出类型、禁止强转与 force-unwrap 及抑制注释、returning 分支后禁止 else、联合类型 switch 非穷尽报错、未用变量与导入报错、跨文件重复块阈值、文件约 150 行、未用导出(模块死公共面)、绕过模块公共入口或跨层的导入、模块间循环依赖、提交的 focused/skipped 测试。1–9 属普通 lint 规则,10–15 需专用工具。
使用方式:按语言逐条把意图解析为真实规则名并验证会触发(Biome/ESLint/oxlint/Ruff/golangci-lint/SwiftLint/clippy/detekt/RuboCop/.NET 各有验证命令);无法验证的规则不写入,记为 prose-only。将门禁写成 manifest 中一个脚本(默认 quality),追加到现有 pre-commit(只查暂存文件,除非原钩子本就是全仓)、并按模板 quality-gates.yml 接入 CI,解析占位符;最后把 templates/house.md 落到 rules/house.md 并填写占位符,在现有项目文档(AGENTS.md)追加 Rules and gates 小节,含可运行门禁命令、实际门禁内容、豁免文件列表、新违规须修复或棘轮、指向 rules/house.md。
适用场景与限制:适用于已有或新建代码仓库的质量门禁落地,特别是存量代码库(先计数,能修则修,否则按 KIND/RATCHET 记录豁免并只允许缩减)。限制:每语言一套门禁;跨语言与推理类判断只能写进文字;缺意图不等于要补(如编译器已管未用变量则 9 记 n/a);无法验证的规则不配置;模板中未解析的占位符会让 CI 失败;每项能力细节以资料为准,其余暂未提供。