rspec

RSpec Ruby testing framework. Use for Ruby testing.

7 stars

Best use case

rspec is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

RSpec Ruby testing framework. Use for Ruby testing.

Teams using rspec should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/rspec/SKILL.md --create-dirs "https://raw.githubusercontent.com/G1Joshi/Agent-Skills/main/skills/testing/rspec/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/rspec/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How rspec Compares

Feature / AgentrspecStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

RSpec Ruby testing framework. Use for Ruby testing.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# RSpec

RSpec is the primary testing tool for Ruby (especially Rails). It focuses on "Behavior Driven Development" (BDD), making tests read like documentation specifications.

## When to Use

- **Ruby/Rails Projects**: The community standard (over Minitest) for complex apps.
- **Documentation**: You want tests that generate readable specs.

## Quick Start

```ruby
# user_spec.rb
RSpec.describe User, type: :model do
  context "when newly created" do
    it "has no name" do
      user = User.new
      expect(user.name).to be_nil
    end
  end
end
```

## Core Concepts

### `describe` vs `context`

- `describe`: Describes the thing being tested (Class, Method).
- `context`: Describes the condition ("when user is logged in").

### Let and Let!

Lazy-loaded variables.

- `let(:user) { User.create }`: Created only when referenced.
- `let!(:user) { User.create }`: Created before each test (eager).

### Matchers

`expect(x).to eq(y)`, `be_valid`, `change { User.count }.by(1)`.

## Best Practices (2025)

**Do**:

- **Use `subject`**: Define the subject of the test explicitly.
- **Keep `it` blocks short**: One expectation per block ideally.
- **Use FactoryBot**: Don't use Fixtures (YAML). Use Factories to build test data.

**Don't**:

- **Don't overuse `before(:all)`**: It introduces shared state between examples. Use `before(:each)` (default).
- **Don't put logic in specs**: Specs should verify behavior, not calculate it.

## References

- [RSpec Documentation](https://rspec.info/)