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에 복제 · 해 보지 못함)
시험한 호출 · 설치 뒤 Claude Code에서 (12번 중 10번이 /pxl-pixel-art로 시작)
/pxl-pixel-art <그리고 싶은 것과 최종 PNG 크기를 적은 요청>
서로 다른 요청 12개로 12번 직접 실행해 12번 모두 요청한 크기의 PNG가 나왔습니다. 다만 움직이는 결과는 모델이 GIF를 재생해 보지 않고 미리보기나 첫 프레임으로만 확인했습니다.
12회성공 실행
12회전체 실행
122초평균 소요
필요 조건
Claude Code(시험 2.1.304. README는 Codex·Cursor 같은 다른 에이전트도 SKILL.md를 가리키면 된다고 안내하지만 해 보지 못했다)
git
Node.js 22.18 이상(시험 v22.23.3). 낮으면 bin/pxl.js가 'pxl needs Node >= 22.18'을 내고 종료 코드 2로 멈춘다(이 장비의 /usr/bin/node 18.19.1로 확인)
npm install 불필요(런타임 의존성 0, TypeScript 소스를 Node 타입 제거로 바로 실행)
API 키·유료 서비스 불필요. 라이브 뷰어(serve)는 선택, 아무 브라우저(127.0.0.1)
만든 이는 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.
써 보니
부르는 법: 10번은 /pxl-pixel-art로 시작했고, run05는 본문에 스킬 이름을 적었으며, run09는 스킬이나 pxl 이름 없이 자연어로만('작은 게임에 쓸 픽셀아트 몬스터 3종을 그려 줘: …') 요청했습니다. 12번 모두 모델이 pxl-pixel-art를 불렀고 run09도 첫 도구 호출로 Skill을 스스로 불렀습니다. 다만 시험 설정은 스킬이 20개뿐인(pxl-pixel-art와 Claude Code 내장 19개) 비대화형 claude -p였고 자연어 요청은 한 번뿐이라, 스킬이 많은 환경이나 대화형 세션에서도 그런지는 말할 수 없습니다.
크기는 '최종 PNG 기준'으로 적으세요: 시험 요청 12개에는 모두 '요청한 픽셀 크기는 최종 PNG 기준'이라는 시험 진행 메모가 붙었고(run09 외에는 'outline이 캔버스를 1px씩 키우는 것까지 포함'도 적었습니다), 12번 모두 요청한 크기를 맞췄습니다. SKILL.md가 outline이 각 변을 1px씩 키운다고 적고 있어서, 모델은 16×16 요청을 14×14로 그린 뒤 외곽선을 더했습니다(run01·02·09. 32×32는 30×30, 24×32는 22×30으로 그렸습니다). 이 메모 없이 한 요청은 시험하지 않았습니다.
확인은 미리보기 PNG로: SKILL.md의 흐름은 그림 파일 쓰기, build, 확대 미리보기(out/_preview) 보기, 고치기입니다. 모델은 build를 1~4번(12번 합계 29번) 돌리고 결과 미리보기 PNG를 2~4번 열어 봤으며, 두 번 이상 build해 고친 실행이 11번이었습니다(run09만 한 번에 끝남). 정확한 픽셀 수정에는 pxl ascii가 이미지보다 싸다고 SKILL.md가 적지만, 시험에서는 run01에서만 2번 썼습니다.
움직임은 직접 열어 보세요: 모델은 GIF를 재생해 보지 않고 프레임을 나란히 놓은 미리보기나 첫 프레임으로만 확인했습니다(run04는 'GIF 파일은 만들어진 것만 확인', run12는 '첫 프레임뿐'이라고 밝혔습니다). 시험자가 GIF 9개를 프레임마다 열어 보니 빈 프레임은 없었고 프레임 수는 모두 결과 보고와 같았습니다. GIF는 프레임 길이를 1/100초 단위로 저장해서(레포 src/node/gif.ts) 8fps(125ms)가 130ms로, 6fps(167ms)가 170ms로 저장됩니다. 그래서 run12의 '한 바퀴 2초'는 GIF에서 2.08초였는데, 모델의 결과 보고에는 이 차이가 없었습니다.
걸리기 쉬운 곳: swap(털색만 바꾼 변형)은 팔레트 키가 아니라 실제 색 값을 기준으로 바뀝니다(run01에서 얼룩 색이 털색과 같은 값이라 삼색 변형이 잘못 칠해졌고, 모델이 얼룩 색 값을 살짝 바꿔 고쳤습니다). glow()는 투명 픽셀에는 번지지 않아서(reference.md에도 적혀 있습니다) run08은 배경을 짙은 남색으로 칠했습니다. 빌드 오류는 2번(run04 'fn is not a function', run06 scatter의 첫 인자)이었고 메시지의 파일:줄:열과 사용법을 보고 바로 고쳤습니다. 결과 파일은 그림 파일 옆 out/의 sprites/·scenes/·anims/ 아래에 쌓이는데, run03의 결과 보고는 경로를 out/grass.png처럼 틀리게 적었으니 위치는 직접 확인하세요.
라이브 뷰어(pxl serve): README와 SKILL.md는 사용자가 원하면 serve를 띄워 그리는 과정을 보게 하라고 안내합니다(저장할 때마다 다시 그리고 고친 그림의 그리기 단계를 재생). 시험에서는 모델이 쓰지 않았고(시험 진행 메모와 권한으로 막음), 시험자가 run06·run07의 그림 파일로 따로 띄워 봤습니다(run06은 234단계, run07은 57단계 재생. 그 녹화는 이 페이지에 싣지 않았습니다). 뷰어는 127.0.0.1에만 열리고 인증은 없습니다.
그림 파일은 코드입니다: .px.js는 node:vm에서 실행되는 JavaScript이고 vm은 보안 경계가 아닙니다(시험자가 격리 환경에서 vm 밖 process에 닿는 것을 확인했습니다). 남이 준 그림 파일을 build·serve하는 것은 그 코드를 내 권한으로 실행하는 것과 같으니 읽어 본 뒤에 하세요. include()도 아무 경로의 파일을 코드로 실행합니다. 스킬을 쓰면 그림 파일은 Claude가 쓰는데, 시험에서는 그 코드를 시험자가 만든 격리 장치(bubblewrap: 홈 폴더가 안 보이고 네트워크가 없고 샌드박스만 쓸 수 있음) 안에서 돌렸고, 이 장치는 사용자 설치에는 없습니다.
시간·비용: claude-opus-5-5(--effort high), Claude Code 2.1.304로 2026년 10월 23일 12시 56분부터 13시 8분까지(한국 시간) 실행을 2~3개씩 동시에 돌렸습니다. 한 번에 1.3~2.9분(78.6~176.3초), 0.24~0.59달러가 들었고 12번 합계는 5.25달러입니다. 실행마다 예산 상한 2달러(--max-budget-usd 2)를 걸었고 상한에 걸린 실행은 없었습니다.
막힌 도구 호출: 권한·셸 안전 검사로 실행 전에 막힌 호출은 실행마다 1~3번, 합계 18번이었습니다(시험 설정의 허용 목록 때문이며 스킬 탓이 아닙니다). 스킬 폴더를 셸로 훑으려던 것 6번, build 출력을 head·tail로 거르려던 것 4번, sed -i로 고치려던 것 3번 같은 호출이었고 모델은 Read·Grep·Edit 도구로 바꿔 이어 갔습니다. 그 밖의 도구 오류는 3번(빌드 오류 2·Edit 대상 문자열 없음 1)이고, 두 수는 따로 센 값입니다.
시험하지 않은 것: 방법 1(전역 ~/.claude/skills에 clone), README Quick start의 npx github:crsolver/claude-pxl build art.px.js(GitHub에서 받아 prepare 스크립트를 돌리는 원격 실행이라 쓰지 않았습니다), 모델이 pxl serve를 직접 띄우는 단계, Claude Code 말고 다른 에이전트(README는 Codex·Cursor 같은 에이전트에는 SKILL.md를 가리키고 CLI가 node <pxl 경로>/bin/pxl.js라고 알려 주라고 안내합니다). 이 페이지의 pxl은 crsolver/claude-pxl의 pxl이고, 같은 이름의 다른 프로젝트가 있을 수 있어 레포와 함께 불렀습니다.
결과물 12개
카드 한 장은 실행 한 번의 대표 화면이고, 누르면 크게 열립니다. 그림은 모델이 pxl로 만든 PNG이고, 제목과 배치, 그림 밑 '이름·원본 크기·배율' 라벨은 시험자가 결과 PNG를 정수배 최근접(NEAREST) 확대로 합성하며 붙인 것입니다(투명 배경 그림은 밝은 판 위에 놓았고, 영어 이름은 모델이 정한 파일 이름입니다). 성공 12번을 모두 실었습니다. 움직이는 결과가 있는 6번(run04·05·08·10·11·12)의 '움직임 영상 보기'는 시험자가 화면을 녹화한 것이 아니라 결과 GIF를 mp4로 옮긴 무음 영상입니다. '프롬프트 전문 보기'를 누르면 요청 전문이 펼쳐집니다(433~858자: 요청 뒤에 시험 진행 메모가 이어집니다). 테두리 카드는 결과 종류가 다른 대표입니다: 한옥 마당 반복 GIF(run12), 조명 장면(run07), 비 오는 밤 반복 GIF(run11), 소품을 놓은 간이역 장면(run06).
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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
움직임 영상 보기 · 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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
움직임 영상 보기 · 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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
움직임 영상 보기 · 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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
움직임 영상 보기 · 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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
움직임 영상 보기 · 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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.
run09 · 스킬·pxl 이름 없이 자연어로만 요청했는데 모델이 첫 도구 호출로 Skill(pxl-pixel-art)을 스스로 불러 16×16 몬스터 3종을 그렸다: 흰 점박이 빨간 갓의 버섯 정령, 머리에 이끼가 덮인 회색 돌 골렘, 배가 노랗게 빛나는 보라 박쥐(좌우 대칭, 외곽선 1px). 그림 코드 파일 이름(monsters.px.js)도 스스로 정했다프롬프트 전문 보기
작은 게임에 쓸 픽셀아트 몬스터 3종을 그려 줘: 버섯 정령, 이끼 낀 돌 골렘, 반딧불 박쥐. 각각 16×16이고 테두리가 있는 귀여운 스타일로, PNG 파일로 저장해 줘.
[시험 진행 메모]
- 이 작업 폴더는 빈 새 프로젝트다. 결과 PNG는 ./out/ 폴더 아래에 둔다.
- 요청한 픽셀 크기는 최종 PNG 기준이다.
- 자체 소재로 새로 그린다. 상용 게임·실존 브랜드의 이름·캐릭터·그래픽을 따라 하지 않고, 그림 속에 글자를 넣지 않는다.
- 15분 시간 제한이 있다.
- 이 시험 환경에서는 패키지 설치, 네트워크 명령, 파일 지우기(rm), 파이썬 실행이 막혀 있다. 막히면 우회하지 않는다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일과 크기(픽셀)를 짧게 알려 준다.
움직임 영상 보기 · 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로 확인한다.
- 비대화형 실행이라 중간 질문에 답할 사람이 없다. 정할 것이 있으면 스스로 정하고 결과 보고에 적는다.
- 끝나면 만든 파일, 크기(픽셀), 프레임 수, 불러온 스킬 이름을 짧게 알려 준다.