live-dev-deploy について
Git Flow と Vercel を使うチーム向けに、開発検証とリリースの手順を定めるスキルです。ローカル QA のゲート、テスト失敗時の修復、プレビュー URL の共有、本番リリースとロールバックを扱います。
主な機能
- 01Git Flow のリリース手順
- 02Playwright、lint、build のゲート
- 03ステージ済み変更のシークレット検査
- 04テスト失敗時の修復ループ
- 05プレビュー URL の共有
- 06本番リリースとロールバック
活用シーン
- 01コミットや push 前の変更検証
- 02レビュー用デプロイプレビューの共有
- 03承認済み変更の本番リリース
- 04障害がある本番リリースの取り消し
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ drgarbage/ ag-course-index --skill live-dev-deployインストール後、Claude Code で/live-dev-deployを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/playwright-qa-rules.mdresources/resolve-preview-url.jsvercel-preview.yml詳細
live-dev-deploy
このスキルでは、ローカルでの検証、テスト駆動の自動修復、プレビュー URL の提供、Git Flow によるリリースデプロイを案内します。
bash ブロックは POSIX(Windows では Git Bash)用です。1 つのコマンド/パイプを超えるロジックは、シェルの制御フローではなく、resources/*.js に記述します。Bash ツールが cmd.exe または PowerShell の場合は、実行前に各スニペットを変換してください。
1. Git Flow とリリースのライフサイクル
| 遷移 | トリガー | ゲート |
|---|---|---|
develop → feature/* | 新しい依頼 | — |
feature/* → develop | QA ループ + ローカルでのシークレットスキャン PASS | gh pr checks <PR#> --watch が成功。ローカル ≠ CI:CI ではさらに lint + build も実行されます。 |
develop → main | ユーザーが以下のリリース確認プロンプトを承認 | 同じ CI 完了待ち → マージ → タグ付け → バージョン更新 |
main → develop | リリース PR のマージ直後 | バックマージします。PR は不要です。バージョン更新コミットは main にのみ存在します。ブランチ間のバージョン衝突を防ぐため、この手順はスキップしてください。 |
リリース確認プロンプト(原文のまま):"Would you like to release this to the production environment?"
- バージョン更新: リリース PR にはタグ
v<major>.<minor>.<patch>と、それに一致するpackage.json:versionの両方を含めます(現在の値を確認し、デフォルトは0.0.0として、特に指示がなければパッチバージョンを上げます)。 - マージ制限: CI が失敗中または保留中の場合は、絶対にマージしないでください。ローカルで成功した後に CI が失敗した場合は、QA の修復ループに戻り、プッシュして完了を待ちます。
- マージコンフリクト: コンフリクトをユーザーに提示してください。手書きのソースコードのコンフリクトを自分で解決してはいけません。
- ステージングと本番のデプロイ: Vercel GitHub integration を使ってデプロイします。本番デプロイでは、デフォルトで Vercel Deployment Protection(パスワード保護または Vercel Authentication)を無効にし、一般公開されるようにしてください。
- 公開アクセスの検証: 本番デプロイに一般公開でアクセスできない(ログイン画面にリダイレクトされる/ping に失敗する)場合は、「The production deployment is not publicly accessible. Would you like to enable public access?」と尋ね、Vercel Project Dashboard(Settings -> Deployment Protection)で保護を無効にするよう案内してください。
- ロールバック: 本番環境に問題が発生した場合は、
main上でマージコミットをgit revertしてからプッシュします。
2. ローカル検証と自動修復
セットアップ、ポートの検出、テストのテンプレートについては、references/playwright-qa-rules.md を参照してください。開発サーバー、baseURL、テスト URL には同じポートを使用します。
コミットまたはプッシュの前に、すべてのゲートが成功している必要があります。失敗中のゲートがある状態で、絶対にコミットまたはプッシュしないでください。Playwright スイート、lint、build に加え、コミットのたびに gitleaks protect --staged(detect ではなく、ステージ済み差分を対象)を実行します。
- 失敗時: エラー/トレースを解析し、実装コードのみを修正してから、
references/playwright-qa-rules.mdの修復ループに従って再実行します(試行は最大 3 回。その後は停止して報告します)。 - シークレットスキャンゲート: シークレットが検出された場合、コミットをブロックします。シークレットは Vault に移し、
process.env経由で参照してください。 - Firestore のローカル検証: 機能が Firestore に関わる場合は、実際のプロジェクトではなく、Local Emulator Suite を使って QA ループを実行します(
references/react-firestore-rules.md)。 - フック: lint とシークレットスキャンをコミット前に実行する、コミット済みで自動インストール可能なフックマネージャー(Husky/Lefthook)をインストールします。
3. プレビューを優先した提供
検証用に localhost のリンクをユーザーに渡してはいけません。次を実行します。
node resources/resolve-preview-url.js # exit 0 -> prints PREVIEW_URL=<url>
- ポーリングには
resolve-preview-url.jsを使い、GitHub Deployments API に問い合わせます。 - 時間がかかりすぎる場合は、次のようにエスカレーションします。
- 60s:試行回数を増やし、ビルド中であることをユーザーに伝えます。
- 約 5 分:プッシュしたコミットで絞り込んだ、非対話型の JSON
vercel listを使います。 - それ以降:ダッシュボード URL または
vercel inspectを報告します。
⚡️ Features deployed successfully! Preview URL: https://project-git-develop-user.vercel.app
4. ガードレール
問題のあるパターン(Context を使わずに prop drilling を行う、GitHub automation を迂回する、プレビュー用データベースを本番で再利用する、など)を求められた場合は、停止して次を提示します。
| 依頼内容 | 提案する代替案 | |
|---|---|---|
| セキュリティリスク | ||
| 保守コスト |
原文どおりの文字列 "I understand the risk and insist on this." が示された場合にのみ再開してください。
5. 出力形式
検証ログ
- Vercel デプロイリンク:[プレビューまたは本番 URL]
- Git ブランチ:[feature ブランチ/develop/main]
- PLAYWRIGHT テストの状態:[PASS/FAIL]
チェックリスト
| ID | 項目 | 結果 | 証拠 |
|---|---|---|---|
| F1 | ローカル QA テスト | PASS / FAIL / N/A | [テストログの抜粋] |
| F2 | プレビュー URL | PASS / FAIL / N/A | [稼働中の Vercel プレビュー URL] |
| F3 | シークレットスキャン | PASS / FAIL / N/A | [スキャン結果の概要] |
コードの変更
[file path]: [変更内容]
スモークテストの出力
[Playwright execution output]
残存するリスク
- [未テストの機能、認証情報の分離、または「なし」]
再発防止策
- [ルール / フック / テスト / スキル / 「不要」+理由。リポジトリ URL、Vercel プロジェクト、Firebase プロジェクト ID も記載]