지난 포스팅에서 개발 환경을 모노레포로 통합 하여, 동일한 Claude 세션 안에서 앱과 서버들을 한꺼번에 개발할 수 있게 했다고 이야기했다. 덕분에 명세 동기화 문제나 연동 디버깅의 번거로움이 크게 줄었다. 그런데 이렇게 앱과 여러 서버를 하나의 세션에서 다루다 보면, 또 다른 효율 저하 요인이 생긴다. 바로 컨텍스트 사이즈 제약 이다. 컨텍스트 압축이라는 새로운 문제 요즘은 Max 요금제 기준으로 기본 1MB 컨텍스트를 제공해서 예전만큼 빡빡하지는 않다. 하지만 불과 두어 달 전까지만 해도 컨텍스트 크기가 지금보다 훨씬 작았다(그래도 다른 서비스보다는 컸다). 그래서 한꺼번에 많은 코드를 분석시키고 대화를 조금만 이어가면, 빈번한 컨텍스트 압축 이 발생하곤 했다. 컨텍스트 압축이 일어나면 대화의 맥락이 흐려지기 시작한다. 방금 전까지 이해하고 있던 내용을 다시 설명해야 하거나, 이미 정한 구현 방향을 잊고 다른 길로 가기도 한다. 모노레포로 프로젝트를 합친 직후에 이 문제가 두드러지게 나타났다. 해결: 에이전트 팀 구성하기 이 문제를 줄이기 위해 Claude Code가 지원하는 서브에이전트(Sub-agent) 기능 을 적극적으로 활용하기로 했다. 앱과 각 서버를 담당할 전문 에이전트를 만들고, 이들을 총괄할 팀 리더 에이전트 를 따로 두는 방식이다. 말 그대로 "에이전트 팀"을 꾸리는 셈이다. 페르소나 구성은 대략 이렇게 잡았다. 팀 리더 └─ 제품 전체 기획 / 각 개발자에게 업무 지시 앱 개발자 └─ 모바일 앱 개발에 능숙한 개발자 서버#1 개발자 └─ Node.js 개발에 뛰어난 개발자 서버#2 개발자 └─ Python 개발자 이렇게 담당 프로젝트의 특성에 맞춰 각 에이전트의 페르소나를 정의한다. 테스터 에이전트를 따로 두는 분들도 있는데, 나는 별도로 분리하지 않았다. 서브에이전트 생성은 Claude Code에서 프롬프트로 설정할 수 있고, 추가한 뒤에는 세션을 새로 ...
flutter로 개발중인 앱을 앱스토어 배포를 위해서 준비중에 아래와 같은 오류를 접하게 되었습니다. App Store Connect Operation Error ITMS-90205: Invalid Bundle. The bundle at 'App.app/PlugIns/AppExtension.appex' contains disallowed nested bundles. App Store Connect Operation Error ITMS-90206: Invalid Bundle. The bundle at 'App.app/PlugIns/AppExtension.appex' contains disallowed file 'Frameworks'. App Extension 모듈이 Frameworks 폴더를 내포하고 있는 경우에 발생하는 오류 입니다. App Extension 모듈에서 내포하고 있는 Frameworks를 살펴보니 Flutter.framework와 App.framework 였습니다. 두 개의 framework을 참조하는 이유는 App Extension의 구현 자체는 swift로 구현되어 있기는 하지만, flutter를 이용해서 구현된 App과 리소스를 공유하는 부분이 있는데 이 리소스가 flutter의 assets에 포함되어 있어서 참조가 발생했습니다. App Extension에서 flutter의 assets에 등록된 파일을 읽기 위해서 아래와 같은 방식으로 구현되었습니다. 참고 : https://docs.flutter.dev/development/ui/assets-and-images#loading-flutter-assets-in-ios let flutterEngine = FlutterEngine(name: "WidgetViewController") flutterEngine.run() let flutterViewCont...