Plugins erstellen
Plugins für ChatGPT erstellen, testen und verteilen
Diese Seite richtet sich an Plugin-Autoren. Wenn Sie Plugins mit ChatGPT Work im Web oder mit ChatGPT Work oder Codex in der ChatGPT-Desktop-App durchsuchen, installieren und verwenden möchten, lesen Sie Plugins. Wenn Sie noch an einem einzelnen Repository oder persönlichen Workflow arbeiten, beginnen Sie mit einem lokalen Skill. Erstellen Sie ein Plugin, wenn Sie diesen Workflow teamübergreifend teilen, Connectors oder eine MCP-Konfiguration bündeln, Lifecycle-Hooks paketieren oder ein stabiles Paket veröffentlichen möchten.
Ein Plugin kann Skills, eine MCP-gestützte App oder beides enthalten. Wenn Ihr Plugin eine Verbindung zu einem Dienst herstellen oder Tools über einen MCP-Server bereitstellen muss, lesen Sie Eine App erstellen.
Vollständige öffentliche Beispiele finden Sie unter Figma, Notion und Web-Apps erstellen.
Ein Plugin mit @plugin-creator erstellen
Für die schnellste Einrichtung verwenden Sie den integrierten Skill @plugin-creator.
Er legt die erforderliche Manifestdatei .codex-plugin/plugin.json an und kann außerdem
einen lokalen Marketplace-Eintrag zum Testen erzeugen. Wenn Sie bereits über einen Plugin-Ordner
verfügen, können Sie weiterhin @plugin-creator verwenden, um ihn mit einem lokalen
Marketplace zu verknüpfen.
Lokal ein Plugin erstellen und testen, das auf eine von einem MCP-Server gestützte App im Entwicklungsmodus verweist
Sie können den Plugin-Creator-Skill auch verwenden, wenn Sie lokal ein Plugin testen möchten, das eine von einem MCP-Server gestützte App enthält. Das Plugin benötigt weiterhin einen lokalen Plugin- Ordner und eine Manifestdatei, die App selbst wird jedoch im Entwicklermodus von ChatGPT gestartet.
Aktivieren Sie zunächst den Entwicklermodus in ChatGPT:
- Öffnen Sie ChatGPT.
- Öffnen Sie Einstellungen.
- Wählen Sie Sicherheit und Anmeldung aus.
- Aktivieren Sie den Entwicklermodus.
Erstellen Sie anschließend die App im Entwicklermodus:
- Öffnen Sie Einstellungen → Plugins oder die Seite „Plugins“.
- Wählen Sie die Plus-Schaltfläche aus.
- Füllen Sie das Dialogfeld aus, um eine App im Entwicklermodus für Ihren MCP-Server zu erstellen.
- Nachdem ChatGPT sie erstellt hat, kopieren Sie die App-ID aus der Browser-URL. Sie beginnt
mit
plugin_asdk_app.
Übergeben Sie diese plugin_asdk_app...-ID an @plugin-creator in einem ChatGPT Work-Chat
oder an $plugin-creator in Codex. Beispiel für ChatGPT Work:
Eingabeaufforderung für Plugin Creator@plugin-creator create a Codex plugin for my ChatGPT app.
Use plugin_asdk_app_6a4c0062f3b88191855c0a80eac5d53d and name it Acme Support.
Include a personal marketplace entry so I can test it locally.Der Plugin-Creator-Skill erstellt den Plugin-Ordner sowie die erforderliche Datei
.codex-plugin/plugin.json und fügt die App-Verknüpfung für die ChatGPT-App hinzu. Wenn Sie ihn
bitten, einen persönlichen Marketplace-Eintrag zu erstellen, erscheint das Plugin zum Testen
unter Ihrer lokalen Quelle im Plugin-Verzeichnis.
Nachdem der Plugin-Creator-Skill das Plugin erstellt hat:
- Prüfen Sie
.app.jsonund vergewissern Sie sich, dass die Datei auf die richtigeplugin_asdk_app...-ID verweist. - Prüfen Sie
.codex-plugin/plugin.jsonund stellen Sie sicher, dass das Feldappsauf./.app.jsonverweist. - Fügen Sie gebündelte Skills unter
skills/hinzu, wenn das Plugin neben der App wiederholbare Workflows enthalten soll. - Wenn der Skill einen persönlichen Marketplace-Eintrag erstellt hat, aktualisieren Sie ChatGPT und installieren Sie das Plugin aus Ihrer lokalen Quelle im Plugin-Verzeichnis. Testen Sie es anschließend in einem neuen Chat.
Informationen zum Aufbau der Manifestdatei und zur Dateistruktur finden Sie unter Plugin-Struktur und Pfadregeln.
Eine eigene kuratierte Plugin-Liste erstellen
Ein Marketplace ist ein JSON-Katalog von Plugins. @plugin-creator kann einen solchen Katalog
für ein einzelnes Plugin erzeugen, und Sie können demselben Marketplace weitere Einträge
hinzufügen, um eine eigene kuratierte Liste für ein Repository, ein Team oder einen persönlichen Workflow zu erstellen.
In ChatGPT Work oder Codex in der ChatGPT-Desktop-App wird jeder Marketplace im
Plugin-Verzeichnis als auswählbare Quelle angezeigt. Verwenden Sie
$REPO_ROOT/.agents/plugins/marketplace.json für eine Repository-bezogene Liste oder
~/.agents/plugins/marketplace.json für eine persönliche Liste. Fügen Sie unter
plugins[] einen Eintrag pro Plugin hinzu, lassen Sie jedes source.path über einen mit
./ beginnenden, relativ zum Marketplace-Stammverzeichnis angegebenen Pfad auf den Plugin-Ordner verweisen und legen Sie
interface.displayName auf die Bezeichnung fest, die die App in der Marketplace-
Auswahl anzeigen soll. Starten Sie anschließend die ChatGPT-Desktop-App neu. Öffnen Sie danach das Plugin-
Verzeichnis, wählen Sie Ihren Marketplace aus und durchsuchen oder installieren Sie die Plugins in dieser
kuratierten Liste.
Sie benötigen keinen separaten Marketplace für jedes Plugin. Ein Marketplace kann während der Testphase ein einzelnes Plugin bereitstellen und mit dem Hinzufügen weiterer Plugins zu einem größeren kuratierten Katalog heranwachsen.
Einen Marketplace über die CLI hinzufügen
Verwenden Sie codex plugin marketplace add, um eine Marketplace-Quelle hinzuzufügen und nachzuverfolgen,
als Alternative zur manuellen Bearbeitung von config.toml. Diese Befehle unterstützen die Plugin-Erstellung und
die Katalogeinrichtung. Verwenden Sie die ChatGPT-Desktop-App, um ein lokales Plugin zu installieren und zu testen.
codex plugin marketplace add owner/repo
codex plugin marketplace add owner/repo --ref main
codex plugin marketplace add https://github.com/example/plugins.git --sparse .agents/plugins
codex plugin marketplace add ./local-marketplace-rootMarketplace-Quellen können GitHub-Kurzschreibweisen (owner/repo oder
owner/repo@ref), HTTP- oder HTTPS-Git-URLs, SSH-Git-URLs oder lokale Marketplace-Stammverzeichnisse
sein. Verwenden Sie --ref, um eine Git-Referenz festzulegen, und wiederholen Sie --sparse PATH, um einen
Sparse Checkout für Git-basierte Marketplace-Repositorys zu verwenden. --sparse ist nur für
Git-Marketplace-Quellen gültig.
So prüfen, aktualisieren oder entfernen Sie konfigurierte Marketplaces:
codex plugin marketplace list
codex plugin marketplace upgrade
codex plugin marketplace upgrade marketplace-name
codex plugin marketplace remove marketplace-namecodex plugin marketplace list gibt jeden von Codex berücksichtigten Marketplace
und den Stammverzeichnispfad aus, aus dem er aufgelöst wird, einschließlich lokaler Standard-Marketplaces und
konfigurierter Marketplace-Snapshots.
Ein Plugin manuell erstellen
Beginnen Sie mit einem minimalen Plugin, das einen Skill paketiert.
- Erstellen Sie einen Plugin-Ordner mit einer Manifestdatei unter
.codex-plugin/plugin.json.
mkdir -p my-first-plugin/.codex-pluginmy-first-plugin/.codex-plugin/plugin.json
{
"name": "my-first-plugin",
"version": "1.0.0",
"description": "Reusable greeting workflow",
"skills": "./skills/"
}Verwenden Sie eine stabile Plugin-name in Kebab-Case. Codex verwendet sie als Plugin-
Kennung und Komponenten-Namespace.
- Fügen Sie unter
skills/<skill-name>/SKILL.mdeinen Skill hinzu.
mkdir -p my-first-plugin/skills/hellomy-first-plugin/skills/hello/SKILL.md
---
name: hello
description: Greet the user with a friendly message.
---
Greet the user warmly and ask how you can help.- Fügen Sie das Plugin einem Marketplace hinzu. Verwenden Sie
@plugin-creator, um einen zu erzeugen, oder folgen Sie Eine eigene kuratierte Plugin-Liste erstellen, um das Plugin manuell mit Codex zu verknüpfen.
Anschließend können Sie nach Bedarf eine MCP-Konfiguration, Connectors oder Marketplace-Metadaten hinzufügen.
Ein lokales Plugin manuell installieren
Verwenden Sie einen Repository-Marketplace oder einen persönlichen Marketplace – je nachdem, wer auf das Plugin oder die kuratierte Liste zugreifen können soll.
Repository
Fügen Sie unter `$REPO_ROOT/.agents/plugins/marketplace.json` eine Marketplace-Datei hinzu
und speichern Sie Ihre Plugins unter `$REPO_ROOT/plugins/`.
**Beispiel für einen Repository-Marketplace**
Schritt 1: Kopieren Sie den Plugin-Ordner nach `$REPO_ROOT/plugins/my-plugin`.mkdir -p ./plugins
cp -R /absolute/path/to/my-plugin ./plugins/my-pluginSchritt 2: Fügen Sie `$REPO_ROOT/.agents/plugins/marketplace.json` hinzu oder aktualisieren Sie die Datei, sodass
`source.path` mit einem mit `./` beginnenden
relativen Pfad auf dieses Plugin-Verzeichnis verweist:{
"name": "local-repo",
"plugins": [
{
"name": "my-plugin",
"source": {
"source": "local",
"path": "./plugins/my-plugin"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
]
}Schritt 3: Starten Sie die ChatGPT-Desktop-App neu und überprüfen Sie, ob das Plugin angezeigt wird.Persönlich
Fügen Sie unter `~/.agents/plugins/marketplace.json` eine Marketplace-Datei hinzu und speichern
Sie Ihre Plugins unter `~/.codex/plugins/`.
**Beispiel für einen persönlichen Marketplace**
Schritt 1: Kopieren Sie den Plugin-Ordner nach `~/.codex/plugins/my-plugin`.mkdir -p ~/.codex/plugins
cp -R /absolute/path/to/my-plugin ~/.codex/plugins/my-pluginSchritt 2: Fügen Sie `~/.agents/plugins/marketplace.json` hinzu oder aktualisieren Sie die Datei, sodass
`source.path` des Plugin-Eintrags auf dieses Verzeichnis verweist.
Schritt 3: Starten Sie die ChatGPT-Desktop-App neu und überprüfen Sie, ob das Plugin angezeigt wird.Die Marketplace-Datei verweist auf den Speicherort des Plugins. Diese Verzeichnisse sind daher
Beispiele und keine festen Anforderungen. Codex löst source.path relativ
zum Marketplace-Stammverzeichnis auf, nicht relativ zum Ordner .agents/plugins/. Informationen zum Dateiformat finden Sie unter
Marketplace-Metadaten.
Nachdem Sie das Plugin geändert haben, aktualisieren Sie das Plugin-Verzeichnis, auf das Ihr Marketplace- Eintrag verweist, und starten Sie die ChatGPT-Desktop-App neu, damit die lokale Installation die neuen Dateien übernimmt.
Ein lokales Plugin mit Ihrem Workspace teilen
Nachdem Sie ein Plugin erstellt haben, fügen Sie es über die ChatGPT-Desktop-App hinzu. Wählen Sie ChatGPT aus und wechseln Sie über den Umschalter zu Work, oder wählen Sie Codex aus, und öffnen Sie anschließend Plugins. Danach können Sie es mit anderen Mitgliedern Ihres ChatGPT-Workspace teilen.
- Öffnen Sie Plugins in der ChatGPT-Desktop-App.
- Wechseln Sie zu Von Ihnen erstellt und öffnen Sie die Detailseite des Plugins.
- Wählen Sie Teilen aus.
- Fügen Sie Workspace-Mitglieder oder Workspace-Gruppen hinzu oder kopieren Sie einen Freigabelink.
- Legen Sie fest, wer Zugriff hat, und senden Sie anschließend die Einladung oder den Link.
Personen, mit denen Sie das Plugin teilen, finden es im Plugin-Verzeichnis unter Mit Ihnen geteilt. Wenn Sie ein lokales Plugin mit Ihrem Workspace teilen, wird es dadurch nicht im öffentlichen Plugin-Verzeichnis veröffentlicht. Geteilte Plugins bleiben auf Ihren Workspace und Ihre Organisation beschränkt. Konten, die nicht bei diesem Workspace angemeldet sind, können nicht darauf zugreifen. Verwenden Sie Gruppen, wenn ein Team oder eine Rolle denselben Plugin- Zugriff erhalten soll. Verwenden Sie einen Marketplace für die Verteilung über ein Repository oder die CLI und die Workspace-Freigabe, wenn ausgewählte Teammitglieder ein Plugin über die ChatGPT-Desktop-App installieren sollen.
Workspace-Administratoren können die Plugin-Freigabe über cloudverwaltete Anforderungen deaktivieren, indem sie
features.plugin_sharing = false zu requirements.toml hinzufügen:
features.plugin_sharing = falseMarketplace-Metadaten
Wenn Sie einen Repository-Marketplace verwalten, definieren Sie ihn in
$REPO_ROOT/.agents/plugins/marketplace.json. Verwenden Sie für einen persönlichen Marketplace
~/.agents/plugins/marketplace.json. Eine Marketplace-Datei steuert die Reihenfolge der Plugins
und die Installationsrichtlinien in der ChatGPT-Desktop-App. Während des Testens kann sie ein
einzelnes Plugin oder eine kuratierte Liste von Plugins repräsentieren, die die App
gemeinsam unter einem Marketplace-Namen anzeigen soll. Bevor Sie ein Plugin einem
Marketplace hinzufügen, stellen Sie sicher, dass version, die Herausgebermetadaten und die Texte für die Installationsoberfläche
für andere Entwickler bereit sind.
{
"name": "local-example-plugins",
"interface": {
"displayName": "Local Example Plugins"
},
"plugins": [
{
"name": "my-plugin",
"source": {
"source": "local",
"path": "./plugins/my-plugin"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "research-helper",
"source": {
"source": "local",
"path": "./plugins/research-helper"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
]
}- Verwenden Sie
nameauf oberster Ebene, um den Marketplace zu identifizieren. - Verwenden Sie
interface.displayNamefür den Marketplace-Titel, der in der ChatGPT- Desktop-App angezeigt wird. - Fügen Sie unter
pluginsfür jedes Plugin ein Objekt hinzu, um eine kuratierte Liste zu erstellen, die die App unter diesem Marketplace-Titel anzeigt. - Richten Sie
source.pathjedes Plugin-Eintrags auf das Plugin-Verzeichnis, das Codex laden soll. Bei Repository-Installationen befindet es sich häufig unter./plugins/. Bei persönlichen Installationen ist./.codex/plugins/<plugin-name>ein gängiges Muster. - Halten Sie
source.pathrelativ zum Marketplace-Stammverzeichnis, beginnen Sie den Pfad mit./und belassen Sie ihn innerhalb dieses Stammverzeichnisses. - Bei lokalen Einträgen kann
sourceauch ein einfacher Pfad als Zeichenfolge sein, beispielsweise"./plugins/my-plugin". - Geben Sie bei jedem Plugin-Eintrag immer
policy.installation,policy.authenticationundcategoryan. - Verwenden Sie für
policy.installationWerte wieAVAILABLE,INSTALLED_BY_DEFAULToderNOT_AVAILABLE. - Legen Sie mit
policy.authenticationfest, ob die Authentifizierung bei der Installation oder bei der ersten Verwendung erfolgt.
Der Marketplace steuert, von wo Codex das Plugin lädt. Ein lokaler
source.path kann auf einen anderen Ort verweisen, wenn sich Ihr Plugin außerhalb dieser
Beispielverzeichnisse befindet. Eine Marketplace-Datei kann sich in dem Repository befinden, in dem Sie
das Plugin entwickeln, oder in einem separaten Marketplace-Repository. Eine Marketplace-
Datei kann auf ein oder mehrere Plugins verweisen.
Marketplace-Einträge können auch auf Git-basierte Plugin-Quellen verweisen. Verwenden Sie
"source": "url", wenn sich das Plugin im Stammverzeichnis des Repositorys befindet, oder
"source": "git-subdir", wenn sich das Plugin in einem Unterverzeichnis befindet:
{
"name": "remote-helper",
"source": {
"source": "git-subdir",
"url": "https://github.com/example/codex-plugins.git",
"path": "./plugins/remote-helper",
"ref": "main"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}Git-basierte Einträge können die Selektoren ref oder sha verwenden. Wenn Codex die Quelle eines
Marketplace-Eintrags nicht auflösen kann, überspringt es diesen Plugin-Eintrag, anstatt den
gesamten Marketplace fehlschlagen zu lassen.
Marketplace-Einträge können ein Plugin auch aus einer JavaScript-Paketregistrierung installieren:
{
"name": "npm-helper",
"source": {
"source": "npm",
"package": "@example/codex-plugin",
"version": "^1.2.0",
"registry": "https://registry.npmjs.org"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}package ist erforderlich und kann einen Registry-Scope enthalten. version ist optional
und akzeptiert Paketversionen, Distribution-Tags und Versionsbereiche, jedoch keine
Pfad- oder URL-Selektoren.
registry ist optional und muss eine HTTPS-URL ohne eingebettete Anmeldedaten,
Abfrageparameter oder Fragment sein. Codex lädt das Paket herunter, ohne Lifecycle-
Skripte auszuführen. Die npm CLI muss installiert sein, und die Registry-Authentifizierung erfolgt
über deren Konfiguration.
So verwendet die ChatGPT-Desktop-App Marketplaces
Ein Plugin-Marketplace ist ein JSON-Katalog von Plugins, den die ChatGPT-Desktop-App lesen und aus dem sie Plugins installieren kann.
Die App kann Marketplace-Dateien aus folgenden Quellen lesen:
- dem kuratierten Marketplace, auf dem das offizielle Plugins Directory basiert
- einem Repository-Marketplace unter
$REPO_ROOT/.agents/plugins/marketplace.json - einem Legacy-kompatiblen Marketplace unter
$REPO_ROOT/.claude-plugin/marketplace.json - einem persönlichen Marketplace unter
~/.agents/plugins/marketplace.json
Sie können jedes Plugin installieren, das über einen Marketplace angeboten wird. Die App installiert
Plugins unter
~/.codex/plugins/cache/$MARKETPLACE_NAME/$PLUGIN_NAME/$VERSION/. Bei lokalen
Plugins ist $VERSION gleich local, und die App lädt die installierte Kopie aus diesem
Cache-Pfad statt direkt aus dem Marketplace-Eintrag.
Sie können jedes Plugin einzeln aktivieren oder deaktivieren. Die App speichert den
Aktivierungsstatus jedes Plugins in ~/.codex/config.toml.
Plugins paketieren und verteilen
Plugin-Struktur
Jedes Plugin besitzt ein Manifest unter .codex-plugin/plugin.json. Es kann außerdem
ein Verzeichnis skills/, ein Verzeichnis hooks/ für Lifecycle-Hooks, eine Datei .app.json,
die auf einen oder mehrere Konnektoren verweist, eine Datei .mcp.json zur
Konfiguration von MCP-Servern sowie Assets für die Darstellung des Plugins auf unterstützten
Oberflächen enthalten.
my-plugin/
├── .codex-plugin/
│ └── plugin.json # Required: plugin manifest
├── skills/
│ └── my-skill/
│ └── SKILL.md # Optional: skill instructions
├── hooks/
│ └── hooks.json # Optional: lifecycle hooks
├── .app.json # Optional: app or connector mappings
├── .mcp.json # Optional: MCP server configuration
└── assets/ # Optional: icons, logos, screenshotsNur plugin.json gehört in .codex-plugin/. Belassen Sie skills/, hooks/,
assets/, .mcp.json und .app.json im Plugin-Stammverzeichnis.
Veröffentlichte Plugins verwenden üblicherweise ein umfangreicheres Manifest als das minimale Beispiel aus den Schnellstart-Gerüsten. Das Manifest erfüllt drei Aufgaben:
- Das Plugin identifizieren.
- Auf gebündelte Komponenten wie Skills, Konnektoren, MCP-Server oder Hooks verweisen.
- Metadaten für Installationsoberflächen bereitstellen, etwa Beschreibungen, Symbole und rechtliche Links.
Hier sehen Sie ein vollständiges Manifest-Beispiel:
{
"name": "my-plugin",
"version": "0.1.0",
"description": "Bundle reusable skills and connectors.",
"author": {
"name": "Your team",
"email": "team@example.com",
"url": "https://example.com"
},
"homepage": "https://example.com/plugins/my-plugin",
"repository": "https://github.com/example/my-plugin",
"license": "MIT",
"keywords": ["research", "crm"],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"apps": "./.app.json",
"hooks": "./hooks/hooks.json",
"interface": {
"displayName": "My Plugin",
"shortDescription": "Reusable skills and connectors",
"longDescription": "Distribute skills and connectors together.",
"developerName": "Your team",
"category": "Productivity",
"capabilities": ["Read", "Write"],
"websiteURL": "https://example.com",
"privacyPolicyURL": "https://example.com/privacy",
"termsOfServiceURL": "https://example.com/terms",
"defaultPrompt": [
"Use My Plugin to summarize new CRM notes.",
"Use My Plugin to triage new customer follow-ups."
],
"brandColor": "#10A37F",
"composerIcon": "./assets/icon.png",
"logo": "./assets/logo.png",
"screenshots": ["./assets/screenshot-1.png"]
}
}.codex-plugin/plugin.json ist der erforderliche Einstiegspunkt. Die anderen Manifest-
Felder sind optional, werden bei veröffentlichten Plugins jedoch häufig verwendet.
Manifest-Felder
Verwenden Sie die Felder auf oberster Ebene, um Paketmetadaten zu definieren und auf gebündelte Komponenten zu verweisen:
name,versionunddescriptionidentifizieren das Plugin.author,homepage,repository,licenseundkeywordsstellen Herausgeber- und Auffindbarkeitsmetadaten bereit.skills,mcpServers,appsundhooksverweisen relativ zum Plugin-Stammverzeichnis auf gebündelte Komponenten.interfacesteuert, wie Installationsoberflächen das Plugin darstellen.
Verwenden Sie das Objekt interface für Metadaten der Installationsoberfläche:
displayName,shortDescriptionundlongDescriptionsteuern den Titel und die Beschreibungstexte.developerName,categoryundcapabilitiesergänzen Herausgeber- und Funktions- metadaten.websiteURL,privacyPolicyURLundtermsOfServiceURLstellen externe Links bereit.defaultPrompt,brandColor,composerIcon,logoundscreenshotssteuern Start-Prompts und die visuelle Darstellung.
Pfadregeln
- Halten Sie Manifest-Pfade relativ zum Plugin-Stammverzeichnis und beginnen Sie sie mit
./. - Speichern Sie visuelle Assets wie
composerIcon,logoundscreenshotsnach Möglichkeit unter./assets/. - Verwenden Sie
skillsfür gebündelte Skill-Ordner,appsfür.app.json,mcpServersfür.mcp.jsonundhooksfür Lifecycle-Hooks. - Aktivierte Plugins können neben Skills, MCP-Servern und Konnektoren auch Lifecycle-Hooks enthalten.
- Wenn Ihr Plugin Hooks unter
./hooks/hooks.jsonspeichert, benötigen Sie keinen Eintraghooksin.codex-plugin/plugin.json; Codex prüft diese Standarddatei automatisch.
Gebündelte MCP-Server und Lifecycle-Hooks
mcpServers kann auf eine Datei .mcp.json verweisen, die entweder eine direkte
Serverzuordnung oder ein umschließendes Objekt mcp_servers enthält.
Direkte Serverzuordnung:
{
"docs": {
"command": "docs-mcp",
"args": ["--stdio"]
}
}Umschließende Serverzuordnung:
{
"mcp_servers": {
"docs": {
"command": "docs-mcp",
"args": ["--stdio"]
}
}
}Nach der Installation können Benutzer einen gebündelten MCP-Server aktivieren oder deaktivieren und die
Richtlinie für Tool-Genehmigungen in ihrer Codex-Konfiguration anpassen, ohne das Plugin zu bearbeiten. Verwenden Sie
plugins.<plugin>.mcp_servers.<server> für Plugin-spezifische MCP-Serverrichtlinien:
[plugins."my-plugin".mcp_servers.docs]
enabled = true
default_tools_approval_mode = "prompt"
enabled_tools = ["search"]
[plugins."my-plugin".mcp_servers.docs.tools.search]
approval_mode = "approve"Wenn Ihr Plugin aktiviert ist, kann Codex Lifecycle-Hooks aus Ihrem Plugin zusammen mit Benutzer-, Projekt- und verwalteten Hooks laden.
Durch die Installation oder Aktivierung eines Plugins wird dessen Hooks nicht automatisch vertraut. Im Plugin gebündelte Hooks sind nicht verwaltete Hooks. Daher überspringt Codex sie, bis der Benutzer die aktuelle Hook-Definition geprüft und als vertrauenswürdig eingestuft hat.
Die standardmäßige Plugin-Hook-Datei ist hooks/hooks.json:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${PLUGIN_ROOT}/hooks/session_start.py",
"statusMessage": "Loading plugin context"
}
]
}
]
}
}Wenn Sie hooks in .codex-plugin/plugin.json definieren, verwendet Codex diesen Manifest-
Eintrag anstelle des Standards hooks/hooks.json. Das Manifest-Feld kann ein
einzelner Pfad, ein Array von Pfaden, ein Inline-Hooks-Objekt oder ein Array von Inline-
Hooks-Objekten sein.
{
"name": "repo-policy",
"hooks": ["./hooks/session.json", "./hooks/tools.json"]
}Für Hook-Pfade gelten dieselben Manifest-Pfadregeln wie für skills, apps und
mcpServers: Sie beginnen mit ./, werden relativ zum Plugin-Stammverzeichnis aufgelöst und bleiben
innerhalb des Plugin-Stammverzeichnisses.
Plugin-Hook-Befehle erhalten die Codex-spezifischen Umgebungsvariablen
PLUGIN_ROOT und PLUGIN_DATA. PLUGIN_ROOT verweist auf das Stammverzeichnis des installierten Plugins,
und PLUGIN_DATA verweist auf das beschreibbare Datenverzeichnis des Plugins. Codex
setzt außerdem CLAUDE_PLUGIN_ROOT und CLAUDE_PLUGIN_DATA, um die Kompatibilität mit
bestehenden Plugin-Hooks zu gewährleisten.
Plugin-Hooks verwenden dasselbe Ereignisschema wie reguläre Hooks. Unter Hooks finden Sie Informationen zu unterstützten Ereignissen, Ein- und Ausgaben, Vertrauensprüfung und aktuellen Einschränkungen.
Offizielle öffentliche Plugins veröffentlichen
Um ein Plugin zur öffentlichen Nutzung zu veröffentlichen, reichen Sie es über das Portal zur Plugin-Einreichung ein. Unter Plugins einreichen finden Sie den vollständigen Prüfungs- und Veröffentlichungsprozess.