Agent skill
session-management
Implement database-backed session management with cookie handling, audit trails, and multiple device support. Use when building authentication systems that need session tracking, device management, or security audit capabilities.
Install this agent skill to your Project
npx add-skill https://github.com/rbarazi/agent-skills/tree/main/skills/session-management
SKILL.md
Session Management Pattern
Database-backed session management for Rails with audit trails, multi-device support, and session revocation.
When to Use
- Building authentication with session tracking
- Implementing "sign out everywhere" functionality
- Adding device/session management to settings
- Supporting Bearer token authentication for APIs
- Creating security audit trails
Why Database-Backed Sessions?
| Feature | Cookie-Only | Database-Backed |
|---|---|---|
| Session revocation | No | Yes |
| "Sign out everywhere" | No | Yes |
| Audit trail | No | Yes |
| Multiple device view | No | Yes |
| API token support | Limited | Full |
Quick Start
1. Session Model
# app/models/session.rb
class Session < ApplicationRecord
belongs_to :user
scope :active, -> { where('created_at > ?', 30.days.ago) }
scope :recent, -> { order(created_at: :desc) }
end
2. Migration
class CreateSessions < ActiveRecord::Migration[8.0]
def change
create_table :sessions, id: :uuid do |t|
t.references :user, null: false, foreign_key: true, type: :uuid
t.string :ip_address
t.string :user_agent
t.timestamps
end
end
end
3. Authentication Concern
# app/controllers/concerns/authentication.rb
module Authentication
extend ActiveSupport::Concern
included do
before_action :require_authentication
end
private
def require_authentication
resume_session || request_authentication
end
def resume_session
Current.session ||= find_session_by_cookie
end
def find_session_by_cookie
Session.find_by(id: cookies.signed[:session_id])
end
def start_new_session_for(user)
user.sessions.create!(
user_agent: request.user_agent,
ip_address: request.remote_ip
).tap do |session|
Current.session = session
cookies.signed.permanent[:session_id] = {
value: session.id,
httponly: true,
same_site: :lax
}
end
end
def terminate_session
Current.session.destroy
cookies.delete(:session_id)
end
end
Cookie Security
signed- Cryptographically signed, tamper-proofpermanent- 20-year expiryhttponly: true- XSS protectionsame_site: :lax- CSRF protection
Reference Files
For complete implementation details:
- models.md - Session model with activity tracking, device detection
- controllers.md - Sessions controller, settings controller, API controller
- views.md - Session management UI
- i18n.md - Translation keys
- security.md - Session limits, expiry, IP monitoring
- testing.md - Session factories and specs
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
test-auth-helpers
Implement authentication testing patterns with RSpec, FactoryBot, and test helpers for Rails applications. Use when writing controller specs, system tests, or request specs that require authenticated users and multi-tenant account context.
multi-tenant-accounts
Implement multi-tenant architecture using an Account model as the tenant boundary. Use when building SaaS applications, team-based apps, or any system where data must be isolated between organizations/accounts.
user-management
Implement user CRUD operations within an account with permission controls and feature flags. Use when building team member management, user administration, or account user settings in multi-tenant Rails applications.
oauth21-provider
Implement an RFC-compliant OAuth 2.1 authorization server in Rails applications. Use when building apps that need to authorize third-party clients (like MCP clients, API consumers, or external integrations) using industry-standard OAuth flows with PKCE, dynamic client registration, and token management.
password-reset-flow
Implement secure password reset with Rails 8's built-in token generation. Use when building "forgot password" functionality with email verification and time-limited reset tokens.
code-pattern-extraction
Extract reusable design and implementation patterns from codebases into Skills. Use when asked to analyze code for patterns, document architectural decisions, create transferrable implementation guides, or extract knowledge into Skills. Transforms working implementations into comprehensive, reusable Skills that can be applied to new projects.
Didn't find tool you were looking for?