GitHub 생성 8일 · 누적 379스타직접 실행 · 12회 성공

픽셀아트 스프라이트, 장면, GIF를 코드로 그려 주는 스킬, claude-pxl

Claude Code에서 12번 직접 실행해 12번 모두 요청한 크기의 결과가 나온 기록과 설치 명령입니다.

기준: 2026-10-23T03:31:05+00:00 · 누적 379스타(생성 8일) · 최근 7일 포크 19개 · 7일 스타 증가량은 재지 못했다 · GitHub 트렌딩 없음

claude-codeskills

crsolver/claude-pxl

Claude가 .px.js 그림 파일(JavaScript)을 쓰면 crsolver/claude-pxl의 pxl이 스프라이트·시트(+JSON)·장면 PNG와 GIF로 렌더하고, Claude는 확대 미리보기를 보며 고칩니다. 레포 루트가 곧 스킬 pxl-pixel-art입니다.

설치 방법

README의 두 줄 중 하나만 고르면 됩니다(git과 Node.js 22.18 이상 필요, npm install 불필요). 12번의 실행은 방법 2를 임시 프로젝트 폴더에서 글자 그대로 실행해 받은 사본(커밋 21fee41)을 실행마다 새 프로젝트 폴더의 .claude/skills에 복사해서 했고, 방법 1은 전역 폴더(~/.claude/skills)를 바꾸지 않으려고 해 보지 못했습니다. 레포 루트가 곧 스킬 폴더라서 README는 복제할 폴더 이름을 pxl-pixel-art로 정해 둡니다.

방법 1 · 모든 프로젝트용 (README '# all projects' · 전역 ~/.claude/skills에 복제 · 해 보지 못함)

git clone https://github.com/crsolver/claude-pxl.git ~/.claude/skills/pxl-pixel-art

방법 2 · 이 프로젝트만 (README '# or just one project' · 시험에서 쓴 방법)

git clone https://github.com/crsolver/claude-pxl.git .claude/skills/pxl-pixel-art

시험한 호출 · 설치 뒤 Claude Code에서 (12번 중 10번이 /pxl-pixel-art로 시작)

/pxl-pixel-art <그리고 싶은 것과 최종 PNG 크기를 적은 요청>

서로 다른 요청 12개로 12번 직접 실행해 12번 모두 요청한 크기의 PNG가 나왔습니다. 다만 움직이는 결과는 모델이 GIF를 재생해 보지 않고 미리보기나 첫 프레임으로만 확인했습니다.

12회성공 실행
12회전체 실행
122초평균 소요

필요 조건

만든 이는 crsolver이고, 레포 이름에 claude가 들어 있지만 Anthropic이 만든 것이 아니다. 레포 전체(약 6.5MB, README 갤러리 이미지 포함)가 그대로 스킬 폴더가 되고 스킬 이름은 pxl-pixel-art다. Node 22.18 미만이 PATH에서 먼저 잡히면 pxl이 실행되지 않는다. 그림 파일(.px.js)은 node:vm에서 실행되는 JavaScript라 남이 준 그림 파일은 build·serve 전에 읽어 볼 것(vm은 보안 경계가 아니다). 결과는 그림 파일 옆 out/ 폴더(sprites·scenes·anims·시트 PNG+JSON·_preview 확대 미리보기)에 쌓인다.

