Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add thecodingend/rails-starter --skill inertia-rails-testinggit clone --depth 1 https://github.com/thecodingend/rails-starterWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/thecodingend/rails-starter/inertia-rails-testing)<a href="https://agentmods.dev/skills/thecodingend/rails-starter/inertia-rails-testing"><img src="https://agentmods.dev/badge/skills/thecodingend/rails-starter/inertia-rails-testing/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/thecodingend/rails-starter/inertia-rails-testing"><img src="https://agentmods.dev/badge/skills/thecodingend/rails-starter/inertia-rails-testing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00128 | $0.01551 |
| Opus 5.5 | $0.00051 | $0.00620 |
| Sonnet 5.5 | $0.00026 | $0.00310 |
| Haiku 4.5 | $0.00013 | $0.00155 |
Grade A, and why
inertia-rails-testing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to inertia-rails-testing — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 177 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Inertia Rails Testing
Testing patterns for Inertia responses with RSpec and Minitest.
For each controller action, verify:
- Correct component →
render_component('users/index') - Expected props →
have_props(users: satisfy { ... }) - No leaked data →
have_no_prop(:secret) - Flash messages →
follow_redirect!thenhave_flash(notice: '...') - Deferred props →
have_deferred_props(:analytics)
Common mistake: Forgetting follow_redirect! after PRG — without it, you're
asserting against the 302 redirect response, not the Inertia page that follows.
Setup
# spec/rails_helper.rb
require 'inertia_rails/rspec'
RSpec Matchers
| Matcher | Purpose |
|---|---|
be_inertia_response |
Verify response is Inertia format |
render_component('path') |
Check rendered component name |
have_props(key: value) |
Partial props match |
have_exact_props(key: value) |
Exact props match |
have_no_prop(:key) |
Assert prop absent |
have_flash(key: value) |
Partial flash match |
have_exact_flash(key: value) |
Exact flash match |
have_no_flash(:key) |
Assert flash absent |
have_deferred_props(:key) |
Check deferred props exist |
have_view_data(key: value) |
Partial view_data match |
RSpec Examples
ALWAYS use matchers (render_component, have_props, have_flash) instead of
direct property access (inertia.component, inertia.props[:key]):
# BAD — direct property access:
# expect(inertia.component).to eq('users/index')
# expect(inertia.props[:users].length).to eq(3)
# GOOD — use matchers:
expect(inertia).to render_component('users/index')
expect(inertia).to have_props(users: satisfy { |u| u.length == 3 })
# Key pattern: follow_redirect! after POST/PATCH/DELETE before asserting
it 'redirects with flash on success' do
post users_path, params: { user: valid_params }
expect(response).to redirect_to(users_path)
follow_redirect!
expect(inertia).to have_flash(notice: 'User created!')
end
it 'returns validation errors on failure' do
post users_path, params: { user: { name: '' } }
follow_redirect!
expect(inertia).to have_props(errors: hash_including('name' => anything))
end
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 177 lines · 128 tokens per session scan A a527ef9463eb
inertia-rails-testing is a skill published in the GitHub repository thecodingend/rails-starter (5 stars, last pushed 2mo ago), licensed MIT. It adds 128 tokens to every session and 1,551 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 100% identical to inertia-rails-testing, differing in 0 lines, and is treated as a copy.
inertia-rails-testing compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| inertia-rails-testingthecodingend/rails-starter | Skill | 5 | 2mo ago | MIT | A | 128 | Claude Code, Codex |
| rspec-conventionsrootstrap/rails_api_base | Skill | 634 | 2d ago | MIT | A | 82 | Claude Code |
| testunit-skillLambdaTest/agent-skills | Skill | 390 | yesterday | MIT | A | 70 | Claude Code, Codex |
| rubyMindrally/skills | Skill | 297 | 29d ago | Apache-2.0 | A | 32 | Claude Code |
| rspecMindrally/skills | Skill | 297 | 29d ago | Apache-2.0 | A | 24 | Claude Code |
| test-serviceigmarin/rails-agent-skills | Skill | 29 | 1mo ago | MIT | A | 36 | Claude Code, Codex |
| write-testsigmarin/rails-agent-skills | Skill | 29 | 1mo ago | MIT | A | 37 | Claude Code, Codex |