rails-model-generator — community rails-model-generator, rails_ai_agents, community, ide skills, Claude Code, Cursor, Windsurf

v1.0.0
GitHub

About this Skill

Ideal for Ruby-based AI Agents focusing on Rails development and requiring automated model generation with Test-Driven Development (TDD) best practices. A collection of specialized AI agents for Rails 8.1 development, for AI driven-development and follow TDD best practices.

ThibautBaissac ThibautBaissac
[0]
[0]
Updated: 3/5/2026

Agent Capability Analysis

The rails-model-generator skill by ThibautBaissac is an open-source community AI agent skill for Claude Code and other IDE workflows, helping agents execute tasks with better context, repeatability, and domain-specific guidance.

Ideal Agent Persona

Ideal for Ruby-based AI Agents focusing on Rails development and requiring automated model generation with Test-Driven Development (TDD) best practices.

Core Value

Empowers agents to create Rails models following a TDD approach, utilizing migrations, and implementing model specs with expected behavior, all while adhering to Ruby on Rails 8.1 standards and leveraging associations, validations, and attributes definitions.

Capabilities Granted for rails-model-generator

Automating model creation with predefined attributes and validations
Generating migration scripts for database schema updates
Implementing model specs for test-driven development

! Prerequisites & Limits

  • Requires Ruby on Rails 8.1 environment
  • Follows TDD principles which might not fit all development workflows
Labs Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

rails-model-generator

Install rails-model-generator, an AI agent skill for AI agent workflows and automation. Works with Claude Code, Cursor, and Windsurf with one-command setup.

SKILL.md
Readonly

Rails Model Generator (TDD Approach)

Overview

This skill creates models the TDD way:

  1. Define requirements (attributes, validations, associations)
  2. Write model spec with expected behavior (RED)
  3. Create factory for test data
  4. Generate migration
  5. Implement model to pass specs (GREEN)
  6. Refactor if needed

Workflow Checklist

Model Creation Progress:
- [ ] Step 1: Define requirements (attributes, validations, associations)
- [ ] Step 2: Create model spec (RED)
- [ ] Step 3: Create factory
- [ ] Step 4: Run spec (should fail - no model/table)
- [ ] Step 5: Generate migration
- [ ] Step 6: Run migration
- [ ] Step 7: Create model file (empty)
- [ ] Step 8: Run spec (should fail - no validations)
- [ ] Step 9: Add validations and associations
- [ ] Step 10: Run spec (GREEN)

Step 1: Requirements Template

Before writing code, define the model:

markdown
1## Model: [ModelName] 2 3### Table: [table_name] 4 5### Attributes 6| Name | Type | Constraints | Default | 7|------|------|-------------|---------| 8| name | string | required, unique | - | 9| email | string | required, unique, email format | - | 10| status | integer | enum | 0 (pending) | 11| organization_id | bigint | foreign key | - | 12 13### Associations 14- belongs_to :organization 15- has_many :posts, dependent: :destroy 16- has_one :profile, dependent: :destroy 17 18### Validations 19- name: presence, uniqueness, length(max: 100) 20- email: presence, uniqueness, format(email) 21- status: inclusion in enum values 22 23### Scopes 24- active: status = active 25- recent: ordered by created_at desc 26- by_organization(org): where organization_id = org.id 27 28### Instance Methods 29- full_name: combines first_name and last_name 30- active?: checks if status is active 31 32### Callbacks 33- before_save :normalize_email 34- after_create :send_welcome_email

Step 2: Create Model Spec

Location: spec/models/[model_name]_spec.rb

ruby
1# frozen_string_literal: true 2 3require 'rails_helper' 4 5RSpec.describe ModelName, type: :model do 6 subject { build(:model_name) } 7 8 # === Associations === 9 describe 'associations' do 10 it { is_expected.to belong_to(:organization) } 11 it { is_expected.to have_many(:posts).dependent(:destroy) } 12 end 13 14 # === Validations === 15 describe 'validations' do 16 it { is_expected.to validate_presence_of(:name) } 17 it { is_expected.to validate_uniqueness_of(:email).case_insensitive } 18 it { is_expected.to validate_length_of(:name).is_at_most(100) } 19 end 20 21 # === Scopes === 22 describe '.active' do 23 let!(:active_record) { create(:model_name, status: :active) } 24 let!(:inactive_record) { create(:model_name, status: :inactive) } 25 26 it 'returns only active records' do 27 expect(described_class.active).to include(active_record) 28 expect(described_class.active).not_to include(inactive_record) 29 end 30 end 31 32 # === Instance Methods === 33 describe '#full_name' do 34 subject { build(:model_name, first_name: 'John', last_name: 'Doe') } 35 36 it 'returns combined name' do 37 expect(subject.full_name).to eq('John Doe') 38 end 39 end 40end

See templates/model_spec.erb for full template.

Step 3: Create Factory

Location: spec/factories/[model_name_plural].rb

