dry
DRY — Don't Repeat Yourself
What it detects
Two functions can look different in naming and literal values yet share identical structure. This skill finds those structural duplicates by normalising each function's AST — replacing variable names with :symbol, literals with :literal, and preserving only the skeleton (control flow, collection shapes, call patterns). It then compares every pair of functions via Jaccard similarity over their fingerprint sets.
A score of 1.0 means two functions are structurally identical despite different names and values. The default threshold of 0.82 catches candidates close enough to warrant review.
Supported languages: Python, JavaScript, TypeScript (including JSX/TSX).
Workflow
Phase 1 — Scan
- Detect project language(s) from file extensions
- Run
python3 scripts/dry_check.py <src> -f json --base-dir <project_root> - Parse JSON output; sort by worst similarity score
Phase 2 — Review
More from mohganji/skills
cut-the-crap
Calculate CRAP (Change Risk Anti-Patterns) scores for functions in a codebase, identify high-risk methods, propose refactoring and test improvements, estimate new scores, and implement fixes after user approval. Use when user mentions CRAP score, code risk, wants to reduce complexity, improve testability, or says "cut the crap".
6design-deliberately
Review and guide UI design toward intentional minimalism where every element earns its place. Use when user asks for design review, UI feedback, wants to simplify an interface, mentions "design deliberately", or is building/refining UI components.
5priority-score
Score feature priorities using Geoff Ralston's (b*d)/c formula — Breadth, Depth, and Cost on 1-5 scales yielding a 1-100 priority score. Use when user wants to prioritize features, decide what to build next, rank a backlog, compare initiatives, or mentions "priority score".
4setup-crap-check
One-time setup skill that adds CRAP score enforcement via GitHub Actions CI and pre-commit hook. Detects repo language and test framework, asks user about thresholds, generates the workflow YAML and hook script. Use when user wants to enforce CRAP score thresholds on their codebase.
4no-broken-window
Detect, establish, and enforce codebase patterns so one violation doesn't erode the standard. Use when user discusses a rule, pattern, or convention they want uniform across the codebase, wants to unify inconsistent behavior, mentions enforcing a standard, preventing drift, or keeping things consistent, or invokes /no-broken-window.
4setup-sandcastle
One-time setup skill that walks the user through installing and configuring Sandcastle for isolated sandbox environments. Configures the sandbox provider (Docker, Podman, or Firecracker), verifies the runtime, and adds sandbox defaults to CLAUDE.md. Use when user wants to enable parallelized agent work or sandboxed TDD.
3