Project Tooling Skill Load with: base.md Standard CLI tools for project infrastructure management. Required CLI Tools Before starting any project, verify these tools are installed and authenticated: 1. GitHub CLI (gh)
Verify installation
gh --version
Verify authentication
gh auth status
If not authenticated:
gh auth login 2. Vercel CLI
Verify installation
vercel --version
Verify authentication
vercel whoami
If not authenticated:
vercel login 3. Supabase CLI
Verify installation
supabase --version
Verify authentication (check if linked to a project or logged in)
supabase projects list
If not authenticated:
supabase login 4. Render CLI (optional - for Render deployments)
Verify installation
render --version
If using Render API instead:
Ensure RENDER_API_KEY is set in environment
Validation Script Run this at project initialization to verify all tools:
!/bin/bash
scripts/verify-tooling.sh
set -e echo "Verifying project tooling..."
GitHub CLI
if command -v gh &> /dev/null ; then if gh auth status &> /dev/null ; then echo "✓ GitHub CLI authenticated" else echo "✗ GitHub CLI not authenticated. Run: gh auth login" exit 1 fi else echo "✗ GitHub CLI not installed. Run: brew install gh" exit 1 fi
Vercel CLI
if command -v vercel &> /dev/null ; then if vercel whoami &> /dev/null ; then echo "✓ Vercel CLI authenticated" else echo "✗ Vercel CLI not authenticated. Run: vercel login" exit 1 fi else echo "✗ Vercel CLI not installed. Run: npm i -g vercel" exit 1 fi
Supabase CLI
if command -v supabase &> /dev/null ; then if supabase projects list &> /dev/null ; then echo "✓ Supabase CLI authenticated" else echo "✗ Supabase CLI not authenticated. Run: supabase login" exit 1 fi else echo "✗ Supabase CLI not installed. Run: brew install supabase/tap/supabase" exit 1 fi echo "" echo "All tools verified!" GitHub Repository Setup Create New Repository
Create and push in one command
gh repo create < repo-name
--private --source = . --remote = origin --push
Or public:
gh repo create < repo-name
--public --source = . --remote = origin --push Connect Existing Repository
If repo exists on GitHub but not linked locally
gh repo clone < owner
/ < repo
Or add remote to existing local project
git remote add origin https://github.com/ < owner
/ < repo
.git git push -u origin main Repository Settings
Enable branch protection on main
gh api repos/ { owner } / { repo } /branches/main/protection -X PUT \ -F required_status_checks = '{"strict":true,"contexts":["quality"]}' \ -F enforce_admins = false \ -F required_pull_request_reviews = '{"required_approving_review_count":1}'
Set default branch
gh repo edit --default-branch main Vercel Deployment Link Project
Link current directory to Vercel project
vercel link
Or create new project
vercel Environment Variables
Add environment variable
vercel env add ANTHROPIC_API_KEY production
Pull env vars to local .env
vercel env pull .env.local Deploy
Deploy to preview
vercel
Deploy to production
vercel --prod Supabase Setup Create New Project
Create project (interactive)
supabase projects create < project-name
--org-id < org-id
Link local to remote
supabase link --project-ref < project-ref
Local Development
Start local Supabase
supabase start
Stop local Supabase
supabase stop
Reset database (apply all migrations fresh)
supabase db reset Migrations
Create new migration
supabase migration new < migration-name
Apply migrations to remote
supabase db push
Pull remote schema to local
supabase db pull Generate Types
Generate TypeScript types from schema
supabase gen types typescript --local
src/types/database.ts
Or from remote
supabase gen types typescript --project-id < ref
src/types/database.ts Render Setup (API-based) Environment
Set API key
export RENDER_API_KEY = < your-api-key
Common Operations via API
List services
curl -H "Authorization: Bearer $RENDER_API_KEY " \ https://api.render.com/v1/services
Trigger deploy
curl -X POST -H "Authorization: Bearer $RENDER_API_KEY " \ https://api.render.com/v1/services/ < service-id
/deploys
Get deploy status
curl -H "Authorization: Bearer $RENDER_API_KEY " \ https://api.render.com/v1/services/ < service-id
/deploys/ < deploy-id
Package.json Scripts Add these scripts for common operations: { "scripts" : { "verify-tools" : "./scripts/verify-tooling.sh" , "deploy:preview" : "vercel" , "deploy:prod" : "vercel --prod" , "db:start" : "supabase start" , "db:stop" : "supabase stop" , "db:reset" : "supabase db reset" , "db:migrate" : "supabase db push" , "db:types" : "supabase gen types typescript --local > src/types/database.ts" } } CI/CD Integration GitHub Actions with Vercel
.github/workflows/deploy.yml
name : Deploy on : push : branches : [ main ] pull_request : branches : [ main ] jobs : deploy : runs-on : ubuntu - latest steps : - uses : actions/checkout@v4 - name : Deploy to Vercel uses : amondnet/vercel - action@v25 with : vercel-token : $ { { secrets.VERCEL_TOKEN } } vercel-org-id : $ { { secrets.VERCEL_ORG_ID } } vercel-project-id : $ { { secrets.VERCEL_PROJECT_ID } } vercel-args : $ { { github.ref == 'refs/heads/main' && ' - - prod' | | '' } } GitHub Actions with Supabase
.github/workflows/migrate.yml
- name
- :
- Migrate Database
- on
- :
- push
- :
- branches
- :
- [
- main
- ]
- paths
- :
- -
- 'supabase/migrations/**'
- jobs
- :
- migrate
- :
- runs-on
- :
- ubuntu
- -
- latest
- steps
- :
- -
- uses
- :
- actions/checkout@v4
- -
- name
- :
- Setup Supabase CLI
- uses
- :
- supabase/setup
- -
- cli@v1
- with
- :
- version
- :
- latest
- -
- name
- :
- Push migrations
- run
- :
- supabase db push
- env
- :
- SUPABASE_ACCESS_TOKEN
- :
- $
- {
- {
- secrets.SUPABASE_ACCESS_TOKEN
- }
- }
- SUPABASE_DB_PASSWORD
- :
- $
- {
- {
- secrets.SUPABASE_DB_PASSWORD
- }
- }
- Deployment Platform Setup
- REQUIRED
- When initializing a project, always create todos for deployment platform connection based on the stack. Platform Selection by Stack Stack Default Platform Action Required Next.js / Node.js Vercel Connect Git repo to Vercel Python (FastAPI, Flask) Render Connect Git repo to Render, get API key Static sites Vercel or Cloudflare Pages Connect Git repo Vercel: Connect Git Repository When Vercel is the deployment platform, create this todo: TODO: Connect Git repository to Vercel for automatic deployments Steps:
Option 1: Via CLI
vercel link vercel git connect
Option 2: Via Dashboard (recommended for first setup)
1. Go to vercel.com/new
2. Import Git repository
3. Configure project settings
4. Deploy
After connecting: Push to main → Production deploy Push to other branches → Preview deploy PRs get deploy previews automatically Render: Connect Git Repository (Python) When Render is the deployment platform for Python projects: Step 1: Ask user for Render API key Before proceeding, please provide your Render API key. Get it from: https://dashboard.render.com/u/settings/api-keys Store it securely - we'll add it to your environment. Step 2: Create todos TODO: Get Render API key from user TODO: Connect Git repository to Render TODO: Configure Render service (web service or background worker) TODO: Set environment variables on Render Step 3: Connect via Dashboard (recommended)
1. Go to dashboard.render.com/create
2. Select "Web Service" for APIs, "Background Worker" for async
3. Connect your GitHub/GitLab repository
4. Configure:
- Name:
- Runtime: Python 3
- Build Command: pip install -r requirements.txt
- Start Command: uvicorn main:app --host 0.0.0.0 --port $PORT
Step 4: Store API key for CI/CD
Add to GitHub secrets for CI/CD
gh secret set RENDER_API_KEY
Or add to local env
echo
"RENDER_API_KEY=
.env Step 5: Configure render.yaml (optional - Infrastructure as Code)
render.yaml
services : - type : web name : <project - name
- api runtime : python buildCommand : pip install - r requirements.txt startCommand : uvicorn main : app - - host 0.0.0.0 - - port $PORT envVars : - key : PYTHON_VERSION value : "3.11" - key : DATABASE_URL fromDatabase : name : <project - name
- db property : connectionString databases : - name : <project - name
- db plan : free Deployment Checklist Template Add to project todos when setting up deployment:
Deployment Setup
[ ] Create Git repository (gh repo create)
[ ] Choose deployment platform (Vercel/Render/other)
[ ] Connect Git to deployment platform
[ ] Configure environment variables
[ ] Set up CI/CD workflow
[ ] Verify preview deployments work
[ ] Configure production domain Tooling Anti-Patterns ❌ Hardcoded secrets - use CLI env management or GitHub secrets ❌ Manual deployments - automate via CI/CD ❌ Skipping local Supabase - always develop locally first ❌ Direct production database changes - use migrations ❌ No branch protection - require PR reviews and CI checks ❌ Missing environment separation - keep dev/staging/prod separate