ワンクリックで
verify-login-flow
타이틀 씬의 로그인 흐름(MVVM), 어드레서블 로딩, 앱 업데이트 관리를 검증합니다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
타이틀 씬의 로그인 흐름(MVVM), 어드레서블 로딩, 앱 업데이트 관리를 검증합니다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
인게임 핵심 시스템(GameManager, UIManager), 초기화 순서 안전성, UI 데이터 바인딩을 검증합니다.
로비 UI의 팝업 관리 및 뒤로가기(ESC) 로직을 검증합니다. PopupManager 등록 및 중복 입력 처리 여부를 확인합니다.
프로젝트 전체의 사운드 구현 패턴을 검증합니다. 싱글톤(Singleton) 대신 인터페이스 주입(DI) 방식의 사용을 권장합니다.
세션 변경사항을 분석하여 검증 스킬 누락을 탐지합니다. 기존 스킬을 동적으로 탐색하고, 새 스킬을 생성하거나 기존 스킬을 업데이트한 뒤 GEMINI.md를 관리합니다.
플레이어 데이터의 DTO/Service 구조, 암호화 처리, 로컬 저장소 정합성을 검증합니다.
프로젝트의 모든 verify 스킬을 순차 실행하여 통합 검증 보고서를 생성합니다. 기능 구현 후, PR 전, 코드 리뷰 시 사용.
| name | verify-login-flow |
| description | 타이틀 씬의 로그인 흐름(MVVM), 어드레서블 로딩, 앱 업데이트 관리를 검증합니다. |
타이틀 씬에서 시작되는 게임 진입 프로세스의 안정성과 아키텍처 준수 여부를 검증합니다:
LoadAddressableManager가 에셋을 정상적으로 로드하고 다음 씬으로 전환하는지 확인LoginViewMVVM과 LoginViewModel 간의 데이터 바인딩 및 이벤트 구독 확인LoginViewModel이 IAuthenticationService를 통해 인증 로직을 수행하는지 확인AppUpdateManager가 시작 시 업데이트 가용성을 체크하는지 확인ScenePayloadDTO를 통해 로비로 데이터를 올바르게 전달하는지 확인AppUpdateManager) 관련 로직을 수정했을 때| File | Purpose |
|---|---|
Assets/_Game/Scripts/Title/LoadAddresaableManager.cs | 어드레서블 로딩 매니저 |
Assets/_Game/Scripts/Title/LoginViewMVVM.cs | 로그인 뷰 (MVVM View) |
Assets/_Game/Scripts/Title/LoginViewModel.cs | 로그인 뷰모델 (MVVM ViewModel) |
Assets/_Game/Scripts/Manager/AppUpdateManager.cs | 앱 업데이트 관리자 |
Assets/_Game/Scripts/Data/DTOs/ScenePayloadDTO.cs | 씬 전환 통합 페이로드 |
Assets/_Game/Scripts/Lobby/Core/LobbySceneCompositionRoot.cs | 로비 진입점 (페이로드 소비 확인용) |
LoadAddressableManager의 구현 방식과 코딩 표준 준수 여부를 확인합니다.
파일: Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
검사:
# 1. 클래스 명칭 오타 확인 (LoadAddresaableManager -> LoadAddressableManager 권장되나 현재 명칭 확인)
grep "class LoadAddresaableManager" Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
# 2. 어드레서블 초기화 호출 확인
grep "Addressables.InitializeAsync()" Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
PASS: 초기화 로직이 존재함 FAIL: 어드레서블 로딩 로직이 없거나 명칭이 일치하지 않음
View와 ViewModel 간의 결합도와 의존성 주입 구조를 확인합니다.
파일: Assets/_Game/Scripts/Title/LoginViewMVVM.cs, Assets/_Game/Scripts/Title/LoginViewModel.cs
검사:
# 1. ViewModel 생성 시 서비스 주입 확인
grep "m_viewModel = new LoginViewModel(m_serverManager.Auth)" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
# 2. View에서 ViewModel 이벤트 구독 확인
grep "m_viewModel.OnLoginSuccess += OnLoginSuccess" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
# 3. ViewModel이 IAuthenticationService를 사용하는지 확인
grep "private readonly IAuthenticationService m_authService" Assets/_Game/Scripts/Title/LoginViewModel.cs
PASS: 인터페이스 기반 DI 및 이벤트 바인딩이 확인됨
FAIL: 구체 클래스 직접 참조 또는 바인딩 누락
수정: IAuthenticationService 인터페이스 사용 및 BindViewModel 로직 보강
앱 시작 시 AppUpdateManager를 통해 업데이트를 확인하는지 검증하고, LoadAddresaableManager에서 리모트 데이터 동기화가 수행되는지 확인합니다.
파일: Assets/_Game/Scripts/Title/LoginViewMVVM.cs, Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
검사:
LoginViewMVVM.cs에서 앱 업데이트 체크 확인.LoadAddresaableManager.cs에서 UpdateAllRemoteDataAsync 호출 확인.# 1. 앱 업데이트 체크 확인
grep "await AppUpdateManager.Instance.CheckForUpdateAsync()" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
# 2. 리모트 데이터 동기화 수행 여부 확인
grep "UpdateAllRemoteDataAsync" Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
PASS: 업데이트 체크 및 리모트 동기화 로직이 올바른 위치에서 확인됨 FAIL: 호출 누락 또는 잘못된 위치에서 호출됨
로그인 성공 후 로비로 전환할 때 ScenePayloadDTO를 올바르게 구성하고 IsFirstLogin 플래그를 설정하는지 확인합니다.
파일: Assets/_Game/Scripts/Title/LoginViewMVVM.cs, Assets/_Game/Scripts/Lobby/Core/LobbySceneCompositionRoot.cs
검사:
# 1. LoginViewMVVM에서 IsFirstLogin = true 설정 확인
grep "IsFirstLogin = true" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
# 2. LobbySceneCompositionRoot에서 payload.IsFirstLogin 체크 확인
grep "if (payload.IsFirstLogin)" Assets/_Game/Scripts/Lobby/Core/LobbySceneCompositionRoot.cs
PASS: 타이틀에서 플래그를 설정하고 로비에서 이를 분기 조건으로 사용함
FAIL: 플래그 설정 누락 또는 로비에서 조건 없이 항상 서버 로드 시도
수정: ScenePayloadDTO 생성 시 IsFirstLogin = true 할당 및 로비 진입점에서 조건 처리
저장된 볼륨 설정이 적용된 상태에서 BGM이 재생되도록 LoadSoundSetting 호출이 Play 보다 선행되는지 확인합니다.
파일: Assets/_Game/Scripts/Title/LoginViewMVVM.cs
검사:
# LoadSoundSetting 호출이 Play(SoundKeys.Intro) 보다 위 라인에 있는지 확인
grep -nE "LoadSoundSetting|Play\(SoundKeys.Intro" Assets/_Game/Scripts/Title/LoginViewMVVM.cs
PASS: LoadSoundSetting 호출 라인 번호가 Play 호출 라인 번호보다 작음
FAIL: Play 이후에 설정이 로드되어 볼륨이 튀는 현상 발생 가능
수정: LoadSoundSetting() 호출을 BGM 재생 시점 위로 이동
| 검사 항목 | 상태 | 파일/상세 |
|---|---|---|
| 어드레서블 로딩 | PASS | LoadAddresaableManager 확인 |
| MVVM 바인딩 | PASS | LoginViewMVVM-LoginViewModel 연결됨 |
| 씬 전환 페이로드 | PASS | ScenePayloadDTO 및 IsFirstLogin 플래그 확인 |
LoadAddresaableManager는 인프라 성격상 싱글톤 사용이 허용됨.AppUpdateManager는 에디터나 iOS 환경에서는 동작하지 않으므로 플랫폼 분기(if) 처리 여부 확인.