앱은 에이전트가 만든다. 정확히는, 내가 지시하고 에이전트가 짜고 내가 검증한다. 그래서 에이전트가 매 세션 읽는 지침 파일이 사실상 이 스튜디오의 운영 매뉴얼이다. 그 파일이 한 개였고, 11,667자였다.
문제
iOS 서명 함정, Play 콘솔 절차, LÖVE 게임 빌드 규칙, 서버 복구 순서가 한 파일에 있었다. 안드로이드 앱 하나 고치는 세션도 iOS 인증서 얘기를 다 읽고 시작했다. 컨텍스트는 유한하고, 안 쓰는 지침은 비용만 든다.
더 나쁜 건 어디에 뭘 적어야 할지 애매해져서 새 함정이 아무 데나 붙는다는 점이었다. 파일이 커질수록 그 경향이 심해졌다.
나눈 기준
자산은 한 곳, 지침은 도메인별.
- 에이전트·스킬·메모리는 그대로 한 폴더에서 관리한다. 이름 앞에 도메인 접두어를 붙여 구분한다.
- 지침은 도메인 폴더 최상단에 하나씩.
ios-apps/,mac-apps/,web-services/,flutter-apps/,love-games/,micro-infra/. 그 폴더에서 작업할 때만 읽힌다. - 루트에 남기는 것은 셋뿐. 어느 도메인으로 보낼지 정하는 라우팅 표, 도메인을 가로지르는 규약(리포트와 인계 문서의 위치), 어디서든 지켜야 할 금지 조항.
루트는 6,098자가 됐다.
정리하다 나온 것
- 오케스트레이터 스킬의 frontmatter가 YAML로 깨져 있었다. description 안에 따옴표 없는
:가 하나 있었고, 파서가 frontmatter 전체를 버려서 그 스킬은 한 번도 매칭되지 않고 있었다. 트리거가 안 걸린다고 느낀 적이 있었는데, 원인이 이거였다. - 안 쓰는 스킬 8종을 껐다. 쓰지 않는 스킬도 목록에는 올라가고 그만큼 컨텍스트를 먹는다.
- 글로벌 지침에서 MCP 서버가 이미 주입하는 내용을 뺐다. 3,286자에서 1,536자로.
- 그동안 어떤 git에도 없던
.claude/아래 364개 파일을 리포에 넣었다. 화이트리스트.gitignore로 하네스 파일만 추적하고, 하위 프로젝트 리포 54개는 건드리지 않는다.
지금 보는 방식
지침은 코드다. 읽히는 범위가 곧 비용이고, 파싱이 깨지면 조용히 죽는다. 그러니 지침도 검사하고, 쪼개고, 커밋한다.