ruby
1# frozen_string_literal: true 2 3FactoryBot.define do 4 factory :model_name do 5 sequence(:name) { |n| "Name #{n}" } 6 sequence(:email) { |n| "user#{n}@example.com" } 7 status { :pending } 8 association :organization 9 10 trait :active do 11 status { :active } 12 end 13 14 trait :with_posts do 15 after(:create) do |record| 16 create_list(:post, 3, model_name: record) 17 end 18 end 19 end 20end

See templates/factory.erb for full template.

Step 4: Run Spec (Verify RED)

bash
1bundle exec rspec spec/models/model_name_spec.rb

Expected: Failure because model/table doesn't exist.

Step 5: Generate Migration

bash
1bin/rails generate migration CreateModelNames \ 2 name:string \ 3 email:string:uniq \ 4 status:integer \ 5 organization:references

Review the generated migration and add:

  • Null constraints: null: false
  • Defaults: default: 0
  • Indexes: add_index :table, :column
ruby
1# db/migrate/YYYYMMDDHHMMSS_create_model_names.rb 2class CreateModelNames < ActiveRecord::Migration[8.0] 3 def change 4 create_table :model_names do |t| 5 t.string :name, null: false 6 t.string :email, null: false 7 t.integer :status, null: false, default: 0 8 t.references :organization, null: false, foreign_key: true 9 10 t.timestamps 11 end 12 13 add_index :model_names, :email, unique: true 14 add_index :model_names, :status 15 end 16end

Step 6: Run Migration

bash
1bin/rails db:migrate

Verify with:

bash
1bin/rails db:migrate:status

Step 7: Create Model File

Location: app/models/[model_name].rb

ruby
1# frozen_string_literal: true 2 3class ModelName < ApplicationRecord 4end

Step 8: Run Spec (Still RED)

bash
1bundle exec rspec spec/models/model_name_spec.rb

Expected: Failures for missing validations/associations.

Step 9: Add Validations & Associations

ruby
1# frozen_string_literal: true 2 3class ModelName < ApplicationRecord 4 # === Associations === 5 belongs_to :organization 6 has_many :posts, dependent: :destroy 7 8 # === Enums === 9 enum :status, { pending: 0, active: 1, suspended: 2 } 10 11 # === Validations === 12 validates :name, presence: true, 13 uniqueness: true, 14 length: { maximum: 100 } 15 validates :email, presence: true, 16 uniqueness: { case_sensitive: false }, 17 format: { with: URI::MailTo::EMAIL_REGEXP } 18 19 # === Scopes === 20 scope :active, -> { where(status: :active) } 21 scope :recent, -> { order(created_at: :desc) } 22 23 # === Instance Methods === 24 def full_name 25 "#{first_name} #{last_name}".strip 26 end 27end

Step 10: Run Spec (GREEN)

bash
1bundle exec rspec spec/models/model_name_spec.rb

All specs should pass.

References

Common Patterns

Enum with Validation

ruby
1enum :status, { draft: 0, published: 1, archived: 2 } 2validates :status, inclusion: { in: statuses.keys }

Polymorphic Association

ruby
1belongs_to :commentable, polymorphic: true

Counter Cache

ruby
1belongs_to :organization, counter_cache: true 2# Add: organization.posts_count column

Soft Delete

ruby
1scope :active, -> { where(deleted_at: nil) } 2scope :deleted, -> { where.not(deleted_at: nil) } 3 4def soft_delete 5 update(deleted_at: Time.current) 6end

FAQ & Installation Steps

These questions and steps mirror the structured data on this page for better search understanding.

? Frequently Asked Questions

What is rails-model-generator?

Ideal for Ruby-based AI Agents focusing on Rails development and requiring automated model generation with Test-Driven Development (TDD) best practices. A collection of specialized AI agents for Rails 8.1 development, for AI driven-development and follow TDD best practices.

How do I install rails-model-generator?

Run the command: npx killer-skills add ThibautBaissac/rails_ai_agents/rails-model-generator. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.

What are the use cases for rails-model-generator?

Key use cases include: Automating model creation with predefined attributes and validations, Generating migration scripts for database schema updates, Implementing model specs for test-driven development.

Which IDEs are compatible with rails-model-generator?

This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.

Are there any limitations for rails-model-generator?

Requires Ruby on Rails 8.1 environment. Follows TDD principles which might not fit all development workflows.

How To Install

  1. 1. Open your terminal

    Open the terminal or command line in your project directory.

  2. 2. Run the install command

    Run: npx killer-skills add ThibautBaissac/rails_ai_agents/rails-model-generator. The CLI will automatically detect your IDE or AI agent and configure the skill.

  3. 3. Start using the skill

    The skill is now active. Your AI agent can use rails-model-generator immediately in the current project.

Related Skills

Looking for an alternative to rails-model-generator or another community skill for your workflow? Explore these related open-source skills.

View All

widget-generator

Logo of f
f

f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete privacy.

149.6k
0
AI

flags

Logo of vercel
vercel

flags is a Next.js feature management skill that enables developers to efficiently add or modify framework feature flags, streamlining React application development.

138.4k
0
Browser

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
AI