CommunityImagegithub.com

OmniSprite 🎮✨ — commande `/sprite`

Crée des sprites, tilesets et animations de pixel art grands et détaillés dans Aseprite via le serveur pixel-mcp.

Qu'est-ce que sprite` ?

OmniSprite est une compétence experte pour générer des sprites de pixel art, des tilesets et des cycles d'animation directement dans Aseprite via le serveur `pixel-mcp`. Cette compétence est conçue pour les développeurs et artistes souhaitant produire des assets de jeux vidéo cohérents, des icônes aux scènes complètes, en suivant un flux de travail rigoureux. Elle impose des niveaux de résolution (S, M, L, XL, Cena), l'utilisation d'une palette avant le dessin, une orientation fixe (vue de côté, 3/4, de face, isométrique) et des couches structurées (`bg`, `base`, `shade`, `light`, `outline`, `fx`). OmniSprite propose 12 styles prédéfinis (8-bit, 16-bit, HD pixel, dark fantasy, etc.) et gère l'animation (cycles idle, walk, attack) avec exportation en PNG, GIF et spritesheet. La compétence vérifie d'abord que l'environnement est prêt : présence des outils MCP, installation d'Aseprite (avec possibilité de le compiler depuis les sources si nécessaire), puis procède à un briefing pour cerner le besoin (via la commande `/sprite` ou la compétence auxiliaire `grill-me`). Le flux de création est séquencé : palette → orientation → silhouette → couleurs plates → ombrage → texture → contour → antialiasing → effets → révision visuelle obligatoire (avec export et contrôle qualité). Un système de grille ASCII converti en pixels (`grid_to_pixels.py`) permet de gérer les formes organiques complexes. Les pièges techniques (chemins avec barres obliques, format JSON-RPC, indexation des frames) sont documentés pour éviter les erreurs courantes.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LimaEdu-7x/omni-sprite/tree/HEAD

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

OmniSprite 🎮✨ — commande /sprite

Flux chirurgical de pixel art sur le serveur pixel-mcp d’Aseprite (catalogue d’outils : references/mcp-tools.md). Répondez à l’utilisateur dans sa langue.

Commande /sprite

Utilisation : /sprite [description] [flags]. Sans arguments, demandez quoi créer.

FlagEffet
--tamanho S|M|L|XL|cenaniveau de taille (par défaut L, 128×128)
--estilo <preset>un des 12 styles de references/styles.md (par défaut hd-pixel)
--vista lateral|3-4|frontal|isovue verrouillée (par défaut latérale, tournée vers la droite)
--anim idle,walk,attack,…cycles à animer (recettes dans references/animation.md)
--paleta <slug-lospec|#hex,#hex|ref:caminho>palette donnée, depuis Lospec ou dérivée d’une image
--doctordiagnostic uniquement : Aseprite trouvé ? MCP enregistré ? (étapes de l’item 0)
--compilarforce le flux de compilation d’Aseprite depuis les sources (item 0.4a)

Les flags renseignés dispensent de la question correspondante du briefing ; ce qui manque va dans la série de grill-me. Ex. : /sprite cavaleiro dark fantasy --tamanho L --anim idle,walk,attack.

0. Prérequis (plug and play ; vérifiez une fois et corrigez ce qui manque)

  1. Les outils MCP sont-ils visibles ? (create_canvas, draw_pixels, export_sprite…). Si oui, allez à l’étape 1.
  2. Sinon, trouvez Aseprite : lancez scripts/find-aseprite.ps1 (Windows) ou scripts/find-aseprite.sh. Sortie 0 = chemin affiché ; sortie 2 = non trouvé.
  3. Aseprite trouvé → lancez scripts/install-mcp.ps1 / .sh (détecte automatiquement, télécharge la version fixe de pixel-mcp, vérifie le SHA-256 et enregistre). Demandez à l’utilisateur de redémarrer le client et continuez.
  4. Aseprite NON trouvé → demandez à l’utilisateur (une question, avec options) ; ne supposez pas :
    • « Aseprite n’est pas installé. Voulez-vous que je télécharge son code depuis GitHub, que je le compile et que je le configure ? (nécessite git, CMake, Ninja et un compilateur C++ ; prend environ 10–40 min ; la licence d’Aseprite permet la compilation pour usage personnel, pas la redistribution du binaire.) »
    • Options : (a) Oui, compile pour moi (recommandé) · (b) Je l’installe moi-même (Steam / aseprite.org / itch.io ; payant, soutient le développeur) · (c) Ignorer Aseprite et utiliser le plan B avec Python/Pillow (pas de fichier .aseprite, mêmes règles de style).
    • En (a) : lancez scripts/build-aseprite.ps1 (Windows) ou scripts/build-aseprite.sh. Si un prérequis manque, dites lequel et proposez de l’installer avec le gestionnaire de paquets de la plateforme (winget / brew / apt) après avoir demandé. En cas d’échec, suivez references/build-aseprite.md. Terminé, exécutez l’étape 3.
  5. Ne dessinez jamais avant de clore le briefing (section 1). Réponses manquantes → demandez, ou utilisez la valeur par défaut et dites-la.

