~ / rigs / nikandr-surkov / ai-saas-starter

nikandr-surkov/ai-saas-starter

AI SaaS boilerplate for Next.js 16 — Better Auth, Stripe subscriptions, credits system, AI image generation. AI-native: AGENTS.md, Claude Code skills & hooks.

↗ GitHub ★ 23 MIT updated 3mo ago project Claude CodeCodexCursorCopilot
share on X
ARCHETYPE
Pragmatist
A balanced, no-drama setup: some rules, some tools, nothing extreme.
CONTEXT TAX · EVERY TURN
~2.2k tokens
Moderate · median rig: 2.3k · breakdown
GUARDRAILS
3/5
Blocks destructive commands · Protects secrets · No YOLO mode · details

Copy this rig

# review before running: this installs third-party code
$ npx degit nikandr-surkov/ai-saas-starter/.claude ./rig-ai-saas-starter  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ npx degit nikandr-surkov/ai-saas-starter/.claude/skills/add-ai-provider .claude/skills/add-ai-provider
$ npx degit nikandr-surkov/ai-saas-starter/.claude/skills/add-feature .claude/skills/add-feature
$ npx degit nikandr-surkov/ai-saas-starter/.claude/skills/db-migration .claude/skills/db-migration
$ curl -fsSL --create-dirs -o .claude/agents/code-reviewer.md https://raw.githubusercontent.com/nikandr-surkov/ai-saas-starter/main/.claude/agents/code-reviewer.md

Merge into .claude/settings.json (project) or ~/.claude/settings.json (user). Hook commands reference scripts in the source repo — copy those too.

{
  "permissions": {
    "deny": [
      "Bash(rm -rf *)",
      "Read(./.env)",
      "Read(./.env.local)",
      "Read(./.env.development)",
      "Read(./.env.production)",
      "Read(./.env.*.local)"
    ]
  }
}

Skills (3)

Subagents (1)

code-reviewerRead-only reviewer for auth, billing, and credits-ledger changes. Use proactively after modifying src/lib/auth, src/lib/billing, src/lib/credits, or src/app/api — before committing.

Hooks (2)

eventmatcherruns
PostToolUseWrite|Editnode .claude/hooks/format-edited-file.mjs
Stop*node .claude/hooks/stop-typecheck.mjs

Cursor rules (2)

billingcore · always

Permissions

deny (6)
Bash(rm -rf *)
Read(./.env)
Read(./.env.local)
Read(./.env.development)
Read(./.env.production)
Read(./.env.*.local)
ask (0)
—
allow (0)
—

Similar rigs

copied ✓