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. 03Oxlint依存バージョンの整合
  4. 04ルールと除外パターンの統合
  5. 05lintと型チェックの実行

活用シーン

  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 はベンダーコードです。対象リポジトリが独自のルール、診断、テスト、設定を所有しています。アップストリームの変更を取り込む際は、これらの選択を維持してください。

手順を選択する

リポジトリのエージェント向け指示と git status を確認します。パッケージマネージャー、Oxlint/Vite+ の設定、jsPlugins から参照されている名前変更済みまたは移動済みのコピーも含め、既存の anti-slop のエントリポイントを特定します。

  • インストール済み — 更新、アップグレード、移行、または再設定: ベンダーインストールの更新 を読み、以下の新規インストール手順ではなく、その手順に従います。
  • 未インストール — 新規インストール: 以下の手順に従います。ユーザーが更新を依頼したにもかかわらずインストールが見つからない場合は、インストールする前に対象を確認します。

操作と対象パスを確定し、既存の作業を特定できた時点で完了です。

新規インストール

  1. このスキルに含まれるプラグインをコピーします。対象リポジトリから実行します。

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

    これにより tools/oxlint/anti-slop/ が作成されます。リポジトリで既定のツール配置が決まっている場合は、最初の引数に別の相対パスを指定します。このスクリプトは既存の保存先を置き換えません。既存のコピーは --force ではなく、更新手順を使用してください。

    ネストされた vendor/eslint-stylistic/LICENSE と UPSTREAM.md を保持してください。これらはコピーしたルールとともに配置されます。可読性のチェックは自己完結しており、Stylistic プラグインへの依存は不要です。

    合意した保存先に、ベンダーライセンスと来歴情報を含むファイルが、既存のコピーを置き換えずに存在する時点で完了です。

  2. エージェントが記憶しているバージョンをそのまま使わず、現在互換性のある依存関係をインストールします。

    • リポジトリがすでに oxlint に依存している場合は、パッケージマネージャーまたはロックファイルからインストール済みのバージョンを確認し、@oxlint/plugins をそのバージョンと完全に一致させてインストールします。将来のアップグレード時に両パッケージを一緒に更新できるよう、範囲指定ではなく完全なバージョンで固定してください。
    • リポジトリに oxlint の依存関係がない場合に限り、npm view oxlint version と npm view @oxlint/plugins version を照会し、両パッケージを同じ最新バージョンでインストールします。
    • oxlint は開発依存関係です。コピーしたソースは @oxlint/plugins をインポートするため、ローカル専用プラグインとして、これも開発依存関係にインストールします。
    • パッケージマネージャーを置き換えたり、無関係な依存関係のバージョン範囲を書き換えたりしないでください。

互換性のあるバージョンが一致してインストールされ、無関係な依存関係のバージョン範囲が維持された時点で完了です。

  1. 汎用プラグインを登録し、無視対象を設定して、すべての汎用ルールを有効にします。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" },
    ],
    

    既存の無視対象はすべて維持します。プラグインを別の場所にコピーした場合は、最後のパターンを調整します。リポジトリ内の他のプロジェクト固有のエージェント用ツールディレクトリも確認し、インストール済みのスキル、フック、生成されたエージェント設定をアプリケーションのソースとして lint しないよう、それらを追加します。リポジトリによってはドットディレクトリ内に管理対象のソースやチェックを置いているため、すべてのドットディレクトリを広範囲に無視しないでください。

    Vite+ では、これらのフィールドを lint.ignorePatterns と lint.jsPlugins に追加します。また、インストール済みのエージェントアセットやベンダープラグインが vp check によって再フォーマットされないよう、同じパターンを fmt.ignorePatterns にもマージします。既存のエントリは置き換えずにマージしてください。

    ネイティブの 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 またはローカルで変更する reducer を使います。チェーンを機械的に書き換えるのではなく、コールバックの順序、インデックス、スパース配列、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 ルールが登録され、既存の設定が保持されている状態で完了です。

  2. リポジトリの lint コマンドと型チェックを実行してください。Vite+ の場合は、lint と format の両方の ignore を追加した後、リポジトリの完全な vp check コマンドを実行してください。所有するプロジェクトのソースに指摘が現れた場合は、それらを報告し、ユーザーが移行/クリーンアップを依頼した場合にのみ修正してください。ルールを抑制したり、ルールの重要度を弱めたり、安全でないキャストを追加したり、lint を通過させるために機械的に型を洗浄したりしないでください。

    クリーンアップが承認されている場合は、lint の自動修正で require-readable-spacing を適用し、その後リポジトリのフォーマッタと lint を再度実行してください。2 回目の修正/フォーマットパスでファイルが変更されないことを確認してください。空白の修正は意味的な編集とは分けて行い、ドキュメントの添付とオーバーロードグループを保持し、競合するフォーマットプリセット全体を有効にしないでください。

    チェックが実行され、承認されたクリーンアップに対して修正/フォーマットの安定性が検証され、すべての失敗が解決されるか、その診断情報とともに報告されている状態で完了です。

  3. ベンダー化されたエントリポイントの隣にある UPSTREAM.md に来歴を記録してください:ソースリポジトリ、正確なソースコミット、または可能な場合は復元可能な元のスナップショット、インストールされたプラグインパス、および意図的な逸脱です。リビジョンが実際にコピーされた資産を特定していることを検証してください。パッケージのバージョンや現在の上流の HEAD だけでは不十分です。来歴を確立できない場合は、推測するのではなく不明として記録してください。

    最終的な差分をレビューし、インストールされたパス、ソースの識別情報、依存関係/設定の変更、およびチェック結果を報告してください。記録とレポートが、実際にインストールされたファイルと残っている指摘事項を記述している状態で完了です。

コメント