Community이미지github.com

LimaEdu-7x/omni-sprite

Aseprite 서버(pixel-mcp)를 사용하여 크고 상세한 픽셀 아트 스프라이트, 타일셋 및 애니메이션을 생성합니다. 사용자가 스프라이트, 캐릭터, 타일, 아이콘, 픽셀 아트 씬, 스프라이트 시트, 애니메이션 사이클 또는 특정 스타일(8비트, 16비트, GBA, HD 픽셀, 다크 판타지, 사이버펑크, 아이소메트릭)을 요청할 때 사용하세요. 또한 영어로 스프라이트, 픽셀 아트, 스프라이트 시트 및 애니메이션 사이클을 요청할 때도 트리거됩니다. 결과물이 작고 평면적이지 않도록 해상도 수준, 팔레트 우선, 고정된 방향, 레이어 및 시각적 검토를 강제합니다.

omni-sprite란 무엇인가요?

이 스킬은 Aseprite의 pixel-mcp 서버를 활용하여 고품질 픽셀 아트 스프라이트, 타일셋 및 애니메이션을 제작하는 전용 워크플로우입니다. 사용자가 스프라이트 관련 요청(예: '검은 기사 스프라이트 만들어 줘')을 하면, `/sprite` 명령어를 통해 자세한 브리핑(크기, 스타일, 시점, 애니메이션, 팔레트 등)을 진행하고, 사전 정의된 참조 문서와 규칙에 따라 체계적으로 스프라이트를 생성합니다. 이 스킬의 핵심 강점은 단순한 드로잉이 아닌, **팔레트 우선(Palette First)** 접근법과 **계층별 제작 순서(Layer Order)**를 강제한다는 점입니다. 먼저 Lospec 등에서 팔레트를 선택하고 색상 램프를 구성한 후, 실루엣 → 단색 채색 → 음영/광택 → 텍스처/디테일 → 윤곽선 → 안티앨리어싱 → 효과 순서로 이미지를 빌드합니다. 각 단계 후에는 반드시 PNG로 내보내어 시각적 검토를 수행하고, 최대 3회의 수정 사이클을 거쳐 품질을 보장합니다. pixel-mcp 0.5.0과의 상호작용에서 발생할 수 있는 함정(예: 역슬래시 경로 문제, 프레임 번호 1부터 시작)을 사전에 문서화하여 안정성을 높였습니다. Aseprite가 설치되어 있지 않은 경우, GitHub 소스에서 직접 컴파일하거나(권장) Steam/공식 사이트에서 구매하도록 안내하며, Aseprite 없이 Python/Pillow로 대체할 수 있는 '플랜 B'도 제공합니다. 결과물은 `.aseprite` 원본 파일, 1배율 PNG, 4배율 미리보기 PNG, 애니메이션의 경우 GIF + 스프라이트 시트 + JSON 메타데이터로 제공됩니다. 참조 문서로는 12가지 스타일 가이드, 팔레트 워크플로우, 애니메이션 레시피, 품질 체크리스트 등을 지원하며, Claude Code, Cursor, Codex 등 MCP를 지원하는 모든 플랫폼에서 사용 가능합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/LimaEdu-7x/omni-sprite/tree/HEAD

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

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

OmniSprite 🎮✨ — 명령어 /sprite

Aseprite의 pixel-mcp 서버(도구 카탈로그: references/mcp-tools.md)를 기반으로 하는 정밀한 픽셀 아트 워크플로우입니다. 사용자에게 그의 언어로 응답하세요.

명령어 /sprite

사용법: /sprite [설명] [플래그]. 인수가 없으면 무엇을 만들지 물어보세요.

플래그효과
--tamanho S|M|L|XL|cena크기 수준 (기본값 L, 128×128)
--estilo <프리셋>references/styles.md의 12가지 스타일 중 하나 (기본값 hd-pixel)
--vista lateral|3-4|frontal|iso고정된 시점 (기본값 측면, 오른쪽을 향함)
--anim idle,walk,attack,...애니메이션할 사이클 (references/animation.md 참조)
--paleta <slug-lospec|#hex,#hex|ref:경로>Lospec 또는 이미지에서 파생된 팔레트 지정
--doctor진단만 수행: Aseprite 발견? MCP 등록됨? (항목 0 단계)
--compilar소스 코드에서 Aseprite를 컴파일하는 흐름 강제 (항목 0.4a)

