アプリWebサイト は何をしますか?
ユーザーから提供されたデザインをスタンドアロンの静的サイトとして納品し、再現可能なBun開発/ビルドコマンドと明示的なデプロイ状態を提供します。要求されたホスティングプロバイダを維持します。このワークフローはAceCut(/data/swi-algo/Swi-App-Factory/Acecut/website)およびGolfCutに由来します。これらのプロジェクトは例であり、必須の依存関係ではありません。
入力の確立
該当するAGENTS.mdを読み、プロトタイプ、既存のWebサイト、デプロイメントドキュメントを精査します。アプリ名、出力先ディレクトリ、正規ドメイン、実際のApp Store URL、要求されたビジュアル変更を特定します。既存のブランディングとコンテンツを再利用します。ファイルシステムへの書き込みアクセス権とホスティング/DNS認証を早期に確認します。デプロイメントアクセスが利用できない場合は、ローカルでの準備を続行します。認証が利用できないことをデプロイ成功とみなさないでください。
Bunプロジェクトの準備
新しい静的Webサイトの場合、空のディレクトリを初期化します:
python3 <skill-directory>/scripts/init_site.py <app-directory>/website --slug <app-slug>
cd <app-directory>/website
bun install
バンドルされたスターターには、検証済みのビルド/プレビュースクリプトとVercel設定が含まれています。既存のプロジェクトのツールは適切な場合は維持します。public/ にソースが含まれ、scripts/build.mjs がそれを dist/ にコピーします。本番環境ではBunサーバーは不要です。プレーンなHTML/CSS/JSには依存関係は必要ありません。BunがPATHにない場合は、何かをインストールする前に ~/.bun/bin/bun を確認します。別のアプリから .git、.vercel、認証情報、IDをコピーしないでください。
プロトタイプの転送
許可されたソースエクスポートまたはリポジトリを優先します。パブリックな静的プロトタイプのみが利用可能な場合は、HTMLを取得し、同一オリジンのHTML src/href およびCSS url() 依存関係(機能ページ、アイコン、SVG、スクリプトを含む)を再帰的に検査します。Python HTTPクライアントがホストに拒否された場合は、curlで取得します。欠落しているリソースは明示的に失敗させます。エラーボディを画像として保存しないでください。ディレクトリルートは public/<route>/index.html にマッピングします。
アセットはローカルに保持します。ホスティングによって注入されたCloudflareチャレンジスクリプトと、取得したHTMLからプレビュー専用のメタデータを削除し、アプリケーションJSは保持します。サービス認証情報をコピーしたり、要件なしに分析機能を追加したりしないでください。Google Fontsなどの外部依存関係を確認します。プロトタイプのアプリリンクはそのまま維持します。App Store IDを発明したり、別のアプリの法的条件を無断で置き換えたりしないでください。
プロトタイプのオリジンを、正規URL、Open Graph、JSON-LD、robots、sitemap内で、意図した本番環境オリジンに置き換えます。ページパスは一貫して維持します。ボタンカラーのリクエストについては、レンダリングされたアセットだけでなくCSSも検査します。塗りつぶされたSVGはCSSの背景を隠す可能性があります。対象となるSVGの背景パスのみを変更し、ロゴ/テキストパス、アクセシブルな名前、リンクターゲットは維持します。
会社フッターと法定ページ
AceCutに準拠するSWINKアプリWebサイトの場合、© <year> SWINK AI INC.、可視の mailto:[email protected] コンタクトリンク、そしてすべてのページ(機能ページと法定ページ自体を含む)に動作する /terms および /privacy リンクを使用します。現在のアプリのブランドとビジュアルスタイルを維持します。ルート相対パスのアセットとナビゲーションを使用して、ネストされたルートが機能するようにします。法定リンクはJavaScriptなしで到達可能にします。フッターリンクはタブレットで折り返し可能にし、水平方向のオーバーフローがないコンパクトなモバイルレイアウトを使用します。
ユーザーが調整を要求した場合は、参照アプリの利用規約/プライバシーポリシーの構造と確認済みの会社/連絡先の詳細を使用し、アプリ名、実際の機能、日付、正規URL、相互リンクを適応させます。別のアプリの分析プロバイダ、アップロード動作、保存/保持の約束、設定を盲目的に転送しないでください。そのような主張については利用可能な製品エビデンスを検査します。未確認の詳細は発明するのではなく省略します。利用規約とプライバシーポリシーは読みやすいスタンドアロンページに保ち、両方をsitemapに追加し、ローカルツールとVercelでクリーンなURLを確認します。
フッター/法定ページの変更については、影響を受けるすべてのページをデスクトップ、タブレット、狭いモバイル幅で確認します。会社のテキスト、mailtoターゲット、両方の法定リンク、読みやすいテキスト、オーバーフローがないこと、モバイルナビゲーションを確認します。要求されたダウンロードボタンの色は維持します。プッシュ後、新しい本番デプロイメントを確認し、実際の /terms と /privacy をHTTPS経由で取得してから、それらが公開されていると報告します。
ビルドと検証
bun run build
bun run preview
ローカルサーバーは、ディレクトリインデックスルートと .html クリーンURL、GETおよびHEADをサポートし、存在しないファイルには404を返します。すべてのページとローカルアセットをHTTP経由で検証します。サイトマップと正規URLを確認します。デスクトップと狭いモバイル幅(例:1440、768、390、320)を確認します。オーバーフロー、読み込まれた画像、ブラウザエラー、メニュー、タブ/キーボードコントロール、FAQ、フィルター、ダウンロードターゲット(該当する場合)を確認します。レビュースクリーンショットは public/ の外に保存します。色がSVGで表現されている場合は、計算されたCSSだけでなく、そのパスまたはスクリーンショットのピクセルも検査します。
GitHub公開とマシンアクセス
SWIマシンでは、AceCutはLinuxユーザー ubuntu(GitHub ID CC-AIMI)の既存のGitHub CLIログインを使用してプッシュされました。この前提に依存する前に、gh repo view <owner>/<repo> --json viewerPermission,defaultBranchRef,isEmpty を使用して現在のIDとリポジトリの書き込み権限を確認します。ネットワーク/プロキシエラーは、無効なログインの証拠ではありません。動作する gh ログインがあるにもかかわらずGitがユーザー名を要求する場合は、同じ認証済みLinuxアカウントでコマンドごとの資格情報ヘルパーを使用します:git -c credential.helper='!gh auth git-credential' push origin <branch>。これにより、トークンを公開したり、グローバルなGit設定を変更したりすることなく、既存のログインを再利用します。アカウント間で認証情報をコピーしたり、パスワードやトークンをこのスキル、シェル引数、ソースファイル、ログに入れたりしないでください。
ユーザーが管理者アカウントを承認してUnix権限の問題を解決する場合、id と getfacl を検査し、必要なプロジェクトアクセスのみを付与します(例:setfacl -m u:<executor>:rwx,d:u:<executor>:rwx <project>)。所有者/グループおよび無関係な権限は維持します。管理者ログインはVercelやGoDaddyを認証しません。
明示的に要求されたリポジトリが既に存在する場合は、最初にクローンを作成してその履歴を保持します。無関係な初期コミットを強制プッシュしないでください。Webサイトファイルはリポジトリルートに配置し、別の website/ レイヤーには配置しません。準備されたソースを転送する際には、.git、.vercel、dist、node_modules、検証スクリーンショット、シークレットを除外します。別の許可されたLinuxアカウントを通じて公開する場合は、そのアカウントが所有する一時的なチェックアウトを使用し、ソースへの必要な読み取りアクセスのみを付与します。リポジトリの意図された作成者をローカルで設定し、ステージングされたファイルを検査し、コミットし、意図されたブランチにプッシュし、リモートSHAを確認します。その後、メインの作業チェックアウトを同期したままにします。
diifan/golfcut-website のようなスタンドアロンリポジトリの場合、Vercelはルートディレクトリ ./ でそのリポジトリをインポートする必要があります。GitHubへのプッシュだけではVercelプロジェクトは作成されません。
VercelとDNS
スターターは、フレームワーク null(ダッシュボード:Other)、bun install、bun run build、出力 dist、cleanUrls: true、trailingSlash: false を使用します。スタンドアロンのWebサイトリポジトリでは、Vercelルートディレクトリを ./ に設定します。アプリのmonorepoでは、website/ を使用します。認証されたVercel CLI/APIが直接デプロイできる場合、GitHub統合はオプションです。ユーザーの許可された公開範囲に従い、別の承認ゲートを追加しません。
作成またはリンクする前に、認証されたアカウント/チームと既存のプロジェクトを検査します。CLIログインが必要な場合は、bun x vercel login を実行し、現在のデバイス認証URLをユーザーに送信します。独立した作業を完了している間、プロセスをアクティブに保ちます。bunx シムがない場合でも bun x は機能します。CLIが確認するまでログインを主張しないでください。ログイン後、利用可能なチームとAceCutのプロジェクトを検査し、同じ意図されたスコープを選択し、新しいアプリプロジェクトを作成/リンクし、その正確なGitHubリポジトリを接続してからデプロイします。これらの機能を提供する場合は、接続されたVercelプラグインを優先します。期限切れのデバイスコードを再利用したり、提案されたプラグインが接続されていると仮定したりしないでください。別のアプリのプロジェクトIDを決して再利用しないでください。ビルドされたWebサイトをデプロイし、返されたデプロイメントURLを確認します。要求された app.goswie.com については、その正確なドメインをVercelプロジェクトに追加し、プロジェクトの現在のDNS推奨を取得します。権威のあるDNSプロバイダ(AceCutはGoDaddyを文書化しています)で、要求されたアプリレコードのみを作成/更新します。通常はCNAMEホスト app です。Vercelによって返されたターゲットを使用します。推測されたりコピーされたAceCutターゲットは使用しません。無関係なレコード(特に @、www、MX、ネームサーバー)は維持します。既存の無関係なレコードを置き換える前に、所有権/競合を解決します。Vercelが必要とする場合にのみ、要求された検証TXTレコードを追加します。
パブリックDNS、Vercelドメインステータス、HTTPS、デプロイされたページを確認します。認証情報がない場合は、ビルドを完了し、残りの正確なアカウントアクションを文書化します。準備された設定、完了したデプロイメント、確認されたドメインを区別します。計画中のドメインを公開済みとラベル付けしないでください。
現在の公式リファレンス(デプロイメント作業時に参照):
検証済みCLIシーケンス
GolfCutはVercel CLI 65.4.0でデプロイされました。認証済みログイン後、フラグが異なる場合は現在の --help を使用してください。確認済みのスコープ、プロジェクト、リポジトリを代入します。AceCutとGolfCutに使用された実際のSWIスコープは diifans-projects です。
bun x vercel teams list
bun x vercel project list --scope <scope>
bun x vercel project create <project> --scope <scope>
bun x vercel link --yes --project <project> --scope <scope>
bun x vercel git connect --yes --scope <scope>
bun x vercel project update <project> --framework other --build-command 'bun run build' --install-command 'bun install' --output-directory dist --yes --scope <scope>
bun x vercel --prod --yes --scope <scope>
bun x vercel domains add <app-domain> <project> --scope <scope>
bun x vercel domains verify <app-domain> --scope <scope>
正しいGitリモートを使用して、Webサイトのチェックアウトからこれらを実行します。一致するプロジェクトが存在する場合は作成をスキップします。git connect --yes はそのリモートを使用します。--yes がないと、エージェントモードのCLIは確認プロンプトで終了し、実際には接続されない可能性があります。link はOIDCトークンと .vercel/ を含む .env.local を作成する場合があります。両方とも無視されるように保持します。印刷したりコミットしたりしないでください。
新しく生成されたデバイスログインURLを直ちに送信し、ログインプロセスを維持し、明示的な成功を待ちます。ユーザーが無効/期限切れのコードを報告した場合は、古いログインを停止し、新しいものを発行し、認証のためにターンをアクティブに保ちます。古いURLを返し続けないでください。
READYデプロイメントとカスタムドメインエイリアスは、パブリックDNSが機能することを証明しません。認証なしでパブリック <project>.vercel.app URLと要求されたドメインの両方をテストします。domains verify は正確な推奨CNAMEを返します。ユーザーがDNSを管理する場合に備えて、その値を記録します。DNSが保留中の間、パブリックプレビューを利用可能に保ちます。Gitが接続されている場合、後のプッシュはデプロイメントをトリガーするはずです。特定の新しいコミットが公開されていると主張する場合は、デプロイメントステータスを確認します。
引き継ぎ
ソースの発信元、コマンド、ビルド出力、検証エビデンス、残りの制限事項をWebサイトのREADMEに記録します。生成された出力、ローカル検証成果物、環境ファイル、プロバイダ認証情報はGitの対象外とします。デプロイメントが成功した後にのみ実際の公開URLを報告します。それ以外の場合は、準備完了のプロジェクトと正確なブロッカーを提供します。