project-tooling について
CLI ツールでプロジェクト基盤を管理するスキルです。GitHub CLI、Vercel、Supabase、Render のセットアップやデプロイ手順を扱い、リポジトリ、データベース、CI/CD の構成に利用できます。
主な機能
- 01CLI の導入と認証状態の確認
- 02GitHub リポジトリの作成と設定
- 03Vercel の環境変数とデプロイ管理
- 04Supabase のプロジェクトとマイグレーション設定
- 05Render サービスの構成
- 06CI/CD とデプロイチェックリストの整備
活用シーン
- 01プロジェクト開始時の必要ツール確認
- 02リポジトリ作成とブランチ保護の設定
- 03データベースとローカル開発環境の構成
- 04デプロイ先の接続とリリースフローの設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ alinaqi/ maggy --skill project-toolingインストール後、Claude Code で/project-toolingを入力して読み込まれたか確認します。
詳細
プロジェクトツール
プロジェクトのインフラ管理に使用する標準 CLI ツールです。
必須 CLI ツール
プロジェクトを開始する前に、以下のツールがインストールされ、認証済みであることを確認してください。
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(任意 - Render へのデプロイ用)
# Verify installation
render --version
# If using Render API instead:
# Ensure RENDER_API_KEY is set in environment
検証スクリプト
すべてのツールを確認するため、プロジェクトの初期化時にこれを実行してください。
#!/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 リポジトリのセットアップ
新しいリポジトリを作成する
# 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
既存のリポジトリに接続する
# 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
リポジトリの設定
# 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 へのデプロイ
プロジェクトをリンクする
# Link current directory to Vercel project
vercel link
# Or create new project
vercel
環境変数
# Add environment variable
vercel env add ANTHROPIC_API_KEY production
# Pull env vars to local .env
vercel env pull .env.local
デプロイ
# Deploy to preview
vercel
# Deploy to production
vercel --prod
Supabase のセットアップ
新しいプロジェクトを作成する
# Create project (interactive)
supabase projects create <project-name> --org-id <org-id>
# Link local to remote
supabase link --project-ref <project-ref>
ローカル開発
# Start local Supabase
supabase start
# Stop local Supabase
supabase stop
# Reset database (apply all migrations fresh)
supabase db reset
マイグレーション
# Create new migration
supabase migration new <migration-name>
# Apply migrations to remote
supabase db push
# Pull remote schema to local
supabase db pull
型を生成する
# 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 のセットアップ(API ベース)
環境
# Set API key
export RENDER_API_KEY=<your-api-key>
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": {
"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 の統合
Vercel を使用する GitHub Actions
# .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' || '' }}
Supabase を使用する GitHub Actions
# .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 }}
デプロイプラットフォームのセットアップ
必須:プロジェクトを初期化するときは、使用するスタックに基づいて、デプロイプラットフォームへの接続タスクを必ず作成してください。
スタックごとのプラットフォーム選択
| スタック | デフォルトのプラットフォーム | 必要なアクション |
|---|---|---|
| Next.js / Node.js | Vercel | Git リポジトリを Vercel に接続する |
| Python(FastAPI、Flask) | Render | Git リポジトリを Render に接続し、API キーを取得する |
| 静的サイト | Vercel または Cloudflare Pages | Git リポジトリを接続する |
Vercel:Git リポジトリを接続する
Vercel がデプロイプラットフォームの場合は、以下のタスクを作成してください。
TODO: Connect Git repository to Vercel for automatic deployments
手順:
# 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
接続後:
mainへのプッシュ → 本番環境へデプロイ- その他のブランチへのプッシュ → プレビュー環境へデプロイ
- PR ではデプロイプレビューが自動的に作成されます
Render:Git リポジトリを接続する(Python)
Python プロジェクトで Render がデプロイプラットフォームの場合:
ステップ 1:Render API キーをユーザーに尋ねる
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.
ステップ 2:タスクを作成する
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
ステップ 3:ダッシュボード経由で接続する(推奨)
# 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: <project-name>
# - Runtime: Python 3
# - Build Command: pip install -r requirements.txt
# - Start Command: uvicorn main:app --host 0.0.0.0 --port $PORT
ステップ 4:CI/CD 用に API キーを保存する
# Add to GitHub secrets for CI/CD
gh secret set RENDER_API_KEY
# Or add to local env
echo "RENDER_API_KEY=<your-key>" >> .env
ステップ 5:render.yaml を設定する(任意 - 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 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
ツール利用時のアンチパターン
- ❌ シークレットのハードコード - CLI の環境管理または GitHub シークレットを使用する
- ❌ 手動デプロイ - CI/CD で自動化する
- ❌ Supabase のローカル環境を省略する - まず必ずローカルで開発する
- ❌ 本番データベースを直接変更する - マイグレーションを使用する
- ❌ ブランチ保護がない - PR レビューと CI チェックを必須にする
- ❌ 環境の分離が不十分 - 開発環境、ステージング環境、本番環境を分ける
コメント
Markdown 対応