localizationlisted
Install: claude install-skill snwlee/Nereus
# localization
nereus:common 규칙을 따른다. 담당 에이전트: architect.
**엔진과 무관하다** — Luau 든 C# 이든 Dart 든 폰트 라이선스와 용량 예산은 같은 기준으로 본다.
## 0. 이 스킬은 게임 고유분만 갖는다
현지화 검사기는 **`nereus-l10n` 으로 이관했다**(2026-09-13). 이유는 측정이다:
| 파일 | 줄 | 게임 고유 토큰 |
|---|---|---|
| `l10n-scan.mjs` | 99 | **0건** |
| `font-check.mjs` | 81 | **2곳** — 임베딩 종류, 장르 예산 |
하드코딩 문자열·로케일 키 누락·확장률 폭 초과·스크립트 커버리지는 **게임과 무관**하다.
배경화면 앱도 똑같이 필요하고, 그 저장소는 `nereus-game` 을 깔 이유가 없다.
게임 전용 플러그인에 두면 **비게임 제품에서는 현지화 검사가 통째로 없다.**
대사·자막 현지화 대비는 원래부터 `nereus-game:narrative` §4 가 갖는다. 여기가 아니다.
| 무엇 | 어디 |
|---|---|
| 소스 문자열·로케일 키·폭 | `nereus-l10n:l10n` |
| 스토어 등재 텍스트·ASO | `nereus-l10n:storelisting` |
| 스크립트 커버리지·두부·RTL | `nereus-l10n:typeface` |
| 대사·자막 분기 | `nereus-game:narrative` |
| **게임 임베딩 라이선스·장르 폰트 예산** | **여기** |
`nereus-l10n` 은 동반 플러그인으로 선언되어 있다. **이 스킬은 그 검사기를 직접 부르지 않는다** —
형제 플러그인을 프로세스로 부르면 설치 조합에 따라 조용히 깨진다. 사용자가 설치하면 그쪽 스킬이 뜬다.
## 1. 게임 임베딩 라이선스 — 요구 종류를 게임이 정한다
폰트 검사기는 요구 임베딩 종류를 **입력으로 받는다**. 게임은 `"game"` 을 넘긴다.
```json
{ "requiredEmbedding": "game" }
```
**게임 임베딩은 별개 권리다.** 상당수 폰트가 게임 임베딩을 금지하거나 별도 계약을 요구한다.
웹폰트 라이선스로 게임에 넣는 것은 위반이고, 데스크톱 라이선스도 게임을 덮지 않는 경우가 많다.
**안 주면 검사를 건너뛰는 것이 아니라 `required-embedding-undeclared` 로 낸다.**
모름은 허용이 아니다 — 건너뛰면 검사하지 않은 것이 통과로 읽힌다.
## 2. 장르 폰트 예산 — 값으로 주입한다
장르 프로파일(`profiles.mjs`)은 게임 고유다. 검사기가 장르를 알면 비게임 제품에서 못 쓴다.
그래서 **장르에서 꺼낸 값만** 넘긴다.
```json
{ "typography": { "maxFontKb": 900, "minSizePx": 18 } }
```
`profile.typography` 를 그대로 넘기면 된다. 기준을 안 주면 예산·크기는 판정되지 않고
`unmeasured