원클릭으로
game-qa
Unity 게임 클라이언트와 게임 서버 QA를 자동화한다. 게임 빌드 검증이나 게임 QA를 요청할 때 사용한다.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Unity 게임 클라이언트와 게임 서버 QA를 자동화한다. 게임 빌드 검증이나 게임 QA를 요청할 때 사용한다.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Multi-worker 검수 스킬 (Codex + Gemini Double / Opus + Codex + Gemini Triple). 단일 Codex 검수 대비 100% 보완 카테고리 커버. 트리거: /cr-multi, /cr-double, /cr-triple, plan/spec 저장 후 자동(CR_MULTI_AUTO=on), plateau 3회 자동 승격.
Forge 하네스 읽기전용 레거시 감사: 낡은룰/중복/과대 전역컨텍스트/넓은 Skill/불필요 Hook·MCP/제품중복 분류. 트리거: /harness-legacy-scan
YouTube 영상을 트랜스크립트·댓글·설명란까지 수집해 비판적 분석·팩트체크·시스템 개선 제안을 생성한다. 사용자가 YouTube URL을 보내거나 영상 분석을 요청할 때 사용한다.
REST API 엔드포인트 HTTP 레벨 E2E 자동 테스트. Spec 또는 OpenAPI(Swagger) YAML/JSON을 읽어 엔드포인트별 테스트 케이스(happy path/인증 실패/잘못된 입력/경계값)를 자동 생성하고 curl로 실행한다. 응답 스키마를 OpenAPI 스펙과 대조해 드리프트를 감지한다. /qa 스킬이 서버/API 프로젝트 감지 시 자동 트리거. 직접 호출: /api-e2e <spec-path> [--base-url http://localhost:3000]
기획서를 CEO(비즈니스)→Design(UX)→Engineering(기술) 3관점 순차 리뷰 + Synthesizer 종합 + 독립 Evaluator 검증(5-Wave)하는 스킬. Phase 3 에이전트 회의 후 자동 트리거. (적대적 Codex 검수는 cr-triple/codex-review 별도 게이트.)
PR 생성 전 develop 대비 feature 브랜치의 성능을 비교하는 스킬. 번들 크기, 테스트 시간, API 응답 시간을 측정. P7 PR 생성 전 자동 트리거.
| name | game-qa |
| description | Unity 게임 클라이언트와 게임 서버 QA를 자동화한다. 게임 빌드 검증이나 게임 QA를 요청할 때 사용한다. |
AD-93 W5: /qa 스킬과 동일한 Phase A~H 패턴 적용. game-qa는 Unity MCP 전용 T1/T2 대체.
역할: Unity MCP + 서버/봇 빌드 + 소켓 스모크 + 정적분석 통합 QA. Phase A~H 오케스트레이터.
전제: Unity MCP(CoderGamester/mcp-unity 또는 com.unity.ai.assistant) 게임 프로젝트 세션에 설치됨.
출력: docs/qa/game-qa-report.md + NUnit XML (docs/qa/artifacts/unity-test-results.xml)
프로젝트별 스택 → references/project-stacks.md 참조.
# baduggi / matgo / GodBlade / 기타 자동 감지
PROJECT=$(basename "$(pwd)")
# project-stacks.md에서 해당 프로젝트 스택 확인
references/project-stacks.md 읽어 대상 프로젝트 서버·봇·Unity 경로 확인.
MCP 도구 직접 호출 (Claude Code 세션에서 실행 시 노출됨):
run_tests(testPlatform: "editmode")
→ passed/failed/errors 파싱
→ FAIL > 0 → 실패 테스트명 + 에러메시지 수집 → 버그 리포트
get_console_logs(logType: "Error")
→ NullReferenceException / SocketException / ProtocolError 목록
# UI 버그 의심 시
capture_screenshot() → docs/qa/artifacts/game-shot-{N}.png
get_scene_summary() → 씬 상태 스냅샷
MCP 프리플라이트: MCP 도구 호출 전 엔진 브리지 헬스를 curl 1콜로 확인 (예: curl -s -o /dev/null -w '%{http_code}' --max-time 2 <MCP endpoint>). DOWN이면 툴 타임아웃을 기다리지 말고 즉시 사용자에게 에디터 기동 요청.
인게임 E2E 프로브 (런타임 GREEN 증거): 정적 검사·테스트가 전부 PASS여도 런타임 연출/표시 버그는 못 잡는다. 프로젝트 스코프 레시피가 있으면 로드해 따른다 — 예: GodBlade src/.claude/rules/unity-e2e-probe.md (Play 진입 → 이벤트 기반 UI 클릭 → 마커 로그 프로브(씬 저장 금지·종료 시 회수·씬 diff 0 확인) → 스크린샷 → DB 실측(DESCRIBE 먼저)). 엔진·UI 프레임워크 구현 디테일은 프로젝트 룰이 정본 — 이 스킬에 하드코딩하지 않는다.
MCP 없는 경우 (ToolSearch("unity run_tests") 결과 없음): Unity CLI 폴백.
"$UNITY_PATH" -batchmode -nographics -quit -projectPath "$CLIENT_DIR" -runTests -testPlatform editmode -testResults docs/qa/artifacts/unity-test-results.xml
scripts/game-verify.sh 실행:
bash ~/forge/.claude/skills/game-qa/scripts/game-verify.sh
검사 항목:
| ID | 내용 | 판정 |
|---|---|---|
| T-BUILD | dotnet build bot-dotnet8/ 또는 msbuild | FAIL |
| T-CONNECT | 서버 HTTP 헬스 + Socket.IO 핸드셰이크 | FAIL |
| T-STATIC | C# null체크 누락, TODO 과다 (>10건), 이벤트 상수 불일치 | WARN |
| T-BOT | BOT_SMOKE=1 시 봇 연결 스모크 | WARN |
docs/qa/game-qa-report.md:
# Game QA Report — {프로젝트명}
일시: {date} | 판정: PASS / WARN / FAIL
## Unity 테스트 (MCP/CLI)
passed: N | failed: N | errors: N
## 실패 테스트
- {테스트명}: {에러메시지}
## 콘솔 에러
- {에러타입}: {메시지} ({파일:라인})
## 서버/봇 빌드
- T-BUILD: PASS/FAIL
- T-CONNECT: PASS/FAIL
## 정적 분석 WARN
- {항목}: {파일:라인}
## 판정 근거
Unity FAIL {N}건 / 빌드 FAIL {N}건 → FAIL
WARN만 → WARN / 전체 0건 → PASS
병렬/다단계 실행 = Workflow 도구로 컨텍스트 격리 + resume 지원.
패턴: Detect → parallel(Unity테스트, 서버/봇빌드) → 집계 Report.
실행: Workflow({ script: Bash("cat ~/.claude/skills/game-qa/workflow.js"), args: { project } })
CLAUDE_CODE_DISABLE_WORKFLOWS=1 시 기존 4단계 직접 실행 방식 fallback.
추정=보조, 결정론 bound=max-cycles, 정확 enforcement=P4(agent-budget 훅)
Unity FAIL > 0 또는 빌드 FAIL > 0 발생 시 silent FAIL 금지 — 즉시 bounded 재시도:
QA_CYCLE=0
QA_MAX=2
ISSUE_HASH="" # sha256(실패테스트명:에러메시지 첫줄)
while [Unity FAIL > 0 또는 빌드 FAIL > 0] AND QA_CYCLE < QA_MAX:
QA_CYCLE += 1
NEW_HASH = sha256(실패테스트명:에러메시지 첫줄)
# same-issue stop: 동일 오류 2회 연속 = 자동 해소 불가
# GC5: QA_MAX=2이므로 1st cycle에서 즉시 NEW_HASH==ISSUE_HASH 체크 = 즉각 stop.
# forge-implement는 PEV_MAX=3 → PEV_CYCLE>=2 조건으로 1회 추가 시도 허용 — max 차이로 인한 의도적 비대칭.
# 근거: Unity 빌드/테스트 = 무거움(사이클 비용↑) → 보수적 max2. web 구현 반복 = 경량 → forge-implement max3.
if NEW_HASH == ISSUE_HASH:
→ [STOP] 동일 오류 반복 감지. Human 개입 필요. (QA_CYCLE 값 표시)
exit 4
ISSUE_HASH = NEW_HASH
# 라우팅 (game-qa = Unity, web-healer X)
→ /forge-fix (general fixer) 호출 — 새 fixer 작성 금지
· 실패 테스트명 + 에러메시지 전달
· C# / .NET 빌드 오류 컨텍스트 포함
# 실패 단계만 재실행 (전체 재실행 X)
if 직전 실패 = Unity 테스트:
→ Unity MCP run_tests 또는 Unity CLI 재실행 (§2 절차 그대로)
if 직전 실패 = 빌드(T-BUILD):
→ dotnet build 또는 msbuild 재실행 (§3 절차 그대로)
→ 결과 수집 → game-qa-report.md 업데이트
if 여전히 FAIL AND QA_CYCLE == QA_MAX:
→ [STOP] QA 재시도 {QA_MAX}회 초과. Human 개입 필요.
exit 4
루프 상한: max 2 cycles (결정론적 bound). same-issue stop: sha256(실패테스트명:에러메시지 첫줄) 이전 cycle과 동일 시 즉시 [STOP]. 라우팅 원칙: game-qa는 Unity/C# 환경 — web 전용 /healer X. /forge-fix (general) 재사용. 재실행 스코프: 실패한 단계(Unity 테스트 또는 빌드)만 재실행. 전체 4단계 재실행 금지.
호출 시점: docs/qa/game-qa-report.md 생성 후, 완료 선언 전 (게이팅 위치)
절차 (별도 evaluator agent — executor context 격리):
Agent(
role: evaluator, # executor reasoning context 미포함 — 루브릭 + 산출물만 입력
input: docs/qa/game-qa-report.md + eval rubric,
command: /eval-rubric --target docs/qa/game-qa-report.md
)
→ verdict(PASS/WARN/FAIL) + 4축 점수 수신
→ eval_cases.jsonl append — case_id: EC-game-qa-{N}
게이팅 규칙:
EVAL_RUBRIC_AUTO=off 시 → 완료 전 사용자 수동 평가 요청 출력자동 비활성: EVAL_RUBRIC_AUTO=off
Worker-Evaluator 분리 확인 (P2 감사): 위 eval-rubric Agent()는 executor reasoning context를 수신하지 않는다 (
# executor reasoning context 미포함 — 루브릭 + 산출물만 입력주석 명시). 분리가 이미 올바르게 구현되어 있으므로 추가 변경 불필요.