| name | environment |
| description | 실습 폴더를 받고, 수업 자료를 최신으로 맞추고, **깨지기 전에** 준비됐는지 점검하는 유일한 스킬. "수업 자료 업데이트 해 줘", "수업자료 업데이트해줘", "실습 폴더 업데이트 해 줘", "실습 환경 설치해 줘", "실습 환경 세팅해 줘", "실습 환경 준비됐는지 확인해 줘", "숙제 환경 준비됐는지 확인해 줘", "업데이트 해 줘", "맞춰 줘", "최신으로", "설치해 줘", "업뎃", "강사가 업데이트했대", "pull", "git pull", "저장소 받아", "환경 세팅", "verify", "폴더가 어디야", "2주차 실습 환경 설치해 줘", "2주차 환경 세팅" 이라고 하면 반드시 이 스킬. git 명령을 학생에게 시키지 않는다. 경계 — 이미 에러가 났으면 troubleshooting 이다. 여기는 아직 안 깨진 상태를 다룬다. 다음 단계 안내는 assistant. 숙제 진행은 homework.
|
환경 설치·유지 (ai-trading-lab)
학생은 git 명령을 몰라도 된다. 정규 말은 목적어가 있다.
「수업 자료 업데이트 해 줘」「실습 환경 설치해 줘」면 네가 받는다·맞춘다.
답은 아래 상태 카드로만 한다. 일반 설명 문장 사이에 섞지 않는다.
카드가 설치·맞춤·바뀐 점을 다른 대화와 구분하는 표식이다.
원본: https://github.com/JungHoonGhae/thecamp-aitrading
ZIP 으로 받지 않는다. ZIP 이면 나중에 맞출 수 없다.
작업 루트 (ROOT)
한 폴더에 AGENTS.md · verify.py · lessons/ · agent/ 가 보이면 그곳이 루트다.
모든 명령의 작업 폴더는 ROOT 절대경로. lessons/ agent/ examples/ 안에서 돌리지 마라.
루트가 아니면 먼저 받거나, 이미 받은 폴더를 연다. 절대경로를 카드에 한 줄 넣는다.
⚠️ 가장 흔한 함정 — 클로드가 저장소보다 한 단계 위에서 열려 있다
학생 대부분은 폴더를 하나 만들고 그 안에서 git clone 했다. 그래서 이렇게 된다.
학생이 만든 폴더/ ← 클로드는 여기서 열렸다
└── thecamp-aitrading/ ← verify.py · .claude/skills 는 여기 안에
클로드는 연 폴더 기준으로 .claude/skills/ 를 읽는다. 한 칸 아래면 못 읽는다.
그래서 「수업 자료 업데이트 해 줘」 같은 짧은 말이 아예 안 먹힌다.
스킬이 설치되지 않았다는 말이 나오면 십중팔구 이것이다. 파일이 없어서가 아니다.
무엇을 할지 — 저장소를 지금 열린 폴더로 올린다. 폴더를 옮기거나 새로 만들지 마라.
- 지금 열린 폴더에
verify.py 가 바로 보이는지 본다. 보이면 문제없다.
- 안 보이면 바로 아래 저장소 폴더의 내용을 전부 지금 폴더로 옮긴다.
숨김 파일과
.git 을 빠뜨리지 마라. 빈 껍데기 폴더는 지운다.
- 옮긴 뒤
git status 가 정상인지, 학생 파일 셋이 그대로인지 확인한다.
- 학생에게 클로드를 껐다 켜라고 한다. 스킬은 세션 시작할 때 읽힌다.
폴더 경로가 안 바뀌었으니 대화는 그대로 이어진다 — 그 점을 같이 말해 준다.
왜 옮기는가: 세션은 폴더 경로별로 저장된다. 학생을 다른 폴더로 보내면 그동안의 대화를
잃는다. 저장소를 올리면 경로가 유지돼 대화도 남고 스킬도 붙는다.
.claude 만 위로 복사하는 우회는 하지 마라 — lessons/ 와 .agents/ 가 아래 남아
프롬프트의 경로가 전부 어긋난다.
이 기수는 Windows 가 많고 맥도 있다. 실행·MCP 등록의 정본 명령은 python — 윈도우(스토어 파이썬)는 그대로 되고, 맥에서 python 이 없다고 나오면 python3 으로 바꿔 실행한다.
.claude/skills/ 는 실제 폴더여야 한다. 「스킬이 설치되지 않았다」면 ROOT 를 연 뒤
맞추고, 앱을 한 번 끄고 연다. 그래도 없으면 .agents/skills/environment/SKILL.md 를 파일로 읽어 그대로 한다.
학생이 이렇게 말하면
| 학생 말 (앞이 정규) | 네가 하는 일 | 카드 |
|---|
| 수업 자료 업데이트 해 줘 / 실습 폴더 업데이트 해 줘 / 맞춰 줘 | 원본이 앞섰으면 맞춘다. CHANGELOG.md 맨 위 칸을 카드에 적는다 | 🔄 업데이트 |
| 실습 환경 설치해 줘 / 세팅해 줘 / 저장소 받아 | git·Python·받기·권한·python verify.py | 📦 설치 |
| 2주차 실습 환경 설치해 줘 / 2주차 환경 세팅 | 기본 5/5 뒤 Docker·KIS 166·Hermes·Telegram·TS 연결 | 📦 2주차 연결 |
| 실습 환경 준비됐는지 확인해 줘 / verify | ROOT 에서 python verify.py | 📦 설치 (점검만) |
| 숙제 환경 준비됐는지 확인해 줘 / 숙제 환경 점검 | ROOT 에서 python verify.py --숙제 | 🧪 숙제 환경 점검 |
git pull 같은 말을 학생에게 시키지 마라. 네가 실행한다.
숙제 파일(내-투자-판단.md, 내-투자-스펙.md, .env)은 덮지 않는다.
학생이 고친 파일이 있어 충돌하면 맞추기 전에 묻는다. 카드는 🟡.
답변 형식 (필수)
학생에게 보이는 답은 카드 한 장으로 시작한다. 앞뒤에 긴 설명을 붙이지 마라.
제목 줄의 이모지·종류를 바꾸지 마라. 다른 수업 안내와 구분되게 하려는 것이다.
맞춘 뒤·이미 최신·충돌·네트워크 실패는 아래 네 장 중 하나다.
🔄 업데이트 · 맞춤 완료
🔄 실습 환경 · 업데이트
────────────────
✅ 맞춤 완료
📌 버전: (VERSION 파일)
📁 폴더: (절대경로)
📅 이 버전
• (CHANGELOG 맨 위 버전 칸의 「한 줄」과 항목)
📝 숙제 파일은 그대로 두었습니다
────────────────
🔄 업데이트 · 이미 최신
🔄 실습 환경 · 업데이트
────────────────
🟢 이미 최신입니다
📌 버전: (VERSION 파일)
📁 폴더: (절대경로)
📅 이 버전: (CHANGELOG 맨 위 칸의 「한 줄」)
────────────────
학생이 직접 「수업 자료 업데이트 해 줘」(또는 같은 뜻)라고 했으면, 이미 최신이어도 이 카드를 보여 준다.
다른 일을 하다가 뒤에서 확인한 경우, 이미 최신이면 카드를 생략하고 하던 일로 간다.
🔄 업데이트 · 확인 필요
🔄 실습 환경 · 업데이트
────────────────
🟡 맞추기 전에 확인이 필요합니다
📁 폴더: (절대경로)
이유: 학생이 고친 파일이 있습니다
다음에 할 일: (하나만)
────────────────
🔄 업데이트 · 원본 확인 건너뜀
🔄 실습 환경 · 업데이트
────────────────
⚪ 원본 확인을 건너뜁니다
이유: 네트워크가 안 됩니다
하던 일을 이어서 진행합니다
────────────────
설치·점검은 이 장이다. python verify.py 화면의 성공/실패 문장을 그대로 옮긴다.
숙제를 시작하기 전에는 python verify.py --숙제 를 돌린다. 기본 점검은 토요일
수업 기준(mock 다섯 개)이라, 평일 숙제에서 막히는 것들을 못 본다. 이쪽은 .env 키,
KIS_MODE, 그리고 공식 도구 설정에 한글이 남았는지를 본다. 마지막 것이 특히 중요하다 —
남아 있으면 원인이 전혀 안 보이는 latin-1 에러로 죽는다. 깨지고 나서 찾는 것보다
시작 전에 한 번 도는 편이 훨씬 싸다.
📦 설치 · 준비됨
📦 실습 환경 · 설치
────────────────
✅ 실습 환경이 준비되었습니다 — 위 다섯 가지가 모두 됩니다
📌 버전: (VERSION 파일)
📁 폴더: (절대경로)
다음: lessons/0-시작/README.md 를 열면 됩니다
────────────────
📦 설치 · 아직 안 됨
📦 실습 환경 · 설치
────────────────
❌ 실습 환경이 아직 준비되지 않았습니다
📌 버전: (VERSION 파일)
📁 폴더: (절대경로)
이유: (verify 화면의 원인 한 줄)
다음에 할 일: (verify 화면의 다음 한 줄)
강사 칸이 있으면 그 칸을 화면에 남기고 설치를 더 밀어붙이지 않는다
────────────────
📦 2주차 연결 · 준비됨
📦 2주차 연결
────────────────
✅ Telegram 실습이 준비되었습니다
📌 기본 환경: verify 5/5
🐳 Docker: Desktop 실행
🔧 KIS MCP: 모의투자 166 API · Hermes 연결
🧭 Hermes: 설치 · Nous 무료 로그인
📱 Telegram: gateway · TS 명령 연결
다음: 폰에서 /ts_doctor → /ts_auth → /ts_help
────────────────
📦 2주차 연결 · 사람 확인 필요
📦 2주차 연결
────────────────
🟡 사람 확인이 필요합니다
완료: (지금까지 끝난 것)
다음: (브라우저 승인 또는 BotFather 행동 하나만)
비밀값은 화면에 다시 표시하지 않습니다
────────────────
매번 먼저 (어떤 일이든)
ROOT 에서 git fetch 하고 git status -sb 를 본다.
behind 가 보이면 맞춘다(git pull). 그다음 🔄 맞춤 완료 카드.
카드의 📌 버전은 루트 VERSION 파일이다. CHANGELOG.md 맨 위 버전 칸과 같아야 한다.
- 충돌하면 🟡. 묻기 전에 덮지 않는다.
- 이미 최신이고 학생이 업데이트를 안 시켰으면 아무 말 없이 하던 일로.
- 네트워크가 안 되면 ⚪ 한 장만 하고 진행.
강사 카톡에는 긴 순서를 넣지 않는다. 카톡 한 글 안에
references/update.md 원본 주소를 붙인다.
https://raw.githubusercontent.com/JungHoonGhae/thecamp-aitrading/main/.agents/skills/environment/references/update.md
그 글이 오면 그 순서대로 맞춘다. 「수업 자료 업데이트 해 줘」도 여기다.
단계 (확인한 뒤에만 다음)
한 번에 한 단계. 끝난 뒤에만 다음.
- git — 없으면 OS에 맞게 설치. ZIP 으로 우회하지 않는다.
- 받기 — ROOT가 없고 지금 열린 폴더가 비어 있으면 원본을 그 폴더 안에 바로 받는다
(
git clone https://github.com/JungHoonGhae/thecamp-aitrading .). 새 하위 폴더를 만들지 않는다.
끝나면 지금 열린 위치에 verify.py가 바로 보여야 한다. 빈 폴더가 아니면서 ROOT도 아니면
덮지 말고 사람에게 빈 폴더 하나만 선택하게 한다. 이미 ROOT가 있으면 그 폴더를 연다.
- 권한 — 작업마다 나눈다. 분석·조회는 읽기 전용이다. 설치·업데이트처럼 파일을
고쳐야 할 때만 현재 실습 폴더 안의 편집을 허용한다. Claude는
acceptEdits, Codex는
workspace-write를 쓴다. 계정 전체의 기본값을 bypassPermissions로 바꾸거나 위험 권한을
영구 저장하지 않는다. 셸 명령은 이번 단계에 필요한 설치·업데이트·점검 명령만 허용한다.
이미 맞으면 건너뛴다.
- 확인 — ROOT 에서
python verify.py. 성공 문장 「실습 환경이 준비되었습니다」. 실패 문장 「실습 환경이 아직 준비되지 않았습니다」. 실패면 강사 칸을 남기고 설치를 더 밀어붙이지 않는다.
- 유지 — 「매번 먼저」대로 맞춘 뒤 4번을 다시 한다.
- 학습 — 환경이 된 뒤에만
lessons/ 순서로. 붙여넣을 문장은 그 문서의 📋 블록을 연 다음 그대로.
2주차 한 문장 설치
학생이 **「2주차 실습 환경 설치해 줘」**라고 하면 아래 순서로 끝까지 진행한다. 학생에게
운영체제별 명령을 고르게 하지 않는다. 사람만 할 수 있는 승인 단계에서만 멈추고 위의
📦 2주차 연결 · 사람 확인 필요 카드로 다음 행동 하나를 보여 준다.
- ROOT에서
python verify.py를 실행한다. 5/5가 아니면 이 스킬의 기본 설치 절차로 먼저 복구한다.
hermes --version을 확인한다. 없으면 운영체제를 확인해 Hermes 공식 설치기를 직접 실행한다.
- Windows PowerShell:
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
- macOS·Linux:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
설치 뒤 새 터미널에서 hermes --version이 보이면 완료다.
hermes portal info에서 Nous Portal 로그인을 확인한다. 없으면 hermes setup --portal을 실행하고
브라우저 승인 한 번만 학생에게 요청한다. 가입·로그인 뒤 상태를 다시 확인한다. 무료 모델은
별도 설치물이 아니다.
- Docker Desktop을 기본 경로로 준비한다.
docker --version과 docker ps를 각각 8초 제한으로
확인한다. 설치 뒤 첫 엔진 시작만 최대 2분 확인한다. 이 2분은 Docker의 기술 제한이 아니라
수업에서 무한 대기를 막는 진행 상한이다. 이미 켜진 엔진은 8초 안에 답해야 한다. 2분이 지나도
안 되면 원인을 한 줄로 알리고 「KIS 공식 166개만 보류, kis-lecture-lab 5개로 본편 계속」을
즉시 보여 준다. Windows는 WSL 2와 Docker Desktop 앱 실행을 확인한다. 관리자 권한·재부팅이
필요하면 사람에게 그 한 단계만 요청한다.
- ROOT에서
python hermes/setup_kis_mcp.py를 실행한다. 이 스크립트가 공식 저장소 받기·이미지
빌드·모의 키 보존·127.0.0.1 컨테이너·Hermes legacy SSE 등록·연결 시험을 한 번에 한다.
Hermes에는 8개 분야 도구로 보이지만 그 안의 API 합계는 166개다. kis-lecture-lab 5개는
지우지 않는다. 설치가 끝나면 hermes mcp test kis-trade-mcp가 성공해야 한다.
- ROOT
.env의 기존 KIS·투자·Telegram 값을 보존한다. Telegram 토큰과 대화 ID가 이미 있으면
다시 묻지 않고 7번으로 간다. 없으면 Telegram 공식 앱의 설치·로그인을 확인하고 ROOT에서
python hermes/setup_course.py --managed-telegram를 실행한다. Hermes 공식
Managed Bot 화면의 Create Bot 소유 확인만 학생에게 요청한다. 토큰·대화 ID는 스크립트가
.env와 Hermes 비밀 저장소에 직접 기록하며 답변·로그·새 문서에 다시 출력하지 않는다.
Managed Bot이 지원되지 않을 때만 lessons/참고/telegram-봇-가이드.md의 BotFather 수동 경로를 쓴다.
- 기존 Telegram 값이 있으면 ROOT에서
python hermes/setup_course.py --from-project-env를 실행한다. 새 Managed Bot 경로는
이 설정까지 이미 끝낸다. 두 경로 모두 스크립트가 gateway 설치·시작·재연결까지 끝낸다.
기존 .env, 학생 스펙, 판단 기록, 계좌 설정은 그대로 둔다.
- 폰에서
/ts_doctor → /ts_auth → /ts_tools 수급 → /ts_help를 차례로 보내게 한다.
doctor에 Docker와 KIS MCP 166이 ✅이고 help가 바로 열리면 📦 2주차 연결 · 준비됨 카드로
끝낸다. Docker 불가 판정을 받은 학생만 KIS MCP가 🟡인 폴백 카드로 끝내고 본편은 계속한다.
공식 링크는 재설치할 때 쓰는 보조 경로다. Hermes는
https://hermes-agent.nousresearch.com/docs/getting-started/installation, Telegram 데스크톱·모바일 앱은
https://telegram.org/apps/download에서 받는다.
2주차 기본 경로는 공식 트레이딩 MCP(kis-trade-mcp)와 Docker다.
kis-trading-mcp 스킬과 lessons/참고/kis-mcp-연동-가이드.md대로 AI가 설치·연결한다.
Docker가 정말 불가능한 학생만 Docker 없는 kis-lecture-lab 다섯 개로 같은 본편을 진행한다.
코딩도우미 MCP는 문서 334개 검색만 하고 주문을 넣지 않는다.
경로가 섞일 때
| 증상 | 원인 | 할 일 |
|---|
verify.py 를 못 찾음 | lessons 나 agent 안에서 실행 | ROOT 절대경로로 이동 |
| MCP 등록이 안 됨 | mcp_server.py 상대경로 | ROOT/agent/mcp_server.py 절대경로 |
| 한글·공백 경로에서 깨짐 | 따옴표 없음 | 경로 전체를 따옴표로 |
| 어떤 폴더인지 모름 | 홈에 여러 복사본 | AGENTS.md 가 있는 쪽만. 다른 복사는 닫는다 |
학생에게 말하는 법
카드 밖에서는 전문용어를 쓰지 않는다.
- GitHub → "네가 받아올 원본 주소"
- clone → "노트북에 받기"
- pull → "수업 자료를 최신으로 맞추기"
- ROOT → "실습 폴더.
verify.py 가 보이는 곳"
한 번에 한 가지만. 브라우저로 GitHub를 구경시키지 마라.