Claude Code Plugins

Community-maintained marketplace

Feedback

refactoring-suggester

@ntaksh42/agents
0
0

Suggest refactoring opportunities to improve code structure and maintainability. Use when improving code design or reducing complexity.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name refactoring-suggester
description Suggest refactoring opportunities to improve code structure and maintainability. Use when improving code design or reducing complexity.

Refactoring Suggester Skill

コードのリファクタリング提案を行うスキルです。

主な機能

  • Extract Method: 長いメソッドを分割
  • Rename: 分かりやすい命名に変更
  • Remove Duplication: 重複排除
  • Simplify Conditionals: 条件式の簡略化
  • Design Patterns: パターン適用提案

リファクタリング例

Extract Method

// Before
function processOrder(order) {
  // 検証
  if (!order.items || order.items.length === 0) {
    throw new Error('No items');
  }
  if (!order.customer) {
    throw new Error('No customer');
  }

  // 価格計算
  let total = 0;
  for (const item of order.items) {
    total += item.price * item.quantity;
  }
  const tax = total * 0.1;
  total += tax;

  // 保存
  const saved = db.orders.save(order);
  return saved;
}

// After: Extract Method
function processOrder(order) {
  validateOrder(order);
  const total = calculateTotal(order);
  return saveOrder(order, total);
}

function validateOrder(order) {
  if (!order.items || order.items.length === 0) {
    throw new Error('No items');
  }
  if (!order.customer) {
    throw new Error('No customer');
  }
}

function calculateTotal(order) {
  const subtotal = order.items.reduce(
    (sum, item) => sum + item.price * item.quantity,
    0
  );
  return subtotal * 1.1; // +10% tax
}

function saveOrder(order, total) {
  order.total = total;
  return db.orders.save(order);
}

Replace Magic Numbers

# Before
def calculate_price(item):
    if item.category == 'premium':
        return item.price * 0.9
    elif item.category == 'vip':
        return item.price * 0.8
    return item.price * 1.0

# After
DISCOUNT_RATES = {
    'premium': 0.9,
    'vip': 0.8,
    'regular': 1.0
}

def calculate_price(item):
    rate = DISCOUNT_RATES.get(item.category, 1.0)
    return item.price * rate

Simplify Conditionals

// Before
function getShippingCost(weight: number, distance: number): number {
  if (weight < 5) {
    if (distance < 100) {
      return 10;
    } else {
      return 15;
    }
  } else {
    if (distance < 100) {
      return 20;
    } else {
      return 25;
    }
  }
}

// After: Guard Clauses
function getShippingCost(weight: number, distance: number): number {
  const isLight = weight < 5;
  const isNear = distance < 100;

  if (isLight && isNear) return 10;
  if (isLight && !isNear) return 15;
  if (!isLight && isNear) return 20;
  return 25;
}

// Better: Lookup table
const SHIPPING_RATES = {
  'light_near': 10,
  'light_far': 15,
  'heavy_near': 20,
  'heavy_far': 25
};

function getShippingCost(weight: number, distance: number): number {
  const weightKey = weight < 5 ? 'light' : 'heavy';
  const distanceKey = distance < 100 ? 'near' : 'far';
  const key = `${weightKey}_${distanceKey}`;
  return SHIPPING_RATES[key];
}

バージョン情報

  • Version: 1.0.0