Agent skill
Rails Code Generation
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.
Install this agent skill to your Project
npx add-skill https://github.com/FlorinPopaCodes/claude-marketplace/tree/main/plugins/rails-codegen/skills/rails-codegen
SKILL.md
Rails Code Generation Standards
Practical 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.
Core Principles
- Follow Rails conventions - Leverage the framework, don't fight it
- Use domain language - Name models after business concepts (Participant vs User, Cloud vs GeneratedImage)
- Keep logic at appropriate layers - Models for business logic, controllers for HTTP, jobs for async
- Write readable code - Code should be self-documenting without comments
- Normalize data properly - One concern per table, use foreign keys and constraints
Quick Reference
File Structure
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.
Model Organization Order
- Gems/DSL extensions
- Associations (with
counter_cache: true) - Enums (for state machines)
- Normalizations (Rails 7.1+)
- Validations
- Scopes
- Callbacks
- Delegations
- Public methods
- Private methods
Controller Target
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
Technology Stack
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
Building Block References
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 |
Decision Flowchart
Where does this logic belong?
- Single model operation → Model method
- Multi-model transaction → Form object
- External API call → Namespaced model class (e.g.,
Cloud::CardGenerator) - Async work → Job (orchestrates, doesn't execute)
- Complex query → Query object or scope
- Authorization → Policy (ActionPolicy)
- Configuration → Anyway Config class
When to extract from model?
- Method > 15 lines → Extract to namespaced class
- Calls external API → Extract to namespaced class
- Shared across models → Extract to concern or module
Code Generation Checklist
Before generating Rails code, verify:
- Models named after business domain concepts?
- Model follows organization order?
- States implemented as enums?
- Controllers under 10 lines per action?
- Complex logic extracted appropriately?
- Database normalized with FK constraints?
- Counter caches on has_many associations?
- Workflows orchestrated through jobs?
- Configuration via Anyway Config (not ENV)?
- Tests organized by type (model/request/system)?
Usage
When generating Rails code:
- Check
references/stack.mdto verify gem choices - Follow patterns in the relevant building block reference
- Consult
references/anti-patterns.mdto avoid common mistakes - Run through the checklist above before finalizing
For specific patterns, read the appropriate reference file based on what component is being generated.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
always-works-testing
Default testing standard for all implementation work - ensures code actually works through mandatory execution validation before confirming to user. Applies automatically whenever writing, modifying, debugging, or implementing any code (scripts, APIs, UI, configs, data operations, logic changes). This is the baseline expectation, not an optional extra - every implementation must be verified through actual execution, not assumed correct.
Cloudflare Workers Observability
This skill should be used when the user asks about "worker logs", "debug worker", "worker errors", "request analytics", "worker metrics", "performance monitoring", "error rate", "invocation logs", "troubleshoot worker", "worker analytics", or needs to debug and monitor Cloudflare Workers.
Cloudflare Documentation Search
This skill should be used when the user asks about "Cloudflare", "Workers", "Pages", "R2", "D1", "KV", "Durable Objects", "Queues", "Vectorize", "AI Gateway", "Hyperdrive", "Cloudflare API", "Wrangler", "Cloudflare documentation", "how to deploy to Cloudflare", "Cloudflare best practices", "Cloudflare pricing", "Cloudflare limits".
Cloudflare Workers Builds
This skill should be used when the user asks about "deploy status", "build failed", "build logs", "deployment history", "worker deployment", "check build", "deployment succeeded", "build error", "CI/CD", "verify deployment", or needs to monitor Cloudflare Workers builds and deployments.
Cloudflare DNS Analytics
This skill should be used when the user asks about "DNS performance", "zone settings", "DNS analytics", "domain configuration", "DNS report", "zone list", "DNS troubleshooting", "DNSSEC", "DNS latency", or needs to monitor and optimize Cloudflare DNS.
Cloudflare Workers Bindings
This skill should be used when the user asks about "KV namespace", "R2 bucket", "D1 database", "Hyperdrive", "create binding", "list workers", "worker code", "storage binding", "database query", "object storage", "key-value store", "connection pooling", or needs to manage Cloudflare Workers storage and compute resources.
Didn't find tool you were looking for?