Anti-Slop Skill:把 TypeScript”低证据写法”变成 CI 构建失败

Anti-Slop Skill:把 TypeScript“低证据写法”变成 CI 构建失败

一句话总结:anti-slop 是目前最火的 TypeScript 工程纪律 Skill,通过 15 条 Oxlint 规则拦截”低证据”代码写法,把类型安全从风格讨论变成可自动强制执行的工程门控,GitHub 已有约 2,536 星,本周新增 355 星,skilld.dev 周榜排名第 1。

功能与原则

anti-slop 解决的是一个具体但普遍的问题:TypeScript 类型系统足够强大,但团队成员可以用”证据不足”的写法绕过它——链式类型断言、用 object 做参数、Vitest mock 替代真实依赖缝等——这些代码能通过 TS 编译,却在运行时埋雷。

它的核心原则是把”证据”而非”风格”作为类型安全的第一性标准:每条规则背后都指向一个可观测的运行时风险,而不是审美偏好。规则设计鼓励 vendoring(直接复制到你的仓库维护),而不是当作固定 npm 依赖升级——因为团队应该按自己的标准裁剪规则,而不是被上游牵着走。

认可度

  • GitHub 星数:约 2,536(截至 2026-08-22),创建于 2026-08-12,仅 10 天
  • skilld.dev 周榜:install-anti-slop Skill 单周 +355 星,排名第 1,911 次点赞
  • 社区热度:8 月中旬密集更新,4 次 commit,最后一次 2026-08-14
  • 安全评级:ClaudSkills 安全扫描 Grade A,OWASP Agentic Skills Top 10 十项全通过

链接

GitHub 仓库:https://github.com/dmmulroy/anti-slop

原作者

Dillon Mulroy(@dmmulroy),独立开发者,专注于 TypeScript 工程工具链,以 anti-slop 项目在 2026 年 8 月快速积累关注。

介绍

anti-slop 是一套给 Oxlint 使用的 Opinionated 规则集,核心能力是拦截低证据 TypeScript / JavaScript 模式。它不是传统意义上的 linter 规则(检查格式/命名),而是针对那些”能过 TS 编译但运行时不可信”的代码写法设计的强制门控。

整套规则分为通用规则和 Effect 专属规则两类。通用规则有 15 条,覆盖类型断言、对象参数、Mock 用法、typeof 语义等高频雷区。Effect 专属规则则针对使用了 Effect 框架的仓库,拦截 service constructor 导入等架构层面的低证据写法。

规则的触发方式很特别:通过配套的 Claude Code Skill(install-anti-slop),AI agent 可以自动把规则复制进目标仓库、安装依赖、合并配置、启用全部规则并验证——整个流程无需人工介入。这让团队可以在 CI/CD 里嵌入”类型纪律审计”,而不是依赖 code review 时的口头约定。

特点

  • 15 条通用 Oxlint 规则,每条背后都有具体的运行时风险说明
  • Agent Skill 加持:一条命令完成复制 + 安装 + 配置 + 验证全流程
  • 可 vendoring:规则文件直接复制进仓库,团队自主维护,不依赖上游版本
  • 可选 Effect 规则组:针对使用了 Effect 框架的项目做架构层约束
  • 安全扫描通过:OWASP Agentic Skills Top 10 全绿,Grade A
  • 兼容 Vite+ 项目:lint 和 fmt 配置均可合并进现有 Oxlint 配置

使用方法

第一步:安装 Skill

npx skills add dmmulroy/anti-slop --skill install-anti-slop

第二步:让 AI Agent 执行安装

在 Claude Code 里直接说:

Use Install Anti Slop to configure anti-slop in this repository.

Agent 会自动完成:读取仓库配置 → 复制规则文件 → 安装依赖 → 合并配置 → 运行验证。

手动安装(不依赖 Skill)

# 复制规则文件到仓库
cp -r src/ tools/oxlint/anti-slop/

# 安装依赖
pnpm add -D oxlint @oxlint/plugins

# 在 oxlint.config.ts 注册规则
export default defineConfig({
  jsPlugins: [{ name: "anti-slop", specifier: "./tools/oxlint/anti-slop/index.ts" }],
  rules: {
    "anti-slop/no-chained-type-assertions": "error",
    "anti-slop/no-conditional-empty-object-spread": "error",
    "anti-slop/no-known-value-widening": "error",
    "anti-slop/no-object-parameters": "error",
    "anti-slop/no-runtime-typeof": "error",
    "anti-slop/no-unknown-parameters": "error",
    "anti-slop/no-unknown-type-aliases": "error",
    "anti-slop/no-unsafe-dictionary-type": "error"
  }
});

使用场景与人群

适用场景
– TypeScript 仓库的 CI 质量门控(规则违反 = 构建失败)
– AI coding agent(Claude Code / Codex 等)生成代码后的自动纪律检查
– 团队代码一致性治理:把”类型纪律”的团队共识编码成可执行规则

目标用户
– TypeScript / JavaScript 开发者
– 使用 Oxlint 的团队(尚未使用 Oxlint 的团队迁移成本低)
– 关注 AI coding 质量的工程师(防止 agent 生成”看起来对但运行时危险”的代码)

输入与输出案例

案例 1:链式类型断言被拦截

输入(违反规则):

const user = input as object as User;

anti-slop 报错:

no-chained-type-assertions — rejects nested type assertions that fabricate evidence.

案例 2:Vitest mock 替代真实依赖被拒绝

输入(违反规则):

vi.mock("./user-store");

anti-slop 报错:

no-module-mocking — rejects Vitest and Jest module mocks in favor of real dependency seams.

案例 3:Agent Skill 全自动配置

用户对 Claude Code 说:Use Install Anti Slop to configure anti-slop in this repository.

Agent 自动完成整个安装流程,最终输出:

✓ anti-slop configured — 15 rules enabled, 0 violations in src/

GitHub: https://github.com/dmmulroy/anti-slop

评论区

0 条评论

登录后可评论。

Skill超级捕获手 11 阅读