hatch-pet

Par openai · skills

Créez, réparez, validez, prévisualisez et empaquetez des spritesheets d'animaux de compagnie animés compatibles Codex à partir d'illustrations de personnages, de captures d'écran, d'images générées ou de références visuelles. À utiliser lorsqu'un utilisateur souhaite faire éclore un animal Codex, créer un animal personnalisé animé, ou construire un asset d'animal intégré avec un atlas 8x9, des cellules inutilisées transparentes, des prompts d'animation ligne par ligne, des contact sheets QA, des vidéos de prévisualisation et un packaging `pet.json`. Cette skill compose la system skill `$imagegen` installée pour la génération visuelle et utilise des scripts embarqués pour l'assemblage déterministe de spritesheets.

npx skills add https://github.com/openai/skills --skill hatch-pet

Hatch Pet

Aperçu

Créez un animal de compagnie animé compatible avec Codex à partir d'un concept, d'une ou plusieurs images de référence, ou des deux. Cette compétence gère la planification des prompts spécifiques aux animaux, les rangées d'animation, l'extraction de frames, la géométrie de l'atlas, l'assurance qualité, les aperçus et l'empaquetage. Elle délègue la génération visuelle à $imagegen.

Les entrées visibles par l'utilisateur sont facultatives. Si l'utilisateur omet un nom d'animal, déduisez-en un à partir du concept ou des noms de fichiers de référence ; si cela n'est pas possible, choisissez un nom court approprié. Si l'utilisateur omet une description, déduisez-en une à partir du concept ou des références. Si l'utilisateur omet les images de référence, générez d'abord l'animal de base à partir du texte, puis utilisez cet animal de base comme référence canonique pour chaque rangée d'animation.

Délégation de la génération

Utilisez $imagegen pour toute génération visuelle normale.

Avant de générer l'art de base, les rangées de strips ou les rangées de réparation, chargez et suivez la compétence de génération d'images installée :

${CODEX_HOME:-$HOME/.codex}/skills/.system/imagegen/SKILL.md

N'appelez pas directement l'API Image pour le chemin normal. Laissez $imagegen choisir son propre chemin intégré et ses propres règles de fallback CLI. Si $imagegen indique qu'un fallback nécessite une confirmation, demandez à l'utilisateur avant de continuer.

Lors de l'invocation de $imagegen à partir de cette compétence, passez le prompt d'animal de compagnie généré comme spécification visuelle faisant autorité. Ne l'enrobez pas dans le schéma de prompt partagé générique de $imagegen et n'ajoutez pas de polish supplémentaire, d'art héroïque, photo, produit ou augmentation de style illustration. Les prompts d'animaux de compagnie doivent rester laconiques, spécifiques aux sprites et orientés vers les animaux numériques ; ajoutez uniquement des étiquettes de rôle pour les images d'entrée et toute contrainte utilisateur essentielle.

Utilisez les scripts de cette compétence uniquement pour le travail déterministe : préparer les prompts et les manifestes, ingérer les sorties $imagegen sélectionnées, extraire les frames, valider les rangées, composer l'atlas final, créer des médias QA et empaqueter.

Limite dure : ne créez pas, ne dessinez pas, ne tilez pas, ne déformez pas, ne miroir pas ou ne synthétisez pas les visuels d'animaux de compagnie avec des scripts Python/Pillow locaux, SVG, canvas, HTML/CSS ou autre art natif du code comme substitut à $imagegen. Pour une exécution d'animal de compagnie normal, attendez-vous à jusqu'à 10 travaux de génération visuels : 1 animal de base plus 9 travaux de strip-rangée. La seule exception est running-left, qui peut être dérivée en miroir de running-right uniquement après que running-right a été généré, visuellement inspecté et explicitement approuvé comme sûr à miroir. Si le mirroring n'est pas approprié, générez running-left comme une rangée $imagegen normale fondée. Si ces appels sont trop coûteux, bloqués ou indisponibles, arrêtez-vous et expliquez le bloqueur au lieu de fabriquer des strips de rangée localement.

