Claude-skill-registry dry-refactor
Use when user asks to "remove duplicates", "DRY up code", "extract common logic", "consolidate repeated code", or when /dry scan finds duplicates. Provides language-specific refactoring guidance.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/dry-refactor" ~/.claude/skills/majiayu000-claude-skill-registry-dry-refactor && rm -rf "$T"
manifest:
skills/data/dry-refactor/SKILL.mdsource content
DRY Refactoring Guide
Help users eliminate code duplication by extracting shared logic into reusable modules.
When This Applies
- User mentions "duplicates", "DRY", "repeated code", "copy-paste"
found duplicates that need refactoring/bluera-base:dry scan- Code review identified similar patterns across files
When Duplication is Acceptable
Not all duplication is bad. Keep duplicates when:
- Test code: Explicit test cases can repeat for clarity
- Generated code: Don't DRY generated files
- Incidental similarity: Coincidentally similar code that may diverge
- Coupling cost: Extraction would create tight coupling between unrelated modules
Refactoring Workflow
1. Analyze the Duplicates
# Run scan if not already done /bluera-base:dry scan # Review the report /bluera-base:dry report
2. Categorize Each Duplicate
| Category | Action |
|---|---|
| Exact copy | Extract immediately |
| Near-duplicate | Parameterize differences, then extract |
| Structural | Consider codegen/templates |
| Coincidental | Leave as-is, document why |
3. Choose Extraction Target
| Scope | Target |
|---|---|
| Same file | Local function/method |
| Same module/package | Shared utility file |
| Across modules | New shared module |
| Across repos | Shared library/package |
4. Execute Extraction
- Create the shared abstraction
- Move one instance, verify tests pass
- Replace remaining instances
- Update imports/exports
- Run tests after each replacement
5. Validate
- All tests pass
- No circular dependencies introduced
- Public API unchanged (if applicable)
- Code is actually simpler (not over-abstracted)
Anti-patterns to Avoid
- Wrong abstraction: Forcing unrelated code together
- Over-parameterization: Too many config options
- Premature extraction: Extracting before patterns stabilize
- Leaky abstraction: Exposing implementation details
Language-Specific Patterns
See
skills/dry-refactor/references/patterns.md for detailed examples:
| Language | Primary Pattern |
|---|---|
| JS/TS | Module export, barrel index |
| Python | Module with init.py |
| Rust | Submodule with pub use |
| Go | Same-package separate file |
Report Integration
When
/bluera-base:dry scan identifies duplicates:
- Review the report at
.bluera/bluera-base/state/dry-report.md - Start with highest-impact duplicates (most tokens/instances)
- Use suggested extraction targets from the report
- Re-run
after refactoring to verify reduction/bluera-base:dry scan