원클릭으로
verify-weapon-system
무기 시스템의 의존성 주입(DI), POCO 전략 패턴 설계, 팩토리 생성 검증을 수행합니다. 무기 시스템 스크립트 수정 후 사용.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
무기 시스템의 의존성 주입(DI), POCO 전략 패턴 설계, 팩토리 생성 검증을 수행합니다. 무기 시스템 스크립트 수정 후 사용.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
인게임 핵심 시스템(GameManager, UIManager), 초기화 순서 안전성, UI 데이터 바인딩을 검증합니다.
로비 UI의 팝업 관리 및 뒤로가기(ESC) 로직을 검증합니다. PopupManager 등록 및 중복 입력 처리 여부를 확인합니다.
타이틀 씬의 로그인 흐름(MVVM), 어드레서블 로딩, 앱 업데이트 관리를 검증합니다.
프로젝트 전체의 사운드 구현 패턴을 검증합니다. 싱글톤(Singleton) 대신 인터페이스 주입(DI) 방식의 사용을 권장합니다.
세션 변경사항을 분석하여 검증 스킬 누락을 탐지합니다. 기존 스킬을 동적으로 탐색하고, 새 스킬을 생성하거나 기존 스킬을 업데이트한 뒤 GEMINI.md를 관리합니다.
플레이어 데이터의 DTO/Service 구조, 암호화 처리, 로컬 저장소 정합성을 검증합니다.
| name | verify-weapon-system |
| description | 무기 시스템의 의존성 주입(DI), POCO 전략 패턴 설계, 팩토리 생성 검증을 수행합니다. 무기 시스템 스크립트 수정 후 사용. |
최근 리팩토링된 무기 시스템(Weapon System) 아키텍처 규칙이 잘 지켜지고 있는지 확인합니다.
IWeaponStrategy 구현체들이 MonoBehaviour를 상속받지 않는 일반 C# 클래스인지 검증WeaponController가 게임 매니저, 컴뱃 컨텍스트 등 핵심 서비스를 주입(Inject)받는지 검증?. 사용 금지 원칙 준수 여부 검증new나 Instantiate가 아닌 WeaponFactory를 통하는지 여부 검증IWeaponStrategy 인터페이스 기반 동작을 수정한 후| File | Purpose |
|---|---|
Assets/_Game/Scripts/InGame/Weapon/Base/IWeaponController.cs | 무기 컨트롤러 인터페이스 |
Assets/_Game/Scripts/InGame/Weapon/Base/WeaponControllerBase.cs | 무기 컨트롤러 추상 기본 클래스 |
Assets/_Game/Scripts/InGame/Weapon/Strategies/IWeaponStrategy.cs | 무기 동작 전략 (Strategy) 인터페이스 |
Assets/_Game/Scripts/InGame/Weapon/Strategies/*.cs | 모든 무기 전략 구현체 |
Assets/_Game/Scripts/InGame/Weapon/Base/WeaponFactory.cs | 무기 생성 관리 팩토리 |
Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerBase.cs | 플레이어의 무기 장착 로직 부분 |
전략 계층(Strategies) 스크립트들이 MonoBehaviour를 상속받지 않도록 검증합니다.
파일: Assets/_Game/Scripts/InGame/Weapon/Strategies/*.cs
검사:
grep -n ": MonoBehaviour" Assets/_Game/Scripts/InGame/Weapon/Strategies/*.cs
PASS: 아무것도 검색되지 않음.
FAIL: 전략 스크립트가 MonoBehaviour를 상속함.
수정: 의존성은 OnUpdate나 Attack 등을 통해 전달받도록 수정.
WeaponControllerBase의 파생 클래스들이 직접 GameManager.Instance 등을 참조하지 않는지 검증합니다. 초기화(Init 등)에 Context가 주입되는지 확인합니다.
파일: Assets/_Game/Scripts/InGame/Weapon/Controllers/*.cs
검사:
grep -n "\.Instance" Assets/_Game/Scripts/InGame/Weapon/Controllers/*.cs
PASS: 싱글톤 사용 내역 없음 (또는 초기화 단계 캐싱 외에 무관한 곳만 있음)
FAIL: 비즈니스/공격 루프에서 전역 매니저 인스턴스 사용
수정: WeaponControllerBase의 Protected 멤버(m_combatCtx 등)로 대체
플레이어나 매니저에서 무기 객체를 가져올 때 직접 Instantiate 하거나 new WeaponController()를 남용하는지 검증. WeaponFactory.CreateController를 통해야 합니다.
파일: Assets/_Game/Scripts/InGame/Manager/GameManager.cs 및 Assets/_Game/Scripts/InGame/Player/Player_Base/*.cs
검사:
무기 획득/생성 부근 검사 (GameManager의 EquipNewWeapon 위주)
grep -n "WeaponFactory.CreateController" Assets/_Game/Scripts/InGame/Manager/GameManager.cs
PASS: 무기 장착부에서 WeaponFactory.CreateController가 감지됨
FAIL: CreateController를 통하지 않고 강제로 스크립트를 추가
Unity 생명주기 관련 문제(Fake Null)를 막기 위해 무기 관련 스크립트 전반에서 Unity Object에 대한 ?. 연산자 제한.
(단, Action, Tween 등 순수 C# 객체에 대해서는 허용되므로 결과 눈으로 확인 필요)
검사:
grep -n "\?\." Assets/_Game/Scripts/InGame/Weapon/**/*.cs
PASS: ?. 가 순수 기능(Kill(), Invoke())에만 사용됨
FAIL: gameObject?.activeSelf 나 유사한 컴포넌트 호출에 사용
| 컴포넌트 | 상태 | 상세 내역 |
|---|---|---|
| Strategy POCO 유지 | PASS / FAIL | |
| Controller DI 적용 | PASS / FAIL | |
| 팩토리 집중 관리 | PASS / FAIL | |
| Null 안전성 규칙 | PASS / 주의 | (순수 C# 객체에 쓰였는지 확인 후 판정) |
MonoBehaviour 상속이 불가피한 발사체(Projectile 뷰) 클래스와 Aura 등은 Weapon/Controllers나 Weapon/Strategies 밖의 디렉토리에 배치되므로 예외입니다. (예: BoneBullet.cs)?. 을 딜리게이트 콜업이나 Tween 해제용(m_rotateTween?.Kill())으로 사용하는 건 안전하며 예외 조항입니다.