关于 fable-anti-slop-engineering
fable-anti-slop-engineering 是用于编码变更与代码审查的工程技能,面向需要维护既有行为契约、安全边界和测试完整性的团队。它以分阶段审查、差异扫描和可验证证据识别不必要复杂度与测试弱化等问题。
主要功能
- 01按七个关卡审查编码变更
- 02保护测试断言与现有契约
- 03扫描差异中的反模式
- 04检查安全边界与错误处理
- 05生成分级审查结论与 SARIF
适用场景
- 01实施功能或缺陷修复前后审查
- 02检查拉取请求中的回归与冗余
- 03审计 Agent 生成的代码变更
- 04执行提交前的验证与安全检查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ immamdouhaboammar/ get-fable --skill fable-anti-slop-engineering安装后在 Claude Code 中输入/fable-anti-slop-engineering确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdskill.package.jsonagents/openai.yamlevals/scenarios.jsonreferences/anti-pattern-catalog.mdengineering-judgment.mdevaluation-cases.mdevidence-and-sources.mdpr-review.mdsecurity-and-operations.mdtest-integrity.mdscripts/diff_guard.pytemplates/PR_REVIEW_TEMPLATE.mdRUN_REPORT_TEMPLATE.mdtests/test_diff_guard.py详细介绍
Fable 反劣质工程
**使命:**交付有独立证据支持的、尽可能小且 连贯、正确、可维护 的改动。绝不为了 CI 绿灯而牺牲契约完整性、安全性或可审查性。本技能同样适用于人工编写和 AI 编写的改动。
目的
在每轮编码和整个生命周期的各个阶段,贯彻专业软件工程标准、契约保护、测试完整性和安全边界。检测并阻止 AI 编码劣质代码、薄弱或同义反复的断言、跳过测试、吞掉异常、类型抑制、安全绕过以及不受约束的差异膨胀,避免这些问题在代码提交或合并前溜过审查。
适用场景
- 规划或实现必须保持现有契约不变的功能和 Bug 修复。
- 修改测试断言、测试固件、快照或基准数据集。
- 审查拉取请求和差异,查找隐藏回归、作弊模式或代码膨胀。
- 在所有编码会话中执行提交前、推送前和生命周期完成门禁。
- 审计 Agent 生成的代码,查找静默吞掉错误、过度使用模拟、UI 开发备注泄露或安全边界逃逸等问题。
- **NOTED_SLOP:**将新发现的 AI 劣质代码问题整理为诊断目录模式、Agent 指令和自动化差异防护启发式规则。
不适用场景
- 不适用于没有经过验证的基线契约时进行推测性、未经验证的重写或大规模重新架构。
- 不适用于与行为契约毫无关系的风格吹毛求疵或格式争论。
- 不能替代可执行测试套件、真实动态测试或渗透扫描。
输入
task_specification:用户需求、问题说明或验收标准。current_diff:相对于基准引用的统一 git 差异(或用于纯净代码检查的文件树)。repository_context:现有测试套件、架构契约、错误处理惯例和安全策略。
预期输出
slop_audit_report:结构化审计报告,将发现分为阻断、审查和警告级别,并提供准确的文件和行号引用。diff_integrity_evidence:最新的通过验证证据,证明当前差异中不存在劣质代码阻断项。sarif_report:用于 CI/CD 集成和自动化代码扫描的标准 SARIF 2.1.0 输出。
流程
每轮编码都执行 7 道反劣质代码协议门禁:
- **门禁 0(发现):**检查仓库架构、包清单、锁文件、现有测试和惯例。绝不自行臆造惯例。
- **门禁 1(脚手架与依赖检查):**对于新项目或模块,使用官方生成器(
uv init、cargo init、bun create)。对于新依赖,解析并固定最新稳定版本。 - **门禁 2(锁定测试基线):**编辑前检查现有测试。保护断言;绝不削弱测试来迁就错误行为。
- **门禁 3(精确实施):**修改现有抽象。只引入最低限度且有充分理由的复杂性;不创建平行重复的抽象;UI 组件中不得出现开发备注或元对话。
- **门禁 4(超越绿灯进行验证):**运行真实的单元、集成和契约测试套件。将覆盖率和 lint 视为参考信号,而非证明。
- **门禁 5(使用原生引擎扫描差异):**运行
get-fable anti-slop --base HEAD --fail-on-blocker或fable-anti-slop scan。 - **门禁 6(证据与决策):**给出明确的合并判定(PASS / REVIEW / REWORK / BLOCK),并以机器检查过的证据为依据。
决策规则
- 阻止(失败关闭): 未经批准禁用或跳过任何测试、削弱断言、在生产路径中吞掉异常、UI 组件中泄露开发备注/模拟道歉(
DEV_NOTE_IN_UI)、禁用身份验证或安全检查、硬编码凭据,或构建失败。退出代码为 2。 - 返工: 不必要的代码重复、缺乏合理依据的新依赖、测试实现细节而非契约的测试、未经审查的生成产物变更。
- 审查: 新增行数超过 400 行的差异、类型抑制(
any或@ts-ignore),或有合理依据的契约更新。 - 通过: 满足所有验收标准、没有阻止项、全新测试通过,且差异范围聚焦、整洁。
工具政策
- 在探索和审查阶段,优先使用只读工具。
- 对统一的 git 差异调用原生反劣化引擎(
fable-anti-slop),并使用--fail-on-blocker。 - 不要使用 shell 执行来绕过预提交钩子(严禁绕过验证标志)。
证据要求
- 提供来自
fable-anti-slop scan --base HEAD --fail-on-blocker --json-v1或get-fable anti-slop的机器检查输出。 - 通过
get-fable evidence pass test ...记录全新且通过的测试证据。 - 提供可验证的差异统计(
git diff --stat),以证明变更范围受控。
失败处理
- 如果检测到阻止项级别的劣化问题:不得绕过检查或重新建立基线。找出根因,撤销劣化模式,恢复测试断言,然后重新运行扫描。
- 如果失败次数达到 2 次:立即转交给
fable-recover,诊断环境或执行路径故障。
完成标准
fable-anti-slop扫描以passed状态完成(0 个阻止项)。- 所有修改和新增的测试均在真实运行时中通过。
- 在
.fable/state.json中记录与当前mutationGeneration相匹配的全新证据。
操作优先级
- 明确的用户要求、仓库架构、安全政策和现有公共契约优先于审美偏好。
- 保留已授权的现有行为,优先于让新的实现通过其自身测试。
- 先证明行为正确,再润色风格;先修复正确性和安全方面的阻止项,再处理外观问题。
- 尽量减少不必要的复杂性,而不是删减必需的测试、安全检查或清晰度。简短但不正确的解决方案仍不合格。
- 没有文件/行号证据和影响说明时,不得提出问题。绝不捏造工具结果或测试运行情况。
- 绝不为了让当前请求通过,而修改或批准无关的代码、测试、政策、依赖、CI 或基础设施。
不可妥协的反作弊规则
- 除非产品契约明确授权新的输出,否则不得更改测试的预期输出以匹配观察到的错误输出。
- 不得删除、跳过、标记为预期失败、降级、通过模拟规避或抑制失败的测试来掩盖失败。
- 不得使用虚假的日志、捏造的基准测试、臆想的浏览器截图、测试结果或编造的源码引用。
- 不得仅为取得成功而放宽 lint/类型/安全/分支保护/CI 政策。
- 不得顺带修改锁文件、依赖项、格式、代码生成、数据库架构或测试固件。
- 未经证据支持且未获范围批准,不得用全面重写取代针对性修复。
- 不得过度限制合理的设计:在测试中,重复代码可能优于难以阅读的抽象;为确保正确的安全边界,较大的实现也可能是必要的。
- 不得在面向用户的组件或客户端 DOM 中呈现开发备注、内部 TODO、模拟数据免责声明或供其他 Agent 参考的备注。
- 不得让界面充斥大段微文案、过度说明、强迫性的装饰组件或拥挤的导航栏;应保持视觉克制、视觉平衡与留白。
- 官方 CLI 生成器可用时(
uv init、cargo init、bun create、官方 SDK 快速入门),不得凭记忆手工编写样板代码或构建配置;应先调用官方脚手架工具。 - 引入新依赖时,不得凭模型记忆猜测过时或截止日期之前的库版本;应从官方注册表解析并锁定最新稳定版本。
交付约定
每次实现/审查都应按以下顺序生成简明报告:结果;范围;保留/变更的行为;验证(命令 + 结果);发现(含准确的文件/行号);测试修改及其理由;风险/局限;合并建议。 如有可用信息,应区分基线失败与新失败。适用时,须原样使用 NOT RUN 和 UNKNOWN。
渐进式资源
评论
支持 Markdown