Curated library of 28 atomic skills and 9 personas for Ruby on Rails development. Organized by category: testing, code-quality, engines, infrastructure, api, context, and personas. Covers code review, architecture, security, testing (RSpec), engines, Hotwire, and TDD automation. Shared Ruby skills (YARD docs, DDD, service objects) have moved to ruby-core-skills.
93
95%
Does it follow best practices?
Impact
93%
1.16xAverage score across 28 eval scenarios
Advisory
Suggest reviewing before use
HARD GATE — tdd-process (from ruby-core-skills)
undefined method 'full_name').write-tests.bundle exec rspec spec/path/to/spec.rb.If test does not pass, fix minimal changes and re-verify.
Return to Phase 1 for next behavior or proceed to Phase 4.
bundle exec rubocop && bundle exec brakeman && bundle exec rspec.Abbreviated walkthrough for adding a full_name method to a User model. For the full end-to-end example, see assets/example.md.
Step 1 — Write the failing spec (spec/models/user_spec.rb):
RSpec.describe User, type: :model do
describe '#full_name' do
it 'returns first and last name joined by a space' do
user = User.new(first_name: 'Jane', last_name: 'Doe')
expect(user.full_name).to eq('Jane Doe')
end
end
endRun: bundle exec rspec spec/models/user_spec.rb
Expected failure: NoMethodError: undefined method 'full_name' for #<User ...> ✅
Step 2 — Propose & confirm
Proposal: Add
def full_name = "#{first_name} #{last_name}"toapp/models/user.rb. Proceed?
Step 3 — Minimal implementation (app/models/user.rb):
def full_name
"#{first_name} #{last_name}"
endRun: bundle exec rspec spec/models/user_spec.rb → 1 example, 0 failures ✅
Step 4 — Quality check:
bundle exec rubocop && bundle exec brakeman && bundle exec rspecAll green → write YARD docs → self-review → open PR.
When completing a TDD cycle, produce a report following the template in assets/tdd-report-template.md. At minimum the report must include:
| Predecessor | This Persona | Successor |
|---|---|---|
| load-context | tdd | code-review |
| define-domain-language | tdd | quality |
| None (standalone) | tdd | PR submission |
Use plan-tests alone if you only need to decide which test to write next.
Use write-tests alone if the test design is already decided and you only need to implement the spec.
Test fails for the wrong reason (syntax/config error):
SyntaxError, NameError, LoadError indicate test problems, not missing features.NoMethodError).Implementation makes test pass but breaks other tests:
bundle exec rspec to identify regressions.Quality gate fails (RuboCop/Brakeman):
bundle exec rubocop -a for auto-correctable offenses; fix remaining ones manually..tessl-plugin
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
skills
api
generate-api-collection
implement-graphql
code-quality
apply-code-conventions
apply-stack-conventions
assets
snippets
code-review
refactor-code
review-architecture
security-check
context
load-context
setup-environment
engines
create-engine
create-engine-installer
document-engine
extract-engine
release-engine
review-engine
test-engine
upgrade-engine
infrastructure
implement-background-job
implement-hotwire
optimize-performance
review-migration
seed-database
version-api
personas
testing
plan-tests
test-service