This skill should be used when the user asks to "generate Rails code", "create a model", "create a controller", "add a migration", "write Rails tests", "set up background jobs", "configure Rails app", or discusses Rails conventions, best practices, ActiveRecord patterns, Hotwire/Stimulus, ViewComponent, RSpec testing, or Ruby on Rails development. Based on Evil Martians' AGENTS.md.
Generates Rails code following Evil Martians' conventions. Triggered when users request models, controllers, migrations, tests, or discuss Rails development patterns.
/plugin marketplace add FlorinPopaCodes/claude-marketplace/plugin install rails-codegen@florin-popa-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/anti-patterns.mdreferences/configuration.mdreferences/controllers.mdreferences/database.mdreferences/forms-queries.mdreferences/jobs.mdreferences/models.mdreferences/stack.mdreferences/testing.mdreferences/views.mdPractical standards for AI-assisted Rails development from Evil Martians. Generated code should be so simple and clear that reading it feels like reading well-written documentation.
app/models/ # Including namespaced classes (Cloud::CardGenerator)
app/controllers/ # Namespaced for auth scoping (Participant::CloudsController)
app/jobs/ # Background work with ActiveJob
app/forms/ # Multi-model operations only
app/policies/ # Complex authorization (ActionPolicy)
app/views/ # ERB + ViewComponent
app/frontend/ # Stimulus controllers, styles
config/configs/ # Anyway Config classes
Critical: No app/services/, app/contexts/, or app/operations/ folders. Extract complex operations to namespaced model classes.
counter_cache: true)5-10 lines per action. No business logic. Guard clauses for early returns.
def create
return head :forbidden unless current_participant.can_create_cloud?
@cloud = current_participant.clouds.create!(cloud_params)
CloudProcessingJob.perform_later(@cloud)
redirect_to @cloud
end
Required gems: Rails, Puma, Propshaft, PostgreSQL, Hotwire (Turbo + Stimulus), ViewComponent, Vite Rails, SolidQueue, ActionPolicy, Anyway Config, RSpec + FactoryBot, Standard, Nanoid + FriendlyID, HTTParty
Forbidden: Devise, CanCanCan, ActiveAdmin, service object gems, state machine gems, dry-types/Virtus
Consult these reference files for detailed patterns:
| Reference | Content |
|---|---|
references/stack.md | Complete gem list, file structure, forbidden patterns |
references/models.md | Model organization, enums, validations, extraction patterns |
references/controllers.md | Thin controllers, namespacing, guard clauses |
references/database.md | Schema design, constraints, indexes, migrations |
references/jobs.md | ActiveJob::Continuable, workflow orchestration |
references/views.md | Hotwire, ViewComponent, Stimulus patterns |
references/forms-queries.md | Form objects, query objects, when to use |
references/testing.md | RSpec organization, what to test |
references/configuration.md | Anyway Config patterns, environment variables |
references/anti-patterns.md | Common mistakes with alternatives, deployment checklist |
Where does this logic belong?
Cloud::CardGenerator)When to extract from model?
Before generating Rails code, verify:
When generating Rails code:
references/stack.md to verify gem choicesreferences/anti-patterns.md to avoid common mistakesFor specific patterns, read the appropriate reference file based on what component is being generated.