CommunityImagegithub.com

weber87na/openai-image

Utilise l'API officielle OpenAI Images pour générer des images statiques et des GIF animés natifs. À utiliser lorsque l'utilisateur demande de dessiner, générer une image, un GIF animé, ou pour les appels aux modèles de dessin OpenAI dans Codex / GitHub Copilot.

Qu'est-ce que openai-image ?

Ce skill est un kit d'Agent Skills autonome qui permet de générer des images statiques (PNG, JPEG, WebP) et des GIF animés natifs via l'API OpenAI Images (`/v1/images/generations`). Il utilise un CLI Python sans dépendance tierce exécuté avec `uv`. Les GIF sont produits directement par le modèle avec les paramètres `output_format=gif`, `frame_count` et `frame_duration_ms`, sans assemblage image par image. Le skill gère les modèles `gpt-image-2.6-sunburst` (par défaut) et `gpt-image-2.6-flare` (pour itération rapide), et nécessite une clé API OpenAI valide ainsi que l'autorisation de l'utilisateur avant tout appel facturable. Il est compatible avec Claude Code (via skills), Cursor (via commandes), Codex (via `$openai-image`) et GitHub Copilot (via `/openai-image`). Le flux de travail comprend la validation des paramètres en mode dry-run, la vérification des contraintes (dimensions, nombre d'images, durée), et la sauvegarde atomique des fichiers sans écrasement.

Compatible avec~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/weber87na/openai-image-skill/tree/HEAD/.agents/skills/openai-image

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

OpenAI Dessin et GIF natifs

Ce skill est un kit d'Agent Skills indépendant, supportant l'installation par projet ou par utilisateur. Considérez le dossier contenant ce fichier comme la racine du skill. Ne supposez pas d'emplacement d'installation fixe ni de répertoire de travail courant. Toutes les commandes Python doivent être exécutées via uv, sans utiliser python, pip ou créer un venv manuellement.

Capacités et limites

  • Images statiques : PNG, JPEG, WebP.
  • GIF animés natifs : utilisez output_format=gif, frame_count, frame_duration_ms en un seul appel /v1/images/generations.
  • Modèle par défaut : gpt-image-2.6-sunburst ; pour itération rapide, privilégiez gpt-image-2.6-flare. N'utilisez pas de noms comme gpt-image2.6 comme ID de modèle.
  • Les GIF nécessitent actuellement un accès GIF preview pour le modèle choisi, ce qui ne se limite pas à un abonnement ChatGPT / Codex / Copilot.
  • Les GIF supportent 2–16 images, 9 par défaut ; chaque image dure 200 ms par défaut, minimum 20 ms, l'API arrondit à 10 ms, limite d'encodage 655350 ms. L'animation par défaut fait environ 1,8 seconde ; le temps réel dépend des données de sortie.
  • Ne dupliquez pas la même image en plusieurs images, ne renommez pas PNG en GIF, et ne passez pas discrètement à plusieurs générations d'images ou à d'autres services payants en cas d'échec.
  • Ce CLI se concentre sur la génération d'images à partir de texte ; il ne fournit pas d'édition d'image, de streaming, de génération vidéo ni de synthèse d'animation locale. Il n'a pas de dépendances Pillow, FFmpeg ou OpenAI SDK.

Flux de travail

  1. Déterminez s'il s'agit d'une image statique ou d'une animation ; conservez le sujet, la composition, le texte, le style et le chemin de sortie spécifiés par l'utilisateur.
  2. Pour les animations, complétez la description avec des éléments comme « mouvement, cadre fixe, arrière-plan cohérent, boucle fluide ». Ne modifiez pas la demande sans consentement. Si le nombre d'images ou la vitesse n'est pas spécifié, utilisez les valeurs par défaut ; si les limites de l'API sont dépassées, expliquez d'abord et demandez un compromis.
  3. Rappelez que l'utilisation consomme du crédit API OpenAI ; appelez uniquement lorsque l'utilisateur autorise le dessin. Créer le skill, lire la documentation ou un dry-run ne constitue pas une autorisation de test payant. N'envoyez pas de code source, de clés ou d'autres données confidentielles.
  4. Vérifiez uv --version. Si uv n'est pas installé, demandez à l'utilisateur d'installer uv, n'installez pas d'outil système vous-même.
  5. Vérifiez l'existence de OPENAI_API_KEY ; n'imprimez jamais le contenu de .env ou de la clé, ne demandez pas de la coller dans le dialogue, ne l'écrivez pas dans le code source ou le dépôt. Utilisez les variables d'environnement existantes du processus ; si dotenv est nécessaire, confirmez le chemin absolu du .env dans le projet de travail de l'utilisateur ou explicitement spécifié, puis chargez-le avec uv run --env-file <chemin>. Ne cherchez pas les clés d'autres projets dans le répertoire d'installation du skill. Cet outil se connecte uniquement à https://api.openai.com, ne lit pas OPENAI_BASE_URL.
  6. Résolvez le chemin absolu du CLI depuis la racine du skill, effectuez d'abord un dry-run pour vérifier les paramètres, puis exécutez une vraie requête. Le chemin de sortie se base sur le projet de travail de l'utilisateur, n'écrivez pas dans le répertoire d'installation du skill. Pour la première configuration, utilisez le modèle de configuration vide et le guide d'utilisation fournis, ne remplacez pas une configuration existante.
  7. Vérifiez le code de sortie et le JSON de résultat. L'outil valide le format de retour, pour les GIF, vérifiez les blocs, assurez-vous d'au moins deux images, rapportez les dimensions réelles, le nombre d'images et la durée totale, puis écrivez le fichier. C'est une vérification de conteneur et de format, pas un décodage pixel complet ou une validation de qualité visuelle ; vérifiez l'image si une capacité d'aperçu est disponible.
  8. Fournissez un lien vers le fichier de sortie ; si le GIF n'est pas prévisualisé, ne prétendez pas que l'effet visuel est vérifié. Si le nombre d'images ne correspond pas, affichez un avertissement, ne le cachez pas.

Méthode d'exécution

Définissez d'abord $skillDir comme le chemin absolu de la racine du skill en fonction de l'emplacement de chargement, puis exécutez depuis le projet de travail de l'utilisateur. Voir le guide d'utilisation pour la configuration complète, les exemples d'images statiques / GIF et les paramètres.

$script = Join-Path $skillDir 'scripts\openai_image.py'
uv run --no-env-file --script "$script" --prompt 'Montagnes de Taïwan et brume matinale dans un style aquarelle original, sans texte' --output outputs\mountains.png --dry-run
  • --dry-run ne nécessite pas de clé API, n'appelle pas l'API et n'écrit pas de fichier ; affiche le prompt, ne l'utilisez pas avec du contenu confidentiel. uv peut encore télécharger un environnement d'exécution Python si nécessaire.
  • Ne retirez --dry-run qu'après avoir obtenu l'autorisation de dessiner. Si dotenv est nécessaire, remplacez --no-env-file par --env-file <chemin absolu du .env spécifié par l'utilisateur>.
  • Les GIF utilisent l'extension .gif, avec les paramètres --frames 9 --frame-duration-ms 200 possibles ; n=1 représente l'animation complète, pas le nombre d'images.
  • N'envoyez pas les paramètres response_format, stream, partial_images, output_compression etc., qui ne s'appliquent pas aux GIF.
  • Par défaut, aucune taille n'est spécifiée ; les tailles personnalisées doivent être des multiples de 16, avec un rapport hauteur/largeur entre 1:3 et 3:1. Les GIF ont leurs propres limites de taille de modèle, ne supposez pas que les tailles statiques s'appliquent toujours.
  • Ne fournissez pas --overwrite sauf si l'utilisateur accepte explicitement de remplacer un fichier existant.

Gestion des erreurs

  • Clé manquante : arrêtez, demandez à l'utilisateur de la définir dans son environnement ; ne collez pas la clé dans le dialogue.
  • HTTP 401 / 403 / 404 : vérifiez les clés, l'ID complet du modèle, la validation de l'organisation et les permissions GIF preview.
  • HTTP 400 : vérifiez les dimensions, le format, les paramètres d'images et le support du modèle ; ne dégradez pas automatiquement vers d'autres formats ou solutions de composition.
  • HTTP 429, 5xx, timeout ou déconnexion : la requête a pu être traitée et facturée ; signalez d'abord, puis renvoyez avec le consentement de l'utilisateur.
  • GIF non animé, mauvais format, Base64 invalide ou GIF incomplet : refusez la réussite, n'écrivez pas dans le fichier cible.
  • Créez automatiquement les dossiers parents si le chemin de sortie n'existe pas ; les fichiers existants ne sont pas remplacés par défaut. Le système de fichiers doit supporter les liens durs pour une sauvegarde atomique sans écrasement ; signalez une erreur si non supporté, ne remplacez pas silencieusement.

Validation

Les tests hors ligne utilisent un serveur HTTP simulé local, sans lire de vraie clé, sans connexion à OpenAI et sans frais :

$tests = Join-Path $skillDir 'tests\test_openai_image.py'
uv run --no-env-file --script "$tests"

Les tests ne signifient pas que l'accès au modèle / GIF preview a été obtenu ou que la validation de bout en bout payante a été réalisée. La génération réelle nécessite une clé valide et l'autorisation de l'utilisateur.

Appel dans l'agent

  • Copilot : utilisez /openai-image, ou dites simplement « Dessine une image avec OpenAI / Crée un GIF animé ».
  • Codex : utilisez $openai-image, ou demandez en langage naturel d'utiliser ce skill ; la configuration d'interface Codex n'affecte pas les commandes partagées.
  • Si introuvable, vérifiez l'emplacement d'installation du harness actuel, puis rouvrez le dialogue ou rechargez la liste des skills. Copilot CLI et Codex peuvent partager .agents/skills ; certains harness Copilot utilisent .github/skills. Déplacez le dossier complet, ne copiez pas un skill du même nom à plusieurs endroits scannés simultanément.

Références officielles

Les paramètres d'implémentation sont basés sur la documentation officielle consultée le 2026-11-09 ; l'accès aux modèles, les limites et les prix peuvent changer.

Skills associés