mcpField
I
install-anti-slop

install-anti-slop

github.com/dmmulroy测试与质量5.7k13.9k 次安装2 周前更新
代码仓库

关于 install-anti-slop

install-anti-slop 是用于在代码仓库中安装或更新 vendored anti-slop lint 插件的技能。它指导匹配依赖版本、合并配置、运行检查并记录来源,同时保留项目现有设置。

主要功能

  1. 01选择安装或更新流程
  2. 02复制插件并保留来源文件
  3. 03匹配 Oxlint 依赖版本
  4. 04合并插件规则与忽略模式
  5. 05运行 lint 和类型检查

适用场景

  1. 01在仓库中添加 anti-slop
  2. 02更新现有的 vendored 插件
  3. 03保留配置并注册规则
  4. 04验证变更并记录来源信息

安装

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

$npx skills add https://github.com/dmmulroy/anti-slop --skill install-anti-slop

安装后在 Claude Code 中输入/install-anti-slop确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/anti-slop/
index.ts
assets/anti-slop/effect/
index.ts
assets/anti-slop/effect/rules/
no-manual-effect-error-tag.ts
no-manual-tag-comparison.ts
no-manual-tagged-construction.ts
no-service-constructor-imports.ts
prefer-effect-match.ts
assets/anti-slop/effect/shared/
tagged-values.ts
assets/anti-slop/rules/
no-array-filter-map.ts
no-chained-type-assertions.ts
no-conditional-empty-object-spread.ts
no-known-value-widening.ts
no-module-mocking.ts
no-object-parameters.ts
no-reduce-accumulator-copy.ts
no-reflect-apply.ts
no-reflect-get.ts
no-runtime-typeof.ts
no-shape-in-symbol-names.ts
no-unknown-parameters.ts
no-unknown-returns.ts
no-unknown-type-aliases.ts
no-unsafe-dictionary-type.ts
no-widen-then-assert.ts
require-readable-spacing.ts
require-safety-comment-for-type-assertion.ts
assets/anti-slop/shared/
array-method.ts
dictionary-types.ts
function-parameters.ts
lexical-type-parameters.ts

详细介绍

安装或更新 anti-slop

Anti-slop 是随项目引入的代码:目标仓库拥有自己的规则、诊断、测试和配置。引入上游更改时,请保留这些既有选择。

选择操作路径

阅读仓库的 Agent 指令和 git status。确认其包管理器、Oxlint/Vite+ 配置,以及所有现有的 anti-slop 入口,包括 jsPlugins 引用的已重命名或已迁移副本。

  • 已有安装——更新、升级、迁移或重新配置: 阅读更新随项目引入的安装,并遵循其中的流程,而不是下面的新安装步骤。
  • 尚未安装——全新安装: 遵循下面的流程。如果用户要求更新但找不到现有安装,请先确认目标,再进行安装。

当操作和目标路径已确定,且已识别现有工作时,即可完成。

