01
オープンでも、ホスト権限は渡しません。
RightMenu プラグインは独立管理される JavaScript パッケージです。検証、導入、同意、実行境界はホストが所有し、プラグインは現在のアクションで宣言され、ユーザーが許可した能力だけを受け取ります。
セキュリティ境界
プラグインに環境権限はなく、ネイティブコードも読み込めません。ファイルアクセス、変更、AI 開示、システム認可はホストが個別に制御します。
独立したライフサイクル
ホストと各プラグインは別々のリポジトリ、バージョン、公開周期を持ちます。業務ロジック、文言、アイコン、資産、リリースノートはプラグイン側に置きます。
現段階はオープン開発、ローカル導入、ユーザー信頼のみです。マーケット、コミュニティ索引、自動更新は含みません。
02
クイックスタート
RightMenu をインストール後、App に同梱された署名済み CLI でプロジェクトを生成し doctor を実行します。
同梱 CLI のパス
/Applications/RightMenu.app/Contents/Helpers/rightmenu-pluginctl実行可能なプロジェクトを生成
init は既存パスを上書きしません。生成物には実行可能なプラグイン、API v1.5 Schema、対応 TypeScript 宣言が含まれます。
CLI="/Applications/RightMenu.app/Contents/Helpers/rightmenu-pluginctl"
"$CLI" init ./MyPlugin \
--id dev.example.my-plugin \
--name "My Plugin"
"$CLI" doctor ./MyPluginオプション AI Agent で開発
次の標準指示を Codex、Claude Code、Cursor などの Agent に貼り付けます。Agent はプロジェクト内の仕様を先に読み、doctor の成功を完了条件にします。
現在のディレクトリで RightMenu Plugin API v1.5 プラグインを開発してください。
プラグイン要件:[ここに機能を記述]
要件:
- 最初に README.md、schema/rightmenu-plugin-manifest-v1.5.schema.json、types/rightmenu-plugin-api-v1.5.d.ts を読んでください。
- 現在のプラグインプロジェクトだけを変更し、RightMenu ホストのソースは変更しないでください。
- JavaScriptCore 互換の出力にし、すべての import をバンドルして、Node.js require やネイティブコードを使わないでください。
- すべての action と uiContribution に requiredCapabilities を宣言し、permissions を最小限にしてください。
- ペイロード変更後、manifest.json の files にある byteCount と SHA-256 を更新してください。
- 最後に "/Applications/RightMenu.app/Contents/Helpers/rightmenu-pluginctl" doctor . を実行してください。
- doctor が終了コード 0 で validation.ok を出力した場合のみ完了です。
- 明示的な依頼がない限り、秘密鍵の生成、署名、pack は行わないでください。03
生成される構成
プラグインは .rightmenuplugin で終わります。manifest.json が入口、アクション、権限、全ペイロードを宣言し、配布物はバンドル済みの通常 JavaScript です。
MyPlugin/
├── README.md
├── plugin/
│ └── my-plugin.rightmenuplugin/
│ ├── manifest.json
│ └── main.js
├── schema/
│ └── rightmenu-plugin-manifest-v1.5.schema.json
└── types/
└── rightmenu-plugin-api-v1.5.d.ts04
Manifest と API v1.5
すべての Finder アクションと UI contribution は requiredCapabilities を宣言します。不要なら空配列です。能力は permissions に存在する必要があり、未使用の広い権限は拒否されます。
{
"apiVersion": "1.5",
"permissions": [{
"capability": "selection.read",
"reason": "Reads metadata for selected Finder items."
}],
"actions": [
{ "id": "about", "title": "About", "requiredCapabilities": [] },
{ "id": "inspect", "title": "Inspect", "requiredCapabilities": ["selection.read"] }
],
"uiContributions": []
}globalThis.rightMenuPlugin = Object.freeze({
run(actionID, input) {
if (actionID !== "inspect") return { handled: false };
return RightMenu.call("selection.read", {});
}
});JSON Schema は編集支援です。ファイル安全性、ダイジェスト、配列間規則、互換性、署名は rightmenu-pluginctl doctor が正本です。
05
doctor による開発と検証
JavaScript を変更したら manifest の byteCount と SHA-256 を更新し doctor を実行します。診断は最大 32 件で、エラーがあれば非ゼロ終了です。
- 1
JavaScriptCore 互換の出力にし、すべての import をバンドルして Node.js require を残しません。
- 2
files のバイト数と SHA-256 を更新し、manifest.json 自体は含めません。
- 3
validation.ok まで doctor を実行し、API、能力、署名、構造の診断を解消します。
"$CLI" doctor ./MyPlugin
"$CLI" doctor ./MyPlugin/plugin/my-plugin.rightmenuplugin06
ローカル導入と開発者モード
RightMenu → 設定 → プラグインを開きます。署名済みは「署名済みプラグインを読み込む」、未署名ディレクトリは開発者モードを有効にして「未署名開発プラグインを読み込む」を使います。保存先は物理的に分離されています。
インストールは権限付与ではありません。ホストはコピー前後に検証し、最終移動後に完了します。開発者モードを切ると未署名プラグインは実行できません。
07
アクション単位の権限
API v1.5 は能力をアクションごとに評価します。許可が欠けても依存アクションだけが非表示になり、他の許可済みアクションは利用できます。許可はいつでも取り消せます。
selection.read選択情報 · 明示許可vision.recognizeTextローカル文字認識 · 明示許可files.rename.*ファイル名変更 · 明示許可と変更確認ai.generateStructured構造化 AI · 明示許可とプラグイン/提供者ごとの開示同意ui.flashScreen / desktopItems.toggleVisibility画面効果とデスクトップ表示 · 自動、取り消し可能diagnostics.log診断 · 明示許可08
発行者署名と指紋
本番配布は Ed25519 を使います。未知の自己発行者を初めて読み込む際、ユーザーは完全な SHA-256 公開鍵指紋を照合してから「信頼してインストール」を選びます。署名は実行能力を付与しません。
"$CLI" keygen ./publisher.private.json "Example Publisher"
"$CLI" sign \
./MyPlugin/plugin/my-plugin.rightmenuplugin \
./publisher.private.json
"$CLI" inspect-signature \
./MyPlugin/plugin/my-plugin.rightmenuplugin
"$CLI" pack \
./MyPlugin/plugin/my-plugin.rightmenuplugin \
./my-plugin.rightmenuplugin.zip秘密鍵はプロジェクト外で安全にバックアップし、絶対にコミット・配布しないでください。紛失すると同じ発行者として更新できません。
同じプラグイン ID の更新には、インストール済み版と完全に同じ署名鍵が必要です。別の信頼済み鍵でも引き継げません。自動更新と鍵ローテーションは未提供です。
09
主な診断コード
自動化は安定した code と終了状態を使い、説明文を解析しないでください。
validation.okManifest、サイズ、ダイジェストが合格。api.current / api.legacy現行または互換旧 API。capability.unsupported宣言能力をホストが提供しない。signature.missing未署名。開発者モード専用。signature.self-issued-valid自己発行者と署名が有効。manifest.*Manifest 契約エラー。package.*構造、整合性、制限のエラー。invocation.*ホストまたは Runner のライフサイクル結果。10
互換性と実行制約
新規プロジェクトは API v1.5 と RightMenu 0.1.41 以降が必要です。v1.0–v1.4 と後方互換ですが、旧パッケージはプラグイン全体の権限方式です。JavaScriptCore を対象にし、ループ、再帰、メモリ、出力を制限してください。
Finder アクションは 1–20 個のローカル通常ファイルに対応します。呼び出し前にホストが再走査し、アクションと正確な許可集合を再検証します。
11
バージョン固定の参照ファイル
以下は RightMenu 0.1.41(commit 9a25a54)の Documentation からバイト単位で複製したものです。検証スクリプトがホスト正本とのずれを防ぎます。