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/ — 커스텀 에이전트(서브에이전트...

음성으로 코딩하기 (8편) — 매번 켜기 귀찮아서: 자동화와 설정 철학

여기까지 만들고 나니 새로운 게으름이 생겼어요. 매번 손으로 켜기가 귀찮았죠. 그래서 자동화를 붙였는데, 여기서도 예상 못 한 함정이 하나 있었어요.

지난 편 → 7편 — 소리를 키워도 안 됐다: 무료 모델의 벽

윈도우 켜면 알아서 떠 있게

VoxPlug를 쓰려면 매번 실행 스크립트를 손으로 눌러야 했어요. hands-free를 지향하는 도구인데 시작부터 손이 필요하다니 좀 우스웠죠. 그래서 윈도우에 로그인하면 자동으로 실행되게 작업 스케줄러에 등록했어요.

그런데 자동 실행이 멈춰 있었어요

재부팅하고 봤더니, VoxPlug가 마이크 선택 화면에서 멈춰 있더라고요. "어느 마이크 쓸래?" 하고 입력을 기다리면서요. 자동으로 뜨라고 했더니 정작 사람 입력을 기다리는 아이러니.

원인은 이랬어요. VoxPlug는 콘솔(터미널) 프로그램이라, 자동 실행돼도 콘솔과 입력이 붙어버려요. 그러니 "대화형(사람이 있는) 환경"으로 착각하고 마이크를 고르라고 물어본 거죠.

해결은 "지금은 자동 실행이니 묻지 말고 설정값 그대로 써" 라는 옵션(--non-interactive)을 하나 만들어서, 자동 실행 명령에 붙이는 거였어요. 그러니 프롬프트 없이 핀마이크로 바로 떴습니다.

사실 이 시리즈를 버티게 한 건 "설정 철학"이었어요

돌아보면, 3편부터 7편까지 삽질을 견딜 수 있었던 비결이 하나 있었어요. 모든 값을 코드가 아니라 설정 파일로 빼둔 것. 그리고 대부분은 앱을 껐다 켜지 않아도 저장하는 순간 바로 반영(핫리로드) 되게 했죠.

문제 (편)코드 수정 없이 설정으로 바꾼 값
4편 끊김 오판"살아있는 소리" 판정 임계값
6편 노이즈 제거 역설경로별 노이즈 제거 on/off
7편 게인음량 증폭 배수

덕분에 "값 하나 바꾸고 → 바로 말해보고 → 데이터 확인" 을 수십 번 반복할 수 있었어요. 코드를 고치고 재시작했다면 이 튜닝은 며칠이 아니라 몇 주가 걸렸을 거예요.

틀린 것도 데이터로 모았어요

여기에 하나 더. 인식이 틀렸을 때 핫키 한 번으로 그 발화를 파일에 기록하게 해뒀어요. 나중에 그 기록들을 모아 "어떤 단어가 자주 틀리나"를 분석하고 설정을 손봤죠. 6·7편의 "긁어온" 이야기도 이렇게 모은 데이터에서 나온 거예요.

정리 — 자동화는 편의, 설정은 생존

자동화(자동 실행)는 편하려고 붙인 거였고, 설정 철학(config-driven)은 삽질을 버티려고 세운 거였어요. AI(Claude)와 빠르게 만들다 보면 값이 코드 여기저기 박히기 쉬운데, "이건 나중에 바꿀 값인가?" 를 계속 물으면서 설정으로 빼둔 게 이 프로젝트를 끝까지 끌고 온 힘이었어요.

다음 편

이제 도구가 안정됐으니, 부가 기능 하나를 붙입니다. 한국어로 말하면 영어로 바꿔 넣어주는 번역 모드 — 코딩하면서 영어까지 익히는 이야기. → 9편 — 한국어로 말하면 영어로: 코딩하며 영어 배우기


(이전 편: 7편 — 소리를 키워도 안 됐다: 무료 모델의 벽)

댓글