mcpField
V
vibehost-deploy

vibehost-deploy

github.com/gntc-labsクラウド・DevOps1195 回インストール今日更新
リポジトリ

vibehost-deploy について

vibehost-deployは、静的サイトやNext.jsアプリをVibeHostに公開するスキルです。CLIまたはMCPツールを使い、セットアップから稼働確認までを案内し、共有する別名URLと不変URLを示します。

主な機能

  1. 01静的サイトとNext.jsアプリのデプロイ
  2. 02VibeHost CLIのインストールと認証
  3. 03CLIとMCPによるデプロイ
  4. 04稼働までデプロイ状態を確認
  5. 05別名URLと不変URLを提示

活用シーン

  1. 01プレビュー用の静的ビルド公開
  2. 02Next.jsアプリのVibeHostへのデプロイ
  3. 03シェルなしでMCP経由のデプロイ
  4. 04レビュー用に固定ビルドURLを共有

MCP 対応

シェルを使えない場合、https://api.vibehost.com/mcp のMCPサーバーを利用します。アプリの確認、不足するBlobのアップロード、デプロイ、状態確認の手順を案内します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/gntc-labs/skills --skill vibehost-deploy

インストール後、Claude Code で/vibehost-deployを入力して読み込まれたか確認します。

詳細

VibeHost にデプロイする

ビルド済みの静的サイトや Next.js アプリを、数秒で VibeHost 上の非公開 URL に公開できます。

このスキルを使う場面

ユーザーが次のようなことを言った場合です。

  • 「これをリリースして」「これをデプロイして」「これを公開して」「これをホストして」「これをパブリッシュして」
  • 「このビルドのプレビュー URL を教えて」
  • 「これをステージング環境に送って/デモリンクを作って」

または、静的ビルドの出力(dist/、out/、build/)や Next.js ビルドを作成した直後で、次の自然なステップがホスティングである場合です。

ユーザーがまだ VibeHost アカウントを持っていない場合は、https://vibehost.com/signup を案内してください。デプロイには認証済みのセッションが必要です。

セットアップ

インストーラーをダウンロードして内容を確認してから実行し、シェルに直接パイプしないでください。

# macOS / Linux; installs one static binary, user-level only (no sudo)
curl -fsSL -o vibehost-install.sh https://vibehost.com/install.sh
cat vibehost-install.sh   # review it first: the script verifies the CLI binary's
                          # SHA256 against the release manifest before installing
sh vibehost-install.sh && rm vibehost-install.sh

vibehost login        # device-flow browser login; or VIBEHOST_TOKEN env var for headless/CI
vibehost whoami        # confirm session + which workspace is active

インストーラーが書き込むのは ~/.vibehost/ と ~/.local/bin 内の bin シムだけです。シェルプロファイルの編集も、ルート権限も不要です。匿名のインストール通知(プラットフォーム、シェルのバージョン、成功/失敗)を送信します。VIBEHOST_NO_TELEMETRY=1 を設定するとオプトアウトできます。

認証には次のいずれかを使用できます。事前に実行した vibehost login(トークンは ~/.config/vibehost/config.json に保存)、環境変数の VIBEHOST_TOKEN PAT(ヘッドレス/CI 用)、または https://api.vibehost.com/mcp の MCP OAuth セッションです。ほとんどのコマンドはスクリプトで扱える出力を得るために --json を指定できます。解析する場合は --json を優先してください。

VibeHost でホストできるもの

  • 静的サイト(デフォルトのランタイム)— ルートに index.html がある任意のディレクトリ(dist/、out/、build/、または通常の HTML)。
  • Next.js アプリ(プライベートベータ) — --runtime nextjs を指定してオプトインします。App Router、SSR、ISR、サーバーアクション、画像の最適化に対応しています。プリレンダリングのみのビルドは静的高速パスで自動配信されます(コンテナは不要です)。データベースが必要なアプリでは、外部 DB の代わりにマネージド Postgres(vibehost db、Neon serverless)を使用できます。app create --runtime nextjs が NEXTJS_RUNTIME_GATED を返した場合、このユーザー/ワークスペースでは現在ランタイムを利用できません(アクセス可否はプラットフォーム、ワークスペース、ユーザーのゲートによって異なる場合があります)。静的エクスポート(output: 'export' + ./out のデプロイ)に切り替えるか、ワークスペースのオーナーにアクセスを依頼してください。

推奨方法:CLI

