Wheels Refactoring

Refactor Wheels code for better performance, security, and maintainability. Use when optimizing code, fixing anti-patterns, improving performance, or enhancing security. Provides refactoring patterns and best practices.

$ インストール

git clone https://github.com/wheels-dev/wheels /tmp/wheels && cp -r /tmp/wheels/.claude/skills/wheels-refactoring ~/.claude/skills/wheels

// tip: Run this command in your terminal to install the skill


name: Wheels Refactoring description: Refactor Wheels code for better performance, security, and maintainability. Use when optimizing code, fixing anti-patterns, improving performance, or enhancing security. Provides refactoring patterns and best practices.

Wheels Refactoring

Performance Refactoring

N+1 Query Problem

Before:

<cfloop query="posts">
    <p>#posts.user().name#</p>  <!--- N+1 queries! --->
</cfloop>

After:

posts = model("Post").findAll(include="user");
<cfloop query="posts">
    <p>#posts.userName#</p>  <!--- 1 query! --->
</cfloop>

Eager Loading

Before:

posts = model("Post").findAll();
// Associations loaded lazily

After:

posts = model("Post").findAll(include="user,comments,tags");
// All associations loaded upfront

Security Refactoring

Parameter Verification

Before:

function show() {
    post = model("Post").findByKey(key=params.key);
}

After:

function config() {
    verifies(only="show", params="key", paramsTypes="integer");
}

function show() {
    post = model("Post").findByKey(key=params.key);
}

SQL Injection Prevention

Before:

where="userId = #params.userId#"  // Vulnerable!

After:

where="userId = #params.userId#"  // Wheels escapes automatically
// Or use parameterized queries

Code Quality Refactoring

Extract Method

Before:

function create() {
    user = model("User").new(params.user);
    user.password = hash(user.password, "SHA-512");
    if (user.save()) {
        sendMail(to=user.email, subject="Welcome");
        redirectTo(action="show", key=user.key());
    }
}

After:

function create() {
    user = model("User").new(params.user);
    if (user.save()) {
        redirectTo(action="show", key=user.key());
    }
}

// In User model:
private function hashPassword() {
    this.password = hash(this.password, "SHA-512");
}

private function sendWelcomeEmail() {
    sendMail(to=this.email, subject="Welcome");
}

Generated by: Wheels Refactoring Skill v1.0