بنقرة واحدة
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) 처리 여부 확인.