1. Briefing (utilisez grill-me si installée)

Posez les questions ci-dessous en un court tour de grill-me (toutes les questions indépendantes ensemble, chacune avec une réponse recommandée, pour « oui » accepter) ; si la compétence n’existe pas, demandez normalement. Ne posez que ce qui manque.

QuestionValeur par défaut si sans réponse
Qu’est-ce que c’est, en une phrase + ambiance ?–
Où sera-t-il utilisé (genre du jeu, UI, impression) ? Caméra : latérale / 3/4 top-down / isométrique / frontalevue latérale
Style (voir references/styles.md)hd-pixel
Niveau de taille (tableau ci-dessous)L
Animation ? quels cyclesaucun
Palette : donnée / choix sur Lospec / dérivée d’une référencedériver avec la compétence color (/color) si elle existe, sinon Lospec

2. Niveaux de taille (allez au-delà de la « taille d’icône » ; restez du pixel art)

NiveauToileUsage typiqueCouleurs
S32×32objets, icônes8–16
M64×64petits personnages, accessoires16–24
L128×128personnages principaux, accessoires détaillés24–40
XL192×192 / 256×256portraits de héros, boss32–64
Scène320×180 ou 480×270décors, key art32–64

Règle : le pixel est carré et jamais mis à l’échelle avec une valeur non entière. Le détail vient de plus de pixels, pas de flou. Si l’utilisateur demande « plus de détail », montez d’un niveau avant d’ajouter du bruit.

