HTML が書ければ、プラグインも書ける。
プラグインは本質的にウェブページ(HTML / CSS / JS)です。ページを書いたら、CosmosBox 内のプラグインパッケージャーで .cbplugin ファイルにワンクリックパッケージし、誰に送ってもインストールして実行できます。
さらに速い道:AI ワンクリック生成 — AI チャットで要件を伝えるだけで(「電子木魚を作って」)、AI がインストール可能なプラグインを直接生成します。
プラグインは単一ファイルでも、複数ファイルのディレクトリでも構いません(.cbplugin は本質的に zip パッケージ):
my-plugin/
├── manifest.json // プラグインマニフェスト(必須)
├── index.html // エントリーページ(entry がこれを指す)
├── style.css // 任意のリソース
└── app.js // 任意のスクリプト{
"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"] // ファイルルーティング:種類ごとに自動で開く
}| フィールド | 必須 | 説明 |
|---|---|---|
pluginId | ✓ | UUID v4 の一意ID、システムレベルの衝突防止;パッケージャーに自動生成させるのがおすすめ |
id | — | 旧式ショートID(例:mobi.reader)。新規プラグインでは省略推奨、互換のみ |
name | ✓ | プラグインの表示名 |
version | ✓ | セマンティックバージョン、例:1.2.0 |
author | — | 作者名 |
description | — | 一言の機能説明、プラグイン市場で表示 |
icon | — | 絵文字、画像URL、または Base64 画像 |
entry | ✓ | エントリーファイルの相対パス(通常 index.html) |
permissions | ✓ | 権限宣言(例:file.read / storage)、権限センターで個別付与 |
fileTypes | — | 宣言する拡張子リスト、ファイルルーティングに接続(外部から自動で開く) |
.cbplugin;有料/プライベート → .encplugin(AES 暗号化 + パスワード二重確認で入力ミス防止)pack_plugins.ps1 スクリプトを用意。プラグインを編集したら一度実行するだけで全 .cbplugin を再生成します(.git / node_modules / build ディレクトリは自動スキップ)。.cbplugin | .encplugin | |
|---|---|---|
| 用途 | 公開共有 | 有料 / プライベート配布 |
| 内容 | 平文 zip | AES 暗号化 |
| インポート | 直接インストール | パスワード入力(外部から開くと自動でダイアログ表示) |
⚠️ 暗号化プラグインのパスワードは復元できません — 忘れるとプラグインは永遠に復号できません。大切に保管してください。
プラグインはサンドボックス化された WebView で実行されます — 開放と安全を両立:
| 仕組み | 説明 |
|---|---|
| CSP セキュリティヘッダー注入 | meta タグ + HTTP ヘッダーの二重経路で外部スクリプトの読み込みを制限 |
| eval / Function 無効化 | Object.defineProperty で完全カバー、動的コード実行を禁止 |
| ネットワーク制限 | プラグインのネットワーク要求を60回/分に制限、悪用防止 |
| パス隔離 | プラグインは自分のサンドボックスディレクトリのみ読み書き可(パストラバーサル対策) |
| 権限センター | permissions 宣言 + 個別付与、すべての行動を監査可能 |
| JS ブリッジ | ブリッジ API でネイティブ機能を呼び出し(保存 / クリップボード / ファイル等)、ベースライブラリはホストが自動注入 |
プラグインID は UUID v4(122 ビットのランダムエントロピー)を使用 — 衝突確率は無視できるレベルで、ユーザー側のID が重複しても互いに上書き・誤削除されません。パッケージャーに自動生成させるのがおすすめ。手動指定時は完全な UUID 形式(8-4-4-4-12)で — パッケージャーが形式検証します。
CosmosBox の AI チャットで直接要件を伝えます:
あなた → 電子木魚を作って。タップすると音とアニメーション付きで
AI → ✅ プラグイン「電子木魚」を生成しました — ワンクリックでインストール・実行AI 生成プラグインにはベースライブラリが自動注入され(保存 / クリップボード / ダークモード対応)、生成後すぐにプラグインセンターからインストール可能。気に入らなければ編集ページで AI に続きを任せられます。