플래그가 제공되면 해당 브리핑 질문은 생략됩니다. 누락된 부분은 grill-me 라운드로 넘어갑니다. 예: /sprite cavaleiro dark fantasy --tamanho L --anim idle,walk,attack.

0. 사전 요구 사항 (플러그 앤 플레이; 한 번 확인하고 누락된 부분 수정)

  1. MCP 도구가 보이나요? (create_canvas, draw_pixels, export_sprite…). 예이면 1단계로 가세요.
  2. 아니면 Aseprite를 찾으세요: scripts/find-aseprite.ps1 (Windows) 또는 scripts/find-aseprite.sh을 실행하세요. 종료코드 0은 경로를 출력하고, 2는 찾지 못한 것입니다.
  3. Aseprite를 찾았으면 → scripts/install-mcp.ps1 / .sh를 실행하세요 (자동 감지, 고정 버전의 pixel-mcp 다운로드, SHA-256 확인 후 등록). 사용자에게 클라이언트를 다시 시작하라고 요청하고 계속하세요.
  4. Aseprite를 찾지 못했으면 → 사용자에게 물어보세요 (한 가지 질문, 선택지 포함); 추측하지 마세요:
    • "Aseprite가 설치되어 있지 않습니다. GitHub에서 소스 코드를 다운로드하여 컴파일하고 설정할까요? (git, CMake, Ninja 및 C++ 컴파일러 필요; 약 10–40분 소요; Aseprite 라이선스는 개인 용도로 컴파일을 허용하며 바이너리를 재배포할 수 없습니다.)"
    • 옵션: (a) 네, 컴파일해 주세요 (권장) · (b) 직접 설치하겠습니다 (Steam / aseprite.org / itch.io; 유료이며 개발자를 지원합니다) · (c) Aseprite 건너뛰기 및 Python/Pillow로 플랜 B 사용 (.aseprite 파일 없음, 동일한 스타일 규칙).
    • (a)의 경우: scripts/build-aseprite.ps1 (Windows) 또는 scripts/build-aseprite.sh을 실행하세요. 사전 요구 사항이 없으면 무엇인지 알려주고 허락을 구한 후 플랫폼 패키지 관리자(winget / brew / apt)로 설치하겠다고 제안하세요. 실패하면 references/build-aseprite.md를 따르세요. 완료되면 3단계를 실행하세요.
  5. 브리핑(1절)을 마치기 전에는 절대 그림을 그리지 마세요. 응답이 누락되었으면 질문하거나 기본값을 사용하고 알려주세요.

1. 브리핑 (grill-me가 설치된 경우 사용)

아래 질문을 grill-me의 짧은 라운드로 제시하세요 (모든 독립적인 질문을 함께, 각각 권장 답변 포함, "예" 수락용); 스킬이 없으면 정상적으로 질문하세요. 누락된 것만 물어보세요.

질문무응답 시 기본값
한 문장 + 분위기는 무엇인가요?–
어디에 사용되나요 (게임 장르, UI, 인쇄)? 카메라: 측면 / 3/4 탑다운 / 아이소메트릭 / 정면측면 시점
스타일 (references/styles.md 참조)hd-pixel
크기 수준 (아래 표)L
애니메이션? 어떤 사이클없음
팔레트: 지정 / Lospec에서 선택 / 참조에서 파생color 스킬(/color)이 있으면 파생, 없으면 Lospec

2. 크기 수준 ("아이콘 크기"를 넘어서; 계속 픽셀 아트로)

수준캔버스일반적인 용도색상
S32×32아이템, 아이콘8–16
M64×64작은 캐릭터, 소품16–24
L128×128주요 캐릭터, 상세한 소품24–40
XL192×192 / 256×256영웅 초상화, 보스32–64
Cena320×180 또는 480×270배경, 키 아트32–64

규칙: 픽셀은 정사각형이며 정수가 아닌 값으로 절대 크기 조정되지 않습니다. 디테일은 더 많은 픽셀에서 비롯되며 블러에서 오지 않습니다. 사용자가 "더 많은 디테일"을 요청하면 노이즈를 추가하기 전에 수준을 하나 올리세요.

