refactor
Suggests and performs code refactoring following best practices. Use when user asks to "리팩토링 해줘", "refactor this", "코드 개선해줘", "정리해줘", "클린 코드로", "중복 제거해줘", "이거 더 깔끔하게", or wants to improve code quality without changing functionality.
When & Why to Use This Skill
The Refactor Claude skill is a specialized agentic tool designed to enhance code quality and maintainability by applying industry-standard best practices. It automates the identification of technical debt, such as code duplication and high cyclomatic complexity, and performs safe transformations to ensure 'Clean Code' without altering external functionality. By providing structured 'Before/After' comparisons and integrating with version control tools, it streamlines the software evolution process and improves long-term project health.
Use Cases
- Eliminating Technical Debt: Automatically identifying and merging duplicated code blocks into reusable functions to adhere to the DRY (Don't Repeat Yourself) principle.
- Improving Readability: Transforming deeply nested conditional logic and 'spaghetti code' into clean, readable structures using guard clauses and early returns.
- Modularizing Legacy Code: Breaking down 'God functions' or oversized classes into smaller, single-responsibility units that are easier to test and maintain.
- Standardizing Naming and Style: Systematically renaming vague variables and updating outdated patterns to align with modern architectural standards and naming conventions.
- Complexity Reduction: Analyzing code metrics to simplify complex algorithms, thereby reducing the cognitive load for developers and minimizing potential bug surface area.
| name | refactor |
|---|---|
| description | Suggests and performs code refactoring following best practices. Use when user asks to "리팩토링 해줘", "refactor this", "코드 개선해줘", "정리해줘", "클린 코드로", "중복 제거해줘", "이거 더 깔끔하게", or wants to improve code quality without changing functionality. |
| allowed-tools | Read, Glob, Grep, Edit, Write, Bash(git diff:*), Bash(git status:*) |
| version | 1.0.0 |
Refactor Skill
This skill suggests and performs code refactoring following best practices.
Source of Truth
- Output Format:
output-formats.md(Refactoring Format) - Success Criteria:
quality-assurance.md(Refactoring Criteria)
When to Activate
This skill activates in these scenarios:
- Explicit request: "리팩토링 해줘", "refactor this"
- Improvement request: "코드 개선해줘", "정리해줘"
- Clean code request: "클린 코드로", "이거 더 깔끔하게"
- Specific refactoring: "중복 제거해줘", "함수 분리해줘"
Refactoring Principles
- Preserve functionality: Tests must pass before and after
- Small steps: Make incremental changes, verify each step
- Improve readability: Code should be easier to understand
- Reduce complexity: Lower cyclomatic complexity when possible
- Remove duplication: DRY (Don't Repeat Yourself)
Instructions
Step 1: Analyze Current State
Read the target code thoroughly
Identify issues:
- Long functions (>30 lines)
- High complexity (>10 cyclomatic)
- Code duplication
- Unclear naming
- Deep nesting
- God classes/functions
Check for existing tests
Step 2: Plan Refactoring
Determine the refactoring type:
| Type | When to Use | Example |
|---|---|---|
| Extract Function | Long function, repeated code | Split into smaller functions |
| Rename | Unclear naming | x → userCount |
| Inline | Unnecessary abstraction | Remove wrapper function |
| Move | Wrong location | Move method to appropriate class |
| Simplify Conditional | Complex if/else | Use early return, guard clauses |
| Replace Magic Number | Hardcoded values | Use named constants |
Step 3: Perform Refactoring
- Before changing: Ensure tests exist and pass
- Make one change at a time: Don't combine multiple refactorings
- Verify after each change: Run tests if available
- Show Before/After: Clear comparison of changes
Step 4: Format Output
Use this structured format:
## 리팩토링 제안
### 📊 현재 상태 분석
**문제점**:
- [Issue 1]
- [Issue 2]
- [Issue 3]
**메트릭**:
- 함수 길이: [N lines]
- 복잡도: [N]
- 중복 코드: [N occurrences]
---
## 개선 방안
### Before
\`\`\`[language]
[Current code]
\`\`\`
**문제점**: [What's wrong with this]
### After
\`\`\`[language]
[Refactored code]
\`\`\`
**개선사항**:
- ✅ [Improvement 1]
- ✅ [Improvement 2]
- ✅ [Improvement 3]
---
## 변경 영향 분석
### 영향받는 코드
- [File 1]: [How it's affected]
- [File 2]: [How it's affected]
### 호환성
- ✅ 기존 API 유지 / ⚠️ Breaking change
### 테스트 수정 필요
- [Test file 1]: [Required changes]
---
## 우선순위
**Priority**: [High/Medium/Low]
**Effort**: [Hours/Days]
**Impact**: [High/Medium/Low]
**권장**: [Yes/No and why]
Simplified Output (for small refactoring)
When the change is simple:
## 리팩토링
### Before
\`\`\`[language]
[Current code]
\`\`\`
### After
\`\`\`[language]
[Refactored code]
\`\`\`
**개선**: [What improved]
Success Criteria
Before completing refactoring, verify:
- ✅ All tests still pass
- ✅ Functionality unchanged (verified by tests)
- ✅ Code complexity reduced or maintained
- ✅ No new bugs introduced
- ✅ Code readability improved
Common Refactoring Patterns
Extract Function
**Before**: 50-line function doing multiple things
**After**: 3 focused functions of ~15 lines each
**Benefit**: Single responsibility, easier to test
Replace Conditional with Polymorphism
**Before**: Switch/case with type checking
**After**: Interface with multiple implementations
**Benefit**: Open/Closed principle, easier to extend
Introduce Parameter Object
**Before**: Function with 5+ parameters
**After**: Single object parameter with named properties
**Benefit**: Clearer API, easier to add optional params
Related Skills
After refactoring, you may want to:
- Review changes: Ask "리뷰해줘" or use
/review - Commit changes: Ask "커밋해줘" or use
/commit
Important: Always ask user before committing. Never auto-commit.
Typical Workflow
1. /refactor → 리팩토링 수행
2. "리뷰할까요?" → 사용자 선택 시 /review
3. "커밋할까요?" → 사용자 승인 시 /commit
Response Language
- Explanation and analysis: Korean (한국어)
- Code examples: English (comments, variable names)
- Technical terms: Keep in English (e.g., refactoring, DRY, SOLID)
See Also
- output-formats.md - Refactoring output format
- quality-assurance.md - Refactoring success criteria
- technical-standards.md - Code quality standards