3. Palette d’abord

  1. Choisissez/dérivez la palette (references/palette-workflow.md ; hex de Lospec : https://lospec.com/palette-list/<slug>.hex).
  2. create_canvas en mode couleur indexé, puis set_palette. Ordonnez la palette du sombre au clair dans chaque rampe (sort_palette par teinte puis luminance, si besoin).
  3. Montez des rampes, pas des couleurs isolées : 3–5 niveaux par matière (ombre, mi-teinte, lumière, éclat), avec changement de teinte (ombres → plus froides/saturées, lumières → plus chaudes). Vérifiez avec analyze_palette_harmonies.
  4. Passez use_palette: true dans les appels de dessin pour que chaque pixel s’ajuste à la palette.

3b. Orientation et pose (verrouillez avant de dessiner ; voir references/orientation-and-pose.md)

Déclarez view (latérale / 3/4 / frontale / isométrique), facing (dessinez les vues latérales tournées vers la droite), direction de la lumière, quelle main tient quel accessoire et où tombent la cape/les cheveux. Règles : membres du côté de la caméra devant le torse, ceux du côté opposé derrière, tête tournée dans la direction du regard, capes attachées dans le dos et dans la couche la plus basse, un accessoire par main, devant le corps. Pour tout ce qui est animé, montez d’abord le squelette : articulations + IK à 2 os, puis les formes (rig.py dans https://github.com/LimaEdu-7x/omni-sprite/tree/main/examples/knight). Effectuez les tests de silhouette/miroir/superposition après le premier rendu.

4. Ordre de construction (couches, toujours dans cet ordre)

Créez les couches de bas en haut avec add_layer : bg, shadow-cast, base, shade, light, detail, outline, fx.

  1. Silhouette – remplissez toute la forme avec une couleur sombre unie dans base. Regardez en 1× : si ce n’est pas reconnaissable comme silhouette, refaites-la. Asymétrie marquée, séparation claire tête/torse/membres, espace négatif lisible.
  2. Couleurs unies – un ton moyen par matière avec fill_area / draw_rectangle / draw_circle / draw_contour.
  3. Ombre de forme – choisissez UNE direction de lumière (par défaut : supérieure gauche). Utilisez apply_shading (style hard pour net, smooth pour HD) dans shade/light ; ajoutez une lumière de contour sélective du côté opposé à la lumière principale.
  4. Texture et détail – draw_with_dither seulement là où le style le permet (voir styles) ; draw_pixels manuel pour les yeux, coutures, boucles, reflets. Groupez les pixels ; évitez les pixels isolés (bruit) et les « crénelages » (marches irrégulières dans les lignes).
  5. Contour – apply_outline puis ajustez à la main : contour sélectif (couleur plus foncée avec changement de teinte, pas de noir pur) pour HD ; contour foncé complet pour 8/16-bit ; aucun pour « sans contour ».
  6. Anticrénelage – suggest_antialiasing sur les courbes/diagonales (sautez en 1-bit/NES).
  7. FX – lueur, étincelles, ombre au sol dans fx/shadow-cast.

Pour les formes organiques complexes, utilisez la méthode de la grille : écrivez le sprite sous forme de grille ASCII (un caractère = index de la palette), convertissez avec scripts/grid_to_pixels.py en un lot de draw_pixels (voir references/grid-method.md). Grandes zones avec les outils de forme, détails avec la grille.

5. Cycle de rendu et révision (obligatoire)

Après chaque étape importante : export_sprite PNG → copie avec scale_sprite ×4 (nearest) ou PNG agrandi → regardez l’image (Read sur le PNG). Passez la checklist de references/quality-checklist.md. Corrigez le pire défaut et rendez de nouveau. Maximum 3 cycles par étape ; ensuite signalez ce qui reste.

6. Animation (quand demandée)

Suivez references/animation.md : poses clés d’abord, puis intermédiaires, 8–12 fps (set_frame_duration 80–125 ms), un tag par cycle (create_tag : idle, walk, run, attack, hurt, death), duplicate_frame + édition, link_cel pour les parties statiques, pivot/pieds verrouillés sur la même ligne de pixels. Exportez avec export_sprite (GIF de prévisualisation) et export_spritesheet (+JSON).

7. Livraison

Sauvegardez le .aseprite (save_as), exportez PNG 1×, PNG de prévisualisation ×4 et, pour l’animation, GIF + sheet + JSON. Indiquez : taille de la toile, nom/nombre de couleurs de la palette, direction de la lumière, style et chemins des fichiers.

Pièges (vérifiés sur pixel-mcp 0.5.0)

  • create_canvas renvoie du JSON {"file_path": …} ; ce chemin est le sprite_path de tous les autres outils. Pas de paramètre de nom ; utilisez save_as pour nommer.
  • Utilisez des barres obliques normales dans output_path (C:/Users/eu/saida.png). Les barres obliques inverses cassent le Lua généré (\U est interprété comme une séquence d’échappement) et échouent avec « invalid character ’U’ ».
  • scale_sprite modifie le sprite sur place : faites save_as d’une copie, mettez la copie à l’échelle et exportez.
  • Les numéros de frame commencent à 1 (export_sprite avec frame 0 = toutes).
  • draw_pixels reçoit [{x,y,color}], jusqu’à ~10 000 par appel ; c’est ce que grid_to_pixels.py génère.
  • En parlant au serveur par stdio : JSON-RPC par ligne, écrivez les octets avec \n (CRLF échoue avec « invalid trailing data »).
  • Un exemple complet (squelette → parties ombrées → couches → exportations) se trouve sur https://github.com/LimaEdu-7x/omni-sprite/tree/main/examples/knight.

Références supplémentaires (chargez à la demande)

  • references/build-aseprite.md – compiler Aseprite depuis les sources et résoudre les échecs.
  • references/orientation-and-pose.md – vue/côté du regard, couches proches/éloignées, rigs, ensembles de directions.
  • references/styles.md – 12 styles avec règles exactes.
  • references/palette-workflow.md – rampes, changement de teinte, palettes Lospec, budget de couleurs.
  • references/animation.md – cycles, frames, temporisations, easing.
  • references/quality-checklist.md – liste de révision approuvé/refusé.
  • references/resources.md – 12+ sites et 20+ compétences/serveurs de la communauté pour étudier et intégrer.
  • references/mcp-tools.md – catalogue d’outils.
  • Compétences compagnes optionnelles : color / /color (choix et miroir de palette), une compétence de design frontend si les sprites sont pour une UI web.

Limites honnêtes

Dessiner pixel par pixel via des appels d’outils est lent et le modèle ne « voit » pas la toile sans exporter. Préférez les formes + méthode de la grille + cycle de révision ; utilisez analyze_reference / downsample_image quand l’utilisateur envoie une image de référence.

Skills associés