agentsclimarketplace

Rspec

Skill tuannv14/claude-team-toolkit/skills/rspec

Use when running RSpec on a Rails project — re-running only failed examples, parallelizing with parallel_tests, generating coverage, or bisecting test-order failures. Multi-project via RSPEC_PROFILE.From its SKILL.md

Install
npx -y skills add tuannv14/claude-team-toolkit --skill rspec

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 1 credential source: `~/.rspec/credentials`.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 4 commands, including `bundle exec rspec` and 3 more.

SKILL.md

5.9 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

/rspec — Rails test runner

Wraps bundle exec rspec with structured output parsing and selective retry. No external credentials.

Profile resolution: --profileRSPEC_PROFILE~/.rspec/active_profile[default].

Overview

Wraps bundle exec rspec with structured JSON output parsing and selective retry. No external credentials. Profiles isolate per-project test settings (parallel workers, seed strategy, rails_env).

When to Use

  • Running RSpec test suites with structured failure output
  • Re-running only failed examples (after a fix attempt)
  • Parallelizing with parallel_tests (multi-core machines, CI)
  • Bisecting test-order failures (--bisect)
  • Coverage reports via simplecov

When NOT to Use

  • Non-Rails Ruby tests → bare rspec works fine
  • Minitest projects → use rake test, not this skill
  • E2E / browser tests → not RSpec's job
  • Production debugging → tests are not a debugger

Profile config

~/.rspec/credentials (mode 600 — though profiles rarely contain secrets):

[default]
project_path = .
rails_env = test
workers = 1
seed_strategy = random        # or "fixed:42" for repro

[ci]
project_path = .
rails_env = test
workers = 4                   # parallel via parallel_tests
seed_strategy = fixed:1234

Helpers

Shared profile/INI/ctt_* pattern reference: profiles-and-credentials.

source "$HOME/.claude-team-toolkit/lib/credentials.sh"
ctt_load_creds rspec "$PROFILE"

cd "$CTT_PROJECT_PATH" || { echo "No project at $CTT_PROJECT_PATH" >&2; return 1; }

build_rspec_cmd() {
  RSPEC_CMD=(bundle exec rspec)
  case "$CTT_SEED_STRATEGY" in
    fixed:*) RSPEC_CMD+=(--seed "${CTT_SEED_STRATEGY#fixed:}") ;;
    random|"") RSPEC_CMD+=(--order random) ;;
  esac
  RSPEC_CMD+=(--format documentation --format json --out /tmp/rspec.json)
}

Dispatch

run [path] [--example "pattern"] — run specs

build_rspec_cmd
RAILS_ENV="$CTT_RAILS_ENV" "${RSPEC_CMD[@]}" "${1:-spec/}" ${EXAMPLE:+--example "$EXAMPLE"}

After run, parse /tmp/rspec.json:

jq -r '
  "Examples: \(.summary.example_count)  Failed: \(.summary.failure_count)  Pending: \(.summary.pending_count)  Duration: \(.summary.duration)s\n\n" +
  "Failed:\n" + (
    if .summary.failure_count == 0 then "  none"
    else (.examples | map(select(.status=="failed")) | map("  \(.full_description)\n    \(.file_path):\(.line_number)") | join("\n"))
    end
  )
' /tmp/rspec.json

failed — re-run only failures from last run

build_rspec_cmd; "${RSPEC_CMD[@]}" --only-failures

next-failure — run until first failure

build_rspec_cmd; "${RSPEC_CMD[@]}" --next-failure

Iterate: fix → run → next failure → fix.

parallel [path] — parallel_tests (workers > 1)

[ "$CTT_WORKERS" -gt 1 ] || { echo "Profile workers=$CTT_WORKERS — use 'run'" >&2; return 1; }
grep -q "parallel_tests" Gemfile.lock || {
  echo "parallel_tests not in Gemfile.lock — add: gem 'parallel_tests', group: :test" >&2
  return 1
}

