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 agentmods add skills/ag0os/rails-dev-plugin/rails-auth-patternsnpx skills add ag0os/rails-dev-plugin --skill rails-auth-patternsgit clone --depth 1 https://github.com/ag0os/rails-dev-pluginWhat 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 | $0.00121 | $0.01567 |
| Opus 5 | $0.00060 | $0.00783 |
| Sonnet 5 | $0.00024 | $0.00313 |
| Haiku 4.5 | $0.00012 | $0.00157 |
Grade A, and why
rails-auth-patterns 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 3d 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.
How it starts
The opening of the file, as written. The whole thing — 199 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Rails Authentication Patterns
The authentication approach is an orthogonal project fact, not an architecture axis — a native project can use Devise, an extracted project can use built-in auth. Match what the project already has; never suggest replacing one approach with another unless explicitly asked.
See patterns.md for detailed code examples.
Detecting the Auth Approach
Read it from the project-conventions fingerprint (Auth category), or detect directly:
1. grep "devise" Gemfile → Devise
2. grep "has_secure_password" app/models/ → built-in auth
3. Check for app/controllers/sessions_controller.rb → custom auth
4. Rails 8+? → built-in generator available
| Approach | Use When |
|---|---|
| Rails 8 generator | New Rails 8+ projects, full control, no gem dependencies |
has_secure_password (manual) |
Simple auth, full control, pre-Rails 8 |
| Devise | Multi-feature auth (confirmable, lockable, omniauthable) |
Rails 8 Built-In Auth
What the Generator Creates
bin/rails generate authentication
# Creates: User model, Session model, SessionsController,
# Authentication concern, PasswordsController, PasswordsMailer, migrations
Key Rails 8 Features (Non-Obvious)
generates_token_for with automatic invalidation:
class User < ApplicationRecord
has_secure_password
has_many :sessions, dependent: :destroy
normalizes :email_address, with: -> { _1.strip.downcase }
# Token auto-invalidates when password_salt changes (i.e., password changed)
generates_token_for :password_reset, expires_in: 15.minutes do
password_salt&.last(10)
end
# Token auto-invalidates when email changes
generates_token_for :email_confirmation, expires_in: 24.hours do
email_address
end
# Non-expiring token (e.g., unsubscribe links)
generates_token_for :unsubscribe
end
# Generate: user.generate_token_for(:password_reset)
# Find: User.find_by_token_for(:password_reset, token) # nil if expired/invalid
# Find!: User.find_by_token_for!(:password_reset, token) # raises if invalid
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.
- 3d ago First seen · 199 lines · 121 tokens per session scan A 7f59c9e9604f
rails-auth-patterns is a skill published in the GitHub repository ag0os/rails-dev-plugin (5 stars, last pushed 3mo ago), licensed MIT. It adds 121 tokens to every session and 1,567 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
contributing
Contribute to RubyLLM - set up the repo, run and record specs, add providers or chat options, work on the Rails integration, and edit docs. Use when fixing a bug, building a feature, writing specs, or changing documentation in the RubyLLM codebase.
new
Create a new project to start development quickly.
rails-conventions
Rootstrap Rails conventions. Use when writing, reviewing, or editing any Rails code — controllers, models, migrations, routes, views, mailers, initializers, locale files, or Rails config. Covers routing, ActiveRecord, migrations, i18n, time zones, mailers, assets, Bundler groups, and logging.
rspec-conventions
Rootstrap RSpec conventions. Use when writing, reviewing, or editing RSpec test files (spec//spec.rb, spec/railshelper.rb, spec/spechelper.rb, spec/support//.rb) or factories. Covers describe/context structure, let/subject, matchers, factories, mocking/stubbing, shared examples, and spec types (model, request…
ruby-conventions
Rootstrap Ruby style conventions. Use when writing, reviewing, or editing any Ruby source file (.rb, .rake, Gemfile, Rakefile, .gemspec, config.ru) to ensure code follows the Rootstrap Ruby style guide — covers layout, syntax, naming, classes/modules, exceptions, collections, strings, regexes, metaprogramming, and…
linkyee-plugin-builder
Use when the user wants to add dynamic data (GitHub stars, latest blog posts, weather, follower counts, repo activity, anything fetched from a URL) to their linkyee site by writing a build-time plugin. Triggers on phrases like "add a plugin", "show my latest Medium post on the page", "fetch X and display it", "make…