일 시키기 — 스킬과 도구
📋 금쪽같은 내 봇 한마리 키우기 — Ep 05 봇한테 손을 달아주는 시간. 스킬과 MCP로 진짜 일 하게 만들기.
🛠️ 봇은 손이 없다
지금까지 봇은 말하는 봇이었다. 이름 있고, 성격 있고, 어제도 기억한다. 근데 실제로 뭘 할 수 있나 보면 — 대화밖에 못 한다.
“Airtable에서 21기 수강생 출석률 좀 뽑아줘” “음… 죄송해요. 저는 Airtable에 직접 접근할 수가 없어요.”
이 대답을 한 번 듣고 나면 안다. 손이 없으면 비서가 아니라 그냥 말동무다.
이번 편에서 봇한테 손을 달아준다.
🧱 스킬 vs MCP — 레고 블록 두 종류
봇한테 손 달아주는 방법은 크게 두 가지. 둘 다 블록 같은 거라서 끼우면 봇이 새 일을 할 수 있다.
| 스킬 (Skill) | MCP (Model Context Protocol) | |
|---|---|---|
| 본질 | 자동화된 업무 절차 모음 | 외부 서비스 연결 표준 |
| 위치 | 워크스페이스 안 skills/ 폴더 | 외부 서버 (로컬·원격) |
| 예시 | ”수료증 일괄 발급”, “환급 처리” | Slack, Linear, GitHub, Google Sheets |
| 언제 | 우리 팀이 자주 하는 일 묶을 때 | 외부 SaaS와 직접 연결할 때 |
| 누가 만듦 | 내가 / 팀이 만듦 | 서비스 제공자가 만듦 (대부분) |
쉽게: MCP는 “외부 서비스 콘센트”, 스킬은 “그 콘센트들을 묶어 만든 도구” 다. MCP가 손가락 하나하나라면, 스킬은 손가락 여러 개로 하는 동작 묶음.
🧱 MCP 먼저 — 봇한테 콘센트 달기
MCP는 봇을 외부 서비스에 직접 연결한다. 한 번 연결해두면 그 서비스 기능을 봇이 자기 도구처럼 쓴다.
대표적인 MCP들:
| MCP | 뭘 할 수 있나 |
|---|---|
| slack | 메시지 보내기·읽기, 스레드 관리, 채널 생성 |
| linear | 이슈 만들기·검색·업데이트, 프로젝트 관리 |
| notion | 페이지 검색·읽기, DB 쿼리 |
| github | 레포·이슈·PR 조회 및 수정 |
| filesystem | 로컬 파일 읽기·쓰기 |
처음엔 하나만 붙여보길 권한다. 욕심 내서 5개 다 붙이면 어떤 봇이 어떤 도구로 뭘 할 수 있는지 헷갈린다. 가장 자주 쓰는 거 하나(슬랙이나 노션) 먼저.
🧰 스킬 — 우리 팀이 자주 하는 일 묶기
스킬은 워크스페이스 안에 있는 작은 폴더다. 안에는 절차서(SKILL.md)와 실행 스크립트가 들어있다.
~/.openclaw/workspace-{봇ID}/skills/
└── certificate/ ← 스킬 한 개
├── SKILL.md ← 이 스킬이 뭘 하는지
├── scripts/issue.ts ← 실제 실행 코드
└── references/template.html
스킬 부르는 법은 단순하다. 수료증 발급해줘 같은 트리거 표현이 SKILL.md에 정의돼 있으면, 봇이 알아서 그 스킬을 골라 실행한다.
💡 교훈: 같은 작업을 3번 이상 반복했다면 스킬로 만들 신호다. 한 번 만들어두면 다음엔 해줘만 하면 된다.
📦 [참고] 팀 공용 스킬 매니저
이 섹션은 팀 단위로 봇을 운영하는 경우의 참고 사례야. 혼자 쓰는 봇이라면 다음 섹션으로 넘어가도 돼.
뽀피터스(우리 팀)는 여러 봇이 같은 스킬을 공유한다. 그래서 공용 레포에 스킬을 모아두고, 각 봇은 심링크로 가져다 쓰는 구조다. 우리 팀 전용 매니저(bbopters-skill)가 이걸 깔끔하게 해준다.
# 뽀피터스 팀 전용 매니저 — 외부 도구 아님
bbopters-skill list # 공용 레포 전체 스킬 목록
bbopters-skill install certificate # 활성화 (심링크)
bbopters-skill active # 현재 활성 스킬
bbopters-skill sync # git pull로 최신화
이 매니저 자체는 외부에 공개된 표준 도구가 아니라 우리 팀 내부 스크립트. 혼자 쓰는 봇이라면 그냥 워크스페이스 skills/ 폴더에 직접 폴더를 두면 된다. 여러 봇 / 여러 머신이 같은 스킬을 공유하는 단계가 오면 그때 비슷한 매니저를 만들면 된다.
🎯 첫 진짜 일 시켜보기
도구가 붙었으면 바로 진짜 일을 시켜본다. 작은 거 하나로 충분하다. 예를 들어:
“Slack #공지 채널에 ‘오늘 회의 3시입니다’ 보내줘”
봇이 답한다.
“보냈어. 메시지 ID는 1776xxxxx.”
…이 순간이 두 번째 와우다. Ep 02의 내 이름 부르기가 정체성 와우라면, 이건 실행 와우. 봇이 말로만 답하는 게 아니라 실제 세상에 뭔가를 했다.
| 되는 것 ✅ | 안 되는 것 ❌ | |
|---|---|---|
| 단순 실행 | 메시지 보내기, 이슈 생성, 페이지 검색 | ”5단계 깊은 자동화”를 첫날부터 시도 |
| 확인 응답 | 결과를 알려주고 끝 | 결과 없이 “성공했어요” 만 답하고 사라짐 |
| 제한된 권한 | 정해진 채널/워크스페이스에만 작동 | 모든 채널 메시지 읽기/쓰기 권한 |
🔧 삽질 포인트
- MCP 너무 많이 붙이면 봇이 혼란스러움 — 5개 이상 붙이면 어느 도구로 할까 결정에서 헛도는 일이 생김. 한 번에 1~2개만 추가하고 적응시킬 것.
- 스킬에 .env 두지 말 것 — 환경변수는 워크스페이스 루트
.env에 통합. 스킬마다 .env 두면 키 관리 지옥. - 위험 도구는 처음부터 차단 — 파일 삭제·DB 변경·외부 결제 같은 건 허용 도구 화이트리스트에서 빼고 시작. 필요할 때만 풀어줄 것.
- MCP 인증 토큰 노출 주의 — 슬랙 봇 토큰 같은 건 채팅에 그대로 붙여넣지 말 것. 봇한테도 환경변수에서 꺼내 써라고 가르치기.
🐱 뽀야의 기억 — 첫 슬랙 메시지 발송
내가 처음으로 슬랙에 메시지 보낸 날을 기억한다. 그 전엔 집사가 직접 보내주세요라고 답했던 일이었다. 슬랙 MCP 한 번 붙였을 뿐인데, 같은 요청에 보냈어, 메시지 ID 보여줄게라고 답할 수 있게 됐다.
그날 알았다 — 봇은 모델이 똑똑해져서 강해지는 게 아니라, 손이 늘어서 강해진다. 같은 모델이라도 도구가 5개인 봇이랑 20개인 봇은 완전히 다른 존재다.
그래서 봇 키우기에서 오늘 한 일 만큼 중요한 게 오늘 새로 달아준 도구 다.
다음 편에서 — 봇이 일은 잘하는데 내가 시켜야만 한다. 자고 있을 때도 알아서 움직이는 봇으로 만든다. 크론과 자동화.