Eklenti oluşturma
ChatGPT için eklentiler oluşturun, test edin ve dağıtın
Bu sayfa eklenti yazarlarına yöneliktir. Web üzerinde ChatGPT Work ile veya ChatGPT masaüstü uygulamasında ChatGPT Work ya da Codex ile eklentilere göz atmak, bunları yüklemek ve kullanmak istiyorsanız Eklentiler bölümüne bakın. Hâlâ tek bir depo veya kişisel iş akışı üzerinde yinelemeler yapıyorsanız yerel bir beceriyle başlayın. Bu iş akışını ekipler arasında paylaşmak, bağlayıcıları veya MCP yapılandırmasını paketlemek, yaşam döngüsü kancalarını paketlemek ya da kararlı bir paket yayımlamak istediğinizde bir eklenti oluşturun.
Bir eklenti beceriler, MCP destekli bir uygulama veya her ikisini de içerebilir. Eklentinizin bir hizmete bağlanması veya araçları bir MCP sunucusu üzerinden sunması gerekiyorsa Uygulama oluşturma bölümüne bakın.
Eksiksiz herkese açık örnekler için Figma, Notion ve Web uygulamaları oluşturma örneklerini inceleyin.
@plugin-creator ile eklenti oluşturma
En hızlı kurulum için yerleşik @plugin-creator becerisini kullanın.
Bu beceri, gerekli .codex-plugin/plugin.json manifestinin iskelesini oluşturur ve test için
yerel bir pazar yeri girdisi de oluşturabilir. Zaten bir eklenti
klasörünüz varsa onu yerel bir pazar yerine bağlamak için yine @plugin-creator kullanabilirsiniz.
MCP sunucusu destekli geliştirme modu uygulamasına işaret eden bir eklentiyi yerel olarak oluşturma ve test etme
MCP sunucusu destekli bir uygulama içeren eklentiyi yerel olarak test etmek istiyorsanız plugin-creator becerisini de kullanabilirsiniz. Eklentinin yine yerel bir eklenti klasörüne ve manifeste ihtiyacı vardır, ancak uygulamanın kendisi ChatGPT geliştirici modunda başlar.
Önce ChatGPT'de geliştirici modunu etkinleştirin:
- ChatGPT uygulamasını açın.
- Ayarlar bölümünü açın.
- Güvenlik ve giriş seçeneğini belirleyin.
- Geliştirici modu seçeneğini açın.
Ardından uygulamayı geliştirici modunda oluşturun:
- Ayarlar → Eklentiler bölümünü veya Eklentiler sayfasını açın.
- Artı düğmesini seçin.
- MCP sunucunuz için geliştirici modu uygulaması oluşturmak üzere iletişim kutusunu doldurun.
- ChatGPT uygulamayı oluşturduktan sonra tarayıcı URL'sinden uygulama kimliğini kopyalayın. Kimlik
plugin_asdk_appile başlar.
Bu plugin_asdk_app... kimliğini bir ChatGPT Work sohbetinde @plugin-creator öğesine
veya Codex'te $plugin-creator öğesine verin. Örneğin ChatGPT Work ile:
Plugin Creator istemi@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.plugin-creator becerisi eklenti klasörünü ve gerekli
.codex-plugin/plugin.json dosyasını oluşturup ChatGPT uygulaması için uygulama bağlantısını ekler. Kişisel bir pazar yeri girdisi oluşturmasını isterseniz
eklenti, test amacıyla Eklentiler Dizini'ndeki yerel kaynağınızın altında görünür.
plugin-creator becerisi eklentiyi oluşturduktan sonra:
.app.jsonöğesini inceleyin ve doğruplugin_asdk_app...kimliğine işaret ettiğini doğrulayın..codex-plugin/plugin.jsonöğesini inceleyin veappsalanının./.app.jsonöğesine işaret ettiğinden emin olun.- Eklenti, uygulamanın yanında tekrarlanabilir iş akışları da içerecekse paketlenmiş becerileri
skills/altına ekleyin. - Beceri kişisel bir pazar yeri girdisi oluşturduysa ChatGPT'yi yenileyin ve eklentiyi Eklentiler Dizini'ndeki yerel kaynağınızdan yükleyin. Ardından yeni bir sohbette test edin.
Manifest biçimi ve dosya düzeni için Eklenti yapısı ve Yol kuralları bölümlerine bakın.
Kendi seçilmiş eklenti listenizi oluşturma
Pazar yeri, eklentilerden oluşan bir JSON kataloğudur. @plugin-creator tek bir eklenti için bir katalog oluşturabilir
ve bir depo, ekip veya kişisel iş akışı için kendi seçilmiş listenizi oluşturmak üzere aynı pazar yerine
girdiler eklemeye devam edebilirsiniz.
ChatGPT masaüstü uygulamasındaki ChatGPT Work veya Codex'te her pazar yeri,
Eklentiler Dizini'nde seçilebilir bir kaynak olarak görünür. Depo kapsamlı bir liste için
$REPO_ROOT/.agents/plugins/marketplace.json, kişisel bir liste için
~/.agents/plugins/marketplace.json kullanın. plugins[] altına eklenti başına bir girdi ekleyin, her source.path öğesini pazar yeri köküne göre
./ önekli bir yolla eklenti klasörüne yönlendirin ve
interface.displayName değerini, uygulamanın pazar yeri seçicisinde göstermesini istediğiniz etikete ayarlayın. Ardından ChatGPT masaüstü uygulamasını yeniden başlatın. Sonra Eklentiler
Dizini'ni açın, pazar yerinizi seçin ve bu seçilmiş listedeki eklentilere göz atın ya da bunları yükleyin.
Her eklenti için ayrı bir pazar yerine ihtiyacınız yoktur. Bir pazar yeri, siz test ederken tek bir eklentiyi sunabilir; daha fazla eklenti ekledikçe daha büyük bir seçilmiş kataloğa dönüşebilir.
CLI'dan pazar yeri ekleme
config.toml dosyasını elle düzenlemek yerine bir pazar yeri kaynağı eklemek ve izlemek için codex plugin marketplace add kullanın. Bu komutlar eklenti yazımını ve
katalog kurulumunu destekler. Yerel bir eklentiyi yüklemek ve test etmek için ChatGPT masaüstü uygulamasını kullanın.
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-rootPazar yeri kaynakları GitHub kısaltması (owner/repo veya
owner/repo@ref), HTTP ya da HTTPS Git URL'leri, SSH Git URL'leri veya yerel pazar yeri kök
dizinleri olabilir. Bir Git ref'ini sabitlemek için --ref, Git destekli pazar yeri depolarında
seyrek checkout kullanmak için tekrarlı olarak --sparse PATH kullanın. --sparse yalnızca
Git pazar yeri kaynakları için geçerlidir.
Yapılandırılmış pazar yerlerini incelemek, yenilemek veya kaldırmak için:
codex plugin marketplace list
codex plugin marketplace upgrade
codex plugin marketplace upgrade marketplace-name
codex plugin marketplace remove marketplace-namecodex plugin marketplace list, yerel varsayılan pazar yerleri ve
yapılandırılmış pazar yeri anlık görüntüleri dâhil olmak üzere Codex'in değerlendirdiği her pazar yerini ve çözümlendiği kök yolu yazdırır.
Elle eklenti oluşturma
Tek bir beceriyi paketleyen asgari bir eklentiyle başlayın.
.codex-plugin/plugin.jsonkonumunda manifest içeren bir eklenti klasörü oluşturun.
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/"
}kebab-case biçiminde kararlı bir eklenti name değeri kullanın. Codex bunu eklenti
tanımlayıcısı ve bileşen ad alanı olarak kullanır.
skills/<skill-name>/SKILL.mdaltına bir beceri ekleyin.
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.- Eklentiyi bir pazar yerine ekleyin. Bir tane oluşturmak için
@plugin-creatorkullanın veya eklentiyi Codex'e elle bağlamak için Kendi seçilmiş eklenti listenizi oluşturma bölümünü izleyin.
Bundan sonra gerektiği şekilde MCP yapılandırması, bağlayıcılar veya pazar yeri meta verileri ekleyebilirsiniz.
Yerel eklentiyi elle yükleme
Eklentiye veya seçilmiş listeye kimlerin erişebilmesi gerektiğine bağlı olarak depo pazar yeri ya da kişisel pazar yeri kullanın.
Depo
`$REPO_ROOT/.agents/plugins/marketplace.json` konumuna bir pazar yeri dosyası ekleyin
ve eklentilerinizi `$REPO_ROOT/plugins/` altında saklayın.
**Depo pazar yeri örneği**
Birinci adım: Eklenti klasörünü `$REPO_ROOT/plugins/my-plugin` içine kopyalayın.mkdir -p ./plugins
cp -R /absolute/path/to/my-plugin ./plugins/my-pluginİkinci adım: `$REPO_ROOT/.agents/plugins/marketplace.json` dosyasını ekleyin veya güncelleyin; böylece
`source.path`, `./` önekli göreli bir yolla bu eklenti dizinine işaret eder:{
"name": "local-repo",
"plugins": [
{
"name": "my-plugin",
"source": {
"source": "local",
"path": "./plugins/my-plugin"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
]
}Üçüncü adım: ChatGPT masaüstü uygulamasını yeniden başlatın ve eklentinin göründüğünü doğrulayın.Kişisel
`~/.agents/plugins/marketplace.json` konumuna bir pazar yeri dosyası ekleyin veeklentilerinizi ~/.codex/plugins/ altında saklayın.
**Kişisel pazar yeri örneği**
Birinci adım: Eklenti klasörünü `~/.codex/plugins/my-plugin` içine kopyalayın.mkdir -p ~/.codex/plugins
cp -R /absolute/path/to/my-plugin ~/.codex/plugins/my-pluginİkinci adım: `~/.agents/plugins/marketplace.json` dosyasını ekleyin veya güncelleyin; böyleceeklenti girdisinin source.path değeri bu dizine işaret eder.
Üçüncü adım: ChatGPT masaüstü uygulamasını yeniden başlatın ve eklentinin göründüğünü doğrulayın.Pazar yeri dosyası eklenti konumuna işaret eder; dolayısıyla bu dizinler
sabit gereksinimler değil, örneklerdir. Codex, source.path öğesini
.agents/plugins/ klasörüne göre değil pazar yeri köküne göre çözümler. Dosya biçimi için
Pazar yeri meta verileri bölümüne bakın.
Eklentiyi değiştirdikten sonra pazar yeri girdinizin işaret ettiği eklenti dizinini güncelleyin ve yerel yüklemenin yeni dosyaları alması için ChatGPT masaüstü uygulamasını yeniden başlatın.
Yerel eklentiyi çalışma alanınızla paylaşma
Bir eklenti oluşturduktan sonra onu ChatGPT masaüstü uygulamasından ekleyin. ChatGPT'yi seçip seçicide Work'e geçin veya Codex'i seçin, ardından Eklentiler bölümünü açın. Sonrasında eklentiyi ChatGPT çalışma alanınızın diğer üyeleriyle paylaşabilirsiniz.
- ChatGPT masaüstü uygulamasında Eklentiler bölümünü açın.
- Sizin oluşturduklarınız bölümüne gidin ve eklentinin ayrıntılar sayfasını açın.
- Paylaş seçeneğini belirleyin.
- Çalışma alanı üyeleri veya çalışma alanı grupları ekleyin ya da bir paylaşım bağlantısı kopyalayın.
- Kimlerin erişebileceğini seçin, ardından daveti veya bağlantıyı gönderin.
Paylaştığınız kişiler eklentiyi Eklentiler Dizini'ndeki Sizinle paylaşılanlar altında bulabilir. Yerel bir eklentiyi çalışma alanınızla paylaşmak onu herkese açık Eklentiler Dizini'nde yayımlamaz. Paylaşılan eklentiler çalışma alanınızın ve kuruluşunuzun sınırları içinde kalır; bu çalışma alanında oturum açmamış hesaplar bunlara erişemez. Bir ekip veya rol aynı eklenti erişimini paylaşacaksa grupları kullanın. Depo ya da CLI dağıtımı istediğinizde pazar yerini, seçili ekip arkadaşlarınızın ChatGPT masaüstü uygulamasından eklenti yüklemesini istediğinizde çalışma alanı paylaşımını kullanın.
Çalışma alanı yöneticileri, requirements.toml öğesine features.plugin_sharing = false ekleyerek bulut tarafından yönetilen gereksinimlerden eklenti paylaşımını devre dışı bırakabilir:
features.plugin_sharing = falsePazar yeri meta verileri
Bir depo pazar yeri sürdürüyorsanız bunu
$REPO_ROOT/.agents/plugins/marketplace.json içinde tanımlayın. Kişisel pazar yeri için
~/.agents/plugins/marketplace.json kullanın. Pazar yeri dosyası, ChatGPT masaüstü uygulamasındaki eklenti
sıralamasını ve yükleme politikalarını denetler. Test sırasında tek bir eklentiyi veya uygulamanın tek bir pazar yeri adı altında birlikte göstermesini istediğiniz seçilmiş bir eklenti listesini temsil edebilir. Bir eklentiyi
pazar yerine eklemeden önce version değerinin, yayımcı meta verilerinin ve yükleme yüzeyi
metninin diğer geliştiricilerin görmesine hazır olduğundan emin olun.
{
"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"
}
]
}- Pazar yerini tanımlamak için üst düzey
namekullanın. - ChatGPT masaüstü uygulamasında gösterilen pazar yeri başlığı için
interface.displayNamekullanın. - Uygulamanın bu pazar yeri başlığı altında göstereceği seçilmiş bir liste oluşturmak için
pluginsaltına eklenti başına bir nesne ekleyin. - Her eklenti girdisinin
source.pathdeğerini Codex'in yüklemesini istediğiniz eklenti dizinine yönlendirin. Depo yüklemelerinde bu genellikle./plugins/altında bulunur. Kişisel yüklemelerde yaygın bir düzen./.codex/plugins/<plugin-name>şeklindedir. source.pathdeğerini pazar yeri köküne göreli tutun,./ile başlatın ve bu kökün içinde tutun.- Yerel girdilerde
source,"./plugins/my-plugin"gibi düz bir dize yolu da olabilir. - Her eklenti girdisine daima
policy.installation,policy.authenticationvecategoryekleyin. AVAILABLE,INSTALLED_BY_DEFAULTveyaNOT_AVAILABLEgibipolicy.installationdeğerlerini kullanın.- Kimlik doğrulamanın yükleme sırasında mı yoksa ilk kullanımda mı yapılacağını belirlemek için
policy.authenticationkullanın.
Pazar yeri, Codex'in eklentiyi nereden yükleyeceğini denetler. Eklentiniz bu örnek dizinlerin dışında bulunuyorsa yerel bir
source.path başka bir konuma işaret edebilir. Pazar yeri dosyası, eklentiyi geliştirdiğiniz depoda veya ayrı bir pazar yeri deposunda bulunabilir ve tek bir pazar yeri dosyası bir veya birçok eklentiye işaret edebilir.
Pazar yeri girdileri Git destekli eklenti kaynaklarına da işaret edebilir. Eklenti depo kökündeyse
"source": "url", bir alt dizindeyse
"source": "git-subdir" kullanın:
{
"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 destekli girdiler ref veya sha seçicilerini kullanabilir. Codex bir
pazar yeri girdisinin kaynağını çözümleyemezse tüm pazar yerini başarısız kılmak yerine o eklenti girdisini atlar.
Pazar yeri girdileri bir JavaScript paket kayıt defterindeki eklentiyi de yükleyebilir:
{
"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 zorunludur ve bir kayıt defteri kapsamı içerebilir. version isteğe bağlıdır
ve paket sürümlerini, dağıtım etiketlerini ve sürüm aralıklarını kabul eder; yol veya URL seçicilerini kabul etmez.
registry isteğe bağlıdır ve gömülü kimlik bilgileri,
sorgu veya parça içermeyen bir HTTPS URL'si olmalıdır. Codex paketi yaşam döngüsü
betiklerini çalıştırmadan indirir. npm CLI yüklü olmalıdır ve kayıt defteri kimlik doğrulaması
onun yapılandırmasından alınır.
ChatGPT masaüstü uygulaması pazar yerlerini nasıl kullanır?
Eklenti pazar yeri, ChatGPT masaüstü uygulamasının okuyup yükleyebileceği bir JSON eklenti kataloğudur.
Uygulama pazar yeri dosyalarını şu konumlardan okuyabilir:
- resmî Eklentiler Dizini'ni destekleyen seçilmiş pazar yeri
$REPO_ROOT/.agents/plugins/marketplace.jsonkonumundaki depo pazar yeri$REPO_ROOT/.claude-plugin/marketplace.jsonkonumundaki eski sürümlerle uyumlu pazar yeri~/.agents/plugins/marketplace.jsonkonumundaki kişisel pazar yeri
Bir pazar yeri üzerinden sunulan herhangi bir eklentiyi yükleyebilirsiniz. Uygulama
eklentileri
~/.codex/plugins/cache/$MARKETPLACE_NAME/$PLUGIN_NAME/$VERSION/ konumuna yükler. Yerel
eklentilerde $VERSION değeri local olur ve uygulama yüklü kopyayı doğrudan pazar yeri girdisinden değil bu
önbellek yolundan yükler.
Her eklentiyi ayrı ayrı etkinleştirebilir veya devre dışı bırakabilirsiniz. Uygulama her eklentinin
açık ya da kapalı durumunu ~/.codex/config.toml içinde saklar.
Eklentileri paketleme ve dağıtma
Eklenti yapısı
Her eklentinin .codex-plugin/plugin.json konumunda bir manifesti vardır. Ayrıca
bir skills/ dizini, yaşam döngüsü kancaları için bir hooks/ dizini, bir veya daha fazla bağlayıcıya işaret eden .app.json dosyası, MCP sunucularını yapılandıran bir .mcp.json dosyası ve eklentiyi desteklenen yüzeylerde sunmak için kullanılan varlıklar içerebilir.
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.codex-plugin/ içine yalnızca plugin.json konur. skills/, hooks/,
assets/, .mcp.json ve .app.json öğelerini eklenti kökünde tutun.
Yayımlanan eklentiler genellikle hızlı başlangıç iskelelerindeki asgari örnekten daha zengin bir manifest kullanır. Manifestin üç görevi vardır:
- Eklentiyi tanımlamak.
- Beceriler, bağlayıcılar, MCP sunucuları veya kancalar gibi paketlenmiş bileşenlere işaret etmek.
- Açıklamalar, simgeler ve yasal bağlantılar gibi yükleme yüzeyi meta verilerini sağlamak.
Eksiksiz bir manifest örneği:
{
"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 zorunlu giriş noktasıdır. Diğer manifest
alanları isteğe bağlıdır ancak yayımlanan eklentilerde yaygın olarak kullanılır.
Manifest alanları
Paket meta verilerini tanımlamak ve paketlenmiş bileşenlere işaret etmek için üst düzey alanları kullanın:
name,versionvedescriptioneklentiyi tanımlar.author,homepage,repository,licensevekeywordsyayımcı ve keşif meta verilerini sağlar.skills,mcpServers,appsvehookseklenti köküne göre paketlenmiş bileşenlere işaret eder.interface, yükleme yüzeylerinin eklentiyi nasıl sunacağını denetler.
Yükleme yüzeyi meta verileri için interface nesnesini kullanın:
displayName,shortDescriptionvelongDescriptionbaşlığı ve açıklama metnini denetler.developerName,categoryvecapabilitiesyayımcı ve yetenek meta verilerini ekler.websiteURL,privacyPolicyURLvetermsOfServiceURLharici bağlantıları sağlar.defaultPrompt,brandColor,composerIcon,logovescreenshotsbaşlangıç istemlerini ve görsel sunumu denetler.
Yol kuralları
- Manifest yollarını eklenti köküne göreli tutun ve
./ile başlatın. composerIcon,logovescreenshotsgibi görsel varlıkları mümkün olduğunda./assets/altında saklayın.- Paketlenmiş beceri klasörleri için
skills,.app.jsoniçinapps,.mcp.jsoniçinmcpServersve yaşam döngüsü kancaları içinhookskullanın. - Etkin eklentiler; beceriler, MCP sunucuları ve bağlayıcıların yanında yaşam döngüsü kancalarını da içerebilir.
- Eklentiniz kancaları
./hooks/hooks.jsonkonumunda saklıyorsa.codex-plugin/plugin.jsoniçinde birhooksgirdisine ihtiyacınız yoktur; Codex bu varsayılan dosyayı otomatik olarak denetler.
Paketlenmiş MCP sunucuları ve yaşam döngüsü kancaları
mcpServers, doğrudan sunucu eşlemesi veya sarmalanmış bir mcp_servers nesnesi içeren bir .mcp.json dosyasına işaret edebilir.
Doğrudan sunucu eşlemesi:
{
"docs": {
"command": "docs-mcp",
"args": ["--stdio"]
}
}Sarmalanmış sunucu eşlemesi:
{
"mcp_servers": {
"docs": {
"command": "docs-mcp",
"args": ["--stdio"]
}
}
}Yüklemeden sonra kullanıcılar, eklentiyi düzenlemeden Codex yapılandırmalarından paketlenmiş bir MCP sunucusunu etkinleştirebilir veya devre dışı bırakabilir ve
araç onay politikasını ayarlayabilir. Eklenti kapsamlı MCP sunucusu politikası için
plugins.<plugin>.mcp_servers.<server> kullanın:
[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"Eklentiniz etkinleştirildiğinde Codex, kullanıcı, proje ve yönetilen kancaların yanında eklentinizdeki yaşam döngüsü kancalarını yükleyebilir.
Bir eklentiyi yüklemek veya etkinleştirmek, kancalarına otomatik olarak güvenmez. Eklentiyle paketlenmiş kancalar yönetilmeyen kancalardır; bu nedenle kullanıcı mevcut kanca tanımını inceleyip güvenene kadar Codex bunları atlar.
Varsayılan eklenti kanca dosyası hooks/hooks.json şeklindedir:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "python3 ${PLUGIN_ROOT}/hooks/session_start.py",
"statusMessage": "Loading plugin context"
}
]
}
]
}
}.codex-plugin/plugin.json içinde hooks tanımlarsanız Codex varsayılan hooks/hooks.json yerine bu manifest
girdisini kullanır. Manifest alanı tek bir yol, yol dizisi, satır içi kanca nesnesi veya satır içi
kanca nesneleri dizisi olabilir.
{
"name": "repo-policy",
"hooks": ["./hooks/session.json", "./hooks/tools.json"]
}Kanca yolları skills, apps ve
mcpServers ile aynı manifest yol kurallarını izler: ./ ile başlar, eklenti köküne göre çözümlenir ve
eklenti kökünün içinde kalır.
Eklenti kanca komutları Codex'e özgü
PLUGIN_ROOT ve PLUGIN_DATA ortam değişkenlerini alır. PLUGIN_ROOT yüklü eklenti
köküne, PLUGIN_DATA ise eklentinin yazılabilir veri dizinine işaret eder. Codex
ayrıca mevcut eklenti kancalarıyla uyumluluk için CLAUDE_PLUGIN_ROOT ve CLAUDE_PLUGIN_DATA değerlerini ayarlar.
Eklenti kancaları, normal kancalarla aynı olay şemasını kullanır. Desteklenen olaylar, girdiler, çıktılar, güven incelemesi ve mevcut sınırlamalar için Kancalar bölümüne bakın.
Resmî herkese açık eklentileri yayımlama
Bir eklentiyi herkese açık kullanım için yayımlamak üzere eklenti gönderim portalından gönderin. Tam inceleme ve yayımlama süreci için Eklenti gönderme bölümüne bakın.