Si vous publiez déjà un plugin ou un connecteur Claude Code, choisissez la procédure de soumission selon ce qu’il contient : des skills, un serveur MCP ou les deux.
| Ce dont vous disposez | Procédure à suivre |
|---|---|
| Des skills sans serveur MCP | Importez un plugin contenant uniquement des skills. |
| Un point de terminaison MCP public accessible en HTTPS | Créez un dossier de soumission pour un serveur MCP distant. Si vous avez des skills, ajoutez-les au même brouillon. |
| Un serveur MCP local | Consultez Soumettez un plugin réservé à l’application de bureau pour connaître les critères d’admissibilité et la procédure de soumission. |
Claude prévoit deux procédures de soumission distinctes pour les plugins Claude Code et les connecteurs MCP. Chez OpenAI, un même paquet de plugin peut contenir des skills, des serveurs MCP ou les deux. Les fiches publiées sur la Marketplace de Claude et les approbations obtenues ne sont pas transférées à OpenAI.
Si votre plugin contient des skills, vérifiez leurs instructions en suivant les conseils pour évaluer le respect des instructions avant de les soumettre, quelle que soit la procédure choisie.
Soumettez un plugin contenant uniquement des skills
Choisissez cette procédure si le plugin n’a pas besoin de serveur MCP.
Vérifiez ce qu’OpenAI prend en charge
| Contenu de votre plugin Claude | Marche à suivre |
|---|---|
skills |
Conservez chaque skill avec son fichier SKILL.md, ses scripts, ses documents de référence et ses ressources. Pour pouvoir importer directement une archive Claude, vérifiez qu’elle contient au moins un skill à l’emplacement skills/<skill-name>/SKILL.md. |
| Répertoires personnalisés de skills déclarés dans le manifeste | Conservez les répertoires dans l’archive, ainsi que leurs déclarations dans le manifeste. |
| Skills qui mentionnent explicitement Claude | Dans les instructions des skills, remplacez les références propres à Claude par des formulations indépendantes du fournisseur, comme « le modèle ». Ne conservez le nom d’un produit que si l’instruction s’applique spécifiquement à ce produit. |
commands, commands/, agents ou agents/ |
Convertissez les comportements réutilisables en skills. Transformez chaque commande Markdown en skill, déplacez les procédures réutilisables des agents dans des skills et intégrez les instructions utiles sur le rôle de l’agent au skill concerné. |
hooks ou hooks/hooks.json |
Supprimez les hooks de cycle de vie avant de soumettre le plugin à l’annuaire public. Si le plugin en dépend, distribuez-le de façon à permettre aux utilisateurs de l’installer manuellement dans l’application de bureau Codex. Consultez la section sur les hooks de cycle de vie. |
userConfig ou ${user_config.*} |
OpenAI n’affiche pas les invites d’installation de Claude et ne remplace pas les variables user_config par leurs valeurs. Suivez la procédure Remplacez le paramètre userConfig de Claude. Si le plugin a besoin d’identifiants ou de paramètres utilisateur persistants, utilisez un serveur MCP. |
| Skills qui créent ou mettent à jour des artefacts dynamiques de Claude | OpenAI ne prend pas en charge les artefacts dynamiques de Claude pour le moment. Supprimez les instructions qui nécessitent de créer, de rouvrir, d’actualiser ou de mettre à jour un artefact. Renvoyez son contenu directement dans la conversation. Par exemple, affichez les tableaux d’un artefact sous forme de tableaux standard. Le HTML propre à l’artefact, la persistance, le mécanisme d’actualisation et les interactions ne sont pas conservés. |
bin/, settings, settings.json, CLAUDE.md ou .claude/settings*.json |
Conservez les utilitaires et les instructions nécessaires dans le plugin. Appelez les exécutables fournis à l’aide de chemins relatifs à la racine du paquet et supprimez les paramètres propres à Claude. |
outputStyles, lspServers, experimental.themes, experimental.monitors, channels ou dependencies |
Déplacez les comportements essentiels dans des skills, puis supprimez la déclaration Claude. Contactez votre partenaire OpenAI si le workflow principal nécessite de recevoir des messages provenant de canaux. |
.claude-plugin/plugin.json |
Conservez le manifeste pour importer directement l’archive Claude. Le portail le convertit en .codex-plugin/plugin.json. |
.claude-plugin/marketplace.json, .mcp.json, mcpServers, .app.json ou apps |
Ne vous appuyez pas sur ces fichiers ou déclarations. L’importation d’un plugin contenant uniquement des skills exclut la configuration des serveurs MCP. Vous ne pouvez pas soumettre une intégration de serveur MCP existante en fournissant simplement une référence. |
Préparez et importez l’archive
- Vérifiez que la racine de l’archive, ou son unique répertoire de premier niveau, contient le fichier
.claude-plugin/plugin.jsonavec un champdescriptionnon vide, ainsi qu’au moins un skill valide à l’emplacementskills/<skill-name>/SKILL.md. - Ouvrez le portail de soumission des plugins, sélectionnez Create plugin, choisissez Skills only, puis importez l’archive.
- Vérifiez le fichier
.codex-plugin/plugin.jsongénéré. Lors de la conversion, le portail ajoute les valeurs par défaut manquantes pour l’interface et normalise les champs de texte. - Testez les skills importés dans un environnement vierge. Vérifiez que chaque skill trouve les fichiers et les exécutables qu’il référence et qu’il ne dépend d’aucun paquet, fichier ou identifiant local non déclaré.
- Remplissez les champs de la fiche du plugin et ceux destinés à son examen, corrigez tous les problèmes signalés par l’analyse, puis soumettez le brouillon.
Si l’archive ne remplit pas les conditions d’importation directe, suivez la procédure Préparez le paquet de votre plugin pour créer le manifeste OpenAI et organiser les fichiers du paquet. Consultez Créez des skills pour connaître les exigences applicables aux skills.
Soumettez un plugin doté d’un serveur MCP distant
Choisissez cette procédure si le serveur dispose d’une URL HTTPS publique, stable et accessible à OpenAI. Le serveur peut avoir fonctionné en local dans le plugin Claude. Pour le soumettre, vous devez l’avoir déployé en tant que service distant.
Vérifiez ce qu’OpenAI prend en charge
| Contenu de votre intégration Claude | Marche à suivre |
|---|---|
| Un serveur MCP distant | Réutilisez l’implémentation du serveur. Soumettez un point de terminaison HTTPS public et stable qui utilise Streamable HTTP. |
Un serveur MCP local ou une extension Claude Desktop (.mcpb) |
Déployez le serveur MCP à une URL HTTPS publique ou suivez la procédure Soumettez un plugin réservé à l’application de bureau pour soumettre un plugin MCP local. Le portail n’accepte pas les fichiers .mcpb. |
| Skills ou répertoires personnalisés de skills déclarés dans le manifeste | Incluez les skills dans le même dossier de soumission With MCP. Conservez chaque fichier SKILL.md avec ses scripts, ses documents de référence et ses ressources. |
| Skills qui mentionnent explicitement Claude | Dans les instructions des skills, remplacez les références propres à Claude par des formulations indépendantes du fournisseur, comme « le modèle ». Ne conservez le nom d’un produit que si l’instruction s’applique spécifiquement à ce produit. |
commands, commands/, agents ou agents/ |
Convertissez les comportements réutilisables en skills. Transformez chaque commande Markdown en skill, déplacez les procédures réutilisables des agents dans des skills et intégrez les instructions utiles sur le rôle de l’agent au skill concerné. |
hooks ou hooks/hooks.json |
Supprimez les hooks de cycle de vie avant de soumettre le plugin à l’annuaire public. Si le plugin en dépend, distribuez-le de façon à permettre aux utilisateurs de l’installer manuellement dans l’application de bureau Codex. Consultez la section sur les hooks de cycle de vie. |
userConfig ou ${user_config.*} |
OpenAI n’affiche pas les invites d’installation de Claude et ne remplace pas les variables user_config par leurs valeurs. Suivez la procédure Remplacez le paramètre userConfig de Claude pour traiter chaque valeur au moyen d’un paramètre d’entrée explicite, d’OAuth, d’un stockage hébergé ou d’une configuration locale de Codex. |
| Skills qui créent ou mettent à jour des artefacts dynamiques de Claude | OpenAI ne prend pas en charge les artefacts dynamiques de Claude pour le moment. Supprimez les instructions qui nécessitent de créer, de rouvrir, d’actualiser ou de mettre à jour un artefact. Renvoyez son contenu directement dans la conversation. Par exemple, affichez les tableaux d’un artefact sous forme de tableaux standard. Le HTML propre à l’artefact, la persistance, le mécanisme d’actualisation et les interactions ne sont pas conservés. |
.app.json, apps ou une intégration de serveur MCP existante |
Soumettez directement le point de terminaison du serveur MCP. Vous ne pouvez pas soumettre une intégration de serveur MCP existante en fournissant simplement une référence. |
outputStyles, lspServers, experimental.themes, experimental.monitors, channels ou dependencies |
Déplacez les comportements essentiels dans des skills ou des outils MCP, puis supprimez la déclaration Claude. Contactez votre partenaire OpenAI si le workflow principal nécessite de recevoir des messages provenant de canaux. |
Préparez et soumettez le serveur MCP
- Déployez le serveur MCP sur son point de terminaison HTTPS de production avec Streamable HTTP. Utilisez OAuth 2.1 si le serveur accède à des données utilisateur privées ou agit pour le compte d’un utilisateur. Consultez Authentifiez les utilisateurs pour connaître les exigences du produit et la spécification d’autorisation MCP prise en charge.
- Ajoutez des schémas d’outils précis et des annotations de sécurité. Testez chaque outil pour vérifier qu’il se connecte, s’authentifie, renvoie un résultat dont la structure est conforme aux attentes et exige la confirmation prévue pour les opérations d’écriture ou les actions destructrices.
- Convertissez les éventuelles commandes et les éventuels agents en skills et vérifiez que les skills ne dépendent d’aucun paquet, fichier ou identifiant local non déclaré.
- Ouvrez le portail de soumission des plugins, sélectionnez Create plugin, choisissez With MCP, puis soumettez le point de terminaison de production. Le cas échéant, ajoutez les skills issus de la conversion au même brouillon.
- Vérifiez le domaine du serveur et configurez l’authentification si le serveur exige que les utilisateurs se connectent. Remplissez les champs de la fiche du plugin et ceux destinés à son examen, corrigez tous les problèmes signalés par l’analyse, puis soumettez le brouillon.
Prévoyez ces deux étapes de configuration avant de soumettre le plugin :
- Vérification du domaine : vous devez pouvoir publier le token exact fourni par le portail à l’emplacement
/.well-known/openai-apps-challengesur l’hôte MCP ou sur un hôte parent autorisé. Effectuez la vérification lorsque le portail vous y invite. Consultez Configurez la soumission MCP. - OAuth et restrictions de domaine de l’espace de travail : si le plugin utilise OAuth, exposez un point de terminaison UserInfo qui renvoie l’attribut
emailde l’utilisateur ainsi queemail_verified: true. Déclarez et activez les portéesopenidetemail. Consultez Prenez en charge les restrictions de domaine de l’espace de travail.
Consultez les critères d’examen des serveurs MCP distants avant de soumettre le plugin.
Remplacez le paramètre userConfig de Claude
Les plugins OpenAI n’affichent pas les invites d’installation userConfig de Claude et ne remplacent pas les références ${user_config.*} par leurs valeurs. Supprimez ces références et choisissez une solution de remplacement pour chaque valeur selon l’usage qu’en fait le plugin.
| Rôle de la valeur | Solution pour OpenAI |
|---|---|
| Un choix qui peut varier d’une tâche à l’autre | Ajoutez un paramètre d’entrée explicite au skill ou à l’outil MCP. Demandez la valeur uniquement lorsque le workflow en a besoin. |
| Un identifiant d’accès à un service distant | Utilisez OAuth 2.1 via le serveur MCP distant. Ne placez aucun secret dans l’archive du skill, le manifeste, les instructions ou les valeurs par défaut. |
| Une préférence à conserver dans la durée | Enregistrez-la dans le service hébergé et associez-la à l’utilisateur authentifié. Permettez à l’utilisateur de la modifier au moyen d’un workflow explicite ou d’un paramètre d’entrée d’un outil. |
| Un paramètre pour un script ou un hook exécuté localement dans Codex | Utilisez une variable d’environnement ou un fichier de configuration dont l’usage est documenté. Vérifiez la présence du paramètre avant de l’utiliser. S’il manque, renvoyez un message d’erreur indiquant comment le définir. Le workflow principal de ChatGPT doit pouvoir fonctionner sans ce paramètre local. |
| Une valeur fixe commune à tous les utilisateurs | Définissez une valeur par défaut non secrète dans les instructions du skill ou dans la configuration du service hébergé. |
Si un plugin contenant uniquement des skills a besoin d’un identifiant d’accès ou d’un paramètre à conserver d’une conversation à l’autre, ajoutez un serveur MCP. Utilisez OAuth et un stockage hébergé pour le serveur distant. Si la valeur ne concerne que la tâche en cours, conservez un plugin composé uniquement de skills et demandez cette valeur au moyen d’un paramètre d’entrée explicite du skill.
Remplissez les conditions de soumission
Quelle que soit la procédure choisie, obtenez les droits d’écriture Apps Management dans l’organisation OpenAI qui sera propriétaire du plugin avant de le soumettre. Vous devez également faire vérifier votre identité ou celle de votre entreprise. OpenAI doit examiner chaque plugin.
Contactez votre partenaire OpenAI avant de soumettre le plugin si ses fonctionnalités essentielles nécessitent une exécution locale, un accès arbitraire aux fichiers de l’ordinateur de l’utilisateur, un accès au matériel ou aux applications, un fonctionnement hors ligne ou la réception de messages provenant de canaux. Ces cas peuvent nécessiter un examen propre au produit.
Pour suivre la procédure complète sur le portail, consultez Soumettez des plugins. Si le portail affiche un code lors de la validation du paquet, consultez la référence des erreurs de soumission.