robloxlisted
Install: claude install-skill snwlee/Nereus
# roblox
nereus:common 규칙을 따른다. 워크플로(intake → spec → build → review → finish)는 **nereus 코어가 소유한다**.
이 스킬은 그 위에 얹히는 로블록스 고유 절차만 담는다.
## 1. 프로젝트 전제
Rojo 프로젝트여야 한다. `default.project.json` 이 없으면 로블록스 스택으로 인식되지 않고
TDD 게이트도 켜지지 않는다.
| 도구 | 역할 | 없으면 |
|---|---|---|
| `rojo` | 파일 ↔ Studio 동기화, rbxl 빌드 | **필수.** 없으면 이 스킬은 성립하지 않는다 |
| `lune` | 로컬 Luau 단위테스트(초 단위) | TDD 게이트가 꺼진다 |
| `stylua` · `selene` | 포맷·린트 | 편집 훅이 조용히 건너뛴다 |
| `luau-lsp` | 타입체크 | 정적 검사 1단이 빠진다 |
Studio 조작·플레이테스트는 **Roblox Studio 내장 MCP** 를 쓴다
(Assistant ⟩ … ⟩ Manage MCP Servers ⟩ Enable Studio as MCP server).
서드파티 로블록스 MCP 를 새로 설치하지 않는다 — 내장이 스크립트 편집·에셋 생성·Luau 실행·
플레이테스트(시작/정지·스크린샷·입력 시뮬)·API 문서를 모두 덮는다.
## 2. 테스트는 2단이다
| 단 | 무엇을 | 언제 | 명령 |
|---|---|---|---|
| 1 | 순수 Luau 로직 (DataModel 불필요) | build 게이트, 태스크마다 | `lune run tests` |
| 2 | DataModel·Roblox API 의존 통합 | finish 게이트 | Open Cloud **Luau Execution API** |
2단만 쓰면 태스크마다 업로드가 필요해 느리고, 1단만 쓰면 엔진 의존 코드가 검증되지 않는다.
**로직을 DataModel 에서 떼어내는 설계가 곧 1단 커버리지다** — 이것을 spec 단계에서 태스크로 쪼갠다.
finish 단계에서 2단을 시도한다:
```bash
node plugins/nereus-game/lib/roblox-gate.mjs # robloxStageTwo, 종료코드 0=통과
```
필요한 환경변수는 셋이다 — `ROBLOX_API_KEY` · `ROBLOX_UNIVERSE_ID` · `ROBLOX_PLACE_ID`.
**하나라도 없으면 미설정으로 통과시킨다**(실패가 아니다). 키가 없다고 finish 를 막으면
키 없는 모든 세션에서 마무리가 불가능해진다.
2단 CI 형태(참고용 청사진. `Roblox/place-ci-cd-demo` 는 아카이브된 샘플이라 의존하지 않는다):
`selene` → `stylua --check` → `rojo build` → 업로드 → Luau Execution → 배포.
태스크는 최대 5분, 플레이스당 동시 10개다. 그보다 긴 검증은 쪼갠다.
## 3. 리뷰 — 익스플로잇이 1순위다
멀티플레이