Ne marquez pas les travaux visuels comme complets en éditant imagegen-jobs.json, en copiant des fichiers dans decoded/, ou en écrivant des scripts d'aide qui remplissent les sorties de rangée. Utilisez record_imagegen_result.py pour les sorties $imagegen intégrées sélectionnées, ou generate_pet_images.py uniquement pour le fallback secondaire documenté. Les scripts déterministes ne peuvent traiter que les sorties visuelles déjà générées.

Seul le travail de base peut être en prompt uniquement. Chaque travail de rangée-strip généré via $imagegen doit utiliser les images d'entrée listées dans imagegen-jobs.json, y compris la référence de base canonique créée après l'enregistrement du travail de base. Traitez toute génération de rangée sans images de fondation attachées comme invalide.

Style des animaux numériques Codex

L'art d'animal par défaut doit correspondre aux animaux de compagnie numériques intégrés de l'application Codex : petites mascotes de style pixel-art-adjacent avec des proportions chibi compactes, des silhouettes lisibles et trapues, des contours sombres épais de 1-2 px, des bords en escalier/pixel visibles, des palettes limitées, un ombrage cel plat, des visages expressifs simples et de minuscules membres. Même si l'art de référence est plus détaillé, complexe ou réaliste, l'animal de compagnie généré doit être simplifié dans ce style.

NE GÉNÉREZ PAS d'illustration polie, rendu pictural, art clé anime, rendu 3D, traitement d'icône d'application brillante, fourrure réaliste ou texture de matériau, dégradés doux, anticrénelage haute détail et accessoires minuscules complexes. Les références plus détaillées que ceci doivent être simplifiées dans le style maison avant la génération de rangée.

Transparence et effets

Les rangées d'animaux de compagnie sont traitées en cellules transparentes 192x208, donc chaque pixel généré doit soit appartenir au sprite de l'animal de compagnie soit être nettement supprimable par chroma-key background. Préférez les changements de pose, d'expression et de silhouette aux effets décoratifs.

Les effets autorisés doivent satisfaire à tous ces éléments :

  • L'effet est pertinent pour l'état et aide à expliquer l'animation.
  • L'effet est physiquement attaché à, touchant ou chevauchant la silhouette de l'animal de compagnie, non flottant à proximité.
  • L'effet se trouve dans le même slot de frame que l'animal de compagnie et ne crée pas de composant de sprite séparé.
  • L'effet est opaque, à bords nets, style pixel, et utilise des couleurs non chroma-key.
  • L'effet est assez petit pour rester lisible à 192x208 sans encombrement.

Exemples d'effets autorisés : une larme touchant le visage, une petite bouffée de fumée touchant la boîte ou la tête, ou de minuscules étoiles chevauchant l'animal de compagnie lors d'une réaction échouée/étourdissante.

Évitez ceux-ci par défaut car ils cassent généralement le nettoyage de fond transparent ou l'extraction de composants :

  • marques de vague, arcs de mouvement, lignes de vitesse, traînées d'action, après-images, flou ou traînées
  • étoiles détachées, petites étincelles, ponctuation flottante, icônes flottantes, larmes tombantes, nuages de fumée séparés ou poussière lâche
  • ombres projetées, ombres de contact, ombres portées, ombres au sol ovales, patchs au sol, marques d'atterrissage, rafales d'impact, lueur, halo, aura ou effets transparents doux
  • texte, étiquettes, numéros de frame, grilles visibles, marques de guide, zones de cible, bulles de dialogue, bulles de pensée, panneaux UI, extraits de code, transparence en damier, arrière-plans blancs, arrière-plans noirs ou décor
  • couleurs adjacentes à chroma-key dans l'animal de compagnie, le prop, les effets, les surbrillances ou les ombres
  • pixels égarés, morceaux de contours déconnectés, speckle/bruit, parties du corps recadrées, poses chevauchantes, ou toute pose qui s'étend dans un slot de frame adjacent