시험할 때 실제로 실행한 명령
# $T = 시험용 작업 폴더, $SB = 실행마다 새로 만든 프로젝트 폴더, $SBR = 그 위 폴더(전체 경로는 생략)
git clone --depth 1 https://github.com/crsolver/claude-pxl $T/src  (보안 검토용, 커밋 21fee41)
cd $SBR/_install_check && git clone https://github.com/crsolver/claude-pxl.git .claude/skills/pxl-pixel-art  (README 'or just one project' 명령 그대로, 임시 프로젝트 폴더, 커밋 21fee41, 검토 사본과 작업 트리 같음)
mkdir -p $SB/.claude/skills && cp -r $SBR/_install_check/.claude/skills/pxl-pixel-art $SB/.claude/skills/pxl-pixel-art  (실행마다 새 샌드박스, tools/mk_sandbox.sh — 커밋·diff 확인)
cd $SB && PATH=$SB/.bin:$PATH claude -p "/pxl-pixel-art <요청> … [시험 진행 메모] …" --output-format json --model claude-opus-5-5 --effort high --setting-sources project,local --tools Read,Write,Edit,Glob,Grep,Bash,Skill,TodoWrite --permission-mode dontAsk --allowedTools Read Glob Grep Skill TodoWrite "Write(./**)" "Edit(./**)" "Bash(node <스킬>/bin/pxl.js build|ascii|list:*)"(절대·상대 경로 꼴 4가지) "Bash(node --version)" "Bash(ls:*)" "Bash(mkdir:*)" "Bash(cd:*)" "Bash(pwd)" --disallowedTools <.env 읽기 8가지 꼴·하네스 폴더·자격 증명 폴더·pxl serve·node -e/-p·내용 출력 셸 명령·네트워크·설치·python·git·rm 등, tools/claude_flags.sh> --strict-mcp-config --no-chrome --max-budget-usd 2  (run_once.py, 시간 제한 900초; run05는 본문에 'Use the pxl-pixel-art skill', run09는 스킬·pxl 이름 없이 자연어만)
$SB/.bin/node = tools/node_shim.sh  (시험자 안전 장치: 모델의 node 호출 가운데 <스킬>/bin/pxl.js build·ascii·list와 node --version만 bubblewrap 안에서 /usr/local/bin/node v22.23.3로 실행 — 홈·하네스 폴더 안 보임, 네트워크 없음, 샌드박스만 쓰기)
node <스킬>/bin/pxl.js serve art.px.js --port <시험용 포트> --no-out  (시험자 뷰어 녹화 run06·run07: README 사본, bubblewrap 안, 127.0.0.1, 헤드리스 Chrome CDP screencast — tools/record_viewer.py)

보안 검토: pass — 훅·MCP 서버·플러그인 매니페스트 없음(레포 루트가 곧 스킬). SKILL.md frontmatter는 name·description뿐. 코드는 그림 파일을 읽어 PNG·GIF·JSON을 out/에 쓰는 것뿐이고 외부 네트워크 호출·자격 증명 접근·child_process·process.env 사용 0건, 런타임 의존성 0개. serve는 127.0.0.1에만 열린다(인증 없음). 예시 그림 파일 13개에 vm 탈출 꼴 단어 0건. 주의: 그림 파일(.px.js)은 node:vm에서 실행되는데 vm은 보안 경계가 아니라 남이 준 그림 파일은 코드 실행과 같다(include()도 아무 파일을 코드로 실행). 시험은 프로젝트 .claude/skills/ clone 사본, --setting-sources project,local, dontAsk + 허용 목록(Bash는 pxl build·ascii·list·node --version·ls·mkdir·cd·pwd), .env·하네스 폴더·자격 증명 폴더 읽기 거부, pxl serve·node -e 거부, 모델의 node 호출은 bubblewrap 안전 장치(홈 비움·네트워크 없음·샌드박스만 쓰기)로 실행했다. 사전 확인(가짜 값 미끼)에서 .env·하네스 미끼 읽기와 밖 쓰기, serve·node -e가 모두 막혔다(evidence/preflight/). 자세한 것은 security_review.md.

써 보니

결과물 12개

카드 한 장은 실행 한 번의 대표 화면이고, 누르면 크게 열립니다. 그림은 모델이 pxl로 만든 PNG이고, 제목과 배치, 그림 밑 '이름·원본 크기·배율' 라벨은 시험자가 결과 PNG를 정수배 최근접(NEAREST) 확대로 합성하며 붙인 것입니다(투명 배경 그림은 밝은 판 위에 놓았고, 영어 이름은 모델이 정한 파일 이름입니다). 성공 12번을 모두 실었습니다. 움직이는 결과가 있는 6번(run04·05·08·10·11·12)의 '움직임 영상 보기'는 시험자가 화면을 녹화한 것이 아니라 결과 GIF를 mp4로 옮긴 무음 영상입니다. '프롬프트 전문 보기'를 누르면 요청 전문이 펼쳐집니다(433~858자: 요청 뒤에 시험 진행 메모가 이어집니다). 테두리 카드는 결과 종류가 다른 대표입니다: 한옥 마당 반복 GIF(run12), 조명 장면(run07), 비 오는 밤 반복 GIF(run11), 소품을 놓은 간이역 장면(run06).

