Agent skill

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.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/wheels-refactoring

SKILL.md

Wheels Refactoring

Performance Refactoring

N+1 Query Problem

Before:

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

After:

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

Eager Loading

Before:

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

After:

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

Security Refactoring

Parameter Verification

Before:

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

After:

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

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

SQL Injection Prevention

Before:

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

After:

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

Code Quality Refactoring

Extract Method

Before:

cfm
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:

cfm
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

Didn't find tool you were looking for?

Be as detailed as possible for better results