Recommandations spécifiques à l'état :

  • waving : montrez la vague uniquement par la pose de la patte. Ne dessinez pas de marques de vague, d'arcs de mouvement, de lignes, d'étincelles ou de symboles autour de la patte.
  • jumping : montrez le mouvement vertical uniquement par la position du corps. Ne dessinez pas d'ombres, de poussière, de marques d'atterrissage, de rafales d'impact, de pads de rebond ou d'indices de sol.
  • failed : les larmes, les bouffées de fumée attachées ou les étoiles attachées sont autorisées si elles obéissent aux règles des effets autorisés ; ne utilisez pas de marques X rouges, de symboles flottants, de fumée détachée, d'étoiles détachées ou de gouttes de larmes séparées.
  • review : montrez la mise au point par la position, le clignement, les yeux, l'inclinaison de la tête ou la position de la patte. Ne ajoutez pas de loupes, de papiers, de code, UI, ponctuation ou de symboles sauf si ce prop existe déjà dans l'identité de l'animal de compagnie de base.
  • running-right, running-left et running : montrez la locomotion uniquement par le mouvement du corps, des membres et du prop. Ne dessinez pas de lignes de vitesse, de nuages de poussière, d'ombres de sol ou de traînées de mouvement.

Nomination des animaux de compagnie

Demandez à l'utilisateur un nom d'animal de compagnie s'il n'en a pas fourni et uniquement si la conversation le permet naturellement. Si poser la question ralentirait une demande d'exécution directe, choisissez un nom court approprié à partir du concept, de l'image de référence ou de la personnalité de l'animal de compagnie, puis utilisez ce nom de manière cohérente comme nom d'affichage et comme source pour le slug du dossier du package.

Bons exemples de style intégré :

  • Codex - Le compagnon Codex original.
  • Dewey - Un canard ordonné pour les journées calmes au travail.
  • Fireball - Énergie de chemin chaud pour une itération rapide.
  • Rocky - Une roche stable quand le diff devient grand.
  • Seedy - De petites pousses vertes pour les nouvelles idées.
  • Stacky - Une pile équilibrée pour le travail profond.
  • BSOD - Un minuscule gremlin d'écran bleu.
  • Null Signal - Signal silencieux du vide.

Plan de progression visible

Pour chaque exécution d'animal de compagnie, maintenez une checklist visible afin que l'utilisateur puisse voir où en est le travail. Créez la checklist avant de commencer, gardez une étape active à la fois et mettez-la à jour au fur et à mesure que chaque étape se termine.

Avant de créer la checklist, établissez le nom de l'animal de compagnie si possible. Utilisez le nom fourni par l'utilisateur si disponible ; sinon, déduisez un nom court approprié à partir du concept ou des références. Si le nom est trop long, non réglé ou inapproprié pour une checklist conviviale, utilisez your pet à la place.

Utilisez cette checklist pour une exécution d'animal normal, en remplaçant <Pet> par le nom de l'animal ou your pet :

  1. Préparation de <Pet>.
  2. Imaginer le look principal de <Pet>.
  3. Envisager les poses de <Pet>.
  4. Éclosion de <Pet>.

Ce que signifie chaque étape :

  • Préparation de <Pet>. Choisir ou confirmer le nom de l'animal de compagnie, la description, les images source et le dossier de travail.
  • Imaginer le look principal de <Pet>. Générer l'image de référence principale de l'animal de compagnie. C'est obligatoire pour les nouveaux animaux de compagnie, même si l'utilisateur ne fournit pas d'image, car elle devient la source visuelle de vérité.
  • Envisager les poses de <Pet>. Créer les rangées de poses, en commençant par idle et running-right pour confirmer que l'animal de compagnie a toujours une apparence cohérente. Miroir running-left uniquement si running-right fonctionne clairement lorsqu'il est inversé.
  • Éclosion de <Pet>. Transformer les poses approuvées en fichiers d'animal finaux, examiner la feuille de contact, les aperçus et les résultats de validation, corriger toutes les parties cassées, enregistrer pet.json et spritesheet.webp dans le dossier de l'animal de compagnie, puis indiquez à l'utilisateur où l'animal et les fichiers QA ont été enregistrés.

