Files
submanager/.claude/skills/sms-scanner/SKILL.md
JiWoong Sul 83c43fb61f feat: SMS 스캔 전면광고 및 Isolate 버그 수정
## 전면 광고 (AdService)
- AdService 클래스 신규 생성 (lunchpick 패턴 참조)
- Completer 패턴으로 광고 완료 대기 구현
- 로딩 오버레이로 앱 foreground 상태 유지
- 몰입형 모드 (immersiveSticky) 적용
- iOS 테스트 광고 ID 설정

## SMS 스캔 버그 수정
- Isolate 내 Flutter 바인딩 접근 오류 해결
- _isoExtractServiceNameFromSender()에서 하드코딩 사용
- 로딩 위젯 화면 정중앙 배치 수정

## 문서 및 설정
- CLAUDE.md 최적화 (글로벌 규칙 중복 제거)
- Claude Code Skills 5개 추가
  - flutter-build: 빌드/분석
  - hive-model: Hive 모델 관리
  - release-deploy: 릴리즈 배포
  - sms-scanner: SMS 스캔 디버깅
  - admob: 광고 구현

## 버전
- 1.0.1+2 → 1.0.1+3
2025-12-08 18:14:52 +09:00

1.3 KiB

name, description, allowed-tools
name description allowed-tools
sms-scanner SMS 스캔 기능 개발 및 디버깅. SMS 파싱, 구독 감지, Isolate 관련 이슈 시 사용. Read, Edit, Grep, Glob

SMS Scanner

핵심 파일

파일 역할
lib/services/sms_scanner.dart SMS 파싱 로직 (Isolate)
lib/controllers/sms_scan_controller.dart 스캔 플로우 제어
lib/screens/sms_scan_screen.dart UI
lib/services/sms_scan/ 보조 클래스

Isolate 주의사항

compute() 내부에서 실행되는 함수는 별도 Isolate에서 실행됨.

접근 불가 항목:

  • Flutter 바인딩 (WidgetsBinding)
  • BuildContext
  • Provider
  • navigatorKey
  • AppLocalizations

올바른 패턴:

// Isolate 내부 함수 (접두사: _iso)
String _isoExtractServiceName(String sender) {
  if (RegExp(r'^\d+$').hasMatch(sender)) {
    return 'Unknown service';  // 하드코딩 사용
  }
  return sender;
}

잘못된 패턴:

String _isoExtractServiceName(String sender) {
  // 오류: Isolate에서 Context 접근 불가
  return AppLocalizations.of(context).unknownService;
}

디버깅

# SMS 스캔 로그 확인
flutter logs | grep -i "sms\|scan\|isolate"

테스트 데이터

lib/temp/test_sms_data.dart에 테스트용 SMS 데이터 정의됨.