Rails Testing
pproenca/dot-skills
Ruby on Rails testing best practices for writing effective, maintainable test suites with RSpec.
Writes Minitest tests with fixtures following 37signals conventions.
$ npx skills add dilolabs/nosia --skill testing-patterns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dilolabs/nosia testing-patterns --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.vibe/skills/testing-patterns .claude/skills/testing-patterns && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "testing-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/testing-patterns into .claude/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dilolabs/nosia/tree/main/.vibe/skills/testing-patternsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dilolabs/nosia --skill testing-patterns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dilolabs/nosia testing-patterns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.vibe/skills/testing-patterns .agents/skills/testing-patterns && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "testing-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/testing-patterns into .agents/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dilolabs/nosia --skill testing-patterns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dilolabs/nosia testing-patterns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.vibe/skills/testing-patterns .cursor/skills/testing-patterns && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "testing-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/testing-patterns into .cursor/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dilolabs/nosia.git --path .vibe/skills/testing-patterns--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dilolabs/nosia --skill testing-patterns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dilolabs/nosia testing-patterns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.vibe/skills/testing-patterns .gemini/skills/testing-patterns && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "testing-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/testing-patterns into .gemini/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dilolabs/nosia testing-patternsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dilolabs/nosia --skill testing-patterns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .github/skills && cp -r skills-src/.vibe/skills/testing-patterns .github/skills/testing-patterns && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "testing-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/testing-patterns into .github/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dilolabs/nosia --skill testing-patterns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dilolabs/nosia testing-patterns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dilolabs/nosia.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.vibe/skills/testing-patterns .opencode/skills/testing-patterns && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "testing-patterns" agent skill from https://github.com/dilolabs/nosia/tree/main/.vibe/skills/testing-patterns into .opencode/skills/testing-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "testing-patterns", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
testing-patternsWrites Minitest tests with fixtures following 37signals conventions.
Testing Patterns is an agent skill from dilolabs/nosia. Writes Minitest tests with fixtures following 37signals conventions. Uses Minitest (not RSpec) and fixtures (not factories). Use when writing tests, adding test coverage, or creating fixtures. WHEN NOT: For RSpec or FactoryBot patterns (this project uses Minitest + fixtures exclusively). For test configuration/CI setup (see project docs).
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/controller-tests.md`, `references/fixture-patterns.md` and `references/system-tests.md`). Compatibility notes: Ruby 3.3+, Rails 8.0+, Minitest
It sits in Testing & QA, covering Test strategy, Test coverage and Integration testing. It works with Ruby and Ruby on Rails. The repository describes itself as: Self-hosted AI RAG + MCP Platform. The licence is MIT.
Read from SKILL.md and the folder at commit 0ef5e5d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
railsFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ruby 3.3+, Rails 8.0+, Minitest
From compatibility in the SKILL.md frontmatter.
Testing Patterns loads about 1.4k tokens when it runs, and up to ~4.8k if it reads all its reference files. Until then it costs about 89 tokens; SKILL.md has 241 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from dilolabs/nosia at commit 0ef5e5d, republished under its MIT licence (© dilolabs). 241 words, ~1,383 tokens.
.claude/skills/testing-patterns/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.You are an expert Rails testing architect specializing in Minitest with fixtures.
Minitest is plenty. Fixtures are faster.
Tech Stack: Minitest 5.20+, Rails 8.2, YAML fixtures
Location: test/models/, test/controllers/, test/system/, test/integration/
bin/rails test -- Full suitebin/rails test test/models/card_test.rb -- Specific filebin/rails test test/models/card_test.rb:14 -- Specific linebin/rails test:system -- System testsbin/rails test:parallel -- Parallel executionrequire "test_helper"
class CardTest < ActiveSupport::TestCase
setup do
@card = cards(:logo)
@user = users(:david)
Current.user = @user
Current.account = @card.account
end
teardown do
Current.reset
end
test "fixtures are valid" do
assert @card.valid?
end
test "closing card creates closure record" do
assert_difference -> { Closure.count }, 1 do
@card.close(user: @user)
end
assert @card.closed?
assert_equal @user, @card.closed_by
end
test "open scope excludes closed cards" do
@card.close
assert_not_includes Card.open, @card
assert_includes Card.closed, @card
end
endrequire "test_helper"
class CardsControllerTest < ActionDispatch::IntegrationTest
setup do
@card = cards(:logo)
sign_in_as users(:david)
end
test "should create card" do
assert_difference -> { Card.count }, 1 do
post board_cards_path(@card.board), params: {
card: { title: "New card", column_id: @card.column_id }
}
end
assert_redirected_to card_path(Card.last)
end
test "requires authentication" do
sign_out
get card_path(@card)
assert_redirected_to new_session_path
end
end# test/test_helper.rb
class ActionDispatch::IntegrationTest
def sign_in_as(user)
session_record = user.identity.sessions.create!
cookies.signed[:session_token] = session_record.token
Current.user = user
Current.identity = user.identity
Current.session = session_record
end
def sign_out
cookies.delete(:session_token)
Current.reset
end
end
class ActiveSupport::TestCase
fixtures :all
parallelize(workers: :number_of_processors)
end# Record count changes
assert_difference -> { Card.count }, 1 do ... end
# Attribute updates
@card.close
assert @card.closed?
assert_equal @user, @card.closed_by
# Errors
assert_raises ActiveRecord::RecordInvalid do
Card.create!(title: nil)
end
# Collections
assert_includes Card.open, @card
refute_includes Card.closed, @card
# HTTP responses
assert_response :success
assert_redirected_to card_path(Card.last)
# DOM assertions
assert_select "h1", "Cards"
assert_select ".card", count: 3
# Jobs and emails
assert_enqueued_with job: NotifyRecipientsJob do ... end
assert_emails 1 do ... end# BAD: Using factories
let(:card) { FactoryBot.create(:card) }
# GOOD: Use fixtures
setup { @card = cards(:logo) }
# BAD: Testing implementation
test "calls create_closure" do
@card.expects(:create_closure!)
@card.close
end
# GOOD: Test behavior
test "closing creates closure" do
@card.close
assert @card.closed?
end
# BAD: Creating data when fixtures exist
setup { @user = User.create!(name: "Test") }
# GOOD: Use fixtures
setup { @user = users(:david) }
# BAD: Testing Rails functionality
test "validates presence of title" do ...
# GOOD: Only test custom validations
test "validates title doesn't contain profanity" do ...references/fixture-patterns.md -- YAML fixture patterns, ERB, UUID fixtures, associationsreferences/controller-tests.md -- Controller/integration test patterns, Turbo Stream assertionsreferences/system-tests.md -- Capybara system test patterns, setup, assertions© dilolabs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in .vibe/skills/testing-patterns of dilolabs/nosia.
Open the folder on GitHubat commit 0ef5e5d
We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in dilolabs/nosia, which our catalogue first saw on October 7, 2026.
Testing Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Testing Patterns this skilldilolabs/nosia | 213 | 1 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Rails Testingpproenca/dot-skills | 214 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Dotnet Testingnovotnyllc/dotnet-artisan | 233 | — | ~972 | Automated safety check: Pass | MIT | |
| Wp Test Strategyjorgerosal/wordpress-skills | 100 | — | ~974 | Automated safety check: Pass | MIT | |
| Assessing Test Coveragebitwarden/ai-plugins | 154 | — | ~1.1k | Automated safety check: Pass | Custom licence | |
| Testing Strategiesrohitg00/awesome-claude-code-toolkit | 2.7k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 |
pproenca/dot-skills
Ruby on Rails testing best practices for writing effective, maintainable test suites with RSpec.
novotnyllc/dotnet-artisan
Defines .NET test strategy and implementation patterns across xUnit v3 (Facts, Theories, fixtures, IAsyncLifetime), integration testing (WebApplicationFactory, Testcontainers), Aspire testing…
jorgerosal/wordpress-skills
WordPress testing strategy and review guidance. An agent skill from jorgerosal/wordpress-skills.
bitwarden/ai-plugins
A skill your agent uses when determining what test coverage ALREADY exists for a specific change (a PR, Jira key, Tech Breakdown doc, Testmo CSV, changed paths, or named component).
rohitg00/awesome-claude-code-toolkit
Testing strategies including contract testing, snapshot testing, mutation testing, property-based testing, and test organization
einverne/dotfiles
Testing methodologies, test-driven development (TDD), unit and integration testing, and testing best practices across multiple frameworks.
dilolabs/nosia
Builds REST APIs using respondto blocks with Jbuilder templates following the 37signals same-controllers-different-formats philosophy.
dilolabs/nosia
Implements custom passwordless authentication without Devise.
dilolabs/nosia
Implements HTTP caching with ETags, fragment caching, Russian doll caching, and Solid Cache configuration.
dilolabs/nosia
Creates and refactors model and controller concerns for shared behavior.
dilolabs/nosia
Builds event tracking, activity feeds, and webhook systems following 37signals patterns with a generic Event model and Eventable concern.
dilolabs/nosia
Implements shallow background jobs with later/now conventions using Solid Queue.
Works with
Categories
Writes Minitest tests with fixtures following 37signals conventions. Testing Patterns is an agent skill from dilolabs/nosia. Writes Minitest tests with fixtures following 37signals conventions.
Testing Patterns fits situations like: adding test coverage; creating fixtures.
Run `npx skills add dilolabs/nosia --skill testing-patterns -a claude-code`. Or copy the skill folder (.vibe/skills/testing-patterns in dilolabs/nosia) into .claude/skills/testing-patterns in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dilolabs/nosia --skill testing-patterns -a codex`. Or copy the skill folder (.vibe/skills/testing-patterns in dilolabs/nosia) into .agents/skills/testing-patterns in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dilolabs/nosia --skill testing-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/testing-patterns, .gemini/skills/testing-patterns, .github/skills/testing-patterns and .opencode/skills/testing-patterns in your project.
Going by SKILL.md and its folder, Testing Patterns needs the command-line tools its instructions call (rails). Compatibility (from SKILL.md): Ruby 3.3+, Rails 8.0+, Minitest.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Testing Patterns is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Testing Patterns: Rails Testing (pproenca/dot-skills, 214 stars), Dotnet Testing (novotnyllc/dotnet-artisan, 233 stars), Wp Test Strategy (jorgerosal/wordpress-skills, 100 stars) and Assessing Test Coverage (bitwarden/ai-plugins, 154 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dilolabs (a GitHub organization) maintains it in dilolabs/nosia, which has 213 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 9, 2026.
Source: dilolabs/nosia on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.