全新安装

  1. 从此技能复制捆绑的插件。在目标仓库中运行:

    node <skill-directory>/scripts/install.mjs
    

    这会创建 tools/oxlint/anti-slop/。如果仓库已有明确的工具目录布局,可将其他相对路径作为第一个参数传入。脚本会拒绝替换已有目标目录;请将现有副本交由更新流程处理,而不要使用 --force。

    保留嵌套的 vendor/eslint-stylistic/LICENSE 和 UPSTREAM.md;它们会随复制的规则一并带入。可读性检查是自包含的,不需要 Stylistic 插件依赖。

    当所有文件(包括随项目引入的许可证和来源记录)都位于约定的目标路径,且未替换现有副本时,即可完成。

  2. 安装当前兼容的依赖项,不要依赖 Agent 记忆中的版本:

    • 如果仓库已依赖 oxlint,请从包管理器或锁文件读取其已安装版本,并安装完全相同版本的 @oxlint/plugins。请固定到确切版本,而非使用版本范围,以便未来升级时两个包一起更新。
    • 仅当仓库没有 oxlint 依赖时,才查询 npm view oxlint version 和 npm view @oxlint/plugins version,然后为两个包安装相同的当前版本。
    • oxlint 是开发依赖。复制的源码会导入 @oxlint/plugins,因此对于仅在本地使用的插件,也应将其安装为开发依赖。
    • 不要替换包管理器,也不要改写无关的依赖版本范围。

    当已安装匹配且兼容的版本,并保留了无关依赖版本范围时,即可完成。

  3. 注册通用插件,配置忽略项,并启用所有通用规则。对于 oxlint.config.ts 或 .oxlintrc.json,请将以下字段合并到现有配置中:

    ignorePatterns: [
      ".agent/**",
      ".agents/**",
      ".claude/**",
      ".codex/**",
      ".continue/**",
      ".cursor/**",
      ".gemini/**",
      ".opencode/**",
      ".pi/**",
      ".roo/**",
      ".windsurf/**",
      "tools/oxlint/anti-slop/**",
    ],
    jsPlugins: [
      { name: "anti-slop", specifier: "./tools/oxlint/anti-slop/index.ts" },
    ],
    

    保留所有现有忽略项。如果插件复制到了其他位置,请调整最后一个模式。检查仓库中其他项目本地的 Agent 工具目录,并将其加入忽略项,避免把已安装的技能、钩子或生成的 Agent 配置当作应用源码进行 lint。不要笼统忽略所有点号开头的目录,因为有些仓库会在其中保存自有源码或检查文件。

    对于 Vite+,请将这些字段添加到 lint.ignorePatterns 和 lint.jsPlugins。同时将相同的模式合并到 fmt.ignorePatterns,避免 vp check 重新格式化已安装的 Agent 资源或随项目引入的插件。合并现有条目,不要直接替换。

    将以下规则(包括 Oxlint 原生的配套规则)设为 "error":

    {
      "oxc/no-accumulating-spread": "error",
      "anti-slop/no-array-filter-map": "error",
      "anti-slop/no-reduce-accumulator-copy": "error",
      "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-module-mocking": "error",
      "anti-slop/no-object-parameters": "error",
      "anti-slop/no-reflect-apply": "error",
      "anti-slop/no-reflect-get": "error",
      "anti-slop/no-runtime-typeof": "error",
      "anti-slop/no-shape-in-symbol-names": "error",
      "anti-slop/no-unknown-parameters": "error",
      "anti-slop/no-unknown-returns": "error",
      "anti-slop/no-unknown-type-aliases": "error",
      "anti-slop/no-unsafe-dictionary-type": "error",
      "anti-slop/no-widen-then-assert": "error",
      "anti-slop/require-readable-spacing": "error",
      "anti-slop/require-safety-comment-for-type-assertion": "error"
    }
    

    对于 no-array-filter-map,只有在目标运行时支持迭代器辅助方法时,才优先使用惰性 .values().filter(...).map(...).toArray() 管道;否则请使用恰当的单个 flatMap 或本地变更型归约器。不要机械地重写链式调用;请检查回调顺序、索引、稀疏数组、thisArg 和过滤语义。此 AST/作用域规则会刻意避免推断未知的接收者类型。 将 no-reduce-accumulator-copy 与原生规则 oxc/no-accumulating-spread 配合使用:自定义规则可捕获受支持的非展开复制,例如 Object.assign({}, acc, item)、Array.from(acc),以及数组累加器的 concat/slice 调用。允许修改新建的局部累加器;复制单个输入项也允许。命名回调、间接辅助函数和嵌套累加器属性不会被完全分析,因此不要声称所有二次复杂度的归约器都已被排除。

    如果仓库在包清单中声明了 effect,或用户明确要求 Effect 规则,也要注册可选的 Effect 插件:

    jsPlugins: [
      {
        name: "anti-slop-effect",
        specifier: "./tools/oxlint/anti-slop/effect/index.ts",
      },
    ],
    rules: {
      "anti-slop-effect/no-manual-effect-error-tag": "error",
      "anti-slop-effect/no-manual-tag-comparison": "error",
      "anti-slop-effect/no-manual-tagged-construction": "error",
      "anti-slop-effect/no-service-constructor-imports": "error",
      "anti-slop-effect/prefer-effect-match": "error",
    },
    

    将这些条目与通用插件配置合并,而非替换它。不要仅因锁文件中传递依赖出现 Effect 就启用 Effect 插件;必须有直接的包清单依赖或用户的明确请求。该规则覆盖相对路径的项目导入。对于包别名导入,应将其报告为当前限制,而不是声称已强制执行。

    完成条件:通用规则和符合条件的 Effect 规则均已注册,且现有配置得到保留。

  4. 运行仓库的 lint 命令和类型检查。对于 Vite+,添加 lint 和 format 忽略项后,运行仓库完整的 vp check 命令。如果自有项目源码中出现问题,应予以报告;仅当用户要求迁移/清理时才修复。不要抑制规则、降低规则严重级别、添加不安全的类型转换,或机械地粉饰类型以通过 lint。

    获准进行清理时,使用 lint 自动修复应用 require-readable-spacing,然后运行仓库的格式化工具并再次运行 lint。确认第二轮修复/格式化不会更改文件。将空白修复与语义编辑分开,保留文档注释关联和重载分组,不要启用另一套相互竞争的完整格式化预设。

    完成条件:检查均已运行;对于获准的清理,已验证修复/格式化的稳定性;并且所有失败均已解决,或已附诊断信息报告。

  5. 在 vendored 入口文件旁的 UPSTREAM.md 中记录来源信息:源仓库、准确的源提交,或在可用时可恢复的原始快照、已安装的插件路径,以及有意进行的偏离。确认该修订标识对应实际复制的资源;仅记录包版本或当前上游 HEAD 并不足够。如果无法确定来源信息,应记录为未知,而非猜测。

    检查最终差异,并报告安装路径、来源身份、依赖/配置变更及检查结果。完成条件:记录和报告均准确描述了实际安装的文件以及任何遗留问题。

评论

支持 Markdown