Compétence de Génération d'Images pour Microsoft Foundry MAI-Image
Génère ou modifie des images pour le projet en cours (par exemple, assets web, assets de jeu, maquettes UI, maquettes de produits, wireframes, design de logo, images photoréalistes ou infographies) avec les déploiements MAI-Image dans Microsoft Foundry.
Dans ce fichier, <skill-dir> désigne le répertoire qui contient ce SKILL.md.
Mode d'exécution et règles
Cette compétence utilise le CLI fourni dans <skill-dir>/scripts/image_gen.js. L'hôte de l'agent ne fournit pas d'outils intégrés de génération ou de visualisation d'images pour ce flux de travail, donc ne référencez pas et n'essayez pas d'utiliser des outils intégrés inexistants.
Le CLI expose trois sous-commandes :
generateeditgenerate-batch
Règles :
- Utilisez
scripts/image_gen.jspour les demandes normales de génération et de modification d'images. - Le CLI ne prend en charge que les modèles de la série MAI-Image. Ne lui faites jamais passer GPT Image, DALL-E ou d'autres modèles.
- Le déploiement par défaut est
IMAGEGEN_MAI_IMAGE_DEPLOYMENT, ouMAI-Image-2.6-Flashlorsqu'il n'est pas défini. Ne passez pas silencieusement à un autre déploiement. Demandez d'abord à l'utilisateur, sauf si l'utilisateur a déjà explicitement demandé ce modèle. - Les modèles MAI Image renvoient toujours un PNG opaque. Pour les images transparentes, utilisez le flux de travail chroma-key ci-dessous et informez l'utilisateur que le détourage est effectué localement.
- Le mot
batchseul ne nécessite pas l'utilisation degenerate-batch. Utilisezgenerate-batchlorsqu'une demande multi-assets est naturellement représentée comme un lot JSONL ; sinon, exécutez des commandes CLI individuelles. - Les appels API en direct nécessitent des identifiants MAI et un accès réseau.
- Utilisez le flux de travail fourni
scripts/image_gen.js. Ne créez pas d'exécuteurs SDK ponctuels. - Ne modifiez jamais
scripts/image_gen.js. Si quelque chose manque, demandez à l'utilisateur avant de faire quoi que ce soit d'autre.
Politique de sortie :
- Écrivez les assets générés directement dans le chemin demandé, ou dans
output/imagegen/lorsque l'utilisateur ne spécifie pas de chemin. - Si l'image est destinée au projet en cours, enregistrez l'image finale sélectionnée dans l'espace de travail avant de terminer.
- Ne remplacez pas un asset existant sauf si l'utilisateur a explicitement demandé un remplacement ; sinon, créez un nom de fichier versionné comme
hero-v2.pngouitem-icon-edited.png.
Les conseils partagés pour les prompts se trouvent dans references/prompting.md et references/sample-prompts.md.
Documentation et ressources CLI :
references/cli.mdreferences/image-api.mdreferences/codex-network.mdscripts/image_gen.js
Assistant de post-traitement local :
<skill-dir>/scripts/remove_chroma_key.js: supprime un fond chroma-key plat d'une image générée et écrit un PNG avec canal alpha. Préférez l'échantillonnage automatique de la clé, le mat doux et le despill pour des bords anti-aliasés.
Quand utiliser
- Générer une nouvelle image (art conceptuel, photo de produit, couverture, bannière de site web, affiche)
- Générer une nouvelle image qui dépend d'informations réelles actuelles (utilisez
--web-grounding) - Modifier une image existante (suppression ou remplacement d'objet, changements d'attributs, inpainting, mises à jour de texte, changements d'éclairage ou de météo, nettoyage d'artefacts)
- Combiner jusqu'à cinq images de référence en un seul résultat (cohérence de produit, de personnage ou d'actif de marque)
- Produire de nombreux assets ou variantes pour une tâche
Quand ne pas utiliser
- Étendre ou faire correspondre un ensemble existant d'icônes SVG/vectorielles, un système de logo ou une bibliothèque d'illustrations dans le dépôt
- Créer des formes simples, des diagrammes, des wireframes ou des icônes qui sont mieux produits directement en SVG, HTML/CSS ou canvas
- Effectuer une petite modification d'asset local au projet alors que le fichier source existe déjà dans un format natif modifiable
- Toute tâche où l'utilisateur souhaite clairement une sortie native déterministe (code) plutôt qu'un bitmap généré
- Sortie plus grande qu'environ 1,5K (la limite de MAI-Image-2.6 est de 2 359 296 pixels, par exemple
1536x1536) ; informez l'utilisateur de la limite au lieu de mettre à l'échelle silencieusement
Arbre de décision
Pensez à deux questions distinctes :
- Intention : s'agit-il d'une nouvelle image ou d'une modification d'une image existante ?
- Stratégie d'exécution : s'agit-il d'un seul asset ou de plusieurs assets/variantes ?
Intention :
- Si l'utilisateur souhaite modifier une image existante tout en en préservant des parties, traitez la demande comme une modification (edit).
- Si l'utilisateur fournit des images comme références de style, de composition, d'ambiance ou de sujet et souhaite qu'elles soient reflétées dans le résultat, utilisez edit avec ces images comme références (l'API MAI generations n'accepte pas d'images).
- Si l'utilisateur ne fournit aucune image, traitez la demande comme une génération (generate).
Sémantique de modification :
- Le mode edit du CLI accepte un à cinq fichiers PNG ou JPEG locaux via des flags
--imagerépétés. - Si l'utilisateur fournit des images jointes ou des références de la conversation, enregistrez-les d'abord localement si l'environnement le permet ; sinon, demandez à l'utilisateur les chemins de fichiers locaux.
- L'ordre des images est significatif, étiquetez donc chaque image par son index et son rôle dans le prompt.
- Pour les modifications, préservez agressivement les invariants et enregistrez de manière non destructive par défaut.
- Les modifications ne sont pas documentées pour
MAI-Image-2etMAI-Image-2e, et le CLI les bloque ; utilisez un déploiement MAI-Image-2.5 ou MAI-Image-2.6 pour les modifications.
Stratégie d'exécution :
- Utilisez la sous-commande
generate-batchdu CLI pour de nombreux prompts/assets lorsque le lot JSONL est le flux de travail le plus clair. - L'API MAI renvoie une image par requête et n'a pas de paramètre
n. Pour les variantes, exécutez des commandes séparées ou des tâches batch séparées avec des nomsoutdistincts. - Les limites de débit sont faibles (par exemple 6 requêtes par minute pour
MAI-Image-2.6-Flashau Niveau 1). Conservez--concurrencyà la valeur par défaut de 2, sauf si l'utilisateur connaît son quota.
Supposons que l'utilisateur souhaite une nouvelle image, sauf s'il demande clairement de modifier une image existante.
Flux de travail
- Décidez de la sous-commande CLI :
generate,editougenerate-batch. - Décidez si la sortie est uniquement un aperçu ou destinée à être consommée par le projet en cours.
- Décidez de la stratégie d'exécution : asset unique vs commandes CLI répétées vs
generate-batchdu CLI. - Rassemblez les entrées à l'avance : prompt(s), texte exact (textuel), contraintes/liste d'évitement, taille cible ou rapport d'aspect, et toutes les images d'entrée.
- Pour chaque image d'entrée, étiquetez son rôle explicitement :
- image de référence
- cible de modification
- entrée de support/insertion/style/composition
- Si l'utilisateur a demandé une photo, illustration, sprite, image de produit, bannière ou autre actif explicitement de type raster, utilisez cette compétence plutôt que de substituer des espaces réservés SVG/HTML/CSS. Si la demande concerne une icône, un logo ou un graphique UI qui devrait correspondre aux assets SVG/vecteurs/code existants dans le dépôt, préférez modifier ces derniers directement.
- Augmentez le prompt en fonction de la spécificité :
- Si le prompt de l'utilisateur est déjà spécifique et détaillé, normalisez-le en un cahier des charges clair sans ajouter d'exigences créatives.
- Si le prompt de l'utilisateur est générique, n'ajoutez une augmentation de qualité que si elle améliore matériellement la qualité de la sortie.
- Choisissez la taille. Utilisez
--size LARGEURxHAUTEURpour une cible connue, ou--auto-aspect-ratio(famille MAI-Image-2.6) lorsque la composition doit décider. Ajoutez--web-grounding(famille MAI-Image-2.6) lorsque le prompt dépend d'entités, lieux ou événements réels actuels. - Exécutez
scripts/image_gen.jsavec le déploiement par défaut. - Pour les demandes de sortie transparente, suivez le flux de travail chroma-key ci-dessous.
- Inspectez les sorties et validez : sujet, style, composition, précision du texte et éléments invariants/à éviter.
- Itérez avec un seul changement ciblé, puis revérifiez.
- Pour un travail d'aperçu uniquement, écrivez dans
output/imagegen/sauf si l'utilisateur a demandé un emplacement différent. - Pour un travail lié au projet, écrivez l'artefact dans l'espace de travail et mettez à jour tout code ou référence consommateur.
- Pour les lots ou les demandes multi-assets, persistez chaque livrable final demandé dans l'espace de travail, sauf si l'utilisateur a explicitement demandé de garder les sorties uniquement en aperçu. Les variantes rejetées n'ont pas besoin d'être conservées, sauf demande.
- Utilisez la documentation CLI pour le déploiement, la taille,
auto_aspect_ratio,web_grounding, les chemins de sortie et la configuration réseau. - Signalez toujours le(s) chemin(s) final(aux) enregistré(s) pour tout asset lié à l'espace de travail, ainsi que le prompt final ou l'ensemble de prompts.
Demandes d'image transparente
Les modèles MAI Image renvoient toujours un PNG opaque et n'ont pas d'option de fond transparent. Créez des assets transparents avec une image source chroma-key et une suppression locale.
Séquence :
-
Utilisez
scripts/image_gen.js generate(oueditpour une image existante) pour placer le sujet demandé sur un fond chroma-key solide parfaitement plat. -
Choisissez une couleur de clé qui a peu de chances d'apparaître dans le sujet : par défaut
#00ff00, utilisez#ff00ffpour les sujets verts et évitez#0000ffpour les sujets bleus. -
Conservez l'image source chroma-key dans l'espace de travail ou dans
tmp/imagegen/. -
Exécutez l'assistant fourni :
node "<skill-dir>/scripts/remove_chroma_key.js" \ --input <source> \ --out <final.png> \ --auto-key border \ --soft-matte \ --transparent-threshold 12 \ --opaque-threshold 220 \ --despill -
Validez que la sortie a un canal alpha, des coins transparents, une couverture plausible du sujet et aucune frange évidente de la couleur de la clé. Compositez-la sur un fond clair et un fond sombre pour vérifier les halos. Si une fine frange persiste, réessayez une fois avec
--edge-contract 1; utilisez--edge-feather 0.25uniquement lorsque le bord est visiblement en escalier et que le sujet n'est ni brillant ni réfléchissant. -
Enregistrez le PNG alpha final dans le projet si l'asset est lié au projet.
Formulez les demandes chroma-key comme ceci :
Créez le sujet demandé sur un fond chroma-key solide parfaitement plat #00ff00 pour la suppression d'arrière-plan.
L'arrière-plan doit être d'une seule couleur uniforme, sans ombres, dégradés, texture, reflets, plan de sol ou variation d'éclairage.
Gardez le sujet complètement séparé de l'arrière-plan avec des bords nets et un espacement généreux.
N'utilisez pas #00ff00 dans le sujet.
Pas d'ombre portée, d'ombre de contact, de reflet, de filigrane ni de texte, sauf demande explicite.
Le chroma-key convient mal aux cheveux, fourrure, plumes, fumée, verre, liquides, matériaux transparents, objets réfléchissants et ombres douces. Informez l'utilisateur de cette limite avant de promettre un détourage propre pour ces sujets.
Augmentation du prompt
Reformatez les prompts utilisateur en un cahier des charges structuré et orienté production. Rendez l'objectif de l'utilisateur plus clair et plus actionnable, mais n'ajoutez pas aveuglément des détails.
Traitez ceci comme un guide de mise en forme du prompt, pas un schéma fermé. N'utilisez que les lignes utiles et ajoutez une courte ligne étiquetée supplémentaire lorsqu'elle améliore matériellement la clarté.
Politique de spécificité
Utilisez la spécificité du prompt de l'utilisateur pour décider du degré d'augmentation approprié :
- Si le prompt est déjà spécifique et détaillé, préservez cette spécificité et normalisez-le/seulement structurez-le.
- Si le prompt est générique, vous pouvez ajouter une augmentation de qualité lorsqu'elle améliorera matériellement le résultat.
Augmentations autorisées :
- indices de composition ou de cadrage
- indices de niveau de finition ou d'utilisation prévue
- conseils pratiques de mise en page
- concrétisation raisonnable de la scène qui soutient la demande énoncée
Augmentations non autorisées :
- personnages ou objets supplémentaires qui ne sont pas impliqués par la demande
- noms de marque, slogans, palettes ou rebondissements narratifs qui ne sont pas impliqués
- placement arbitraire d'un côté spécifique, sauf si la mise en page environnante le prend en charge
Taxonomie des cas d'utilisation (slugs exacts)
Classez chaque demande dans l'un de ces compartiments et conservez le slug cohérent entre les prompts et les références.
Generate :
- photorealistic-natural : scènes de style de vie candides/éditoriales avec texture réelle et éclairage naturel.
- product-mockup : plans de produits/emballages, imagerie catalogue, concepts de marchandise.
- ui-mockup : maquettes d'interface d'application/web et wireframes ; spécifiez la fidélité souhaitée.
- infographic-diagram : diagrammes/infographies avec mise en page structurée et texte.
- scientific-educational : explicatifs de classe, diagrammes scientifiques et visuels d'apprentissage avec étiquettes et contraintes de précision requises.
- ads-marketing : concepts de campagne et créations publicitaires avec audience, position de marque, scène et slogan/texte exact.
- productivity-visual : visuels professionnels pour diapositives, graphiques, flux de travail et données denses.
- logo-brand : exploration de logo/marque, adapté aux vecteurs.
- illustration-story : bandes dessinées, art de livre pour enfants, scènes narratives.
- stylized-concept : art conceptuel axé sur le style, rendus 3D/stylisés.
- historical-scene : scènes historiquement précises/axées sur la connaissance du monde.
Edit :
- text-localization : traduire/remplacer le texte dans l'image, préserver la mise en page.
- identity-preserve : essayage, personne dans la scène ; verrouiller visage/corps/pose.
- precise-object-edit : supprimer/remplacer un élément spécifique (y compris les échanges intérieurs).
- lighting-weather : changements d'heure de la journée/saison/atmosphère uniquement.
- background-extraction : détourage propre via un fond chroma-key plat plus suppression locale avec
scripts/remove_chroma_key.js. - style-transfer : appliquer un style de référence tout en changeant le sujet/la scène.
- compositing : insertion/fusion multi-images avec éclairage/perspective assortis (jusqu'à cinq images).
- sketch-to-render : dessin/line art en rendu photoréaliste.
Schéma de prompt partagé
Utilisez le cahier des charges étiqueté suivant comme échafaudage de prompt partagé pour les deux modes de premier niveau :
Cas d'utilisation : <slug de taxonomie>
Type d'asset : <où l'asset sera utilisé>
Demande principale : <prompt principal de l'utilisateur>
Images d'entrée : <Image 1 : rôle ; Image 2 : rôle> (facultatif)
Scène/arrière-plan : <environnement>
Sujet : <sujet principal>
Style/médium : <photo/illustration/3D/etc>
Composition/cadrage : <large/resserré/plongée ; placement>
Éclairage/ambiance : <éclairage + ambiance>
Palette de couleurs : <notes de palette>
Matériaux/textures : <détails de surface>
Texte (textuel) : "<texte exact>"
Contraintes : <doit garder/doit éviter>
À éviter : <contraintes négatives>
Notes :
Type d'assetetImages d'entréesont un échafaudage de prompt, pas des flags CLI dédiés.Scène/arrière-planfait référence au cadre visuel.- Les notes d'exécution telles que la taille,
auto_aspect_ratio,web_groundinget les chemins de sortie appartiennent au chemin CLI, pas au texte du prompt.
Règles d'augmentation :
- Restez court.
- N'ajoutez que les détails nécessaires pour améliorer matériellement le prompt.
- Pour les modifications, listez explicitement les invariants (
ne changer que X ; garder Y inchangé). - Si un détail critique manque et bloque le succès, posez une question ; sinon, continuez.
Examen
…
[tronqué pour la traduction]