Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate SaaS boilerplate with auth, database schemas, Stripe billing, multi-tenancy, API routes, and dashboard UI on a Next.js/TypeScript/Tailwind stack. Use when starting a new SaaS product, subscription app, or multi-tenant platform.
.claude/skills/borghei-saas-scaffolder/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | -32% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 411% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 31% | 0% |
Generate a complete, production-ready SaaS application boilerplate including authentication (NextAuth, Clerk, or Supabase Auth), database schemas with multi-tenancy, billing integration (Stripe or Lemon Squeezy), API routes with validation, dashboard UI with shadcn/ui, and deployment configuration. Produces a working application from a product specification in under 30 minutes.
Keywords: SaaS, boilerplate, scaffolding, Next.js, authentication, Stripe, billing, multi-tenancy, subscription, starter template, NextAuth, Drizzle ORM, shadcn/ui
.env.example, schema, and API routes for a Next.js stack.Before scaffolding, confirm these inputs. If any is unknown or vague, ASK — do not assume:
--auth; changes the auth config and middleware generated)--payments; determines the billing + webhook handler)--tenancy; shapes the entire database schema and scoped queries)--db; sets the Drizzle adapter and connection config)Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
| Tool | Purpose | Command | |------|---------|---------| | saas_scaffolder.py | Generate a production-ready SaaS project structure (auth, billing, tenancy) | python scripts/saas_scaffolder.py --name my-saas --auth nextauth --db neondb --payments stripe --tenancy workspace | | feature_flag_manager.py | CRUD + evaluate feature flags on a JSON store | python scripts/feature_flag_manager.py evaluate --key dark-mode --environment production --plan pro | | tenant_config_validator.py | Validate multi-tenant config and scan source for missing tenant scoping / isolation issues | python scripts/tenant_config_validator.py --config tenant_config.json --src ./app |
Load the reference that matches the task — keep this file lean and pull detail on demand:
.env.example variables. Read when defining the spec, laying out files, or writing the schema/env config.This skill covers:
This skill does NOT cover:
stripe-integration-expertdatabase-schema-designerci-cd-pipeline-builderapi-design-reviewer| Skill | Integration | Data Flow | |-------|-------------|-----------| | stripe-integration-expert | Extends the scaffolded Stripe setup with advanced billing patterns (metered, tiered, usage-based) | Scaffolder outputs base Stripe config and webhook handler; Stripe expert refines pricing models and adds invoice customization | | database-schema-designer | Designs extended schemas beyond the core tenancy tables | Scaffolder provides baseline users/workspaces/members schema; schema designer adds domain-specific entities and optimizes indexes | | api-design-reviewer | Reviews and improves the generated API routes for consistency and standards compliance | Scaffolder generates initial API routes; reviewer audits naming, error handling, and response formats | | ci-cd-pipeline-builder | Creates deployment pipelines for the scaffolded project | Scaffolder outputs the application code; pipeline builder adds GitHub Actions, preview deployments, and production release workflows | | env-secrets-manager | Audits and secures the environment variable configuration | Scaffolder generates .env.example; secrets manager validates no secrets are hardcoded and recommends vault integration | | observability-designer | Adds logging, tracing, and monitoring to the scaffolded application | Scaffolder provides the application structure; observability designer instruments API routes, webhooks, and auth flows |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→pass | 19,983 | 4,480 | -78% | 1 | 1 | 0% | 3,218 | 2,175 | -32% | 0 | 0 | — |
case-01 | fail→fail | 28,424 | 28,816 | +1% | 1 | 1 | 0% | 5,942 | 7,595 | +28% | 0 | 0 | — |
case-02 | fail→pass | 6,162 | 15,368 | +149% | 1 | 1 | 0% | 836 | 4,271 | +411% | 0 | 0 | — |
case-03 | fail→fail | 3,905 | 4,158 | +6% | 1 | 1 | 0% | 568 | 1,707 | +201% | 0 | 0 | — |
case-04 | fail→fail | 21,181 | 19,750 | -7% | 1 | 1 | 0% | 3,822 | 5,296 | +39% | 0 | 0 | — |
case-06 | fail→fail | 29,713 | 15,644 | -47% | 1 | 1 | 0% | 5,310 | 4,344 | -18% | 0 | 0 | — |
case-07 | fail→pass | 11,345 | 2,895 | -74% | 1 | 1 | 0% | 1,907 | 1,940 | +2% | 0 | 0 | — |
case-08 | fail→fail | 13,970 | 3,377 | -76% | 1 | 1 | 0% | 2,077 | 2,055 | -1% | 0 | 0 | — |
case-09 | pass→pass | 11,475 | 4,999 | -56% | 1 | 1 | 0% | 1,815 | 2,301 | +27% | 0 | 0 | — |
case-10 | pass→pass | 12,626 | 10,430 | -17% | 1 | 1 | 0% | 2,250 | 3,180 | +41% | 0 | 0 | — |
case-11 | pass→pass | 7,411 | 7,950 | +7% | 1 | 1 | 0% | 1,358 | 2,977 | +119% | 0 | 0 | — |
case-12 | fail→pass | 10,183 | 7,784 | -24% | 1 | 1 | 0% | 1,576 | 2,727 | +73% | 0 | 0 | — |
case-13 | fail→pass | 25,420 | 24,172 | -5% | 1 | 1 | 0% | 5,249 | 6,878 | +31% | 0 | 0 | — |
case-14 | pass→pass | 15,053 | 8,768 | -42% | 1 | 1 | 0% | 2,384 | 2,878 | +21% | 0 | 0 | — |
case-15 | pass→pass | 4,505 | 3,100 | -31% | 1 | 1 | 0% | 629 | 1,937 | +208% | 0 | 0 | — |
case-16 | pass→pass | 14,558 | 14,460 | -1% | 1 | 1 | 0% | 2,405 | 3,831 | +59% | 0 | 0 | — |
case-17 | fail→pass | 14,543 | 12,223 | -16% | 1 | 1 | 0% | 2,451 | 3,845 | +57% | 0 | 0 | — |
case-18 | fail→pass | 13,816 | 3,123 | -77% | 1 | 1 | 0% | 1,981 | 1,984 | +0% | 0 | 0 | — |
case-19 | fail→pass | 10,712 | 2,408 | -78% | 1 | 1 | 0% | 1,656 | 1,865 | +13% | 0 | 0 | — |
case-20 | fail→pass | 8,001 | 1,509 | -81% | 1 | 1 | 0% | 1,202 | 1,679 | +40% | 0 | 0 | — |
case-21 | fail→pass | 7,523 | 1,947 | -74% | 1 | 1 | 0% | 1,277 | 1,731 | +36% | 0 | 0 | — |
case-22 | pass→pass | 11,075 | 6,120 | -45% | 1 | 1 | 0% | 1,904 | 2,508 | +32% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.