find-similar
Find Similar Patterns
A conceptual framework for systematically finding similar or analogous code patterns in a codebase.
This skill is factual, not prescriptive. It helps find and report what exists. It does not recommend whether to use, ignore, or modify findings.
Tools available: Grep, Glob, Read, Bash (git commands)
Similarity Types
"Similar" can mean different things. Identify which type matters before searching.
| Type | What It Means | Example |
|---|---|---|
| Lexical | Same names, keywords, identifiers | "Where else do we call formatDate?" |
| Structural | Same code shape, different names | "Where else do we have retry logic?" |
| Analogous | Same role in a different domain | "What's the equivalent handler in another domain?" |
| Conceptual | Same purpose, potentially different approach | "How do we handle validation elsewhere?" |
Search Strategy
Level 1: Direct Search
Search for the thing itself or obvious variations.
- Exact terms, function names, type names
- Known synonyms or alternate spellings
- Import/export statements
Stop if: Found clear matches.
Level 2: Sibling/Peer Discovery
Find files that serve the same role.
- Files in the same directory
- Files with the same naming pattern (e.g.,
*.handler.ts,use*.ts) - Files in parallel directories (e.g.,
domains/users/→domains/projects/)
Stop if: Found peers that reveal the pattern.
Level 3: Reference Tracing
Follow the dependency graph.
- Where is X defined?
- What imports/uses X?
- What does X import/use?
Stop if: Found the relevant connected files.
Level 4: Conceptual Expansion
Broaden the search with related concepts.
- Synonyms and related terms
- Different implementations of the same idea
- Cross-domain analogues
Stop if: Found conceptually similar code, or exhausted reasonable search terms.
Confidence Levels
| Confidence | Criteria |
|---|---|
| HIGH | Exact or near-exact match; clearly the same pattern |
| MEDIUM | Similar structure or purpose; some differences |
| LOW | Conceptually related; different approach or partial match |
Factors that affect confidence:
- Same directory/domain → higher
- Same naming conventions → higher
- Same imports/dependencies → higher
- Different structure or approach → lower
What to Capture (adapt to your context)
Useful information to track for each finding:
- Location — file path and line range
- Similarity type — which of the four types applies
- Confidence — how close is the match
- Why similar — brief explanation of the relationship
For negative results, note what was searched so coverage can be verified.
Tips
- Start narrow, expand as needed — Don't search the entire codebase if a directory search suffices
- Use file organization as signal — Sibling files often reveal local conventions
- Git history can help — Files that change together are often related
- Report what you searched — Helps verify coverage and enables follow-up