// PLUGIN DEV

プラグイン開発ドキュメント

HTML が書ければ、プラグインも書ける。

クイックスタート

プラグインは本質的にウェブページ(HTML / CSS / JS)です。ページを書いたら、CosmosBox 内のプラグインパッケージャー.cbplugin ファイルにワンクリックパッケージし、誰に送ってもインストールして実行できます。

さらに速い道:AI ワンクリック生成 — AI チャットで要件を伝えるだけで(「電子木魚を作って」)、AI がインストール可能なプラグインを直接生成します。

ディレクトリ構造

プラグインは単一ファイルでも、複数ファイルのディレクトリでも構いません(.cbplugin は本質的に zip パッケージ):

my-plugin/ — プラグインパッケージ構造
my-plugin/
├── manifest.json // プラグインマニフェスト(必須)
├── index.html // エントリーページ(entry がこれを指す)
├── style.css // 任意のリソース
└── app.js // 任意のスクリプト

manifest.json のフィールド

manifest.json — 完全な例
{
"pluginId": "a3f8c1d2-9b4e-4f6a-8c5d-1e2f3a4b5c6d", // UUID v4 の一意ID(パッケージャーが自動生成)
"id": "mobi.reader", // 旧式ショートID(互換用)
"name": "MOBI Reader",
"version": "1.2.0",
"author": "YuzhouHe",
"description": "MOBI / AZW3 電子書籍を読む",
"icon": "📖", // 絵文字 / 画像URL / Base64
"entry": "index.html",
"permissions": ["file.read", "storage"],
"fileTypes": ["mobi", "azw3"] // ファイルルーティング:種類ごとに自動で開く
}
フィールド必須説明
pluginIdUUID v4 の一意ID、システムレベルの衝突防止;パッケージャーに自動生成させるのがおすすめ
id旧式ショートID(例:mobi.reader)。新規プラグインでは省略推奨、互換のみ
nameプラグインの表示名
versionセマンティックバージョン、例:1.2.0
author作者名
description一言の機能説明、プラグイン市場で表示
icon絵文字、画像URL、または Base64 画像
entryエントリーファイルの相対パス(通常 index.html
permissions権限宣言(例:file.read / storage)、権限センターで個別付与
fileTypes宣言する拡張子リスト、ファイルルーティングに接続(外部から自動で開く)

パッケージ手順

  1. プラグインの種類を選択:単一ファイル / 複数ファイルディレクトリ
  2. コードを入力:HTML を貼り付けるか、フォルダを選択
  3. manifest.json を設定:名前 / バージョン / エントリ / 権限 / ファイルタイプ
  4. 暗号化するか選択:公開プラグイン → .cbplugin;有料/プライベート → .encplugin(AES 暗号化 + パスワード二重確認で入力ミス防止)
  5. プラグインパッケージを生成:ワンクリックで完成、そのまま共有 / インポート・インストール可能
🛠️
一括パッケージ:開発環境には pack_plugins.ps1 スクリプトを用意。プラグインを編集したら一度実行するだけで全 .cbplugin を再生成します(.git / node_modules / build ディレクトリは自動スキップ)。

暗号化プラグイン .encplugin

.cbplugin.encplugin
用途公開共有有料 / プライベート配布
内容平文 zipAES 暗号化
インポート直接インストールパスワード入力(外部から開くと自動でダイアログ表示)

⚠️ 暗号化プラグインのパスワードは復元できません — 忘れるとプラグインは永遠に復号できません。大切に保管してください。

サンドボックスと権限

プラグインはサンドボックス化された WebView で実行されます — 開放と安全を両立:

仕組み説明
CSP セキュリティヘッダー注入meta タグ + HTTP ヘッダーの二重経路で外部スクリプトの読み込みを制限
eval / Function 無効化Object.defineProperty で完全カバー、動的コード実行を禁止
ネットワーク制限プラグインのネットワーク要求を60回/分に制限、悪用防止
パス隔離プラグインは自分のサンドボックスディレクトリのみ読み書き可(パストラバーサル対策)
権限センターpermissions 宣言 + 個別付与、すべての行動を監査可能
JS ブリッジブリッジ API でネイティブ機能を呼び出し(保存 / クリップボード / ファイル等)、ベースライブラリはホストが自動注入

プラグインの一意ID(UUID v4)

プラグインID は UUID v4(122 ビットのランダムエントロピー)を使用 — 衝突確率は無視できるレベルで、ユーザー側のID が重複しても互いに上書き・誤削除されません。パッケージャーに自動生成させるのがおすすめ。手動指定時は完全な UUID 形式(8-4-4-4-12)で — パッケージャーが形式検証します。

AI ワンクリックプラグイン生成

CosmosBox の AI チャットで直接要件を伝えます:

AI チャット
あなた → 電子木魚を作って。タップすると音とアニメーション付きで
AI → ✅ プラグイン「電子木魚」を生成しました — ワンクリックでインストール・実行

AI 生成プラグインにはベースライブラリが自動注入され(保存 / クリップボード / ダークモード対応)、生成後すぐにプラグインセンターからインストール可能。気に入らなければ編集ページで AI に続きを任せられます。

📤
自作プラグインができましたか?プラグイン投稿でプラグイン市場に掲載できます(投稿チャネルは近日公開)。
マトリックスモード: ON — 再入力するか ESC で終了