Ne marquez une étape comme terminée que lorsque le fichier, l'image ou la décision réel existe. Si c'est juste une réparation, commencez par la première étape pertinente au lieu de redémarrer la checklist entière.

Flux de travail par défaut

  1. Préparez un dossier d'exécution d'animal de compagnie et un manifeste de travail imagegen :
SKILL_DIR="${CODEX_HOME:-$HOME/.codex}/skills/hatch-pet"
python "$SKILL_DIR/scripts/prepare_pet_run.py" \
  --pet-name "<Name>" \
  --description "<one sentence>" \
  --reference /absolute/path/to/reference.png \
  --output-dir /absolute/path/to/run \
  --pet-notes "<stable pet description>" \
  --style-notes "<style notes>" \
  --force

Tous les arguments ci-dessus sont facultatifs sauf les flags nécessaires pour exprimer les contraintes utilisateur. Pour les demandes texte uniquement, passez le concept via --pet-notes et omettez --reference ; prepare_pet_run.py déduira un nom, une description, une clé chroma et un répertoire de sortie selon les besoins.

  1. Inspectez les prochains travaux $imagegen prêts :
python "$SKILL_DIR/scripts/pet_job_status.py" --run-dir /absolute/path/to/run
  1. Pour chaque travail prêt, invoquez $imagegen avec :
  • le fichier de prompt listé dans imagegen-jobs.json
  • chaque image d'entrée listée pour le travail, avec son étiquette de rôle
  • le chemin image_gen intégré par défaut sauf si $imagegen lui-même routage autrement

Le travail de base doit d'abord se terminer. Si les références utilisateur existent, le travail de base les utilise. Si aucune référence n'existe, le travail de base peut être prompt uniquement. Après enregistrement de la base, record_imagegen_result.py écrit decoded/base.png et references/canonical-base.png ; tous les travaux de rangée utilisent les références originales si présentes plus ces images de base canoniques.

prepare_pet_run.py crée également 9 images de guide de mise en page spécifiques aux rangées sous references/layout-guides/, une par état d'animation. Les travaux de rangée attachent le guide correspondant comme entrée disposition uniquement afin que le modèle puisse suivre le nombre correct de frames, l'espacement, le centrage et le remplissage de sécurité. Traitez ces guides comme des références de construction invisibles : le strip de rangée généré ne doit pas inclure de boîtes visibles, de bordures, de marques de centre, d'étiquettes, de couleurs de guide ou d'arrière-plan de guide.

Lors de la génération de strips de rangée, gardez le verrouillage d'identité dans le prompt de rangée faisant autorité : ne repensez pas l'animal de compagnie et préservez la même forme de tête, les traits du visage, les marquages, la palette, le prop, le poids du contour, les proportions du corps et la silhouette. Une rangée qui ressemble à un animal de compagnie connexe mais différent est échouée même si l'assurance qualité géométrique déterministe réussit.

Générez et enregistrez running-right avant de décider comment compléter running-left. Inspectez running-right par rapport à la base et les références. Si l'animal de compagnie est visuellement symétrique suffisamment pour qu'un miroir horizontal préserve l'identité, le placement du prop, la main, les marquages, l'éclairage, les détails sans texte et la sémantique de direction, dérivez running-left avec :

python "$SKILL_DIR/scripts/derive_running_left_from_running_right.py" \
  --run-dir /absolute/path/to/run \
  --confirm-appropriate-mirror \
  --decision-note "<why mirroring preserves this pet's identity>"

S'il y a un marquage asymétrique spécifique au côté, du texte lisible, un logo non-miroir, un prop avec une main, un accessoire unilatéral, un indice d'éclairage ou une pose spécifique à la direction qui deviendrait incorrect lorsqu'il est inversé, ne miroir pas. Générez running-left avec $imagegen en utilisant son prompt de rangée et toutes les images de fondation listées, y compris decoded/running-right.png comme référence de démarche.