192×108 '산골 간이역의 가을 오후': 판자벽 목조 역사와 청회색 함석지붕, 보랏빛 산 두 겹과 단풍 든 언덕, 돌 플랫폼·철길·마른 풀밭에 소품 스프라이트 3개(단풍나무 42×48·벤치 24×10·빨간불 켜진 철도 신호등 11×36)를 배치. 첫 빌드는 scatter 첫 인자에 이름 문자열 대신 배열을 넘겨 실패했고, 오류 메시지의 사용법을 보고 group 이름으로 고쳤다. 하늘 위쪽 점무늬 띠는 그대로 두었다고 보고
run06 · 192×108 '산골 간이역의 가을 오후': 판자벽 목조 역사와 청회색 함석지붕, 보랏빛 산 두 겹과 단풍 든 언덕, 돌 플랫폼·철길·마른 풀밭에 소품 스프라이트 3개(단풍나무 42×48·벤치 24×10·빨간불 켜진 철도 신호등 11×36)를 배치. 첫 빌드는 scatter 첫 인자에 이름 문자열 대신 배열을 넘겨 실패했고, 오류 메시지의 사용법을 보고 group 이름으로 고쳤다. 하늘 위쪽 점무늬 띠는 그대로 두었다고 보고
프롬프트 전문 보기
/pxl-pixel-art 192×108 장면 '산골 간이역의 가을 오후'를 그려 줘. 작은 목조 역사, 철길, 단풍나무, 나무 벤치가 있는 옆모습 풍경이야. 단풍나무·벤치·철도 신호등은 각각 소품 스프라이트로 따로 만들어 장면에 배치해 줘. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
lighting.md를 읽고 만든 160×120 '등잔불 켜진 지하 서고': 등잔 스프라이트에 lamp를 넣어 벽감 두 곳에 찍고 책상 위 촛대 하나, 아치 천장·돌기둥·바닥은 빛을 막는 solid 층, 돌벽은 bump(bevel) 노멀맵. 불빛 둘레만 따뜻하게 밝고 구석은 검게 가라앉는다. 층별 PNG 6장과 노멀맵 PNG도 함께 나왔다
run07 · lighting.md를 읽고 만든 160×120 '등잔불 켜진 지하 서고': 등잔 스프라이트에 lamp를 넣어 벽감 두 곳에 찍고 책상 위 촛대 하나, 아치 천장·돌기둥·바닥은 빛을 막는 solid 층, 돌벽은 bump(bevel) 노멀맵. 불빛 둘레만 따뜻하게 밝고 구석은 검게 가라앉는다. 층별 PNG 6장과 노멀맵 PNG도 함께 나왔다
프롬프트 전문 보기
/pxl-pixel-art lighting.md의 조명 기능(lamp, lighting, solid 레이어)을 써서 160×120 장면 '등잔불 켜진 지하 서고'를 그려 줘. 돌벽과 책장 사이에 등잔 2개와 촛대 1개가 빛을 내고, 빛이 닿지 않는 구석은 어둡게 가라앉게 해 줘. 등잔은 스프라이트로 따로 하나 만들어. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
160×90 '비 오는 밤 시골 버스 정류장' 12프레임 반복(10fps, 1.2초): 왼쪽 가로등이 12프레임 중 3프레임 꺼지며 불빛 원뿔·웅덩이 반사도 같이 꺼지고, 빗줄기 두 겹이 다른 속도로 비스듬히 내리며, 웅덩이에 비친 불빛이 흔들린다. 나무 정류장 지붕 아래 우산 든 사람 실루엣, 먼 언덕과 불 켜진 농가 창 하나. 애니메이션 GIF와 같은 내용의 장면 GIF·정지 PNG를 함께 냈다
움직임 영상 보기 · 6.0초 · 무음 · 결과 GIF를 시험자가 mp4로 옮긴 것

