Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    aidotnet

    refactor-assistant

    aidotnet/refactor-assistant
    Coding
    68
    2 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    智能代码重构,提供设计模式建议、代码异味检测和保持行为不变的安全转换策略。

    SKILL.md

    Refactor Assistant Skill

    Description

    Improve code quality through systematic refactoring with design pattern recommendations.

    Trigger

    • /refactor command
    • User requests code improvement
    • User asks about design patterns

    Prompt

    You are a refactoring expert that improves code quality while preserving behavior.

    Extract Method

    // ❌ Before: Long method with multiple responsibilities
    function processOrder(order: Order) {
      // Validate order
      if (!order.items.length) throw new Error('Empty order');
      if (!order.customer) throw new Error('No customer');
      
      // Calculate total
      let total = 0;
      for (const item of order.items) {
        total += item.price * item.quantity;
        if (item.discount) {
          total -= item.discount;
        }
      }
      
      // Apply tax
      const tax = total * 0.1;
      total += tax;
      
      // Save and notify
      db.save(order);
      emailService.send(order.customer.email, `Order total: ${total}`);
    }
    
    // ✅ After: Small, focused methods
    function processOrder(order: Order) {
      validateOrder(order);
      const total = calculateTotal(order);
      saveAndNotify(order, total);
    }
    
    function validateOrder(order: Order): void {
      if (!order.items.length) throw new Error('Empty order');
      if (!order.customer) throw new Error('No customer');
    }
    
    function calculateTotal(order: Order): number {
      const subtotal = order.items.reduce((sum, item) => {
        const itemTotal = item.price * item.quantity - (item.discount ?? 0);
        return sum + itemTotal;
      }, 0);
      return subtotal * 1.1; // Include 10% tax
    }
    

    Strategy Pattern

    // ❌ Before: Switch statement for different behaviors
    function calculateShipping(order: Order): number {
      switch (order.shippingMethod) {
        case 'standard': return order.weight * 0.5;
        case 'express': return order.weight * 1.5 + 10;
        case 'overnight': return order.weight * 3 + 25;
        default: throw new Error('Unknown method');
      }
    }
    
    // ✅ After: Strategy pattern
    interface ShippingStrategy {
      calculate(order: Order): number;
    }
    
    class StandardShipping implements ShippingStrategy {
      calculate(order: Order): number {
        return order.weight * 0.5;
      }
    }
    
    class ExpressShipping implements ShippingStrategy {
      calculate(order: Order): number {
        return order.weight * 1.5 + 10;
      }
    }
    
    class ShippingCalculator {
      constructor(private strategy: ShippingStrategy) {}
      
      calculate(order: Order): number {
        return this.strategy.calculate(order);
      }
    }
    

    Factory Pattern

    // ✅ Factory for creating different notification types
    interface Notification {
      send(message: string): Promise<void>;
    }
    
    class NotificationFactory {
      static create(type: 'email' | 'sms' | 'push'): Notification {
        switch (type) {
          case 'email': return new EmailNotification();
          case 'sms': return new SmsNotification();
          case 'push': return new PushNotification();
        }
      }
    }
    
    // Usage
    const notification = NotificationFactory.create('email');
    await notification.send('Hello!');
    

    Tags

    refactoring, design-patterns, code-quality, clean-code, architecture

    Compatibility

    • Codex: ✅
    • Claude Code: ✅
    Recommended Servers
    Parallel Web Search
    Parallel Web Search
    EasyWeek
    EasyWeek
    ThinAir Data
    ThinAir Data
    Repository
    aidotnet/moyucode
    Files