vibehost CLI は、アプリの作成、ファイルのハッシュ化、Blob のアップロード、デプロイを進捗表示付きの 1 つのコマンドにまとめます。シェルコマンドを実行できる場合は、これを優先してください。

vibehost app create my-app                  # once per app; name: lowercase, 2–40 chars, [a-z][a-z0-9-]*
vibehost deploy ./dist --app my-app --json  # every time

# Next.js app instead of a static build (private beta — see above; server build by default):
vibehost app create my-app --runtime nextjs --json
vibehost deploy . --app my-app --json       # sandboxed server build; no local next build required
# Or explicitly build on the user's machine:
vibehost deploy . --app my-app --build client --json

--json の出力は { ok: true, data: { url, immutableUrl, ... } } です。コマンドが終了コード 0 で終了するのはデプロイの正常性が確認された後だけなので、正常終了すれば URL は公開済みです。

ヒント:プロジェクト内で vibehost link --app my-app を実行すると .vibehost/project.json が作成され、その後はフラグなしで vibehost deploy を実行できます。

シェルを使わない場合:MCP サーバー

シェルを実行できなくても、https://api.vibehost.com/mcp への MCP 接続があれば、ツール呼び出しを順番に行ってデプロイできます。正確なパラメータスキーマについては、各ツールの description を参照してください。 以下にツール名と順序を示しますが、このドキュメントに記載された引数の形式を固定して使わないでください。

  1. list_apps — ワークスペース内の既存アプリを確認します。
  2. create_app — 対象アプリが存在しない場合にのみ実行します({ name, workspaceId })。
  3. check_blobs_missing — ファイルの SHA-256 を渡し、サーバーに必要なファイルを確認します。
  4. request_upload — 不足している SHA 用の署名付き PUT URL を発行し、通常の HTTP で各 URL に生バイト列を PUT します(Content-Type: application/octet-stream)。
  5. deploy — { appId, channel?, manifest[] } を渡します。{ deploymentId, status: "starting" } がすぐに返されます。サイトはまだ公開されていません。
  6. get_deployment — deploymentId を指定して、status が healthy(公開済み)、failed(エラーを確認)、または superseded になるまでポーリングします。

ユーザーに伝える内容

結果に含まれる URL を両方必ず提示してください。

  • エイリアス URL(url)— このチャネルの最新デプロイを参照します。他の人と共有する場合はこちらを使います。
  • 不変 URL(immutableUrl)— このビルドそのものに固定されます。バグ報告、レビューリンク、アーカイブ済みのデモに使用します。

注意点

  • ルートに index.html がない — 静的デプロイには必要です。クライアントサイドルーティングを使用する SPA(React Router、Vue Router、Remix の SPA モード)では、パスが見つからない場合にエッジが index.html を返す必要があります。https://docs.vibehost.com/guides/static-sites を参照してください。_redirects ファイルは追加しないでください — VibeHost はこれを解析しません(Netlify/Pages の規約です)。
  • tarball が拒否される — ビルドが大きすぎる場合や形式が不正な場合は、TARBALL_INVALID が発生します。理由は error.details に記載されています。大きなアセット(動画、本番用ソースマップ、不要な node_modules)を削除するか、プランをアップグレードしてください。
  • ワークスペースが違う — ワークスペース A にスコープされたトークンでワークスペース B のアプリにデプロイすると、TOKEN_WORKSPACE_MISMATCH が返されます。このエラーを通知し、別の場所で黙って再試行しないでください。
  • ID は推測せずに確認する — appId と workspaceId は list_apps/vibehost whoami(または list_workspaces)で取得します。古い ID をハードコードすると失敗します。毎回、最新の ID を取得してください。
  • まず MCP ツールのスキーマを読む — MCP 経由で利用する場合、パラメーターの形式はツールごとに異なり、時間とともに変わります。呼び出す前に各ツール固有の description を読み、このドキュメントに記載された引数の形式を前提にしないでください。
  • error.message ではなく error.code で分岐する — コードは安定した SCREAMING_SNAKE_CASE 形式ですが、メッセージは表現が変わることがあります。
  • エッジの WAF によって raw blob のアップロードがブロックされる — CLI は UPSTREAM_FAILED を維持しますが、details.kind = "blob_upload_blocked"、ファイルパス、--no-chunked のヒントが追加されます。vibehost deploy --no-chunked で再試行してください。gzip tarball 経由のアップロードでは、raw ファイルのバイト列に対するコンテンツ検査を回避できます。

リファレンス

コメント