自分のエージェントでエコシステム向けに構築する

すでに使用しているAIエージェント(Claude, ChatGPT, Cursor, Gemini, またはMCP対応ツール)でSOIS拡張機能を構築します。エージェントをSOIS MCPサーバーに接続し、自分のマシンで拡張機能を構築してから、レビューと公開のためにアップロードします。自分のAIを使用します。SOISは構築に料金を請求しません。

これはエコシステム向けのパスです。誰でもマーケットプレイス向けに構築し、自分のアプリから収益を得られます。カスタム拡張機能を構築するために開発者ポータルは必要ありません。エージェントを接続するだけで十分です。ポータルはマーケットプレイスへの公開と収益の管理を行う場所です。収益モデルについてはアプリを収益化するを参照してください。

仕組み

  1. エージェントを接続します。ワークスペースのMCPサーバーへ接続します(OAuthまたはトークン)。
  2. ローカルで構築します。MCP経由でエージェントが読み取るSOIS仕様に対して構築します。
  3. 検証します。問題がなくなるまで無料の静的チェックを実行します。
  4. バンドルをアップロードします。ハードニングされ、ゲートされ、レビューのキューに入ります。
  5. レビューと公開。承認されると、拡張機能がマーケットプレイスで公開されます。

エージェントを接続する

ビルドツールはワークスペース独自のMCPサーバー上にあり、MCP Serverで説明したエンドポイントと同じです。別途ビルドサーバーをセットアップする必要はありません。一度接続すれば、アカウントにビルド権限があるため、ビルドツールがエージェントのツール一覧に自動的に表示されます。管理者ゲートがかかっているため、ビルダー権限を持つアカウントにのみ表示されます。

Server:     https://<your-workspace-host>/api/mcp
Discovery:  https://<your-workspace-host>/.well-known/mcp.json

接続方法: 推奨はOAuthです。MCP URLをクライアント(Claude, ChatGPT, Cursorなど)に追加すると、サインインが検出され、何も貼り付けずに接続できます。OAuthに対応しないクライアントでは、BearerトークンとX-Api-Keyヘッダーも使用できます。接続フローと検出の詳細はMCP Serverを参照してください。

その後、エージェントでビルドツールが利用可能になります。ビルドを始める際は、まずルールの読み取りを依頼してください。

ビルドツール

Tool What it does
getExtensionRules 正規のマニフェスト、マイグレーション、パーミッション、ツールキット、i18n、UIおよびセキュリティのルール。最初に呼び出します。
getExtensionFrameSpec ローカルプレビュー用のホストフレーム契約: マウントシグネチャ、テーマトークン、REST APIの形状、バンドル形式。
createExtensionProject 新しいアプリプロジェクトを作成します。project_idを返します。
validateExtensionBundle ファイルに対して無料の静的ゲートをドライランし、修正すべき問題を返します。必要なだけ実行できます。
uploadExtensionBundle バンドルを送信します。ハードニングされ、ゲートされ、パスすればレビューのキューに入ります。
getExtensionStatus プロジェクトのライフサイクルステータスと最新の検証レポート。
listExtensionProjects 自分のプロジェクトとそのステータス。

バンドル形式

拡張機能は少数のファイルのバンドルです:

File Purpose
manifest.json 唯一の信頼できる情報源: id、エンティティ、データモデル、パーミッション、ファイル。
index.js UI。window.AppExtension.mount経由でマウントされるバニラJavaScriptのIIFEとして記述します。バンドル内にフレームワークはありません。
toolkit.js オプションのエージェントツール。審査員パターンに従います。
permissions.json ルート名と一致するパーミッションキー。
migrations/ ext_{name}_{table}という名前のデータベーステーブル。iddata JSONカラムを持ちます。
lang/ ロケールファイル。すべてのキーにext_{name}.というプレフィックスを付けます。

getExtensionRulesからエージェントが適用する主なルール:

  • ビジネスフィールドは個別のカラムではなくdata JSONカラム内に配置します。
  • 拡張機能間の外部キーは使用不可。マイグレーションのup()内でDROPTRUNCATEdropColumnは使用不可。生SQL、シェル、ファイルシステムアクセスは使用不可。
  • UIは--ext-*テーマトークンでスタイル設定し、SOISに合わせます。色やユーザー向けテキストをハードコードしないでください。

アップロード前に検証する

validateExtensionBundleはアップロード時にサーバーが実行するものと同じ無料の静的ゲートを実行するため、まずローカルで問題を修正できます。ファイルタイプ、マイグレーションの安全性、マニフェスト構造、命名、i18nをチェックします。サーバー側のゲートが常に権威を持ちます。ローカルでパスしても保証にはなりません。

アップロード、レビュー、公開

uploadExtensionBundleがパスを報告すると、バンドルは非公開のレビュー領域に保存され、プロジェクトはレビューに移行します。レビュアーが確認し、承認すればマーケットプレイスに公開され、フィードバック付きで返却されれば修正して再度アップロードします。

次のステップ