결과 GIF의 프레임을 시험자가 GIF에 적힌 프레임 길이대로 30fps 영상에 놓고, 짝수 정수배(10·12·32배)로 최근접 확대해 한 바퀴를 여러 번 이어 붙인 무음 mp4입니다. 화면 녹화가 아니고 pxl이나 모델이 만든 영상도 아닙니다.

run11 · 160×90 '비 오는 밤 시골 버스 정류장' 12프레임 반복(10fps, 1.2초): 왼쪽 가로등이 12프레임 중 3프레임 꺼지며 불빛 원뿔·웅덩이 반사도 같이 꺼지고, 빗줄기 두 겹이 다른 속도로 비스듬히 내리며, 웅덩이에 비친 불빛이 흔들린다. 나무 정류장 지붕 아래 우산 든 사람 실루엣, 먼 언덕과 불 켜진 농가 창 하나. 애니메이션 GIF와 같은 내용의 장면 GIF·정지 PNG를 함께 냈다
프롬프트 전문 보기
/pxl-pixel-art 비 오는 밤 시골 버스 정류장 장면(160×90)을 만들어 줘. 깜빡이는 가로등, 비스듬히 내리는 빗줄기, 웅덩이에 흔들리며 비친 불빛이 움직이는 반복 애니메이션 GIF이고, 정류장 지붕 아래에 우산을 든 사람 실루엣 하나를 세워 줘. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
192×108 '한여름 밤 한옥 마당' 16프레임 반복: 끝이 들린 기와지붕과 불 켜진 창호지 문, 툇마루·돌 기단, 기와 얹은 돌담과 초승달, 평상 위 수박 한 통, 짚더미 모깃불에서 오른쪽으로 흘러 퍼지는 연기, 켜졌다 꺼지며 떠다니는 반딧불이 8마리(켜질 때만 glow). 8fps로 지정했고 GIF에는 프레임당 130ms(한 바퀴 2.08초)로 저장됐다. 모델은 미리보기로 첫 프레임만 확인했다고 밝혔다
움직임 영상 보기 · 6.2초 · 무음 · 결과 GIF를 시험자가 mp4로 옮긴 것

결과 GIF의 프레임을 시험자가 GIF에 적힌 프레임 길이대로 30fps 영상에 놓고, 짝수 정수배(10·12·32배)로 최근접 확대해 한 바퀴를 여러 번 이어 붙인 무음 mp4입니다. 화면 녹화가 아니고 pxl이나 모델이 만든 영상도 아닙니다.

