Back to Skills

finish-setup

raintree-technology
Updated 4 days ago
80
9
80
View on GitHub
Metaaimcpdata

About

The finish-setup skill completes provisioning for a newly scaffolded SaaS project by configuring integrated services like Stripe, databases, email DNS, and analytics. It verifies environment variables, creates matching Stripe products for billing plans, checks migrations, and reports all changes without creating unrequested cloud resources. Use this skill after scaffolding or when a user explicitly requests to finalize setup for the entire project or specific services.

Quick Install

Claude Code

Recommended
Primary
npx skills add raintree-technology/claude-starter -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/raintree-technology/claude-starter
Git CloneAlternative
git clone https://github.com/raintree-technology/claude-starter.git ~/.claude/skills/finish-setup

Copy and paste this command in Claude Code to install this skill

Documentation

Finish provisioning a freshly scaffolded SaaS project. Configure what exists, link what doesn't — never create cloud resources the user did not ask for (no new databases, no new Vercel projects). Report every change made and every step that still needs a human.

If an argument names a single service, run only that section.

Preflight

  1. Read .env.example and the project's env loading (lib/env.ts or equivalent) to learn which integrations are expected.
  2. Read .env / .env.local (never print secret values — report only SET or UNSET per key).
  3. List which MCP servers are reachable. For each unreachable MCP that a section below needs, skip that section and add it to the final report with the missing env var.
  4. Detect the stack: billing plan definitions (lib/billing/plans.ts or similar), migration setup (drizzle.config.ts, db/migrations/), email templates (emails/), analytics keys (NEXT_PUBLIC_POSTHOG_KEY or similar).

Database (Neon MCP)

  1. Confirm DATABASE_URL is set and the Neon MCP can see the project's database. If unset, stop this section and tell the user to create a database and set DATABASE_URL — do not create one.
  2. Compare applied migrations against the local migrations directory. If migrations are pending, run the project's migrate script (db:migrate or equivalent) locally — not via MCP — and confirm the result.
  3. Verify the auth tables exist (sessions, users, organizations if multi-tenant).

Billing (Stripe MCP)

  1. Parse the plan definitions from the billing module: plan names, prices, intervals, per-seat flags.
  2. List existing Stripe products. For each plan with no matching product, create the product and price(s) to match the code exactly (amount, currency, interval, per-seat usage_type if applicable). Never delete or modify existing products without explicit confirmation.
  3. Write the resulting price IDs to .env (or the file the project reads them from) under the env var names the billing module expects.
  4. Confirm the webhook endpoint the project exposes (e.g. /api/auth/stripe/webhook) and tell the user the exact URL to register in the Stripe dashboard for the deployed domain — webhook registration needs the production URL, so leave it to the user unless a deployed URL is known.

Email (Resend MCP)

  1. Check domain verification status for the sending domain implied by the project's from-address.
  2. If unverified, list the exact DNS records (type, name, value) the user must add, then stop — do not retry verification on their behalf.
  3. Send one test email to the user's own address if they confirm.

Analytics (PostHog MCP)

  1. Confirm the project API key in env matches a reachable PostHog project.
  2. Verify the key is wired into the app (provider component or snippet).
  3. Offer to create a starter dashboard (signups, activation, revenue events) — create it only on confirmation.

Repository (GitHub MCP)

  1. If the project has no origin remote: offer to create a repo (ask for org/name/visibility), push the initial commit, and confirm CI triggers.
  2. If a remote exists: verify the default branch is pushed and CI status for the latest commit.

Report

End with a checklist: each service → done / needs human (with the exact next action) / skipped (with the missing env var or MCP). Keep it short enough to act on without scrolling.

GitHub Repository

raintree-technology/claude-starter
Path: templates/.claude/skills/finish-setup
0
agent-configai-agentsanthropicclaudeclaude-codecli

Related Skills

content-collections

Meta

This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.

View skill

polymarket

Meta

This skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.

View skill

creating-opencode-plugins

Meta

This skill helps developers create OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It provides the plugin structure, event API specifications, and implementation patterns for JavaScript/TypeScript modules. Use it when you need to intercept, monitor, or extend the OpenCode AI assistant's lifecycle with custom event-driven logic.

View skill

sglang

Meta

SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.

View skill