saas-multi-tenant — Claude Code skill: what it does, how to install
Guides the agent in structuring multi-tenant SaaS backends with PostgreSQL and TypeScript. Sets up database row policies, request context middleware, and query filtering.
npx claude-code-templates@latest --skill development/saas-multi-tenantWhat saas-multi-tenant does
The skill provides architectural workflows for isolating tenant data inside a single shared database. For workloads under 1000 accounts, it relies on adding a mandatory tenant_id column to every domain table and composite index. PostgreSQL Row-Level Security (RLS) policies act as the database safeguard, evaluating rows against a session setting.
At the framework layer, the skill covers middleware for Express and Next.js routes. The handler pulls the organization ID from incoming tokens and executes set_config in an active database transaction. It also creates interception logic for Prisma or Drizzle query builders to inject tenant criteria into read and write commands.
Cross-tenant administrative endpoints must execute under dedicated database credentials or bypass policies explicitly. Reusing standard customer sessions for management tooling creates dangerous permission leaks.
What it helps with
- isolate tenant records using PostgreSQL Row-Level Security policies
- bind tenant session context in database middleware per request
- inject tenant filters into Prisma and Drizzle ORM operations
- configure distinct routes for cross-account administrative operations
- enforce required tenant identifiers across database migration scripts
Example prompts for the agent
- Write PostgreSQL RLS policies to isolate the projects table by tenant session ID
- Set up Express middleware that passes tenantId to Postgres via set_config in a transaction
- Configure a Prisma extension that automatically attaches tenantId to every query
How to install saas-multi-tenant
1claude-code-templates
npx claude-code-templates@latest --skill development/saas-multi-tenant2Skills CLI (Vercel)
npx skills add davila7/claude-code-templates --skill saas-multi-tenant -a claude-code3Manually: put the files in place
~/.claude/skills/saas-multi-tenant/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/saas-multi-tenant/
Manually: put the files in place
.agents/skills/saas-multi-tenant/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/saas-multi-tenant/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install davila7/claude-code-templates saas-multi-tenant2Manually: put the files in place
.github/skills/saas-multi-tenant/SKILL.mdPlatform CLI
gemini skills install https://github.com/davila7/claude-code-templates --path cli-tool/components/skills/development/saas-multi-tenantManually: put the files in place
.devin/skills/saas-multi-tenant/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about saas-multi-tenant
How do I install saas-multi-tenant in Claude Code?
Run npx claude-code-templates@latest --skill development/saas-multi-tenant. You can also register it with npx skills add davila7/claude-code-templates --skill saas-multi-tenant -a claude-code.
What does the saas-multi-tenant skill do?
It provides architecture patterns and code samples for multi-tenant SaaS applications using PostgreSQL, TypeScript, and modern ORMs.
How are global tables handled during ORM query filtering?
Shared resources like feature flags or subscription plans are kept in an exclusion list, preventing ORM middleware from injecting tenant parameters into them.