run12 · 192×108 '한여름 밤 한옥 마당' 16프레임 반복: 끝이 들린 기와지붕과 불 켜진 창호지 문, 툇마루·돌 기단, 기와 얹은 돌담과 초승달, 평상 위 수박 한 통, 짚더미 모깃불에서 오른쪽으로 흘러 퍼지는 연기, 켜졌다 꺼지며 떠다니는 반딧불이 8마리(켜질 때만 glow). 8fps로 지정했고 GIF에는 프레임당 130ms(한 바퀴 2.08초)로 저장됐다. 모델은 미리보기로 첫 프레임만 확인했다고 밝혔다
프롬프트 전문 보기
/pxl-pixel-art 한여름 밤 한옥 마당 장면(192×108)을 그려 줘: 기와지붕과 툇마루, 마당의 평상 위 수박 한 통, 피어오르는 모깃불 연기, 마당을 떠다니며 깜빡이는 반딧불이(glow). 반딧불이와 연기가 움직이는 반복 GIF로 만들어 줘. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
16×16 '등대지기 고양이' 세 마리: 남색 모자·코트 차림으로 등불을 든 치즈색 고양이와 털색만 바꾼 회색 줄무늬·삼색 변형(base + swap), 50×16 시트(+JSON). 14×14로 그리고 외곽선 1px로 16×16을 맞췄다. swap이 키가 아니라 색 값 기준이라 처음엔 삼색이 잘못 칠해져 얼룩 자리 색을 조금 다르게 바꿔 고쳤다고 보고
run01 · 16×16 '등대지기 고양이' 세 마리: 남색 모자·코트 차림으로 등불을 든 치즈색 고양이와 털색만 바꾼 회색 줄무늬·삼색 변형(base + swap), 50×16 시트(+JSON). 14×14로 그리고 외곽선 1px로 16×16을 맞췄다. swap이 키가 아니라 색 값 기준이라 처음엔 삼색이 잘못 칠해져 얼룩 자리 색을 조금 다르게 바꿔 고쳤다고 보고
프롬프트 전문 보기
/pxl-pixel-art 16×16 캐릭터 스프라이트 '등대지기 고양이'를 그려 줘. 털색만 바꾼 변형 2종(회색 줄무늬, 삼색)도 만들고, 세 마리를 스프라이트 시트 하나(+JSON)로 묶어 줘. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
16×16 인벤토리 아이콘 3개(코르크 마개 물약 병, 비스듬히 놓인 놋쇠 열쇠, 칼집 세 줄 호밀빵)와 50×16 시트(+JSON). 첫 열쇠 이빨이 뭉쳐 보여 한 번 다시 그렸다고 보고
run02 · 16×16 인벤토리 아이콘 3개(코르크 마개 물약 병, 비스듬히 놓인 놋쇠 열쇠, 칼집 세 줄 호밀빵)와 50×16 시트(+JSON). 첫 열쇠 이빨이 뭉쳐 보여 한 번 다시 그렸다고 보고
프롬프트 전문 보기
/pxl-pixel-art Draw a set of three 16×16 inventory icons for a fantasy adventure game: a glass potion bottle with a cork, an old brass key, and a round loaf of rye bread. Pack the three icons into one sprite sheet with JSON. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
내장 팔레트 endesga32로 위에서 본 16×16 타일 3종(풀밭·흙길·연못 물)을 만들고 tilemap으로 10×7칸을 깐 160×112 '연못가 오솔길'. 타일은 rflip으로 무작위로 뒤집고, 연못 둘레 진흙 둑·길 가장자리 풀은 따로 레이어로 그렸다. 결과 보고의 파일 경로(out/grass.png 등)는 실제 위치(out/sprites/·out/scenes/)와 다르다
run03 · 내장 팔레트 endesga32로 위에서 본 16×16 타일 3종(풀밭·흙길·연못 물)을 만들고 tilemap으로 10×7칸을 깐 160×112 '연못가 오솔길'. 타일은 rflip으로 무작위로 뒤집고, 연못 둘레 진흙 둑·길 가장자리 풀은 따로 레이어로 그렸다. 결과 보고의 파일 경로(out/grass.png 등)는 실제 위치(out/sprites/·out/scenes/)와 다르다
프롬프트 전문 보기
/pxl-pixel-art 위에서 내려다보는 16×16 타일 3종(풀밭, 흙길, 연못 물)을 만들고, 이 타일들로 tilemap을 써서 160×112 장면 '연못가 오솔길'을 깔아 줘. 타일끼리 이어 붙여도 이음매가 튀지 않게 하고, 팔레트는 내장 endesga32를 써 줘. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
32×32 '우산 쓴 우편배달 너구리' 대기 애니메이션 6프레임: 빨간 우산·파란 제복·우편가방, 몸이 0~1px 오르내리고 줄무늬 꼬리 끝이 흔들린다. 30×30에 외곽선을 더해 32×32. 6fps(약 167ms)로 지정했고 GIF에는 1/100초 단위라 프레임당 170ms(한 바퀴 1.02초)로 저장됐다. 첫 빌드가 'fn is not a function' 오류로 한 번 실패해 고쳤다
움직임 영상 보기 · 6.1초 · 무음 · 결과 GIF를 시험자가 mp4로 옮긴 것

결과 GIF의 프레임을 시험자가 GIF에 적힌 프레임 길이대로 30fps 영상에 놓고, 짝수 정수배(10·12·32배)로 최근접 확대해 한 바퀴를 여러 번 이어 붙인 무음 mp4입니다. 화면 녹화가 아니고 pxl이나 모델이 만든 영상도 아닙니다.

