bounded-frontend について
bounded-frontendは、Boundedアプリのクライアント開発スキルです。Webやモバイルの画面を作る開発者向けに、SDK、エンドユーザー認証、ホスト型フロントエンドを扱い、クライアントの書き込みがポリシーに従うことを説明します。
主な機能
- 01SDKの読み取り、書き込み、購読の案内
- 02Webとモバイルのフロントエンド構築
- 03エンドユーザー認証の設定
- 04ゲストアカウントとウォレットログインの説明
- 05ホスト型フロントエンドとアプリURLの案内
活用シーン
- 01リアルタイム更新を表示する画面の構築
- 02メールやOAuthによるアプリユーザー認証の設定
- 03ゲストアカウントやウォレットログインの実装
- 04フロントエンドのホスティングとアプリURLの確認
MCP 対応
Boundedのフロントエンド開発向けエージェントスキルです。入力にはMCPとの具体的な関係は記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bounded-sh/ skill --skill bounded-frontendインストール後、Claude Code で/bounded-frontendを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
docs/anonymous-accounts.mdapp-auth.mdauth.mdautomatic-login-completion.mdbuilding-a-webapp.mdbuilding-for-react-native.mdconnected-accounts.mdfrontend-hosting.mdsdk-reference.mdserver-apps.md詳細
Bounded フロントエンド
Bounded アプリのクライアント側について説明します。ウェブアプリやモバイルアプリから呼び出す SDK、エンドユーザーの認証方法、ホスト型フロントエンドの配信方法を扱います。クライアントからのすべての書き込みには引き続きポリシーが適用されるため、クライアントの操作にルールや不変条件が必要な場合は bounded-backend スキルを、ホスティングやドメインについては bounded-deploy スキルを併せて参照してください。スキル群を横断して確認するには、ルートの bounded スキルを参照してください。
リファレンスルーター
現在のタスクまたは用語に一致する行だけを読んでください。
| タスクまたは用語 | 参照先 |
|---|---|
SDK の読み取り、書き込み、サブスクリプション、ページング、queryAggregate、count、フィルター、ソート、カーソル、setMany、set(path, null) | SDK リファレンス |
| ウェブフロントエンドの構築 | ウェブアプリガイド |
ローカル開発サーバー(npm run dev、Vite、localhost)、ログインポップアップの失敗、redirect_uri origin is not a registered origin、ローカル開発中の CORS | localhost での開発 |
更新タイマー、setInterval、ポーリング、「最新の状態を保つ」、カウントダウン、古い UI | SDK リファレンス |
| React Native/モバイル向けの構築 | React Native ガイド |
アプリユーザーのメール OTP、OAuth、openBoundedWidget、統合ログインウィジェット、デフォルトの Turnkey 認証 | アプリ認証 |
独自ウォレットによるログイン、walletLogin、authMethod:'phantom'、supportsWalletSignIn、非対応ウォレット/Wallet Standard | ウォレットログイン |
更新後にウォレットログインが失われる、再読み込み後に getCurrentUser() が null になる、bounded_last_auth_method、セッションの復元方法 | ウォレットログイン - 「ウォレットセッションは再読み込み後も維持されます」 |
| ゲスト、匿名ユーザー、招待リンク、アカウントのアップグレード | 匿名アカウント |
ユーザーの X アカウントのリンク、connect('x')、completeConnection、getConnections、認証済み X ハンドル、__connections__ | 接続済みアカウント |
| ホスト型フロントエンドとアプリ URL | フロントエンドのホスティング |
ホスト型ウィジェットの非表示または制限、/__bounded/widget.js、openApps.widget.visibility | ウィジェットを非表示にする |
| 独自のサーバーを実行する Next.js アプリ(vinext)、そのシークレットと制限 | サーバーアプリ |
CLI の開発者ログインまたは bounded login | 開発者アカウント |
埋め込みウォレット、auth.wallets、メール/ソーシャルログイン後の @user.address | 埋め込みウォレット |
onramp()、カードでの SOL/USDC 購入、Coinbase Onramp、ウォレットへの入金 | オンランプ |
経験則
- クライアントによるすべての書き込みはポリシーに従います。書き込み時の
403はルールによる拒否であり、クライアントのバグではありません。ルールについては、バックエンドの境界設定に関するスキルを参照してください。 - 拒否された読み取りは空の
200レスポンスを返し、403は返しません。 - デフォルトでライブにし、ポーリングは決して行わないでください。 すべてのコレクションはプッシュベースです。そのため、パスを再読み込みする
setIntervalは調整方法の選択ではなくバグです。useQuery(React)またはsubscribeを使ってください。カウントダウンは再読み込みではなく、ローカルのクロック状態に基づいて更新します。ライブではない少数の対象(runQuery、functions.invoke、サードパーティ)のみ、意図的にポーリングしてください。非表示のタブでは一時停止し、タイマーの対象を必要な状態に限定して、間隔を徐々に延ばし、上限を設けてください。sdk-reference.md を参照してください。 - 計算済みの値のリストを読み取る場合は、
runQueryManyでまとめてください。runQueryをリストに対して繰り返し呼び出さないでください。sdk-reference.md を参照してください。 - プロバイダーの API キーはフロントエンドのコードではなく、バックエンドの Bounded シークレットに格納してください。
npm auditで@solana/web3.js -> jayson経由のuuidに関する勧告 GHSA-w5hq-g745-h8pq が報告された場合は、範囲を限定したオーバーライドの手順を使ってください。 これはその勧告に対処するものです。インストール済みのロックファイルに対してnpm audit --omit=devを実行し、残りの検出結果があれば個別に調査してください。- ほとんどのアプリでは、認証のデフォルト設定を維持してください。 ウォレットを「有効にする」ために
authModeやauth.walletsを追加しないでください。デフォルトの Turnkey によるメール/ソーシャルログインには、すでに@user.addressが含まれています。"auth": { "wallets": true }をデプロイするのは、外部キーペアのセッション(独自ウォレットでのログイン、サーバー SDK のキーペアクライアント、CLI のキーペアデータレーン)の場合に限ってください。完全なルールとオプトアウトについては、embedded-wallets.md を参照してください。 @user.id(アカウント ID)は識別と所有権を表し、@user.addressはウォレットを表します。 キーの所有権、メンバーシップ、認証ガードには、常に存在する@user.idを使用してください。@user.addressはウォレット/オンチェーンの用途に限って使用し、識別キーとしては決して使用しないでください。- スマートフォンでのウォレットログインには Solana Mobile アダプターが必要です。 スマートフォンのブラウザーはウォレットアプリをインジェクトしません。
@solana-mobile/wallet-standard-mobileをインストールしたままにし(.npmrcではlegacy-peer-deps=true)、ウィジェットを開く前にwindow.solanaの有無を事前確認しないでください。Solana Mobile を参照してください。
コメント
Markdown 対応