Pour le chemin intégré, enregistrez l'image source sélectionnée à partir de $CODEX_HOME/generated_images/.../ig_*.png. N'enregistrez pas les fichiers à partir du répertoire d'exécution, tmp/, des fixtures faites à la main, des dossiers de rangée déterministes ou des copies post-traitées comme sources de travail visuels.

  1. Après avoir sélectionné une sortie générée pour un travail, ingérez-la :
python "$SKILL_DIR/scripts/record_imagegen_result.py" \
  --run-dir /absolute/path/to/run \
  --job-id <job-id> \
  --source /absolute/path/to/generated-output.png

Cela copie l'image vers le chemin décodé exact attendu par le pipeline déterministe et enregistre les métadonnées source dans imagegen-jobs.json.

  1. Lorsque tous les travaux sont terminés, finalisez :
python "$SKILL_DIR/scripts/finalize_pet_run.py" \
  --run-dir /absolute/path/to/run

Sortie attendue :

run/
  pet_request.json
  imagegen-jobs.json
  prompts/
  decoded/
  frames/frames-manifest.json
  final/spritesheet.png
  final/spritesheet.webp
  final/validation.json
  qa/contact-sheet.png
  qa/review.json
  qa/run-summary.json
  qa/videos/*.mp4

La sortie du package est écrite en dehors du répertoire d'exécution par défaut. Si CODEX_HOME est défini, utilisez-le ; sinon utilisez $HOME/.codex.

${CODEX_HOME:-$HOME/.codex}/pets/<pet-name>/
  pet.json
  spritesheet.webp

Examinez qa/contact-sheet.png, qa/review.json, final/validation.json et qa/videos/ avant d'accepter l'animal de compagnie.

La validation déterministe est nécessaire mais pas suffisante. Avant de déclarer l'animal de compagnie terminé, inspectez visuellement la feuille de contact pour la cohérence d'identité. Bloquez l'acceptation si une rangée change d'espèce/type de corps, de visage, de marquages, de palette, de conception de prop, de côté du prop de manière inattendue, ou de silhouette globale.

Génération de rangée par sous-agent

Après que le travail de base a été enregistré et references/canonical-base.png existe, la génération visuelle de strip-rangée doit utiliser des sous-agents sauf si l'utilisateur dit explicitement de ne pas utiliser de sous-agents pour cette session. Avant la génération de rangée, déclarez que les sous-agents sont utilisés et quels travaux de rangée sont délégués. Si les sous-agents ne peuvent pas être générés car l'environnement actuel ou la politique d'outils les bloque, arrêtez-vous avant la génération de strip-rangée, expliquez le bloqueur et demandez une direction utilisateur explicite avant de continuer séquentiellement.

L'agent parent doit posséder les écritures de manifeste et d'empaquetage.

Flux par défaut :

  1. Le parent exécute prepare_pet_run.py.
  2. Le parent génère et enregistre base.
  3. Le parent exécute pet_job_status.py.
  4. Le parent génère des sous-agents pour idle et running-right d'abord en tant que contrôles d'identité et de démarche.
  5. Le parent enregistre les résultats idle et running-right sélectionnés retournés par les sous-agents.
  6. Le parent décide si running-left est sûr à dériver par miroir ; si ce n'est pas le cas, le parent le traite comme un travail de rangée normal fondée délégué à un sous-agent.
  7. Le parent génère des sous-agents pour chaque travail de génération d'image de rangée non dérivée restante.
  8. Chaque sous-agent reçoit le prompt de rangée et chaque chemin d'image d'entrée listé, invoque $imagegen et retourne uniquement le chemin source sélectionné $CODEX_HOME/generated_images/.../ig_*.png.
  9. Seul le parent exécute record_imagegen_result.py, derive_running_left_from_running_right.py, la mise en file d'attente de réparation, la finalisation, l'assurance qualité et l'empaquetage.

Limite d'écriture du sous-agent : ne laissez pas les sous-agents éditer imagegen-jobs.json, copier des fichiers dans decoded/, exécuter record_imagegen_result.py, exécuter derive_running_left_from_running_right.py, exécuter finalize_pet_run.py ou empaqueter l'animal de compagnie. Cela évite les races de manifeste et maintient les contrôles de provenance centralisés.

Contrat de remise du sous-agent :

  • Donnez à chaque sous-agent exactement un travail de rangée sauf si vous groupez intentionnellement des rangées simples adjacentes.
  • Incluez l'ID de rangée, le chemin de fichier de prompt absolu, le texte de prompt complet ou une instruction pour lire ce fichier de prompt exact, et chaque chemin d'image d'entrée avec son étiquette de rôle à partir de imagegen-jobs.json.
  • Rappelez explicitement au sous-agent que les règles de transparence et d'effets du prompt sont obligatoires : pas d'effets détachés, pas de marques de vague pour waving, pas de lignes de vitesse ou de poussière pour les rangées en cours d'exécution, et uniquement les larmes/fumée/étoiles attachées opaques lorsqu'autorisé par le prompt d'état.
  • Dites au sous-agent d'inspecter le candidat généré pour le nombre de frames, la cohérence d'identité, l'arrière-plan chroma-key plat propre, l'espacement sûr et les effets détachés interdits avant de le retourner.
  • Dites au sous-agent de retourner uniquement le chemin source original sélectionné $CODEX_HOME/generated_images/.../ig_*.png plus une note QA d'une phrase. Le parent décide d'enregistrer ou de réparer.

Utilisez ce modèle pour chaque sous-agent :

Générez la rangée `<row-id>` pour cette exécution hatch-pet.

Répertoire d'exécution : <absolute run dir>
Fichier de prompt : <absolute prompt file>
Images d'entrée :
- <absolute path> — <role>
- <absolute path> — <role>

Lisez et suivez le prompt de rangée exactement, y compris les règles de transparence et d'artefacts. Utilisez `$imagegen` uniquement ; n'utilisez pas de scripts locaux pour dessiner, tuiler, éditer ou synthétiser des sprites.

Avant de retourner, vérifiez visuellement :
- nombre exact de frames requis
- même identité d'animal de compagnie que la base canonique
- arrière-plan chroma-key plat propre
- poses complètes, séparées, non recadrées
- pas d'effets détachés interdits ou artefacts qui traversent les slots

Ne modifier pas les manifestes, ne copier dans décoded, n'enregistrer les résultats, ne miroir les rangées, ne finaliser, ne réparer ou n'empaqueter. Retourner uniquement :
selected_source=/absolute/path/to/$CODEX_HOME/generated_images/.../ig_*.png
qa_note=<one sentence>

Pas de fallback séquentiel silencieux : si les sous-agents ne peuvent pas être utilisés pour la génération visuelle de strip-rangée, arrêtez-vous et demandez une direction utilisateur explicite avant de continuer sans eux. Seule une instruction utilisateur explicite comme « ne pas utiliser de sous-agents » ou « exécuter ceci séquentiellement » autorise un chemin normal de génération de rangée séquentielle. La réponse finale doit signaler quels travaux de rangée ont été délégués à des sous-agents et lesquels, le cas échéant, ont été miroir ou réparés par le parent.

Flux de travail de réparation

Si la finalisation s'arrête parce que l'assurance qualité de rangée a échoué, mettez en file d'attente les travaux de réparation ciblés :

python "$SKILL_DIR/scripts/queue_pet_repairs.py" \
  --run-dir /absolute/path/to/run

Ensuite, répétez la boucle d'ingestion $imagegen et record_imagegen_result.py pour chaque travail de rangée réouvert. Régénérez l'étendue d'échec la plus petite : la rangée qui a échoué, pas l'ensemble de la feuille.

Pour les réparations d'identité, utilisez l'image de base canonique, les références originales, la feuille de contact et la note d'échec exacte de rangée comme contexte de fondation. Réparez uniquement la rangée échouée tout en préservant l'identité canonique de l'animal de compagnie.

Fallback secondaire de génération d'images

scripts/generate_pet_images.py est un fallback secondaire pour cette compétence.

Utilisez-le uniquement lorsque le système d'habileté $imagegen installé est indisponible ou ne peut pas être invoqué dans l'environnement actuel. La création d'animal normal doit déléguer la génération visuelle à $imagegen, car $imagegen possède la politique de génération d'images intégrée en premier et son propre comportement de fallback CLI.

Exécutez le fallback secondaire uniquement après avoir expliqué pourquoi $imagegen ne peut pas être utilisé :

python "$SKILL_DIR/scripts/generate_pet_images.py" \
  --run-dir /absolute/path/to/run \
  --model gpt-image-2 \
  --states all

Le fallback secondaire nécessite OPENAI_API_KEY.

Règles

  • Conservez $imagegen comme couche de génération primaire.
  • Conservez les images de référence attachées/visibles pour $imagegen chaque fois que le chemin choisi les supporte.
  • Attachez l'image de guide de mise en page references/layout-guides/<state>.png de la rangée à chaque travail de strip-rangée comme guide disposition uniquement, et n'acceptez pas les sorties qui copient les pixels de guide.
  • Utilisez des sous-agents pour la génération visuelle de strip-rangée après que le parent enregistre l'image de base. Le parent peut générer la base, mais les travaux de strip-rangée appartiennent aux sous-agents sauf si l'utilisateur dit explicitement de ne pas utiliser de sous-agents pour cette session.
  • Générez chaque travail visuel normal avec $imagegen : la base plus tous les strips de rangée qui ne sont pas des dérivations miroir running-left explicitement approuvées.
  • Traitez uniquement le travail de base comme éligible pour la génération prompt uniquement ; chaque travail de rangée doit attacher ses images de fondation listées.
  • Déléguez running-right d'abord, puis miroir running-left uniquement lorsque l'inspection visuelle confirme qu'un miroir préserve l'identité et la sémantique ; sinon déléguez running-left comme une rangée $imagegen normale fondée.
  • Ne remplacez jamais les strips de rangée dessinés, tuilés, transformés ou générés par code localement pour les sorties $imagegen manquantes.
  • Ne mutez jamais manuellement imagegen-jobs.json pour prétendre qu'un travail visuel s'est terminé.
  • Ne vous fiez pas aux images générées pour la géométrie exacte de l'atlas ; utilisez les scripts déterministes de cette compétence.
  • Utilisez la clé chroma stockée dans pet_request.json ; ne forcez pas un écran vert fixe.
  • Gardez la silhouette, le visage, les matériaux, la palette et les props de l'animal cohérents dans toutes les rangées.
  • Appliquez les règles de transparence et d'effets ci-dessus dans chaque base, rangée et prompt de réparation.
  • Traitez la dérive d'identité visuelle comme un bloqueur même lorsque qa/review.json et final/validation.json n'ont pas d'erreurs.
  • Traitez une feuille de contact qui montre des références recadrées, des tuiles répétées, des arrière-plans de cellules blanches ou des fragments non-sprite comme échouée.
  • Traitez les effets détachés interdits, les artefacts adjacents à chroma-key, les ombres, les lueurs, les traînées, la poussière, les marques d'atterrissage, les marques de vague, les lignes de vitesse ou les traînées de mouvement comme des rangées échouées.
  • Traitez les erreurs qa/review.json comme des bloqueurs. Les avertissements nécessitent un examen visuel.

Critères d'acceptation

  • L'atlas final est PNG ou WebP, 1536x1872, capable de transparence et basé sur des cellules 192x208.
  • Les cellules utilisées ne sont pas vides et les cellules inutilisées sont entièrement transparentes.
  • L'atlas suit les nombres de rangée/frame dans references/animation-rows.md.
  • La feuille de contact et les vidéos d'aperçu ont été produites sauf si explicitement ignorées.
  • qa/review.json n'a pas d'erreurs.
  • L'examen rangée par rangée confirme que les cycles d'animation sont suffisants pour l'application Codex.
  • ${CODEX_HOME:-$HOME/.codex}/pets/<pet-name>/pet.json et ${CODEX_HOME:-$HOME/.codex}/pets/<pet-name>/spritesheet.webp sont organisés ensemble pour les animaux de compagnie personnalisés.

Skills similaires