# Setup parallel test databases (one-time per machine)
[ -f "config/database.yml" ] && bundle exec rake parallel:create parallel:load_schema 2>/dev/null || true

bundle exec parallel_rspec -n "$CTT_WORKERS" "${1:-spec/}"

coverage [path] — simplecov coverage

grep -q "simplecov" Gemfile.lock || {
  echo "simplecov not in Gemfile — add: gem 'simplecov', require: false, group: :test" >&2
  return 1
}

# Verify spec_helper has SimpleCov.start at top
grep -q "SimpleCov.start" spec/spec_helper.rb 2>/dev/null || \
grep -q "SimpleCov.start" spec/rails_helper.rb 2>/dev/null || {
  echo "Add 'require \"simplecov\"; SimpleCov.start \"rails\"' at TOP of spec/spec_helper.rb" >&2
  return 1
}

build_rspec_cmd
COVERAGE=true RAILS_ENV="$CTT_RAILS_ENV" "${RSPEC_CMD[@]}" "${1:-spec/}"
echo "Coverage: file://$(pwd)/coverage/index.html"
[ -f coverage/.last_run.json ] && jq -r '"Line coverage: \(.result.line)%"' coverage/.last_run.json

summary — last run summary (no re-run)

[ -f /tmp/rspec.json ] || { echo "No prior run found" >&2; return 1; }
jq -r '"Examples: \(.summary.example_count)  Failed: \(.summary.failure_count)  Pending: \(.summary.pending_count)  Duration: \(.summary.duration)s"' /tmp/rspec.json

tag <tag-name> [path] — run only tagged

build_rspec_cmd; "${RSPEC_CMD[@]}" --tag "$TAG" "${1:-spec/}"

Common tags: :focus, :slow, :integration.

bisect <description> — find order-dependent failure

bundle exec rspec --bisect --example "$DESC"

Common Mistakes

  • Forgetting RAILS_ENV=test → drops dev/prod data. Skill enforces this.
  • --seed random then trying to reproduce → impossible. Set fixed:N for repro.
  • Running parallel with workers=1 in profile → no speedup, use run instead
  • simplecov.start AFTER require 'rails' → coverage misses framework load
  • Re-running full suite when --only-failures would work → wastes minutes
  • "Database is locked" → another test process holding it; kill stale rspec first

Implementation notes

  • --format json requires RSpec 3+.
  • /tmp/rspec.json overwritten each run.
  • parallel_tests uses RAILS_ENV=test + TEST_ENV_NUMBER to isolate DBs (myapp_test1, myapp_test2...).
  • --seed N reproduces order — important for debugging order-dependent failures.

Safety

  • Tests run with full project access — never run untrusted spec files.
  • RAILS_ENV=test enforced — refuse if profile has non-test rails_env.
  • Test databases get dropped/recreated. Profile must point to TEST DB, not staging/prod.

Token-saving tip

Use --example "pattern" for focused subset during dev, full parallel only on commit/push.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most unit integration skills give in ~1.6k tokens

Counted across 149 of the 202 authors here whose files we hold, read 2026-09-06

  • Structure tests as arrange, act, assertin 17 of 149
  • Test behavior, not implementationin 16 of 149
  • Mock all external dependenciesin 14 of 149
  • Keep tests independentin 9 of 149
  • Implement minimal code to passin 7 of 149
  • Write a failing test firstin 7 of 149
  • Fix or delete flaky tests immediatelyin 7 of 149
  • Verify one behaviour per test functionin 7 of 149
  • Name tests MethodName_StateUnderTest_ExpectedBehaviorin 6 of 149
  • Separate arrange, act, and assert with blank linesin 6 of 149
  • Target at least 80 percent core logic coveragein 6 of 149
  • Create factory fixtures for test datain 6 of 149

Said here and by no other author read

  • set RAILS_ENV=test on every run
  • re-run only failed examples after a fix
  • iterate fix then next-failure
  • use parallel_tests only with multiple workers
  • create parallel test databases once per machine
  • place SimpleCov.start at top of spec_helper

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.