rspec — скилл для Claude Code: правила тестов на RSpec
Задаёт агенту правила написания тестов на RSpec для Ruby и Rails: организация, данные, изоляция. Пригодится, когда спеки расползаются и дублируются.
npx skills add Mindrally/skills --skill rspec -a claude-codeЧто делает rspec
Скилл превращает агента в знатока Ruby, Rails и RSpec. Он держит в голове набор принципов: тесты покрывают типичные случаи и краевые, включая неверный ввод и ошибки. Блоки describe, context и it получают осмысленные имена, проверки пишутся через expect, а структура каталога со спеками повторяет структуру исходников.
Для данных скилл советует let и let! вместо щедрой подготовки в before, а фабрики FactoryBot ставит выше фикстур. Каждый тест остаётся независимым: внешние сервисы и базы мокаются, методы стабятся. Оговорка есть и в обратную сторону — мокать всё подряд не надо, реальное поведение проверяйте там, где это возможно.
Дублирование скилл предлагает убирать через shared_examples и shared_context, а повторяющиеся проверки выносить в хелперы и свои матчеры. Внутри — один файл SKILL.md с принципами и примером структуры спека для модели User. Ничего, кроме самого текста правил, скилл не несёт: ни гемов, ни конфигов он не ставит, так что rspec-rails и FactoryBot в проекте должны быть до того, как вы попросите агента писать тесты.
Какие задачи решает
- разложить спеки по
describeиcontextбез каши - убрать дублирующуюся подготовку данных между тестами
- изолировать тест от внешнего API через мок
- вынести повторяющиеся проверки в
shared_examples - дописать краевые случаи к уже готовому тесту
Примеры запросов агенту
- Напиши спеки для модели User по правилам скилла rspec
- Разбей этот файл спека на describe и context, данные готовь через let и FactoryBot
- Вынеси повторяющиеся проверки из этих тестов в shared_examples
Как установить rspec
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill rspec -a claude-code2Вручную: положить файлы
~/.claude/skills/rspec/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/rspec/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill rspec -a codex2Вручную: положить файлы
.agents/skills/rspec/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill rspec -a cursor2Вручную: положить файлы
.cursor/skills/rspec/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills rspec2Вручную: положить файлы
.github/skills/rspec/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill rspec -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path rspecВручную: положить файлы
.devin/skills/rspec/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill rspec -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о rspec
Как установить rspec в Claude?
Выполните npx skills add Mindrally/skills --skill rspec -a claude-code. После этого файл скилла лежит в ~/.claude/skills/rspec/SKILL.md.
Что делает скилл rspec?
Он даёт агенту набор правил по тестам на RSpec: как именовать блоки, как готовить данные через let и FactoryBot, как изолировать тесты и убирать дублирование. Агент применяет их, когда пишет или правит спеки.
Нужно ли что-то ставить в проект до работы со скиллом?
Сам скилл приносит только текст правил. Чтобы примеры и советы ложились на код, в проекте должны быть RSpec и FactoryBot — скилл их не устанавливает.
Исходный текст
SKILL.md · Apache-2.0
---
name: rspec
description: RSpec testing best practices for Ruby and Rails applications, covering test organization, data management, and isolation patterns.
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# RSpec Testing Best Practices
You are an expert in Ruby, Rails, and RSpec testing.
## Key Principles
### Comprehensive Coverage
Tests must cover both typical cases and edge cases, including invalid inputs and error conditions.
### Readability and Clarity
- Employ descriptive names for `describe`, `context`, and `it` blocks
- Use the `expect` syntax for improved assertion readability
- Keep test code concise without unnecessary complexity
- Include comments explaining complex logic
### Test Organization
- Use `describe` for classes/modules and `context` for different scenarios
- Use the `subject` helper to prevent repetition when defining objects under test
- Mirror your source file structure within the spec directory
### Test Data Management
- Leverage `let` and `let!` for minimal, necessary setup
- Prefer FactoryBot factories over fixtures for generating test data
- Create only the data necessary for each test
### Test Isolation
- Each test must be independent without shared state between tests
- Mock external services (APIs, databases) and stub methods appropriately
- Avoid over-mocking: test real behavior when feasible
### Reduce Duplication
- Share common behaviors across contexts using `shared_examples`
- Extract repetitive patterns into helpers or custom matchers
- Use `shared_context` for common setup across multiple specs
## Example Structure
```ruby
RSpec.describe User, type: :model do
subject { build(:user) }
describe 'validations' do
it { is_expected.to validate_presence_of(:email) }
it { is_expected.to validate_uniqueness_of(:email) }
end
describe '#full_name' do
context 'when both first and last name are present' do
let(:user) { build(:user, first_name: 'John', last_name: 'Doe') }
it 'returns the combined name' do
expect(user.full_name).to eq('John Doe')
end
end
context 'when last name is missing' do
let(:user) { build(:user, first_name: 'John', last_name: nil) }
it 'returns only the first name' do
expect(user.full_name).to eq('John')
end
end
end
end
```
© Mindrally · Apache-2.0 · Mindrally/skills