mcpField
B
bounded-backend

bounded-backend

github.com/bounded-sh開発075 回インストール2 日前に更新
リポジトリ

bounded-backend について

Bounded アプリのバックエンドポリシー作成を支援するスキルです。ルール、不変条件、関数、実行主体、ポリシーテストを扱い、開発者をタスクに応じた資料へ案内します。

主な機能

  1. 01アクセスルールと実行時不変条件の作成
  2. 02関数の実行主体と認可の定義
  3. 03ポリシー例とアクセスパターンの参照
  4. 04具体的なポリシーテストと失敗内容の確認
  5. 05タスクに応じたバックエンド資料への案内

活用シーン

  1. 01所有権やメンバーのアクセスルール設定
  2. 02残高、供給量、テナントデータの制約
  3. 03関数の実行主体、認可、呼び出し方法の設定
  4. 04ポリシーが許可・拒否する操作のテスト

インストール

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

$npx skills add https://github.com/bounded-sh/skill --skill bounded-backend

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

docs/
access-control.md
access-patterns.md
admin-and-ownership.md
agents-flue.md
ai-npcs.md
backend-runtime.md
browser-boundary.md
building-a-backend.md
building-for-agents.md
constants-and-defs.md
data-plane.md
examples.md
files-and-search.md
formal-verification.md
functions-ctx-ai.md
functions-ctx-browser.md
functions-ctx-build.md
functions-ctx-enqueue.md
functions-ctx-services.md
functions-graduation.md
functions-when-to-use.md
functions.md
hooks-and-anti-cheat.md
hooks-scheduled-webhooks.md
identity-and-logs.md
invariants.md
live-runtime.md
policy-cheat-sheet.md
policy-examples.md
docs/examples/
marketplace.md

詳細

Bounded バックエンド

Bounded アプリのサーバー側です。文書化されたサポート対象の変更サーフェスを管理するポリシー、ランタイムで強制される不変条件、信頼されたコードを実行する関数、そして誰が操作しているかを判断するアクターモデルで構成されます。 bounded deploy は検証、コンパイル、プッシュを行います。ランタイムのルールチェックと不変条件チェックは、文書化されたサポート対象の変更サーフェスでの違反をコミット前に拒否します。具体的なポリシーテスト(bounded tests run)とデプロイで、ポリシーを確認してください。このカバレッジを、サポート対象外の領域、文書化されていないストレージパス、または継承されたコーパスに一般化しないでください。CLI/デプロイについては bounded-deploy スキルを、クライアント SDK と認証 UI については bounded-frontend を参照してください。ファミリー内の適切なスキルを選ぶには、ルートの bounded スキルを参照してください。

最初からアクターモデルを意識して記述してください。ルールを書く前に、@user が誰なのか、関数がどのプリンシパルとして動作するのか(runAs/actAs)、認可がどこから得られるのか(@origin)を把握してください。

リファレンスルーター

最も一般的な5つのアプリの形のいずれかを構築していますか?この表を順に読むのではなく、クイックパス(ビルドごとに対象ページは1つ)をご利用ください。それ以外の場合は、現在のタスクまたは用語に一致する行だけを読んでください。

