LLM Skills
~/catalog/code generation//model
Code generationGitHub source

Ruby template generator

/model

Create Ruby classes and models using an appropriate structure and following best practices.

davila7davila7
30.3k
May 22, 2026
MIT License
// skill content

Ruby Model Generator Create Ruby classes and models with proper structure and best practices. ## Purpose This command helps you quickly create Ruby model classes with proper initialization, attributes, and methods following Ruby conventions. ## Usage `` /model ` ## What this command does 1. **Creates model classes** with proper initialization methods 2. **Adds attribute accessors** and instance variables 3. **Includes validation methods** and error handling 4. **Follows Ruby conventions** and best practices 5. **Generates related test files** when applicable ## Example Output `ruby # app/models/user.rb class User attr_accessor :name, :email, :age attr_reader :id, :created_at def initialize(attributes = {}) @id = attributes[:id] || generate_id @name = attributes[:name] @email = attributes[:email] @age = attributes[:age] @created_at = Time.now @errors = [] end def valid? @errors.clear validate_presence_of_name validate_email_format validate_age_range @errors.empty? end def errors @errors.dup end def save return false unless valid? # Persist logic here true end def to_h { id: @id, name: @name, email: @email, age: @age, created_at: @created_at } end def to_json(*args) JSON.generate(to_h, *args) end private def validate_presence_of_name if @name.nil? || @name.strip.empty? @errors << "Name cannot be blank" end end def validate_email_format if @email && !@email.match?(/\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i) @errors << "Email format is invalid" end end def validate_age_range if @age && (@age < 0 || @age > 150) @errors << "Age must be between 0 and 150" end end def generate_id SecureRandom.uuid end end # Example with inheritance class AdminUser < User attr_accessor :permissions def initialize(attributes = {}) super @permissions = attributes[:permissions] || [] end def admin? true end def has_permission?(permission) @permissions.include?(permission) end private def validate_permissions unless @permissions.is_a?(Array) @errors << "Permissions must be an array" end end end ` ## Advanced Features ### Module Inclusion `ruby module Timestamps def self.included(base) base.extend(ClassMethods) end module ClassMethods def with_timestamps attr_reader :created_at, :updated_at define_method :initialize do |*args| super(*args) @created_at ||= Time.now @updated_at = @created_at end define_method :touch do @updated_at = Time.now end end end end class Post include Timestamps with_timestamps attr_accessor :title, :content def initialize(attributes = {}) @title = attributes[:title] @content = attributes[:content] super end end ` ### Class Methods and Scopes `ruby class User @@users = [] def self.all @@users.dup end def self.find_by_email(email) @@users.find { |user| user.email == email } end def self.where(conditions = {}) @@users.select do |user| conditions.all? { |key, value| user.send(key) == value } end end def self.create(attributes = {}) user = new(attributes) if user.save @@users << user user else nil end end def save return false unless valid? unless @@users.include?(self) @@users << self end true end def destroy @@users.delete(self) end end ` ## Testing Template ``ruby # spec/models/userspec.rb require 'spechelper' RSpec.describe User do let(:validattributes) do { name: 'John Doe', email: 'john@example.com', age: 30 } end describe '#initialize' do it 'sets attributes correctly' do user = User.new(validattributes) expect(user.name).to eq('John Doe') expect(user.email).to eq('john@example.com') expect(user.age).to eq(30) expect(user.id).notto benil expect(user.createdat).to bea(Time) end end describe '#valid?' do it 'returns true for valid attributes' do user = User.new(validattributes) expect(user).to bevalid end it 'returns false when name is blank' do user = User.new(validattributes.merge(name: '')) expect(user).notto bevalid expect(user.errors).to include('Name cannot be blank') end it 'returns false for invalid email format' do user = User.new(validattributes.merge(email: 'invalid-email')) expect(user).notto bevalid expect(user.errors).to include('Email format is invalid') end it 'returns false for invalid age' do user = User.new(validattributes.merge(age: -5)) expect(user).notto be_valid expect(user.errors).to incl

// original public source
davila7/claude-code-templates
/cli-tool/templates/ruby/.claude/commands/model.md
License: MIT License
Independent project, not affiliated with Anthropic. This skill remains the property of its original author.
// install this skill
Paste this command in your terminal at the root of your project:
mkdir -p .claude/commands && curl -o ".claude/commands/model.md" "https://raw.githubusercontent.com/davila7/claude-code-templates/main/cli-tool/templates/ruby/.claude/commands/model.md"
Then in Claude Code, type /model to activate it.
open_in_newOpen original source
// save
Save available after sign in.
loginSign in to save
// information
Creatordavila7
Stars 30.3k
LicenseMIT License
UpdatedMay 22, 2026
Format.md
AccessFree
// similar

Skills Code generation

View allarrow_forward