mcpField
S
similarity-rs

similarity-rs

github.com/chrisgliddonTesting & quality2678 installsUpdated 9w ago
Repository

About similarity-rs

similarity-rs is a skill for using a Rust code-duplication detection CLI during development and review. It covers search-before-write practices, CI setup, and tuning, while noting that beta findings require manual review.

Key features

  1. 01Detect similar Rust code
  2. 02Search-before-write workflow guidance
  3. 03Pre-commit and GitHub Actions recipes
  4. 04Threshold and line-count tuning
  5. 05Advice for reviewing false positives

Use cases

  1. 01Check for duplication before committing
  2. 02Find consolidation candidates during cleanup
  3. 03Add duplication checks to CI

Install

Copy the command and run it in a terminal.

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

After installing, type/similarity-rsin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

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

Details

From the project README

similarity-rs 0.5 — Rust duplication detection

Tool status: Beta — not production-tested per the upstream README. Evaluate findings manually before acting.

When to use this skill

Antipattern triggers (act before writing code):

  • About to write a utility function — grep the codebase first; it may already exist.
  • Caught yourself thinking "I'll just inline this here."
  • Planning to copy-paste-modify an existing function with small changes.
  • Adding a new enum or struct that may overlap with an existing one.
  • Two Plugin setups that share large blocks of boilerplate.
  • Similar Bevy systems that differ only in their Query filter component.
  • Repeated commands.spawn((Mesh3d(...), MeshMaterial3d(...), ...)) patterns that belong in a Bundle.

Tool-integration triggers (run the check):

  • Before committing: verify you haven't introduced cross-file duplication.
  • During a cleanup sprint: identify consolidation candidates.
  • Setting up a pre-commit hook or GitHub Actions gate.
  • Adjusting -t/--threshold or --min-lines for a noisy or too-quiet run.

Canonical workflow

The pattern is: search first → write minimally → run the check.

# 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

Consult cargo doc --open for every dependency before reaching for a one-off helper. LLMs reproduce functions from stdlib, itertools, or an already-declared crate dep more often than from thin air.

Topics

TopicReference
LLM duplication patterns with before/after examplesreferences/antipatterns.md
Search-before-write workflow (rg, cargo doc, CLAUDE.md scan)references/search-before-write.md
Pre-commit hook and GitHub Actions CI recipesreferences/ci-integration.md
-t, --min-lines, --cross-file, --no-size-penalty knobsreferences/tuning.md
When similar code is intentional — don't act on thesereferences/false-positives.md
similarity-ts, similarity-py, similarity-generic for polyglot reposreferences/sibling-tools.md

Gotchas

  1. --cross-file is off by default. Without it, only within-file pairs are reported. Most LLM-introduced duplication is across files. Always pass --cross-file unless you specifically want within-file only.

  2. Beta tool. The upstream README marks similarity-rs as not production-tested. Treat output as signal, not verdict. Review each flagged pair before refactoring.

  3. --skip-test on CI. Test files often contain structurally similar setup fixtures by design. Run with --skip-test on CI to suppress expected test-fixture symmetry; review test duplication locally.

  4. Threshold tuning is project-specific. The default -t 0.85 catches obvious copy-paste. Use 0.75–0.80 during a cleanup sprint (more hits), 0.90–0.95 for production gating (fewer false alarms). See references/tuning.md.

  5. No tester snippet for this skill. similarity-rs is a CLI-only tool with no library API — there is no cargo check example to validate. This follows the same approach as bevy-cargo-features and bevy-migration-0-17-to-0-18, which also carry no tester examples.

See also

  • bevy-cargo-features — installing similarity-rs via cargo install sits alongside the Cargo.toml feature story; also covers default-features decisions that can hide accidental dep duplication.
  • bevy-core-concepts — duplicate Plugin setup and schedule boilerplate is the most common Bevy-specific antipattern this tool catches.
  • bevy-ecs-components — near-duplicate component structs and overlapping enums often surface when features are added without consolidation.

Comments

Markdown supported