🛠️ Saas MVP Launcher
SaaSのMVP(最小限の機能を持つ
📺 まず動画で見る(YouTube)
▶ 【衝撃】最強のAIエージェント「Claude Code」の最新機能・使い方・プログラミングをAIで効率化する超実践術を解説! ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
Use when planning or building a SaaS MVP from scratch. Provides a structured roadmap covering tech stack, architecture, auth, payments, and launch checklist.
🇯🇵 日本人クリエイター向け解説
SaaSのMVP(最小限の機能を持つ
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o saas-mvp-launcher.zip https://jpskill.com/download/3399.zip && unzip -o saas-mvp-launcher.zip && rm saas-mvp-launcher.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/3399.zip -OutFile "$d\saas-mvp-launcher.zip"; Expand-Archive "$d\saas-mvp-launcher.zip" -DestinationPath $d -Force; ri "$d\saas-mvp-launcher.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
saas-mvp-launcher.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
saas-mvp-launcherフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
💬 こう話しかけるだけ — サンプルプロンプト
- › Saas Mvp Launcher を使って、最小構成のサンプルコードを示して
- › Saas Mvp Launcher の主な使い方と注意点を教えて
- › Saas Mvp Launcher を既存プロジェクトに組み込む方法を教えて
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
SaaS MVP ランチャー
概要
このスキルは、最短時間で本番環境に対応したSaaS MVPを構築するプロセスをガイドします。アイデアの検証から技術スタックの選択、認証、決済、データベース設計、デプロイ、ローンチまで、現代的で実績のあるツールを使用してすべてをカバーします。
このスキルを使用するタイミング
- 新しいSaaS製品をゼロから始める場合にご利用ください。
- Webアプリケーションの技術スタックを選択する必要がある場合にご利用ください。
- SaaSの認証、請求、またはデータベースを設定する場合にご利用ください。
- リリース前の構造化されたローンチチェックリストが必要な場合にご利用ください。
- マルチテナントアプリケーションのアーキテクチャを設計する場合にご利用ください。
- 既存の初期段階のSaaSの技術レビューを行う場合にご利用ください。
ステップバイステップガイド
1. 構築前に検証する
コードを書く前に、アイデアを検証してください。
検証チェックリスト:
- [ ] 問題を1文で説明できますか?
- [ ] 正確な顧客は誰ですか?(「すべての人」ではない)
- [ ] 彼らは今日、この問題を解決するために何に支払っていますか?
- [ ] 5人以上の潜在顧客と話しましたか?
- [ ] 彼らはあなたのソリューションに月額$Xを支払いますか?
ルール: 3人から前払いまたは意向表明書への署名が得られない場合は、まだ構築しないでください。
2. 技術スタックを選択する
推奨される最新のSaaSスタック(2026年):
| レイヤー | 選択肢 | 理由 |
|---|---|---|
| フロントエンド | Next.js 15 + TypeScript | フルスタック、優れたDX、Vercelデプロイ |
| スタイリング | Tailwind CSS + shadcn/ui | 高速、アクセシブル、カスタマイズ可能 |
| バックエンド | Next.js API Routes または tRPC | 型安全、共存 |
| データベース | Supabase経由のPostgreSQL | 信頼性、スケーラブル、無料枠 |
| ORM | Prisma または Drizzle | 型安全なクエリ、マイグレーション |
| 認証 | Clerk または NextAuth.js | ソーシャルログイン、セッション管理 |
| 決済 | Stripe | 業界標準、優れたドキュメント |
| メール | Resend + React Email | モダン、開発者フレンドリー |
| デプロイ | Vercel (フロントエンド) + Railway (バックエンド) | ゼロコンフィグ、高速CI/CD |
| モニタリング | Sentry + PostHog | エラートラッキング + アナリティクス |
3. プロジェクト構造
my-saas/
├── app/ # Next.js App Router
│ ├── (auth)/ # 認証ルート (ログイン、サインアップ)
│ ├── (dashboard)/ # 保護されたアプリルート
│ ├── (marketing)/ # 公開ランディングページ
│ └── api/ # APIルート
├── components/
│ ├── ui/ # shadcn/ui コンポーネント
│ └── [feature]/ # 機能固有のコンポーネント
├── lib/
│ ├── db.ts # データベースクライアント (Prisma/Drizzle)
│ ├── stripe.ts # Stripeクライアント
│ └── email.ts # メールクライアント (Resend)
├── prisma/
│ └── schema.prisma # データベーススキーマ
├── .env.local # 環境変数
└── middleware.ts # 認証ミドルウェア
4. コアデータベーススキーマ(マルチテナントSaaS)
model User {
id String @id @default(cuid())
email String @unique
name String?
createdAt DateTime @default(now())
subscription Subscription?
workspaces WorkspaceMember[]
}
model Workspace {
id String @id @default(cuid())
name String
slug String @unique
plan Plan @default(FREE)
members WorkspaceMember[]
createdAt DateTime @default(now())
}
model Subscription {
id String @id @default(cuid())
userId String @unique
user User @relation(fields: [userId], references: [id])
stripeCustomerId String @unique
stripePriceId String
stripeSubId String @unique
status String # active, canceled, past_due
currentPeriodEnd DateTime
}
enum Plan {
FREE
PRO
ENTERPRISE
}
5. 認証設定(Clerk)
// middleware.ts
import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server';
const isPublicRoute = createRouteMatcher([
'/',
'/pricing',
'/blog(.*)',
'/sign-in(.*)',
'/sign-up(.*)',
'/api/webhooks(.*)',
]);
export default clerkMiddleware((auth, req) => {
if (!isPublicRoute(req)) {
auth().protect();
}
});
export const config = {
matcher: ['/((?!.*\\..*|_next).*)', '/', '/(api|trpc)(.*)'],
};
6. Stripe連携(サブスクリプション)
// lib/stripe.ts
import Stripe from 'stripe';
export const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
apiVersion: '2025-01-27.acacia',
});
// チェックアウトセッションの作成
export async function createCheckoutSession(userId: string, priceId: string) {
return stripe.checkout.sessions.create({
mode: 'subscription',
payment_method_types: ['card'],
line_items: [{ price: priceId, quantity: 1 }],
success_url: `${process.env.NEXT_PUBLIC_URL}/dashboard?success=true`,
cancel_url: `${process.env.NEXT_PUBLIC_URL}/pricing`,
metadata: { userId },
});
}
7. リリース前チェックリスト
技術面:
- [ ] 認証が機能すること(サインアップ、ログイン、ログアウト、パスワードリセット)
- [ ] 決済がエンドツーエンドで機能すること(購読、キャンセル、アップグレード)
- [ ] エラー監視が設定されていること(Sentry)
- [ ] 環境変数が文書化されていること
- [ ] データベースのバックアップが設定されていること
- [ ] APIルートにレート制限が設定されていること
- [ ] すべてのフォームでZodによる入力検証が行われていること
- [ ] HTTPSが強制され、セキュリティヘッダーが設定されていること
製品面:
- [ ] 明確な価値提案のあるランディングページ
- [ ] 2〜3段階の料金ページ
- [ ] オンボーディングフロー(5分以内に最初の価値を提供)
- [ ] メールシーケンス(ウェルカム、試用期間終了、支払い失敗)
- [ ] 利用規約とプライバシーポリシーのページ
- [ ] サポートチャネル(メール/チャット)
マーケティング面:
- [ ] ドメインが購入され、設定されていること
- [ ] すべてのページにSEOメタタグが設定されていること
- [ ] Google AnalyticsまたはPostHogがインストールされていること
- [ ] ソーシャルメディアアカウントが作成されていること
- [ ] Product Huntのドラフトが準備されていること
ベストプラクティス
- ✅ すべきこと: 最大4〜6週間で動作するMVPをリリースし、フィードバックに基づいて反復する
- ✅ すべきこと: 初日から課金する — 無料ユーザーはプロダクトマーケットフィットを検証しない
- ✅ すべきこと: まず「ハッピーパス」を構築し、エッジケースは後で処理する
- ✅ すべきこと: 段階的なロールアウトのために機能フラグを使用する(e
(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
SaaS MVP Launcher
Overview
This skill guides you through building a production-ready SaaS MVP in the shortest time possible. It covers everything from idea validation and tech stack selection to authentication, payments, database design, deployment, and launch — using modern, battle-tested tools.
When to Use This Skill
- Use when starting a new SaaS product from scratch
- Use when you need to choose a tech stack for a web application
- Use when setting up authentication, billing, or database for a SaaS
- Use when you want a structured launch checklist before going live
- Use when designing the architecture of a multi-tenant application
- Use when doing a technical review of an existing early-stage SaaS
Step-by-Step Guide
1. Validate Before You Build
Before writing any code, validate the idea:
Validation checklist:
- [ ] Can you describe the problem in one sentence?
- [ ] Who is the exact customer? (not "everyone")
- [ ] What do they pay for today to solve this?
- [ ] Have you talked to 5+ potential customers?
- [ ] Will they pay $X/month for your solution?
Rule: If you can't get 3 people to pre-pay or sign a letter of intent, don't build yet.
2. Choose Your Tech Stack
Recommended modern SaaS stack (2026):
| Layer | Choice | Why |
|---|---|---|
| Frontend | Next.js 15 + TypeScript | Full-stack, great DX, Vercel deploy |
| Styling | Tailwind CSS + shadcn/ui | Fast, accessible, customizable |
| Backend | Next.js API Routes or tRPC | Type-safe, co-located |
| Database | PostgreSQL via Supabase | Reliable, scalable, free tier |
| ORM | Prisma or Drizzle | Type-safe queries, migrations |
| Auth | Clerk or NextAuth.js | Social login, session management |
| Payments | Stripe | Industry standard, great docs |
| Resend + React Email | Modern, developer-friendly | |
| Deployment | Vercel (frontend) + Railway (backend) | Zero-config, fast CI/CD |
| Monitoring | Sentry + PostHog | Error tracking + analytics |
3. Project Structure
my-saas/
├── app/ # Next.js App Router
│ ├── (auth)/ # Auth routes (login, signup)
│ ├── (dashboard)/ # Protected app routes
│ ├── (marketing)/ # Public landing pages
│ └── api/ # API routes
├── components/
│ ├── ui/ # shadcn/ui components
│ └── [feature]/ # Feature-specific components
├── lib/
│ ├── db.ts # Database client (Prisma/Drizzle)
│ ├── stripe.ts # Stripe client
│ └── email.ts # Email client (Resend)
├── prisma/
│ └── schema.prisma # Database schema
├── .env.local # Environment variables
└── middleware.ts # Auth middleware
4. Core Database Schema (Multi-tenant SaaS)
model User {
id String @id @default(cuid())
email String @unique
name String?
createdAt DateTime @default(now())
subscription Subscription?
workspaces WorkspaceMember[]
}
model Workspace {
id String @id @default(cuid())
name String
slug String @unique
plan Plan @default(FREE)
members WorkspaceMember[]
createdAt DateTime @default(now())
}
model Subscription {
id String @id @default(cuid())
userId String @unique
user User @relation(fields: [userId], references: [id])
stripeCustomerId String @unique
stripePriceId String
stripeSubId String @unique
status String # active, canceled, past_due
currentPeriodEnd DateTime
}
enum Plan {
FREE
PRO
ENTERPRISE
}
5. Authentication Setup (Clerk)
// middleware.ts
import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server';
const isPublicRoute = createRouteMatcher([
'/',
'/pricing',
'/blog(.*)',
'/sign-in(.*)',
'/sign-up(.*)',
'/api/webhooks(.*)',
]);
export default clerkMiddleware((auth, req) => {
if (!isPublicRoute(req)) {
auth().protect();
}
});
export const config = {
matcher: ['/((?!.*\\..*|_next).*)', '/', '/(api|trpc)(.*)'],
};
6. Stripe Integration (Subscriptions)
// lib/stripe.ts
import Stripe from 'stripe';
export const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
apiVersion: '2025-01-27.acacia',
});
// Create checkout session
export async function createCheckoutSession(userId: string, priceId: string) {
return stripe.checkout.sessions.create({
mode: 'subscription',
payment_method_types: ['card'],
line_items: [{ price: priceId, quantity: 1 }],
success_url: `${process.env.NEXT_PUBLIC_URL}/dashboard?success=true`,
cancel_url: `${process.env.NEXT_PUBLIC_URL}/pricing`,
metadata: { userId },
});
}
7. Pre-Launch Checklist
Technical:
- [ ] Authentication works (signup, login, logout, password reset)
- [ ] Payments work end-to-end (subscribe, cancel, upgrade)
- [ ] Error monitoring configured (Sentry)
- [ ] Environment variables documented
- [ ] Database backups configured
- [ ] Rate limiting on API routes
- [ ] Input validation with Zod on all forms
- [ ] HTTPS enforced, security headers set
Product:
- [ ] Landing page with clear value proposition
- [ ] Pricing page with 2-3 tiers
- [ ] Onboarding flow (first value in < 5 minutes)
- [ ] Email sequences (welcome, trial ending, payment failed)
- [ ] Terms of Service and Privacy Policy pages
- [ ] Support channel (email / chat)
Marketing:
- [ ] Domain purchased and configured
- [ ] SEO meta tags on all pages
- [ ] Google Analytics or PostHog installed
- [ ] Social media accounts created
- [ ] Product Hunt draft ready
Best Practices
- ✅ Do: Ship a working MVP in 4-6 weeks maximum, then iterate based on feedback
- ✅ Do: Charge from day 1 — free users don't validate product-market fit
- ✅ Do: Build the "happy path" first, handle edge cases later
- ✅ Do: Use feature flags for gradual rollouts (e.g., Vercel Edge Config)
- ✅ Do: Monitor user behavior from launch day — not after problems arise
- ❌ Don't: Build every feature before talking to customers
- ❌ Don't: Optimize for scale before reaching $10k MRR
- ❌ Don't: Build a custom auth system — use Clerk, Auth.js, or Supabase Auth
- ❌ Don't: Skip the onboarding flow — it's where most SaaS lose users
Troubleshooting
Problem: Users sign up but don't activate (don't use core feature) Solution: Reduce steps to first value. Track with PostHog where users drop off in onboarding.
Problem: High churn after trial Solution: Add an exit survey. Most churn is due to lack of perceived value, not price.
Problem: Stripe webhook events not received locally
Solution: Use Stripe CLI: stripe listen --forward-to localhost:3000/api/webhooks/stripe
Problem: Database migrations failing in production
Solution: Always run prisma migrate deploy (not prisma migrate dev) in production environments.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.