mcpField
S
similarity-rs

similarity-rs

github.com/chrisgliddonテスト・品質2678 回インストール9 週間前に更新
リポジトリ

similarity-rs について

similarity-rsは、開発やレビューでRustコードの重複検出CLIを使うためのスキルです。先に検索する手順、CI設定、調整方法を扱い、ベータ版の検出結果は人手で確認するよう案内します。

主な機能

  1. 01類似するRustコードの検出
  2. 02先に検索するワークフローの案内
  3. 03Pre-commitとGitHub Actionsの設定例
  4. 04しきい値と最小行数の調整
  5. 05誤検出の確認に関する助言

活用シーン

  1. 01コミット前の重複チェック
  2. 02整理作業で統合候補を特定
  3. 03CIへの重複チェック追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/chrisgliddon/bevy-skills --skill similarity-rs

インストール後、Claude Code で/similarity-rsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
antipatterns.md
ci-integration.md
false-positives.md
search-before-write.md
sibling-tools.md
tuning.md

詳細

similarity-rs 0.5 — Rust の重複検出

ツールのステータス:ベータ版 — 上流の README によると、本番環境でのテストは行われていません。結果に基づいて対応する前に、検出内容を手動で評価してください。

このスキルを使うタイミング

アンチパターンの兆候(コードを書く前に対応してください):

  • ユーティリティ関数を書こうとしている — まずコードベースを grep で検索してください。すでに存在するかもしれません。
  • 「ここにインラインで書くだけでいい」と考えていることに気づいたとき。
  • 既存の関数を少し変更して、コピー&ペーストしようとしている。
  • 既存のものと重複する可能性がある enum や struct を追加しようとしている。
  • 2 つの Plugin セットアップに、定型コードの大きなブロックが共通している。
  • Query のフィルターコンポーネントだけが異なる、類似した Bevy システムがある。
  • Bundle にまとめるべき commands.spawn((Mesh3d(...), MeshMaterial3d(...), ...)) のパターンを繰り返している。

ツール統合の兆候(チェックを実行してください):

  • コミットする前:ファイル間の重複を新たに持ち込んでいないことを確認します。
  • 整理を集中的に行う期間中:統合候補を特定します。
  • pre-commit フックや GitHub Actions のゲートを設定するとき。
  • 出力が多すぎる、または少なすぎる場合に、-t/--threshold や --min-lines を調整するとき。

標準的なワークフロー

基本の流れは、先に検索 → 最小限のコードを書く → チェックを実行するです。

# 1. Search before writing — check whether the helper already exists
rg "fn <verb>"               # e.g., rg "fn normalize" to find existing helpers
cargo doc --open --package <dep>  # inventory what your deps already provide

# 2. Write only what's missing.

# 3. Before committing, check for accidental duplication
cargo install similarity-rs   # one-time install
similarity-rs ./src            # scan the src tree

# 4. If --cross-file output is needed (catches LLM's most common antipattern)
similarity-rs --cross-file ./src

# 5. Tighten or loosen if needed (see references/tuning.md)
similarity-rs -t 0.85 -m 5 --cross-file --skip-test ./src

その場しのぎのヘルパーに頼る前に、各依存関係について cargo doc --open を確認してください。LLM は、何もないところからよりも、標準ライブラリ、itertools、またはすでに宣言されているクレート依存関係にある関数を再現しがちです。

トピック

トピックリファレンス
LLM による重複パターンの例(変更前/変更後)references/antipatterns.md
書く前に検索するワークフロー(rg、cargo doc、CLAUDE.md のスキャン)references/search-before-write.md
pre-commit フックと GitHub Actions CI のレシピreferences/ci-integration.md
-t、--min-lines、--cross-file、--no-size-penalty の調整項目references/tuning.md
類似コードが意図的な場合 — 対応しないでくださいreferences/false-positives.md
多言語リポジトリ向けの similarity-ts、similarity-py、similarity-genericreferences/sibling-tools.md

注意点

  1. --cross-file はデフォルトで無効です。 指定しない場合、報告されるのはファイル内のペアのみです。LLM が持ち込む重複の多くはファイル間にあります。ファイル内のみを対象としたい場合を除き、必ず --cross-file を指定してください。

  2. ベータ版ツールです。 上流の README では、similarity-rs は本番環境でテストされていないと記されています。出力は判定ではなく手がかりとして扱ってください。リファクタリングする前に、フラグが付いた各ペアを確認してください。

  3. CI では --skip-test を指定します。 テストファイルには、設計上、構造が似たセットアップ用フィクスチャが含まれていることがよくあります。CI では --skip-test を指定して、想定されるテストフィクスチャの類似を除外してください。テストコードの重複はローカルで確認します。

  4. しきい値の調整はプロジェクトごとに異なります。 デフォルトの -t 0.85 では、明らかなコピー&ペーストを検出します。整理を集中的に行う期間中は 0.75~0.80(検出数を増やす)、本番環境でのゲートには 0.90~0.95(誤検知を減らす)を使用してください。references/tuning.md を参照してください。

  5. このスキルにはテスター用のスニペットがありません。 similarity-rs は CLI 専用ツールで、ライブラリ API がないため、検証用の cargo check の例はありません。これはテスター用の例を持たない bevy-cargo-features と bevy-migration-0-17-to-0-18 と同じ方針です。

関連項目

  • bevy-cargo-features — cargo install による similarity-rs のインストールは、Cargo.toml の feature の扱いと関連します。また、意図しない依存関係の重複を隠す可能性がある default-features の判断についても説明しています。
  • bevy-core-concepts — 重複した Plugin のセットアップやスケジュールの定型コードは、このツールが検出する Bevy 固有のアンチパターンとして最もよく見られるものです。
  • bevy-ecs-components — 機能を統合せずに追加した場合、よく似たコンポーネントの struct や重複する enum が見つかることがあります。

コメント