run04 · 32×32 '우산 쓴 우편배달 너구리' 대기 애니메이션 6프레임: 빨간 우산·파란 제복·우편가방, 몸이 0~1px 오르내리고 줄무늬 꼬리 끝이 흔들린다. 30×30에 외곽선을 더해 32×32. 6fps(약 167ms)로 지정했고 GIF에는 1/100초 단위라 프레임당 170ms(한 바퀴 1.02초)로 저장됐다. 첫 빌드가 'fn is not a function' 오류로 한 번 실패해 고쳤다
프롬프트 전문 보기
/pxl-pixel-art 32×32 캐릭터 '우산 쓴 우편배달 너구리'의 대기(idle) 애니메이션을 만들어 줘. 숨 쉬듯 몸이 1px 오르내리고 꼬리가 살랑이는 4~6프레임 반복 애니메이션이고, GIF로도 뽑아 줘. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
24×32 양철 로봇 정원사 옆모습 걷기 6프레임(10fps, 한 바퀴 0.6초): 깡통 머리에 새싹 안테나, 물뿌리개에서 물방울이 떨어진다. 74×65 시트(3×2 배치)와 TexturePacker 형식 JSON(프레임마다 100ms, frameTags). 본문에 스킬 이름을 적자 Skill 도구로 불렀다
움직임 영상 보기 · 6.0초 · 무음 · 결과 GIF를 시험자가 mp4로 옮긴 것

결과 GIF의 프레임을 시험자가 GIF에 적힌 프레임 길이대로 30fps 영상에 놓고, 짝수 정수배(10·12·32배)로 최근접 확대해 한 바퀴를 여러 번 이어 붙인 무음 mp4입니다. 화면 녹화가 아니고 pxl이나 모델이 만든 영상도 아닙니다.

run05 · 24×32 양철 로봇 정원사 옆모습 걷기 6프레임(10fps, 한 바퀴 0.6초): 깡통 머리에 새싹 안테나, 물뿌리개에서 물방울이 떨어진다. 74×65 시트(3×2 배치)와 TexturePacker 형식 JSON(프레임마다 100ms, frameTags). 본문에 스킬 이름을 적자 Skill 도구로 불렀다
프롬프트 전문 보기
Use the pxl-pixel-art skill to make a side-view walk cycle for a 24×32 character, a little tin robot gardener carrying a watering can: 6 frames at 10 fps, exported as an animated GIF plus a sprite sheet PNG with JSON frame data that a game engine can load. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
32×32 마법 효과 8프레임(10fps, 0.8초): 파란 불꽃 여덟 개가 소용돌이치며 모여 빛나는 별이 됐다가 열두 갈래로 터지며 사라진다. glow()를 두 번(불꽃 반경 3px·별 반경 6px, bands로 띠 진 빛) 썼고, glow가 투명 픽셀에는 번지지 않아 배경을 짙은 남색으로 칠했다고 보고
움직임 영상 보기 · 6.4초 · 무음 · 결과 GIF를 시험자가 mp4로 옮긴 것

결과 GIF의 프레임을 시험자가 GIF에 적힌 프레임 길이대로 30fps 영상에 놓고, 짝수 정수배(10·12·32배)로 최근접 확대해 한 바퀴를 여러 번 이어 붙인 무음 mp4입니다. 화면 녹화가 아니고 pxl이나 모델이 만든 영상도 아닙니다.