タスクまたは用語参照先
1画面で確認できる構文:フィールド型、階層、変数、演算子、ロジックの記述場所ポリシーのチートシート
アプリの説明からポリシーを生成または修正するポリシーの生成
意図別のポリシーの完全な例(マーケットプレイス、エスクロー、Vault、ステーキング、トークンなど)例のインデックス
複数コレクションにまたがるポリシーの実例(チーム向けSaaS、マーケットプレイス、リアルタイムゲーム)例
ルールのレシピ:所有者のみ、管理者または所有者、メンバーシップ、時間枠、検証、不変フィールド、アトミックなバッチアクセスパターン
ルールでユーザーの検証済みXアカウントを必須にする、またはコピーする方法、get(/__connections__/@user.id).xHandle、X連携ルールのテスト、連携前に入力されたハンドル、オンチェーンアプリ連携アカウント
ルール、フィールド、式、@user、@data、@newData、@time、get()、getAfter()、所有権フィールドポリシーリファレンス
上限、残高、供給量、テナントの分離、厳密な境界値;rollingSum、windowSum、flowBound、conserve、tenantTag、tenantEdge、bound不変条件
トレンドフィード、リーダーボード、順位付けされたwindowSum読み取りトレンドフィード
ブラウザーのCSP/アプリのページからアクセスできる対象を制限するブラウザー境界
定数、再利用可能なルール、@const、@def定数と定義
ルール、不変条件、フック、関数の使い分け関数を使うタイミング
関数;宣言、auth、entry、secrets、actAs、ctx.user、ctx.bounded、ctx.env、ctx.secrets、呼び出し、デプロイ関数
パブリック関数:<slug>-api.bounded.pageにある、Boundedセッション不要のHTTPルート、public、methods、cors、パブリックJWKS、マシンクライアント、Webhookモードとブラウザーパブリックモードパブリック関数
ctx.ai.run、ctx.ai.generateImage、ctx.ai.generateVideo、getJob、APIキー不要のAIctx.ai
ctx.services、管理対象のサードパーティAPI、bounded servicesctx.services
ctx.browser、関数からのヘッドレスブラウザー、サインインした状態で独自アプリを操作する方法、@const.AGENT、エージェントのIDctx.browser
ctx.enqueue、バックグラウンドジョブ、キュー、リプレイ時のIDctx.enqueue
ctx.build、管理対象のアプリビルドを開始する関数、画像と動画のビルド、mediaSlotsctx.build
シンプルに始めて、段階的に関数へ移行する関数への移行
ユーザー所有のプロバイダーAPIキーシークレット
スケジュール、dueRows、フック、Webhook、verifyWebhookスケジュール済みフックとWebhook
全件スキャンを行わない定期的なフリート処理スケジュール済みスイープ
不正防止の証明制限フックと不正防止
アトミックな書き込み、サブセット攻撃、requiresInBatch、incomplete_batchデータプレーン
クエリ、ページネーション、queryAggregate、count、フィルター、欠損とnullの違い、$exists、ソート、カーソルクエリ
ファイル、setFile、ストレージ、全文検索ファイルと検索
リアルタイムルーム;session.tick、settleTo、settleFrom、戦場の霧ビューリアルタイムとゲーム
ネイティブのライブモジュール;session.live、tick、views、@effect、live.intentライブランタイム
入力頻度、補間、予測リアルタイムのネットコード
AI NPC/AIプレイヤーAI NPC
長時間稼働するバックエンドランタイムまたはマネージドサービスバックエンドランタイム
複数ステップのFlueエージェントFlueエージェント
所有者、共同作業者、スコープ付き管理者管理者と所有権
トップレベルのroles、members、read:"*"、読み取り/書き込みスコープロール
access、カスタム/外部ロール、__owners__、__admins__、__developers__、__viewers__アクセス制御 · IDとログ
サービスキー、支払いボット、バックエンドID、runAs、actAs、@origin、ctx.originサービスキー · プリンシパルとオリジン
許可/拒否の具体的なテスト;policy-tests/*.json、bounded tests run/push/list/pullポリシーテスト
認証済みアプリのエンドツーエンドテスト認証済みアプリのテスト
完了時のレビュー品質チェックリスト
エージェント向けまたはバックエンド専用のアプリエージェント向けの開発 · バックエンドの構築

エラールーター

エラー/ステータス意味
403書き込みまたは関数の呼び出しがルールによって失敗しました。認証、所有権、ロール、または関数の auth を確認してください。拒否された読み取りは 403 ではなく、データが空の 200 として隠されます。
500 rule_evaluation_failedルールに到達しましたが、評価できませんでした。ルールによって拒否されたわけではなく、読み取りも書き込みも行われていません。拒否でも、再試行可能な競合でもありません。原因については bounded decisions を参照してください。行には decision: error が記録されます。
409 + 不変条件名トランザクションが不変条件に違反する可能性があります。状態またはポリシーを修正してください。
403 incomplete_batchコレクションの requiresInBatch 宣言で指定されている関連パスが、アトミックなバッチに含まれていません。完全な setMany を送信してください。
デプロイ検証エラー変更が行われる前に、ポリシーのデプロイが拒否されました。メッセージで示されたポリシー構文、フィールド型、ティア/不変条件の組み合わせ、定数、または式の使用を修正してください。

基本方針

  • 通常の所有権やメンバーシップの確認には @user.id を使用し、ウォレット/オンチェーンのセマンティクスに限り @user.address を使用してください。

  • 拒否された読み取りは空の 200 レスポンスを返します。ポリシーテストの expect 内の get() は、読み取りルールをスキップしてサンドボックスの状態を読み取るため、読み取りの拒否を実証するには、もう一つの実セッションを使用してください。書き込みや削除の拒否は shouldFail のままにしてください。

  • 固定合計には conserve、一定期間の上限には rollingSum、パーティションごとの累積流出量を流入量以下に制限するには flowBound を使用してください。正しさが複数の書き込みにまたがる場合は、アトミックな set-many を一つ使用してください。

  • 関連する書き込みがないと無効になる書き込みについては、悪意のあるクライアントが個別には有効なサブセットだけを送信できないよう、requiresInBatch を宣言してください。

  • プロバイダーの API キーはフロントエンドのコードではなく、Bounded のシークレットに保存してください。

  • ルールを記述する前に、実行主体を把握してください。関数の runAs/actAs と @origin によって、@user が誰になるか、呼び出しが認可されるかが決まります。

  • 認証が必要なアプリのアクションには、クライアント SDK の functions.invoke を使用し、関数の認証ルールを宣言して、ctx.user を使用してください。関数の引数として Bounded のセッショントークンを送信したり、公開 HTTP 関数内に JWT 検証機能を構築したりしないでください。今日のプロンプトなど、意図的に公開するデータは、ユーザー状態にアクセスしない別の公開関数に置いてください。

  • 非所有者ユーザーとして、プライベート関数のフローを検証してください。アプリでゲストに対応している場合は、匿名セッションも含めてください。状態を保存し、再読み込みしてから再開してください。所有者の CLI 呼び出しでは、データ読み取り権限の失敗が見えなくなることがあります。読み取りが拒否されると、データが存在しないように見える場合があるため、状態を再作成したりルールを緩和したりする前に、認可を調査してください。

コメント