3. 팔레트 우선

  1. 팔레트를 선택/파생하세요 (references/palette-workflow.md; Lospec의 16진수: https://lospec.com/palette-list/<slug>.hex).
  2. 인덱스 색상 모드로 create_canvas한 다음 set_palette를 사용하세요. 각 램프 내에서 팔레트를 어두운 색에서 밝은 색으로 정렬하세요 (필요한 경우 색조, 그다음 명도로 sort_palette).
  3. 단일 색상이 아닌 램프를 구성하세요: 재질당 3–5 단계 (그림자, 중간색, 빛, 하이라이트), 색조 변화 포함 (그림자 → 차갑고/채도 높게, 빛 → 따뜻하게). analyze_palette_harmonies로 확인하세요.
  4. 그리기 호출에 use_palette: true를 전달하여 각 픽셀이 팔레트에 맞춰지도록 하세요.

3b. 방향 및 포즈 (그리기 전에 고정; references/orientation-and-pose.md 참조)

view (측면 / 3/4 / 정면 / 아이소메트릭), facing (측면도를 오른쪽을 향해 그리기), 빛의 방향, 어떤 손이 어떤 소품을 잡는지, 망토/머리카락이 어느 방향으로 떨어지는지 선언하세요. 규칙: 카메라 쪽의 팔다리는 몸통 앞에, 반대쪽은 뒤에, 머리는 시선 방향을 향하며, 망토는 등에 고정되고 가장 낮은 레이어에, 한 손에 하나의 소품, 몸 앞에 위치합니다. 애니메이션이 필요한 모든 것에 대해 먼저 뼈대를 구성하세요: 관절 + 2-본 IK, 그다음 형태 (rig.py in https://github.com/LimaEdu-7x/omni-sprite/tree/main/examples/knight). 첫 번째 렌더링 후 실루엣/미러/겹침 테스트를 수행하세요.

4. 제작 순서 (레이어, 항상 이 순서대로)

add_layer를 사용하여 아래에서 위로 레이어를 생성하세요: bg, shadow-cast, base, shade, light, detail, outline, fx.

  1. 실루엣 – base 레이어에 전체 형태를 단색의 어두운 색으로 채우세요. 1배율로 읽으세요: 실루엣으로 인식할 수 없으면 다시 그리세요. 강한 비대칭, 머리/몸통/팔다리의 명확한 분리, 읽을 수 있는 네거티브 공간.
  2. 단색 채색 – 재질당 하나의 중간 톤으로 fill_area / draw_rectangle / draw_circle / draw_contour를 사용합니다.
  3. 형태 음영 – 하나의 광원 방향을 선택하세요 (기본값: 왼쪽 위). shade/light 레이어에 apply_shading을 사용하고 (선명한 경우 hard, HD의 경우 smooth 스타일), 주 광원 반대편에 선택적 윤곽 조명을 추가하세요.
  4. 텍스처 및 디테일 – 스타일이 허용하는 곳에서만 draw_with_dither을 사용하고 (스타일 참조); 눈, 솔기, 버클, 반짝임에 수동 draw_pixels를 사용하세요. 픽셀을 그룹화하고 단일 픽셀(노이즈) 및 "톱니 모양"(선의 불규칙한 계단)을 피하세요.
  5. 윤곽선 – apply_outline을 사용한 후 수동으로 조정하세요: HD의 경우 선택적 윤곽선 (순수 검정이 아닌 색조 변화가 있는 가장 어두운 색), 8/16비트의 경우 완전한 어두운 윤곽선, "윤곽선 없음"의 경우 없음.
  6. 안티앨리어싱 – 곡선/대각선에 suggest_antialiasing을 사용하세요 (1비트/NES에서는 건너뜁니다).
  7. FX – fx/shadow-cast 레이어에 광채, 불꽃, 바닥 그림자를 추가합니다.

복잡한 유기적 형태의 경우 그리드 방법을 사용하세요: 스프라이트를 ASCII 그리드(한 문자 = 팔레트 인덱스)로 작성하고, scripts/grid_to_pixels.py로 변환하여 일괄 draw_pixels 호출로 만듭니다 (references/grid-method.md 참조). 넓은 영역은 도형 도구로, 디테일은 그리드로 처리합니다.

5. 렌더링 및 검토 사이클 (필수)

각 중요한 단계 후: export_sprite PNG → scale_sprite ×4 (nearest) 또는 확대된 PNG로 복사 → 이미지를 보세요 (PNG 읽기). references/quality-checklist.md의 체크리스트를 확인하세요. 최악의 결함을 수정하고 다시 렌더링하세요. 각 단계당 최대 3사이클; 그 후 남은 문제를 보고하세요.

6. 애니메이션 (요청 시)

references/animation.md를 따르세요: 먼저 키 포즈, 그다음 중간 포즈, 8–12fps (set_frame_duration 80–125ms), 사이클당 하나의 태그 (create_tag: idle, walk, run, attack, hurt, death), duplicate_frame + 편집, 정적 부분에 link_cel, 피벗/발이 동일한 픽셀 라인에 고정됨. export_sprite (미리보기 GIF) 및 export_spritesheet (+JSON)로 내보내세요.

7. 전달

.aseprite 저장 (save_as), 1배율 PNG, 4배율 미리보기 PNG, 애니메이션의 경우 GIF + 시트 + JSON을 내보내세요. 다음 정보를 알려주세요: 캔버스 크기, 팔레트 이름/색상 수, 광원 방향, 스타일 및 파일 경로.

함정 (pixel-mcp 0.5.0에서 확인됨)

  • create_canvas는 {"file_path": ...} JSON을 반환합니다. 이 경로는 다른 모든 도구의 sprite_path입니다. 이름 매개변수는 없습니다. save_as를 사용하여 이름을 지정하세요.
  • output_path에 일반 슬래시를 사용하세요 (C:/Users/eu/saida.png). 역슬래시는 생성된 Lua를 깨뜨립니다 (\U는 이스케이프로 읽힘) 그리고 "invalid character 'U'" 오류가 발생합니다.
  • scale_sprite는 스프라이트를 제자리에서 변경합니다: 복사본을 save_as로 저장하고, 복사본을 확장한 다음 내보내세요.
  • 프레임 번호는 1부터 시작합니다 (프레임 0으로 export_sprite하면 모든 프레임).
  • draw_pixels는 [{x,y,color}]를 받으며, 호출당 최대 약 10,000개까지 가능합니다. grid_to_pixels.py가 생성하는 것입니다.
  • stdio를 통해 서버와 통신할 때: 줄 단위 JSON-RPC, \n으로 바이트를 쓰세요 (CRLF는 "invalid trailing data" 오류 발생).
  • 전체 예제 (뼈대 → 음영 처리된 부분 → 레이어 → 내보내기)는 https://github.com/LimaEdu-7x/omni-sprite/tree/main/examples/knight 에 있습니다.

추가 참조 (필요 시 로드)

  • references/build-aseprite.md – Aseprite를 소스 코드에서 컴파일하고 실패를 해결합니다.
  • references/orientation-and-pose.md – 시선 방향/측면, 가까운/먼 레이어, 리그, 방향 세트.
  • references/styles.md – 정확한 규칙이 있는 12가지 스타일.
  • references/palette-workflow.md – 램프, 색조 이동, Lospec 팔레트, 색상 예산.
  • references/animation.md – 사이클, 프레임, 시간, 이징.
  • references/quality-checklist.md – 통과/실패 검토 목록.
  • references/resources.md – 학습 및 통합을 위한 12개 이상의 사이트 및 20개 이상의 커뮤니티 스킬/서버.
  • references/mcp-tools.md – 도구 카탈로그.
  • 선택적 동반 스킬: color / /color (팔레트 선택 및 미러링), 스프라이트가 웹 UI용인 경우 프론트엔드 디자인 스킬.

정직한 한계

도구 호출로 픽셀 하나하나를 그리는 것은 느리고 모델은 내보내지 않으면 캔버스를 "볼 수 없습니다". 도형 + 그리드 방법 + 검토 사이클을 선호하세요. 사용자가 참조 이미지를 보내면 analyze_reference / downsample_image를 사용하세요.

관련 스킬