game-qa

star 2

Unity 게임 클라이언트 + 게임 서버 QA 자동화 (AD-93 W5: Phase A~H 정합). GodBlade/바둑이/맞고 전용. Unity MCP run_tests + .NET bot 빌드 + 소켓 스모크 + C# 정적분석. /qa Phase A~H와 동일 패턴 — 자동 브랜치 / bug-report 6하원칙+Failure Attribution / healer 라우팅 / cr-* / develop 자동 머지.

moongci38-oss By moongci38-oss schedule Updated 6/16/2026

name: game-qa description: "Unity 게임 클라이언트 + 게임 서버 QA 자동화 (AD-93 W5: Phase AH 정합). GodBlade/바둑이/맞고 전용. Unity MCP run_tests + .NET bot 빌드 + 소켓 스모크 + C# 정적분석. /qa Phase AH와 동일 패턴 — 자동 브랜치 / bug-report 6하원칙+Failure Attribution / healer 라우팅 / cr-* / develop 자동 머지." role: orchestrator

game-qa — 게임 프로젝트 QA (Phase A~H 정합)

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 참조.

실행 순서 (4단계)

1. 프로젝트 감지

# baduggi / matgo / GodBlade / 기타 자동 감지
PROJECT=$(basename "$(pwd)")
# project-stacks.md에서 해당 프로젝트 스택 확인

references/project-stacks.md 읽어 대상 프로젝트 서버·봇·Unity 경로 확인.

2. Unity MCP 테스트 (우선)

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 없는 경우 (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

3. 서버/봇 빌드 + 소켓 스모크

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

4. 리포트 생성

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 통합 (계획서 P2-1)

병렬/다단계 실행 = 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.

FAIL 라우팅 + 재시도 루프 [BOUNDED]

추정=보조, 결정론 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단계 재실행 금지.

자동 평가 — GATING eval-rubric (완료 전 필수 통과)

호출 시점: 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 verdict = PASS 또는 WARN → 완료 허용
  • eval-rubric verdict = FAIL → game-qa FAIL 처리 (위 재시도 루프 재진입 또는 [STOP])
  • EVAL_RUBRIC_AUTO=off 시 → 완료 전 사용자 수동 평가 요청 출력

자동 비활성: EVAL_RUBRIC_AUTO=off

Worker-Evaluator 분리 확인 (P2 감사): 위 eval-rubric Agent()는 executor reasoning context를 수신하지 않는다 (# executor reasoning context 미포함 — 루브릭 + 산출물만 입력 주석 명시). 분리가 이미 올바르게 구현되어 있으므로 추가 변경 불필요.

Install via CLI
npx skills add https://github.com/moongci38-oss/forge --skill game-qa
Repository Details
star Stars 2
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
moongci38-oss
moongci38-oss Explore all skills →