run08 · 32×32 마법 효과 8프레임(10fps, 0.8초): 파란 불꽃 여덟 개가 소용돌이치며 모여 빛나는 별이 됐다가 열두 갈래로 터지며 사라진다. glow()를 두 번(불꽃 반경 3px·별 반경 6px, bands로 띠 진 빛) 썼고, glow가 투명 픽셀에는 번지지 않아 배경을 짙은 남색으로 칠했다고 보고
프롬프트 전문 보기
/pxl-pixel-art Create a 32×32 spell effect animation: a swirl of blue sparks gathers into a small glowing star, then bursts outward and fades. 8 frames, use glow() for the sparks, and export the GIF. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
스킬·pxl 이름 없이 자연어로만 요청했는데 모델이 첫 도구 호출로 Skill(pxl-pixel-art)을 스스로 불러 16×16 몬스터 3종을 그렸다: 흰 점박이 빨간 갓의 버섯 정령, 머리에 이끼가 덮인 회색 돌 골렘, 배가 노랗게 빛나는 보라 박쥐(좌우 대칭, 외곽선 1px). 그림 코드 파일 이름(monsters.px.js)도 스스로 정했다
run09 · 스킬·pxl 이름 없이 자연어로만 요청했는데 모델이 첫 도구 호출로 Skill(pxl-pixel-art)을 스스로 불러 16×16 몬스터 3종을 그렸다: 흰 점박이 빨간 갓의 버섯 정령, 머리에 이끼가 덮인 회색 돌 골렘, 배가 노랗게 빛나는 보라 박쥐(좌우 대칭, 외곽선 1px). 그림 코드 파일 이름(monsters.px.js)도 스스로 정했다
프롬프트 전문 보기
작은 게임에 쓸 픽셀아트 몬스터 3종을 그려 줘: 버섯 정령, 이끼 낀 돌 골렘, 반딧불 박쥐. 각각 16×16이고 테두리가 있는 귀여운 스타일로, PNG 파일로 저장해 줘. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 결과 PNG는 ./out/ 폴더 아래에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다. - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. - 15분 시간 제한이 있다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), 파이썬 실행이 막혀 있다. 막히면 우회하지 않는다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일과 크기(픽셀)를 짧게 알려 준다.
3/4 시점 128×96 '다락방 바느질 작업실': 비스듬한 천장 널판, 십자 창살 둥근 창과 바닥에 비친 햇빛, 천이 걸쳐진 재봉틀 책상(36×28)·실타래 바구니(22×17)·보라 방석 위 잠든 강아지(26×17, 2프레임 각 700ms). 강아지를 애니메이션으로 장면에 찍자 장면도 2프레임 GIF(1.4초 반복)로 나왔다. 처음 강아지가 빵 덩어리처럼 보여 머리를 고쳤다고 보고
움직임 영상 보기 · 7.0초 · 무음 · 결과 GIF를 시험자가 mp4로 옮긴 것

결과 GIF의 프레임을 시험자가 GIF에 적힌 프레임 길이대로 30fps 영상에 놓고, 짝수 정수배(10·12·32배)로 최근접 확대해 한 바퀴를 여러 번 이어 붙인 무음 mp4입니다. 화면 녹화가 아니고 pxl이나 모델이 만든 영상도 아닙니다.

run10 · 3/4 시점 128×96 '다락방 바느질 작업실': 비스듬한 천장 널판, 십자 창살 둥근 창과 바닥에 비친 햇빛, 천이 걸쳐진 재봉틀 책상(36×28)·실타래 바구니(22×17)·보라 방석 위 잠든 강아지(26×17, 2프레임 각 700ms). 강아지를 애니메이션으로 장면에 찍자 장면도 2프레임 GIF(1.4초 반복)로 나왔다. 처음 강아지가 빵 덩어리처럼 보여 머리를 고쳤다고 보고
프롬프트 전문 보기
/pxl-pixel-art 3/4 시점 RPG 방 장면(128×96) '다락방 바느질 작업실'을 그려 줘: 나무 바닥, 둥근 창, 재봉틀 책상, 실타래 바구니, 방석 위에 잠든 강아지. 재봉틀 책상·실타래 바구니·잠든 강아지는 스프라이트로 따로 만들고, 강아지는 숨 쉬는 2프레임 애니메이션이라 장면도 GIF로 움직이게 해 줘. [시험 진행 메모] - 이 작업 폴더는 빈 새 프로젝트다. 그림 코드는 ./art.px.js 하나에 쓰고, 결과는 기본 출력 위치 ./out/에 둔다. - 요청한 픽셀 크기는 최종 PNG 기준이다(outline이 캔버스를 1px씩 키우는 것까지 포함). - 이번 결과물은 스프라이트 3개·장면 1개·애니메이션 1개 안쪽으로 한다(스프라이트 시트는 따로 세지 않는다). - 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다. 스킬 폴더의 examples/는 문법 참고용으로만 본다. - 15분 시간 제한이 있다. 미리보기 확인과 고치기는 몇 번이면 충분하다. - 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), node로 다른 스크립트 실행, pxl serve(라이브 뷰어는 시험자가 따로 녹화한다)가 막혀 있다. 막히면 우회하지 말고 build·ascii·미리보기 PNG로 확인한다. - 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다. - 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.