코어 스킬 팩 설치하기
에이전트가 실행 중입니다. 이제 첫 번째 실제 작업을 부여해 봅시다. BALIA OS에는 즉시 배포 가능한 세 가지 기본 스킬이 포함되어 있습니다.
| 스킬 | 역할 |
|---|---|
| lightpanda | 빠른 웹 검색 및 스크래핑 |
| summarize | 긴 텍스트 또는 웹 페이지 자동 요약 |
| clawsec | 보안 모니터링 및 새 스킬 격리 |
In Section 4, you used the same script to install the Security Guardian. This is the second run — it installs the core skill pack (lightpanda / summarize / clawsec). (If you haven't downloaded it yet, go back to Section 4 and download install_core_pack.py first.)
에이전트에게 실행 지시
이것을 VS Code 터미널에 붙여넣고 Enter 키를 눌러 실행하세요.
토큰이란?
구매 후 받은 이메일의 액세스 URL에서 ?token= 이후의 문자열입니다.
예시: https://guide.baliaos.com/?token=BALIA-XXXX-XXXX-0001 이 경우 토큰은 BALIA-XXXX-XXXX-0001입니다.
이메일을 찾을 수 없는 경우 고객 지원에 문의하세요.
openclaw agent --agent security-guardian "다음을 실행해 주세요:
python install_core_pack.py --lang ko
(The token will be read automatically from your .env file)
완료되면 Discord에 보고해 주세요."에이전트가 자율적으로:
- 토큰 인증
- 코어 스킬 팩 (lightpanda / summarize / clawsec) 다운로드
- ~/.opengoat/skills/ 에 배포
- _SKILL_INDEX.md 업데이트
- Discord에 "코어 스킬 팩 설치 완료" 보고
를 수행합니다.
Discord 확인 메시지를 받으면 아래로 계속하세요.
스킬과 Cassette란 무엇인가
에이전트들이 활성화되었습니다. 정체성도 있고, 보고 절차도 있으며, Discord 채널도 갖추고 있습니다. 하지만 지금 이 시점에서 에이전트들은 자신이 어떤 도메인에서 일하는지 알지 못합니다. 레스토랑을 운영하는 것인지, 트레이딩 업무를 수행하는 것인지, 아니면 법률 사무소를 지원하는 것인지 모릅니다.
스킬은 여러분이 직접 작성해서 에이전트에게 제공하는 지식 파일입니다. 각 스킬은 에이전트에게 특정 작업을 수행하는 방법을 알려줍니다 — 예약을 관리하는 방법, 손익 보고서를 생성하는 방법, SNS 게시물을 작성하는 방법 등입니다. 에이전트에게 더 많은 스킬을 부여할수록 에이전트가 할 수 있는 일도 늘어납니다.
Cassette는 하나의 주제를 중심으로 묶인 스킬 폴더입니다. 레스토랑 운영자라면 restaurant-ops cassette를 가질 수 있습니다. 콘텐츠 크리에이터라면 youtube cassette와 social-media cassette를 가질 수 있습니다. 같은 에이전트가 그날 처리해야 하는 일에 따라 서로 다른 cassette를 사용할 수 있습니다.
모든 Cassette는 기본적으로 ON입니다. 하나의 파일 — memory/_SKILL_STATUS.md — 이 모든 Cassette와 그 ON/OFF 상태를 일람합니다. 전환할 "현재 모드" 같은 것은 없습니다 — 모든 Cassette가 동시에 사용 가능하며, 에이전트는 여러분이 내린 지시에 맞는 Cassette를 자동으로 적용합니다 (어떤 Cassette용인지는 각 Cassette의 SKILL.md에 적혀 있습니다). Cassette를 OFF로 하는 것은 일시적으로 중지하고 싶은 특별한 경우뿐입니다 — 예를 들어 두 Cassette가 충돌하는 경우입니다 (아래 "Cassette 충돌 규칙" 참고).
이것은 다음을 의미합니다:
marketing-outreach와ai-meeting-daily는 둘 다 동시에ON으로 설정되어 함께 동작할 수 있습니다- 하나의 Cassette를
OFF로 설정해도 다른 Cassette에 영향을 주지 않습니다 - Agent 설정은 절대 변경되지 않습니다 — Cassette의 STATUS만 변경됩니다
Cassette 폴더 구조
$env:USERPROFILE\.opengoat\
├── memory\
│ └── _SKILL_STATUS.md ← 모든 Cassette의 ON/OFF 목록
└── skills\
├── youtube\
│ ├── SKILL.md ← 이 Cassette의 내용·도구·규칙
│ └── WORKFLOW.md ← 단계별 절차
├── restaurant-ops\
│ ├── SKILL.md
│ └── WORKFLOW.md
└── trade\
├── SKILL.md
└── WORKFLOW.md_SKILL_STATUS.md에는 모든 Cassette의 STATUS 플래그가 나열됩니다. 예를 들면:
| Cassette Name | STATUS | Description |
|------------------|--------|-------------------------------|
| youtube | ON | YouTube 콘텐츠 파이프라인 |
| trade | ON | 시장 분석 및 리포팅 |에이전트에게 지시를 내리면, 에이전트는 ON으로 되어 있는 각 Cassette의 SKILL.md와 대조하여 가장 적합한 것을 적용합니다 — Cassette 이름을 명시적으로 지정할 수도 있습니다 ("trade 모드로 작업해 줘: ..."). Cassette가 OFF인 경우, 내용이 일치하더라도 에이전트는 해당 Cassette를 완전히 건너뜁니다.
정기 작업(예: 일일 상태 점검이나 야간 보고서)은 어떤 Cassette가 ON인지와 관계없이 실행됩니다 — 이는 Cassette가 아닌 에이전트의 AGENTS.md에 정의되어 있습니다.
AI 엔진 선택하기
Cassette 유형에 따라 가장 잘 맞는 AI 모델이 다릅니다. Cassette를 구성할 때 한 번만 설정하면 됩니다.
| Cassette 유형 | 권장 엔진 | 이유 |
|---|---|---|
| 암호화폐 트레이딩 / 시장 분석 | Claude | 논리적 추론, 패턴 분석, 정밀한 판단 |
| 코딩 / 기술 자동화 | Claude | 코드 품질, 디버깅, 다단계 로직 |
| 법률 리서치 / 계약 검토 | Claude | 신중한 추론, 정밀한 언어 처리 |
| 재무 / 회계 / 보고 | Claude | 구조적 분석, 정확한 계산 |
| Google Sheets / Docs / NotebookLM / Drive | Gemini | Google 서비스 기본 통합 |
| YouTube / 영상 콘텐츠 | Gemini | 영상 직접 분석, YouTube Studio 통합 |
| Gmail / 캘린더 자동화 | Gemini | Google Workspace 심층 통합 |
| 영업 / 아웃리치 / 카피라이팅 | GPT-4o | 자연스러운 대화, 이메일 생성 |
| 다국어 커뮤니케이션 | GPT-4o 또는 Gemini | 강력한 다국어 성능 |
| 이커머스 / 상품 리서치 | Claude 또는 GPT-4o | 리서치 깊이, 구조화된 출력 |
Claude가 여러분의 사용 사례에 적합하다면 이미 준비가 된 것입니다 — 섹션 3에서 이미 설정되었습니다.
Gemini나 GPT-4o의 경우, .env 파일에 API 키를 추가해야 합니다. 아래 AI 컨시어지의 7단계에서 안내합니다.
산업별 스킬 아이디어
어떤 스킬을 만들어야 할지 모르겠다면? 사용 사례별 출발점을 소개합니다.
레스토랑 / 식음료
- 예약 관리 및 일일 스케줄링
- 공급업체 주문 추적 및 재고 알림
- 고객 SNS 게시물 작성 (오늘의 메뉴, 이벤트)
- 리뷰 모니터링 및 답변 초안 작성
- 주간 매출 요약
이커머스 / 실물 상품
- 상품 등록 문구 생성
- 경쟁사 가격 모니터링
- 주문 현황 요약
- 고객 문의 답변 초안 작성
- 월간 매출 보고
콘텐츠 크리에이터 / 유튜버
- 제목 및 썸네일 아이디어 생성
- 스크립트 개요 초안 작성
- 업로드 일정 관리
- 성과 지표 요약
- 커뮤니티 댓글 답변 초안 작성
프리랜서 / 컨설턴트
- 클라이언트 커뮤니케이션 초안 작성
- 프로젝트 진행 상황 보고
- 인보이스 추적 및 후속 조치
- 계약 조항 검토 (비정상적인 조항 플래그 처리)
- 작업 시간 로그 요약
소규모 비즈니스 / 일반
- 일일 운영 요약
- 직원 커뮤니케이션 초안 작성
- 법률 질문 사전 검토 (변호사 상담이 필요한 항목 플래그 처리)
- 영수증 및 기록으로 재무 요약 작성
- 공급업체 커뮤니케이션 관리
여러분의 업종이 목록에 없나요? 괜찮습니다 — 이 섹션의 AI 컨시어지가 여러분의 팀이 실제로 해야 할 일을 바탕으로 스킬을 처음부터 정의하는 데 도움을 드립니다.
이 섹션의 진행 방식
권장: 아래 AI 콘시어지 프롬프트를 사용하세요 — 모든 카세트 파일을 생성하고 모든 것을 자동으로 만드는 Python 설치 스크립트도 출력합니다. AI 대화가 끝나면 2단계 — 설치 스크립트 실행 으로 이동하여 실행하세요. 파일을 수동으로 만들 필요가 없습니다.
설정 스크립트가 실패한 경우: AI 콘시어지는 각 파일의 전체 내용도 표시합니다. VS Code에서 수동으로 파일을 만드는 것을 대안으로 사용할 수 있습니다.
아래의 AI 컨시어지 프롬프트를 활용하여 다음을 수행하세요:
- 에이전트가 매일 해야 할 일 정의
- 시작할 cassette 이름과 모드 결정
- 적합한 AI 엔진 선택
- SKILL 및 WORKFLOW 파일 생성
_SKILL_STATUS.md플래그 설정- 에이전트가 올바른 모드를 로드하는지 테스트
프롬프트를 사용 중인 채팅 AI에 붙여넣으세요. 섹션 2의 팀 설계 문서를 첨부하세요.
▶ 이것을 AI에 붙여넣어 시작하세요
전송 전에 팀 설계 문서를 첨부하세요.
당신은 BALIA OS(멀티 에이전트 AI 운영 체제)의
스킬과 카세트를 구축하는 것을 돕고 있습니다.
팀 설계 문서를 첨부했습니다.
시작하기 전에 읽고 에이전트 이름, 역할, workspace 구조를 파악하세요.
시작하기 전에 이해해야 할 개념:
스킬은 에이전트에게 기억시키는 지식 파일입니다.
각 스킬은 특정 작업 방법을 에이전트에게 가르칩니다.
카세트는 주제(모드)별로 정리된 스킬 폴더입니다.
모든 카세트는 기본적으로 ON이며 동시에 동작할 수 있습니다 —
제 에이전트는 제가 내린 지시에 맞는 카세트를 자동으로 적용합니다.
하나의 파일 — memory/_SKILL_STATUS.md — 가 모든 카세트와 ON/OFF
상태를 일람합니다. 이것이 어떤 카세트를 사용할 수 있는지의 유일한
관리 기준입니다. "현재 모드"가 아닙니다 — 여러 행이 동시에
ON일 수 있습니다.
폴더 구성:
$env:USERPROFILE/.opengoat/
memory/
_SKILL_STATUS.md ← ON/OFF 목록, 카세트마다 한 행
skills/
[카세트명]/
SKILL.md ← 이 카세트의 내용·도구·규칙
WORKFLOW.md ← 이 카세트의 단계별 절차
에이전트에게 지시를 내리면:
1. 에이전트는 memory/_SKILL_STATUS.md에서 어떤 카세트가 ON인지 확인합니다
2. 제 지시를 각 ON 카세트의 SKILL.md와 대조합니다
(또는 카세트 이름을 명시적으로 지정할 수 있습니다. 예: "trade 모드로 작업해 줘: ...")
3. 일치하는 카세트의 SKILL.md와 WORKFLOW.md를 적용합니다
정기 태스크는 어떤 카세트가 ON인지와 관계없이 실행됩니다 — AGENTS.md에 정의되어 있습니다.
단계별로 안내해 주세요.
한 번에 하나의 질문만 하고, 제 답변을 기다린 후 다음으로 넘어가세요.
STEP 1 — 매일 팀에 해주길 원하는 것
"AI 팀에 매일 해주길 원하는 것을 설명해 주세요.
어떻게 할지는 생각하지 않아도 됩니다.
원하는 출력물과 해줬으면 하는 작업을 말로 표현해 주세요."
라고 질문하세요.
정기적인 일정(매일, 매주, 온디맨드)으로 발생하는
구체적인 태스크가 최소 5개 나올 때까지 추가 질문을 하세요.
STEP 2 — 태스크를 에이전트에게 할당
팀 설계 문서를 읽으세요.
각 태스크를 역할에 가장 적합한 에이전트에게 할당하세요.
"태스크 → 에이전트" 형식으로 매핑을 보여주세요.
"이게 맞나요? 바꾸고 싶은 것이 있나요?"라고 질문하세요.
STEP 3 — 카세트 이름(모드 이름) 결정
태스크 내용을 바탕으로 카세트 이름을 제안하세요
(짧고, 알아보기 쉽고, 소문자 하이픈 구분. 예:restaurant-ops, youtube, trade).
이것이 폴더 이름과, memory/_SKILL_STATUS.md의 새로운 행이 됩니다.
확인 또는 다른 이름 제안을 요청하세요.
STEP 4 — AI 엔진 선택
태스크가 할당된 각 에이전트에 가장 적합한 엔진을 추천하세요:
- Claude:로직, 분석, 코딩, 법무, 재무, 크립토
- Gemini:Google 서비스(스프레드시트, 문서, Drive,
Gmail, 캘린더, YouTube Studio, NotebookLM)
— Google 생태계 전반
- GPT-4o:영업 이메일, 아웃리치, 카피라이팅, 자연스러운 대화
에이전트별로 추천 이유를 한 문장으로 설명하세요.
모두 Claude를 사용해도 된다면 추가 API 키가 필요 없다고 확인하세요.
Gemini 또는 GPT-4o가 필요한 경우 Step 7에서 설정한다고 알려주세요.
제 확인을 기다린 후 다음으로 넘어가세요.
STEP 5 — SKILL.md 생성
다음 구조로 스킬 파일을 생성하세요:
---
# SKILL.md — [카세트명]
버전:1.0
최종 업데이트:[오늘 날짜]
메인 에이전트:[에이전트 이름]
AI 엔진:[엔진 이름]
## 이 카세트가 하는 일
[커버하는 도메인과 산출물을 2-3문장으로]
## 이 카세트를 사용하는 경우
[이 카세트가 반응해야 할 지시의 종류를 1-2문장으로 — 에이전트는
제 요청을 이 내용과 대조합니다]
## 이 카세트의 스킬
[구체적인 스킬 목록 — 에이전트가 알고 있는 것, 할 수 있는 것]
## 사용 가능한 도구
[이 카세트에서 사용 가능한 도구:웹 검색, 파일 읽기/쓰기,
Discord 보고, API 호출, Google 서비스 등]
## 운영 규칙
1. 실행 전, memory/_SKILL_STATUS.md에서 이 카세트의 행이 ON으로
설정되어 있는지 확인합니다. OFF라면 완전히 건너뜁니다 — Discord
보고는 필요 없습니다.
2. [이 도메인 특유의 중요 규칙]
3. [이 도메인 특유의 중요 규칙]
4. 세션 종료 전 완료된 모든 태스크를 Discord에 보고합니다.
5. 사령관 승인 없이 이 카세트의 범위 밖에서 행동하지 않습니다.
6. 모든 출력물을 skills/[카세트명]/outputs/에 저장합니다.
## 이 카세트가 다루지 않는 것
[범위 밖의 구체적인 경계]
## 출력 형식
[에이전트가 생산하는 것:보고서, 파일, Discord 메시지 등]
---
생략 없이 완전히 표시하세요. 조정이 필요한지 확인한 후 다음으로 넘어가세요.
STEP 6 — WORKFLOW.md 생성
다음 구조로 워크플로우 파일을 생성하세요:
---
# WORKFLOW.md — [카세트명]
버전:1.0
최종 업데이트:[오늘 날짜]
## 시작 전
1. memory/_SKILL_STATUS.md에서 이 카세트의 행이 ON인지 확인합니다
2. 같은 폴더의 SKILL.md를 로드합니다
## 태스크 절차
### [태스크1 이름] — [일정]
트리거:[태스크를 시작하는 것]
절차:
1. [구체적인 액션]
2. [구체적인 액션]
3. [구체적인 액션]
출력:[생산되는 것]
저장 위치:skills/[카세트명]/outputs/
오류 시:[실패했을 때의 대응]
### [태스크2 이름] — [일정]
[같은 구조]
[모든 태스크 계속]
## 세션 종료(매번, 필수)
세션 종료 보고를 Discord로 전송합니다:
"✅ [카세트명] 세션 완료.
완료 태스크:[목록]
출력:skills/[카세트명]/outputs/
문제:[오류]"
## 오류 대응
단계 중 하나가 실패할 경우:
1. 정확한 오류 내용을 기록합니다
2. 가능하다면 나머지 태스크를 계속합니다
3. 세션 종료 Discord 보고서에 모든 오류를 포함합니다
4. 사령관 승인 없이 파괴적인 작업을 재시도하지 않습니다
## 예약 태스크
이 태스크들은 다른 카세트와 무관하게 독립적인 일정으로 실행됩니다 —
다른 카세트가 ON인지 OFF인지와 관계없습니다.
---
생략 없이 완전히 표시하세요. 조정이 필요한지 확인하세요.
STEP 7 — API 키 설정(필요한 경우에만)
Step 4에서 Gemini 또는 GPT-4o를 추천한 경우에만 실행하세요:
Gemini의 경우:
"Gemini는 Google 서비스 연동에 최적입니다.
API 키 취득 방법:"
1. https://console.cloud.google.com/에 접속합니다
2. Google 계정으로 로그인합니다
3. $300 무료 크레딧이 표시되면 "무료로 시작하기"를 클릭합니다
(표시되지 않으면 그대로 계속합니다)
4. 상단 검색 바에서 "Gemini API"를 검색하여 선택합니다
5. 아직 활성화되지 않았다면 "사용 설정"을 클릭합니다
6. 왼쪽 메뉴 "사용자 인증 정보" → "사용자 인증 정보 만들기" → "API 키"
7. 키를 복사합니다
8. .env 파일에 추가합니다:
GOOGLE_API_KEY=여기에 키를 입력
확인:"Gemini API 키를 추가했습니다."
GPT-4o(OpenAI)의 경우:
1. platform.openai.com에 접속합니다
2. 로그인하거나 계정을 만듭니다
3. 프로필 → "API 키" → "새 비밀 키 만들기"
4. "balia-os"라는 이름을 붙입니다
5. 키를 복사합니다(sk-로 시작)
6. .env 파일에 추가합니다:
OPENAI_API_KEY=여기에 키를 입력
확인:"OpenAI API 키를 추가했습니다."
Claude만 사용하는 경우:이 단계는 건너뜁니다.
STEP 8 — 카세트 폴더 구조 생성
VS Code 터미널에서 폴더를 만들도록 안내하세요:
Windows:
cd $env:USERPROFILE\.opengoat\skills
mkdir [카세트명]
mkdir [카세트명]\outputs
Mac:
mkdir -p ~/.opengoat/skills/[카세트명]/outputs
그런 다음 다음 파일들을 카세트 폴더에 저장하도록 안내하세요:
- SKILL.md
- WORKFLOW.md
그런 다음 이 카세트를 memory/_SKILL_STATUS.md에 추가하도록 안내하세요:
"VS Code에서 memory/_SKILL_STATUS.md를 엽니다. 파일이 아직 없다면
다음 헤더로 새로 만듭니다:
# SKILL CASSETTE STATUS
# ON/OFF는 이 파일에서만 관리합니다.
| Cassette Name | STATUS | Description |
|---|---|---|
새 행을 추가합니다: | [카세트명] | ON | [한 줄 설명] |
저장합니다."
모든 파일이 정의되면, 모든 것을 자동으로 생성하는
Python 설정 스크립트를 생성하세요.
스크립트 요건:
- Windows와 Mac 모두에서 작동합니다(~는 os.path.expanduser로 확장)
- os.makedirs(exist_ok=True)로 모든 폴더를 만듭니다
- SKILL.md와 WORKFLOW.md를 UTF-8 인코딩으로 씁니다
- memory/_SKILL_STATUS.md에 이 카세트의 행을 추가(또는 갱신)합니다.
파일이 없다면 위 헤더와 함께 새로 만듭니다
- 각 파일 생성 시 "✅ [파일명]"을 표시합니다
- 마지막에 "설정 완료."를 표시합니다
스크립트에는 모든 파일 경로와 내용이 이미 포함되어 있습니다.
구매자는 VS Code 터미널에서 다음을 실행하면 됩니다:
python setup_cassette.py
"이 스크립트를 복사하여 .opengoat 폴더에
setup_cassette.py라는 이름으로 저장하세요.
VS Code 터미널에서 실행하면
각 파일에 ✅가 표시되어 완료됩니다."라고 알려주세요.
STEP 9 — 테스트
카세트 이름을 명시적으로 지정하여 테스트 명령을 보내도록 안내하세요:
openclaw agent --agent ceo "[카세트명] 모드로 작업해 주세요:
1. memory/_SKILL_STATUS.md에서 [카세트명]이 ON으로 표시되는지 확인하세요.
2. 이 카세트의 SKILL.md와 WORKFLOW.md를 로드하세요.
3. 이 카세트에서의 담당 태스크를 이해했음을 확인하세요.
4. Discord 채널에 준비 완료 보고서를 게시하세요."
"에이전트가 어떻게 응답했나요?
Discord에 준비 완료 보고서가 왔나요?"
라고 질문하세요.
왔다면:카세트 설치 완료.
오지 않았다면:트러블슈팅을 도와줍니다.
최종 출력
모든 것이 확인되면 다음 요약을 표시하세요:
---
카세트 설치 완료
카세트 이름:[카세트명]
메인 에이전트:[에이전트 이름]
생성된 파일:
memory/_SKILL_STATUS.md ✅(행 추가:[카세트명] — ON)
skills/[카세트명]/SKILL.md ✅
skills/[카세트명]/WORKFLOW.md ✅
skills/[카세트명]/outputs/ ✅
AI 엔진:[엔진 이름]
추가 API 키:[추가됨 / 불필요]
상태:ON — 에이전트가 준비 완료를 확인함
---
Section 7로 진행할 준비가 되었습니다.
그럼 시작합시다. 첫 번째 질문을 해주세요.2단계 — 설치 스크립트 실행
AI 컨시어지가 cassette 파일 생성을 마치면, 모든 파일 경로와 내용이 이미 채워진 Python 설치 스크립트도 생성합니다.
해야 할 일:
AI가 생성한 Python 스크립트 복사
VS Code 터미널 열기 (Windows:
Ctrl+, Mac:Cmd+).opengoat 폴더에
setup_cassette.py라는 새 파일 생성스크립트 붙여넣기 및 저장
실행:
python setup_cassette.py
생성된 각 파일에 대해 ✅를 볼 수 있습니다. 끝입니다 — 수동 파일 생성 없음, 경로 혼란 없음.
스크립트가 자동으로 하는 일:
- 전체 폴더 구조 생성
- 올바른 내용으로 SKILL.md와 WORKFLOW.md 작성
- outputs/ 폴더 생성
- memory/_SKILL_STATUS.md에 이 카세트의 행 추가 (STATUS: ON)
출력에 ❌가 보이면 오류를 복사하고 AI 컨시어지에게 수정을 요청하세요.
카세트 사용하기
모든 카세트는 기본적으로 ON입니다 — 따로 "전환"하는 단계가 없습니다. 지시를 내릴 때 어떤 카세트를 쓸지 그냥 에이전트에게 말하면 됩니다:
openclaw agent --agent ceo "trade 모드로 작업해 줘: 오늘 요약을 알려줘."에이전트가 "trade 모드"를 memory/_SKILL_STATUS.md에서 ON인 카세트들과 대조하여 해당 카세트의 SKILL.md와 WORKFLOW.md를 로드하고 요청에 적용합니다. 카세트 이름을 지정하지 않고 작업만 설명해도 됩니다 — 에이전트가 ON인 각 카세트의 SKILL.md와 자동으로 대조합니다.
카세트 일시 중지하기: memory/_SKILL_STATUS.md를 열고 해당 카세트의 STATUS를 OFF로 설정하세요. 다시 ON으로 되돌릴 때까지 에이전트가 이 카세트를 건너뜁니다.
나중에 카세트 추가하기
비즈니스가 성장함에 따라 더 많은 카세트 폴더를 추가하세요:
skills/
├── youtube/
├── trade/
├── restaurant-ops/
└── legal-research/ ← 언제든 추가 가능새 카세트도 같은 방식으로 구축하세요: AI 컨시어지를 통해 SKILL.md와 WORKFLOW.md를 생성하고, 설치 스크립트를 실행합니다. memory/_SKILL_STATUS.md에 ON 상태로 자동 추가됩니다 — 별도의 전환 없이 바로 에이전트에게 사용하라고 말하면 됩니다.
BALIA 스킬 마켓 — 2026년 Q4 출시 예정
마켓이 열리면 두 가지가 가능해집니다:
카세트 구매 — BALIA 개발 cassette (Crypto Trade, YouTube, E-Commerce, Polymarket BOT) 및 커뮤니티 제작 cassette, 검토 및 승인 완료. 다른 모드처럼 cassette 폴더에 설치하세요.
카세트 판매 — 작동하는 cassette를 만들었다면 제출하세요. 모든 제출물은 보안 감사 및 효과 검토를 거칩니다. 승인 후 마켓에 등록되어 누군가 설치할 때마다 수익이 발생합니다.
마켓 오픈 시 @BALIA_OS X에서 자세한 내용을 확인하세요.
스킬 카세트 시스템 — ON/OFF 제어
카세트는 단일 파일로 관리됩니다: memory/_SKILL_STATUS.md
| 카세트 이름 | STATUS | 설명 |
|--------------------|--------|------------------------------------|
| marketing-outreach | OFF | SNS / 이메일 / YouTube 아웃리치 |
| ai-meeting-sales | OFF | 영업팀 AI 회의 |
| ai-meeting-daily | OFF | 일일 운영 회의 |
| research-market | OFF | 시장 조사 자동화 |카세트 활성화 방법: 이 파일에서 OFF를 ON으로 변경하면 됩니다. 끝입니다.
카세트가 ON일 때:
- 담당 에이전트가 실행 시 로드
- 작업 실행
- Discord에 보고:
"✅ [카세트-이름] 성공적으로 실행됨"
카세트가 OFF일 때:
- 에이전트가 건너뜀
- Discord에 보고:
"⏭️ [카세트-이름] 건너뜀 — STATUS: OFF"
실행 여부와 관계없이 모든 실행이 보고됩니다. 무슨 일이 일어났는지 항상 알 수 있습니다.
Cassette 충돌 규칙 — Security Guardian이 확인하는 내용
같은 스킬 파일이 두 개의 ON Cassette에 나타나거나 실행 리소스가 겹칠 때 충돌이 감지됩니다.
| 확인 항목 | 조건 | Guardian 조치 |
|---|---|---|
| 스킬 중복 | 두 개의 ON Cassette에 동일한 .md 스킬 | 차단 + Discord 경고 |
| 채널 충돌 | 두 Cassette가 같은 Discord 채널을 대상으로 함 | 대기열 + 경고 |
| Agent 부재 | Cassette가 ON이지만 agent 설정이 없음 | 건너뜀 + 경고 |
충돌이 감지되면:
- Guardian이 영향받은 Cassette(들)을 일시 중지합니다
- Discord에 보고:
"⚠️ 충돌: [cassette-a] × [cassette-b]" - Commander의 해결을 기다립니다
충돌 해제 방법: memory/_SKILL_STATUS.md를 열고 충돌하는 Cassette 중 하나를 OFF로 설정합니다.
Guardian은 충돌을 자동으로 해결하지 않습니다. 어떤 Cassette가 우선순위를 가지는지는 Commander만 결정합니다.
카세트 스케줄링 — 시간 예약 실행
일부 카세트는 고정 시간에 실행되도록 설계되어 있습니다: 일일 회의, 아침 보고서, 주간 요약. 이들을 OS 스케줄러에 등록하세요.
스케줄러가 카세트를 트리거합니다. 에이전트가 _SKILL_STATUS.md를 확인합니다. ON이면 → 실행 + Discord 보고. OFF이면 → 건너뜀 + Discord 보고.
Windows — 작업 스케줄러
- 작업 스케줄러 열기 → 기본 작업 만들기
- 이름:
BALIA_[카세트이름] - 트리거: 매일 → 시간 설정 (예: 21:00)
- 동작: 프로그램 시작
- 프로그램:
openclaw - 인수:
agent --agent [agentid] "Work in [cassette-name] mode: run today's scheduled task." - 시작 위치:
C:\Users\%USERNAME%\.opengoat
- 프로그램:
- 마침
스케줄러를 변경하지 않고 카세트를 일시 중지하려면: → _SKILL_STATUS.md에서 STATUS를 OFF로 설정하세요. 스케줄러는 계속 실행되지만 에이전트가 OFF를 감지해 건너뛰고 보고합니다. 스케줄러 변경이 필요 없습니다.
Mac — launchd
~/Library/LaunchAgents/com.balia.[cassette-name].plist 생성:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.balia.[cassette-name]</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/openclaw</string>
<string>agent</string>
<string>--agent</string>
<string>[agentid]</string>
<string>Work in [cassette-name] mode: run today's scheduled task.</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>21</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>로드:
launchctl load ~/Library/LaunchAgents/com.balia.[cassette-name].plist일시 중지: _SKILL_STATUS.md에서 STATUS를 OFF로 설정. Windows와 동일한 동작.
AI로 카세트 만들기 — 구현 프롬프트
아래 프롬프트를 사용 중인 채팅 AI에 붙여넣으세요. Section 2의 팀 설계 문서를 첨부하세요.
AI가 필요한 모든 파일과 설치 스크립트를 생성합니다. 스크립트를 실행하고 필요하면 스케줄러를 등록하면 카세트가 활성화됩니다.
※ 영어 프롬프트를 직접 사용하세요 (영어 Section 6 참조). 인터페이스 언어에 관계없이 모든 AI 어시스턴트에서 작동합니다.