بنقرة واحدة
verify-sound-system
프로젝트 전체의 사운드 구현 패턴을 검증합니다. 싱글톤(Singleton) 대신 인터페이스 주입(DI) 방식의 사용을 권장합니다.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
프로젝트 전체의 사운드 구현 패턴을 검증합니다. 싱글톤(Singleton) 대신 인터페이스 주입(DI) 방식의 사용을 권장합니다.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
인게임 핵심 시스템(GameManager, UIManager), 초기화 순서 안전성, UI 데이터 바인딩을 검증합니다.
로비 UI의 팝업 관리 및 뒤로가기(ESC) 로직을 검증합니다. PopupManager 등록 및 중복 입력 처리 여부를 확인합니다.
타이틀 씬의 로그인 흐름(MVVM), 어드레서블 로딩, 앱 업데이트 관리를 검증합니다.
세션 변경사항을 분석하여 검증 스킬 누락을 탐지합니다. 기존 스킬을 동적으로 탐색하고, 새 스킬을 생성하거나 기존 스킬을 업데이트한 뒤 GEMINI.md를 관리합니다.
플레이어 데이터의 DTO/Service 구조, 암호화 처리, 로컬 저장소 정합성을 검증합니다.
프로젝트의 모든 verify 스킬을 순차 실행하여 통합 검증 보고서를 생성합니다. 기능 구현 후, PR 전, 코드 리뷰 시 사용.
| name | verify-sound-system |
| description | 프로젝트 전체의 사운드 구현 패턴을 검증합니다. 싱글톤(Singleton) 대신 인터페이스 주입(DI) 방식의 사용을 권장합니다. |
사운드 재생 로직이 유지보수와 테스트가 용이한 의존성 주입(DI) 방식으로 구현되어 있는지 검증하고 권장합니다:
SoundManager.Instance 대신 ISoundManager 인터페이스 주입 권장ScenePayloadDTO) 및 초기화 시 사운드 서비스가 올바르게 전달되는지 확인AudioSource를 통한 부드러운 BGM 전환 및 자원 관리 확인SoundData를 통한 씬별 BGM 설정 및 activeSceneChanged 연동 확인SoundManager.PlaySound 정적 메서드 사용 지양 권장| File | Purpose |
|---|---|
Assets/_Game/Scripts/Data/Services/ISoundManager.cs | 사운드 서비스 인터페이스 |
Assets/_Game/Scripts/Lobby/SoundManager.cs | 사운드 매니저 구현체 (듀얼 소스 크로스페이드) |
Assets/_Game/Scripts/Data/SoundData.cs | BGM 매핑 정보가 포함된 SO 클래스 |
Assets/_Game/Scripts/Data/DTOs/ScenePayloadDTO.cs | 서비스 전달용 페이로드 |
Assets/_Game/Scripts/InGame/Manager/GameManager.cs | 인게임 BGM 키 정합성 검사 대상 |
Assets/_Game/Scripts/Lobby/LobbyUIViewManager.cs | 로비 서비스 주입 주체 |
클래스 내부에서 SoundManager.Instance를 직접 참조하는지 확인합니다. 인터페이스(ISoundManager)를 통한 주입 방식을 사용하도록 권장합니다.
파일: Assets/_Game/Scripts/**/*.cs
검사:
grep -r "SoundManager.Instance" Assets/_Game/Scripts --exclude-dir=External
권장:
m_soundManager와 같은 지역 필드를 사용하고, Init 또는 생성자에서 ISoundManager를 주입받음.SoundManager.PlaySound(...)와 같은 정적 헬퍼 함수 사용을 탐색합니다.
파일: Assets/_Game/Scripts/**/*.cs
검사:
grep -r "SoundManager.PlaySound" Assets/_Game/Scripts --exclude-dir=External
권장:
ISoundManager.Play(...) 메서드 호출로 전환 권장.씬 관리자들 및 내비게이터가 ISoundManager를 수신하여 하위 시스템으로 전달하는지 확인합니다.
파일: LobbyNavigator.cs, LobbyUIViewManager.cs, GameManager.cs
검사:
# 1. LobbyNavigator 생성자에서의 주입 확인
grep "public LobbyNavigator(.*InGame.Services.ISoundManager soundManager)" Assets/_Game/Scripts/Lobby/Core/LobbyNavigator.cs
# 2. LobbyNavigator에서 팝업 초기화 시 사운드 전달 확인
grep "m_currentOptionPopup.Initialize(m_soundManager);" Assets/_Game/Scripts/Lobby/Core/LobbyNavigator.cs
# 3. LobbyUIViewManager 등에서의 페이로드로부터 할당 확인
grep "scenePayload.SoundService" Assets/_Game/Scripts/Lobby/LobbyUIViewManager.cs
PASS: 모든 주입 및 전달 경로에서 인터페이스 기반 할당이 확인됨 FAIL: 주입이 누락되거나 싱글톤에 직접 의존함 수정: 생성자 주입 및 전달 코드 수정
듀얼 AudioSource와 씬 매핑 데이터가 올바르게 구현되어 있는지 확인합니다.
파일: SoundManager.cs, SoundData.cs
검사:
# 1. 듀얼 BGM 소스(A/B) 생성 및 초기화 확인
grep -E "m_bgmSourceA|m_bgmSourceB" Assets/_Game/Scripts/Lobby/SoundManager.cs
# 2. 씬 전환 이벤트 구독 확인
grep "SceneManager.activeSceneChanged += OnActiveSceneChanged" Assets/_Game/Scripts/Lobby/SoundManager.cs
# 3. SoundData 내 SceneBgmEntry 매핑 구조 확인
grep -E "SceneBgmEntry|m_sceneBgmMappings" Assets/_Game/Scripts/Data/SoundData.cs
PASS: 듀얼 소스 기반 크로스페이드 로직 및 씬 매핑 데이터 구조가 확인됨
FAIL: 듀얼 소스가 없거나 자동 전환 이벤트 처리가 누락됨
수정: SoundManager 내 크로스페이드 메서드 및 이벤트 핸들러 구현
GameManager 등에서 하드코딩된 문자열 대신 SoundKeys enum을 사용하여 BGM을 재생하는지 확인합니다.
파일: GameManager.cs
검사:
# GameManager에서 SoundKeys enum 사용 여부 확인
grep "m_soundManager.Play(SoundKeys\..*\.ToString()" Assets/_Game/Scripts/InGame/Manager/GameManager.cs
PASS: SoundKeys enum을 통한 안정적인 BGM 키 참조 확인
FAIL: 하드코딩된 문자열(예: "BGM_Ingame_Wave") 사용으로 런타임 에러 위험 존재
수정: SoundKeys enum 값으로 전환
| 파일 | 현재 방식 | 권장 사항 | 상태 |
|---|---|---|---|
Example.cs | SoundManager.Instance | ISoundManager 주입 | ⚠️ 권장 |
Player.cs | m_soundManager.Play() | - | ✅ 통과 |
SoundManager 자체를 생성하거나 최초로 주입하는 진입점 클래스는 예외.