← Back to list

refactor-helper
by ShunsukeHayashi
🤖 First open-source, economically-governed, beginner-friendly autonomous development framework built on Issue-Driven Development | 超初心者でも使える自律型開発フレームワーク
⭐ 13🍴 8📅 Jan 24, 2026
SKILL.md
name: refactor-helper description: Refactor code to improve quality, performance, and maintainability. Use when refactoring code, improving code structure, or modernizing legacy code. allowed-tools: Bash, Read, Write, Grep, Glob
Refactor Helper
Version: 1.0.0 Purpose: Safe, systematic code refactoring
Triggers
| Trigger | Examples |
|---|---|
| Refactor | "refactor this", "リファクタリングして", "clean up code" |
| Improve | "improve this code", "コード改善" |
| Modernize | "update to modern syntax", "モダン化" |
Refactoring Principles
1. Make Small Changes
✅ GOOD: One refactoring per commit
❌ BAD: Multiple unrelated changes in one commit
2. Ensure Tests Pass
# Before refactoring
npm test
# After each change
npm test
3. Keep Behavior Unchanged
Refactoring = Improving structure WITHOUT changing behavior
Common Patterns
Extract Function
// Before
function processOrder(order: Order) {
// validate
if (!order.items.length) throw new Error('Empty');
if (order.total < 0) throw new Error('Invalid total');
// calculate
const subtotal = order.items.reduce((s, i) => s + i.price, 0);
const tax = subtotal * 0.1;
const total = subtotal + tax;
// save
db.save({ ...order, total });
}
// After
function validateOrder(order: Order): void {
if (!order.items.length) throw new Error('Empty');
if (order.total < 0) throw new Error('Invalid total');
}
function calculateTotal(items: Item[]): number {
const subtotal = items.reduce((s, i) => s + i.price, 0);
const tax = subtotal * 0.1;
return subtotal + tax;
}
function processOrder(order: Order) {
validateOrder(order);
const total = calculateTotal(order.items);
db.save({ ...order, total });
}
Replace Conditionals with Polymorphism
// Before
function getPrice(type: string, base: number): number {
switch (type) {
case 'premium': return base * 0.8;
case 'vip': return base * 0.7;
default: return base;
}
}
// After
interface PricingStrategy {
calculate(base: number): number;
}
class RegularPricing implements PricingStrategy {
calculate(base: number) { return base; }
}
class PremiumPricing implements PricingStrategy {
calculate(base: number) { return base * 0.8; }
}
Simplify Conditionals
// Before
if (user !== null && user !== undefined && user.isActive === true) {
if (user.role === 'admin' || user.role === 'moderator') {
// ...
}
}
// After
const isActiveUser = user?.isActive ?? false;
const hasPrivileges = ['admin', 'moderator'].includes(user?.role ?? '');
if (isActiveUser && hasPrivileges) {
// ...
}
Remove Dead Code
# Find unused exports
npx ts-prune
# Find unused dependencies
npx depcheck
Workflow
Step 1: Identify Smell
| Code Smell | Refactoring |
|---|---|
| Long function | Extract Function |
| Duplicate code | Extract and reuse |
| Complex conditionals | Simplify/Polymorphism |
| God class | Split responsibilities |
| Feature envy | Move method |
Step 2: Write Tests (if missing)
describe('processOrder', () => {
it('should calculate total correctly', () => {
const order = { items: [{ price: 100 }] };
expect(processOrder(order).total).toBe(110);
});
});
Step 3: Refactor
Small, incremental changes with tests after each.
Step 4: Verify
npm test
npm run lint
npm run typecheck
Checklist
- Tests exist and pass before refactoring
- Each change is small and focused
- Tests pass after each change
- No behavior changes
- Code is more readable
- Commit with clear message
Score
Total Score
75/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
✓説明文
100文字以上の説明がある
+10
○人気
GitHub Stars 100以上
0/15
✓最近の活動
1ヶ月以内に更新
+10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon

