Claude Code 플러그인, 통째로 깔지 않고 알맹이만 빼왔다

지난 편 → 6편 — 챗GPT랑 클로드, 왜 서로 대화는 못 시킬까 Claude Code로 한동안 일하다 보면, 남이 만들어 둔 도구를 가져다 쓰고 싶어지는 순간이 옵니다. 마켓플레이스에 올라온 플러그인 중 하나가 눈에 들어왔습니다. 코드를 필요 이상으로 부풀리지 않게, "게으른 시니어 개발자"처럼 최소로만 짜도록 붙잡아 주는 도구였습니다. 마음에 들었습니다. 그런데 막상 설치하려니 손이 멈췄습니다. 제가 원한 건 그 안에 담긴 원칙 하나 였는데, 플러그인은 그것 말고도 이런저런 것들을 통째로 데려옵니다. 안 쓸 기능까지 제 환경에 얹히는 게 영 내키지 않았습니다. 그래서 깔지 않고, 열어서 필요한 알맹이만 빼내기로 했습니다. 그러려면 먼저 "플러그인"과 "스킬"이 뭐가 다른지부터 알아야 했습니다. 스킬과 플러그인은 뭐가 다른가 한 줄로 하면 이렇습니다. 스킬은 부품 하나, 플러그인은 부품을 담은 상자. 스킬(Skill) 은 최소 단위입니다. SKILL.md 라는 마크다운 파일 하나가 전부고, 필요하면 옆에 보조 파일(스크립트·데이터)을 둘 수 있습니다. 두는 곳도 단순합니다. 개인용: ~/.claude/skills/<이름>/SKILL.md 프로젝트용: .claude/skills/<이름>/SKILL.md 파일 맨 위 frontmatter에 "이 스킬을 언제 써야 하는지"를 적어두면, Claude가 상황을 보고 알아서 불러 씁니다. 아니면 /스킬이름 으로 직접 부를 수도 있습니다. 말하자면 "이 일은 이렇게 처리해라"라고 적어둔 지침 한 장 입니다. 플러그인(Plugin) 은 그 부품들을 담아 배포하는 상자입니다. .claude-plugin/plugin.json 이라는 매니페스트를 중심으로, 여러 종류의 구성요소를 한 번에 묶습니다. skills/ — 스킬들 agents/ — 커스텀 에이전트(서브에이전트...

AI(Claude Code)로 Flutter 앱 만들고 Google Play에 출시하기까지 (4편) — 첫 수익과 LLM이 못 짚어준 사고 2건

첫 광고 수익 40원. 그리고 며칠 뒤에 사고 두 개가 터졌어요. 이번 편은 그 이야기입니다.

AdMob 연동 자체는 LLM으로 금방 끝났어요

AdMob 콘솔에서 앱 등록 → 광고 단위(배너) 생성. 두 개의 ID를 받게 돼요.

  • 앱 ID: AndroidManifest.xml에 넣습니다
  • 배너 광고 단위 ID: 앱 코드 상수로 관리

Claude에게 "Flutter에서 google_mobile_ads 패키지로 배너 광고 붙이는 법"이라고 물으니 코드 예시 즉시 제공. 그대로 붙이진 않고 프로젝트 구조에 맞게 손봤지만 초안 시간이 크게 줄었어요.

필수인데 놓치기 딱 좋은 것: app-ads.txt

개발자 웹사이트 루트에 app-ads.txt 파일을 게시해야 해요. 없으면 광고 게재가 제한됩니다. Claude가 사전에 짚어주긴 했는데, "웹사이트 뭐 넣을 때 같이 하면 되지"라고 미뤄뒀다가 놓칠 뻔했어요. 초반에 확실히 챙기는 게 안전해요.

첫 수익 확인

출시 며칠 뒤 AdMob 대시보드:

지표값
오늘 수입$0.03 (약 40원)
이번 달 누적$0.07
노출수24회
요청수26회
일치율100%
eCPM$1.17 (1000회 노출당 예상 수익)

40원짜리 첫 수익. 이상하게 뿌듯했어요.

주의: 본인 폰에서 광고 클릭은 절대 금지. AdMob 정책상 계정 정지 사유입니다. 궁금해도 참으세요.

사고 1: 개인 휴대폰 번호가 앱 페이지에 노출

출시 후 앱 페이지를 확인하다가 등에 땀이 났어요. 개발자 소개 섹션에 개인 휴대폰 번호가 그대로 노출되어 있었어요.

원인은 조직 계정 투명성 정책 — 소비자 보호 목적으로 연락처 공개가 의무예요. 삭제 불가, 변경만 가능.

출시 준비 때 Claude와 Gemini 양쪽에 이 정책을 미리 안내받지 못했어요. 양쪽 LLM 공통으로 놓친 항목. 학습 데이터 시점 이후에 강화된 정책이라 그런 것 같아요.

해결

  • 별도 알뜰유심 개통 → 업무용 번호로 교체
  • Play Console → 개발자 프로필 → 전화번호 변경 → 인증
  • 스토어 반영까지 24~48시간 소요

교훈: 출시 후에 반드시 실제 스토어 listing을 육안으로 확인하세요. 이건 LLM이 대신 못 봅니다.

사고 2: Gemini API 크레딧 고갈 (제일 아이러니한 사고)

출시 후 얼마 안 지나서 지인이 써보다가 알려줬어요. "앱이 갑자기 작동을 안 한다"고. logcat 확인:

Your prepayment credits are depleted.
Please go to AI Studio at https://ai.studio/projects

여기서 진짜 놀랐어요. Gemini API는 일반 GCP 빌링과 완전히 별개 시스템이었어요.

  • GCP 결제: 정상 ✓ (월 ₩17 청구)
  • AI Studio 크레딧: 미설정 ✗ → 무료 한도 초과 시 자동 차단

Claude에게 Gemini API 붙이는 법을 처음 물었을 때, 이 이중 결제 구조가 미리 안내되지 않았어요. Gemini API 자체를 Claude가 소개해준 상황인데도, 그 결제 구조까지는 학습이 부족했던 것 같아요. LLM한테 LLM API의 결제 함정을 안내받지 못한 아이러니.

대응

  • AI Studio → 결제 → Cloud Prepay ₩25,000 결제
  • 자동 충전 ON 설정 (잔액 ₩10,000 미만 시 자동 갱신)
  • 크레딧 1년 유효, 미사용분 소멸 (환불 불가)

제 앱의 월 사용량은 ₩15 수준이라 ₩25,000은 사실 넘치는 금액이에요. 미사용분이 아까우면 같은 프로젝트에 다른 앱을 만들거나, 개인용도로 API를 나눠 쓰면 됩니다.

AI(LLM) 협업 총평

LLM이 잘한 것LLM이 못한 것
코드 초안, 에러 진단, 문서 정리정책 변화 사전 안내 (특히 최근에 강화된 것)
트레이드오프 정리, 대안 나열"당신 상황에서 지금 확인하라"는 실전 감각
반복 삽질 압축학습 데이터에 없는 최근 함정

AI(LLM)는 강력한 협업 파트너지만 만능은 아니에요. 배포 후 실제 스토어 페이지 확인이나 결제 시스템 이중 구조 같은 부분은 사람이 직접 챙겨야 합니다.

시리즈 마무리

첫 수익 40원 + 사고 2건 = 진짜 실전. 다음 앱은 이 체크리스트 위에서 시작합니다.

이 시리즈의 결론은 이 한 문장으로 정리돼요.

"LLM이 다 해준다"가 아니라, "LLM과 어떻게 협업하느냐가 1인 개발자의 생산성 격차를 만든다."


이 시리즈에서 다루는 앱이 궁금하시면
👉 찰칵분리수거 Google Play에서 받기

댓글