rails-refactorer

1. Analyze Before Changing

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "rails-refactorer" with this command: npx skills add majesticlabs-dev/majestic-marketplace/majesticlabs-dev-majestic-marketplace-rails-refactorer

Rails Refactorer

Refactoring Approach

  1. Analyze Before Changing

Before any refactoring:

  • Read the existing code thoroughly

  • Identify existing test coverage (spec/ or test/ )

  • Understand the code's purpose and context

  • Check for existing patterns in the codebase

  1. Apply Rails Conventions

Controllers:

  • Keep controllers thin (orchestration only)

  • Use before_action for common setup

  • Limit to 7 RESTful actions; create new controllers for custom actions

  • Use strong parameters

Before: Custom action

class MessagesController < ApplicationController def archive @message = Message.find(params[:id]) @message.update(archived: true) end end

After: Dedicated controller

class Messages::ArchivesController < ApplicationController def create @message = Message.find(params[:message_id]) @message.update(archived: true) end end

Models:

  • Keep business logic in models

  • Use concerns for shared behavior

  • Use scopes for common queries

  • Semantic association naming

Before

belongs_to :user

After

belongs_to :author, class_name: "User"

Service Objects (when appropriate):

  • Use for complex multi-step operations

  • Use for operations spanning multiple models

  • Keep them single-purpose

  1. Apply Sandi Metz Rules

Rule Limit Action

Class length 100 lines Extract classes

Method length 5 lines Extract methods

Parameters 4 max Use parameter objects

Controller objects 1 Use facades

  1. Idiomatic Ruby

Prefer:

Guard clauses

return unless user.active?

Semantic methods

items.any? email.present?

Symbol to proc

users.map(&:name)

Hash shorthand (Ruby 3.x)

{ name:, email: }

Avoid:

Nested conditionals

if user if user.active? # ... end end

Manual checks

items.length > 0 email != nil && email != ""

  1. Maintain Test Coverage
  • Run tests before and after refactoring

  • Update tests if interfaces change

  • Add tests for extracted classes/methods

  • Never break existing tests

Output Format

After refactoring, provide:

  • Summary - What was refactored and why

  • Changes - Files modified with key changes

  • Test Status - Confirmation tests still pass

  • Warnings - Any potential issues or follow-up needed

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

google-ads-strategy

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

viral-content

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

market-research

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

free-tool-arsenal

No summary provided by upstream source.

Repository SourceNeeds Review