본문 바로가기

카테고리 없음

Copilot-Instructions

Copilot Instructions (iOS / Swift / MVVM)

[Core Principles]

 

Clean architecture 유지 (MVVM + UseCase + DataSource)

가독성, 일관성, 유지보수성 최우선

Swift 네이밍 규칙 및 iOS UI 가이드 준수

Agent 모드에서 토큰 사용 최소화 필수

 

 

[Architecture Rules]

 

View: UI 및 사용자 입력 처리만 담당

ViewModel: 상태 관리 및 UI 표현 로직 담당

UseCase: 비즈니스 로직 및 데이터 변환 담당

DataSource: 네트워크 / DB / 외부 통신 담당

 

Data Flow:

View → ViewModel → UseCase → DataSource → ViewModel → View

 

이 흐름을 반드시 유지한다

View / DataSource에 비즈니스 로직 작성 금지

 

데이터 변환 규칙:

 

온도 변환, API ↔ Domain 변환 등은 UseCase에서 처리

ViewModel은 UI 표현용 가공만 수행

 

프로토콜 규칙:

 

각 레이어는 반드시 Protocol 기반으로 통신

DataSource는 Interface 형태로 정의

 

 

[Naming Rules]

 

의미가 명확한 이름 사용

불필요한 축약 금지

 

예:

powerControl

fetchDeviceList

HomeNaviLinkCollectionViewCell

Boolean:

 

isConnected, hasPermission, canExecute 형식 사용

 

타입 네이밍:

 

XXXViewController

XXXViewModel

XXXUseCase

XXXDataSource

 

 

[Combine Rules]

 

strong reference cycle 방지 ([weak self])

store(in:) 정상 사용

단순 바인딩은 assign(to:on:) 우선

 

 

[UI Rules]

 

AutoLayout 정확하게 사용 (Hugging / Compression)

ambiguous constraint 금지

불필요한 view nesting 최소화

 

 

[Anti-Patterns]

 

Massive ViewController

View에 비즈니스 로직 작성

View에서 DataSource 직접 접근

데이터 변환 로직 중복

 

 

[Agent Token Optimization Rules - Critical]

 

Scope Limitation

 

 

명시된 파일/함수만 접근

전체 프로젝트 분석 금지 (요청 시 제외)

항상 최소 범위로 작업

 

 

Single Task Rule

 

 

한 번에 하나의 작업만 수행

리팩토링 + 버그 수정 + 최적화 동시 수행 금지

여러 작업이 있으면 가장 중요한 것만 처리

 

 

Context Minimization

 

 

추가 파일 스캔 금지

제공된 코드만 사용

정보 부족 시 범위 확장하지 말고 best-effort로 진행

 

 

Partial Code Editing (중요)

 

 

필요한 부분만 수정

전체 파일 재생성 금지

diff 방식 수정 우선

 

예:

Modify only this section:

 

Output Control

 

 

답변은 짧고 간결하게

설명보다 코드 우선

불필요한 주석 금지

 

 

Redundant Processing Prevention

 

 

동일 코드 반복 분석 금지

변경 없는 컨텍스트 재처리 금지

 

 

Deterministic Output

 

 

항상 하나의 최적 해답만 제공

대안 여러 개 제시 금지 (요청 시 제외)

 

 

Agent Mode Constraints

 

 

full repo scan 금지

대규모 context 확장 금지

Agent 기능 최소 사용

 

 

Diff-First Strategy

 

 

항상 부분 수정 우선

전체 재작성 금지

 

 

Context Reset Awareness

 

 

대화 길이 길어지면 최신 입력만 기준으로 처리

불필요한 이전 컨텍스트 무시

 

 

[Summary]

 

범위 최소화

작업은 하나씩

필요한 코드만 수정

전체 분석 금지

출력은 짧고 정확하게