unitylisted
Install: claude install-skill snwlee/Nereus
# unity
nereus:common 규칙을 따른다. 워크플로는 **nereus 코어가 소유한다** — 이 스킬은 Unity 고유 절차만 담는다.
도메인 판단(레벨·스토리·UI/UX·에셋·밸런싱)은 도메인 스킬이 하고, 여기서 되풀이하지 않는다.
## 1. 프로젝트 전제
`ProjectSettings/ProjectVersion.txt` 가 있어야 Unity 스택으로 인식된다.
테스트 러너는 `lib/unity-stack.mjs` 의 `detectUnityRunner` 가 판정한다 —
`Packages/manifest.json` 의 `dependencies` 에 `com.unity.test-framework` 가 **실제로 들어 있어야** 한다.
코어의 확장 선언은 파일 존재만 보지만 `detectUnityRunner` 는 매니페스트 내용까지 읽는다.
프레임워크 없이 러너를 돌려주면 TDD 게이트가 매번 실패하고, 그러면 게이트를 꺼버리게 되기 때문이다.
## 2. 테스트는 헤드리스로 돈다
```
Unity -runTests -batchmode -nographics -quit
```
- EditMode 는 빠르다. 순수 로직은 전부 여기로 민다.
- PlayMode 는 느리다. 씬·물리·코루틴이 실제로 필요한 것만 남긴다.
- **로직을 MonoBehaviour 에서 떼어내는 설계가 곧 EditMode 커버리지다.** 이걸 spec 단계에서 태스크로 쪼갠다.
- CI 에서는 라이선스 활성화가 선행되어야 한다. 이것이 Unity CI 의 가장 흔한 실패 지점이다.
- **TDD 게이트가 안 켜지면 `Packages/manifest.json` 부터 본다.** 매니페스트가 깨져 파싱에 실패해도
"테스트 프레임워크 없음"과 똑같이 러너가 `null` 이 되어 게이트가 조용히 꺼진다. 둘은 구분되지 않는다.
## 3. 2D 폰게임에서 봐야 하는 것
| 축 | 기준 |
|---|---|
| 해상도 | 종횡비 범위를 먼저 정한다(18:9 ~ 4:3). 안전영역 밖에 정보를 두지 않는다 |
| 터치 | 최소 타겟 44dp. 손가락이 누른 지점을 가린다는 것을 전제로 피드백 위치를 잡는다 |
| 발열·배터리 | 프레임 상한을 건다. 60 을 항상 쓰는 것보다 30 고정이 나은 구간이 있다 |
| 파편화 | 최저 사양 기기를 먼저 정하고 거기서 측정한다. 최신 기기에서만 재면 출시 후에 안다 |
| 빌드 크기 | 텍스처 압축 포맷을 플랫폼별로 지정한다. 기본값이면 크기가 몇 배가 된다 |
스프라이트 아틀라스를 쓴다. 드로우콜은 2D 에서 가장 흔한 성능 문제다.
## 4. Unity 공식 플러그인에 위임한다
Unity 가 낸 first-party 플러그인이 있다 — `unity@unity-agent-plugin`.
스킬 29개 + Unity CLI + Unity MCP 서버(에디터 실시간 제어). Unity 팀이 직접 쓰고 보안 검토하며
**엔진 업데이트와 함께 갱신한다.** 그래서 엔진 API 절차는 우리가 들고 있지 않는다 —