Deutsch

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.

Plugin-Creator-Skill in ChatGPT

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.

So rufen Sie den Plugin-Creator-Skill auf

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:

  1. Öffnen Sie ChatGPT.
  2. Öffnen Sie Einstellungen.
  3. Wählen Sie Sicherheit und Anmeldung aus.
  4. Aktivieren Sie den Entwicklermodus.

Erstellen Sie anschließend die App im Entwicklermodus:

  1. Öffnen Sie Einstellungen → Plugins oder die Seite „Plugins“.
  2. Wählen Sie die Plus-Schaltfläche aus.
  3. Füllen Sie das Dialogfeld aus, um eine App im Entwicklermodus für Ihren MCP-Server zu erstellen.
  4. 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:

  1. Prüfen Sie .app.json und vergewissern Sie sich, dass die Datei auf die richtige plugin_asdk_app...-ID verweist.
  2. Prüfen Sie .codex-plugin/plugin.json und stellen Sie sicher, dass das Feld apps auf ./.app.json verweist.
  3. Fügen Sie gebündelte Skills unter skills/ hinzu, wenn das Plugin neben der App wiederholbare Workflows enthalten soll.
  4. 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.

Benutzerdefinierter lokaler Marketplace im Plugin-Verzeichnis

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-root

Marketplace-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-name

codex 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.

  1. Erstellen Sie einen Plugin-Ordner mit einer Manifestdatei unter .codex-plugin/plugin.json.
mkdir -p my-first-plugin/.codex-plugin

my-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.

  1. Fügen Sie unter skills/<skill-name>/SKILL.md einen Skill hinzu.
mkdir -p my-first-plugin/skills/hello

my-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.
  1. 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-plugin
Schritt 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-plugin
Schritt 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.

  1. Öffnen Sie Plugins in der ChatGPT-Desktop-App.
  2. Wechseln Sie zu Von Ihnen erstellt und öffnen Sie die Detailseite des Plugins.
  3. Wählen Sie Teilen aus.
  4. Fügen Sie Workspace-Mitglieder oder Workspace-Gruppen hinzu oder kopieren Sie einen Freigabelink.
  5. 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 = false

Marketplace-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 name auf oberster Ebene, um den Marketplace zu identifizieren.
  • Verwenden Sie interface.displayName für den Marketplace-Titel, der in der ChatGPT- Desktop-App angezeigt wird.
  • Fügen Sie unter plugins für jedes Plugin ein Objekt hinzu, um eine kuratierte Liste zu erstellen, die die App unter diesem Marketplace-Titel anzeigt.
  • Richten Sie source.path jedes 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.path relativ zum Marketplace-Stammverzeichnis, beginnen Sie den Pfad mit ./ und belassen Sie ihn innerhalb dieses Stammverzeichnisses.
  • Bei lokalen Einträgen kann source auch ein einfacher Pfad als Zeichenfolge sein, beispielsweise "./plugins/my-plugin".
  • Geben Sie bei jedem Plugin-Eintrag immer policy.installation, policy.authentication und category an.
  • Verwenden Sie für policy.installation Werte wie AVAILABLE, INSTALLED_BY_DEFAULT oder NOT_AVAILABLE.
  • Legen Sie mit policy.authentication fest, 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, screenshots

Nur 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, version und description identifizieren das Plugin.
  • author, homepage, repository, license und keywords stellen Herausgeber- und Auffindbarkeitsmetadaten bereit.
  • skills, mcpServers, apps und hooks verweisen relativ zum Plugin-Stammverzeichnis auf gebündelte Komponenten.
  • interface steuert, wie Installationsoberflächen das Plugin darstellen.

Verwenden Sie das Objekt interface für Metadaten der Installationsoberfläche:

  • displayName, shortDescription und longDescription steuern den Titel und die Beschreibungstexte.
  • developerName, category und capabilities ergänzen Herausgeber- und Funktions- metadaten.
  • websiteURL, privacyPolicyURL und termsOfServiceURL stellen externe Links bereit.
  • defaultPrompt, brandColor, composerIcon, logo und screenshots steuern 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, logo und screenshots nach Möglichkeit unter ./assets/.
  • Verwenden Sie skills für gebündelte Skill-Ordner, apps für .app.json, mcpServers für .mcp.json und hooks für Lifecycle-Hooks.
  • Aktivierte Plugins können neben Skills, MCP-Servern und Konnektoren auch Lifecycle-Hooks enthalten.
  • Wenn Ihr Plugin Hooks unter ./hooks/hooks.json speichert, benötigen Sie keinen Eintrag hooks in .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.