一键导入
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 자체를 생성하거나 최초로 주입하는 진입점 클래스는 예외.