01
Offen konzipiert, ohne Host-Autorität abzugeben.
Ein RightMenu-Plugin ist ein unabhängig gepflegtes JavaScript-Paket. Der Host kontrolliert Validierung, Installation, Zustimmung und Ausführung; das Plugin erhält nur für die aktuelle Aktion deklarierte und freigegebene Fähigkeiten.
Sicherheitsgrenze
Plugins besitzen keine Umgebungsrechte und laden keinen nativen Code. Dateizugriff, Änderungen, KI-Offenlegung und Systemberechtigungen bleiben getrennte Host-Entscheidungen.
Unabhängiger Lebenszyklus
Host und Plugins haben getrennte Repositories, Versionen und Veröffentlichungen. Geschäftslogik, Texte, Symbole, Assets und Release Notes gehören ins Plugin-Repository.
Der aktuelle Umfang umfasst offene Entwicklung, lokalen Import und Nutzervertrauen – ohne Marktplatz, Community-Index oder automatische Updates.
02
Schnellstart
Nach der RightMenu-Installation erzeugen Sie mit dem signierten, in der App enthaltenen CLI ein Projekt und führen doctor aus.
Pfad des integrierten CLI
/Applications/RightMenu.app/Contents/Helpers/rightmenu-pluginctlEin lauffähiges Projekt erzeugen
init überschreibt keinen vorhandenen Pfad. Das Projekt enthält ein lauffähiges Plugin, das API-v1.5-Schema und die passende TypeScript-Deklaration.
CLI="/Applications/RightMenu.app/Contents/Helpers/rightmenu-pluginctl"
"$CLI" init ./MyPlugin \
--id dev.example.my-plugin \
--name "My Plugin"
"$CLI" doctor ./MyPluginOptional Mit einem KI-Agent entwickeln
Kopieren Sie diese Standardanweisung in Codex, Claude Code, Cursor oder einen anderen Agent. Er liest zuerst die lokalen Projektverträge und verwendet einen erfolgreichen doctor-Lauf als Abschlusskriterium.
Entwickeln Sie im aktuellen Verzeichnis ein RightMenu Plugin API v1.5 Plugin.
Plugin-Anforderung: [Funktion hier beschreiben]
Anforderungen:
- Lesen Sie zuerst README.md, schema/rightmenu-plugin-manifest-v1.5.schema.json und types/rightmenu-plugin-api-v1.5.d.ts.
- Ändern Sie nur dieses Plugin-Projekt, nicht den RightMenu-Host-Quellcode.
- Erzeugen Sie JavaScriptCore-kompatible Ausgabe, bündeln Sie alle Imports und verwenden Sie weder Node.js require noch nativen Code.
- Deklarieren Sie requiredCapabilities für jede action und uiContribution und halten Sie permissions minimal.
- Aktualisieren Sie nach Änderungen an Nutzdateien byteCount und SHA-256 in files von manifest.json.
- Führen Sie abschließend "/Applications/RightMenu.app/Contents/Helpers/rightmenu-pluginctl" doctor . aus.
- Fertig ist die Arbeit nur bei Exit-Code 0 und validation.ok.
- Ohne ausdrücklichen Auftrag keine privaten Schlüssel erzeugen, nicht signieren und nicht packen.03
Erzeugte Paketstruktur
Plugin-Pakete enden auf .rightmenuplugin. manifest.json deklariert Einstieg, Aktionen, Zugriffe und alle Nutzdateien; verteilt wird nur gebündeltes, reines 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 und API v1.5
Jede Finder-Aktion und UI contribution deklariert requiredCapabilities; ohne Bedarf wird ein leeres Array verwendet. Jede Fähigkeit muss in permissions stehen, ungenutzte breite Berechtigungen werden abgelehnt.
{
"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 verbessert Editorhinweise. Für Dateisicherheit, Digests, Querverweise, Kompatibilität und Signaturen bleibt rightmenu-pluginctl doctor maßgeblich.
05
Mit doctor entwickeln und prüfen
Nach JavaScript-Änderungen aktualisieren Sie byteCount und SHA-256 jeder geänderten Datei im Manifest und führen doctor aus. Es gibt höchstens 32 begrenzte Diagnosen und bei Fehlern einen Exit-Code ungleich null.
- 1
JavaScriptCore-kompatible Ausgabe erstellen, alle Imports bündeln und keine Node.js-require-Aufrufe belassen.
- 2
Byteanzahl und SHA-256 in files aktualisieren; manifest.json selbst nie aufführen.
- 3
doctor bis validation.ok ausführen und API-, Fähigkeits-, Signatur- oder Paketdiagnosen beheben.
"$CLI" doctor ./MyPlugin
"$CLI" doctor ./MyPlugin/plugin/my-plugin.rightmenuplugin06
Lokaler Import und Entwicklermodus
Öffnen Sie RightMenu → Einstellungen → Plugins. Signierte Pakete über Import Signed Plugin importieren. Für ein unsigniertes Verzeichnis den Entwicklermodus ausdrücklich aktivieren und Import Unsigned Development Plugin wählen. Beide Speicherorte sind physisch getrennt.
Installation ist keine Zustimmung. Der Host validiert vor und nach dem Kopieren und schließt erst nach dem finalen Verschieben ab. Ohne Entwicklermodus laufen unsignierte Plugins nicht.
07
Aktionsbezogener Zugriff
API v1.5 bewertet Fähigkeiten pro Aktion. Eine fehlende Freigabe blendet nur abhängige Aktionen aus; andere freigegebene Aktionen bleiben verfügbar. Jede Freigabe ist widerrufbar.
selection.readAuswahlinformationen · ausdrückliche Freigabevision.recognizeTextLokale Texterkennung · ausdrückliche Freigabefiles.rename.*Dateiumbenennung · ausdrückliche Freigabe plus Änderungsbestätigungai.generateStructuredStrukturierte KI · ausdrückliche Freigabe plus Offenlegungszustimmung pro Plugin/Anbieterui.flashScreen / desktopItems.toggleVisibilityBildschirmeffekt und Schreibtischsichtbarkeit · automatisch, widerrufbardiagnostics.logDiagnose · ausdrückliche Freigabe08
Herausgebersignatur und Fingerabdruck
Die Produktion nutzt Ed25519. Beim ersten Import eines unbekannten selbst ausgestellten Herausgebers vergleicht der Nutzer den vollständigen SHA-256-Fingerabdruck, bevor er Trust & Install wählt. Signaturidentität gewährt keine Laufzeitfähigkeit.
"$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.zipPrivaten Schlüssel außerhalb des Projekts sicher sichern und niemals committen oder verteilen. Bei Verlust können vorhandene Installationen keine Updates derselben Identität annehmen.
Updates derselben Plugin-ID müssen exakt denselben Signaturschlüssel verwenden. Auch ein anderer vertrauter Schlüssel darf nicht übernehmen. Automatische Updates und Schlüsselrotation sind nicht enthalten.
09
Häufige Diagnosecodes
Automatisierung soll stabilen code und Prozessstatus verwenden, nicht Erklärungstexte parsen.
validation.okManifest, Dateigrößen und Digests bestanden.api.current / api.legacyAktuelle oder kompatible ältere API.capability.unsupportedDer Host bietet eine deklarierte Fähigkeit nicht an.signature.missingUnsigniert, nur Entwicklermodus.signature.self-issued-validSelbst ausgestellte Identität und Signatur gültig.manifest.*Begrenzter Manifest-Vertragsfehler.package.*Begrenzter Paketstruktur-, Integritäts- oder Limitfehler.invocation.*Begrenztes Host- oder Runner-Lebenszyklusergebnis.10
Kompatibilität und Laufzeitgrenzen
Neue Projekte verwenden API v1.5 und benötigen RightMenu 0.1.41 oder neuer. v1.0–v1.4 bleiben kompatibel und behalten paketweite Zugriffe. Ziel ist JavaScriptCore; Schleifen, Rekursion, Speicher und Ausgabe müssen begrenzt sein.
Finder-Aktionen unterstützen geeignete Auswahlen von 1–20 lokalen regulären Dateien. Vor dem Aufruf scannt und validiert der Host Aktion und exakte Freigaben erneut.
11
Versionsgebundene Referenzdateien
Diese Dateien sind bytegenaue Kopien aus Documentation von RightMenu 0.1.41 (Commit 9a25a54). Ein Prüfskript verhindert Abweichungen von der Host-Quelle.