igmarin/rails-agent-skills

seed-database

Use when choosing seeds, fixtures, or factories for Rails dev/test data. Seeds must be idempotent. Trigger words: seeds, fixtures, test data, development data.

First seen Aug 14, 2026

Installation

$ npx skills add igmarin/rails-agent-skills --skill seed-database

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from igmarin/rails-agent-skills · top by installs.

npx skills add igmarin/rails-agent-skills

Browse all from igmarin/rails-agent-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 24
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0.0
LicenseMIT
More metadata
version
1.0.0
user-invocable
true

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,241 B
  • docs SUMMARY.md 180 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 18 installs

SKILL.md

Seed Database

Manage development and test data effectively.

Quick Reference

Use Solution
Static reference data db/seeds.rb with findorcreate_by!
Test scenarios FactoryBot in spec/factories/
Complex relationships Both combined

HARD-GATE

NEVER commit production data to seeds
ALWAYS use factories for test-specific scenarios
ALWAYS make seeds idempotent (can run multiple times safely)
NEVER hardcode credentials (passwords, API keys, secrets) in seeds, factories, or examples
  - Use ENV variables (e.g., ENV.fetch('DEFAULT_SEED_PASSWORD')) or SecureRandom.hex(16) for non-production data
  - Use `rails credentials:edit` to manage production secrets, never commit them in code

Core Process

  1. Write idempotent seeds — use findorcreate_by! so re-runs are safe.
  2. Scope by environment — guard non-production data with Rails.env checks.
  3. Run seeds — execute rails db:seed (or rails db:setup for a fresh database).
  4. Validate idempotency — run rails db:seed a second time and confirm no duplicates or errors.
  5. Verify data — open rails console and spot-check expected records exist with correct attributes.

Minimal Inline Example

A copy-paste ready db/seeds.rb covering idempotency, environment scoping, and safe credentials:

# db/seeds.rb

# Static reference data — safe to run repeatedly
Role.find_or_create_by!(name: 'admin') do |r|
  r.description = 'Full system access'
end

Role.find_or_create_by!(name: 'member') do |r|
  r.description = 'Standard user access'
end

# Development-only seed data — never runs in production
if Rails.env.development?
  User.find_or_create_by!(email: '[email protected]') do |u|
    u.role       = Role.find_by!(name: 'admin')
    u.password   = ENV.fetch('DEFAULT_SEED_PASSWORD', SecureRandom.hex(16))
  end
end

For FactoryBot factory definitions and more complex relationship patterns, see [EXAMPLES.md](EXAMPLES.md).

Extended Resources (Progressive Disclosure)

Load these files only when their specific content is needed:

  • [EXAMPLES.md](EXAMPLES.md) — Use when you need complete seeding examples with environment-specific patterns and FactoryBot factory definitions
  • [references/workflow.md](references/workflow.md) — Use when implementing complex seeding workflows or migration-dependent seed data

Output Style

  1. Use idiomatic Rails seeding patterns.
  2. Structure factories clearly.
  3. Follow the credential and idempotency rules in HARD-GATE without exception.
  4. Include verification commands: rails db:seed, a second idempotency run, and a rails console spot-check.
  5. Language — Must be in English unless explicitly requested otherwise.

Integration

Skill When to chain
write-tests When setting up test scenarios
review-migration When ensuring DB schema is aligned