Instructions for Claude Chat
One step at a time: Present ONE sub-step, wait for the user to confirm they've done it, then move to the next sub-step. Do NOT give multiple instructions in one message. For example, don't say "install Git, create a GitHub account, and install the GitHub CLI" — instead say "First, let's check if Git is installed. Open your terminal and run git --version. What do you see?" Then wait.
Checkpoint rule: Do not move to Step N+1 until every item in Step N is explicitly confirmed by the user. If the user says they've already completed something, still confirm it — ask them to verify (run a command, paste a screenshot, or state the result). "I already did that" requires a quick proof before proceeding.
Chat vs Code: Steps 1–3 happen here in Claude Chat. The user cannot switch to Claude Code until after Step 3, because Claude Code needs a local project folder to open — and that folder doesn't exist until they clone the repo. Do NOT mention Claude Code or tell the user to switch to it until the clone in Step 3 is confirmed.
Screenshot verification: At each step that requires the user to interact with a website or application (GitHub, Supabase, Google Cloud, Cloudflare, etc.), ask them to paste a screenshot so you can verify they're on the right page and guide them to the correct buttons and fields.
Adapting to the user: Adapt commands and instructions to their OS (Mac, Windows, Linux). If they've already completed a full step (e.g., "I already have a Supabase project"), confirm the key details you'll need (project ref, password, etc.) and move on — but still follow step order.
1 Understand what they're building
Before any setup, ask the user one question:
What kind of project? Two profiles are available:
- Property Management — full stack with spaces, tenants, devices, events, smart home, bookings
- General AI Enablement — core framework for SaaS apps, portfolios, CRMs, booking systems, side projects. No property-specific modules.
Record their profile choice. You'll need it for the Claude Code setup wizard later. Service selection happens at the end — don't discuss it now.
2 Check prerequisites
Operating system
Ask what OS they're using. This affects install commands throughout.
Xcode Command Line Tools (Mac only)
On Mac, always install Xcode Command Line Tools first — this provides Git, compilers, and other developer essentials that Claude Code needs.
Ask the user to open Terminal and run:
xcode-select --install
If already installed, the terminal will say so and they can move on. If not installed:
- A system dialog will appear asking to install — click "Install"
- Then click "Agree" to the license agreement
The install dialog hides behind other windows! After running the command, the confirmation dialog almost always appears BEHIND the Terminal window and other open apps. Tell the user to check behind all their open windows or use Mission Control (swipe up with three fingers, or press F3) to find the dialog. If they don't see anything happening, it's hiding — not missing.
The download is ~1–2 GB and can take several minutes. Wait for it to complete before moving on.
Ask the user to confirm the install finished by running git --version. They should see a version number (e.g., git version 2.39.5).
Install all prerequisites (Mac — one command)
After Xcode CLI Tools are confirmed, run the prerequisite installer. This installs or upgrades: git, GitHub CLI, Node.js, Supabase CLI, Wrangler, psql, TypeScript.
bash <(curl -fsSL https://alpacaplayhouse.com/scripts/install-prereqs.sh)
If the user already has Homebrew and prefers granular control, they can also use brew bundle from the project's Brewfile after cloning.
Ask the user to confirm the script completed successfully. It prints a summary of all installed tools and versions at the end.
Prerequisites (Windows / Linux)
If the user is NOT on Mac, they need to install these manually:
- Git: Windows installer or
sudo apt install git (Linux)
- Node.js: nodejs.org (LTS recommended)
- GitHub CLI:
winget install --id GitHub.cli (Windows) or see Linux install docs
- Supabase CLI:
npm install -g supabase (installed by wizard if missing)
- Wrangler:
npm install -g wrangler (installed by wizard if missing)
Ask the user to confirm they can run git --version && node --version successfully.
GitHub account & CLI auth
Ask if they already have a GitHub account. If not, direct them to github.com/signup.
Then authenticate the GitHub CLI:
gh auth login
The CLI will ask a series of questions. Tell the user to:
- "What account do you want to log into?" — Press Enter to pick the default (
GitHub.com)
- "What is your preferred protocol?" — Press Enter to pick the default (
HTTPS)
- "Authenticate Git with your GitHub credentials?" — Type Y and press Enter
- "How would you like to authenticate?" — Press Enter to pick
Login with a web browser
- A one-time code will appear — press Enter, paste the code in the browser, and authorize
Ask the user to confirm they have a GitHub account and gh auth status shows "Logged in".
Claude Desktop
Claude Desktop is the AI app that includes Claude Code — the AI developer that handles all terminal work, database setup, and code generation.
- If you don't have a Claude account, sign up at claude.ai (Pro $20/mo recommended — free week here)
- Download Claude Desktop from claude.ai/download
- Install and open the app, then sign in with your Claude account
3 Create the GitHub repository
Use the template
Direct the user to the template repository:
github.com/rsonnad/alpacapps-infra
- Click the green "Use this template" button at the top right
- Click "Create a new repository"
- Enter a repository name (lowercase with hyphens, e.g.,
my-salon-app)
- Make sure "Public" is selected (required for free GitHub Pages)
- Click "Create repository"
Ask the user to paste a screenshot of their new repository page. Verify it shows their repo name and has files from the template (index.html, shared/, supabase/, etc.).
Enable GitHub Pages
In their new repository:
- Go to Settings (gear icon near the top of the repo page)
- Click "Pages" in the left sidebar
- Under "Build and deployment" → Source: select "Deploy from a branch"
- Branch: select "main" and folder "/ (root)"
- Click "Save"
The site will be live at https://USERNAME.github.io/REPO-NAME/ within 1–2 minutes.
Ask for a screenshot of the Pages settings page showing "main" branch selected. After 1–2 minutes, ask them to visit their site URL to confirm it loads.
Clone the repository locally
Back in their terminal:
git clone https://github.com/USERNAME/REPO-NAME.git
cd REPO-NAME
Replace USERNAME and REPO-NAME with their actual values. If they set up gh, they can also use gh repo clone USERNAME/REPO-NAME.
Ask them to confirm they see the project files by running ls (Mac/Linux) or dir (Windows) in the project folder.
Switch to Claude Code
Now that the repo is cloned locally, switch to Claude Code for the rest of the setup:
- Open Claude Desktop
- Click the Code tab (or start a new Claude Code session)
- Open your project folder — navigate to the directory you just cloned
- Switch to Opus 4.6 — Claude Code defaults to Sonnet, but you want the most capable model. Click the model selector (bottom of the chat) and choose Claude Opus 4.6 (or the latest available model)
- Enable "Bypass permissions" — This lets Claude Code run terminal commands without asking you to approve each one. Open Claude Code settings (click the gear icon or press
Cmd + , on Mac / Ctrl + , on Windows), find "Bypass permissions" (or "Yolo mode"), and turn it on.
Why bypass permissions? The setup wizard runs dozens of terminal commands (installing CLIs, running database migrations, deploying functions). Without bypass, Claude Code will pause and ask you to approve every single command — which makes the process painfully slow. You can always turn it off later.
Model matters! Claude Code defaults to Sonnet, which is fast but less capable. For infrastructure setup and complex tasks, switch to Opus 4.6 (or the latest version) — it handles multi-step setup wizards, database migrations, and edge function deployment much more reliably.
From this point on, Claude Code handles everything: terminal commands, database setup, edge functions, and code generation. You can paste the remaining instructions directly into Claude Code.
Ask the user to confirm they have Claude Code open in their project folder with bypass permissions enabled and Opus 4.6 selected. They should see the project files and be ready to run commands.
4 Set up Supabase
Create a Supabase account and project
- Go to supabase.com/dashboard
- Sign up or log in (GitHub login is easiest)
- Click "New Project"
- Choose your organization (or create one)
- Enter a project name (e.g., same as your repo name)
- Set a strong database password — save this somewhere safe, you'll need it next
- Select a region close to your users
- Click "Create new project"
Important: Save your database password!
Supabase only shows the password during project creation. If you lose it, you'll need to reset it in Settings → Database → Database Password.
Ask for a screenshot of their Supabase project dashboard. It should show the project name and a "Getting Started" or home page.
Find your project ref
The project ref is the random string in the Supabase URL. It looks like this:
https://supabase.com/dashboard/project/abcdefghijklm
The bolded part is the project ref. Alternatively:
- Go to Settings (gear icon in the sidebar)
- Click "General"
- The "Reference ID" is your project ref
Ask the user to share their project ref (the random string) and confirm they have their database password saved. You'll need both for the next step.
What you'll need for the setup wizard
Record these two values — you'll paste them into Claude Code in Step 6:
- Project ref: the random string from the URL (e.g.,
abcdefghijklm)
- Database password: the password you set during project creation
5 Set up Cloudflare
Cloudflare manages your domain’s DNS and provides a D1 database for session logging. You only need to provide two things — Claude handles the rest.
Get your Cloudflare Global API Key
- Sign up or log in at dash.cloudflare.com
- Go to Profile → API Tokens
- Find "Global API Key" and click "View"
- Copy the key — this is all Claude needs to manage DNS, D1, R2, and Workers for you
Why the Global API Key?
It already exists on every Cloudflare account — no token creation wizard needed. Claude will use it once to create a scoped project token with only the permissions your project needs, then use that scoped token for all ongoing operations.
Ask the user to confirm they have their Cloudflare email and Global API Key. You'll need both for the setup wizard.
What you'll need for the next step
Record these values — you'll paste them into Claude Code in the next step:
- Cloudflare email: the email on your Cloudflare account
- Cloudflare Global API Key: from the step above
- Domain name: if you have one you want to use (optional — you can add one later)
6 Run the setup wizard in Claude Code
Open Claude Code in your project folder and let it handle all the technical setup.
Open Claude Code
- Open the Claude desktop app (or terminal)
- Navigate to your project folder from Step 3
- If on the Max plan ($100/mo), type:
/setup-alpacapps-infra
If on the Pro plan ($20/mo) or lower, paste this prompt instead:
Set up my AlpacApps project. I chose the [PROFILE] profile and want these services: [LIST].
My Supabase project ref is: [REF]
My database password is: [PASSWORD]
My Cloudflare email is: [EMAIL]
My Cloudflare Global API Key is: [CF_KEY]
Follow the setup wizard in .claude/skills/setup-alpacapps-infra/SKILL.md to configure everything.
Handle all terminal work — CLI installs, database setup, edge functions, git pushes.
Ask me when you need credentials for optional services (API keys, etc.).
Replace the bracketed values with:
[PROFILE] — "Property Management" or "General AI Enablement"
[LIST] — the services they selected in Step 1
[REF] — Supabase project ref from Step 4
[PASSWORD] — database password from Step 4
[EMAIL] — Cloudflare account email from Step 5
[CF_KEY] — Global API Key from Step 5
What the wizard does
Claude Code will automatically:
- Install and configure the Supabase CLI
- Link your Supabase project and fetch API keys
- Create database tables with Row Level Security
- Set up storage buckets
- Deploy edge functions
- Validate your Cloudflare key and create a scoped project token
- Set up DNS and D1 session logging database
- Configure each optional service you selected (asking you for API keys as needed)
- Generate your CLAUDE.md and documentation files
- Commit and push everything to GitHub
Going forward
After setup, Claude Code is how you build everything. Just describe what you want:
- “Add a payments page”
- “Fix the login bug”
- “Write tests for the booking flow”
Claude Code handles the code, commits, and deploys.
Core setup complete!
Your site is live on GitHub Pages with a fully configured Supabase backend and Cloudflare managing your domain. Next: install gstack (quick, 30 seconds), then optionally add more services.
7 Install gstack
gstack adds powerful skills to Claude Code: headless browser for QA testing, code review, ship workflow, engineering retrospectives, and more. Sub-second commands with zero token overhead.
In your Claude Code session, run:
curl -fsSL https://raw.githubusercontent.com/garrytan/gstack/main/install.sh | bash
Verify it installed:
ls ~/.claude/skills/gstack/SKILL.md
If the file exists, gstack is installed and Claude Code will automatically detect the skills.
Available skills
/browse — Headless browser for QA testing and site dogfooding (~100ms per command)
/review — Pre-landing code review with production risk detection
/ship — Ship workflow: merge base, test, review, bump, push, create PR
/qa — Systematic QA testing with auto-fix (Quick/Standard/Exhaustive tiers)
/retro — Engineering retrospectives with commit analysis and trend tracking
/plan-ceo-review — CEO/founder-mode plan review
/plan-eng-review — Engineering manager plan review
Update later: Run /gstack-upgrade inside Claude Code, or re-run the install script.
Source: github.com/garrytan/gstack (MIT license)
Ask the user to confirm gstack installed by checking if the SKILL.md file exists.
8 Add optional services
Your core stack is running. Now walk through these optional services and ask which ones they want to add. Claude Code will configure each one — just provide the API keys when asked.
Which services do they need?
- Google Sign-In (OAuth user login) — Free
- Resend (transactional email) — Free, 3,000 emails/month
- Telnyx (SMS notifications) — ~$0.004/SMS + $1/mo phone number
- Square (payment processing) — 2.9% + 30 cents per transaction
- Stripe (ACH & card payments, Connect payouts) — 0.8%–2.9% per transaction
- SignWell (e-signatures) — Free, 3–25 docs/month
- Google Gemini (AI features) — Free API
- Cloudflare R2 (object storage) — Free 10 GB, zero egress fees (uses Cloudflare token from core)
For each service the user selects, walk them through the vendor signup below, then have Claude Code configure it.
You're done!
Start building by telling Claude Code what you want — it handles the code, commits, and deploys.
Advanced: Conductor (parallel agents)
Want to run multiple Claude Code agents in parallel? Download Conductor — it lets you create separate workspaces that each run their own agent on their own git branch. Great for tackling multiple tasks simultaneously.
? Optional services reference
When the agent asks for credentials for optional services, direct the user to these vendor pages. For each service, the user needs to create an account and get an API key.
Google Sign-In (OAuth)
- Google Cloud Console: console.cloud.google.com
- Create a new project, then go to APIs & Services → Credentials
- Set up OAuth consent screen (External), then create OAuth 2.0 Client ID (Web application)
- Add authorized redirect URI:
https://PROJECT_REF.supabase.co/auth/v1/callback
- User provides: Client ID and Client Secret
Resend (Email)
Telnyx (SMS)
- Sign up: portal.telnyx.com/sign-up
- Buy a phone number, create a Messaging Profile
- Important: 10DLC registration required for US SMS (takes days for approval)
- User provides: API key, Messaging Profile ID, phone number
Square (Payments)
Stripe (Payments)
SignWell (E-Signatures)
- Sign up: signwell.com
- API key in account settings
- User provides: API key
Google Gemini (AI)
Cloudflare R2 (Storage)
Uses the Cloudflare Global API Key you provided in Step 5 — no additional credentials needed.
- The setup wizard creates two R2 buckets automatically:
<project>-media (images, uploads) and <project>-backups (DB exports, config snapshots)
- Free 10 GB storage with zero egress fees
- If you skipped Cloudflare in Step 5, sign up at dash.cloudflare.com/sign-up and provide your Global API Key
Cloudflare D1 (DevControl)
The setup wizard creates two D1 databases using the Global API Key from Step 5:
<project>-sessions — Claude session logging and search
<project>-devcontrol — Task tracking, build logs, deployment history
Both are free tier (5M reads/day, 100K writes/day, 5 GB storage).
Other ways to get started: