Agent skill
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.
Install this agent skill to your Project
npx add-skill https://github.com/rbarazi/agent-skills/tree/main/skills/multi-tenant-accounts
SKILL.md
Multi-Tenant Account Pattern
Account-based multi-tenancy for Rails applications. All resources scoped to accounts for data isolation.
Quick Start
- Create Account model as the tenant container
- Add
belongs_to :accountto User model - Configure Current model to delegate account from session
- Scope all resources via
Current.account
Core Architecture
Account (tenant boundary)
└── Users (belong to account)
└── All resources (scoped to account)
Current.session → Current.user → Current.account
Components
| Component | Purpose | Reference |
|---|---|---|
| Account model | Tenant container | models.md |
| User-Account relationship | User scoping | models.md |
| Current model | Request-scoped access | models.md |
| Controller scoping | Safe queries | controllers.md |
| Database migrations | Schema design | migrations.md |
| Testing patterns | Isolation tests | testing.md |
Minimal Implementation
Account Model
class Account < ApplicationRecord
has_many :users, dependent: :destroy
has_many :agents, dependent: :destroy # Example resource
validates :name, presence: true, uniqueness: true
end
User-Account Association
class User < ApplicationRecord
belongs_to :account
has_secure_password
end
Current Model
class Current < ActiveSupport::CurrentAttributes
attribute :session
delegate :user, to: :session, allow_nil: true
delegate :account, to: :user, allow_nil: true
end
Controller Scoping
class AgentsController < ApplicationController
def index
@agents = Current.account.agents # Always scope to account
end
def show
@agent = Current.account.agents.find(params[:id]) # Security critical!
end
end
Critical Security Pattern
# CORRECT - scoped to account
@agent = Current.account.agents.find(params[:id])
# WRONG - exposes all accounts' data!
@agent = Agent.find(params[:id]) # SECURITY VULNERABILITY
Account Access Pattern
# Anywhere in your application:
Current.account # => #<Account id: "abc-123">
Current.user # => #<User id: "xyz-456">
Current.account.agents # => [Agent, Agent, ...]
Current.account.users # => [User, User, ...]
Detailed References
- models.md: Account model, associations, junction tables
- controllers.md: Controller scoping patterns, settings controllers
- migrations.md: Database schema and migrations
- testing.md: Testing multi-tenant isolation
- patterns.md: Common patterns and anti-patterns
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.
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.
slack-mcp-server
Create MCP servers that interact with Slack APIs. Use when building agent tools for Slack canvases, posting messages, or other Slack operations via Model Context Protocol.
Didn't find tool you were looking for?