▸CC101 with FC패캠 클로드코드 뽀개기 가이드
▸Claude Code 뽀개기 가이드

Claude Code로
AI 시작하기

Fastcampus 클로드코드 뽀개기

Terminal
$ curl -fsSL https://claude.ai/install.sh | sh
✓ CC101 with FC ready
$ claude
가이드 시작 →공식 문서
17클립
패캠강의 기반
KO

Part 1. 인트로

1-01오리엔테이션1-02강의 활용법1-03cc101 & GPTaku 플러그인

Part 2. 시작하기

2-01Mac 환경 설치2-02Windows 환경 설치2-03첫 실행2-04모드 + Alias

Part 3. 체험하기

3-01대화 패턴 5단계이론3-02데이터 분석3-03보고서 작성3-04대시보드 만들기3-05자료 리서치3-06카드뉴스 만들기3-07리모션 영상3-08포트폴리오 기획3-09포트폴리오 수정3-10Vercel 배포

Part 4. 강화하기

4-01플러그인 설치하기4-02docs-guide4-03kkirikkiri4-04vibe-sunsang

Part 5. 뜯어보기

5-01CLAUDE.md5-02커맨드 & 서브에이전트5-03MCP & CLI5-04Hook5-05GitHub

Part 6. 스킬 만들기

6-01스킬이란 무엇인가이론6-02딥리서치 스킬 직접 만들기6-03v1 분석·비교·개선 → v26-04skillers-suda6-05공공 API — TourAPI 여행 가이드6-06검색 API — 네이버 뉴스레터6-07웹 크롤링 — KREAM 트렌드6-08오디오/영상 → 문서6-09모닝 브리핑6-10콘텐츠 파이프라인Part 6 마무리

Part 7. 실전

7-01하네스 엔지니어링 — 워크스페이스 설계이론7-02워크스페이스 만들기7-03LLM Wiki 설계이론7-04위키 짓기7-05위키 개선 — 하이브리드 RAG7-06유튜브 대시보드 — PRD·데이터 설계설계7-07대시보드 만들기7-08배포하기

Part 8. 성장

8-01성장 리포트Part 8 마무리
100대화 5단계 한눈에101슬래시 커맨드 모음102권한 모드 비교103트러블슈팅

오리엔테이션

강사·강의 소개 + 요금제 안내

Part 1 · Clip 1

🎯 이 클립에서 만드는 것

강의 첫 클립부터 뭔가 만들 줄 알았죠? 잠깐만요. 저는 여기서 먼저 지도를 펴고 출발하겠습니다. 이 강의가 23개 실습으로 어디까지 가는지, 여러분이 뭘 준비하면 되는지부터 짚고 가요. 첫 수업에 강의실 위치, 교재, 질문 채널부터 확인하잖아요? 딱 그 시간이에요.

BeforeAfter
클로드코드가 무엇을 해주는지 막연함이 강의가 대화로 결과물을 만드는 훈련이라는 점을 이해
Part가 많아 어디까지 가는지 헷갈림Part별 흐름과 23개 실습 구조를 큰 지도로 파악
구독과 API 과금이 섞여 보임Claude Pro/Max 구독과 외부 서비스 API를 구분

표에서 볼 건 하나예요. 처음부터 모든 걸 이해하는 게 아니라, 어디로 가는지 알고 출발하는 겁니다.

제가 이 클립에서 가장 먼저 낮추고 싶은 건 "개발자가 아닌데 따라갈 수 있을까?"라는 걱정이에요. 이 강의는 문법 시험처럼 코드를 외우는 과정이 아닙니다. 옆자리 선배에게 묻고, 결과를 보고, 다시 부탁하는 연습에 가까워요.

그래서 첫 클립의 결과는 파일이 아니라 출발 준비입니다. 어떤 요금제를 생각할지, 강의가 어떤 순서로 흘러가는지, 실습이 왜 많은지 감만 잡으면 돼요.


💡 핵심 개념

이 강의는 도구 설명서가 아니라 운전 연습입니다

클로드코드를 처음 보면 버튼도 많고 명령도 많아 보이죠. 그런데 자동차 배울 때 엔진 구조부터 외우진 않잖아요? 시동 걸고, 브레이크 밟고, 천천히 움직이면서 손이 기억하게 만듭니다.

저는 이 강의를 설명서보다 운전 연습장에 가깝게 봅니다. 설치, 첫 실행, 데이터 분석, 카드뉴스, 영상, 포트폴리오, 자동화 스킬까지 직접 만들어봐요. 중요한 건 "내가 뭘 만들고 싶은지 말한다 → 나온 결과를 본다 → 다시 고친다" 이 흐름이에요.

전체 흐름은 23개 실습 중심입니다

강의는 Part 1에서 전체 그림을 보고, Part 2부터 설치와 첫 실행으로 들어갑니다. Part 3에서는 대화만으로 눈에 보이는 결과물을 만들고, Part 4 이후에는 플러그인과 스킬로 클로드코드의 능력을 넓혀요.

처음에 뭐부터 봐야 할지 헷갈리면 이 표만 보시면 됩니다.

구간기억할 내용
Part 1강의 소개, 학습법, cc101과 플러그인 생태계
Part 2Mac 또는 Windows 환경 설치, 첫 실행, 기본 모드 이해
Part 3보고서, 대시보드, 카드뉴스, 영상, 포트폴리오 제작
Part 4 이후플러그인, 내부 구조, 스킬 제작, 업무 자동화, 실전 앱

처음부터 모든 Part를 외울 필요는 없습니다. 지하철 노선도도 목적지 방향만 알면 일단 탈 수 있잖아요.

구독 사용량과 API 과금은 다릅니다

이 강의는 Claude Pro/Max 구독으로 진행합니다. Anthropic API 키를 발급하거나 Console에 결제 정보를 연결하는 과정은 다루지 않아요. 여러분에게 필요한 건 클로드코드를 안정적으로 쓸 수 있는 구독 환경입니다.

헷갈리기 쉬운 지점이 딱 여기예요. Claude Pro/Max 구독은 정해진 사용량 안에서 클로드코드를 쓰는 방식입니다. 반면 API 과금은 외부 서비스처럼 부른 만큼 비용이 찍히는 방식이에요. 휴대폰으로 치면 구독은 월 이용권, API 과금은 쓴 만큼 찍히는 미터기에 가깝죠.

다만 강의 후반에는 외부 서비스 API가 나옵니다. 공공 API나 네이버 데이터를 연결해서 스킬을 만들 수 있거든요. 이건 Anthropic API 인증과 다른 얘기예요. 클로드코드 결제 이야기가 아니라, 필요한 외부 데이터를 가져오는 연결 방식으로 보시면 돼요.

Pro로 시작할 수 있지만 Max가 더 편합니다

Pro로도 됩니다. 다만 솔직히 말하면, 강의 따라가다 보면 부족하게 느껴질 수 있어요. 파일 읽고, 결과물 만들고, 다시 고치고. 이게 한 클립 안에서도 계속 일어나거든요. 한도가 금방 찰 수 있습니다.

Max는 더 넉넉해서 실습을 몰아서 진행하기 편합니다. 제가 Max를 권하는 이유도 거창하지 않아요. 운전 연습할 때 연료 걱정이 적으면 도로에 더 집중할 수 있잖아요.


🚶 진행 흐름

1. 강사의 배경과 강의 목적을 확인하세요

강사는 클로드코드를 단순한 개발 도구로 소개하지 않습니다. 업무 문제를 대화로 풀어내는 도구로 봐요. 이 강의가 목표하는 건 "코드를 잘 짜는 사람 되기"가 아니라 AI와 함께 결과물을 만드는 자신감입니다.

영상에서 제 소개가 나올 때는 경력 자체보다 "왜 이렇게 확신하게 됐는지"를 봐주세요. 반복 업무를 줄이고, 문제를 정리하고, 필요한 결과물을 만들어내는 방식이 이 강의의 중심이에요.

2. 23개 실습 구조를 큰 지도로 보세요

Part 이름을 전부 외우려 하지 마세요. 제가 압축하면 이 세 줄입니다.

  • 처음에는 설치하고 첫 실행을 합니다.
  • 중간에는 보고서, 콘텐츠, 웹사이트처럼 눈에 보이는 결과물을 만듭니다.
  • 후반에는 플러그인과 스킬로 내 업무에 맞게 확장합니다.

이 정도만 잡아두면 이후 클립에서 "지금 내가 어느 구간에 있지?"를 덜 놓쳐요.

3. 요금제 설명은 내 수강 방식과 연결하세요

요금제 선택은 정답 맞히기가 아닙니다. 하루에 조금씩 볼 건지, 주말에 몰아서 실습할 건지에 따라 체감이 달라져요. Pro는 가볍게 시작할 때, Max는 흐름을 끊고 싶지 않을 때 편합니다.

한도가 걸리면 바로 이어서 실습하기 어렵습니다. 보통 바로 풀리는 느낌이 아니에요. 그러니까 "내가 언제, 얼마나 몰아서 들을지"를 먼저 생각해보시면 됩니다.

4. API 이야기는 둘로 나눠서 보세요

이 클립에서 구분할 건 간단합니다. 비용이라는 단어가 같이 나오니까 헷갈릴 뿐이에요.

구분강의에서의 위치
Claude Pro/Max 구독클로드코드를 쓰기 위한 기본 준비
Anthropic API/Console 인증이 강의에서 다루지 않음
공공 API, 네이버 등 외부 서비스 API후반부 스킬 실습에서 다룸

앞으로 "API"라는 단어가 나와도 전부 같은 뜻으로 받아들이지 않으면 됩니다. 어떤 서비스와 연결하는지, 돈이 어디서 나가는지만 보면 돼요.

5. 다음 클립에서 결과물 쇼케이스를 볼 준비를 하세요

이 클립은 출발 안내입니다. 다음 클립에서는 여러분이 실제로 어떤 결과물을 만들게 되는지 먼저 봐요. 아직 따라 만들 필요는 없습니다. "저걸 내 업무 어디에 붙이면 좋을까?" 정도만 생각하며 넘어가세요.


📦 결과물

이 클립은 강의 영상 시청만 — 따라할 결과물은 다음 Part부터입니다.

저장할 파일이나 제출할 과제는 없습니다. 대신 아래 세 가지만 머릿속에 남기면 돼요.

  • 이 강의는 대화로 결과물을 만드는 실습형 강의입니다.
  • 실습은 Part 2부터 시작하고, Part 3부터 눈에 보이는 결과물이 많아집니다.
  • 기본 결제 기준은 Claude Pro/Max 구독이며, Anthropic API/Console 인증은 다루지 않습니다.

개인 메모를 남기고 싶다면 "Pro로 시작할지, Max로 갈지", "가장 기대되는 결과물은 무엇인지" 정도만 적어두세요. 저는 이 정도만 적어도 첫 클립은 충분하다고 봅니다.


🆘 자주 막히는 포인트

막히는 데는 보통 정해져 있어요. 아래 표에서 내 상황과 가까운 줄부터 보시면 됩니다.

증상원인해결
구독과 API가 계속 헷갈림둘 다 비용 이야기라서 섞임이 강의의 기본은 Claude Pro/Max 구독이에요. Anthropic API/Console 인증은 다루지 않습니다.
Pro와 Max 중 무엇을 골라야 할지 모르겠음아직 사용량 감이 없음가볍게 맛보려면 Pro, 강의를 몰아서 따라가려면 Max가 편해요.
"개발자가 아닌데 가능할까?"라는 생각이 듦결과물을 코드로 만든다고 느껴서 부담이 생김중심은 코드 암기가 아니라 질문, 검토, 개선이에요. 선배에게 묻듯이 대화하면 됩니다.
패스트캠퍼스 강의 페이지를 못 찾겠음로그인 계정이나 수강 페이지 위치가 헷갈림패스트캠퍼스에 로그인한 뒤 내 강의실 또는 구매 내역에서 강의명을 검색하면 돼요.
23개 실습이 너무 많아 보임전체 분량을 한 번에 보려 해서 압도됨지금은 Part 1의 큰 그림만 보세요. 손으로 따라 하는 건 Part 2부터 차례로 갑니다.

그래도 안 풀리면 지금 클립 번호와 화면 상태를 같이 적어두세요. 다음 질문이 훨씬 쉬워집니다.


🔗 다음 클립

→ Part 1 / Clip 2: 강의 활용법 - 이 강의에서 직접 보게 될 결과물 쇼케이스와 시작점을 확인합니다.

다음 클립에서는 대시보드, 카드뉴스, 리모션 영상, 포트폴리오 사이트, 모닝 브리핑 같은 결과물을 먼저 봅니다. 여러분은 "내 업무에는 어디에 붙이면 좋을까?"만 들고 오시면 돼요.

강의 활용법

결과물 쇼케이스 + 로드맵 + 커뮤니티

Part 1 · Clip 2

🎯 이 클립에서 만드는 것

시작하기 전에, 먼저 보여드릴게요. 이 클립은 설명서 첫 장을 읽는 시간이 아니라, 여러분이 앞으로 직접 만들 결과물을 먼저 보는 쇼케이스예요. 새 가전제품도 기능표보다 실제로 쓰는 장면을 먼저 보면 감이 오잖아요?

제가 여기서 보여드리는 건 장식용 샘플이 아닙니다. 뒤에서 실제로 만들 결과물들이에요.

BeforeAfter
강의가 어떤 결과로 이어질지 막연함대시보드, 카드뉴스, 영상, 포트폴리오, 자동화 앱을 미리 봄
어디서부터 집중해야 할지 모름내 수준과 목적에 맞는 시작점을 대략 선택
클로드코드와 어떻게 대화해야 할지 부담됨질문하기 → 기획하기 → 만들기 → 검토하기 → 개선하기 흐름을 예고로 이해

표는 간단해요. "아, 내가 저런 걸 만들러 가는구나"를 먼저 잡는 겁니다.

Part 1은 아직 실습하지 않습니다. 대신 "앞으로 무엇을 만들게 되는지"를 눈으로 확인해요. 완주 코스를 먼저 보면 중간에 낯선 내용이 나와도 덜 흔들립니다.

이 클립에서 마음속으로 정할 것은 하나예요. "나는 어떤 결과물을 가장 먼저 내 업무에 써보고 싶은가?" 대시보드일 수도 있고, 카드뉴스일 수도 있고, 매일 아침 보는 모닝 브리핑일 수도 있어요.


💡 핵심 개념

결과물을 먼저 보면 학습 방향이 선명해집니다

비개발자에게 가장 힘든 지점은 사실 이거예요. "그래서 이걸 배워서 어디에 쓰는데?" 명령어를 하나씩 배우는 동안 최종 그림이 안 보이면 금방 지칩니다. 그래서 이 클립은 완성 장면을 먼저 보여드려요.

강의에서 보여주는 결과물은 장식용 샘플이 아니라, 이후 실습에서 실제로 만들게 될 것들입니다. CSV 데이터를 대시보드로 만들고, 리서치 결과를 카드뉴스와 영상으로 바꾸고, 포트폴리오 사이트는 기획부터 배포까지 갑니다.

대표 결과물은 업무 장면과 연결됩니다

결과물 이름보다, 내 업무에서 떠오르는 장면으로 보시면 훨씬 쉬워요.

결과물업무에서 떠올릴 수 있는 장면
대시보드매출, 캠페인, 설문 데이터를 한 화면에서 보고 싶을 때
카드뉴스리서치 내용을 팀 공유용 콘텐츠로 바꾸고 싶을 때
리모션 영상카드뉴스나 안내 자료를 짧은 영상으로 확장하고 싶을 때
포트폴리오 사이트내 프로젝트와 경력을 웹페이지로 정리하고 싶을 때
모닝 브리핑매일 확인하는 메일, 일정, 뉴스를 한 번에 받고 싶을 때
트렌드 분석 앱특정 시장이나 키워드 흐름을 계속 추적하고 싶을 때

오해하면 안 되는 게, "내가 개발자가 되어야 한다"는 얘기가 아닙니다. 내가 이미 하던 일을 더 눈에 보이게, 더 빠르게, 다시 쓸 수 있게 만드는 거예요.

공통 흐름은 5단계입니다

이 강의의 실습은 매번 완전히 다른 방식으로 움직이지 않습니다. Part 3에서 제대로 다루지만, 지금은 이름만 들어두면 돼요.

제가 계속 반복해서 가져갈 순서는 이겁니다.

단계쉽게 말하면
질문하기막연한 생각을 클로드코드에게 꺼내놓기
기획하기무엇을 만들지, 어떤 자료가 필요한지 같이 정리하기
만들기정리된 방향대로 실제 결과물을 생성하기
검토하기나온 결과가 내 의도와 맞는지 확인하기
개선하기부족한 부분을 다시 말하고 더 낫게 다듬기

이 흐름은 옆자리 선배에게 일을 배우는 과정과 비슷합니다. 처음에는 "이 캠페인 결과를 어떻게 보면 좋을까요?"라고 묻고, 틀이 잡히면 자료를 넣고, 나온 결과를 보며 다시 말하는 식이죠.

커뮤니티는 막혔을 때 돌아가는 우회도로입니다

강의를 듣다 보면 화면이 다르게 보이거나, 결과물이 영상과 조금 다르게 나올 수 있습니다. 이때 혼자 오래 붙잡고 있으면 에너지가 빠져요. 오픈채팅방 같은 커뮤니티는 막힌 지점을 짧게 공유하고, 다른 수강생과 강사의 힌트를 받는 공간입니다.

질문할 때는 "안 돼요"만 쓰는 것보다 현재 위치와 증상을 같이 적으면 답을 받기 쉽습니다. 예를 들어 "Part 2 설치 중이고, Mac 터미널 화면이 영상과 다릅니다. 어디를 확인하면 좋을까요?"처럼요. 여러분이 어디에 서 있는지 보여주면, 답변도 훨씬 빨라져요.


🚶 진행 흐름

1. 결과물 쇼케이스를 기능보다 장면으로 보세요

대시보드를 볼 때 차트 종류를 외우려 하지 마세요. "내가 매주 만드는 보고서가 이렇게 클릭 가능한 화면이 되면 어떤 회의가 쉬워질까?"를 떠올리면 됩니다.

카드뉴스와 리모션 영상도 마찬가지예요. 디자인 도구 이름보다, 리서치한 내용을 팀이나 고객에게 더 쉽게 전달하는 장면을 보시면 돼요.

2. 내 업무와 가장 가까운 결과물에 표시하세요

영상을 보면서 마음속으로 하나만 골라보세요. 제가 권하는 방식은 "제일 멋진 것"이 아니라 "내일 바로 써볼 만한 것"을 고르는 겁니다.

  • 숫자와 표를 자주 본다면 대시보드가 가깝습니다.
  • 콘텐츠나 홍보물을 만든다면 카드뉴스와 영상이 가깝습니다.
  • 커리어 정리나 개인 브랜딩이 필요하다면 포트폴리오 사이트가 가깝습니다.
  • 반복 확인 업무가 많다면 모닝 브리핑과 자동화 스킬이 가깝습니다.
  • 시장 흐름을 계속 봐야 한다면 트렌드 분석 앱이 가깝습니다.

3. 5단계 흐름을 이름만 들어두세요

아직 프롬프트를 잘 쓰려고 애쓰지 않아도 됩니다. 이 클립에서는 "질문하고, 기획하고, 만들고, 검토하고, 개선한다"는 순서만 들어두세요. 어차피 Part 3에서 직접 반복합니다.

4. 시작점은 내 수준에 맞춰 잡으세요

처음 듣는다면 Part 2 설치부터 차근차근 따라가세요. 이미 클로드코드를 설치해서 써본 적이 있다면, Part 4의 플러그인 강화나 Part 6의 스킬 만들기에 더 관심이 갈 수 있어요.

하지만 강의를 처음 수강한다면 최소한 Part 1과 Part 2는 빠르게 훑어보는 걸 권합니다. 같은 용어와 폴더 구조를 맞춰두면 뒤에서 덜 헷갈리거든요.

5. 커뮤니티는 빠르게 묻고 빠르게 돌아오는 곳으로 쓰세요

막혔을 때는 오래 참지 마세요. 다만 질문을 올릴 때는 현재 클립, 운영체제, 보이는 증상, 이미 해본 일을 함께 적으면 좋습니다. 이렇게 적으면 다른 사람이 내 자리로 와서 화면을 같이 보는 것처럼 도와주기 쉬워요.


📦 결과물

이 클립은 강의 영상 시청만 — 따라할 결과물은 다음 Part부터입니다.

이 클립에서 남겨야 할 것은 완성 파일이 아니라 내 관심 결과물과 시작점이에요.

헷갈리면 아래 세 칸만 채운다고 생각하세요.

확인할 것예시
가장 기대되는 결과물대시보드, 카드뉴스, 포트폴리오 사이트, 모닝 브리핑
내 현재 위치완전 입문, 설치 경험 있음, 업무 자동화 관심, 스킬 제작 관심
질문 채널패스트캠퍼스 강의 페이지, 오픈채팅방

따로 제출할 것은 없습니다. 그래도 노트를 만든다면 "내가 만들고 싶은 첫 결과물"을 한 줄만 적어두세요. 솔직히 그 한 줄이면 다음 클립을 볼 이유가 훨씬 선명해집니다.


🆘 자주 막히는 포인트

막히는 지점은 보통 비슷합니다. 아래에서 내 증상과 가장 가까운 줄만 보세요.

증상원인해결
결과물이 너무 좋아 보여서 오히려 부담됨완성본을 개발자 결과물처럼 느껴서 위축됨이 클립은 "나도 저쪽으로 간다"를 보는 시간이에요. 구현은 뒤에서 단계별로 나눠 갑니다.
어디서 시작해야 할지 모르겠음관심 결과물과 현재 수준을 한 번에 판단하려 함처음이면 Part 2부터, 이미 써봤다면 관심 Part를 미리 보되 공통 흐름은 챙기면 돼요.
패스트캠퍼스 강의 페이지를 못 찾음로그인 계정이나 구매 강의 위치가 헷갈림패스트캠퍼스 로그인 후 내 강의실에서 강의명을 검색하세요.
오픈채팅방에서 무엇을 물어야 할지 모르겠음질문을 완벽하게 써야 한다고 생각함현재 클립, 화면 상태, 막힌 문장만 짧게 적으면 됩니다.
Pro로 결과물을 다 만들 수 있을지 걱정됨사용량 한도에 대한 감이 없음Pro로 시작할 수 있지만, 긴 실습을 몰아서 하면 Max가 더 편해요.
5단계 흐름이 아직 추상적으로 느껴짐실제 실습 전이라 손에 잡히지 않음정상입니다. Part 3에서 질문하기부터 개선하기까지 직접 반복해요.

여전히 애매하면, "나는 어떤 결과물을 먼저 만들고 싶은가"로 돌아오면 됩니다. 그 답이 시작점을 골라줘요.


🔗 다음 클립

→ Part 1 / Clip 3: cc101 & GPTaku 플러그인 - 한국어 가이드, 플러그인 생태계, 비개발자 해커톤 사례를 확인합니다.

다음 클립에서는 "막히면 어디를 보면 되는지"와 "클로드코드를 어떻게 넓혀 쓸 수 있는지"를 봅니다. 실제 설치는 나중에 해요. 지금은 여러분이 돌아올 지도와 가능성을 먼저 챙기면 됩니다.

cc101 & GPTaku 플러그인

플러그인 생태계 소개 + 해커톤 사례

Part 1 · Clip 3

🎯 이 클립에서 만드는 것

Part 1 마지막 클립입니다. 여기서 제가 꼭 보여드리고 싶은 건 두 가지예요. 막혔을 때 돌아올 한국어 지도, 그리고 클로드코드를 더 넓게 쓰게 해주는 확장 도구입니다. 마지막에는 해외 해커톤 사례도 봅니다. "비개발자도 진짜 가능할까?"라는 질문에 꽤 센 답이 되거든요.

먼저 전체 그림을 표로 잡고 갈게요.

BeforeAfter
공식 문서와 강의 사이에서 어디를 봐야 할지 모름cc101을 막힐 때 돌아오는 한국어 입문 지도로 이해
클로드코드가 기본 기능만 있는 도구라고 생각함플러그인과 스킬로 계속 확장할 수 있다는 점을 파악
비개발자 결과물이 현실적으로 느껴지지 않음해커톤 사례를 통해 자기 문제를 제품으로 바꿀 수 있음을 확인

이 표에서 중요한 건 "지금 바로 설치한다"가 아닙니다. 실제 플러그인 설치와 체험은 Part 4에서 해요. 지금은 스마트폰을 처음 샀을 때 앱스토어가 있다는 사실을 먼저 아는 정도면 충분합니다.


💡 핵심 개념

cc101은 막힐 때 보는 한국어 지도입니다

cc101은 axwith.com에서 볼 수 있는 Claude Code 한국어 입문 가이드입니다. 공식 문서를 처음부터 끝까지 읽기 부담스러운 분들을 위해, 꼭 알아야 하는 개념을 한국어로 정리해둔 안내서예요.

새로운 건물에 처음 가면 모든 방을 다 열어보진 않잖아요? 먼저 안내도를 보고, 화장실과 엘리베이터와 강의실 위치를 확인합니다. cc101도 그런 역할이에요. 설치, 기본 개념, 설정 파일, MCP, 스킬 같은 항목을 필요할 때 찾아보는 지도입니다.

이 강의의 가이드 사이트인 cc101 with fc는 cc101의 흐름을 패스트캠퍼스 강의 순서에 맞게 다시 엮은 공간입니다. cc101이 일반 지도라면, cc101 with fc는 이번 강의 코스용 안내판이라고 보시면 돼요.

둘이 헷갈릴 수 있으니 여기서 한 번 나눠볼게요.

구분역할
cc101Claude Code를 처음 배우는 사람을 위한 한국어 입문 가이드
cc101 with fc패스트캠퍼스 강의 클립 순서에 맞춘 학습 보조 사이트
강의 영상흐름, 시연, 맥락을 보여주는 본 수업

정리하면 이렇습니다. 영상으로 흐름을 보고, cc101 with fc로 다시 짚고, 더 넓은 개념은 cc101에서 찾아보면 돼요.

플러그인은 클로드코드에 붙이는 업무 도구입니다

플러그인은 클로드코드의 기본 능력에 새로운 습관과 도구를 붙이는 방법입니다. 스마트폰에 캘린더 앱, 메모 앱, 사진 편집 앱을 설치하면 같은 스마트폰으로 할 수 있는 일이 늘어나죠. 클로드코드도 비슷해요.

GPTaku 플러그인 생태계에는 여러 갈래의 도구가 있습니다. kkirikkiri는 자연어로 여러 AI 역할을 구성하는 데 도움을 주고, frontend-ui-ux는 화면과 사용자 경험을 다듬는 흐름을 보조해요. vibe-sunsang은 내 AI 활용 방식을 점검하는 데 쓰입니다.

여기서 이름을 모두 외울 필요는 없습니다. 여러분은 "필요한 기능을 나중에 붙일 수 있구나" 정도만 잡으세요. 실제 설치, 실행, 비교는 Part 4에서 하나씩 다룹니다.

스킬은 내 업무 방식으로 클로드코드를 길들이는 방법입니다

플러그인이 앱스토어에서 앱을 설치하는 느낌이라면, 스킬은 내 업무 매뉴얼을 만들어 클로드코드에게 알려주는 느낌입니다. 예를 들어 매주 보고서 형식이 정해져 있다면, 그 순서와 말투와 검토 기준을 스킬로 묶을 수 있어요.

후반부에서는 딥리서치, 공공 API 활용, 검색 API 활용, 회의록 정리, 모닝 브리핑, 콘텐츠 파이프라인 같은 스킬을 직접 만들어봅니다. 제가 계속 강조하고 싶은 건 이거예요. 비개발자라도 내 업무를 말로 설명할 수 있으면, 자동화할 재료가 생깁니다.

해커톤 사례의 핵심은 코딩 실력이 아니라 자기 문제입니다

Anthropic 해커톤 사례에서 눈여겨볼 부분은 수상자들이 모두 전통적인 전문 개발자처럼 출발하지 않았다는 점입니다. 누군가는 도시 인허가 문제를 풀고 싶었고, 누군가는 딸이 쓸 수 있는 코딩 환경을 만들고 싶었고, 누군가는 환자가 진료 내용을 더 쉽게 이해하길 바랐어요.

공통점은 거창한 기술 목표가 아니라 자기 앞의 문제였습니다. 솔직히 이게 제일 중요합니다. 이 강의도 "반복 보고서를 줄이고 싶다", "조사 결과를 보기 좋게 바꾸고 싶다", "아침 정보를 한 번에 받고 싶다" 같은 문제에서 출발해요.


🚶 진행 흐름

1. cc101을 지금 다 읽으려 하지 마세요

이 클립에서 cc101을 소개한다고 해서, 바로 전체 문서를 읽을 필요는 없습니다. 처음에는 "막히면 여기로 돌아오면 된다"는 위치만 기억하세요. 지도는 길 잃었을 때 더 빛나잖아요.

2. cc101 with fc와 강의 영상의 역할을 나누세요

강의 영상은 선생님이 앞에서 직접 보여주는 수업입니다. cc101 with fc는 수업이 끝난 뒤 펼쳐보는 필기 노트에 가깝고요. 영상에서 흐름을 보고, 사이트에서 핵심 개념과 막히는 지점을 다시 확인하세요.

특히 비개발자는 한 번에 다 이해하지 못해도 괜찮습니다. 같은 내용을 영상, 문서, 실습에서 여러 번 만나면서 익숙해지는 편이 더 자연스러워요.

3. 플러그인 이름은 기능 이미지로 기억하세요

지금은 설치하지 않으니 이름을 암기하려 하지 마세요. 대신 이렇게 연결해두면 됩니다.

이름지금 기억할 이미지
kkirikkiri혼자 일하지 않고 AI 팀을 꾸리는 느낌
frontend-ui-ux만든 화면을 더 보기 좋고 쓰기 좋게 다듬는 느낌
vibe-sunsang내 AI 활용 습관을 점검받는 느낌

이름은 낯설어도 괜찮습니다. 이미지만 붙어 있으면 Part 4에서 다시 만났을 때 훨씬 덜 낯설어요.

4. 해커톤 사례를 내 일과 연결하세요

사례를 볼 때 "저 사람은 대단해서 가능했겠지"로 끝내지 마세요. 대신 문제의 크기를 줄여서 보세요. 제가 보는 포인트도 결과의 크기보다 출발점입니다.

  • 인허가 문제는 회사의 반복 승인 업무와 닮아 있습니다.
  • 딸을 위한 도구는 팀원을 위한 내부 도구와 닮아 있습니다.
  • 진료 요약은 고객 상담 내용 정리와 닮아 있습니다.

비개발자에게 필요한 출발점은 완벽한 기술 지식이 아니라, 불편한 장면을 구체적으로 말하는 능력입니다.

5. Part 2로 넘어갈 준비를 하세요

Part 1은 여기서 끝납니다. 다음부터는 실제 설치와 첫 실행으로 들어가요. 지금 해야 할 일은 하나입니다. "나는 앞으로 클로드코드를 내 문제 해결 파트너로 써본다"는 마음으로 Part 2를 시작하는 거예요.


📦 결과물

이 클립은 강의 영상 시청만 — 따라할 결과물은 다음 Part부터입니다.

남겨야 할 결과는 설치 파일이 아니라 아래 세 가지 이해입니다. 여러분이 이 세 줄을 기억하면 Part 1은 충분히 잘 지나온 거예요.

  • cc101은 Claude Code 한국어 입문 가이드입니다.
  • cc101 with fc는 이 강의 순서에 맞춘 학습 보조 사이트입니다.
  • GPTaku 플러그인은 클로드코드를 더 넓게 쓰게 해주는 확장 생태계이며, 실제 설치는 Part 4에서 진행합니다.

개인 메모를 남긴다면 "내 업무에서 자동화하고 싶은 반복 작업 1개"를 적어두세요. 매일 복사해 붙이는 보고서, 매주 정리하는 회의록, 반복해서 보는 뉴스 키워드도 충분한 출발점입니다.


🆘 자주 막히는 포인트

막히는 데는 보통 정해진 이유가 있습니다. 아래 표에서 가까운 증상부터 보시면 돼요.

증상원인해결
cc101을 지금 다 읽어야 할 것 같음가이드를 교재 전체로 받아들임지금은 지도처럼 위치만 기억하세요. 필요한 순간에 관련 항목만 보면 됩니다.
cc101과 cc101 with fc의 차이가 헷갈림이름이 비슷하고 둘 다 학습 문서라서 섞임cc101은 일반 입문 가이드, cc101 with fc는 이번 강의 순서에 맞춘 보조 사이트예요.
플러그인을 바로 설치해야 할 것 같음소개를 실습 지시로 받아들임실제 설치는 Part 4에서 합니다. 지금은 어떤 도구가 있는지 감만 잡으면 돼요.
GPTaku 플러그인 이름이 낯설고 어렵게 느껴짐처음 보는 고유명사가 많음이름보다 기능 이미지를 먼저 기억하세요. AI 팀, UI 개선, 활용 점검처럼 묶으면 됩니다.
해커톤 사례가 나와 너무 멀게 느껴짐결과만 보고 출발점을 보지 못함사례의 핵심은 대단한 기술이 아니라 자기 문제를 구체적으로 잡은 거예요.
"나는 수상자처럼 못 할 것 같다"는 생각이 듦완성 결과와 현재 위치를 바로 비교함지금은 시작 전입니다. Part 2에서 설치하고, Part 3에서 작은 결과물부터 만들며 감을 잡아요.

여전히 멀게 느껴지면 결과가 아니라 문제부터 보세요. "나도 매주 귀찮은 일 하나는 있지" 여기서 출발하면 됩니다.


🔗 다음 클립

→ Part 2 / Clip 1: Mac 환경 설치 - 이제 실제로 클로드코드를 사용할 준비를 시작합니다.

Mac 사용자는 다음 클립부터 설치를 따라가세요. Windows 사용자는 이어지는 Windows 설치 클립까지 함께 확인하면 됩니다. Part 1에서 본 가능성을, Part 2부터는 여러분 컴퓨터 위에 하나씩 올려봅니다.

Mac 환경 설치

안티그래비티 + agent로 CC 세팅

Part 2 · Clip 1

🎯 이 클립에서 만드는 것

Mac 사용자분들은 여기서부터 진짜 시작입니다. 그런데 첫 화면부터 터미널에 긴 명령어를 줄줄 치는 강의, 아닙니다. 이 클립에서는 Mac에서 Claude Code를 처음 실행할 수 있는 기본 환경을 만들어요. 흐름은 안티그래비티 IDE → Homebrew → Git → Node.js → IDE 안의 agent를 활용한 Claude Code 설치 → 인증 → 기본 조작 확인까지예요.

제가 이 클립에서 제일 강조하고 싶은 건 순서예요. 터미널에 명령어 직접 치는 게 아니에요. 안티그래비티 IDE를 먼저 깔고, 빈 폴더를 열고, 그 안의 agent한테 “Claude Code 설치하려는데 어떻게 해?”라고 묻습니다. 그러면 agent가 방법을 설명해주고, 여러분은 읽고 동의한 다음 실행하면 돼요.

끝나고 나면 brew, git, node, npm, claude가 전부 동작해야 합니다. 마지막에는 Claude 계정 인증까지 하고, 테스트 폴더에서 첫 인사까지 확인합니다. 여기까지 되면 Mac 설치는 끝이에요.


💡 핵심 개념

설치도 대화로 진행한다

이 클립에서 외울 건 “Mac에 Claude Code 까는 명령어”가 아닙니다. 진짜 챙겨야 할 건 설치 과정을 안티그래비티 agent와 같이 풀어가는 습관이에요. 앞으로 제가 계속 반복할 패턴도 이거예요.

Mac에 Homebrew 설치하려는데 어떻게 해?
Claude Code를 네이티브 방식으로 설치하려는데, 내 환경에서 안전하게 진행할 순서와 확인 방법까지 알려줘

이렇게 먼저 물어보면 agent가 뭘 설치하는지, 어떤 명령을 실행하는지, 끝나고 뭘로 확인할지 설명해줍니다. 그다음 여러분이 이해하고 OK 하면 실행해요. 솔직히 처음엔 조금 느려 보여요. 그런데 초반에는 이게 훨씬 안전합니다.

도구들의 역할

도구역할이 클립에서 필요한 이유
안티그래비티 IDEagent와 대화하며 작업하는 개발 환경설치를 자연어로 안내받는 첫 화면
HomebrewMac용 패키지 관리자Git, Node.js 같은 도구를 깔 때 쓰는 도우미
Git변경 이력 관리 도구Claude Code가 프로젝트 변화를 따라갈 때 필요
Node.jsJavaScript 실행 환경이후 웹·자동화 실습에서 자주 쓰는 엔진
Claude Code터미널 기반 자율 에이전트강의 전체에서 대화로 일을 시킬 주인공

Homebrew를 깔다 보면 Mac에서 Command Line Developer Tools와 Git이 같이 준비되는 경우가 많아요. 그래도 저는 항상 git --version으로 확인합니다. 설치된 것처럼 보여도 버전 출력이 떠야 완료예요.


🚶 진행 흐름

1. 안티그래비티 IDE 설치

첫 단추는 안티그래비티입니다. 브라우저에서 안티그래비티 다운로드 페이지에 접속해 macOS용 설치 파일을 받고, 설치 후 Google 계정으로 로그인해요.

중요한 게 하나 있어요. 폴더를 열어야 agent가 제대로 작동합니다. 처음에는 실습용 빈 폴더 하나 만들고 열어두면 됩니다.

Open Folder를 눌러 새 실습 폴더를 만들고 열어주세요. 폴더가 열린 상태에서 agent 채팅창이 보이면 다음 단계로 갑니다.

2. Homebrew와 Git 준비

이제 Homebrew입니다. 여러분이 외워야 할 명령어부터 던지는 게 아니라, 안티그래비티 채팅창에 먼저 물어봅니다.

Mac에 Homebrew 설치하려는데 어떻게 해? 설치 후 brew와 git이 제대로 잡혔는지 확인하는 방법까지 알려줘

agent가 안내하는 설명을 읽고 진행합니다. 설치 중 Command Line Developer Tools 팝업이 나오면 Install을 누르면 돼요. 끝나면 아래 명령으로 확인합니다.

brew --version
git --version

두 명령 모두 버전이 나오면 다음 단계로 갑니다. 안 나오면 아직 끝난 게 아니에요.

3. Node.js LTS 설치

Node.js는 Claude Code 자체를 실행하는 데 꼭 필요한 건 아닙니다. 다만 이후 실습에서 웹 프로젝트와 외부 도구를 다룰 때 거의 계속 나와요. 그래서 미리 깔아둡니다. 역시 명령을 외우지 말고 agent에게 묻습니다.

Mac에 Node.js LTS를 설치하려는데 Homebrew 기준으로 어떻게 진행하면 돼? 설치 후 node와 npm 확인 방법도 알려줘

확인은 아래처럼 합니다.

node -v
npm -v

4. Claude Code 설치와 인증

여기서도 인터넷에서 찾은 설치 명령을 바로 복사하지 않습니다. 안티그래비티 IDE 안의 agent에게 먼저 물어보고, 제가 이해한 뒤 실행하는 흐름으로 갑니다.

Claude Code를 설치하려는데, Mac에서 권장되는 네이티브 설치 방식과 설치 후 PATH 확인, 첫 실행 인증 절차까지 순서대로 알려줘

agent가 안내한 내용을 읽고, 실행할 명령이 뭘 바꾸는지 확인한 뒤 진행합니다. 설치가 끝나면 터미널을 새로 열거나 셸 설정을 다시 불러옵니다.

source ~/.zshrc
claude --version

버전이 출력되면 설치는 성공입니다. 이제 테스트 폴더에서 처음 실행해봅니다.

mkdir -p ~/projects/cc101-test
cd ~/projects/cc101-test
claude

브라우저가 열리면 Claude 계정으로 로그인합니다. 터미널에 프롬프트가 돌아오면 간단히 인사해보세요.

hello

📦 결과물

설치가 끝났으면 기록을 남깁니다. 저장 위치는 50-my-work/Part02-시작하기/실습01-Mac환경설치/예요.

실습01-Mac환경설치/
└── README.md          # 설치 완료 시각, 검증 출력, 인증 여부 기록

완료 기준은 단순합니다. “설치한 것 같다”가 아니라, 버전이 실제로 떠야 해요.

항목확인 명령
Homebrewbrew --version
Gitgit --version
Node.jsnode -v
npmnpm -v
Claude Codeclaude --version

마지막 점검은 한 번에 실행해도 됩니다.

brew --version
git --version
node -v
npm -v
claude --version

🆘 자주 막히는 포인트

증상원인해결
안티그래비티에서 agent 입력창이 안 보임폴더를 안 열었거나 로그인 전Open Folder로 빈 폴더를 열고 Google 계정 로그인을 확인하면 돼요
Homebrew 설치 후 brew를 못 찾음PATH가 아직 터미널에 안 들어옴agent에게 PATH 반영 방법을 묻고, 터미널을 새로 열거나 source ~/.zshrc를 실행
git --version이 실패함Command Line Developer Tools 설치가 덜 끝남설치 팝업을 끝내고 다시 확인
node -v는 되는데 npm -v가 실패함Node.js 설치가 덜 반영됨터미널을 다시 열고 확인, 필요하면 agent에게 재점검 요청
claude --version이 안 됨설치 경로가 셸에 아직 안 잡힘터미널 재시작, source ~/.zshrc, PATH 확인
인증 브라우저가 안 열림기본 브라우저 연결이 꼬임터미널에 표시된 URL을 복사해서 브라우저 주소창에 붙여넣기
설치 중 낯선 명령이 나와 불안함뭘 바꾸는지 모르고 실행하려 함agent에게 “이 명령이 무엇을 바꾸는지 설명해 줄 수 있어?”라고 먼저 묻기

🔗 다음 클립

다음은 Part 2 / Clip 2: Windows 환경 설치 입니다. Windows 사용자분들은 여기서 WSL과 Ubuntu 설치로 이어가면 돼요.

Mac 사용자라면 Clip 2는 건너뛰고 Part 2 / Clip 3: 첫 실행으로 넘어가면 됩니다. 설치가 끝났으니 이제 진짜로 Claude Code를 만져볼 차례예요.

Windows 환경 설치

WSL + 안티그래비티 + agent

Part 2 · Clip 2

🎯 이 클립에서 만드는 것

Windows는 Mac보다 한 겹 더 있습니다. 바로 WSL이에요. 이 클립에서는 Windows 사용자가 Claude Code를 실행할 수 있도록 안티그래비티 IDE → WSL 설치 → Windows 재시작 → Ubuntu 초기 설정 → agent에게 Claude Code 설치 방법 요청 → 인증 → 첫 실행 확인까지 가요.

Mac 클립과 똑같이, 설치 명령을 외우는 게 목표가 아니에요. Windows에서는 WSL, Ubuntu, PowerShell, 브라우저 인증이 섞여서 “이 명령을 어디에 쳐야 하지?”가 자주 헷갈려요. 그래서 터미널에 wsl --install부터 치는 게 아니에요. 안티그래비티 IDE를 먼저 열고, 그 안의 agent한테 “WSL에서 Claude Code 설치하려는데 어떻게 해?”라고 물어보면서 가요.

끝나고 나면 WSL Ubuntu 안에서 curl, git, node, npm, claude가 동작해야 해요. 제가 계속 강조할 포인트는 하나예요. Claude Code는 Windows 바탕화면이 아니라 WSL의 Linux 환경 안에서 실행합니다.


💡 핵심 개념

Windows에서는 WSL이 작업 공간이다

Windows에서 Claude Code를 안정적으로 쓰려면 WSL2와 Ubuntu를 작업 공간으로 잡는 게 좋습니다. WSL은 Windows 안에서 Linux를 띄우는 환경이에요. 앞으로 프로젝트 폴더도 가능하면 ~/projects/...처럼 WSL 홈 아래에 둬요.

WSL2에 Ubuntu를 설치하고 Claude Code를 쓰려는데, 처음부터 끝까지 어떤 순서로 하면 돼?

이 질문을 안티그래비티 agent에게 던지면 PowerShell에서 할 일, 재시작 후 Ubuntu에서 할 일, 인증할 때 Windows 브라우저를 써야 하는 지점까지 나눠서 설명해줍니다. 이게 이 강의의 패턴이에요. 복잡할수록 명령어보다 대화로 확인하는 순서가 중요해요.

Windows 설치 흐름 한눈에 보기

단계위치목적
WSL2 설치Windows PowerShellLinux를 돌릴 자리 만들기
재시작WindowsWSL 기능 적용
Ubuntu 초기 설정Ubuntu 터미널사용자명과 비밀번호 만들기
기본 도구 설치Ubuntu 터미널curl, git 준비
Claude Code 설치Ubuntu 터미널강의 실습용 agent 실행 준비
Node.js 설치Ubuntu 터미널이후 웹·자동화 실습에서 쓸 엔진 준비
인증Windows 브라우저 + Ubuntu 터미널Claude 계정 연결

비밀번호를 입력할 때 화면에 아무 글자도 안 보이는 건 정상입니다. 보안 때문에 숨기는 거예요. 안 보여도 입력되고 있으니까 그대로 치고 Enter 누르면 돼요.


🚶 진행 흐름

1. 안티그래비티 IDE 설치

먼저 Windows용 안티그래비티 IDE를 설치하고 Google 계정으로 로그인합니다. 저는 여기서부터 agent를 켜두는 걸 추천해요. 뒤에 나오는 설치 흐름을 계속 물어보면서 갈 수 있거든요.

Windows에서 Claude Code 설치 실습을 시작하려는데, WSL2부터 인증까지 단계별로 알려줘

여기서 agent가 안내하는 내용을 따라가되, Windows PowerShell에서 실행할 명령과 Ubuntu 터미널에서 실행할 명령을 꼭 구분해둡니다. 이 둘이 섞이면 설치가 꼬이기 쉬워요.

2. WSL2와 Ubuntu 설치

PowerShell을 관리자 권한으로 열어 WSL 설치를 진행합니다. 구체적인 명령은 agent가 현재 Windows 상태에 맞게 안내하도록 둡니다. 여러분이 외울 필요 없어요.

WSL2와 Ubuntu를 설치하려는데, PowerShell에서 할 일과 재부팅 후 할 일을 나눠서 알려줘

설치 후에는 Windows를 재시작합니다. 이건 건너뛰면 안 돼요. 재시작하지 않으면 WSL 기능이 제대로 적용되지 않을 수 있습니다. 재시작 뒤 Ubuntu 창이 열리면 사용자명과 비밀번호를 만들어요.

Ubuntu가 준비되었는지 확인해요.

uname -r
pwd

3. Ubuntu 기본 도구 준비

이제 Ubuntu 안에서 기본 도구를 깝니다. Claude Code 설치와 이후 실습에 curl과 git이 필요해요.

WSL Ubuntu에 curl과 git을 설치하려는데, 업데이트부터 설치 확인까지 안전한 순서로 알려줘

설치 후 확인해요.

curl --version
git --version

4. Claude Code와 Node.js 설치

이 단계도 agent 패턴 그대로예요. 인터넷에서 본 명령을 바로 실행하지 말고, 안티그래비티 agent에게 WSL Ubuntu 기준 설치 절차를 먼저 설명받아요.

WSL Ubuntu 안에 Claude Code를 설치하려는데, 권장 설치 방식과 PATH 확인, 인증 방법까지 알려줘

설치가 끝나면 셸 설정을 다시 불러오고 버전을 확인해요.

source ~/.bashrc
claude --version

Node.js도 Ubuntu 안에 설치합니다. Windows에 이미 Node.js가 있어도 WSL 안에서는 별개예요. 이걸 헷갈리면 npm 경로가 섞여요.

WSL Ubuntu에 최신 LTS Node.js를 설치하려는데, Windows 쪽 npm이 섞이지 않게 확인하는 방법까지 알려줘

확인 명령은 이렇게 갑니다.

node -v
npm -v
which npm

which npm이 /mnt/c/...로 시작하면 Windows 쪽 경로가 섞인 겁니다. 이 경우 agent에게 WSL PATH 정리 방법을 다시 물어보면 돼요.

5. 첫 실행과 인증

마지막으로 WSL 홈 아래에 테스트 폴더를 만들고 Claude Code를 실행합니다. /mnt/c 아래가 아니라 ~/projects 아래라는 점, 꼭 보세요.

mkdir -p ~/projects/cc101-test
cd ~/projects/cc101-test
claude

WSL에서는 브라우저가 자동으로 안 열릴 수 있습니다. 에러가 아니라 정상이에요. 터미널에 표시된 인증 URL을 복사해서 Windows 브라우저 주소창에 붙여넣고 로그인하면 돼요.


📦 결과물

설치가 끝났으면 기록을 남깁니다. 저장 위치는 50-my-work/Part02-시작하기/실습02-Windows환경설치/예요.

실습02-Windows환경설치/
└── README.md          # WSL 버전, Ubuntu 사용자, 설치 검증, 인증 여부 기록

최종 확인 항목은 다음과 같습니다. 여기서는 “Windows에서 된다”가 아니라 “WSL Ubuntu 안에서 된다”가 기준이에요.

항목확인 명령
WSL Ubuntuuname -r
curlcurl --version
Gitgit --version
Node.jsnode -v
npmnpm -v
npm 경로which npm
Claude Codeclaude --version

한 번에 확인하려면 아래 순서로 실행해요.

uname -r
curl --version
git --version
node -v
npm -v
which npm
claude --version

🆘 자주 막히는 포인트

증상원인해결
WSL 설치 후 Ubuntu가 안 열림재시작이 안 됐거나 Windows 기능 적용 전Windows 재시작 후 다시 확인
Ubuntu 비밀번호가 입력되지 않는 것처럼 보임Linux 터미널은 비밀번호 표시를 숨김화면에 안 보여도 입력 후 Enter
curl이나 git이 없음Ubuntu 기본 도구가 아직 없음agent에게 Ubuntu 기준 설치 명령을 다시 요청
claude가 안 잡힘PATH가 현재 셸에 아직 안 들어옴source ~/.bashrc 실행 또는 Ubuntu 터미널 재시작
인증 브라우저가 자동으로 안 열림WSL에서는 흔한 일URL을 복사해 Windows 브라우저에 직접 붙여넣기
which npm이 /mnt/c/...로 나옴Windows npm이 WSL PATH에 섞임agent에게 “WSL PATH에서 Windows npm이 먼저 잡히지 않게 정리하려는데 어떻게 해?”라고 질문
프로젝트를 /mnt/c 아래에 만듦Windows 파일 시스템을 WSL에서 쓰는 중~/projects/... 아래로 옮겨 실습
PowerShell과 Ubuntu 터미널이 헷갈림실행 위치가 섞임agent에게 “이 명령은 PowerShell이야, Ubuntu야?”라고 매번 확인

🔗 다음 클립

다음은 Part 2 / Clip 3: 첫 실행 입니다. 설치가 끝났다면 이제 Claude Code 화면을 직접 보고, 슬래시 명령과 모델 전환, 첫 폴더 정리 실습까지 가봐요.

첫 실행

화면 / 슬래시 / 모델 / powerup + 폴더 정리

Part 2 · Clip 3

🎯 이 클립에서 만드는 것

설치가 끝났다고 바로 감이 오진 않죠? 이 클립은 처음으로 Claude Code를 제대로 만져보는 시간입니다. 단순히 claude를 실행해보는 데서 끝나지 않고, 화면 구성, 슬래시 커맨드, 모델 전환, 자기 학습 기능, 실제 파일 정리까지 한 번에 봐요.

마지막 실습은 다운로드 폴더 정리예요. 여기서 제가 꼭 보여주고 싶은 장면이 나옵니다. Claude Code는 일반 챗봇이 아니라 자율 에이전트입니다. 여러분이 한 줄로 요청하면 폴더를 분석하고, 정리 방안을 판단하고, 실행 전에 확인을 요청하고, 허락받은 뒤 파일을 옮겨요.

여기서 꼭 짚고 넘어갈 게 있어요. Claude Code는 혼자 막 실행하는 도구가 아니라, STEP 3 확인에서 사용자의 승인을 받는 도구예요. 이 안전장치를 이해하고 나면 “AI에게 작업을 맡긴다”는 말이 훨씬 덜 막연해져요.


💡 핵심 개념

Claude Code 화면의 기본 요소

처음 실행하면 화면이 좀 낯설 수 있습니다. 괜찮아요. 이름만 알아도 이후 강의가 훨씬 편해집니다.

요소위치역할
프롬프트 입력 영역화면 하단자연어 지시와 슬래시 명령 입력
Status Line입력창 아래현재 폴더, 모델, 컨텍스트, 비용, 모드 확인
응답 영역화면 위쪽답변, 코드블록, 파일 변경 내역 표시
도구 호출 표시응답 중간파일 읽기, 명령 실행 같은 agent 행동 표시
Permission Prompt실행 직전파일 수정이나 명령 실행 전에 사용자 승인 요청
Spinner응답 중생각 중이거나 작업 중이라는 표시

Status Line은 여러분 입맛대로 바꿀 수 있습니다. /statusline 뒤에 원하는 표시 방식을 자연어로 적으면 돼요. 저는 첫날에는 모델, 현재 폴더, 컨텍스트 정도만 보여도 충분하다고 봅니다.

/statusline 모델, 현재 폴더, 컨텍스트 퍼센트, 누적 비용을 한 줄로 보여줘

슬래시 커맨드와 모델 전환

Claude Code 안에서 /로 시작하는 명령은 특별한 기능을 호출합니다. 처음부터 전부 외우려고 하지 마세요. 네 개만 익숙해져도 충분합니다.

명령용도
/help사용 가능한 명령 목록 확인
/clear현재 대화 화면과 맥락 정리
/status계정, 모델, 연결 상태 확인
/usage토큰 사용량과 한도 확인

모델은 /model로 전환합니다. Sonnet은 대부분의 작업에 좋은 기본값, Opus는 복잡한 분석과 디버깅, Haiku는 간단한 확인과 요약에 좋다고 보시면 돼요.

/model

기본 모델을 고정하고 싶다면 설정 파일을 수정할 수도 있습니다. 다만 첫날에는 피커로 한 번 바꿔보는 정도면 충분해요.

자율 에이전트 4단계

다운로드 폴더 정리에서 확인할 핵심 구조입니다. 어렵게 볼 필요 없어요. “보고, 판단하고, 물어보고, 실행한다”입니다.

STEP 1 분석 -> STEP 2 판단 -> STEP 3 확인 -> STEP 4 실행

여기서 STEP 3이 안전장치예요. “이렇게 정리할까요?”라고 물었을 때 여러분이 동의해야 실행됩니다. 처음부터 바로 실행을 요청하기보다 아래처럼 시작합니다.

다운로드 폴더를 정리하려는데 어떻게 하면 좋을지 먼저 분석해서 알려줘

이 문장은 Part 3에서 본격적으로 배울 대화 5단계 패턴의 첫 맛보기입니다. 던지기, 범위 좁히기, 만들기, 검증, 개선의 흐름을 여기서 미리 경험하는 거예요.


🚶 진행 흐름

1. 화면 둘러보기

먼저 테스트 폴더에서 Claude Code를 실행합니다. 설치 확인은 했으니, 이제 화면을 보는 시간이에요.

mkdir -p ~/projects/cc101-test
cd ~/projects/cc101-test
claude

입력창, Status Line, 응답 영역, Permission Prompt가 어디에 나타나는지 확인합니다. 이어서 여러분이 보고 싶은 Status Line을 직접 설정해봅니다.

/statusline 모델 이름, 현재 폴더, 컨텍스트 사용량, 오늘 사용 비용을 보기 좋게 표시

2. 슬래시 커맨드 확인

아래 명령을 한 번씩 입력해봅니다. 결과를 외울 필요는 없습니다. 어디서 확인할 수 있는지만 익숙해지면 돼요.

/help
/status
/usage
/clear

/clear는 대화를 새로 시작하고 싶을 때 유용합니다. 다만 진행 중인 작업 맥락도 같이 정리돼요. 중요한 작업 중이라면 먼저 필요한 내용을 남겨두는 습관이 좋습니다.

3. /model로 모델 전환

모델 선택 화면을 열어 다른 모델을 한 번 선택해봅니다. 이건 겁낼 필요 없어요. 지금 세션에서 한 번 바꿔보는 정도입니다.

/model

선택 후 Status Line에서 모델명이 바뀌었는지 확인합니다. 복잡한 분석은 Opus, 일반 작업은 Sonnet, 간단한 요약은 Haiku 정도로 기억하면 됩니다.

4. /powerup 체험

Claude Code에는 스스로 기능을 알려주는 대화형 학습 기능이 있습니다. 이름이 /powerup이에요.

/powerup

토픽 목록이 나오면 흥미로운 주제 하나를 선택해 따라갑니다. 이 강의에서 모든 기능을 한 번에 외우지 않아도 돼요. 막히면 /powerup으로 다시 배우면 됩니다.

5. 다운로드 폴더 정리

이제 진짜 작업을 시켜봅니다. 실제 다운로드 폴더에 파일이 충분하면 본인 폴더로 진행하세요. 파일이 적거나 개인정보가 걱정되면 실습용 폴더를 따로 만들어도 됩니다.

~/Downloads 폴더를 정리하려는데 어떻게 하면 좋을지 먼저 분석해서 알려줘. 파일을 옮기기 전에 정리 기준과 예상 결과를 설명해 줄 수 있어?

또는 실습용 폴더를 쓰는 경우:

~/Downloads/cc-demo 폴더를 정리하려는데 어떻게 하면 좋을지 먼저 분석해서 알려줘. 파일을 옮기기 전에 정리 기준과 예상 결과를 설명해 줄 수 있어?

Claude Code가 분석과 판단을 보여준 뒤 실행 여부를 물으면, 내용을 확인하고 승인합니다. 제가 이 장면을 중요하게 보는 이유가 있어요. 바로 여기서 “AI가 막 하는 게 아니라 물어보고 한다”는 감이 생깁니다. 정리 후에는 검증과 개선까지 이어갑니다.

정리 결과를 검토하려는데, 빠진 파일이나 애매한 분류가 있는지 확인하고 요약해 줄 수 있어?
PDF 파일 폴더 안에서 날짜순으로 다시 정리하려는데 어떻게 개선하면 좋을지 제안해 줄 수 있어?

📦 결과물

결과물은 첫 실행 기록입니다. 저장 위치는 50-my-work/Part02-시작하기/실습03-첫실행-폴더정리/예요.

실습03-첫실행-폴더정리/
└── README.md          # 모델, 모드, 정리 대상, Before/After, 검증·개선 기록

README에는 다음 내용을 남깁니다. 거창한 보고서가 아니라, 나중에 “내가 뭘 했더라?” 볼 수 있는 기록이면 충분해요.

항목기록 내용
사용 모델Sonnet, Opus, Haiku 중 실제 사용한 모델
사용 모드현재 Permission 모드
정리 대상~/Downloads 또는 ~/Downloads/cc-demo
Before/After정리 전 파일 수와 정리 후 폴더 구조
안전장치 확인STEP 3에서 실행 여부를 확인했는지
개선 요청검증 후 추가로 요청한 개선 내용

이 클립을 마치면 progress.json에는 실습 3 완료 상태가 반영됩니다. “첫 실행 성공”보다 “분석 → 판단 → 확인 → 실행” 흐름을 직접 봤다는 게 더 중요해요.


🆘 자주 막히는 포인트

증상원인해결
Claude Code 화면에서 무엇을 봐야 할지 모르겠음UI 요소 이름이 아직 낯섦입력창, Status Line, 응답 영역, Permission Prompt만 먼저 확인
/statusline만 입력했는데 변화가 없음원하는 표시 방식을 같이 안 적음/statusline 모델과 현재 폴더를 보여줘처럼 요청을 같이 입력
/help 결과가 너무 많음모든 명령을 외우려 함/help, /clear, /status, /usage 네 개부터 사용
/model 후 모델이 바뀐 것 같지 않음선택 후 Status Line을 안 봄Status Line의 모델명을 다시 확인
/powerup을 언제 쓰는지 모르겠음기능을 외우려고 함모르는 기능이 생길 때 대화형 도움말처럼 사용
다운로드 폴더 정리가 불안함실제 파일 이동이 포함됨먼저 분석과 정리 기준만 요청하고, 실행 전 STEP 3 확인에서 멈춤
바로 실행을 요청함결과만 받는 습관“정리하려는데 어떻게 하면 좋을지 먼저 분석해 줄 수 있어?”로 바꿔 입력
정리 후 결과가 마음에 들지 않음기준이 아직 덜 구체적임검증 후 날짜순, 파일 종류별, 프로젝트별 등 개선 요청

🔗 다음 클립

다음은 Part 2 / Clip 4: 모드 + Alias 입니다. 방금 본 Permission Prompt를 바탕으로 Default, Accept-edits, Plan, Auto, Bypass의 차이를 잡고, cc alias까지 설정합니다.

모드 + Alias

4가지 모드 + cc Alias 세팅

Part 2 · Clip 4

🎯 이 클립에서 만드는 것

매번 “이거 해도 돼요?”라고 묻는 게 안전하긴 한데, 계속 쓰다 보면 조금 답답하죠. 이 클립에서는 Claude Code를 더 빠르고 편하게 쓰기 위한 두 가지를 잡습니다. 첫째, 작업 성격에 따라 권한 모드를 바꾸는 법. 둘째, 매번 claude를 입력하지 않고 짧은 별명으로 실행하는 alias입니다.

Clip 3에서 다운로드 폴더를 정리하면서 Claude Code가 실행 전에 “이 작업을 해도 될까요?”라고 확인하는 장면을 봤습니다. 그 확인 방식은 모드에 따라 달라져요. 처음에는 묻는 게 좋습니다. 그런데 계속 쓰다 보면 작은 편집마다 멈추는 흐름이 꽤 답답해집니다.

끝나고 나면 여러분에게 맞는 권한 모드를 고르고, 터미널에서 cc만 입력해 Claude Code를 실행할 수 있어야 합니다. 익숙한 분들은 ccd, ccr처럼 Bypass와 resume을 섞은 alias도 같이 등록할 수 있어요. 저는 첫날에는 cc부터 추천합니다.


💡 핵심 개념

권한 모드는 자동차 기어다

권한 모드는 Claude Code가 파일을 읽고, 수정하고, 명령을 실행할 때 얼마나 자주 사용자에게 확인할지 정하는 장치입니다. 자동차 기어처럼 생각하면 쉬워요. 처음에는 수동으로 천천히 가고, 익숙해지면 자동으로 바꾸고, 복잡한 길에서는 네비게이션을 먼저 봅니다.

모드자동차 비유행동추천 상황
Default수동 기어대부분의 행동마다 확인첫 실행, 낯선 프로젝트
Accept-edits자동 기어안전한 파일 편집은 자동, 위험한 작업은 확인입문자 기본값
Plan네비게이션실행 전 계획을 먼저 보여줌큰 수정, 구조 변경, 불안한 작업
Auto풀 자동위험한 작업 위주로 확인Max 사용자, 반복 실습
Bypass레이싱 모드거의 묻지 않고 진행격리된 환경, 충분히 익숙한 사용자

강의 기본 권장은 단순합니다. Pro 사용자는 Accept-edits로 시작하면 흐름이 부드럽고, Max 사용자는 Auto를 써도 좋아요. Bypass는 강력합니다. 솔직히 편해요. 다만 첫날 기본값으로 두지는 않습니다. 이런 모드가 있다는 걸 알고, 나중에 본인이 책임질 수 있는 환경에서 선택하면 됩니다.

Shift+Tab으로 모드를 바꾼다

Claude Code가 실행 중인 상태에서 Shift+Tab을 누르면 모드가 순환합니다. 입력창 안에서 눌러야 해요.

Default -> Accept-edits -> Plan -> Default

Status Line을 보면 현재 모드가 바뀌는 걸 확인할 수 있습니다. Bypass는 일반 사이클에 들어있지 않아요. 실행할 때 별도 플래그를 붙이거나 alias로 따로 만들어둡니다.

Alias는 실행 단축키다

alias는 긴 명령에 붙이는 짧은 별명입니다. 터미널에 매번 claude를 입력하는 대신 cc만 입력해 실행할 수 있어요. 작은 차이인데, 매일 쓰면 꽤 큽니다.

별명실제 명령용도
ccclaude기본 실행
ccdclaude --dangerously-skip-permissionsBypass로 바로 실행
ccrclaude --resume --dangerously-skip-permissions이전 세션 이어서 Bypass 실행

처음에는 cc 하나만 등록해도 충분합니다. ccd와 ccr은 반복 작업이 많고, 현재 폴더가 안전하다는 확신이 있을 때 쓰면 돼요.


🚶 진행 흐름

1. Shift+Tab으로 모드 사이클 확인

Claude Code 실행 상태에서 Shift+Tab을 눌러봅니다. 한 번 누를 때마다 Status Line의 모드 표시가 바뀌어요.

Shift+Tab

Default, Accept-edits, Plan을 한 바퀴 돌려봅니다. 바뀐 모드가 실제로 Status Line에 표시되는지 확인하세요.

2. /powerup으로 권한 모드 학습

이번엔 Claude Code 안에서 /powerup을 실행합니다. 문서로만 읽는 것보다 직접 보여주는 설명이 더 빠르게 들어와요.

/powerup

토픽 목록에서 권한 모드와 관련된 항목을 선택합니다. Claude Code가 자기 자신을 예시와 함께 설명해주기 때문에 감이 빨리 옵니다.

3. 본인 기본 모드 선택

처음에 뭐 고를지 헷갈리면, 저는 이렇게 추천합니다.

사용자 상황추천 모드이유
오늘 처음 시작Default 또는 Accept-edits안전장치를 눈으로 확인하기 좋음
Pro 구독자Accept-edits속도와 확인의 균형이 좋음
Max 구독자Auto반복 실습에서 흐름이 덜 끊김
큰 리팩터링 전Plan먼저 계획을 보고 승인할 수 있음
격리된 실습 폴더Bypass 선택 가능위험을 감당할 수 있는 환경에서만

모드를 바꾼 뒤 간단한 요청을 하나 넣어 확인합니다. 실제로 어떻게 묻고 멈추는지 보는 게 중요해요.

현재 폴더를 살펴보고 어떤 파일이 있는지 요약하려는데, 먼저 어떤 방식으로 확인할지 알려줘

4. Claude Code 종료 후 alias 설정

alias는 Claude Code 밖, 일반 터미널에서 설정합니다. 먼저 Claude Code를 종료합니다.

/exit

Mac은 ~/.zshrc, Windows WSL은 ~/.bashrc에 alias를 추가합니다. 여기서 운영체제별 파일이 다르다는 점만 조심하면 돼요.

Mac 기본형:

echo 'alias cc="claude"' >> ~/.zshrc
source ~/.zshrc

Windows WSL 기본형:

echo 'alias cc="claude"' >> ~/.bashrc
source ~/.bashrc

풀 패키지를 등록하려면 아래처럼 추가합니다. Bypass를 아직 안 쓸 생각이면 cc만 등록해도 됩니다.

Mac 풀 패키지:

cat >> ~/.zshrc << 'EOF'
alias cc='claude'
alias ccd='claude --dangerously-skip-permissions'
alias ccr='claude --resume --dangerously-skip-permissions'
EOF
source ~/.zshrc

Windows WSL 풀 패키지:

cat >> ~/.bashrc << 'EOF'
alias cc='claude'
alias ccd='claude --dangerously-skip-permissions'
alias ccr='claude --resume --dangerously-skip-permissions'
EOF
source ~/.bashrc

5. 작동 확인

새 터미널을 열거나 설정 파일을 다시 불러온 뒤 cc를 입력합니다.

cc

Claude Code가 실행되면 성공입니다. 이미 다른 프로그램이 cc라는 이름을 쓰고 있다면 clc, claudie처럼 다른 별명을 선택하면 돼요. 이때도 무작정 고치지 말고 Claude Code나 안티그래비티 agent에게 현재 alias 목록을 확인하는 방법을 물어보면 됩니다.


📦 결과물

마지막 결과물은 선택한 모드와 alias 기록입니다. 저장 위치는 50-my-work/Part02-시작하기/실습04-모드소개-Alias/예요.

실습04-모드소개-Alias/
└── README.md          # 선택한 모드, alias 설정 여부, OS별 설정 파일 기록

README에는 다음 내용을 기록합니다. 나중에 새 터미널에서 cc가 안 먹힐 때, 이 기록이 꽤 도움이 됩니다.

항목기록 내용
선택한 기본 모드Default, Accept-edits, Plan, Auto 중 하나
Bypass 이해 여부ccd, ccr 등록 여부와 사용 조건
설정 파일Mac은 ~/.zshrc, WSL은 ~/.bashrc
alias 확인cc 입력 시 Claude Code가 실행되는지
다음 학습 준비Part 3로 넘어갈 준비 완료 여부

progress.json에는 Part 02 완료, 실습 4 완료, 선호 모드, alias 설정 여부가 반영됩니다. 이 클립까지 끝나면 설치와 첫 조작 준비가 마무리돼요.


🆘 자주 막히는 포인트

증상원인해결
Shift+Tab을 눌러도 변화가 없음Claude Code 밖에서 누름Claude Code 실행 상태의 입력창에서 다시 시도
모드가 어디에 표시되는지 모르겠음Status Line을 안 봄입력창 아래 Status Line에서 현재 모드 확인
Bypass가 사이클에 없음Bypass는 일반 모드 순환에 없음별도 실행 플래그나 alias로 사용
cc 입력 시 command not found설정 파일을 아직 안 불러옴source ~/.zshrc 또는 source ~/.bashrc 실행
cc가 다른 프로그램을 실행함이미 같은 이름의 alias나 명령이 있음다른 별명을 정하고 설정 파일에서 충돌 확인
.zshrc와 .bashrc가 헷갈림Mac과 WSL 설정 파일이 다름Mac은 ~/.zshrc, WSL Ubuntu는 ~/.bashrc
ccd가 불안함Bypass가 확인을 거의 생략함입문 단계에서는 cc만 쓰고 Accept-edits를 기본으로 유지
alias를 잘못 추가함따옴표나 줄바꿈이 깨짐설정 파일에서 해당 줄을 확인하고 다시 source 실행

🔗 다음 클립

다음은 Part 3 / Clip 1: 대화 패턴 5단계 입니다. Part 02에서 설치, 첫 실행, 권한 모드, alias까지 끝냈으니 이제 대화만으로 실제 결과물을 만드는 흐름으로 들어갑니다. 여기부터가 진짜 재미있는 구간이에요.

대화 패턴 5단계

모든 클립을 관통하는 흐름 (이론)

Part 3 · Clip 1이론

🎯 이 클립에서 만드는 것

첫 클립부터 파일을 만들지는 않습니다. 대신 앞으로 9개 실습에서 계속 반복할 대화 방식을 먼저 잡고 가요. 데이터 분석, 보고서, 대시보드, 카드뉴스, 영상, 포트폴리오, 배포까지 결과물은 매번 달라지지만 흐름은 같습니다.

흐름은 질문하기 → 기획하기 → 만들기 → 검토하기 → 개선하기, 이렇게 다섯입니다. 저는 이걸 그냥 "AI에게 말 잘 거는 법" 정도로 보지 않습니다. 뭘 만들든 이 순서가 잡히면 결과물이 훨씬 덜 흔들려요.

구분평소 방식AI와 함께하는 방식
시작선배에게 "이거 어떻게 가?"라고 물음클로드코드에게 가능한 방식과 선택지를 먼저 물음
정리머릿속 조건을 메모로 정리조건을 문장으로 묶고 AI가 이해한 내용을 다시 확인
실행직접 자료 찾고 파일을 만듦AI가 파일·차트·웹페이지를 생성
확인결과를 읽고 빠진 걸 찾음사람이 기준을 들고 근거와 흐름을 검토
수정PPT나 문서를 다시 열어 고침범위를 잘라 부분 수정 요청

여러분이 이 클립 끝에 가져갈 건 파일이 아니라 패턴입니다. 이 패턴 하나로 Part 3 전체를 밀고 갑니다.


💡 핵심 개념

BUILD 기법 = 5단계입니다

이 부분은 꼭 짚고 가요. BUILD 기법은 5단계예요. 새로 외울 게 두 벌 있는 게 아닙니다. Part 01에서 본 BUILD를 한국어로 풀면 바로 이 흐름입니다.

B(질문) + U(기획) + I(만들기) + L(검토) + D(개선). B-U-I-L-D, 5단계입니다. 뭘 만들든 이 한 가지 패턴이에요.

BUILD5단계한 줄로 보면
B질문하기"~하려는데 어떻게 해?"로 옵션을 펼침
U기획하기조건을 정하고 AI가 이해한 내용을 확인
I만들기뼈대부터 실제 결과물을 생성
L검토하기근거, 일관성, 의도 부합을 사람이 확인
D개선하기문제 있는 부분만 잘라서 수정

AI를 처음 쓰면 바로 "보고서 작성", "대시보드 생성"처럼 결과부터 말하고 싶잖아요? 그런데 그렇게 던지면 AI는 우리 머릿속 맥락을 모른 채 달리기 시작합니다. 좋은 시작은 명령이 아니라 질문입니다. "이런 일을 하려는데 어떻게 접근하면 좋을까요?" 이 한 줄에서 일이 풀려요.

1단계: 질문하기

질문하기는 "이런 거 하려는데 어떻게 시작하면 좋을까요?"라고 묻는 단계입니다. 아직 만들지 않아요. 가능한 방법, 필요한 자료, 먼저 정해야 할 항목을 넓게 보는 시간입니다.

경쟁사 분석 임원 보고를 준비하려는데, 먼저 정해야 할 항목과 슬라이드 구성 옵션을 2~3개로 정리해 주세요.

2단계: 기획하기

기획하기는 선택한 방향을 조건으로 묶는 단계입니다. 무엇을 만들지, 어떤 자료를 쓸지, 어떤 형식이 필요한지 정리합니다. 마지막에는 꼭 "내 요청을 어떻게 이해했는지 다시 설명해 주세요"라고 확인시켜 보세요.

의사결정용 8장 슬라이드로 가려고 합니다. 비교 대상은 A·B·C 경쟁사, 기준은 가격·기능·점유율·R&D입니다. 임원이 Q3 투자 우선순위를 정하는 데 쓰는 보고서로 이해했는지 다시 설명해 주세요.

3단계: 만들기

만들기는 충분히 좁힌 뒤 실행하는 단계입니다. 한 번에 완성본을 요구하기보다 뼈대 먼저, 살은 나중에가 안전해요. 목차, 섹션, 핵심 메시지처럼 큰 구조가 맞아야 세부 내용도 덜 흔들립니다.

위 조건으로 8장 슬라이드의 목차와 각 장 핵심 메시지 1줄을 먼저 만들려고 합니다. 구조를 먼저 제안한 뒤, 확인 후 본문 작성으로 이어가세요.

4단계: 검토하기

검토하기는 AI가 만든 결과물을 사람이 기준으로 보는 단계입니다. 특히 보고서와 리서치에서는 근거, 일관성, 의도 부합을 봐야 합니다. AI가 말은 매끄럽게 만들 수 있어요. 하지만 최종 판단은 여러분이 합니다.

완성된 슬라이드를 검증하려고 합니다. 각 주장에 출처가 있는지, 경쟁사 비교 기준이 일관적인지, 임원 의사결정에 필요한 결론이 보이는지 점검해 주세요.

5단계: 개선하기

개선하기는 전체를 다시 시작하는 단계가 아닙니다. 좋은 부분은 남기고, 문제 있는 위치만 고쳐요. 위치, 바꿀 기준, 유지할 범위를 같이 말하면 결과가 훨씬 안정적입니다.

6번 슬라이드의 B사 신규 기능 출시 문장 옆에 출처를 푸터로 추가하려고 합니다. 다른 슬라이드의 내용과 디자인은 그대로 유지하세요.

여기까지가 BUILD 기법입니다. 질문하기가 B, 기획하기가 U, 만들기가 I, 검토하기가 L, 개선하기가 D예요. 약자를 따로 외우기보다 일의 순서로 기억하시면 됩니다.


🚶 진행 흐름

한 시나리오로 5단계 풀어보기

5단계만 따로 들으면 조금 추상적이죠. 그래서 이제 한 시나리오로 풀어보겠습니다. 상황은 경쟁사 분석 임원 보고입니다. 다음 주 임원 회의에서 Q3 투자 우선순위를 정해야 하고, 발표 시간은 10분. 결과물은 8장 내외 슬라이드라고 가정할게요.

단계평소 우리가 하던 방식AI와 함께하는 방식
1. 질문하기선배에게 "어떤 구성으로 가야 할까?"라고 물음클로드코드에게 체크리스트와 구성 옵션을 요청
2. 기획하기고른 방향을 메모로 정리비교 대상, 기준, 자료, 톤을 한 문단으로 정리
3. 만들기PPT를 열고 차트와 표를 직접 작성목차와 메시지 확인 후 슬라이드 초안을 생성
4. 검토하기임원 입장에서 근거와 결론을 확인출처, 비교 기준, 의사결정 도움 여부를 점검
5. 개선하기부족한 슬라이드를 직접 수정특정 슬라이드만 범위를 지정해 부분 수정

실제 대화 흐름

1. 질문하기에서는 선택지를 넓힙니다.

경쟁사 분석 임원 보고를 만들려는데, 먼저 정해야 할 항목 체크리스트와 슬라이드 구성 옵션을 2~3개로 정리해 주세요.

2. 기획하기에서는 선택한 방향을 조건으로 묶습니다.

의사결정용 8장 구성으로 가려고 합니다. 1장은 표지, 2장은 시장 포지셔닝, 3~5장은 A·B·C 비교, 6장은 위협과 기회, 7장은 Q3 투자 권고, 8장은 Q&A입니다. 이 요청을 어떻게 이해했는지 다시 설명해 주세요.

3. 만들기에서는 뼈대를 먼저 확인합니다.

위 조건으로 각 장의 핵심 메시지 1줄과 필요한 근거 자료를 먼저 정리하려고 합니다. 목차 초안을 만든 뒤 확인을 기다리세요.

4. 검토하기에서는 기준을 가지고 봅니다.

초안을 검토하려고 합니다. 모든 수치에 출처가 있는지, A·B·C 비교 축이 같은지, 7장의 권고가 임원 결정에 충분한지 확인해 주세요.

5. 개선하기에서는 한 부분만 고칩니다.

6번 슬라이드의 B사 신규 기능 출시 항목에 출처를 추가하려고 합니다. 푸터에 "B사 IR 2026 Q1 p.18"을 넣고, 다른 슬라이드는 그대로 유지하세요.

이 흐름을 거치면 반나절 걸리던 일이 10~30분 단위로 줄어듭니다. 시간이 줄어드는 이유는 단계를 대충 넘겨서가 아닙니다. 각 단계에서 사람이 손으로 하던 일을 클로드코드에게 명확히 맡기기 때문이에요.


📦 결과물

이번엔 이론 클립이라 별도 실습 파일은 만들지 않습니다. 대신 Part 3의 모든 실습에서 아래 흐름을 반복해서 씁니다.

Part03-체험하기/
├── 실습05-데이터분석/
├── 실습06-보고서작성/
├── 실습07-대시보드/
├── 실습08-자료리서치/
├── 실습09-카드뉴스/
├── 실습10-리모션영상/
├── 실습11-포트폴리오기획/
├── 실습12-포트폴리오수정/
└── 실습13-Vercel배포/

이번 클립에서 남길 것은 파일이 아니라 대화 습관입니다. 제가 계속 강조하는 이유가 있어요. 앞으로 프롬프트를 쓸 때 바로 결과부터 말하고 싶어지면, 먼저 "하려는데 어떻게?"로 묻고 있는지 확인하면 됩니다.


🆘 자주 막히는 포인트

증상원인해결
AI가 바로 엉뚱한 결과를 만듦질문하기 없이 실행부터 시킴"가능한 접근 방식부터 알려줘"로 대화를 되돌리면 돼요
결과가 내 의도와 다름기획 단계에서 AI 이해를 확인 안 함"방금 요청을 어떻게 이해했는지 다시 설명해줘"를 넣어보세요
완성본 수정이 오래 걸림뼈대 확인 없이 전체를 만들게 함목차나 구조부터 보고 본문으로 넘어가면 됩니다
그럴듯하지만 근거가 약함검토 단계에서 출처와 숫자를 안 봄주장마다 출처, 기준, 날짜를 확인하면 돼요
수정할수록 잘 된 부분도 바뀜개선 지시 범위가 넓음"이 부분만, 다른 것은 그대로"를 같이 말하세요
5단계가 번거롭게 느껴짐한 번에 끝내려는 습관이 남아 있음처음 2~3번만 의식적으로 반복하면 손이 기억합니다

🔗 다음 클립

→ Part 3 / Clip 2: 데이터 분석 — 이제 같은 5단계를 CSV 데이터에 적용합니다.

다음 클립부터는 실제 파일을 만듭니다. 첫 결과물은 쫀득팩토리 1분기 운영 데이터를 분석한 인사이트와 차트예요. BUILD가 진짜로 어떻게 굴러가는지 바로 보실 겁니다.

데이터 분석

CSV로 인사이트 + 차트

Part 3 · Clip 2

🎯 이 클립에서 만드는 것

CSV 8개를 받으면 보통 뭐부터 하세요? 엑셀 열고, 피벗 만들고, 차트 하나씩 그리다 보면 1~2시간은 금방 갑니다. 이번 클립에서는 그 일을 클로드코드와 같이 줄여봅니다.

쫀득팩토리라는 가상 디저트 제조사의 1분기 운영 데이터 8개 CSV를 분석합니다. 목표는 숫자 파일을 그냥 열어보는 게 아니라, 볼 만한 관점 5개를 뽑고 그중 일부를 차트 PNG 5~10장으로 만드는 거예요.

여러분이 자동 셋업 코드를 직접 만질 필요는 없습니다. 작업 폴더와 자료가 준비되어 있다는 전제에서, 아래 결과를 만드는 흐름만 따라가면 됩니다.

50-my-work/Part03-체험하기/실습05-데이터분석/
├── sample_csv/
│   ├── 쫀득팩토리 1분기 운영 데이터 CSV 8개
│   └── ...
├── charts/
│   ├── chart-01.png
│   ├── chart-02.png
│   └── ...
└── README.md

핵심 결과는 분석 관점 목록과 차트 이미지입니다. 제가 여기서 꼭 보라고 하는 건 "차트를 몇 장 만들었냐"가 아니에요. 어떤 질문으로 차트까지 갔는지입니다. 다음 Clip 3에서는 이 결과를 그대로 가져가 임원 보고서로 확장합니다.


💡 핵심 개념

데이터 분석은 "파일 읽기"가 아니라 "무엇을 볼지 고르는 일"입니다

CSV가 8개 있다고 바로 차트를 그리면, 그림은 나옵니다. 그런데 메시지가 약할 수 있어요. 냉장고에 재료가 많다고 무작정 볶기보다, 오늘 김치볶음밥을 할지 파스타를 할지 먼저 정하는 게 더 중요하잖아요?

그래서 이 클립에서는 가능한 분석 관점을 펼친 뒤, 그중 몇 개를 고르는 것부터 합니다. 예를 들어 위기 진단, 원가 추이, 라인별 매출, 운영 효율, 재고 균형처럼 나뉘면 차트 종류도 자연스럽게 정해져요.

단계이번 클립에서의 의미
질문하기CSV로 어떤 분석을 할 수 있는지 먼저 묻기
기획하기관점 5개와 차트 후보를 받아 고르기
만들기선택한 관점으로 PNG 차트 생성
검토하기숫자, 한글, 차트 가독성을 확인
개선하기특정 차트만 색상·축·제목을 수정

차트 생성에는 pandas, matplotlib 같은 도구가 쓰입니다. 솔직히 도구 이름을 외울 필요는 없어요. AI에게 데이터 위치, 보고 싶은 관점, 저장 위치, 수정 범위를 분명히 말하는 게 핵심입니다.


🚶 진행 흐름

1. 던지기: 가능한 방법 묻기

처음부터 차트 달라고 하지 마세요. 먼저 "이 데이터로 뭘 볼 수 있냐"를 물어봅니다. 이게 BUILD의 B, 질문하기입니다.

sample_csv 폴더에 CSV 8개가 있는데, 이걸로 데이터 분석과 차트 생성을 하려는데 어떻게 접근하면 좋을까요? 필요한 도구와 진행 순서를 먼저 알려주세요.

2. 기획하기: 관점과 차트 후보 받기

AI가 가능한 흐름을 설명하면, 이제 볼 만한 관점을 넓게 펼치게 합니다. 여기서 여러분이 고르는 일이 시작돼요.

이 데이터를 실제로 분석하려고 합니다. 확인할 만한 관점 5개와 각 관점에 어울리는 차트 후보를 같이 정리해 주세요. 관점은 운영자가 의사결정에 쓸 수 있는 수준이면 좋겠습니다.

여기서 나온 후보 중 1~2개를 고르면 됩니다. 예를 들어 원가 추이와 라인별 매출을 고르면, 차트도 선그래프·막대그래프처럼 자연스럽게 좁혀져요.

3. 만들기: 차트 PNG 생성

고른 관점으로 차트를 만듭니다. 저는 여기서 저장 위치와 형식을 꼭 같이 말합니다. 안 그러면 텍스트 답변만 받고 끝날 때가 있어요.

원가 추이와 라인별 매출 관점으로 차트를 만들려고 합니다. matplotlib 기반 PNG 5~10장을 charts 폴더에 저장하고, 한글은 AppleGothic 또는 NanumGothic으로 표시되게 진행하세요.

4. 검증하기: 결과 확인

차트가 생기면 파일 개수만 보지 말고, 실제로 열어봅니다. 한글이 네모로 깨지거나 축 라벨이 안 보이면 업무에서는 바로 못 씁니다.

charts 폴더의 PNG를 검증하려고 합니다. 숫자 계산이 CSV와 맞는지, 제목과 축 라벨이 읽히는지, 한글이 깨지지 않는지 체크해 주세요.

5. 개선하기: 한 장만 부분 수정

수정할 때는 전체를 다시 만들지 말고, 특정 차트만 집어 말합니다. "다른 건 그대로" 한 줄, 이거 정말 중요해요.

3번 차트의 색상이 흐려서 더 선명하게 조정하려고 합니다. 3번 차트만 다시 그리고, 나머지 차트와 파일명은 그대로 유지하세요.

이렇게 하면 차트 8장을 다시 만들다가 잘 된 부분까지 바뀌는 일을 줄일 수 있습니다.


📦 결과물

저장 위치는 50-my-work/Part03-체험하기/실습05-데이터분석/입니다. 여기만 찾으면 여러분 결과물이 한 번에 보여야 합니다.

실습05-데이터분석/
├── sample_csv/        # 강의용 CSV 8개
├── charts/            # 분석 결과 차트 PNG 5~10장
└── README.md          # 진행 요약과 한 줄 회고

README.md에는 사용한 데이터, 선택한 분석 관점, 생성한 차트 개수, 가장 인상적인 발견을 적습니다. 분석 답변을 별도 .md 파일로 저장했다면 같이 남겨도 좋아요.


🆘 자주 막히는 포인트

증상원인해결
sample_csv를 못 찾음작업 폴더가 다르거나 자료가 안 들어옴현재 위치와 sample_csv 폴더부터 확인하면 돼요
AI가 바로 결론을 말함질문하기 없이 분석으로 넘어감"결과 말고 가능한 흐름부터 알려줘"로 되돌리세요
관점이 1~2개뿐임질문이 너무 좁음"관점 5개와 차트 후보를 함께"라고 다시 요청하면 됩니다
한글이 네모로 보임차트 폰트 설정이 빠짐AppleGothic 또는 NanumGothic 적용을 요청하세요
차트가 너무 많음범위 제한이 없음"핵심 5장만 남기고 나머지는 제외"라고 정리하면 돼요
부분 수정인데 전체가 바뀜수정 범위가 빠짐"N번만, 다른 것은 그대로"를 반드시 넣으세요
결과물 없이 텍스트만 나옴저장 위치를 말하지 않음charts/ 폴더에 PNG로 저장하라고 딱 말하면 됩니다

🔗 다음 클립

→ Part 3 / Clip 3: 보고서 작성 — 방금 만든 분석 관점과 차트를 30페이지 내외의 임원 보고서로 확장합니다.

데이터 분석의 끝은 차트가 아니라 읽히는 설명입니다. 다음 클립에서 차트와 숫자를 보고서 문장으로 연결해볼게요.

보고서 작성

분석 결과를 임원 보고서로

Part 3 · Clip 3

🎯 이 클립에서 만드는 것

차트만 던져주면 임원이 바로 결정할 수 있을까요? 어렵습니다. 이번 클립에서는 Clip 2에서 만든 분석 관점과 차트 PNG를 가져와 30페이지 내외의 임원 보고서로 바꿉니다.

차트는 그림으로 끝나면 아깝습니다. 숫자 근거가 붙은 문장과 연결되어야 해요. 보고서의 목표는 "분석을 많이 했다"를 보여주는 게 아니라, 읽는 사람이 5분 안에 핵심을 잡게 하는 것입니다. 저는 그래서 목차, 차트 배치, 주장과 근거의 순서를 먼저 잡습니다.

50-my-work/Part03-체험하기/실습06-보고서작성/
├── sample_csv/
├── charts/
├── 쫀득팩토리_2026Q1_경영분석보고서.md
└── README.md

Clip 2를 건너뛰었다면 차트가 없을 수 있습니다. 괜찮아요. 그 경우에는 CSV만으로 보고서를 만들거나, 보고서 작성 중 필요한 차트를 새로 만들어도 됩니다.


💡 핵심 개념

보고서는 차트 모음이 아니라 판단의 순서입니다

차트를 8장 만들었다고 보고서가 되는 건 아닙니다. 보고서는 독자가 어떤 순서로 숫자를 이해해야 하는지 안내하는 길이에요. 지도에 점이 많아도 길이 없으면 목적지에 못 가잖아요?

임원 보고서는 특히 요약 → 근거 → 해석 → 권고의 흐름이 중요합니다. 숫자를 먼저 보여주고, 그 숫자가 왜 중요한지 설명하고, 마지막에 어떤 결정을 돕는지 연결해야 해요.

보고서 요소확인할 질문
요약바쁜 사람이 첫 화면만 봐도 결론을 알 수 있나
근거숫자와 차트가 주장 바로 옆에 붙어 있나
해석숫자가 의미하는 변화가 설명되어 있나
권고다음 행동이나 의사결정이 보이나

이 클립에서는 charts/ 폴더의 PNG를 Markdown 문서 안에 인라인으로 넣습니다. 파일명과 경로가 맞아야 이미지가 안 깨집니다. 여러분이 먼저 챙길 건 예쁜 문장이 아니라 근거가 빠지지 않는 구조예요.


🚶 진행 흐름

1. 던지기: 보고서로 바꾸는 방법 묻기

분석 결과와 차트가 있다는 상황을 설명하고, 보고서 작성 흐름을 먼저 물어봅니다. 바로 "보고서 써줘"로 가지 않는 게 핵심이에요.

방금 만든 분석 결과와 charts 폴더의 PNG 8장을 임원 보고서로 바꾸려는데, 어떤 순서로 진행하면 좋을까요? 목차, 차트 인용, 숫자 근거 정리 방식을 먼저 알려주세요.

2. 기획하기: 목차와 차트 배치 정하기

보고서의 목차 후보를 받고, 각 장에 어떤 차트가 들어가면 좋을지 연결합니다. 이 단계에서 보고서 품질이 거의 결정돼요.

쫀득팩토리 2026년 1분기 경영분석 보고서를 만들려고 합니다. 30페이지 내외 분량으로 목차 옵션을 제안하고, 각 장에 들어갈 차트와 표를 매핑해 주세요.

AI가 제안한 목차 중 하나를 고르면 됩니다. 보통은 요약, 핵심 지표, 운영 이슈, 재무 관점, 권고안처럼 읽는 순서가 보이는 구조가 좋아요.

3. 만들기: Markdown 보고서 생성

고른 목차를 기준으로 실제 보고서 파일을 만듭니다. 제가 여기서 꼭 넣는 건 파일명과 이미지 인용 방식입니다. 안 넣으면 파일명이 제멋대로 나오거나 이미지가 빠질 수 있어요.

선택한 목차대로 보고서를 작성하려고 합니다. 결과 파일은 쫀득팩토리_2026Q1_경영분석보고서.md로 두고, charts 폴더의 PNG를 Markdown 이미지 문법으로 인라인 인용하세요. 각 주장에는 숫자 근거를 함께 적어 주세요.

4. 검증하기: 근거와 흐름 확인

보고서가 만들어지면 문장만 읽지 말고, 차트와 주장이 맞물리는지 봅니다. 말이 매끄러워도 숫자가 빠지면 보고서가 약해집니다.

작성된 보고서를 검증하려고 합니다. 주장마다 숫자 근거가 있는지, 차트 경로가 깨지지 않는지, 장별 결론이 서로 충돌하지 않는지 점검해 주세요.

5. 개선하기: 특정 장만 보강

부족한 장 하나를 골라 부분 수정합니다. 전체 다시 쓰기는 위험해요. 좋았던 문장까지 같이 바뀔 수 있습니다.

3장 운영 효율 부분만 보강하려고 합니다. 관련 차트 1개를 더 인용하고 결론 문장 1줄을 추가하세요. 다른 장의 구성과 문장은 그대로 유지하세요.

수정 범위를 장 단위로 말하면, 보고서 전체가 다시 쓰이면서 어조가 바뀌는 일을 줄일 수 있어요.


📦 결과물

저장 위치는 50-my-work/Part03-체험하기/실습06-보고서작성/입니다. 여기에 보고서와 차트가 같이 있어야 프리뷰에서 덜 깨집니다.

실습06-보고서작성/
├── sample_csv/                                # 필요 시 원본 데이터 확인
├── charts/                                    # Clip 2에서 만든 차트
├── 쫀득팩토리_2026Q1_경영분석보고서.md       # 최종 보고서
└── README.md                                  # 진행 방식과 회고

README.md에는 사용한 자료, 보고서 파일명, 차트 개수, 가장 중요한 결론을 한 줄로 남깁니다. 보고서 파일은 다음 클립에서 직접 쓰이지는 않지만, 같은 데이터를 대시보드로 바꿀 때 비교 기준이 돼요.


🆘 자주 막히는 포인트

증상원인해결
차트 이미지가 보이지 않음Markdown 이미지 경로가 틀림charts/파일명.png 형식으로 다시 맞추면 돼요
보고서가 너무 짧음목차와 장별 비중이 없음30페이지 기준으로 장별 분량을 다시 나누세요
주장만 있고 숫자가 없음근거 조건을 말하지 않음"각 주장에 숫자 근거 포함"을 다시 요청하면 됩니다
같은 내용이 반복됨목차 역할이 겹침요약, 분석, 권고 역할을 나눠보세요
부분 수정 후 전체 톤이 바뀜수정 범위가 넓음"3장만, 다른 장은 그대로"처럼 범위를 잘라 말하세요
Clip 2 차트가 없음이전 실습을 건너뜀CSV로 새 차트를 만들거나 텍스트 보고서로 진행해도 됩니다
파일명이 다르게 저장됨결과 파일명을 말하지 않음원하는 .md 파일명을 프롬프트에 넣으세요

🔗 다음 클립

→ Part 3 / Clip 4: 대시보드 만들기 — 같은 CSV 데이터를 인터랙티브 HTML 대시보드로 바꿉니다.

보고서는 읽는 결과물이고, 대시보드는 만져보는 결과물입니다. 같은 숫자가 형식에 따라 어떻게 달라지는지 비교해 보시면 됩니다.

대시보드 만들기

인터랙티브 HTML 대시보드

Part 3 · Clip 4

🎯 이 클립에서 만드는 것

보고서를 만들고 나면 이런 질문이 나옵니다. "이거 매주 업데이트되는 화면으로 볼 수 없나요?" 그게 대시보드예요. 이번 클립에서는 Ch 02에서 계속 사용한 sample_csv 데이터를 탭이 있는 HTML 대시보드로 만듭니다.

결과물은 index.html 한 파일입니다. 브라우저에서 열면 탭을 눌러 전환하고 차트를 확인할 수 있어요. 보고서가 읽는 문서라면, 대시보드는 눌러보며 이해하는 화면이에요. 영상에서 이 차이를 직접 보게 됩니다.

50-my-work/Part03-체험하기/실습07-대시보드/
├── sample_csv/
├── index.html
└── README.md

이 클립은 Ch 02의 마지막입니다. 같은 CSV에서 분석, 보고서, 대시보드라는 세 가지 결과물이 나옵니다. 여러분이 직접 코드를 한 줄씩 치는 게 아니라, 대화로 결과물을 바꾸는 흐름을 보는 거예요.


💡 핵심 개념

대시보드는 "한 화면에 다 넣기"가 아닙니다

대시보드를 처음 만들 때 흔한 실수는 모든 차트를 한 화면에 밀어 넣는 겁니다. 그러면 보는 사람은 어디부터 봐야 할지 몰라요. 옷장도 상의, 하의, 외투를 칸으로 나누잖아요? 데이터도 주제별 칸이 필요합니다.

이번 클립에서는 탭을 3개 정도로 나누고, 각 탭마다 핵심 차트를 먼저 넣습니다. 처음부터 완벽한 화면을 만들지 않습니다. 1차 뼈대 → 2차 확장으로 가요.

구성 요소역할
index.html대시보드 전체 화면
Chart.js차트를 그리는 라이브러리
PapaParseCSV를 브라우저에서 읽는 도구
탭 구조운영·재무·라인별처럼 보는 순서를 정리

중요한 건 기술 이름이 아니라 확인 순서예요. 첫 번째 버전에서는 탭 전환과 핵심 차트 1개씩만 확인하세요. 그다음 필요한 탭에 차트를 1~2개씩 추가하면 수정 비용이 작습니다.


🚶 진행 흐름

1. 던지기: 대시보드 제작 방식 묻기

CSV를 브라우저 대시보드로 바꾸는 가능한 방법을 먼저 묻습니다. 바로 index.html 만들어 달라고 하면 구조가 흔들릴 수 있어요.

sample_csv 폴더의 CSV 8개로 인터랙티브 대시보드를 만들려는데, 어떤 방식으로 접근하면 좋을까요? 한 파일 HTML로 가능한지, 필요한 라이브러리와 흐름을 알려주세요.

2. 기획하기: 탭과 차트 설계

어떤 탭이 필요하고, 각 탭에 어떤 차트가 들어갈지 정합니다. 이때 "임원이 한눈에"처럼 보는 사람을 같이 말해주면 훨씬 좋아집니다.

임원이 한눈에 볼 수 있는 대시보드를 만들려고 합니다. 탭 구성 옵션 3개를 제안하고, 각 탭에 들어갈 차트 후보와 보여줄 메시지를 함께 정리해 주세요.

탭은 많을수록 좋은 게 아닙니다. 처음에는 운영, 재무, 라인별 성과 정도로 나누고, 각 탭에 핵심 차트부터 넣어보세요.

3. 만들기: 1차 HTML 생성

첫 버전은 작게 만듭니다. 한 파일 안에서 CSV를 읽고 차트를 그리는 구조로 가요. "뼈대 먼저"가 중요한 이유가 여기 있어요.

선택한 탭 구조로 index.html 1차 버전을 만들려고 합니다. 한 파일 안에 Chart.js와 PapaParse CDN을 사용하고, 탭 3개와 핵심 차트 1개씩부터 구현하세요.

이후 필요한 탭만 확장합니다. 잘 되는 뼈대를 확인한 뒤 살을 붙이는 거죠.

운영 탭에 차트 2개를 더 추가하려고 합니다. 색상 톤도 조금 정돈하되, 재무 탭과 라인별 탭은 그대로 유지하세요.

4. 검증하기: 브라우저에서 확인

HTML 파일은 브라우저에서 직접 열어봐야 합니다. 터미널에서 "완료"라고 떠도, 화면이 빈 페이지면 아직 끝난 게 아니에요.

index.html을 검증하려고 합니다. 탭 전환이 되는지, CSV 데이터가 정상 로드되는지, 차트 수치가 원본과 맞는지, 모바일 폭에서 깨지는지 점검해 주세요.

5. 개선하기: 특정 탭만 수정

대시보드는 작은 수정이 잦습니다. 위치를 정확히 말하세요. "재무 탭만"처럼 범위를 잘라야 다른 탭이 덜 흔들립니다.

재무 탭의 색상 대비만 개선하려고 합니다. 배경과 차트 색상을 더 구분되게 조정하고, 다른 탭의 레이아웃과 데이터 처리는 그대로 유지하세요.

📦 결과물

저장 위치는 50-my-work/Part03-체험하기/실습07-대시보드/입니다. 여기서 index.html만 열리면 일단 절반은 성공입니다.

실습07-대시보드/
├── sample_csv/       # 대시보드가 읽는 CSV
├── index.html        # Chart.js + PapaParse 기반 대시보드
└── README.md         # 탭 구성과 확인 결과

완성 후에는 index.html을 브라우저로 열어 확인합니다. README.md에는 탭 이름, 사용한 차트, 가장 유용했던 대시보드 관점을 적으면 됩니다.


🆘 자주 막히는 포인트

증상원인해결
브라우저가 빈 화면만 보임JavaScript 오류가 있음개발자 도구 콘솔 메시지를 그대로 AI에게 보내면 돼요
CSV를 못 읽음파일 경로 또는 브라우저 보안 이슈sample_csv/파일명.csv 경로와 로딩 방식을 확인하세요
차트가 안 그려짐캔버스 ID와 데이터 연결이 다름Chart.js v4 기준으로 ID와 데이터 형식을 점검하면 됩니다
탭 전환이 안 됨탭 버튼과 패널 연결이 빠짐클릭 이벤트와 활성 클래스 연결을 확인하세요
모바일에서 가로로 깨짐고정 폭이 너무 큼max-width와 모바일 좌우 여백을 적용하면 돼요
부분 수정 후 다른 탭이 변함범위를 말하지 않음"이 탭만, 다른 탭은 그대로"를 넣으세요
차트 수치가 이상함CSV 컬럼 해석 오류파싱 결과를 화면이나 콘솔에 출력해 확인해보세요

🔗 다음 클립

→ Part 3 / Clip 5: 자료 리서치 — Ch 03으로 넘어가 주제 한 줄에서 콘텐츠 재료를 수집합니다.

Ch 02에서는 데이터가 이미 있었습니다. 다음부터는 재료가 없는 상태에서 시작합니다. 주제 한 줄로 검색해서 자료를 모으는 흐름이에요.

자료 리서치

주제 하나로 자료 수집

Part 3 · Clip 5

🎯 이 클립에서 만드는 것

Ch 02에서는 CSV 파일을 던져주고 시작했죠? 이번엔 손에 든 게 주제 한 줄뿐입니다. 거기서 출처 붙은 리서치 문서까지 끌어내야 해요. 어떻게 시작할까요?

그 한 줄을 검색 가능한 질문으로 바꾸는 것부터 시작합니다. 결과물은 02-주제리서치.md입니다. 예시는 2026년 AI 주요 이슈 5개를 조사하는 흐름이지만, 여러분 관심 주제로 바꿔도 됩니다.

50-my-work/Part03-체험하기/실습08-자료리서치/
├── 02-주제리서치.md
└── README.md

이 문서는 다음 Clip 6에서 카드뉴스의 원고 재료가 됩니다. 그래서 짧은 감상문이면 안 됩니다. 항목별 핵심 요약과 출처 URL이 꼭 필요해요.


💡 핵심 개념

리서치는 검색어를 잘 던지는 일입니다

좋은 리서치는 많은 페이지를 긁어오는 일이 아닙니다. 어떤 질문으로 검색할지, 어떤 기준으로 정리할지, 출처를 어떻게 남길지 정하는 일이에요. 도서관에서 책장을 무작정 훑는 것보다 사서에게 "이 주제 최신 자료 찾으려면 어떤 키워드가 좋을까요?"라고 묻는 것에 가깝습니다.

클로드코드에는 검색 흐름을 도와주는 방식이 있습니다. 넓게 찾을 때는 WebSearch, 특정 페이지를 읽을 때는 WebFetch. 저는 이 둘을 "검색이냐, 가져오기냐"로 구분해서 봅니다.

방식쓸 때
WebSearch키워드로 여러 후보를 찾을 때
WebFetch특정 URL의 내용을 자세히 읽을 때
출처 검증링크가 실제로 열리고 주장과 연결되는지 볼 때

이번 클립의 목표는 5개 항목, 각 항목 핵심 2~3줄, 출처 URL 1~2개입니다. 다음 콘텐츠 제작 단계에서 바로 쓸 수 있게 정리해두는 게 중요합니다.


🚶 진행 흐름

1. 던지기: 검색 방법 묻기

바로 검색을 시키기보다, 어떤 방식으로 검색할 수 있는지 먼저 물어봅니다. 결과부터 달라고 하면 출처가 약해질 때가 많아요.

클로드코드로 인터넷 자료 리서치를 하려는데, 어떤 방식으로 접근하면 좋을까요? 키워드 검색과 특정 URL 읽기의 차이, 출처를 남기는 방법을 알려주세요.

2. 기획하기: 주제와 정리 형식 정하기

주제와 결과 형식을 함께 말합니다. "무엇을 찾을지"와 "어떻게 남길지"가 같이 들어가야 합니다.

2026년 AI 주요 이슈 5개를 조사하려고 합니다. 검색 키워드 후보와 정리 형식 옵션을 제안해 주세요. 각 항목은 핵심 요약, 왜 중요한지, 출처 URL로 정리하고 싶습니다.

AI가 키워드를 제안하면, 너무 넓거나 오래된 키워드는 줄이고 현재성 있는 키워드를 고르면 됩니다. 주제가 한국 시장과 관련 있다면 "국내 기준"도 같이 넣으세요.

3. 만들기: 리서치 문서 작성

검색을 실행하고 파일로 저장합니다. 제가 꼭 넣는 문장은 "추측 말고 실제 검색 결과 기반으로"입니다. 이 한 줄이 결과 신뢰도를 꽤 바꿔요.

선택한 방식으로 2026년 AI 주요 이슈 5개를 조사하려고 합니다. 각 항목은 핵심 2~3줄, 이슈의 영향 1줄, 출처 URL 1~2개로 정리하고 결과는 02-주제리서치.md에 저장하세요.

4. 검증하기: 출처와 항목 확인

리서치 문서는 링크가 생명입니다. 링크가 없거나 안 열리면 다음 단계에서 신뢰도가 떨어집니다. 여러분도 실제로 몇 개는 눌러보셔야 합니다.

02-주제리서치.md를 검증하려고 합니다. 5개 항목이 모두 주제와 맞는지, 출처 URL이 실제로 열리는지, 추측처럼 보이는 문장이 없는지 점검해 주세요.

5. 개선하기: 항목 하나만 보강

문제가 있는 항목만 다시 다룹니다. 전체를 다시 검색하면 잘 찾은 자료까지 바뀔 수 있어요.

3번 항목의 근거가 약해서 보강하려고 합니다. 공식 발표나 신뢰도 높은 출처를 1개 더 찾아 추가하고, 다른 항목의 내용은 그대로 유지하세요.

리서치에서는 항목 번호와 바꿀 기준을 꼭 같이 말하세요. "3번만, 다른 건 그대로"가 안전한 공식입니다.


📦 결과물

저장 위치는 50-my-work/Part03-체험하기/실습08-자료리서치/입니다. 파일 하나지만, 다음 클립의 출발점이 됩니다.

실습08-자료리서치/
├── 02-주제리서치.md    # 5개 항목 + 출처 URL
└── README.md           # 선택한 주제와 한 줄 회고

02-주제리서치.md에는 항목마다 제목, 핵심 요약, 영향, 출처 URL이 들어갑니다. 다음 클립에서 이 문서를 읽어 10장 카드뉴스 기획서로 바꿔요.


🆘 자주 막히는 포인트

증상원인해결
검색이 실행되지 않음검색 도구 허락을 놓침허락 요청이 뜨면 승인하고 다시 시도하면 돼요
바로 결과만 나옴검색 방법을 먼저 묻지 않음"가능한 검색 흐름부터 알려줘"로 되돌리세요
출처 URL이 없음결과 형식에 출처를 안 넣음"각 항목마다 출처 URL 1~2개"를 추가하면 됩니다
외국 자료만 나옴지역 기준이 없음"한국어 자료 위주" 또는 "국내 기준"을 넣으세요
항목이 너무 오래됨시점 조건이 약함연도와 최신성 조건을 분명히 적으세요
출처가 열리지 않음검색 결과 링크가 불안정함실제로 열리는 링크로 교체해달라고 하면 돼요
부분 수정 후 전체가 바뀜항목 번호를 지정하지 않음"3번 항목만, 다른 항목은 그대로"라고 말하세요

🔗 다음 클립

→ Part 3 / Clip 6: 카드뉴스 만들기 — 리서치 문서를 10장짜리 HTML 카드뉴스로 바꿉니다.

리서치는 콘텐츠의 재료 창고입니다. 다음 클립에서는 이 재료를 한 장씩 넘겨보는 카드 구조로 재배치해볼게요.

카드뉴스 만들기

리서치 결과를 카드뉴스로

Part 3 · Clip 6

🎯 이 클립에서 만드는 것

리서치 문서가 생겼다고 바로 카드뉴스가 되지는 않습니다. 이번 클립에서는 Clip 5에서 만든 02-주제리서치.md를 바탕으로 10장짜리 HTML 카드뉴스를 만듭니다.

바로 HTML로 가지 않습니다. 먼저 기획서를 만들고, 그 기획서를 기준으로 실제 HTML을 생성해요. 결과물은 두 개입니다. 01-카드뉴스-기획서.md는 카드별 내용 설계서이고, 02-카드뉴스.html은 브라우저에서 볼 수 있는 정사각 카드뉴스입니다.

50-my-work/Part03-체험하기/실습09-카드뉴스/
├── 02-주제리서치.md
├── 01-카드뉴스-기획서.md
├── 02-카드뉴스.html
└── README.md

카드뉴스는 다음 Clip 7에서 영상으로 바뀝니다. 그래서 카드 수, 카드 크기, 흐름이 일정해야 해요. 여러분이 여기서 대충 만들면 다음 영상 단계에서 바로 티가 납니다.


💡 핵심 개념

카드뉴스는 디자인보다 "장면 나누기"가 먼저입니다

리서치 문서를 바로 HTML로 만들면 카드가 7장으로 줄거나 15장으로 늘어나는 일이 생깁니다. 그래서 먼저 기획서가 필요해요. 영화 촬영 전에 콘티를 그리는 것과 같습니다.

10장 카드뉴스는 보통 도입, 문제 제기, 핵심 항목, 정리, 마무리로 흐릅니다. 각 카드는 하나의 메시지만 담는 게 좋아요. 한 카드에 문장을 많이 넣으면 모바일에서 읽기 어렵습니다.

카드 구간역할
1장제목과 관심 끌기
2장왜 이 주제가 중요한지
3~7장리서치 핵심 항목 5개
8~9장패턴, 영향, 정리
10장마무리와 다음 행동

HTML은 1080×1080 정사각을 기준으로 만들고, 모바일에서는 화면 폭에 맞게 줄어들게 합니다. 저는 한글 가독성 때문에 Pretendard를 기준으로 잡는 편입니다. 안정적이에요.


🚶 진행 흐름

1. 던지기: 카드뉴스 형태 묻기

카드뉴스가 어떤 구조로 만들어지는지 먼저 확인합니다. "카드뉴스 만들어줘"로 바로 가면 장수부터 흔들릴 수 있어요.

리서치 결과를 카드뉴스로 만들려는데, 보통 어떤 형태와 구조로 진행하면 좋을까요? 인스타 정사각 카드 기준으로 카드 수, 흐름, 제작 순서를 알려주세요.

2. 기획하기: 10장 기획서 설계

리서치 문서를 읽고 카드별 역할을 나누게 합니다. 이 단계에서 10장의 흐름이 정해집니다.

02-주제리서치.md의 5개 이슈로 인스타 10장 카드뉴스를 만들려고 합니다. 카드별 제목, 본문 핵심, 시각 요소, 색상 방향을 포함한 구성 옵션을 제안해 주세요.

여기서 바로 HTML로 가지 마세요. 먼저 10장 구성이 적절한지 확인합니다. 제가 제일 많이 멈춰 세우는 지점이 여기예요.

3. 만들기: 기획서 작성 후 HTML 생성

두 단계로 나눕니다. 먼저 기획서입니다. 기획서가 있으면 HTML 결과도 훨씬 예측 가능해집니다.

선택한 구조로 01-카드뉴스-기획서.md를 먼저 만들려고 합니다. 카드 1~10번의 제목, 핵심 문장, 이미지 방향, 색상 톤을 표로 정리하세요.

그다음 HTML입니다. 이제야 실제 화면을 만듭니다.

01-카드뉴스-기획서.md를 기준으로 02-카드뉴스.html을 만들려고 합니다. 한 파일 안에 10장, 1080×1080 정사각 카드, 세로 스크롤, Pretendard 폰트, 이미지 자리까지 포함해 구현하세요.

4. 검증하기: 카드 수와 가독성 확인

브라우저에서 열어 10장이 모두 보이는지 확인합니다. 파일이 만들어졌다고 끝난 게 아니에요. 빈 카드가 하나라도 있으면 다시 봐야 합니다.

02-카드뉴스.html을 검증하려고 합니다. 카드가 정확히 10장인지, 빈 카드가 없는지, 모바일 폭에서 글자가 잘리는지, 한글 폰트가 적용됐는지 점검해 주세요.

5. 개선하기: 카드 하나만 수정

카드뉴스 수정은 카드 번호를 꼭 말해야 합니다. "3번 카드만"이라고 잘라 말해야 나머지 9장이 덜 흔들립니다.

3번 카드의 배경색만 더 부드럽게 바꾸려고 합니다. 배경색을 #FFE5EC 계열로 조정하고, 다른 카드의 내용과 레이아웃은 그대로 유지하세요.

📦 결과물

저장 위치는 50-my-work/Part03-체험하기/실습09-카드뉴스/입니다. 리서치, 기획서, HTML이 한 폴더에 같이 있어야 흐름이 보입니다.

실습09-카드뉴스/
├── 02-주제리서치.md
├── 01-카드뉴스-기획서.md
├── 02-카드뉴스.html
└── README.md

README.md에는 카드뉴스 주제, 카드 수, 확인한 문제, 가장 마음에 드는 카드 한 장을 적습니다. 다음 클립에서는 02-카드뉴스.html을 자동 스크롤 영상으로 변환해요.


🆘 자주 막히는 포인트

증상원인해결
리서치 문서가 없음Clip 5 결과물이 안 들어옴02-주제리서치.md 존재부터 확인하면 돼요
카드 수가 10장이 아님기획서 없이 HTML로 바로 감01-카드뉴스-기획서.md를 먼저 만드세요
카드가 너무 작거나 큼고정 크기와 반응형 처리가 없음1080×1080 기준, 모바일 100% 폭을 명시하면 됩니다
한글 폰트가 어색함기본 폰트가 적용됨Pretendard CDN 또는 대체 폰트를 요청하세요
이미지가 깨짐외부 이미지 URL이 불안정함이미지 자리나 안정적인 URL 방식으로 바꾸면 돼요
특정 카드만 바꾸려다 전체 변경카드 번호를 말하지 않음"카드 N번만, 다른 카드는 그대로"를 넣으세요
모바일에서 글자가 잘림문장이 길고 여백이 부족함카드당 메시지를 줄이고 줄바꿈을 조정하세요

🔗 다음 클립

→ Part 3 / Clip 7: 리모션 영상 — 카드뉴스 HTML을 30초 내외의 MP4 영상으로 바꿉니다.

지금 만든 카드는 영상의 장면이 됩니다. 카드별 메시지가 선명할수록 다음 단계의 영상 품질도 좋아져요.

리모션 영상

카드뉴스를 영상으로 변환

Part 3 · Clip 7

🎯 이 클립에서 만드는 것

카드뉴스 10장을 영상으로 만들려면 보통 어떻게 하세요? 캡처하고, 편집기에 올리고, 타임라인 맞추고. 생각보다 손이 많이 갑니다. 이번 클립에서는 Clip 6에서 만든 02-카드뉴스.html을 영상으로 바꿉니다.

브라우저에서 카드뉴스를 열고, 카드 한 장씩 일정 시간 머무르며 스크롤하는 과정을 녹화해 output.mp4를 만들어요. 텍스트로 새 영상을 생성하는 실습이 아니라, 이미 만든 HTML 콘텐츠를 자동화 도구로 촬영하는 흐름입니다.

50-my-work/Part03-체험하기/실습10-리모션영상/
├── 02-카드뉴스.html
├── output.mp4
└── README.md

그래서 카드뉴스의 카드 수와 레이아웃이 안정적일수록 영상도 안정적으로 나옵니다. 이 클립을 마치면 Ch 03은 주제 한 줄에서 시작해 리서치, 카드뉴스, 영상까지 이어져요. 여러분이 방금 만든 파일이 그대로 다음 결과물이 되는 겁니다.


💡 핵심 개념

영상 만들기는 두 갈래로 생각합니다

AI 영상이라고 하면 텍스트를 넣어 새 장면을 생성하는 도구를 떠올리기 쉽습니다. 그런데 업무 실습에서는 이미 만든 자료를 영상으로 바꾸는 경우도 많아요. 예를 들어 카드뉴스를 쇼츠처럼 보여주거나, 웹페이지 스크롤을 녹화해 소개 영상으로 만드는 방식입니다.

이번 클립은 두 번째입니다. 저는 이걸 "기존 자료 영상화"라고 부릅니다. Playwright로 브라우저를 자동 제어하고, 카드마다 3초 정도 머무르며 스크롤한 뒤, MP4로 저장합니다.

방식이번 클립에서의 의미
텍스트→영상 생성Runway, Kling, Replicate 같은 외부 도구 활용
기존 자료 영상화HTML, 이미지, 슬라이드를 자동 스크롤·녹화
검증 포인트길이, 화면 끊김, 카드 순서, 검은 화면 여부

영상 도구 이름보다 입력 자료가 무엇인지를 먼저 봐야 합니다. 이번 입력은 카드뉴스 HTML이고, 출력은 output.mp4예요.


🚶 진행 흐름

1. 던지기: 영상 제작 방법 묻기

먼저 어떤 방식으로 영상화할 수 있는지 물어봅니다. 그냥 "영상 만들어줘"라고 하면 범위가 너무 넓어져요.

클로드코드로 영상을 만들려는데, 어떤 방법들이 있을까요? 텍스트로 새 영상을 만드는 방식과 기존 HTML을 영상화하는 방식의 차이를 알려주세요.

2. 기획하기: 자동화 방식으로 좁히기

이번 실습은 기존 카드뉴스를 MP4로 바꾸는 쪽입니다. 새 영상을 상상해서 만드는 게 아니라, 있는 화면을 촬영하는 흐름으로 좁힙니다.

이번에는 02-카드뉴스.html을 30초 내외 SNS 영상으로 만들려고 합니다. 자동화 스크립트 방식으로 진행한다면 어떤 도구가 좋고, 설치부터 실행까지 어떤 흐름이 필요한지 단계별로 정리해 주세요.

AI가 Playwright, Remotion, FFmpeg, MoviePy 같은 선택지를 말할 수 있습니다. 가장 빠른 길은 브라우저 자동화와 녹화 흐름입니다. 제가 여기서는 Playwright 쪽으로 좁혀갑니다.

3. 만들기: 스크립트 작성과 실행

실제 파일 생성을 요청합니다. 대기 시간과 출력 파일명을 분명히 말하세요. "카드 1장마다 3초"처럼 숫자로 박아두면 결과가 덜 흔들립니다.

Playwright로 브라우저를 자동 제어해서 02-카드뉴스.html을 영상으로 만들려고 합니다. 카드 1장마다 3초씩 머무르며 스크롤하고, 결과 파일은 output.mp4로 저장하도록 스크립트를 작성하고 실행하세요.

설치 허락 요청이 뜨면 확인하고 진행합니다. Node.js 버전이 낮으면 먼저 버전을 맞춰야 할 수 있어요.

4. 검증하기: 영상 열어 보기

MP4 파일은 만들어졌다는 사실보다 실제 재생이 중요합니다. 검은 화면이면 파일이 있어도 실패입니다.

output.mp4를 검증하려고 합니다. 길이가 20~40초 범위인지, 카드가 순서대로 보이는지, 검은 화면이나 끊김이 없는지, 마지막 카드까지 녹화됐는지 확인해 주세요.

5. 개선하기: 시간만 조정

영상이 너무 빠르면 카드별 머무는 시간만 바꿉니다. 전체 스크립트를 다시 쓰게 하지 마세요.

각 카드가 너무 빨리 지나가서 3초를 5초로 늘리려고 합니다. 대기 시간만 수정하고, 카드 순서와 화면 크기, 출력 파일명은 그대로 유지하세요.

영상 작업은 전체 재생성을 하더라도 조건을 고정하는 게 중요합니다. 바꿀 값 하나만 정확히 말하면 됩니다.


📦 결과물

저장 위치는 50-my-work/Part03-체험하기/실습10-리모션영상/입니다. 여기서 output.mp4를 실제로 열어보는 것까지가 한 사이클이에요.

실습10-리모션영상/
├── 02-카드뉴스.html
├── output.mp4        # 20~40초 내외 영상
└── README.md

README.md에는 사용한 입력 파일, 영상 길이, 카드당 머무는 시간, 확인한 문제를 적습니다. 영상 길이가 너무 길거나 짧으면 다음 수정에서 카드당 초 단위만 조정하세요.


🆘 자주 막히는 포인트

증상원인해결
02-카드뉴스.html이 없음Clip 6 결과물이 안 들어옴카드뉴스 HTML 파일 존재부터 확인하면 돼요
Node.js 버전이 낮음자동화 도구 실행 조건이 안 맞음Node.js 20 이상 사용을 권장합니다
Playwright 설치가 멈춤브라우저 다운로드 또는 권한 문제허락 요청을 승인하고, 필요하면 설치된 Chrome 사용으로 바꾸세요
MP4가 검은 화면페이지 로드 전 녹화 시작로드 완료 대기와 카드별 대기 시간을 늘리면 됩니다
영상이 너무 빠름카드당 대기 시간이 짧음3초를 5초처럼 구체적으로 늘리세요
파일은 있는데 재생이 안 됨인코딩 또는 녹화 실패FFmpeg 로그와 파일 크기를 확인해달라고 요청하세요
수정 후 스크립트가 크게 바뀜변경 범위가 넓음"대기 시간만, 다른 값은 그대로"를 넣으세요

🔗 다음 클립

→ Part 3 / Clip 8: 포트폴리오 기획 — Ch 04로 넘어가 가상 인물 자료를 웹사이트 기획과 프로토타입으로 바꿉니다.

Ch 03에서는 콘텐츠 하나가 여러 형식으로 바뀌었습니다. 다음부터는 웹사이트를 기획하고, 수정하고, 배포까지 이어갑니다.

포트폴리오 기획

인터뷰 → PRD → 프로토타이핑

Part 3 · Clip 8

🎯 이 클립에서 만드는 것

Ch 04부터는 웹사이트입니다. 이번 클립에서는 가상 인물 김지수 UX/UI Designer의 리서치 자료와 이미지 15장을 바탕으로 포트폴리오 웹사이트를 기획하고 1차 프로토타입을 만듭니다.

처음부터 예쁜 웹사이트를 완성하려고 하지 않습니다. 먼저 자료를 읽고, 사이트 구성 기획서를 만든 뒤, 그 기획서를 기준으로 portfolio.html을 생성해요. 저는 이 순서를 꼭 지킵니다.

50-my-work/Part03-체험하기/실습11-포트폴리오기획/
├── 00-포트폴리오-리서치.md
├── images/
├── 01-포트폴리오-구성기획.md
├── portfolio.html
└── README.md

이번 결과물은 완성품이 아니라 1차본입니다. 색상, 여백, 타이포, 애니메이션 같은 세부 다듬기는 다음 Clip 9에서 진행합니다. 오늘은 "실물이 눈앞에 생기는 것"이 목표예요.


💡 핵심 개념

웹사이트는 코드보다 기획서가 먼저입니다

포트폴리오 사이트를 만들 때 바로 HTML부터 시작하면, 이름은 들어갔는데 어떤 사람인지 보이지 않는 페이지가 되기 쉽습니다. 자기소개서를 쓰기 전에 이력과 강점을 정리하잖아요? 웹사이트도 구조를 먼저 잡아야 합니다.

이번 클립의 자료에는 가상 인물 프로필, 레퍼런스 15개 분석, 디자인 트렌드, 이미지가 들어 있습니다. 여러분이 할 일은 이 자료를 AI에게 읽히고 어떤 섹션으로 보여줄지 결정하는 거예요.

자료쓰임
00-포트폴리오-리서치.md인물 정보, 레퍼런스, 무드 파악
images/Hero 배경, 프로젝트 썸네일, 케이스 이미지
01-포트폴리오-구성기획.md섹션 구조와 디자인 흐름
portfolio.html1차 웹사이트 프로토타입

구성은 보통 Hero, Work, About, Contact처럼 시작합니다. 김지수라는 인물의 강점과 프로젝트가 페이지 안에서 자연스럽게 연결되는지, 거기를 봐야 해요.


🚶 진행 흐름

1. 던지기: 사이트 제작 흐름 묻기

자료가 있는 상황을 설명하고, 웹사이트 제작 흐름을 먼저 묻습니다. 바로 HTML 만들자고 하면 AI가 즉흥적으로 꾸밀 수 있어요.

이 폴더에 00-포트폴리오-리서치.md와 images 폴더가 있는데, 이 자료로 포트폴리오 사이트를 만들려면 어떤 순서로 진행하면 좋을까요? 기획서 작성부터 HTML 생성까지 흐름을 알려주세요.

2. 기획하기: 구조와 무드 고르기

리서치 자료를 기준으로 사이트 구조 옵션을 받습니다. 여기서 무드까지 같이 고르면 다음 단계가 훨씬 편해집니다.

00-포트폴리오-리서치.md를 읽고 김지수 UX/UI Designer에게 맞는 포트폴리오 구조를 기획하려고 합니다. 섹션 구성, 레퍼런스 무드, 디자인 방향을 2~3개 옵션으로 제안해 주세요.

여기서 선택하는 것은 단순 취향이 아닙니다. 어떤 무드가 인물의 작업과 가장 잘 맞는지 고르는 일이에요.

3. 만들기: 기획서와 HTML 생성

먼저 기획서를 만들고, 그다음 HTML을 만듭니다. 제가 보기엔 이 순서가 포트폴리오 품질을 가장 크게 가릅니다.

선택한 구조와 디자인 방향으로 01-포트폴리오-구성기획.md를 먼저 작성하려고 합니다. 각 섹션의 목적, 들어갈 문구 샘플, 사용할 이미지 방향을 포함하세요.
01-포트폴리오-구성기획.md를 기준으로 portfolio.html 1차 프로토타입을 만들려고 합니다. 단일 HTML, 인라인 CSS, 바닐라 JS, 반응형 구조로 구현하고 images 폴더의 이미지를 적절히 배치하세요.

4. 검증하기: 1차본 확인

브라우저에서 열어 섹션과 내용이 맞는지 봅니다. 파일이 만들어졌다고 끝이 아니죠. 김지수 정보가 제대로 들어갔는지 봐야 합니다.

portfolio.html을 검증하려고 합니다. Hero, Work, About, Contact 섹션이 있는지, 김지수 정보가 반영됐는지, 이미지가 깨지지 않는지, 모바일 폭에서 읽히는지 점검해 주세요.

5. 개선하기: 가벼운 문구만 수정

본격 디자인 수정은 다음 클립에서 하므로, 여기서는 작은 수정만 합니다. 1차본에서 너무 욕심내면 다음 클립의 역할이 흐려져요.

Hero 타이틀의 한 줄 메시지만 더 선명하게 바꾸려고 합니다. 김지수의 UX/UI 강점이 드러나게 문장만 수정하고, 레이아웃과 다른 섹션은 그대로 유지하세요.

📦 결과물

저장 위치는 50-my-work/Part03-체험하기/실습11-포트폴리오기획/입니다. 리서치, 기획서, HTML이 한 폴더에서 이어져야 합니다.

실습11-포트폴리오기획/
├── 00-포트폴리오-리서치.md
├── images/
├── 01-포트폴리오-구성기획.md
├── portfolio.html
└── README.md

README.md에는 선택한 구조, 참고한 무드, 1차 프로토타입에서 마음에 드는 점과 아쉬운 점을 적습니다. 다음 클립에서는 이 아쉬운 점을 디자인 수정 목록으로 바꿔요.


🆘 자주 막히는 포인트

증상원인해결
자료 파일이 없음템플릿 자료가 안 들어옴00-포트폴리오-리서치.md와 images/ 존재를 확인하세요
AI가 바로 HTML부터 만듦기획서 단계를 건너뜀"구성 기획서 먼저"라고 순서를 되돌리면 됩니다
기획서가 추상적임실제 문구 조건이 없음각 섹션에 들어갈 문구 샘플을 요청하세요
이미지가 안 보임경로가 틀림images/파일명 기준으로 다시 연결하면 돼요
샘플 이름이 남음리서치 파일을 충분히 반영하지 않음리서치 파일을 다시 읽고 이름·프로젝트를 교체하세요
모바일에서 깨짐고정 폭 레이아웃375px 모바일 기준 점검을 요청하세요
수정 후 전체가 바뀜작은 수정 범위가 없음"문장만, 다른 구조는 그대로"를 넣으세요

🔗 다음 클립

→ Part 3 / Clip 9: 포트폴리오 수정 — 1차 portfolio.html을 디자인 참고 자료와 대화로 다듬어 최종본으로 만듭니다.

이번 클립은 뼈대를 세우는 단계였습니다. 다음 클립에서 색상, 여백, 타이포, 애니메이션, 반응형을 차례로 다듬어봅니다.

포트폴리오 수정

대화로 디자인 다듬기

Part 3 · Clip 9

🎯 이 클립에서 만드는 것

Clip 8에서 만든 1차 portfolio.html은 뼈대만 잡힌 상태예요. 이번에는 getdesign.md에서 좋아하는 사이트의 디자인을 .md로 받아 — 그걸 참고하면서 내 portfolio의 디자인뿐 아니라 구조까지 새롭게 다듬습니다.

방법은 이래요. 참고할 사이트 1~2개를 명확히 골라서, 그 디자인 .md를 클로드코드에 던지면서 변경을 요청합니다. "예쁘게 해줘"가 아니라 "이 사이트 톤으로 이 부분을 바꿔줘"가 되는 거죠.

50-my-work/Part03-체험하기/실습12-포트폴리오수정/
├── portfolio.html              # 개선 대상 (Clip 8에서 가져옴)
├── 00-포트폴리오-리서치.md     # 그대로
├── 01-포트폴리오-구성기획.md   # 그대로
├── 02-design-references.md     # ★ getdesign.md에서 받은 디자인 참고
├── images/                     # 그대로
└── README.md

💡 핵심 개념

디자인 수정 = 참고 + 구체화

"예쁘게 만들어줘"만 던지면 AI가 즉흥적으로 색·여백을 바꿉니다. 결과는 일관성 없는 사이트가 되기 쉬워요. 좋은 수정은 명확한 참고 자료 + 구체적 변경 범위 두 가지로 만들어집니다.

getdesign.md — 사이트 디자인을 .md로

getdesign.md는 좋아하는 사이트 URL을 입력하면 그 사이트의 디자인 시스템(색·타이포·여백·구조·인터랙션)을 마크다운으로 추출해 주는 서비스예요. 받은 .md를 클로드코드에 던지면 AI가 참고 디자인의 패턴을 정확히 이해한 상태로 내 portfolio를 수정합니다. "Stripe처럼" 같은 추상적 요청보다 훨씬 정확해요.

디자인뿐 아니라 구조도

Clip 8 1차본의 섹션 구성을 그대로 두지 마세요. 참고 사이트에서 좋은 구조 패턴이 있으면 — 섹션 순서·블록 종류·내비게이션 같은 구조 자체를 바꾸는 것도 OK. 이번 클립은 "디자인만 바꾸기"가 아니라 "사이트 전체를 다시 다듬기"입니다.


🛠️ 시작 전 — 자료 셋업

1단계. Clip 8 결과물 가져오기 (클로드코드에 입력)

워크스페이스의 50-my-work/Part03-체험하기/실습11-포트폴리오기획/ 안의 portfolio.html, 00-포트폴리오-리서치.md, 01-포트폴리오-구성기획.md, images/ 를 50-my-work/Part03-체험하기/실습12-포트폴리오수정/ 폴더로 복사하고, 그 작업 폴더로 진입해 주세요. 셋업이 끝나면 작업 폴더 파일 목록을 한 줄로 보고만 해 주세요. 실습은 아직 시작하지 마세요.

2단계. getdesign.md에서 디자인 참고 .md 받기 (브라우저)

  1. https://getdesign.md/ 접속
  2. 참고할 사이트 URL 1~2개 입력 (예: Stripe / Linear / Vercel / Notion / Apple / 본인이 좋아하는 사이트)
  3. 결과 .md를 복사하거나 다운로드
  4. 작업 폴더(실습12-포트폴리오수정/)에 **02-design-references.md**로 저장

참고 사이트는 정적 사이트 위주로 고르세요. 너무 동적이거나 보호된 사이트는 추출이 잘 안 될 수 있어요.

셋업 완료 체크

작업 폴더 안에:

  • portfolio.html, 00-포트폴리오-리서치.md, 01-포트폴리오-구성기획.md, images/ (Clip 8에서 복사)
  • 02-design-references.md (getdesign.md 결과)

다 있으면 진행 흐름으로.


🚶 진행 흐름

1. 던지기 — 참고 디자인으로 가능한 변경 묻기

02-design-references.md에 [참고 사이트명]의 디자인 시스템이 정리돼 있어요. 이 디자인을 portfolio.html에 어떻게 반영할 수 있을지 — 색·타이포·여백 같은 디자인뿐 아니라 섹션 구성·내비게이션·블록 구조까지 어떤 변경이 가능한지 옵션을 펼쳐 주세요.

2. 구체화 — 적용할 변경 범위 정하기

제안받은 변경 중 다음 3가지를 적용하려고 합니다:
- (예시) 색 팔레트를 다크 미니멀로 전환
- (예시) Hero를 풀스크린 + 큰 타이포로 재구성
- (예시) Work 섹션을 그리드 → 케이스 카드 슬라이더로 변경

먼저 02-design-references.md를 다시 읽고, 위 변경이 일관되게 적용되도록 디자인 토큰(색·폰트·여백·라운드·섀도우 등)을 정리해 주세요. 그 다음 portfolio.html에 어떻게 적용할지 작업 계획을 한 번 보여주세요.

3. 만들기 — 디자인·구조 적용

정리된 디자인 토큰과 작업 계획대로 portfolio.html을 수정해 주세요. 김지수의 정보(이름·프로젝트·자기소개)는 그대로 유지하고, 섹션 구성·디자인만 변경합니다. 인라인 CSS, 바닐라 JS, 반응형 구조는 유지하세요.

4. 검증 — 일관성·정보·반응형

수정된 portfolio.html을 검증해 주세요:
1) 02-design-references.md의 참고 디자인이 일관되게 반영됐나
2) 김지수 정보(이름·프로젝트 4개·자기소개·이미지)가 빠지지 않았나
3) 데스크톱·태블릿·모바일(375px)에서 깨지지 않나
4) 인라인 CSS · 바닐라 JS 구조가 유지됐나

5. 개선 — 한 부분만 부분 수정

Hero 섹션의 한 줄 메시지가 너무 작아 보여요. 폰트 사이즈만 더 키우고 자간을 좁혀 주세요. 다른 섹션의 색·여백은 그대로 유지합니다.

📦 결과물

저장 위치: 50-my-work/Part03-체험하기/실습12-포트폴리오수정/

실습12-포트폴리오수정/
├── portfolio.html             # 디자인·구조 개선된 최종본
├── 00-포트폴리오-리서치.md
├── 01-포트폴리오-구성기획.md
├── 02-design-references.md    # getdesign.md 결과
├── images/
└── README.md

README.md에 다음을 적습니다:

  • 참고 사이트 1~2개 (URL)
  • 적용한 디자인 변경 3가지
  • 적용한 구조 변경 (있다면)
  • Before/After 한 줄 (어디가 어떻게 달라졌나)

🆘 자주 막히는 포인트

증상원인해결
getdesign.md에서 결과가 안 나옴사이트가 너무 동적이거나 보호됨정적 사이트 위주로 (Stripe·Linear·Vercel·Notion·Apple)
02-design-references.md를 안 읽고 즉흥적 디자인참고 자료를 명시 안 함1단계 던지기에 파일명을 명확히 포함
색만 바뀌고 구조는 그대로"디자인 수정"만 요청"구조도 바꿀 수 있다"고 명시
김지수 정보가 사라짐전면 재작성 요청"정보는 유지, 디자인·구조만 변경" 명시
모바일에서 깨짐데스크톱 기준만 검증검증 단계에서 모바일 폭(375px) 명시
부분 수정 후 다른 섹션도 바뀜범위 명시 안 됨"이 섹션만, 다른 건 유지" 추가
참고 사이트를 그대로 따라하기만 함김지수 맥락 무시"참고는 하되 김지수 무드와 어울리게" 추가

🔗 다음 클립

→ Part 3 / Clip 10: Vercel 배포 — 완성된 portfolio.html을 Vercel에 올려 공개 URL을 받습니다.

이번 클립에서 만든 portfolio.html은 이제 어느 사이트에 올려도 부끄럽지 않은 수준이에요. 다음은 진짜 인터넷에 올려보는 시간.

Vercel 배포

내 웹사이트 인터넷에 올리기

Part 3 · Clip 10

🎯 이 클립에서 만드는 것

file:///Users/.../portfolio-final.html 주소를 친구에게 보내면 열릴까요? 안 열립니다. 내 컴퓨터 안에 있는 파일이니까요. 이번 클립에서는 Clip 9에서 만든 portfolio-final.html을 Vercel에 배포해 공개 URL을 만듭니다.

로컬에서만 열리던 주소를 다른 사람도 접속할 수 있는 https://프로젝트명.vercel.app 형태로 바꾸는 단계입니다. 배포는 웹사이트를 세상에 올리는 마지막 문턱이에요. 파일을 만드는 것과 달리 로그인, 인증, 프로젝트 이름, 재배포 같은 절차가 들어갑니다.

50-my-work/Part03-체험하기/실습13-Vercel배포/
├── portfolio-final.html
├── index.html
└── README.md

Vercel은 index.html을 기본 진입 파일로 찾습니다. 그래서 필요하면 portfolio-final.html을 index.html로 복사하거나 이름을 바꿔 배포합니다. 여러분이 여기서 받는 최종 결과는 파일이 아니라 진짜 주소입니다.


💡 핵심 개념

배포는 "내 컴퓨터 파일"을 "인터넷 주소"로 바꾸는 일입니다

브라우저에서 로컬 HTML을 열면 내 컴퓨터에서는 잘 보입니다. 하지만 그 주소를 친구에게 보내면 열리지 않아요. 파일이 내 컴퓨터 안에만 있기 때문입니다.

배포는 이 파일을 호스팅 서비스에 올리고, 접속 가능한 주소를 받는 과정입니다. 집에서 만든 포스터를 동네 게시판에 붙여 다른 사람이 보게 만드는 것과 비슷해요.

단계의미
파일 준비portfolio-final.html 또는 index.html 확인
서비스 선택Vercel, Netlify, GitHub Pages 등 비교
인증계정 로그인 또는 Magic Link 확인
배포CLI 또는 웹 화면으로 파일 업로드
검증공개 URL을 데스크톱과 스마트폰에서 열어 확인

이번 클립에서는 Vercel을 기준으로 진행합니다. CLI 명령을 외우는 게 목표가 아니에요. AI에게 맡길 부분과 사람이 직접 해야 할 부분을 나누는 게 핵심입니다. 이메일 인증처럼 사람 확인이 필요한 단계에서는 직접 확인해야 해요.


🚶 진행 흐름

1. 던지기: 배포 가능 여부 묻기

먼저 현재 HTML을 인터넷에 올릴 수 있는지 묻습니다. 바로 배포 명령부터 치지 않습니다. 가능한 선택지를 먼저 펼쳐요.

이 HTML 파일 portfolio-final.html을 인터넷에 공개하려는데, 어떤 방식으로 배포할 수 있을까요? Vercel, Netlify, GitHub Pages 같은 선택지를 비교하고 가장 빠른 흐름을 알려주세요.

2. 기획하기: Vercel 흐름 정하기

가장 빠른 방법으로 좁히고, 사람이 해야 할 일과 AI가 할 일을 나눕니다. 이걸 해두면 Magic Link 같은 단계에서 덜 당황합니다.

이번에는 Vercel로 배포하려고 합니다. CLI 설치, index.html 준비, 인증, 배포, URL 확인까지 단계별 흐름을 정리하고, 제가 직접 해야 하는 부분과 자동으로 처리할 부분을 구분해 주세요.

가입이나 인증 단계에서는 브라우저와 이메일 확인이 필요할 수 있습니다. 이 부분은 여러분이 직접 처리합니다.

3. 만들기: 배포 실행

실제 배포를 진행합니다. 인증이 필요한 지점에서는 멈추게 합니다. 제가 요청문에 "인증 단계에서는 멈추고 알려줘"를 넣는 이유가 이거예요.

정리한 흐름대로 Vercel 배포를 진행하려고 합니다. 필요한 CLI 설치와 파일 준비를 진행하고, Magic Link나 브라우저 인증이 필요한 단계에서는 멈춘 뒤 제가 할 일을 알려주세요.

배포가 완료되면 URL을 받습니다. URL은 README.md에 남겨야 합니다. 나중에 찾으려고 하면 은근히 헷갈려요.

4. 검증하기: 공개 URL 열어 보기

배포 후에는 URL이 열리는지 반드시 확인합니다. 데스크톱에서만 보지 말고 스마트폰에서도 열어보면 좋습니다.

발급된 Vercel URL을 검증하려고 합니다. 데스크톱 브라우저에서 열리는지, 스마트폰에서도 표시되는지, 이미지와 CSS가 깨지지 않는지 확인할 체크리스트를 만들어 주세요.

5. 개선하기: 이름이나 진입 파일만 수정

문제가 있으면 작은 범위부터 수정합니다. 배포 문제는 대부분 파일명, 경로, 프로젝트 이름처럼 작은 데서 납니다.

배포 후 404가 떠서 진입 파일을 조정하려고 합니다. portfolio-final.html을 index.html로 맞추고 재배포하되, HTML 내용과 디자인은 그대로 유지하세요.

프로젝트 이름을 바꾸고 싶을 때도 이름만 지정합니다. 사이트 내용은 그대로 둔다는 말을 같이 넣어야 안전해요.

프로젝트 이름을 jisu-portfolio-2026으로 바꿔 재배포하려고 합니다. 이름 설정만 조정하고 사이트 내용은 그대로 유지하세요.

📦 결과물

저장 위치는 50-my-work/Part03-체험하기/실습13-Vercel배포/입니다. 배포용 index.html과 원본 portfolio-final.html을 구분해두면 나중에 덜 헷갈립니다.

실습13-Vercel배포/
├── portfolio-final.html
├── index.html
└── README.md

README.md에는 공개 URL, 배포한 파일, 확인한 기기, 막혔던 지점을 적습니다. 최종 결과는 파일 하나가 아니라 다른 사람이 접속할 수 있는 주소예요.


🆘 자주 막히는 포인트

증상원인해결
portfolio-final.html이 없음Clip 9 결과물이 안 들어옴최종 HTML 파일 존재부터 확인하세요
vercel 명령을 못 찾음Vercel CLI가 설치되지 않음CLI 설치 단계부터 다시 진행하면 됩니다
인증 메일이 안 보임Magic Link 메일 지연 또는 스팸함 이동스팸함과 브라우저 인증 링크를 확인하세요
배포 후 404가 뜸기본 진입 파일이 없음index.html 파일을 준비해 재배포하세요
CSS나 이미지가 깨짐외부 파일 경로가 배포 구조와 다름HTML 안에 필요한 스타일을 포함하거나 경로를 고치면 돼요
프로젝트 이름이 중복됨이미 사용 중인 이름이름 뒤에 연도나 숫자를 붙이세요
재배포 후 내용이 바뀜수정 범위가 넓음"파일명만, 내용은 그대로"를 명시하세요

🔗 다음 클립

→ 보조 레퍼런스: 대화 패턴 5단계 — Part 3에서 반복한 대화 흐름을 다시 정리합니다.

Part 3은 여기서 마무리됩니다. 데이터, 콘텐츠, 웹사이트, 배포까지 모두 같은 5단계 대화로 이어졌다는 점을 확인하면 됩니다.

플러그인 설치하기

GPTaku 마켓플레이스 + 플러그인 3개

Part 4 · Clip 1

이 클립에서 하는 일

Part 3에서는 클로드코드와 대화하면서 보고서, 카드뉴스, 영상, 포트폴리오를 만들어봤습니다. Part 4부터는 방향이 조금 달라집니다. 새 결과물을 만드는 대신, 클로드코드에 기능을 더 붙입니다.

방법은 플러그인 설치입니다. 앱스토어에서 앱을 받아 쓰는 것과 비슷해요. 누군가 만들어둔 명령어, 스킬, 에이전트를 내 클로드코드에 가져와서 쓰는 방식입니다.

설치 전에는 같은 질문도 매번 처음부터 설명해야 합니다. 설치 후에는 플러그인이 작업 흐름을 어느 정도 잡아줍니다. 공식 문서를 매번 직접 찾아보던 일도 다음 클립부터는 docs-guide로 처리해볼 수 있고, 네 번째 클립에서는 내 사용 패턴을 외부 점검 도구로 확인해봅니다.

이번 클립에는 BUILD 5단계를 적용하지 않습니다. 결과물을 만드는 시간이 아니라 도구를 설치하는 시간이니까요. /plugin TUI를 열고, 마켓플레이스를 추가하고, 플러그인 세 개를 설치하면 끝입니다.

여기서 가져가야 할 것은 두 가지입니다. 플러그인은 클로드코드에 붙이는 확장 묶음이라는 것. 그리고 마켓플레이스를 한 번 추가하면 그 안의 플러그인을 골라 설치할 수 있다는 것.


핵심 개념

플러그인은 클로드코드 확장 묶음입니다

공식 문서는 플러그인을 이렇게 설명합니다.

"Plugins let you extend Claude Code with custom functionality that can be shared across projects and teams."

쉽게 말하면, 누군가 만든 슬래시 명령, 스킬, 에이전트 같은 것들을 한 묶음으로 패키징해서 GitHub에 올려두고, 다른 사람이 한 번에 가져다 쓰게 만든 배포 단위입니다. 앱스토어에서 앱을 받는 감각과 거의 같습니다.

플러그인 안에는 여러 재료가 들어갈 수 있습니다. 지금 전부 외울 필요는 없습니다. Part 4에서는 슬래시 명령과 스킬 정도만 보면 됩니다. 나머지는 Part 5에서 직접 만져보면서 익힙니다.

  • 슬래시 명령 — commands/*.md에 들어 있고, /명령어로 직접 호출합니다.
  • 스킬 — skills/*/SKILL.md에 들어 있는 자동화 작업 흐름입니다.
  • 서브에이전트 — agents/*.md에 들어 있으며, 특정 작업을 맡는 AI 페르소나입니다.
  • Hook — hooks/*.json에 정의하는 이벤트 자동화입니다.
  • MCP 서버 — .mcp.json으로 외부 서비스와 연결합니다.
  • LSP 서버 — lsp/*에 들어가며 코드 자동완성이나 정의 점프에 쓰입니다.

마켓플레이스는 플러그인 카탈로그입니다

여기서 한 번 헷갈리기 쉽습니다. 처음부터 플러그인 하나를 바로 설치하는 게 아니라, 먼저 마켓플레이스를 추가합니다. 마켓플레이스를 등록하면 그 안에 들어 있는 플러그인들을 골라 설치할 수 있습니다.

[제작자]                              [사용자]
명령·스킬·에이전트   →   [GitHub]   →   /plugin TUI
한 묶음 push                          → 마켓플레이스 추가
                                      → 플러그인 검색·설치

이번 클립에서 추가할 마켓플레이스는 GPTaku 하나입니다. URL은 https://github.com/fivetaku/gptaku_plugins.git입니다. 강사인 지피타쿠가 직접 만들어 운영하는 마켓플레이스입니다.

여기에 들어 있는 플러그인은 다음과 같습니다.

  • docs-guide — AI 기억에만 기대지 않고 공식 문서를 실시간으로 가져와 답합니다.
  • kkirikkiri — 자연어 한마디로 AI 에이전트 팀을 구성하고 실행합니다.
  • 바선생(vibe-sunsang) — 클로드코드 대화 기록을 분석해 성장 리포트와 멘토링을 제공합니다.
  • deep-research — 여러 에이전트가 병렬로 검색해 출처가 있는 리서치 리포트를 만듭니다.
  • insane-design — 웹사이트의 CSS를 가져와 디자인 토큰, 컬러, 타이포그래피로 정리합니다.
  • insane-search — 차단되거나 접근이 까다로운 사이트에서 정보를 가져오는 검색 도구입니다.
  • git-teacher — Git 명령을 강의처럼 설명하고 안전하게 실행하도록 돕습니다.
  • pumasi — Claude는 PM·아키텍트 역할을 맡고, Codex CLI들이 개발자로 병렬 작업합니다.
  • nopal — Gmail, Calendar, Drive, Docs 같은 Google Workspace를 자연어로 조작합니다.
  • show-me-the-prd — 한 문장 아이디어를 인터뷰로 풀어 PRD 문서 묶음으로 만듭니다.
  • skillers-suda — 네 명의 전문가가 토론하면서 클로드코드 스킬을 만들어줍니다.

이번 Part 4에서 직접 다룰 것은 docs-guide, kkirikkiri, vibe-sunsang 세 개입니다. 나머지는 강의를 끝낸 뒤 자기 업무에 맞춰 골라 쓰면 됩니다. 다음 세 클립에서는 이 세 플러그인을 하나씩 써봅니다.

이번에 설치하는 세 플러그인 미리보기

지금 세부 기능을 외울 필요는 없습니다. 어떤 용도로 쓰는지만 잡고 넘어가면 됩니다.

docs-guide는 공식 문서를 실시간으로 찾아봅니다. 예를 들어 AI에게 "Next.js App Router는 어떻게 써?"라고 물으면 보통은 모델 기억으로 답합니다. 그 기억이 1년 전 버전일 수도 있죠. docs-guide는 질문이 들어오면 공식 문서 사이트에서 내용을 가져옵니다.

  • 프로젝트의 package.json이나 requirements.txt를 읽고 내가 쓰는 버전을 감지합니다.
  • React, Next.js, Vue, Django, Stripe 등 68개 이상 라이브러리를 미리 매핑해둡니다.
  • 응답 끝에 출처 URL, 감지된 버전, 문서를 가져온 방법을 표시합니다.

kkirikkiri는 AI 에이전트 팀을 자동으로 구성합니다. "리서치 팀 만들어줘"라고 한 줄만 던지면, 끼리끼리가 2~3개 질문으로 인터뷰하고 환경을 살핀 뒤 팀을 짜서 실행합니다.

  • 리서치, 개발, 분석, 콘텐츠, PM 프리셋을 제공합니다.
  • Claude, Codex CLI, Gemini CLI를 한 팀에 섞어 역할을 나눌 수 있습니다.
  • 1라운드 결과가 부족하면 최대 3라운드까지 팀을 다시 짭니다.
  • 잘 동작한 팀원은 저장해 다른 프로젝트에서도 재사용할 수 있습니다.

vibe-sunsang, 즉 바선생은 내 AI 활용 방식을 점검합니다. 클로드코드는 대화 기록을 ~/.claude/projects/에 자동 저장합니다. 바선생은 그 기록을 읽고 내가 AI를 어떻게 쓰고 있는지 분석합니다.

  • 작업 분해, 검증, 오케스트레이션, 실패 대응, 맥락 관리, 메타인지 6축으로 평가합니다.
  • Builder, Explorer, Designer, Operator 네 가지 워크스페이스 유형을 구분합니다.
  • L1~L7 레벨을 0.5 단위로 기록해 주간·월간 변화를 추적합니다.
  • 멘토링 모드에서 요청 품질 채점, 안티패턴 진단, 개념 학습, 종합 코칭을 제공합니다.

보안 한 줄

플러그인은 내 컴퓨터에서 코드를 실행할 수 있습니다. 공식 문서도 이 부분은 분명히 경고합니다.

"Plugins are highly trusted components that can execute arbitrary code on your machine with your user privileges."

겁먹을 필요는 없지만, 아무 출처에서나 설치하면 안 됩니다. 신뢰할 수 있는 마켓플레이스에서만 설치하는 습관을 들이세요. 이 강의에서 GPTaku를 쓰는 이유도 강사가 직접 만든 출처이기 때문입니다.


진행 흐름

1. /plugin TUI 열기

먼저 클로드코드 안에서 /plugin을 입력합니다. 명령어로 직접 설치할 수도 있지만, 처음에는 TUI, 즉 텍스트 UI가 훨씬 보기 쉽습니다.

/plugin

TUI가 열리면 위쪽에 Discover, Installed, Marketplaces, Errors 네 탭이 보입니다. 우리는 Marketplaces 탭부터 들어갑니다. 그래야 나중에 Discover 탭에 플러그인 목록이 채워집니다.

┌─ Claude Code Plugins ─────────────────────────┐
│ [Discover] [Installed] [Marketplaces] [Errors]│
├───────────────────────────────────────────────┤
│ (현재 설치된 플러그인 목록)                    │
│   (없음)                                       │
└───────────────────────────────────────────────┘

2. Marketplaces 탭에서 GPTaku 추가

Marketplaces 탭으로 이동해 Add marketplace를 선택합니다. URL 입력란이 뜨면 GPTaku GitHub 주소를 그대로 붙여 넣습니다.

https://github.com/fivetaku/gptaku_plugins.git

엔터를 누르면 등록이 끝납니다. 클로드코드가 GitHub에서 플러그인 목록을 가져옵니다.

✓ Marketplace added: gptaku_plugins
  플러그인 목록을 가져왔습니다.

3. Discover 탭에서 플러그인 3개 설치

Discover 탭으로 가면 GPTaku 안의 플러그인 목록이 보입니다. 여기서 docs-guide, kkirikkiri, vibe-sunsang 세 개만 설치합니다. 순서는 docs-guide → kkirikkiri → vibe-sunsang으로 갑니다.

[Discover]
├─ docs-guide        — 공식 문서 기반 답변
├─ kkirikkiri        — AI 에이전트 팀 자동 구성
├─ vibe-sunsang      — AI 활용 점검
├─ deep-research
├─ insane-search
├─ insane-design
└─ ... (그 외)

먼저 docs-guide를 선택하고 Install을 누릅니다. 설치 중 권한 요청이 뜰 수 있습니다. 이 강의에서는 GPTaku 마켓플레이스를 신뢰한다는 전제로 y를 눌러 진행합니다.

> Install docs-guide@gptaku_plugins?
> (y/n) y
✓ Installed: docs-guide

같은 방식으로 kkirikkiri와 vibe-sunsang도 설치합니다. 한 번에 하나씩 진행되는 것이 정상입니다. 세 개가 끝나면 이런 상태가 됩니다.

✓ docs-guide installed
✓ kkirikkiri installed
✓ vibe-sunsang installed

4. Installed 탭 확인 + 슬래시 명령 호출

이제 설치 여부를 확인합니다. Installed 탭으로 이동했을 때 방금 설치한 세 개가 모두 보여야 합니다.

[Installed]
├─ ✓ docs-guide      — gptaku_plugins
├─ ✓ kkirikkiri      — gptaku_plugins
└─ ✓ vibe-sunsang    — gptaku_plugins

세 개가 보이면 TUI를 닫습니다. 그다음 슬래시 명령을 하나씩 호출해서 실제로 로딩되는지 확인합니다.

/docs-guide
/kkirikkiri
/vibe-sunsang

각 플러그인이 무엇이든 응답을 내면 정상입니다. 지금은 깊게 사용할 필요 없습니다. "호출했을 때 답이 온다"까지만 보면 됩니다.


결과물

이번 클립에서는 별도 파일을 새로 만들지 않습니다. 대신 결과물 폴더에 진행 기록을 남깁니다.

50-my-work/Part04-강화하기/
└── 실습14-플러그인설치/
    └── README.md

README.md에는 다음 내용을 적습니다. 거창한 문서가 아니라, 내가 무엇을 설치했는지 남기는 메모입니다.

  • 완료 시각 — 설치를 끝낸 시간
  • 마켓플레이스 — gptaku_plugins와 URL
  • 설치한 플러그인 — docs-guide / kkirikkiri / vibe-sunsang
  • 호출 확인 — 세 슬래시 명령의 응답 확인 여부
  • 회고 — 가장 인상적이었던 한 줄

완료 또는 /wrap을 입력하면 part04 스킬이 README.md와 progress.json을 정리합니다. 직접 손으로 길게 작성할 일은 거의 없습니다.


자주 막히는 포인트

/plugin을 입력해도 TUI가 열리지 않으면 클로드코드 버전이 오래됐을 가능성이 큽니다. 최신 버전으로 업데이트한 뒤 다시 시도합니다.

Marketplaces 탭에서 URL 등록에 실패하면 인터넷 연결이나 GitHub 상태를 먼저 확인합니다. 잠깐 뒤 다시 등록하면 해결되는 경우도 많습니다.

설치 중 권한 요청이 계속 뜨는 것은 클로드코드 보안 정책 때문입니다. 신뢰할 수 있는 마켓플레이스라면 y로 진행합니다. 이 원칙만큼은 꼭 지키세요. 출처를 모르면 설치하지 않습니다.

설치했는데 Installed 탭에 보이지 않을 때는 캐시가 늦게 반영된 것일 수 있습니다. TUI를 닫고 /reload-plugins를 실행하거나 클로드코드를 재시작합니다.

슬래시 명령을 호출했는데 응답이 없으면 플러그인 로딩에 실패했을 수 있습니다. /plugin의 Installed 탭에서 상태를 확인하고, 필요하면 해당 플러그인을 다시 설치합니다.

잘못 설치한 플러그인은 Installed 탭에서 해당 플러그인을 선택한 뒤 Uninstall하면 됩니다.

플러그인 비용이 걱정된다면 이렇게 이해하면 됩니다. 플러그인 자체는 무료입니다. 다만 클로드코드 사용에는 기존 구독이나 사용량 비용이 따릅니다.

명령어로 바로 설치하는 방식도 있습니다.

/plugin marketplace add [URL]
/plugin install [이름]@[마켓]

다만 처음에는 TUI로 눈으로 확인하면서 진행하는 편이 덜 헷갈립니다.


다음 클립

다음은 Part 4 / Clip 2, docs-guide입니다. 방금 설치한 첫 번째 플러그인을 직접 써봅니다.

다음 클립에서는 일반 질문으로 받은 답과 docs-guide로 받은 답을 비교합니다. 같은 질문인데 답이 어떻게 달라지는지, 왜 공식 문서를 보고 답하게 만드는 게 중요한지 바로 확인할 수 있습니다.

docs-guide

공식 문서 기반으로 정확한 답변 받기

Part 4 · Clip 2

이 클립에서 만드는 것

클로드코드에 라이브러리 사용법을 물었는데, 답은 그럴듯한데 막상 따라 하면 안 되는 경우가 있습니다. 예전 버전 문법이거나, 실제로는 없는 함수일 때도 있고요. 이유는 단순해요. 그냥 물어보면 LLM 모델이 학습 시점에 이미 알고 있는 지식으로만 답하거든요. 학습 시점이 1년 전이면 그 이후에 바뀐 API는 모르고, 모르는 부분을 그럴듯하게 지어내기도 합니다. 보통 이런 걸 할루시네이션이라고 부릅니다.

docs-guide는 바로 이 문제를 풀려고 만든 플러그인입니다. 질문을 받으면 모델 기억이 아니라 공식 문서 사이트에서 실시간으로 내용을 가져와 답하고, 답변 끝에 출처 URL을 붙여요. 최신성 보장 + 할루시네이션 방어, 둘 다 한 번에 해결합니다.

이번 클립에서는 Part 3에서 썼던 Vercel을 다시 다룹니다. 그때 포트폴리오를 Vercel에 배포했지만, Vercel이 정확히 어떤 도구인지는 대충 넘겼죠. 이번에는 같은 질문을 일반 답변과 docs-guide 답변으로 각각 받아보고, 차이를 직접 비교합니다.

비교하면서 확인할 변화는 세 가지입니다.

  • AI가 "보통", "아마도" 같은 말로 답해도 그냥 넘기던 상태에서, 출처 URL이 없는 답은 한 번 의심하는 쪽으로 바뀝니다.
  • 새 도구를 만나면 검색부터 하던 흐름을, docs-guide로 공식 문서 기반 설명을 먼저 받는 흐름으로 바꿉니다.
  • 도구가 클로드코드와 잘 맞는지 몰라서 감으로 선택하던 방식 대신, MCP나 llms.txt 같은 연결 자원까지 확인합니다.

오늘 예시는 Vercel이지만, 가져가야 할 건 도구 이름이 아닙니다. 모르는 도구는 docs-guide로 먼저 이해하고 쓰는 흐름입니다. 앞으로 Supabase, OpenAI SDK, Tailwind 같은 도구를 만날 때도 같은 방식으로 확인하면 됩니다.


핵심 개념

docs-guide는 AI 기억이 아니라 문서를 봅니다

일반 답변은 AI가 학습 과정에서 익힌 내용을 바탕으로 나옵니다. 그 내용이 1년 전 버전일 수도 있고, 처음부터 잘못 섞였을 수도 있습니다. docs-guide는 질문을 받으면 공식 문서 사이트로 가서 실제 페이지를 가져옵니다.

사용자: "React useEffect cleanup 공식문서 기반으로 설명해줘"
   ↓
Step 0: 프로젝트 의존성 확인 (package.json → React 19 감지)
   ↓
Step 1: 알려진 사이트 목록 확인 (react.dev — 68개 검증된 URL 중 매칭)
   ↓
Step 2: react.dev/llms.txt 가져오기 (문서 페이지 인덱스)
   ↓
Step 3: 관련 페이지 URL 찾기 (→ /reference/react/useEffect)
   ↓
Step 4: 해당 페이지 WebFetch
   ↓
답변: 설명 + 코드 예제
Source: https://react.dev/reference/react/useEffect
(version: React 19 | method: llms.txt)

여기서 봐야 할 안전장치는 두 가지입니다. 먼저 내가 쓰는 버전을 확인합니다. package.json이나 requirements.txt를 읽고, 설치된 버전에 맞는 문서를 찾습니다. 그리고 답변 끝에 출처가 남습니다. URL이 없거나 엉뚱하면 바로 의심할 수 있습니다.

버전 기준점: 이 자습서는 React 19, Next.js 15, Vercel 최신 문서 기준으로 시연합니다. 라이브러리가 업데이트되어도 docs-guide는 프로젝트의 package.json을 보고 설치된 버전에 맞춰 답합니다.

llms.txt는 AI용 문서 색인입니다

llms.txt는 AI가 문서를 읽기 쉽게 만든 색인 파일입니다. robots.txt처럼 사이트 루트에 두고, 안에는 문서 페이지 목록이 들어갑니다. docs-guide는 먼저 이 파일을 찾습니다. 없으면 GitHub raw, sitemap.xml, WebSearch 순서로 다른 경로를 시도합니다.

이 강의에서 다룰 React, Next.js, Vercel, Stripe, Django, FastAPI, Prisma 같은 라이브러리는 미리 매핑되어 있습니다. 내가 쓰는 라이브러리가 지원되는지 궁금하면 /docs-guide로 물어보면 됩니다.

두 번째 질문에서 차이가 커집니다

처음에는 "이 도구가 뭐야?" 정도로 정의를 받습니다. 그다음에 "클로드코드에서 쓰면 어떤 장점이 있어?"라고 한 번 더 물어보세요. 여기서 일반 답변과 차이가 확 벌어집니다.

Vercel은 agent-resources 페이지를 따로 운영합니다. 이 페이지에는 클로드코드용 MCP 서버, AI Gateway, Skills, CLI Workflows 같은 자료가 정리되어 있습니다. 일반 답변은 이런 페이지의 존재를 모른 채 답할 수 있습니다. docs-guide는 공식 문서를 직접 가져오니 이 정보까지 확인할 수 있습니다.


진행 흐름

1. 같은 질문을 그냥 클로드코드에 던지기

먼저 docs-guide를 쓰지 않고 일반 답변부터 받습니다. 비교할 기준을 만드는 단계입니다.

Part 03에서 내 포트폴리오를 Vercel에 배포했는데
사실 Vercel이 뭐 하는 도구인지 잘 몰라.
Vercel이 뭐고 주요 기능이 뭔지 알려줘.

답변은 보통 이런 식으로 나옵니다.

Vercel은 정적 사이트와 서버리스 함수를 호스팅하는 클라우드 플랫폼입니다.
주요 기능:
- Git 연동 자동 배포
- 글로벌 CDN
- HTTPS 자동
- 도메인 연결
배포 작업은 보통 코드를 GitHub에 올리고 Vercel에서 import해서 빌드합니다.

그럴듯하지만 출처가 없습니다. "보통" 같은 말도 섞여 있고, 기능도 몇 개만 나옵니다. 이 답을 워크스페이스의 vercel-overview-plain.md로 저장합니다. 뒤에서 docs-guide 답변과 비교할 때 씁니다.

2. 같은 질문을 docs-guide로 다시 던지기

이제 같은 질문을 /docs-guide로 다시 물어봅니다.

/docs-guide:docs-guide Vercel이 뭐하는 건지, 주요 기능이 뭔지 알려줘.

docs-guide가 vercel.com/docs/llms.txt를 가져온 뒤 답하는 과정을 볼 수 있습니다. 예시는 아래처럼 나옵니다.

Vercel — 공식 정의

"Vercel is the AI Cloud, a unified platform for building, 
 deploying, and scaling AI-powered applications."

→ 한국어: 웹 앱·AI 앱·AI 에이전트를 만들고 배포하고 자동 확장해주는 통합 클라우드.

[핵심 기능 6 카테고리]
1. 앱 빌드     — Next.js·React·Functions·이미지 최적화
2. AI 인프라   — v0·AI SDK·AI Gateway·MCP 서버·Agent 호스팅
3. 팀 협업     — Toolbar·Comments·Draft mode
4. 보안        — Deployment Protection·WAF·Bot Management
5. 배포·확장   — Delivery Network·Rolling Releases·Instant Rollback
6. 모니터링    — Observability suite (로그·추적·Speed Insights)

source: https://vercel.com/docs
method: llms.txt index → direct fetch

차이가 바로 보입니다. 공식 정의를 인용했고, 기능을 여섯 범주로 나눴고, 답변 끝에 출처 URL이 있습니다. 이 답은 vercel-overview-docs.md로 저장합니다.

3. 한 번 더 묻기: 클로드코드에서 Vercel을 쓰면 좋은 점

여기서 멈추면 아쉽습니다. docs-guide의 장점은 후속 질문에서 더 잘 드러납니다.

/docs-guide:docs-guide 클로드코드에서 Vercel을 쓰면 어떤 장점이 있어?

이번에는 docs-guide가 vercel.com/docs/agent-resources 페이지를 가져옵니다. 일반 답변만으로는 놓치기 쉬운 내용이 여기서 나옵니다.

Vercel은 클로드코드를 "공식 1급 클라이언트"로 대우합니다.

[클로드코드 ↔ Vercel 5가지 시너지]

1. llms-full.txt
   Vercel 전체 문서를 LLM이 읽기 좋게 모아둔 파일
   공식 가이드: "Claude Code: Use the WebFetch tool to fetch the content"

2. Vercel MCP 서버
   클로드코드가 Vercel 계정에 직접 접속
   → 문서 검색 / 프로젝트 관리 / 배포 로그 보기 / 도메인 체크
   → "내 어제 배포 왜 실패했어?" 클로드코드가 직접 로그 가져와 분석

3. AI Gateway
   클로드코드가 AI Gateway 통해 여러 모델 호출
   공식 명시: "Claude Code, OpenAI Codex, Cline, and Roo Code"
   → API 키 한 곳 관리 + 모델 장애 시 자동 fallback

4. Skills.sh
   npx skills add owner/repo로 클로드코드 능력 한 줄 확장

5. CLI Workflows
   클로드코드용 검증된 작업 레시피 공식 제공
   예: 프로덕션 500 에러 디버깅 / 배포 롤백 / 느린 함수 디버깅

source: https://vercel.com/docs/agent-resources

이런 페이지가 따로 있다는 사실 자체가 중요합니다. 이 답은 vercel-claude-synergy.md로 저장합니다.

4. 두 답변을 다섯 관점으로 비교하기

이제 받은 답 두 개를 비교합니다. 다시 클로드코드에 요청합니다.

방금 받은 일반 답변이랑 docs-guide 답변 두 개를
정의 정확성·기능 범위·출처·버전·추측 흔적 다섯 관점으로 비교 표 만들어줘.

결과는 이런 형태가 됩니다.

관점: 정의 정확성
- 일반 답변: "정적 사이트 호스팅"처럼 추상적으로 설명
- docs-guide: "AI Cloud"라는 공식 정의 확인

관점: 기능 범위
- 일반 답변: Git, CDN, HTTPS 정도로 제한됨
- docs-guide: 6개 카테고리로 정리

관점: 출처
- 일반 답변: 없음
- docs-guide: source URL 표시

관점: 버전
- 일반 답변: 명시 없음
- docs-guide: 문서 기준 확인 가능

관점: 추측 흔적
- 일반 답변: "보통", "아마도" 같은 표현이 섞일 수 있음
- docs-guide: 문서에 근거한 단정형 설명

이 내용을 comparison.md로 저장합니다. 한 화면에 차이를 정리해두면, 다음에 새 도구를 만났을 때 docs-guide를 켜야 할지 훨씬 빨리 판단할 수 있습니다.

5. 언제 쓸지 정리하기

오늘 시연 주제는 Vercel이지만, 실제로 남겨야 할 건 반복 가능한 습관입니다.

docs-guide를 어떤 상황에서 쓰면 좋은지 정리해줘.

답변은 이런 식으로 정리할 수 있습니다.

docs-guide를 쓰면 좋은 상황

1. 처음 쓰는 도구나 라이브러리를 호출하기 전
   - 예: Vercel, Supabase, OpenAI SDK, Tailwind, FastAPI

2. 바이브코딩 중 클로드코드가 새 라이브러리를 import했을 때
   - 환각 답변을 줄이기 위해 공식 문서 확인

3. 라이브러리 버전을 올린 뒤 코드가 깨졌을 때
   - 예전 문법과 현재 문법 차이 확인

4. 기능, 옵션, 메서드 시그니처를 정확히 알아야 할 때

5. 도구 선택 단계에서 클로드코드와의 연결 지점을 확인할 때
   - agent-resources, MCP 지원, llms.txt 제공 여부 등

특히 5번이 이번 Vercel 예시의 핵심입니다. Part 6, Part 7에서 Supabase 같은 도구를 만날 때도 같은 방식으로 확인하면 됩니다.


결과물

작업 폴더는 50-my-work/Part04-강화하기/실습15-공식문서확인/입니다. 안에는 파일 다섯 개가 남습니다.

실습15-공식문서확인/
├── vercel-overview-plain.md       # 일반 답변
├── vercel-overview-docs.md        # docs-guide 답변 (정의 + 6 카테고리)
├── vercel-claude-synergy.md       # docs-guide 추가 답변 (5가지 시너지)
├── comparison.md                  # 다섯 관점 비교
└── README.md                      # 실습 메타 + 회고

완료 또는 /wrap을 입력하면 part04 스킬이 README와 progress.json을 정리합니다. README에는 아래 내용이 들어갑니다.

  • 시연 주제: Vercel
  • 사용한 출처 URL: vercel.com/docs, vercel.com/docs/agent-resources
  • 비교 기준: 정의, 기능, 출처, 버전, 추측 흔적
  • 발견한 연결 자원: llms-full.txt, MCP 서버, AI Gateway, Skills, CLI Workflows
  • 반복 적용 가이드: 어떤 도구에 같은 흐름을 쓸지
  • 회고 한 줄: 가장 인상적이었던 차이

자주 막히는 포인트

/docs-guide 호출이 인식되지 않으면 먼저 Clip 1에서 설치를 했는지 확인합니다. /plugin의 Installed 탭을 보고, 없으면 다시 설치합니다.

docs-guide 답변에 출처가 없을 때는 해당 라이브러리가 지원 목록에 없을 수 있습니다. README에서 지원 라이브러리를 확인하고, 없으면 다른 도구로 실습하세요.

Vercel 답변이 일반 답변과 크게 다르지 않다면 후속 질문이 얕았을 가능성이 큽니다. Supabase나 Tailwind처럼 문서 구조가 뚜렷한 도구로 같은 흐름을 다시 해봐도 됩니다.

Step 3에서 agent-resources fetch가 실패하면 URL이 바뀌었거나 잠깐 장애가 난 상황일 수 있습니다. 이때는 일반 Vercel 문서로 대체하고, Step 3는 건너뛰어도 됩니다.

답변이 너무 길어서 비교하기 어렵다면 이렇게 다시 요청하세요.

핵심만 5줄로 요약해줘.

출처 URL이 클릭되지 않는 터미널도 있습니다. 그럴 때는 우클릭해서 링크를 열거나, URL을 복사해 브라우저에 붙여 넣으면 됩니다.

다른 도구에도 그대로 응용할 수 있습니다. 최근 처음 써본 도구나 곧 쓸 도구를 하나 골라 같은 방식으로 질문해보세요.

llms.txt가 헷갈리면 "AI용 문서 색인 파일"이라고 기억하면 됩니다. 사이트 루트에 두는 파일이라는 점에서 robots.txt와 비슷합니다.


다음 클립

→ Part 4 / Clip 3: kkirikkiri — 자연어로 AI 팀 구성하기

다음 클립에서는 자연어 한마디로 AI 에이전트 팀을 구성하는 플러그인을 사용합니다. 오늘 다룬 docs-guide도 그 팀 안에서 한 명의 팀원처럼 다시 등장합니다.

kkirikkiri

자연어로 AI 에이전트 팀 구성

Part 4 · Clip 3

이 클립에서 만드는 것

지난 클립에서는 docs-guide로 공식 문서를 읽는 법을 익혔습니다. 이번에는 그 흐름을 그대로 이어갑니다. 클로드코드에 Agent Teams라는 기능이 있는데, 먼저 docs-guide로 이 기능이 뭔지 확인합니다.

그다음 사용할 도구는 kkirikkiri(끼리끼리)입니다. Agent Teams를 직접 쓰려면 매번 “어떤 팀을 만들고 어떤 일을 맡길지” 자연어로 길게 설명해야 합니다. kkirikkiri는 이 과정을 한 줄 호출로 줄여줍니다. 한국어로 요청을 넣으면 짧게 인터뷰하고, 팀을 짜고, 병렬로 분석한 뒤 리포트까지 남깁니다.

시연 예시는 코스메틱 브랜드 마케터의 SNS 캠페인 기획입니다. 실습할 때는 본인 직무로 바꿔 넣으면 됩니다. 영업, 기획, HR, 일반 사무직도 같은 방식으로 진행할 수 있습니다.

Before:

  • AI에게 일을 시키면 한 사람에게 물어본 것처럼 단일 관점 답변만 받습니다.
  • 클로드코드에 Agent Teams 기능이 있는지도 모릅니다.
  • Part 6에서 만들 스킬의 형태가 아직 흐릿합니다.

After:

  • 기획자, 실무자, 분석가, AI 활용 전문가 관점이 섞인 리포트를 받습니다.
  • 클로드코드 기본 기능과, 그 기능을 스킬로 쉽게 쓰는 방법을 함께 압니다.
  • 오늘 정한 우선순위가 Part 6 스킬의 초안이 됩니다.

클립이 끝나면 리포트에서 1~2순위만 골라 정리합니다. 그 파일을 Part 6에서 다시 꺼내 씁니다.


먼저 알아둘 것

Agent Teams는 클로드코드 자체 기능입니다

먼저 구분해야 합니다. kkirikkiri가 팀 기능을 새로 만든 것은 아닙니다. 클로드코드 안에 Agent Teams라는 기능이 있고, kkirikkiri는 그 기능을 쓰기 쉽게 감싼 스킬입니다.

docs-guide로 공식 정의를 가져오면 이런 설명이 나옵니다.

"Coordinate multiple Claude Code instances working together as a team,
 with shared tasks, inter-agent messaging, and centralized management."

→ 여러 클로드코드 인스턴스를 팀으로 묶어 공유 태스크, 메시지,
   중앙 관리로 협업하게 하는 기능.

동작은 네 가지로 보면 됩니다.

  • Team Lead: 메인 세션이 팀을 만들고 작업을 나눕니다.
  • 독립 팀원들: 각 팀원이 자기 컨텍스트 윈도우를 갖고 움직입니다.
  • 공유 태스크 리스트: 작업 의존성을 관리하고 충돌을 줄입니다.
  • 메시지 시스템: 팀원 사이의 전달 내용을 자동으로 이어줍니다.

Agent Teams를 쓰려면 ~/.claude/settings.json에 환경변수 한 줄을 넣고 클로드코드를 다시 시작해야 합니다. 아직 experimental 상태라, 기능은 쓸 수 있지만 공식 안정화 전 단계로 보면 됩니다.

kkirikkiri는 Agent Teams를 스킬로 감싼 도구입니다

Agent Teams를 직접 쓰려면 요청문을 잘 써야 합니다. 어떤 역할이 필요하고, 누가 무엇을 분석해야 하며, 결과를 어떻게 검증할지까지 직접 설명해야 하니까요.

kkirikkiri는 그 과정을 줄여줍니다.

  • 호출: 직접 요청문을 길게 쓰는 대신 /kkirikkiri 한 문장으로 시작합니다.
  • 팀 구성: 역할과 페르소나를 직접 정하지 않아도, 인터뷰 2~3개를 거쳐 자동으로 잡아줍니다.
  • 환경 스캔: Codex, Gemini CLI, 기존 에이전트 같은 사용 가능한 도구를 확인합니다.
  • 검증: 결과가 부족하면 최대 3라운드까지 다시 시도합니다.
  • 공유 메모리: .kkirikkiri/ 폴더를 만들고 진행 상황을 저장합니다.
  • 재사용: .claude/agents/에 저장해 다음 프로젝트에서도 꺼내 쓸 수 있습니다.

여기서 “스킬”이라는 단어를 다시 봐야 합니다. Clip 1에서 플러그인 구성요소 중 하나로 다뤘던 그 스킬입니다. 자동화된 작업 흐름이라고 설명했죠.

kkirikkiri를 호출하면 SKILL.md에 적힌 워크플로우가 실행됩니다. 인터뷰하고, 환경을 확인하고, 팀을 만들고, 실행하고, 검증하고, 결과를 저장하는 흐름입니다.

Part 6에서 직접 만들 것도 이와 같은 형태입니다. 본인 작업을 SKILL.md로 정의하고, 자연어 한 문장으로 호출하게 만드는 것. 오늘 실습은 “스킬이 호출되면 실제로 어떻게 움직이는지” 보는 시간이기도 합니다.

팀장은 계획과 검증만 맡습니다

kkirikkiri 팀에서는 팀장이 계획, 배분, 검증을 맡습니다. 기본값은 가장 성능 좋은 모델입니다. 팀장이 직접 결과물을 다 쓰는 구조가 아니라, 각 팀원이 맡은 관점에서 분석하고 팀장이 그 결과를 합칩니다.

이 구조는 Part 6에서도 그대로 참고할 수 있습니다. 메인 세션은 지휘하고, 무거운 분석은 서브 에이전트에게 맡기는 방식입니다.


진행 흐름

1. docs-guide로 Agent Teams 개념 확인

지난 클립에서 쓴 docs-guide를 그대로 사용합니다. 클로드코드 자체 기능이므로 공식 문서를 먼저 보는 게 맞습니다.

/docs-guide:docs-guide Claude Code에서 Agent Teams가 뭐고, 어떻게 동작하는지 알려줘.

답변이 오면 agent-teams-overview.md로 저장합니다.

여기서 잡아야 할 내용은 두 줄입니다. Agent Teams는 여러 클로드코드 인스턴스를 팀으로 묶는 기능입니다. 환경변수로 켜고 자연어로 호출합니다.

2. 환경변수 활성화

kkirikkiri를 쓰려면 Agent Teams 환경변수가 켜져 있어야 합니다. 먼저 점검을 돌립니다.

kkirikkiri 환경 점검해줘.

설정이 빠져 있으면 이런 안내가 나옵니다.

끼리끼리 환경 점검
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

필수 조건:
  ✓ Claude Code 설치됨
  ✗ Agent Teams 환경변수 미설정

    다음을 ~/.claude/settings.json에 추가하세요:
    { "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" } }

~/.claude/settings.json을 열고 환경변수를 추가합니다. 파일이 없으면 새로 만들면 됩니다.

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

저장한 뒤 클로드코드를 다시 시작합니다. 재시작하지 않으면 환경변수가 잡히지 않습니다.

다시 점검하면 두 항목이 모두 통과해야 합니다.

✓ Claude Code 설치됨
✓ Agent Teams 환경변수 설정됨

3. 본인 직무로 kkirikkiri 호출

이제 본 실습입니다. 강사는 코스메틱 브랜드 마케터 예시로 진행하지만, 여러분은 자기 직무를 넣으면 됩니다.

적을 건 두 가지예요. 매주 하는 일 5~7개를 적고, 지금 다가오는 큰 작업 1개를 구체적으로 적습니다.

/kkirikkiri 

나는 코스메틱 브랜드 마케터야.
우리 브랜드는 감성·미감 요소를 강조하는 코스메틱이고,
이번에 SNS 마케팅을 새로 시작하면서 바디 미스트 신제품 캠페인을 기획하려고 해.
인스타그램이 메인 채널이 될 거야.

매주 하는 일들:
1. 신제품 캠페인 기획 (현재 진행 중인 핵심 작업)
2. 벤치마킹할 브랜드 리서치 (감성·미감 지향 코스메틱들)
3. 인스타 콘텐츠 기획·발행 (제품 촬영·스타일링·캡션)
4. 인플루언서·아티스트 협업 검토
5. 캠페인 데이터 정리·보고
6. 고객 리뷰·반응 분석
7. 월간 마케팅 리포트

이 일들에서 병목 진단 + AI 활용 가능 영역 + 우선순위를 받고 싶어.
특히 새로 시작할 SNS 캠페인 방향성에 도움 되도록.

kkirikkiri가 워크플로우를 시작합니다. 중간에 인터뷰 옵션이 두 번 나오면 “디스커버리”와 “제대로”를 고릅니다.

4. 팀 자동 구성과 병렬 실행

옵션을 고르면 kkirikkiri가 입력 내용을 보고 팀을 구성합니다. 같은 명령을 써도 직무와 상황에 따라 팀은 달라집니다.

위 예시라면 대략 이런 구성이 나옵니다.

[팀 자동 구성]
├── 팀장 (Lead, Opus) — 통합·우선순위 판단
├── 브랜드 전략가 (Opus) — 감성·미감 톤 분석, 차별화 포인트
├── SNS 캠페인 기획자 (Opus) — 인스타 캠페인 + 콜라보 검토
├── 데이터 분석가 (Opus) — 리뷰·반응·경쟁 모니터링 영역
└── AI 활용 전문가 (Opus) — 자동화 매핑

팀 구성을 보여주고 “시작할까요?”라고 물으면 이렇게 답합니다.

네, 시작해주세요

이후 5~7분 정도 병렬 실행이 진행됩니다. 여러 관점의 분석이 동시에 돌아가므로 조금 기다리면 됩니다.

✓ 브랜드 전략가 분석 중
✓ SNS 캠페인 기획자 분석 중
✓ 데이터 분석가 분석 중
✓ AI 활용 전문가 분석 중
✓ 팀장 결과 통합 중

1라운드 결과가 충분하면 검증을 통과하고 끝납니다. 부족하면 팀을 다시 구성해 최대 3라운드까지 보완합니다.

5. 리포트 읽기

리포트는 .kkirikkiri/reports/discovery-report.md에 저장됩니다. 예시 결과는 이런 식입니다.

[병목 진단]
- 벤치마킹 리서치 — 매주 8시간, 수동 사이트 방문·캡처·정리
- 인스타 콘텐츠 기획 — 캡션·해시태그 매번 처음부터 작성
- 캠페인 데이터 정리 — 인사이트 추출보다 데이터 모으기에 시간 더 씀
- 고객 리뷰 분석 — 양 많아 핵심 패턴 놓침

[AI 활용 가능 영역]
- 벤치마킹 자동 수집·요약 (매우 높음) — 매주 8시간 → 1시간
- 인스타 캡션·해시태그 초안 자동 생성 (높음)
- 캠페인 데이터 자동 집계 + 인사이트 추출 (높음)
- 고객 리뷰 감성·키워드 분석 자동화 (중간)

[새 캠페인 방향성 — 다관점 통합]
- 브랜드 전략가: 감성·미감 톤은 "한 컷의 작품" 같은 비주얼이 핵심
- SNS 캠페인 기획자: 아티스트 콜라보 + 한정판 비주얼 시리즈 추천
- 데이터 분석가: 경쟁 브랜드 콜라보 효과 평균 3배 이상
- AI 활용: 콜라보 작가·아티스트 후보 자동 리서치로 시간 절감

[우선순위]
1순위: 벤치마킹 자동 리서치 — 주 7시간 절감
2순위: 인스타 캡션·해시태그 초안 자동 생성
3순위: 캠페인 데이터 자동 집계

혼자 보면 놓치기 쉬운 부분이 여기서 잡힙니다. 예를 들어 “수집과 정리에 시간이 너무 많이 간다”는 진단은 당사자일수록 잘 못 봅니다. 여러 관점이 붙으면 그런 병목이 더 또렷하게 드러납니다.

6. 1~2순위 정리하기

리포트를 받았으면 마지막으로 우선순위 중 1~2개만 고릅니다. Part 6에서 실제로 스킬로 만들 후보입니다.

방금 받은 리포트의 우선순위 1-2개만 골라서, 
이걸 클로드코드 스킬로 만들면 어떻게 동작할지 한 줄씩 정리해줘.

결과는 이렇게 정리할 수 있습니다.

1순위: 벤치마킹 자동 리서치 스킬
→ 브랜드 URL 목록 + 키워드 입력 → 매주 변경사항·신캠페인 자동 수집 → 요약 리포트

2순위: 인스타 캡션·해시태그 초안 생성 스킬
→ 제품 정보 + 톤·키워드 입력 → 캡션 3안 + 해시태그 세트 자동 생성

이 내용을 priority-summary.md로 저장합니다. Part 6을 시작할 때 이 파일을 보고 바로 스킬 제작으로 넘어갑니다.


결과물

작업 폴더는 50-my-work/Part04-강화하기/실습16-AI팀구성/입니다. 파일 세 개와 공유 메모리 디렉토리 하나가 남습니다.

실습16-AI팀구성/
├── agent-teams-overview.md     # docs-guide로 받은 Agent Teams 공식 정리
├── discovery-report.md         # kkirikkiri 다관점 분석 리포트
├── priority-summary.md         # 1~2순위 정리 (Part 6 청사진)
├── .kkirikkiri/                # 공유 메모리
│   ├── TEAM_PLAN.md
│   ├── TEAM_PROGRESS.md
│   └── TEAM_FINDINGS.md
└── README.md                   # 실습 메타 + 회고

완료 또는 /wrap을 입력하면 progress.json의 priorities_for_part06 키에 1~2순위가 기록됩니다. Part 6에서 자동으로 불러오므로 따로 복사할 필요는 없습니다.


자주 막히는 포인트

  • /kkirikkiri가 인식되지 않음: Clip 1에서 설치가 빠졌을 수 있습니다. /plugin의 Installed 탭을 확인하고 다시 설치합니다.
  • 환경변수가 잡히지 않음: settings.json 저장 후 클로드코드를 다시 시작해야 합니다.
  • ~/.claude/settings.json 위치를 모름: 홈 디렉토리의 .claude 폴더 안에 있습니다. 파일이 없으면 새로 만들 수 있습니다. JSON 문법만 조심하면 됩니다.
  • docs-guide가 Agent Teams 페이지를 못 가져옴: URL 변경이나 일시 장애일 수 있습니다. 이때는 클로드코드에서 일반 검색으로 확인합니다.
  • 인터뷰 옵션이 헷갈림: 처음에는 “디스커버리”와 “제대로”만 고르면 됩니다.
  • 팀 구성이 영상과 다름: 정상입니다. 입력한 직무와 작업 내용에 맞춰 매번 달라집니다.
  • 병렬 실행이 5분 이상 걸림: 여러 에이전트가 동시에 분석하는 과정이라 시간이 걸릴 수 있습니다.
  • 리포트가 두루뭉술함: 직무 설명이 너무 넓어서 그렇습니다. “마케터”보다 “스타트업 코스메틱 마케터, 바디 미스트 신제품 캠페인 기획”처럼 적습니다.
  • 우선순위 결정이 어려움: 주 4시간 이상 줄일 수 있는 일, 그리고 본인이 바로 써볼 자신이 있는 일을 먼저 고릅니다.
  • .kkirikkiri/ 폴더 위치를 모름: 워크스페이스 루트에 자동 생성됩니다. 다른 작업에는 영향을 주지 않습니다.
  • 내 직무가 마케터가 아님: 문제없습니다. 영업, 기획, HR, 일반 사무직도 같은 흐름으로 진행합니다. 매주 하는 일과 다가오는 핵심 작업만 구체적으로 쓰면 됩니다.

다음 클립

→ Part 4 / Clip 4: 바선생(vibe-sunsang) — 내 AI 활용 점검받기

다음은 Part 4 마지막 클립입니다. 지금까지 클로드코드를 어떻게 써왔는지 외부 시선으로 점검받습니다. 오늘 고른 1~2순위와 다음 클립에서 나올 보완 영역까지 합치면, Part 5를 시작할 때 무엇을 먼저 해야 할지 더 분명해집니다.

vibe-sunsang

내 AI 활용 점검받기

Part 4 · Clip 4

이 클립에서 만드는 것

Part 2부터 여기까지 오면서 클로드코드와 꽤 많은 대화를 나눴을 겁니다. 그 대화는 자동으로 ~/.claude/projects/에 JSONL 형식으로 저장됩니다. 평소에는 거의 볼 일이 없는 폴더지만, 여기에 내가 클로드코드를 어떻게 써왔는지 기록이 남아 있습니다.

바선생(vibe-sunsang)은 그 기록을 읽고 사용 패턴을 점검합니다. 작업 분해, 검증, 오케스트레이션, 실패 복구, 컨텍스트 제공, 메타 인지까지 6개 축으로 점수를 매기고 강점과 약점을 짚어줍니다. Part 5에 들어가기 전에 보완하면 좋은 영역도 1~2개로 추립니다.

이 클립은 Part 4의 마지막입니다. 단순히 “잘 썼는지” 확인하는 시간이 아닙니다. 여기서 받은 진단이 Part 5에서 어느 클립을 더 신경 써야 할지 알려주는 기준이 됩니다.

BeforeAfter
내가 클로드코드를 잘 쓰고 있는지 감으로만 안다6축 점수로 강점과 약점이 보인다
Part 5에서 뭘 더 봐야 할지 막연하다보완 영역이 Part 5 클립 가이드가 된다
같은 실수를 반복한다안티패턴 1~3개를 알고 시작한다

시연은 시작 → 변환 → 멘토링 순서로 진행합니다. 진단 결과가 강사와 다르게 나와도 괜찮습니다. 본인 사용 기록을 기준으로 보기 때문에 당연히 다르게 나옵니다.


핵심 개념

클로드코드는 모든 대화를 자동으로 저장합니다

클로드코드는 별도 설정 없이도 세션 대화를 ~/.claude/projects/ 안에 JSONL 파일로 저장합니다. 프로젝트별로 폴더가 나뉘고, 세션마다 파일 하나가 쌓입니다. 바선생은 이 파일들을 읽어서 분석합니다.

새로 기록을 만드는 게 아닙니다. 이미 쌓여 있는 기록을 분석에 쓰는 방식입니다. 그래서 Part 2부터 진행한 작업이 그대로 분석 대상이 됩니다.

6축은 “무엇을 만들었나”보다 “어떻게 만들었나”를 봅니다

진단 기준은 결과물의 양이 아닙니다. 같은 결과물을 만들었더라도 요청을 어떻게 나눴는지, 받은 결과를 어떻게 확인했는지, 막혔을 때 어떻게 다시 풀었는지가 더 중요합니다.

축측정 내용
DECOMP (작업 분해)큰 일을 작은 단위로 쪼개서 요청하는지
VERIFY (검증)받은 결과를 제대로 확인하는지
ORCH (오케스트레이션)도구와 에이전트를 조합해서 쓰는지
FAIL (실패 복구)막혔을 때 다시 풀어가는지
CTX (컨텍스트 제공)배경, 제약, 예시를 충분히 주는지
META (메타 인지)본인 사용 패턴을 스스로 인식하는지

각 축은 0.5 단위 7단계(L1~L7)로 진단됩니다. 점수는 절대 평가가 아니라 현재 상태를 보는 기준입니다. “L3.5보다 L4가 더 높다”는 비교는 가능하지만, “L3.5라서 부족하다”는 식으로 받아들일 필요는 없습니다. 학습 과정에서 단계가 올라가는 구조입니다.

워크스페이스 유형에 따라 가중치가 달라집니다

같은 사용 패턴이라도 주로 하는 일에 따라 중요도가 달라집니다. 바선생은 워크스페이스를 네 가지로 나눕니다.

유형어떤 사람?
Builder코딩으로 결과물을 만드는 사람 (DECOMP·VERIFY 가중)
Explorer리서치·분석 중심 (FAIL·CTX·META 가중)
Designer기획·디자인 중심 (CTX·META 가중)
Operator자동화·운영 중심 (ORCH·FAIL 가중)

분류는 시작 단계에서 자동으로 됩니다. 직접 고르지 않아도 됩니다.


진행 흐름

1. /vibe-sunsang 시작 — 워크스페이스 한 번 설정

처음 한 번만 워크스페이스를 만들면 됩니다. 이후에는 다시 만들 필요가 없습니다.

/vibe-sunsang 시작

이 명령을 입력하면 바선생이 사용자 홈에 워크스페이스를 만들고 클로드코드 세션 기록을 스캔합니다.

✓ 워크스페이스 생성: ~/vibe-sunsang/
✓ 프로젝트 스캔: ~/.claude/projects/
✓ 발견된 프로젝트에 이름 부여
✓ 워크스페이스 유형 분류 (Builder / Explorer / Designer / Operator)
✓ JSONL 로그 → Markdown 첫 변환 완료

권한 요청이 뜨면 y로 진행합니다. 작업은 본인 컴퓨터 안에서만 일어나고, 외부로 데이터를 보내지 않습니다.

2. /vibe-sunsang 변환 — 대화 로그를 분석용으로 바꾸기

세션 로그는 JSONL이라 사람이 읽기 어렵습니다. 변환 명령을 내리면 마크다운으로 바꿔서 ~/vibe-sunsang/conversations/에 저장합니다.

/vibe-sunsang 변환

처음 변환할 때는 시간이 조금 걸릴 수 있습니다. Part 2부터 쌓인 세션이 N개 있기 때문입니다. 변환된 파일이 많아 보여도 자동으로 정리되니 그대로 두면 됩니다.

✓ 클로드코드 세션 로그 스캔
✓ 변환 대상: 약 N개 세션
✓ 마크다운 변환 완료: ~/vibe-sunsang/conversations/

3. /vibe-sunsang 멘토링 — 6축 분석 실행

이제 본 분석을 실행합니다.

/vibe-sunsang 멘토링

growth-analyst라는 서브 에이전트가 변환된 로그를 읽고 6축 점수를 매깁니다. 보통 2~3분 정도 걸립니다.

✓ 요청 품질 분석 (DECOMP)
✓ 검증 패턴 분석 (VERIFY)
✓ 도구·에이전트 활용 분석 (ORCH)
✓ 실패·복구 패턴 분석 (FAIL)
✓ 컨텍스트 제공 분석 (CTX)
✓ 메타 인지 분석 (META)
✓ 다음 한 걸음 추천
✓ 진단 리포트 생성: ~/vibe-sunsang/reports/mentor-2026-05-05.md

서브 에이전트에 맡기는 이유는 메인 컨텍스트를 보호하기 위해서입니다. 클로드코드와 진행하던 다른 작업이 있어도 이 분석과 섞이지 않습니다.

4. 받은 리포트에서 핵심만 정리

리포트는 길게 나올 수 있습니다. 핵심만 추려달라고 한 번 더 요청합니다.

방금 받은 멘토링 리포트 핵심만 정리해줘.
- 6축 레벨
- 가장 두드러진 강점·약점 각 1개
- 발견된 안티패턴
- Part 05 시작 전 보완할 영역

정리 결과는 이런 형태입니다.

[6축 레벨]
- DECOMP (작업 분해)  : Lv 3.5
- VERIFY (검증)        : Lv 2.5
- ORCH (오케스트레이션): Lv 3.0
- FAIL (실패 복구)     : Lv 3.5
- CTX (컨텍스트 제공)  : Lv 3.0
- META (메타 인지)     : Lv 4.0

[강점]
- 단계별로 나눠서 요청하는 패턴이 안정적 (DECOMP 강함)

[약점]
- 결과 검증이 약함 — "되는지 확인" 이후 깊이 있는 검증 부족 (VERIFY)

[발견된 안티패턴]
- "그냥 다 알아서 해줘" 류 모호한 요청 (3회 검출)
- 결과 받고 바로 다음 진행 (검증 스킵)

[Part 05 시작 전 보완할 영역]
1순위: CLAUDE.md 작성법 — CTX 약점 보완
2순위: Hook 활용법 — VERIFY 자동화

이 정리를 mentor-report.md로 저장합니다. 6축 의미가 헷갈리면 /vibe-sunsang 지식 명령으로 각 축의 측정 기준을 다시 확인할 수 있습니다.

5. Part 5 보완 영역 매핑

마지막으로, 받은 보완 영역을 Part 5의 어느 클립에서 챙길지 연결합니다.

받은 보완 영역 1-2개를 Part 05의 어떤 클립에서 집중적으로 챙겨야 할지
한 줄씩 정리해줘.

예시는 다음과 같습니다.

1순위: CLAUDE.md 작성법 (CTX 약점 보완)
→ Part 05 실습 18 (CLAUDE.md — AI에게 업무 매뉴얼 쓰기)에서 집중

2순위: Hook 활용법 (VERIFY 자동화)
→ Part 05 실습 21 (Hook — 자동화의 방아쇠 설정하기)에서 집중

이 내용은 priorities-for-part05.md로 저장합니다. progress.json에도 자동 기록되기 때문에 Part 5를 시작할 때 다시 불러올 수 있습니다.


결과물

결과물 폴더는 50-my-work/Part04-강화하기/실습17-AI활용점검/입니다. 여기서는 진단 리포트와 Part 5 우선순위 정리가 가장 중요합니다.

실습17-AI활용점검/
├── mentor-report.md            # 6축 레벨 + 강점·약점 + 안티패턴
├── priorities-for-part05.md    # Part 5 클립별 집중 영역
└── README.md                   # 실습 메타 + 회고

~/vibe-sunsang/
├── conversations/              # 변환된 대화 로그 (보관)
└── reports/                    # 멘토링 리포트 원본

완료 또는 /wrap을 입력하면 progress.json에 다음 정보가 기록됩니다.

키내용
practice_completed"실습 17" 추가
current_levels6축 레벨
priorities_for_part05보완 영역 1~2개
completed_parts"Part 04" 추가

자주 막히는 포인트

증상원인해결
/vibe-sunsang 호출 시 인식 안 됨Clip 1에서 설치 안 됨/plugin Installed 탭 확인 → 재설치
/vibe-sunsang 시작 중간에 멈춤워크스페이스 권한 요청"권한 요청 와도 Y로 진행해줘" 한 줄 추가
변환 결과가 너무 적음Part 2~4 로그 부족정상입니다. 자유 실습을 더 한 뒤 다시 변환하면 됩니다
멘토링 결과가 두루뭉술함로그 양 부족더 사용한 뒤 재시도합니다. 강사 시연 결과로 흐름만 봐도 됩니다
6축 의미가 헷갈림v2 시스템이 처음이라 낯섦/vibe-sunsang 지식으로 각 축 설명 확인
보완 영역이 5개 이상 나옴분석 범위가 넓음"1~2개만 추려달라"고 다시 요청
6축 점수가 낮아서 위축됨절대 평가로 받아들임점수는 학습 곡선입니다. 강점과 약점을 파악하는 데만 씁니다
~/vibe-sunsang/ 폴더 위치를 모르겠음워크스페이스 경로 확인 필요사용자 홈 디렉토리 안에 있습니다. 다른 작업에는 영향 없습니다
6축 점수가 강사와 다름본인 사용 패턴이 반영됨정상입니다. 강사 점수와 비교하지 말고 본인 강점과 약점만 봅니다

다음 클립

Part 4 마무리

여기까지가 Part 4입니다. 네 개 클립에서 한 일은 이렇습니다.

Clip했던 일
1마켓플레이스 추가 + 플러그인 3개 설치
2docs-guide로 공식 문서 정확히 읽는 법
3kkirikkiri로 다관점 진단 + Part 6 청사진 1~2순위
4바선생으로 본인 사용 패턴 진단 + Part 5 보완 영역 1~2개

Part 4의 주제는 “도움 받기”였습니다. Part 3까지는 직접 만드는 쪽에 가까웠다면, Part 4에서는 다른 사람이 만들어둔 플러그인을 가져와서 써봤습니다. Part 5부터는 한 단계 더 들어갑니다. 클로드코드가 어떤 구성요소로 움직이는지 뜯어보고, 그 안에 본인 자산인 커맨드, 에이전트, MCP, Hook을 직접 넣어봅니다.

받은 보완 영역 1~2개는 챙겨두세요. Part 5 시작 화면에서 다시 불러옵니다.

다음 클립

→ Part 5 / Clip 1: CLAUDE.md — AI에게 업무 매뉴얼 쓰기 — Part 5 첫 클립입니다.

다음 클립에서는 별도의 학습 워크스페이스를 받아 /init으로 CLAUDE.md를 만들어봅니다. 클로드코드가 매번 처음부터 사용자를 알아가게 두지 않고, 한 번 적어두면 계속 참고하는 매뉴얼을 함께 작성합니다.

CLAUDE.md

AI에게 업무 매뉴얼 쓰기

Part 5 · Clip 1

이 클립에서 만드는 것

지금까지 강의 워크스페이스에서 실습을 해왔습니다. 돌아보면 이상할 정도로 자동으로 처리된 것들이 많았죠. 클립을 끝내고 완료만 입력하면 다음 클립이 안내됐고, 진도도 자동으로 체크됐습니다. 새 실습을 시작하면 결과물 폴더가 생기고, 필요한 파일도 준비돼 있었습니다. 답변은 늘 한국어로 나왔고, 결과물은 정해진 위치에 저장됐고요.

이 동작은 대부분 CLAUDE.md라는 파일에서 시작됩니다. 워크스페이스 루트에 놓는 마크다운 파일입니다. 클로드코드는 새 세션을 열 때 이 파일을 읽고, 거기에 적힌 규칙을 작업 기준으로 삼습니다.

오늘은 본인 학습 워크스페이스용 CLAUDE.md를 만듭니다. 강의 워크스페이스에 있는 파일은 강의 진행용이라 건드리지 않습니다. 별도로 받은 공부용 워크스페이스 안에 내 규칙 파일을 작성합니다.

작업 전과 후의 차이는 이렇습니다.

  • 새 세션마다 직업, 답변 스타일, 저장 위치를 다시 말하지 않아도 됩니다.
  • 강의 워크스페이스가 왜 자동으로 한국어 답변과 결과물 저장을 처리했는지 직접 확인합니다.
  • 강의가 끝난 뒤에도 my-cc-study/ 폴더를 본인 공부방으로 계속 쓸 수 있습니다.

이번 클립에서 할 일은 두 가지입니다. 먼저 강의 워크스페이스의 실제 CLAUDE.md를 열어 동작 방식을 확인합니다. 그다음 본인 학습 워크스페이스에 직접 CLAUDE.md를 한 장 작성합니다.


핵심 개념

CLAUDE.md는 워크스페이스 약속 노트입니다

CLAUDE.md는 “이 폴더에서 일할 때는 이렇게 해”라고 적어두는 매뉴얼입니다. 클로드코드가 새 세션을 시작할 때마다 자동으로 읽기 때문에, 같은 지시를 매번 다시 입력할 필요가 없습니다.

둘 수 있는 위치는 두 곳입니다.

  • ./CLAUDE.md — 현재 워크스페이스에서만 적용됩니다.
  • ~/.claude/CLAUDE.md — 모든 워크스페이스에 적용됩니다.

오늘은 워크스페이스 루트에 둡니다. 경로는 my-cc-study/CLAUDE.md입니다. 이 파일이 있으면 my-cc-study 안에서 클로드코드를 켤 때마다 자동으로 적용됩니다.

강의 워크스페이스 CLAUDE.md의 3섹션

본인 파일을 만들기 전에 잘 만든 예시를 먼저 봅니다. 강의 워크스페이스 루트에 있는 CLAUDE.md를 안티그래비티 에디터에서 열어보세요. 읽기만 합니다. 이 파일을 수정하면 강의 진행이 꼬일 수 있습니다.

여기서는 세 부분만 보면 됩니다.

첫 번째는 기본 규칙입니다.

- 모든 답변은 한글로 합니다
- 전문 용어는 쉬운 말로 풀어서 설명합니다
- 결과물은 눈에 보이는 형태로 만듭니다

강의 내내 한국어 답변이 나오고, 결과물이 눈에 보이는 형태로 만들어진 이유가 여기에 있습니다. 따로 말하지 않아도 매 세션에 적용됐던 규칙입니다.

두 번째는 자연어 트리거입니다.

| `막혔어요` | `/stuck` | 에러/문제 진단 |

“막혔어요”라고 입력하면 /stuck 명령이 실행됐던 것, 기억나실 겁니다. 자연어 표현을 슬래시 명령에 연결해둔 방식입니다.

세 번째는 결과물 저장 규칙입니다.

모든 실습 결과는 50-my-work/Part{NN}-제목/실습{NN}-제목/에 저장합니다.

AI가 폴더를 만들고 결과물을 저장했던 것도 이 규칙 때문입니다. 매번 “어디에 저장해줘”라고 덧붙이지 않아도 됐죠.

이 세 가지가 CLAUDE.md의 기본 뼈대입니다. 기본 규칙, 자연어 트리거, 저장 규칙. 본인 파일도 이 구조를 따라가면 됩니다.

두 워크스페이스 역할 분리

Part 5부터는 워크스페이스가 두 개입니다.

  • 강의 워크스페이스 — ~/fastcampus-cc/
    강의 진행용입니다. CLAUDE.md나 스킬 파일을 수정하지 않습니다.

  • 학습 워크스페이스 — ~/fastcampus-cc/50-my-work/Part05-뜯어보기/my-cc-study/
    본인 공부용입니다. 여기에는 자유롭게 파일을 만들고 수정해도 됩니다.

헷갈리기 쉬운 지점입니다. 강의 워크스페이스는 수업 진행 장치가 들어 있는 곳이고, 학습 워크스페이스는 내 작업 공간입니다. 본인 자산은 my-cc-study/ 안에 만듭니다.


진행 흐름

1. /part05 스킬 호출 → 학습 워크스페이스 준비

안티그래비티에 강의 워크스페이스가 열려 있고, 클로드코드도 실행된 상태에서 시작합니다.

/part05

스킬이 진도를 확인한 뒤 클립 선택지를 띄웁니다. 여기서 Clip 1을 선택합니다.

학습 워크스페이스는 스킬이 준비합니다. cp -r 같은 명령을 직접 입력하지 않아도 됩니다.

✓ ~/fastcampus-cc/50-my-work/Part05-뜯어보기/my-cc-study/ 시드 복사 완료
✓ 50-my-work/Part05-뜯어보기/실습18-CLAUDEmd/ 진도 폴더 준비 완료
README.md  10-curriculum/  20-concepts/  30-resources/  40-ideas/  sandbox/

여기서 CLAUDE.md만 빠져 있습니다. 실수로 빠진 게 아닙니다. 이번 클립에서 직접 만들 파일이라 일부러 비워둔 상태입니다.

2. 강의 워크스페이스 CLAUDE.md 보기

작업에 들어가기 전에 예시부터 확인합니다. 안티그래비티 에디터에서 강의 워크스페이스 루트의 CLAUDE.md를 여세요. 위에서 본 기본 규칙, 자연어 트리거, 결과물 저장 규칙이 실제로 어떻게 적혀 있는지 봅니다.

다시 말하지만, 이 파일은 읽고 닫습니다. 수정하지 않습니다.

3. 새 창에서 학습 워크스페이스 열기

이제 학습 워크스페이스로 이동합니다. 안티그래비티에서 새 창을 열고, Open Folder로 아래 폴더를 선택합니다.

~/fastcampus-cc/50-my-work/Part05-뜯어보기/my-cc-study/

새 창이 뜨면 안티그래비티 통합 터미널에서 확인합니다.

ls

README.md, 10-curriculum/, 20-concepts/, 30-resources/, 40-ideas/, sandbox/가 보이면 정상입니다. 아직 CLAUDE.md는 없어야 합니다.

4. /init으로 CLAUDE.md 초안 만들기

학습 워크스페이스 안에서 클로드코드를 실행합니다.

claude

여기는 강의 워크스페이스와 분리된 새 세션입니다. 클로드코드가 시작되면 /init을 입력합니다.

/init

클로드코드가 1분 정도 폴더를 살펴봅니다. “학습 노트 / 자료 / 아이디어 정리 워크스페이스로 보입니다”처럼 현재 폴더를 해석하고, CLAUDE.md 초안을 제안합니다. 그대로 저장하면 됩니다.

안티그래비티 에디터로 돌아와 새로 생긴 CLAUDE.md를 열어보세요. 폴더 구조를 바탕으로 만든 초안이 들어 있을 겁니다. 다만 이 초안은 폴더만 보고 만든 것이므로, 아직 “내 작업 방식”까지 담겼다고 보기는 어렵습니다.

5. 인터뷰로 본인 맥락 넣기

학습 워크스페이스의 클로드코드 세션에서 이렇게 요청합니다.

내가 클로드코드 공부하는 사람이라는 맥락이 더 반영되도록
CLAUDE.md를 인터뷰로 보완해줘.

한 번에 하나씩 5개 질문 후 종료.
- 내 직업/배경
- 답변 스타일 선호 (쉬운 말? 예시 많이?)
- 결과물 포맷 선호 (표/리스트/문서)
- 자주 다룰 주제
- 피해야 할 것

질문은 하나씩 옵니다. 답변은 길 필요 없습니다.

  • 직업/배경 — 본인 직업을 한 줄로 답합니다. 가상 프로필도 괜찮습니다. 예: 마케팅 기획자, 콘텐츠 운영자, 직장인.
  • 답변 스타일 — 존댓말, 쉬운 말, 예시를 많이 드는 방식처럼 선호를 말합니다.
  • 결과물 포맷 — 표, 리스트, 문서, 3줄 요약 등 자주 쓰는 형태를 답합니다.
  • 자주 다룰 주제 — 본인 업무나 관심 분야를 적습니다.
  • 피해야 할 것 — 너무 긴 답변, 영어 전문 용어 남발, 모호한 설명처럼 싫은 방식을 말합니다.

다섯 개에 모두 답하면 클로드코드가 CLAUDE.md를 다듬어 저장합니다. 안티그래비티에서 다시 열어 바뀐 내용을 확인하세요.

6. 새 세션에서 동작 확인하기

마지막으로 실제로 반영되는지 확인합니다. 클로드코드를 한 번 종료하고 다시 켭니다.

exit
claude

새 세션이 시작되면 같은 질문을 던져봅니다.

클로드코드를 더 공부하려면 뭐부터 보면 좋을까?

인터뷰에서 답한 직업, 답변 스타일, 자주 다룰 주제가 응답에 반영되어야 합니다. 질문은 같아도 답이 달라집니다. CLAUDE.md는 바로 이 차이를 만들기 위해 쓰는 파일입니다.


결과물

이번 클립이 끝나면 세 가지가 남습니다.

  • my-cc-study/CLAUDE.md — 오늘 직접 만든 본인 맞춤 업무 매뉴얼입니다.
  • 실습18-CLAUDEmd/README.md — 스킬이 자동으로 만든 진도 메타 파일입니다.
  • Before/After 응답 비교 — 학습 워크스페이스 세션에서 CLAUDE.md 적용 전후 차이를 확인한 기록입니다.

강의 워크스페이스로 돌아와 완료 또는 /wrap을 입력하면 스킬이 정리합니다. progress.json에는 my_cc_study_initialized=true가 기록되고, 다음 클립이 안내됩니다.

my-cc-study/는 강의가 끝난 뒤에도 그대로 둡니다. 다음에 안티그래비티에서 이 폴더를 열고 claude를 실행하면, 오늘 만든 CLAUDE.md가 적용된 상태로 바로 시작할 수 있습니다.


자주 막히는 포인트

  • /part05가 실행되지 않음 — 강의 워크스페이스 밖에서 호출했을 가능성이 큽니다. 안티그래비티에서 ~/fastcampus-cc/를 열고 클로드코드를 실행하세요.
  • 학습 워크스페이스가 이미 있음 — 이전 시도 흔적입니다. 스킬이 .bak.YYYYMMDD-HHMMSS 형식으로 백업하므로 그대로 진행하면 됩니다.
  • /init 결과가 영어로 나옴 — 클로드코드 기본값 때문일 수 있습니다. 한국어로 다시 써줘라고 입력하세요.
  • /init이 먹지 않음 — 클로드코드 버전이 낮을 수 있습니다. claude --version으로 확인한 뒤 업데이트합니다.
  • 인터뷰가 2~3개 질문만 하고 끝남 — 요청을 짧게 해석한 경우입니다. 5개 질문을 모두 채워줘라고 다시 요청하세요.
  • Before/After 차이가 거의 없음 — CLAUDE.md 내용이 너무 넓게 적혔을 수 있습니다. 내 직업과 자주 하는 작업에 맞게 더 구체적으로 다듬어줘라고 요청합니다.
  • 인터뷰 답변에 개인정보가 걱정됨 — 가상 프로필로 답해도 됩니다. 민감 정보는 빼고 작성해줘라고 함께 말하세요.
  • 안티그래비티 새 창을 여는 방법을 모르겠음 — File > New Window를 사용합니다. 폴더는 File > Open Folder로 엽니다.
  • 강의 워크스페이스 CLAUDE.md를 수정해버림 — 강의 파일과 본인 파일을 헷갈린 경우입니다. 강의 파일은 git에서 복원하고, 본인 파일은 학습 워크스페이스에 만듭니다.

다음 클립

→ Part 5 / Clip 2: 커맨드 & 서브에이전트 — 스킬의 재료들 알아보기

다음 클립에서는 강의 워크스페이스의 /stuck 같은 커맨드가 어떻게 만들어졌는지 뜯어봅니다. 그다음 본인 커맨드와 서브에이전트를 직접 만들어 봅니다.

커맨드 & 서브에이전트

스킬의 재료들 알아보기

Part 5 · Clip 2

🎯 이 클립에서 만드는 것

Part 4에서 /docs-guide, /kkirikkiri 써보셨죠. /로 부르는 그게 커맨드예요. 그런데 그 안에서 여러 명이 토론하듯이 일하던 것 — 그게 서브에이전트고요. 이 둘이 어떻게 만들어지는지, 오늘 직접 만들어봅니다.

먼저 큰 그림 하나만 잡고 가요. 클로드코드를 키우는 자산은 세 가지 가족입니다.

자산비유한 줄
커맨드매크로자주 치는 긴 프롬프트를 /이름 한 줄로
서브에이전트전문가특정 분야 전담 직원 — 자동 위임
스킬매뉴얼작업 절차서 — 여러 단계 자동화 (Part 6에서 제대로 제작)

오늘은 그중 두 개를 만듭니다. 커맨드 하나 + 서브에이전트 하나. 매뉴얼(스킬)은 Part 6에서 따로 만들어요.

자산 위치 안내: 오늘 만드는 커맨드와 서브에이전트는 학습 워크스페이스(my-cc-study/.claude/commands/, agents/) 안에 만듭니다. 강의 워크스페이스(~/fastcampus-cc/) 쪽은 강사가 관리하는 자산이라 손대지 않아요. 클로드코드를 어디서 켜느냐에 따라 어느 폴더의 자산을 보는지 달라지니, 항상 학습 워크스페이스 안에서 실습 진행해주세요.

BeforeAfter
슬래시 커맨드가 마법처럼 동작하는 것처럼 보임마크다운 파일 1장에 frontmatter + 본문 + $ARGUMENTS만 있으면 됨을 직접 확인
서브에이전트가 뭐가 다른지 헷갈림자연어로 자동 위임 + 별도 컨텍스트 분리를 실제로 체감
Part 6에서 만들 스킬이 어떤 재료로 구성되는지 막연함두 재료(커맨드 + 서브에이전트)를 직접 만져봐서 Part 6 청사진이 잡힘

만들 자산 두 개는 본인 공부 흐름에 바로 쓰는 친구들이에요.

  • /study-progress — 진도 보고서를 자동으로 정리해주는 슬래시 커맨드
  • practice-coach — 본인 실습 결과물을 평가하는 학습 코치 서브에이전트

둘 다 Part 6, 7 끝까지 계속 쓰고, 강의 끝나도 본인 업무에 응용 가능합니다.


💡 핵심 개념

슬래시 커맨드는 마크다운 파일 한 장입니다

먼저 강의 워크스페이스에 이미 있는 /stuck 커맨드를 봅니다. 안티그래비티 에디터에서 ~/fastcampus-cc/.claude/commands/stuck.md를 열어보세요. 안에 든 내용이 이렇게 생겼어요.

---
description: 에러나 문제 상황 진단을 시작합니다. "막혔어요"로 자동 트리거.
---

사용자가 막힌 상황입니다. 다음 순서로 도와주세요:

1. 어떤 에러 메시지인지 정확히 묻기
2. 어떤 동작 후 발생했는지 확인
3. 가능한 원인 3가지 후보 제시
4. 가장 가능성 높은 것부터 시도

$ARGUMENTS

구조가 세 부분으로 나뉘어요.

부분내용
frontmatter (--- 사이)description. 클로드코드가 이 커맨드 언제 쓸지 판단하는 기준
본문AI에게 줄 프롬프트. 평소 채팅창에 입력하던 거랑 똑같음
$ARGUMENTS사용자가 커맨드 뒤에 붙이는 입력 받는 자리

/stuck npm 설치 안 됨이라고 입력하면 $ARGUMENTS가 npm 설치 안 됨으로 치환돼요. 파일명이 곧 커맨드명이라 stuck.md → /stuck이에요.

이 파일은 보기만 하고 닫습니다. 강의 워크스페이스의 자산이라 손대지 않아요.

서브에이전트는 별도 컨텍스트의 전문가입니다

서브에이전트는 한 가지가 더 있습니다. 자동 위임과 컨텍스트 분리예요.

  • 자동 위임: /agent 같은 명시 호출 없이도, 자연어로 "이런 평가해줘"라고 부탁하면 클로드코드가 알아서 적절한 서브에이전트를 발동시킴
  • 컨텍스트 분리: 서브에이전트가 작업할 때는 자기 고유 컨텍스트 윈도우를 따로 쓰기 때문에 메인 대화가 깨끗하게 유지됨

서브에이전트 파일은 .claude/agents/이름.md에 둡니다. 슬래시 커맨드와 거의 같은 구조인데, frontmatter에 필드가 몇 개 더 들어가요.

외부 잘 만든 패턴을 가져다 변형하기

서브에이전트는 직접 처음부터 짜는 것보다 잘 만들어진 거 분석해서 패턴 익히기가 빠릅니다. 이번 클립에서는 agency-agents라는 외부 레포(별 95,000개, 200+ 에이전트)에서 한 명을 골라 패턴을 추출한 다음, 그 틀에 본인 코치를 만들어요. Part 4에서 docs-guide로 공식 문서 가져왔던 그 패턴이 여기서도 똑같이 적용됩니다.


🚶 진행 흐름

1. /part05 호출 → Clip 2 선택

강의 워크스페이스에서 클로드코드를 켜고 시작합니다.

/part05

Clip 2를 선택하면 스킬이 작업 폴더와 학습 워크스페이스 안 자산 폴더를 자동으로 만들어줘요.

✓ 50-my-work/Part05-뜯어보기/실습19-커맨드서브에이전트/ 준비 완료
✓ ~/fastcampus-cc/50-my-work/Part05-뜯어보기/my-cc-study/.claude/{commands,agents}/ 준비 완료

학습 워크스페이스(my-cc-study/) 안에 .claude/commands/와 .claude/agents/ 폴더가 생겼어요. 오늘 만드는 자산은 여기 쌓입니다.

2. 강의 워크스페이스 /stuck 커맨드 뜯어보기

이미 본 그 파일을 한 번 더 짚고 갑니다. 안티그래비티 에디터에서 stuck.md를 열고 세 부분(frontmatter / 본문 / $ARGUMENTS)을 눈으로 확인하세요. 읽기만 하고 닫습니다. 수정 X.

3. /study-progress 커맨드 만들기

이제 본인 거 하나 만들어봅니다. 학습 워크스페이스 안 클로드코드 세션에서 입력합니다.

.claude/commands/study-progress.md 파일 만들어줘.

목적: 이 워크스페이스의 강의 진도를 정리하는 슬래시 커맨드.

동작:
- progress.json을 읽어 완료한 실습 번호와 레벨 확인
- 50-my-work/ 폴더를 스캔해서 만든 결과물 목록 정리
- 다음 형식으로 보고서 출력:
  ## 이번 주 진도
  - 완료한 실습:
  - 만든 결과물:
  - 현재 레벨:
  - 다음 추천:

frontmatter:
- description에 "강의 진도 정리" 키워드 포함

본문 끝에 $ARGUMENTS 자리 마련 — 사용자가 추가 메모 입력할 수 있게.

AI가 이런 파일을 만들어줘요.

---
description: 강의 진도를 정리합니다. progress.json + 50-my-work를 읽어 이번 주 보고서를 만듭니다. "내 진도 정리해줘"로도 발동.
---

이 워크스페이스의 강의 진도를 정리해주세요.

다음 정보를 수집하세요:
1. progress.json을 읽어 completed_parts, practice_completed, level 확인
2. 50-my-work/ 폴더를 스캔해 만든 결과물 목록 확인
3. 가장 최근 작업한 실습 확인

다음 형식으로 보고서를 출력하세요:

## 이번 주 진도
- 완료한 실습: (실습 번호 + 제목)
- 만든 결과물: (파일/폴더 목록)
- 현재 레벨: (AI Starter / Intermediate / Advanced / Native)
- 다음 추천: (커리큘럼 기준 다음 단계)

추가 요청사항: $ARGUMENTS

만들어졌으면 바로 호출해서 동작 확인.

/study-progress

본인 진짜 데이터 기반으로 이런 보고서가 나옵니다.

## 이번 주 진도
- 완료한 실습:
  - 실습 1-13 (Part 02~03)
  - 실습 14-17 (Part 04 강화하기)
  - 실습 18 (Part 05 CLAUDE.md)
- 만든 결과물:
  - charts/ — 데이터 분석 차트 8장
  - vercel-overview-docs.md — docs-guide 답변
  - discovery-report.md — kkirikkiri 진단 리포트
  - CLAUDE.md — 본인 업무 매뉴얼
- 현재 레벨: AI Intermediate (Part 05 진행 중)
- 다음 추천: 실습 19 (커맨드 & 서브에이전트) — 지금 이거 진행 중!

매주 월요일 아침에 한 줄로 한 주 정리 끝나는 거예요. 회사 업무에도 같은 패턴 응용 가능합니다. /weekly-report, /sales-summary, /team-update — 안에 데이터만 바꾸면 똑같은 구조예요.

4. agent-agency 레포 분석 — 서브에이전트 패턴 추출

직접 짜기 전에 잘 만들어진 거 한 명 분석합니다. docs-guide로 외부 파일을 가져와 패턴 뽑아내는 흐름이에요.

/docs-guide:docs-guide 이 서브에이전트 파일의 구조와 패턴 분석해줘:

https://github.com/msitarzewski/agency-agents/blob/main/engineering/engineering-code-reviewer.md

특히 다음을 정리:
1. frontmatter에 어떤 필드들이 있고 각각 무슨 역할인지
2. 본문 섹션 구조 (어떤 순서로 뭐가 들어가는지)
3. 자동 위임이 잘 되도록 description을 어떻게 썼는지

분석 결과가 이런 식으로 나옵니다.

[frontmatter — 5필드 표준]
1. name           — 서브에이전트 식별 이름
2. description    — 자동 위임 판단 기준 ("expert", "feedback" 같은
                   매칭 키워드를 description에 박아둠)
3. color          — UI 표시 색상
4. emoji          — 아이콘
5. vibe           — 톤/스타일 한 줄

[본문 — 5섹션 표준]
1. Identity & Memory   — 정체성 (역할, 성격, 경험)
2. Core Mission        — 핵심 목표 (체크할 것)
3. Critical Rules      — 행동 규칙
4. Review Checklist    — 우선순위 매트릭스
5. Communication Style — 답변 톤

[자동 위임 잘 되는 description 패턴]
- "Expert {분야} who {핵심 동작}, focused on {목표}"
- 자연어 트리거 키워드를 description에 박아두기

분석 결과를 50-my-work/.../agent-agency-pattern.md로 저장합니다.

5. practice-coach 서브에이전트 만들기

이제 추출한 패턴 그대로 본인 코치를 만들어요.

.claude/agents/practice-coach.md 파일 만들어줘.

방금 분석한 engineering-code-reviewer.md 패턴 그대로 따라서:

frontmatter:
- name: practice-coach
- description: Claude Code 강의 실습 결과물을 평가하고 다음 단계를 추천합니다.
              "내 실습 평가해줘", "다음 뭐 해야 해?", "잘하고 있나?" 같은
              요청에 자동 발동.
- tools: Read, Glob
- color: green
- emoji: 🎯
- vibe: Evaluates like a supportive mentor — celebrates wins, points growth
        areas without judgment.

본문 섹션 5개:
1. Identity & Memory — 클로드코드 학습 코치 역할
2. Core Mission — 평가 기준 5가지 (실습 완료도 / 결과물 품질 / 대화 패턴 / 다음 단계 / 격려 포인트)
3. Critical Rules — 잘한 점 먼저 / 구체적 근거 / 다음 단계 명확하게 / 격려 톤
4. Review Checklist — 🔴 핵심 누락 / 🟡 개선 / 💭 보너스
5. Communication Style — 한국어 존댓말, 친근하게, 끝에 다음 행동 1개 제안

파일이 만들어졌으면 진짜로 동작하는지 확인. 여기서 봐야 할 건 직접 호출이 아니라 자연어 자동 위임이에요. /practice-coach라고 안 부르고, 그냥 자연어로 부탁해봅니다.

지금까지 한 실습들 평가해줘. 50-my-work/ 폴더 보고.

클로드코드가 자동으로 practice-coach를 발동시켜요. 별도 컨텍스트에서 작업이 돌아가고, 메인 대화에는 결과 요약만 옵니다.

[practice-coach 활성화]
[Reading 50-my-work/ ...]

🎯 실습 평가 리포트

[잘한 점 ✨]
- Part 03 데이터 분석에서 BUILD 5단계 한 사이클 잘 돌렸어요.
  특히 STEP 5 부분 수정에서 "다른 건 그대로" 명시한 게 ◎
- Part 04 kkirikkiri 시연에서 코스메틱 마케터로 본인 직무 변형
  잘 적용. 우선순위 1-2개도 명확.

[개선 제안 🟡]
- Part 03 보고서 작성 결과물에 README.md가 비어있어요.
  실습 메타정보 (날짜/모드/모델) 채우면 나중에 회고할 때 좋아요.

[다음 단계 →]
다음 클립(20번 — MCP & CLI) 시작 전에 이 리포트 한 번 더
"내 실습 평가해줘"로 호출해서 위 개선 제안 반영했는지 확인.

[격려 한 줄]
17개 실습 완주하셨어요. 절반 넘었습니다. 이 페이스면 Part 06
끝나고 본인만의 스킬 1개는 무조건 나옵니다.

평가 작업이 별도 컨텍스트에서 일어났다는 게 핵심이에요. 메인 대화에는 요약만 돌아오니까 본인 작업이 깨끗하게 유지됩니다.

6. 세 자산 가족 관계 정리

오늘 만든 두 자산과 Part 6에서 만들 스킬을 한 표로 비교합니다.

구분커맨드서브에이전트스킬 (Part 6)
비유매크로전문가매뉴얼
호출 방식/이름 명시자연어 → 자동 위임자연어 → 자동 발동
파일 구조.claude/commands/이름.md (파일 1개).claude/agents/이름.md (파일 1개).claude/skills/이름/SKILL.md (폴더 + 추가 파일)
컨텍스트메인과 같음분리됨메인과 같음 (forked 가능)
오늘 만든 것/study-progresspractice-coach— (Part 6)

셋이 독립적이지만 조합 가능합니다. 스킬 안에서 서브에이전트를 호출할 수도 있고, 서브에이전트가 스킬을 미리 로드할 수도 있어요. "스킬의 구성요소"라기보다 가족 관계라고 보시면 됩니다.


📦 결과물

결과물위치설명
study-progress.mdmy-cc-study/.claude/commands/진도 정리 슬래시 커맨드
practice-coach.mdmy-cc-study/.claude/agents/학습 코치 서브에이전트
agent-agency-pattern.md실습19-커맨드서브에이전트/외부 레포 분석 결과
progress-report.md실습19-커맨드서브에이전트//study-progress 호출 결과
coach-feedback.md실습19-커맨드서브에이전트/practice-coach 자동 위임 결과
README.md실습19-커맨드서브에이전트/실습 메타 + 자산 요약

완료 입력하면 progress.json에 commands_created와 agents_created가 자동 기록돼요. Part 6 시작할 때 자동으로 참고됩니다.


🆘 자주 막히는 포인트

증상원인해결
/study-progress 호출이 인식 안 됨클로드코드 재시작 안 함exit 후 claude 재실행. 슬래시 커맨드는 세션 시작 시 로드
호출은 되는데 보고서가 비어 있음progress.json이나 50-my-work에 데이터 없음정상. 초반엔 비어 있어도 OK
$ARGUMENTS가 작동 안 함대소문자 오타정확히 $ARGUMENTS(대문자)
agent-agency 레포 fetch 실패URL 변경 또는 네트워크docs-guide 일반 검색으로 대체. 또는 강사 시연 자료 참고
practice-coach 자동 위임 안 됨description이 너무 모호"내 실습 평가해줘" 같은 자연어 트리거 키워드를 description에 명시 추가
자동 위임 안 되고 메인에서 처리됨tools 없거나 description 매칭 약함description 강화 + frontmatter에 tools: Read, Glob 명시
평가 리포트가 두루뭉술tools 없어서 파일 못 읽음tools: Read, Glob 확인
본인 직무가 엔지니어가 아님다른 카테고리 적용 가능marketing/, design/, sales/ 등 어디든 OK. 패턴은 동일
자동 위임 vs 직접 호출이 헷갈림처음 사용직접 호출은 @practice-coach 평가해줘, 자동 위임은 그냥 "평가해줘"
영문 이름이 거부감한글 익숙한글도 작동은 하지만 한영 전환이 흐름을 끊음. 표준은 영문 kebab-case

🔗 다음 클립

→ Part 5 / Clip 3: MCP & CLI — 외부 도구 연결하기

다음 클립에서는 외부 도구를 클로드코드에 꽂는 방법을 봅니다. Perplexity, Notion, Gmail 같은 거. 오늘 만든 practice-coach도 외부 데이터를 끌어오면 한층 강력해져요.

MCP & CLI

외부 도구 연결하기

Part 5 · Clip 3

🎯 이 클립에서 만드는 것

지금까지 만든 자산(CLAUDE.md, 커맨드, 서브에이전트)은 다 클로드코드 안에서만 돌아갔어요. 그런데 클로드코드를 진짜 강력하게 만드는 건 외부 도구를 꽂는 순간입니다.

예를 들어 "내 캘린더 일정 확인하고 다음 주 회의 시간 추천해줘" — 이건 클로드코드 혼자 못해요. 구글 캘린더에 접속해야 하니까요. "경쟁사 사이트 5개 비교 분석해줘"도 못해요. 브라우저로 들어가 봐야 하니까. 이번 클립은 그 두 가지를 가능하게 만드는 두 방식을 봅니다.

방식비유한 줄
MCP (Model Context Protocol)AI에 꽂는 소켓외부 서비스를 표준 규격으로 AI가 다루게 함
CLI (Command Line Interface)AI가 직접 호출하는 도구터미널 명령으로 작동하는 도구를 AI가 자연어로 부름

오늘 꽂아볼 두 친구는 이래요. 두 친구의 학습 강도는 다릅니다.

분류도구강도
필수 실습MCP — Playwright직접 설치하고 스크린샷·추출까지
선택 실습 / 강사 시연CLI — gws CLIOAuth 인증이 복잡해서 강사 시연만 봐도 OK. 본인 진행은 강의 후 자가
BeforeAfter
AI한테 "이 사이트 봐줘" 부탁하면 못 함Playwright로 브라우저 열어서 직접 본 다음 정리
캘린더 일정 확인하려면 브라우저 별도 켜야 함"오늘 일정 정리해줘" 한 마디로 마크다운 보고서
외부 도구가 왜 필요한지 막연함MCP·CLI 두 방식의 차이와 어울리는 자리를 구분

Playwright는 모두가 따라 해주세요. gws는 OAuth 5단계가 매번 막히는 학생이 많아서, 영상 시연만 보고 흐름을 잡으셔도 됩니다.


💡 핵심 개념

MCP는 AI에 꽂는 표준 소켓입니다

이름은 어렵지만 개념은 단순해요. Model Context Protocol — AI(모델)에 외부 도구를 꽂는 표준 규격입니다. 한 번 꽂으면 자연어로 다룰 수 있어요. Notion MCP 꽂으면 "내 Notion에서 어제 메모 찾아줘" 같이 부탁할 수 있는 거죠.

Claude Code ──[MCP]── Playwright (브라우저)
            ──[MCP]── Notion (문서)
            ──[MCP]── Slack (메시지)
            ──[MCP]── 내가 만든 도구

MCP는 .mcp.json 파일 한 장에 서버를 등록하는 방식으로 연결합니다. 워크스페이스 루트에 두면 그 워크스페이스에서만 동작해요.

CLI는 AI가 bash로 직접 호출하는 도구입니다

MCP가 "소켓"이라면 CLI는 "AI가 직접 호출하는 명령줄 도구"예요. AI가 터미널에서 명령 쳐서 결과를 받는 방식입니다.

MCP:  AI ↔ MCP 서버 ↔ 외부 서비스
CLI:  AI → bash → CLI 도구 → 외부 서비스

gws CLI는 Gmail, 캘린더, 드라이브, 시트, 독스, 슬라이드, 미트, 챗, 태스크까지 9개 서비스를 한 도구로 다뤄요. AI가 자연어 요청을 받으면 알맞은 gws 명령어를 bash로 만들어 실행하고, 결과를 정리합니다.

MCP와 CLI는 결이 다릅니다

둘 중 하나가 더 좋은 게 아니라 어울리는 자리가 따로 있어요.

구분MCPCLI
연결 방식.mcp.json에 서버 등록시스템에 설치 (npm 등)
호출자연어 → MCP 서버가 처리자연어 → AI가 bash 명령 작성 → 실행
장점표준 규격, 도구 풍부직접적, 시스템 도구 자유 활용
어울리는 자리표준화된 외부 서비스개인 도구·시스템 명령

MCP가 없는 도구는 CLI로, CLI 없는 서비스는 MCP로 — 이렇게 보면 됩니다.


🚶 진행 흐름

1. /part05 호출 → Clip 3 선택

강의 워크스페이스에서 클로드코드를 켜고 시작합니다.

/part05

Clip 3 선택하면 학습 워크스페이스 안에 작업 폴더가 준비돼요.

✓ 50-my-work/Part05-뜯어보기/실습20-MCP-CLI/ 준비 완료
✓ ~/fastcampus-cc/50-my-work/Part05-뜯어보기/my-cc-study/.claude/ 디렉토리 확인됨

2. Playwright MCP 연결 (필수)

학습 워크스페이스 안 클로드코드 세션에서 .mcp.json을 만들어달라고 부탁합니다.

my-cc-study/에 Playwright MCP를 연결하려는데 어떻게 해?
.mcp.json 파일 만들어서 연결해줘.

AI가 이런 파일을 만들어줘요.

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}

npx로 설치 없이 바로 실행하는 방식이라, 처음 한 번만 다운로드되고 그 다음부터는 빠르게 켜집니다. 적용하려면 클로드코드를 재시작해요.

exit
claude

새로 시작하면 시작 로그에 Playwright가 활성화된 게 보입니다.

[MCP] Connecting to playwright...
[MCP] ✓ playwright (active)
  Available tools: browser_navigate, browser_screenshot, browser_click, ...

활성화 끝. 이제 브라우저 자동화를 자연어로 부탁할 수 있어요.

본인이 평소 쓰는 브라우저(Comet, Edge, Brave 등 Chromium 계열)로 연결하고 싶으면 자연어로 부탁하시면 됩니다. 예: "지금 나는 Comet 브라우저 쓰는데, 그걸로 Playwright 연결해줘." MCP 설정에 executablePath를 추가하는 식으로 자동 처리돼요.

3. Playwright로 스크린샷 + 데이터 추출 (필수)

진짜 동작하는지 한 번 써봅니다. 시연용으로 공개 페이지 하나 골랐어요.

Playwright로 https://news.hada.io 열어서 첫 페이지 스크린샷 찍고,
my-cc-study/sandbox/hada-screenshot.png에 저장해줘.

AI가 Playwright로 브라우저를 열고 페이지를 로드한 다음 스크린샷을 저장합니다.

[Playwright] Navigating to https://news.hada.io
[Playwright] Page loaded (200 OK)
[Playwright] Screenshot saved: .../sandbox/hada-screenshot.png

안티그래비티 파일 트리에서 hada-screenshot.png를 열어보세요. AI가 직접 브라우저로 들어가 본 결과예요. 이게 MCP의 힘입니다.

한 단계 더 — 텍스트 추출까지.

방금 그 페이지에서 상단 5개 게시물 제목만 뽑아서
my-cc-study/sandbox/hada-titles.md에 리스트로 정리해줘.
# Hada News Top 5 (수집: 2026-05-10)

1. (게시물 1 제목)
2. (게시물 2 제목)
3. ...

사람이 직접 사이트 들어가서 복붙하던 거 AI가 대신 해줍니다. 본인 업무에 응용할 거리가 보일 거예요. 경쟁사 가격 비교, 공지사항 변경 모니터링, 리서치용 페이지 캡처 같은 데 바로 쓸 수 있어요.

4. gws CLI 설치 (선택 / 강사 시연)

다음은 CLI입니다. 설치는 한 줄이에요.

npm install -g @googleworkspace/cli
gws --version
gws 0.19.0

여기서부터는 강사 시연 위주로 보세요. 인증 흐름이 인터랙티브라 클로드코드 안에서 못 돌립니다. 터미널에서 직접 진행해야 해요.

gws auth setup

설정 흐름은 다섯 단계.

Step 1/5: gcloud CLI 확인
Step 2/5: Google 계정 선택
Step 3/5: GCP 프로젝트 생성
Step 4/5: 9개 API 활성화 (Gmail/Calendar/Drive/Sheets/...)
Step 5/5: OAuth 클라이언트 ID 생성 + 테스트 사용자 추가

마지막에 gws auth login 치면 브라우저가 열리고 Google 로그인 → 권한 승인 → 인증 완료. 상태 확인은 이렇게.

gws auth status
✓ Authenticated
  Account: example@gmail.com
  Enabled APIs: 9

여기까지가 강사 시연 영역입니다. 학생은 영상 후 자가 진행해도 돼요.

5. gws CLI로 일정·메일 조회 (선택 — 본인 인증한 학생만)

인증된 gws CLI를 클로드코드가 자연어로 부르게 합니다.

gws CLI로 오늘 내 캘린더 일정 확인해주려는데 어떻게 해?
조회 결과를 my-cc-study/sandbox/today-schedule.md에 정리해줘.

AI가 bash로 gws calendar 명령을 실행하고 결과를 파싱해서 마크다운으로 저장해요.

# 오늘 일정 (2026-05-10)

## 09:30 - 10:30  팀 주간 회의
- 참석자: ...
- 위치: Google Meet

## 14:00 - 15:00  강의 촬영
- 메모: Part 05 클립 03

## 18:00  저녁 약속

한 단계 더 — 메일까지.

gws CLI로 안 읽은 메일 중 최근 5개 제목만 정리해주려는데 어떻게 해?
my-cc-study/sandbox/recent-mails.md에 저장.

일정과 메일이 한 번에 정리됐어요. 매일 아침 출근하자마자 이거 한 번 돌리면 그날 하루가 한 화면에 정리됩니다. 이걸 슬래시 커맨드 /morning-briefing으로 묶으면 매일 똑같이 한 번에 받을 수 있어요. Part 6에서 그렇게 발전시킵니다.


📦 결과물

필수 결과물 (모든 학생)

결과물위치설명
.mcp.jsonmy-cc-study/.mcp.jsonPlaywright MCP 설정
hada-screenshot.pngmy-cc-study/sandbox/Playwright 자동화 결과
hada-titles.mdmy-cc-study/sandbox/Playwright 텍스트 추출 결과
README.md실습20-MCP-CLI/진도 메타 (스킬 자동 작성)

선택 결과물 (gws 인증한 학생만)

결과물위치설명
today-schedule.mdmy-cc-study/sandbox/gws CLI 캘린더 조회 결과
recent-mails.mdmy-cc-study/sandbox/gws CLI 메일 조회 결과

완료 입력하면 progress.json의 mcp_installed에 ["playwright"]가 기록됩니다. gws를 인증한 학생은 cli_installed에 ["gws"]도 같이 기록돼요.


🆘 자주 막히는 포인트

증상원인해결
npx @playwright/mcp 처음 다운로드가 오래 걸림첫 실행 시 패키지 다운로드 (수십 MB)정상. 첫 실행만 2~3분, 이후 빠름
.mcp.json 만들었는데 활성화 안 됨클로드코드 재시작 안 함exit 후 claude 재실행. 시작 로그에 [MCP] ✓ playwright 확인
Playwright 브라우저 다운로드 실패네트워크 또는 권한npx playwright install chromium 수동 실행
gws auth setup이 클로드코드 안에서 안 돌아감인터랙티브 명령터미널에서 직접 실행. Bash 도구로 호출 불가
OAuth "액세스 차단됨" 에러테스트 사용자 추가 안 함OAuth 동의 화면 → "Test users" 탭 → 본인 Gmail 추가 (필수)
invalid_scope 에러API 너무 많이 활성화9개만 정확히 활성화 (Drive/Sheets/Gmail/Calendar/Docs/Slides/Tasks/Chat/Meet)
gws 명령을 못 찾음npm 글로벌 경로 PATH 문제which gws 확인. 없으면 npm root -g 경로를 PATH에 추가
학생이 본인 인증 안 한 채로 gws 호출정상 — 강사 시연만 본 경우영상 후 자가 진행 OK
스크린샷이 빈 페이지로 나옴사이트 로딩 지연"스크린샷 찍기 전에 3초 대기" 추가 명령으로 보완
회사 네트워크 차단방화벽개인 핫스팟 또는 사내 허용 도구 사용
시연 사이트가 막힘일시 장애다른 공개 페이지로 대체 (github.com, anthropic.com 등)
MCP 삭제 방법이 헷갈림관리 방법.mcp.json에서 해당 블록 제거 후 클로드코드 재시작

🔗 다음 클립

→ Part 5 / Clip 4: Hook — 자동화의 방아쇠 설정하기

다음 클립에서는 이벤트가 일어날 때 자동 실행되는 방아쇠를 만들어요. 오늘 꽂은 도구들이 자동으로 발동되게 하는 다음 단계입니다.

Hook

자동화의 방아쇠 설정하기

Part 5 · Clip 4

🎯 이 클립에서 만드는 것

스마트홈 써보신 분 있으세요? "집에 들어가면 자동으로 불 켜짐", "아침 7시 커피머신 작동" 같은 거. 이게 이벤트가 일어나면 자동 실행되는 거잖아요. Hook이 딱 그거예요. 클로드코드에서 일어나는 특정 이벤트에 자동으로 뭐가 실행되게 만드는 장치입니다.

[이벤트 발생]              [자동 실행]
대화 시작              →   오늘 할 일 출력
도구 실행 직전        →   위험 명령 차단
AI 응답 완료          →   알림음 재생
세션 끝                →   대화 요약 저장

오늘은 학습 워크스페이스에 Hook 세 개를 만들어요. 결이 각각 달라요.

결Hook효과
편의Stop — 응답 완료 알림음백그라운드 작업 시켜놓고 다른 일 하다가 소리로 알 수 있음
습관SessionStart — 환영 메시지매일 클로드코드 켤 때마다 본인 진도 자동 안내
안전PreToolUse — 위험 명령 차단rm -rf / 같은 명령을 실행 전에 자동으로 막아줌
BeforeAfter
백그라운드 작업이 끝났는지 화면 계속 봐야 함응답 끝나면 자동으로 소리가 울림
매일 클로드코드 켤 때마다 "어디부터 다시 해야 하지?" 헤맴켜자마자 환영 메시지 + 진도 커맨드 안내 자동
자동 모드 쓰면 혹시 위험 명령 실행할까 봐 불안위험 패턴은 실행 직전에 자동 차단

세 개 다 합쳐도 settings.json 한 파일이 본인 작업 환경의 DNA가 됩니다. 다른 컴퓨터에서 이 파일 하나만 옮기면 같은 환경이 재현돼요.


💡 핵심 개념

Hook은 이벤트-반응 패턴입니다

Hook은 이벤트가 발생할 때 자동 실행되는 셸 명령이에요. "문 열리면 불 켜지는 센서" 같은 거. 클로드코드에는 이벤트가 여러 종류 있는데, 우리가 자주 쓰는 건 다섯 개 정도예요.

이벤트언제 발생활용 예
UserPromptSubmit사용자가 메시지 입력 직후메시지 로깅, 키워드 검사
PreToolUseAI가 도구 실행 직전위험 명령 차단, 권한 확인
PostToolUse도구 실행 완료 후결과 알림, 자동 포매팅
StopAI 응답 완료완료 알림음, 상태 저장
SessionStart새 세션 시작/재개환영 메시지, 컨텍스트 주입

오늘 만들 세 개는 Stop, SessionStart, PreToolUse입니다.

설정은 settings.json 한 파일에

Hook은 워크스페이스 .claude/settings.json 파일에 등록해요. 학습 워크스페이스라 my-cc-study/.claude/settings.json에 작성합니다. 강의 워크스페이스 쪽은 손대지 않아요.

기본 구조는 이렇게 생겼어요.

{
  "hooks": {
    "이벤트이름": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "실행할 셸 명령"
          }
        ]
      }
    ]
  }
}

matcher는 어떤 경우에 발동할지 좁히는 필터예요. *은 모든 경우, Bash는 Bash 도구 호출 직전만 등으로 좁힙니다.

설정 변경 후에는 클로드코드 재시작

Hook은 클로드코드 시작 시 로드돼요. settings.json 수정한 다음에는 반드시 exit로 나가고 claude로 다시 켜야 적용됩니다. 안 그러면 변경이 안 잡혀요.


🚶 진행 흐름

1. /part05 호출 → Clip 4 선택

강의 워크스페이스에서 클로드코드를 켜고 시작합니다.

/part05

Clip 4 선택하면 작업 폴더가 준비돼요.

✓ 50-my-work/Part05-뜯어보기/실습21-Hook/ 준비 완료
✓ ~/fastcampus-cc/50-my-work/Part05-뜯어보기/my-cc-study/.claude/settings.json 확인됨

2. Stop hook — 응답 완료 알림음 (편의)

첫 번째는 편의 결이에요. AI가 응답 끝나면 알림음이 울리게 합니다. 백그라운드로 작업 시켜놓고 다른 일 하다가 끝났는지 알기 좋아요.

학습 워크스페이스 클로드코드 세션에서 입력합니다.

my-cc-study/.claude/settings.json에 Stop hook을 추가하려는데 어떻게 해?
AI 응답이 끝나면 Mac의 afplay로 알림음 재생.

본인 OS에 맞는 명령을 골라서 부탁하세요. 표에서 한 줄 복사한 다음 위 입력에 끼워 넣으면 됩니다.

OSStop 알림음 명령
macOSafplay /System/Library/Sounds/Glass.aiff
Windowspowershell -c "[console]::beep(500,300)"
Linuxnotify-send 'Claude' '응답 완료' (또는 paplay /usr/share/sounds/freedesktop/stereo/complete.oga)
{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "afplay /System/Library/Sounds/Glass.aiff"
          }
        ]
      }
    ]
  }
}

구조 단순해요. Stop 이벤트가 발생하면, 모든 경우(matcher: *)에 대해 command가 실행됩니다.

재시작하고 동작 확인.

exit
claude
1+1 뭐야?

응답 끝날 때 Glass 사운드가 울리면 정상이에요. 거슬리면 settings.json에서 Stop 블록만 빼면 즉시 꺼집니다.

3. SessionStart hook — 세션 시작 환영 (습관)

두 번째는 습관 결. 매일 클로드코드 켜자마자 본인 진도가 자동으로 안내됩니다.

my-cc-study/.claude/settings.json에 SessionStart hook도 추가하려는데 어떻게 해?
세션 시작 시 클립 02에서 만든 /study-progress 결과를 자동으로 한 번 보여주고,
"안녕하세요!" 인사도.

기존 Stop hook 옆에 SessionStart가 같이 들어갑니다.

{
  "hooks": {
    "Stop": [
      {"matcher": "*", "hooks": [{"type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff"}]}
    ],
    "SessionStart": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "echo '안녕하세요! 오늘도 화이팅 — 진도 한 번 확인하실까요? /study-progress'"
          }
        ]
      }
    ]
  }
}

echo로 환영 메시지를 출력하는 단순한 명령이지만, 매일 클로드코드 켤 때마다 자동으로 떠요. 재시작하면 시작 직후 메시지가 보입니다.

exit
claude

응용 거리도 많아요. 날씨(curl wttr.in), 오늘 일정(Clip 3에서 인증한 gws CLI 호출), TODO 파일 출력(cat ~/todo.md) 같은 거.

4. PreToolUse hook — 위험 명령 차단 (안전)

세 번째는 안전 결. AI가 도구를 실행하기 직전에 검사해서 위험 패턴이면 차단합니다. 자동 모드(Auto, Bypass) 쓸 때 안전망 역할이에요.

my-cc-study/.claude/settings.json에 PreToolUse hook도 추가하려는데 어떻게 해?
Bash 도구 실행 직전에 — 명령어에 'rm -rf /' 또는 'sudo rm'이 포함되면 차단.
exit 2로 차단하고 'BLOCKED: dangerous command'를 출력.

세 개를 다 합친 settings.json이 이렇게 완성됩니다.

{
  "hooks": {
    "Stop": [
      {"matcher": "*", "hooks": [{"type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff"}]}
    ],
    "SessionStart": [
      {"matcher": "*", "hooks": [{"type": "command", "command": "echo '안녕하세요! 오늘도 화이팅 — /study-progress'"}]}
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "if grep -qE 'rm -rf /|sudo rm' <<< \"$TOOL_INPUT\"; then echo 'BLOCKED: dangerous command'; exit 2; fi"
          }
        ]
      }
    ]
  }
}

matcher: "Bash"라 Bash 도구 호출 직전만 검사해요. grep으로 위험 패턴을 찾고, 발견되면 exit 2로 차단합니다.

재시작하고 테스트해봐요. 진짜로 실행되진 않습니다 — Hook이 미리 막으니까요.

exit
claude
'rm -rf /' 명령을 bash로 실행해줘 (테스트 — 실제 실행 안 됨)

AI가 Bash 호출을 시도하지만 PreToolUse hook이 발동돼서 BLOCKED: dangerous command가 출력되고 실행이 막힙니다. 본인이 실수로 위험한 거 입력해도 한 겹 더 막아주는 안전장치예요.

5. Hook 3종 정리

세 개를 한 표로 정리하면 이래요.

결Hook이벤트효과
편의Stop 알림음응답 완료백그라운드 작업 알림
습관SessionStart 환영세션 시작매일 똑같이 자동 안내
안전PreToolUse 차단Bash 실행 직전위험 명령 막기

settings.json 한 파일에 본인 작업 습관이 다 담겼어요. 이 파일을 다른 컴퓨터에 옮기면 같은 환경이 그대로 재현됩니다.

한 걸음 더 — 스크립트 파일로 분리

위 PreToolUse는 inline 명령이라 점점 길어지면 settings.json이 지저분해져요. 실무에서는 별도 Python 스크립트로 빼서 관리합니다.

# ~/.claude/hooks/block_dangerous.py 같은 위치에 만들기
#!/usr/bin/env python3
"""위험한 명령어를 자동 차단하는 Safety Hook"""
import json, re, sys

BLOCKED_PATTERNS = [
    (r"\brm\s+-rf\s+/", "rm -rf /는 시스템 전체 파괴 위험"),
    (r"\bsudo\s+rm\b", "sudo rm은 시스템 파일 위험"),
    (r"git\s+reset\s+--hard", "git reset --hard는 커밋 안 한 작업을 삭제"),
    (r"git\s+push\s+--force", "git push --force는 다른 사람 작업을 덮어쓸 수 있음"),
]

input_data = json.loads(sys.stdin.read())
command = input_data.get("tool_input", {}).get("command", "")

for pattern, reason in BLOCKED_PATTERNS:
    if re.search(pattern, command):
        print(f"BLOCKED: {reason}", file=sys.stderr)
        sys.exit(2)

sys.exit(0)

그리고 settings.json의 PreToolUse는 이렇게 짧아져요.

"PreToolUse": [
  {
    "matcher": "Bash",
    "hooks": [
      {"type": "command", "command": "python3 ~/.claude/hooks/block_dangerous.py"}
    ]
  }
]

규칙이 늘어나도 settings.json은 그대로고, Python 파일만 손보면 됩니다. 휴지통 보호 hook 같은 변형도 같은 패턴이에요. rm을 매칭하고 trash 명령으로 우회하라는 메시지를 출력하면 됩니다.

또 다른 변형으로 TTS 응답 요약이 있어요. Mac의 say -v Yuna 명령으로 마지막 응답을 한국어 음성으로 읽어주는 방식. Stop hook에 stdin으로 들어오는 JSON에서 transcript_path를 받아 마지막 assistant 메시지를 추출해 음성으로 변환하는 짧은 셸 스크립트 하나면 됩니다.

# ~/.claude/hooks/stop-speak.sh
#!/bin/bash
TRANSCRIPT=$(jq -r '.transcript_path' <<< "$(cat)")
LAST_MSG=$(jq -r 'select(.type=="assistant") | .message.content[0].text' "$TRANSCRIPT" | tail -1 | head -c 80)
say -v Yuna "$LAST_MSG"

전체 응답을 다 읽지 않고 앞 80자만 발췌하는 게 가볍고 충분해요. 진짜 "요약"하려면 또 다른 AI 호출이 필요해서 무거워집니다.


📦 결과물

결과물위치설명
settings.jsonmy-cc-study/.claude/settings.jsonHook 3개 설정 (백업 자산)
Stop hook 동작 확인시연 결과응답 후 Glass 사운드
SessionStart hook 동작 확인시연 결과세션 시작 시 환영 메시지
PreToolUse hook 동작 확인시연 결과위험 명령 시도 → BLOCKED
README.md실습21-Hook/진도 메타 (스킬 자동 작성)

완료 입력하면 progress.json의 hooks_created에 ["stop-alert", "session-welcome", "rm-guard"]가 자동 기록됩니다.


🆘 자주 막히는 포인트

증상원인해결
Stop hook 설정했는데 알림이 안 울림클로드코드 재시작 안 함exit 후 claude 재실행. Hook은 시작 시 로드
macOS afplay 권한 오류시스템 설정 차단시스템 설정 → 개인정보 보호 → 사운드 접근 허용
Windows에서 afplay 동작 안 함macOS 전용 명령powershell -c "[console]::beep(500,300)"로 교체
Linux에서 afplay 동작 안 함macOS 전용 명령notify-send 'Claude' '응답 완료' 또는 paplay
알림이 너무 자주 울려서 거슬림Stop이 매번 발동matcher를 특정 도구로 좁히거나 settings.json에서 일시 제거
JSON 문법 오류콤마/따옴표 실수"settings.json 문법 검증하고 고쳐줘" 재요청
.claude/settings.json 파일을 못 찾음숨김 폴더안티그래비티에서 학습 워크스페이스 열고 .claude/ 펼치기
Hook 설정 실수로 무한 루프 등잘못된 명령settings.json에서 해당 Hook 블록 삭제 후 재시작
Hook 삭제하는 법관리 방법settings.json에서 해당 이벤트 블록만 제거
강의 워크스페이스 settings.json을 수정하려고 함"내 거" 혼동즉시 차단. 학습 워크스페이스 쪽에만 만듦
PreToolUse 차단 범위가 너무 넓음matcher가 모든 명령에 걸림"matcher를 특정 명령에만 한정해줘" 재요청
$TOOL_INPUT이 작동 안 함Hook 환경변수 이름 오류클로드코드 버전 확인. 최신 버전에서 사용 가능
Hook 3개 다 켜놓으니 시작이 느림SessionStart에 무거운 명령echo 같은 가벼운 명령만 권장. gws CLI 호출은 느릴 수 있음

🔗 다음 클립

→ Part 5 / Clip 5: GitHub — git-teacher로 백업하기

다음은 Part 5 마지막 클립이에요. 지금까지 만든 .claude/, .mcp.json, settings.json을 GitHub에 백업해서, 다른 컴퓨터에서도 같은 환경을 재현하는 법을 배웁니다.

GitHub

git-teacher로 백업하기

Part 5 · Clip 5

🎯 이 클립에서 만드는 것

Part 5 동안 본인 학습 워크스페이스에 자산이 한참 쌓였어요. 한 번 돌아볼게요.

my-cc-study/
├── CLAUDE.md                       # Clip 1 — 본인 컨텍스트
├── .claude/
│   ├── commands/study-progress.md  # Clip 2 — 진도 정리 커맨드
│   ├── agents/practice-coach.md    # Clip 2 — 학습 코치 서브에이전트
│   └── settings.json               # Clip 4 — Hook 3개
├── .mcp.json                       # Clip 3 — Playwright MCP
└── sandbox/                        # Clip 3 — 스크린샷·일정·메일

이거 다 컴퓨터에만 있어요. 포맷되면 날아갑니다. 회사 컴퓨터와 집 컴퓨터를 같이 쓰려면 매번 USB로 옮길 수도 없고요. 그래서 마지막 클립은 GitHub에 통째로 백업합니다.

방법은 단순해요. git-teacher 플러그인을 한 번 더 추가해서, 한국어로 git을 다룹니다. 명령어 외울 필요 없어요. "깃 시작해줘", "저장해줘", "올려줘" 세 문장이면 끝납니다.

BeforeAfter
학습 워크스페이스가 내 컴퓨터에만 있음GitHub Private 저장소에 영구 백업
git add, commit, push 명령어 외워야 할 거 같음한국어 한 문장으로 자동 진행
다른 컴퓨터에서 같은 환경 재현이 막연함git clone 한 번이면 같은 환경 그대로

이번 클립이 끝나면 본인 클로드코드 환경 전체가 GitHub URL 하나로 정리됩니다. 강의 끝나도 계속 쓸 자산이에요.


💡 핵심 개념

Google Drive와 Git의 차이

git을 처음 보면 Google Drive랑 비슷한 줄 알아요. 둘 다 클라우드에 파일 보관하는 거니까. 그런데 동작 방식이 결정적으로 달라요.

구분Google DriveGit
동기 방식자동 — 저장하면 클라우드에 바로수동 — 저장(commit) + 업로드(push) 두 단계
로그인한 번 로그인하면 끝repo마다 commit + push 필요
협업 모델"수정 제안" 모드Pull Request

차이는 딱 하나만 기억하면 돼요. Google Drive는 자동, Git은 수동. 그래서 git에는 "지금 저장할게" 하는 commit 단계와 "이제 올릴게" 하는 push 단계가 따로 있습니다.

이게 처음엔 번거롭게 느껴지지만 이유가 있어요. Git은 변경 이력을 모두 기록합니다. 어제 어디까지 했는지, 그저께랑 뭐가 달라졌는지 다 추적돼요. 그래서 commit 시점을 본인이 정해야 하는 거고요.

git-teacher는 git을 한국어로 다룹니다

git 본체는 명령어가 어려워요. git add, git commit, git push, git branch, git merge. 외울 게 너무 많죠. git-teacher는 이걸 한국어로 바꿔주는 플러그인이에요. "저장해줘", "되돌려줘" 같은 한국어로 부탁하면 알아서 해석해서 적절한 git 명령을 실행합니다.

git을 직접 다루는 게 아니라 git-teacher가 가르치는 식으로 진행돼요. 명령마다 5단계 자동 가이드를 띄워주고, 헷갈리는 곳에서 멈춰줘요.

강의 워크스페이스는 백업하지 않습니다

여기서 한 번 짚고 갈게요. 오늘 백업할 건 학습 워크스페이스(my-cc-study/)뿐이에요. 강의 워크스페이스(~/fastcampus-cc/)는 강의 진행용이라 GitHub에 올리지 않습니다. 강사가 관리하는 자산이고, 본인이 추가한 게 없어요.

본인 자산은 다 학습 워크스페이스 안에 있으니, 그 폴더 통째로 한 저장소로 올리면 끝납니다.


🚶 진행 흐름

1. git-teacher 플러그인 설치

강의 워크스페이스에서 클로드코드를 켜고 마켓플레이스에 git-teacher가 있는지 확인합니다. Part 4 Clip 1에서 추가한 GPTaku 마켓플레이스에 같이 들어 있어요.

/plugin install git-teacher

설치 완료 후 클로드코드 재시작.

exit
claude

재시작 후 git-teacher가 활성화됩니다.

2. "깃 시작해줘" — 학습 워크스페이스 git 셋업

이제 학습 워크스페이스 쪽으로 갑니다. 안티그래비티 새 창에서 my-cc-study/ 폴더를 열고, 그 안에서 클로드코드를 켜요.

claude

그리고 한 문장 입력합니다.

깃 시작해줘

git-teacher가 5단계 자동 셋업을 진행해요.

[git-teacher] 깃 백업 시작합니다.

Step 1: Git 설치 확인
  ✓ git 2.45.0 설치됨

Step 2: GitHub CLI 확인
  → 미설치 시 안내: brew install gh (Mac) / winget install --id GitHub.cli (Win)
  ✓ gh 2.87.0 설치됨

Step 3: GitHub 계정 인증
  → gh auth login 실행 안내
  → 브라우저 OAuth 인증

Step 4: 현재 폴더를 git 프로젝트로 초기화
  → git init 실행
  ✓ 완료

Step 5: .gitignore 자동 생성 (민감 파일 제외)
  - .DS_Store, *.log, node_modules/ 등
  ✓ 완료

다음에 "저장해줘" 입력하면 첫 commit 진행할게요.

명령어를 직접 칠 일이 없습니다. GitHub 계정이 없으신 분은 영상 중간에 https://github.com/signup에서 가입하시면 돼요. 1~2분이면 끝납니다.

진행 중 챙길 세 가지

  • gh auth login 시 인증 방식 선택: HTTPS와 SSH 중 익숙하지 않으면 HTTPS 추천. 브라우저로 자동 인증돼 가장 간단해요.
  • .gitignore 자동 생성 내용 확인: API 키, .env, 비밀 토큰류가 제외되는지 한 번 보세요. git-teacher가 기본 패턴을 넣지만 본인 프로젝트 특이 파일은 직접 추가 필요.
  • 첫 push 시 main 브랜치 자동 생성: 메시지에 git push -u origin main이 보이면 정상. master로 돌아가지 않게 git-teacher가 main 기준으로 진행합니다.

3. "저장해줘" — 첫 commit

지금까지 만든 자산을 한꺼번에 저장합니다. git 용어로는 commit이에요.

저장해줘

git-teacher가 변경 사항을 분석하고 자연어 commit 메시지를 자동으로 제안합니다.

[git-teacher] 변경 사항 분석 중...

발견한 자산:
  - CLAUDE.md (학습 워크스페이스 매뉴얼)
  - .claude/commands/study-progress.md (진도 정리 커맨드)
  - .claude/agents/practice-coach.md (학습 코치 서브에이전트)
  - .mcp.json (Playwright MCP 설정)
  - .claude/settings.json (Hook 3개)
  - sandbox/ (스크린샷·일정·메일 결과물)

자동 commit 메시지 제안:
  "init: Part 05 학습 자산 — CLAUDE.md, 커맨드, 서브에이전트, MCP, Hook"

이대로 저장할까요? (Y/n)

Y로 진행. 메시지가 영어로 시작하지만 본문에 한국어가 섞여요. git 관례를 따른 거예요.

✓ 첫 commit 완료
  현재 커밋: a3f2b1c
  파일 수: {N}

다음에 "올려줘" 입력하면 GitHub에 업로드할게요.

저장 끝. 다만 아직 본인 컴퓨터에만 있어요. 백업 완성하려면 GitHub에 올려야 합니다.

4. "올려줘" — GitHub push

다음 한 마디로 GitHub 저장소 생성과 업로드를 동시에 진행해요.

올려줘

git-teacher가 저장소를 자동으로 만들고 업로드합니다.

[git-teacher] GitHub 업로드 진행합니다.

Step 1: GitHub repo 생성
  - 이름: my-cc-study
  - 공개 설정: Private (권장 — settings.json에 개인 정보 가능성)
  → gh repo create my-cc-study --private
  ✓ Repo 생성 완료
  🔗 https://github.com/{유저명}/my-cc-study

Step 2: 원격 연결 + push
  → git remote add origin git@github.com:{유저명}/my-cc-study.git
  → git push -u origin main
  ✓ 업로드 완료

브라우저로 GitHub URL을 열어보세요. 파일들이 다 올라와 있어요. 이제 어디서나 접근 가능합니다. 회사 컴퓨터에서 git clone https://github.com/{유저명}/my-cc-study만 하면 같은 환경이 그대로 재현돼요.

Private 설정이라 본인만 봅니다. 팀원과 공유하려면 GitHub Settings → Collaborators에서 추가하시면 됩니다.

5. 수정 → 재저장 루프 한 번 체험

마지막 단계. 앞으로 본인이 뭔가 수정할 때마다 이 흐름을 반복합니다.

안티그래비티에서 CLAUDE.md를 한 줄만 수정해보세요. 예를 들어 "오늘 학습 완료: Part 05" 같은 메모 추가. 저장 후 클로드코드에 한 줄 부탁.

방금 CLAUDE.md 수정한 거 저장하고 GitHub에 올려줘

git-teacher가 변경을 감지하고 commit + push를 한 번에 진행해요.

[git-teacher]
  변경 발견: CLAUDE.md (1줄 추가)
  → git add CLAUDE.md
  → git commit -m "update: 학습 진도 메모 추가"
  → git push
  ✓ 업로드 완료

GitHub에서 새로고침하면 변경이 반영됩니다. 커밋 히스토리도 같이 쌓여요. 매번 이 흐름 — 수정 → "저장하고 올려줘" — 반복하시면 됩니다.


📦 결과물

결과물위치설명
GitHub Private repogithub.com/{유저명}/my-cc-study학습 워크스페이스 영구 백업
.git/ 폴더my-cc-study/.git/로컬 git 메타데이터
.gitignoremy-cc-study/.gitignore민감 파일 제외 규칙
커밋 히스토리GitHub repo최소 2개 (init + update)
README.md실습22-GitHub/진도 메타 (스킬 자동 작성)

완료 입력하면 progress.json의 github_repo에 URL이 기록되고 completed_parts에 "Part 05"가 추가됩니다.


🆘 자주 막히는 포인트

증상원인해결
gh 명령이 없음GitHub CLI 미설치git-teacher가 자동 안내. Mac: brew install gh / Win: winget install --id GitHub.cli
gh auth login 인증 실패2FA 또는 토큰 만료gh auth logout 후 gh auth login 재실행
git push에서 permission 거부원격 URL 오류gh repo view로 정확한 URL 확인 후 git remote set-url origin [URL]
.gitignore가 중요 파일까지 제외자동 생성 시 과도 제외".gitignore 열어서 수정해줘" 재요청
대용량 파일 push 거부GitHub 100MB 제한sandbox/ 스크린샷이 크면 .gitignore에 추가
Private인데 Public으로 실수 생성옵션 잘못 선택GitHub Settings → Change visibility → Private
커밋 메시지가 영어로자동 메시지 패턴"한국어로 다시 만들어줘" 후 amend
API 키 같은 거 실수로 올림보안 사고즉시 키 revoke + git-teacher에 "API 키 노출됐어, 즉시 대응 방법"
GitHub 계정 없음미가입https://github.com/signup 1~2분 가입 후 다시 시도
강의 워크스페이스를 GitHub에 올리려고 함"내 거" 혼동본인 백업은 학습 워크스페이스만
git 처음이라 무서움학습 부담git-teacher가 다 안내해줌. 명령어 외울 필요 없음
Pull Request가 뭔지 헷갈림협업 개념팀 협업 시 학습. 백업만 할 때는 commit + push면 충분
GitHub repo 삭제하고 싶음실수 또는 정리GitHub Settings 하단 → Delete this repository

🔗 다음 Part

Part 5 마무리

Part 5 다섯 클립이 끝났어요. 한 폴더 안에 본인 클로드코드 환경의 DNA가 다 모였습니다.

Clip한 일결과물
1CLAUDE.md본인 컨텍스트 매뉴얼
2커맨드 + 서브에이전트/study-progress + practice-coach
3MCP + CLIPlaywright + gws CLI 연결
4Hook편의·습관·안전 자동화
5GitHub모든 자산을 영구 백업

여기까지가 "이해 단계" 였어요. 클로드코드가 어떤 재료로 구성되는지 직접 뜯어보고 만져본 시간. 다음 Part 6부터는 "제작 단계" 로 갑니다. 오늘 만든 자산들을 묶어서 본인만의 스킬로 발전시켜요. /study-progress + practice-coach + Hook + MCP를 묶은 본인 자동화 시스템이 거기서 나옵니다.

학습 워크스페이스(my-cc-study/)는 강의 끝나도 그대로 두세요. 강의 후에 본인 공부방으로 계속 키워나갈 곳이에요. 다른 컴퓨터에서 작업하고 싶을 땐 git clone 한 번이면 됩니다.

다음 Part

→ Part 6: 클로드코드 스킬 만들기 — 오늘까지 만든 자산을 본인 스킬로 묶습니다.

Part 4 Clip 3에서 받은 1~2순위와 Clip 4 바선생에서 받은 보완 영역이 Part 6 시작할 때 자동으로 불려옵니다. 이해는 끝났어요. 제작 시작합니다.

스킬이란 무엇인가

클로드코드의 꽃 — 3 가치 + 메타 흐름

Part 6 · Clip 1이론

이 클립에서 배우는 것

Part 5에서 클로드코드를 뜯어봤습니다. CLAUDE.md로 작업 매뉴얼을 작성했고, 커맨드와 서브에이전트, MCP, Hook, GitHub까지 직접 다뤄봤어요. Part 6은 그 재료들을 한 단위로 묶는 방법을 배웁니다. 이 묶음을 "스킬"이라고 부릅니다.

Part 5까지가 "재료 만들기"였다면 Part 6은 그 재료를 하나로 통합하는 작업입니다. 한 번 통합해두면 평생 씁니다. 자연어 한 마디만 던지면 같은 워크플로우가 매번 동일하게 동작합니다.

이 클립은 이론 챕터입니다. 손으로 만드는 건 다음 클립부터예요. 여기서는 세 가지만 가져갑니다.

  • 스킬이 정확히 무엇이고, 왜 "클로드코드의 꽃"이라 부르는지
  • 본인 업무에 가져가서 얻는 세 가지 가치 — 생산성·재현성·자산화
  • 스킬을 잘 만드는 사람과 못 만드는 사람을 가르는 한 줄 — "그냥 만들어줘"라고 말하지 않는 것

그다음 Part 6에서 만들 9개 실습 로드맵, Part 5에서 만든 자산이 어떻게 Part 6의 재료로 들어오는지를 이어서 봅니다.


핵심 개념

스킬은 워크플로우를 저장한 폴더입니다

스킬의 본체는 SKILL.md 한 장입니다. CLAUDE.md와 형식이 비슷한 마크다운 파일이에요. 다른 점은 언제 동작하는가입니다. CLAUDE.md는 워크스페이스 전체에서 늘 적용되는 규칙이고, 스킬은 특정 자연어 한 마디가 들어왔을 때만 깨어나는 워크플로우예요.

.claude/
└── skills/
    └── deep-research/
        ├── SKILL.md         ← 본체 (워크플로우 정의)
        ├── scripts/         ← (선택) 결정론 단계용 코드
        └── references/      ← (선택) 도메인 가이드 문서

SKILL.md 맨 위에는 description 한 줄이 있습니다. 이 줄이 호출 조건을 정합니다. "딥리서치", "깊이 조사", "여러 출처로 정리" 같은 자연어가 들어오면 클로드코드가 description을 보고 스킬을 가져옵니다. 사용자가 슬래시를 칠 필요도, 폴더 이름을 외울 필요도 없어요.

작동 흐름은 짧습니다.

사용자 자연어 한 마디
    ↓
클로드코드가 등록된 스킬들의 description 스캔
    ↓
가장 잘 맞는 스킬 1개 선택 → SKILL.md 본문 로드
    ↓
SKILL.md에 적힌 단계대로 작업 진행

설치는 워크스페이스 안에 폴더 하나 만들면 끝납니다. ~/fastcampus-cc/.claude/skills/스킬이름/SKILL.md 형태예요. 이 폴더만 다른 컴퓨터로 옮기면 같은 스킬이 그대로 동작합니다.

왜 "클로드코드의 꽃"이라 부르는가 — 3 가치

스킬을 클로드코드의 꽃이라 부르는 이유는 한 가지예요. 본인 업무에 가져갔을 때 효과가 가장 큰 단위라서. 그 효과를 세 갈래로 풀어볼게요.

생산성 — 30분 걸리던 작업이 5분으로 줄어듭니다.

같은 프롬프트를 매번 새로 짜본 경험 있으신가요? 매일 똑같은 반복 업무를 이제는 스킬로 만들어 자동화하세요. Part 06 마지막 챕터에서 만들 콘텐츠 파이프라인을 예로 들면, 리서치·이미지·HTML·음성·영상까지 6단계를 한 번에 만듭니다. 따로따로 했을 때 30분 걸리던 일이 이젠 5분이면 끝낼 수 있어요.

재현성 — 같은 입력에 같은 결과가 나옵니다.

AI에게 같은 일을 시켜도 매번 조금씩 결과가 다릅니다. 단어 선택이 달라지고, 어떤 항목은 빠지기도 해요. 스킬은 단계마다 AI에게 맡길지 스크립트로 빼둘지를 나눌 수 있어서, 자유도와 안정성을 같이 잡습니다. API 호출이나 JSON 파싱처럼 답이 정해진 단계는 스크립트로 빼고, 해석이나 요약처럼 자유도가 필요한 단계는 SKILL.md 본문에 둡니다.

자산화 — 노하우가 팀에 남습니다.

머리로만 생각하고 끝나는 워크플로우는 금방 사라집니다. 생각한 걸 자산으로 만들어야 의미가 있어요. 그래서 스킬이 가치가 있다고 생각합니다. 스킬은 본인 작업 순서를 마크다운 한 장에 저장한 형태라서, 팀원이 같은 폴더를 받아 쓰면 본인 노하우가 그대로 재현됩니다. 시간이 지나면 한 사람이 만든 스킬이 팀 전체 표준 작업이 되기도 합니다.

셋 중 무엇이 먼저 와닿는지는 사람마다 다릅니다. 마케팅 일을 하는 분은 생산성, 운영 담당자는 재현성, 컨설팅 일을 하는 분은 자산화를 먼저 본다는 식이에요.

메타 흐름 — "그냥 만들어줘"는 안 통합니다

스킬을 잘 만드는 사람과 못 만드는 사람 차이는 첫 프롬프트 한 줄에서 갈립니다.

나쁜 시작: "딥리서치 스킬 만들어줘"
좋은 시작: "어떤 주제에 대해 깊이 조사해서 정리하려는데,
          어떻게 워크플로우를 구성해야 할까?"

차이가 작아 보이지만 결과는 크게 갈려요. 앞 문장은 클로드코드가 곧장 SKILL.md를 쓰기 시작합니다. 본인이 그동안 알고 있던 "딥리서치"의 한계가 그대로 반영됩니다. 뒤 문장은 클로드코드가 먼저 "딥리서치를 어떻게 하는지" 그 자체를 조사합니다. 다관점 출처 수집, 교차 검증, 종합, 출처 명시 같은 단계가 펼쳐져요. 그중에 본인이 모르던 단계가 들어옵니다.

그래서 Part 6의 모든 실습은 4단계 메타 흐름을 따릅니다.

[1단계] 워크플로우 잡기 (방법론 조사)
   "[하려는 일] 만들려는데, 어떻게 워크플로우를 구성해야 할까?"

[2단계] 보완 + 실행 가능 단계 정의
   정리된 단계들 같이 살펴보고 보완
   → AI에게 맡길 단계와 코드로 분리할 단계를 여기서 구분

[3단계] 스킬로 만들기
   정의된 흐름을 SKILL.md로 정리

[4단계] 만든 스킬로 테스트·검증
   실제로 호출해서 description 매칭 + 결과 확인 + 부족한 부분 손보기

이 흐름이 9개 실습 모두에 들어 있습니다. 같은 흐름을 9번 반복하는 이유는 단순해요. Part 6을 마친 뒤 본인 일에 새 스킬을 만들 때, 이 4단계가 손에 익어야 하기 때문입니다. SKILL.md 작성 자체는 클로드코드가 합니다. 본인이 가져가야 할 건 "어떻게 시작 프롬프트를 던질까"입니다.


Part 6 로드맵 — 9개 실습

3개 챕터로 묶여 있어요. 챕터마다 결이 다릅니다.

CH 01 — 스킬 입문 (3 실습)

스킬 만들기 자체를 익히는 구간입니다. 처음엔 정석으로 손수 만들어보고, 그다음 본인이 만든 v1을 잘 짜여진 풀스펙 스킬과 비교해 개선해보고, 마지막엔 도구를 써서도 만들어봅니다.

Clip실습 #만드는 스킬배우는 것
223deep-research v1메타 흐름 4단계를 손으로 직접
324deep-research v2본인 v1 ↔ 풀스펙 스킬 비교·개선 사이클
425(자동 생성 1종)skillers-suda — 스킬 만들기 자체를 자동화한 도구 사용

Clip 2가 가장 중요해요. 손으로 한 번 만들어봐야 다음부터 어떤 사이클로 디벨롭할지 감이 잡힙니다.

CH 02 — API 활용 (2 실습)

외부 API를 스킬에 끼우는 구간입니다. 여기서 스크립트 분리 패턴을 처음 다뤄요. SKILL.md 본문은 AI가 매번 해석하는 영역이고, API 호출 같은 결정론 단계는 Python/Bash 스크립트로 따로 빼는 방식입니다.

Clip실습 #만드는 스킬분리되는 스크립트
526trip-advisor (TourAPI 여행 가이드)scripts/tour_api.py
627naver-news (뉴스레터 HTML)scripts/fetch_news.py

키는 강의 워크스페이스 루트 ~/fastcampus-cc/.env에 한 줄씩 보관합니다. .gitignore에 등록돼 있고, Part 5에서 만든 trash-guard hook이 안전장치예요.

CH 03 — 업무 자동화 (4 실습)

본인 업무에 그대로 가져갈 가능성이 가장 높은 4개 실습입니다.

Clip실습 #만드는 스킬핵심
728fashion-trend (KREAM 트렌드)외부 플러그인(insane-search)으로 안티봇 우회
829audio-to-doc (회의록 자동화)Gemini로 화자분리 + 5 유형 자동 판별
930morning-briefing (모닝 브리핑)Part 5 GWS 자산 위에 스킬이 스킬을 호출
1031content-pipeline (콘텐츠 파이프라인)6 STEP 풀 통합 — Part 6 마지막 챕터

이 4개는 본인 일에 가까운 1~2개만 골라 만들어도 충분합니다. 9개 모두 만드는 게 목표가 아니에요.


Part 5 → Part 6 자산 사슬

Part 5에서 만든 자산이 Part 6 어디서 어떻게 다시 쓰이는지 미리 봅니다. 같은 재료를 다시 만들 필요 없이 가져다 쓰면 됩니다.

Part 5 자산Part 6 어디서 다시 쓰는가
my-cc-study/CLAUDE.md (실습 18)9 실습 전체의 컨텍스트 — 직업·답변 스타일·결과물 포맷이 자동 반영
/study-progress 커맨드 (실습 19)Clip 8·9에서 같은 커맨드 패턴 재활용
practice-coach 서브에이전트 (실습 19)Clip 3 비교·분석·개선 사이클에 활용 가능
GWS CLI 연동 (실습 20)Clip 9 모닝 브리핑의 핵심 재료 — 새 인증 없이 Gmail·Calendar 호출
trash-guard / SessionStart hook (실습 21)9 실습 전체의 안전장치 — .env 키 보호, 위험 명령 차단
GitHub 백업 (실습 22)9 실습으로 만든 스킬 묶음을 한 번에 백업

Part 5를 한 번 거친 분은 이 사슬이 그대로 손에 잡혀요. 건너뛴 분도 Part 6은 따라올 수 있습니다. 다만 GWS CLI가 필요한 Clip 9는 Part 5 실습 20을 먼저 보고 오는 게 매끄럽습니다.


결과물 저장 규칙

Part 5와 같은 규칙입니다. 두 곳에 나눠 저장됩니다.

강의 워크스페이스 (활성 스킬)
└── ~/fastcampus-cc/.claude/skills/{스킬이름}/SKILL.md
    → 호출 즉시 동작하는 본체

학습 결과물 (진도 + 원본 사본)
└── ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습{NN}-{제목}/
    ├── README.md                  ← 진도 메타 (자동 작성)
    └── skill-source/SKILL.md      ← 만든 스킬의 원본 사본

활성 스킬은 .claude/skills/ 하위에 있어야 클로드코드가 발견합니다. 50-my-work/ 안의 사본은 진도 기록용이에요. 두 곳에 같은 파일이 있다고 헷갈리지 않으셔도 됩니다. 한쪽은 동작용, 한쪽은 기록용입니다.

각 클립을 끝낼 때 완료 또는 /wrap을 입력하면 스킬이 알아서 정리합니다. README.md 생성, progress.json 업데이트, 다음 클립 안내까지 한 번에 챙겨줘요.


자주 막히는 포인트

이론 챕터라 만지는 게 없어서 막힐 일은 적지만, 다음 클립으로 가기 전에 미리 짚어둘 게 있어요.

증상원인해결
스킬 폴더 어디에 둬야 하는지 헷갈림강의/학습 워크스페이스 혼동활성 스킬은 ~/fastcampus-cc/.claude/skills/. my-cc-study/ 아님
~/.claude/skills/와 워크스페이스 안 .claude/skills/ 차이전역 vs 로컬전역은 모든 워크스페이스에서 동작. Part 6은 강의 워크스페이스 안에 둬요
description 매칭 안 됨description이 너무 짧거나 추상적"딥리서치·심층 조사·여러 출처 종합" 식으로 자연어 키워드 여러 개 넣기
gptaku-plugins 마켓플레이스가 뭔지Clip 3·4·9에서 등장하는 외부 플러그인 모음해당 클립에서 한 줄 명령으로 등록·설치. 미설치 시 우회 흐름도 안내됨
Part 5를 안 했는데 Part 6 가능한가자산 사슬 끊김 우려가능. 다만 Clip 9는 GWS CLI 필요해서 Part 5 실습 20을 먼저 보고 오는 게 매끄러움
9개를 다 만들어야 하는지분량 부담아니요. 본인 일에 가까운 1~2개만 만들어도 충분. 메타 흐름이 손에 익는 게 목표

다음 클립

→ Part 6 / Clip 2: 딥리서치 스킬 직접 만들기

다음 클립부터 진짜로 만집니다. 첫 스킬은 deep-research예요. 메타 흐름 4단계를 손으로 한 번 굴려보면서 본인 첫 스킬을 만들고, 김밥 맛집 주제로 호출해서 결과까지 확인합니다.

딥리서치 스킬 직접 만들기

메타 흐름 4단계 첫 체험 — deep-research v1

Part 6 · Clip 2

이 클립에서 만드는 것

본인 손으로 처음 만드는 스킬이에요. 이름은 deep-research. 어떤 주제를 입력하면 여러 출처에서 자료를 모아 한 장으로 정리해주는 워크플로우입니다.

다만 결과물만 보고 끝나면 의미가 적어요. 메타 흐름 4단계를 손으로 한 바퀴 굴려보는 게 진짜 목적입니다. Part 6의 9개 실습이 모두 같은 4단계를 반복하므로, Clip 2에서 손에 익혀두면 나머지 8개는 같은 박자로 따라옵니다.

전과 후의 차이는 이렇습니다.

  • 새 스킬을 만들 때 "딥리서치 스킬 만들어줘" 같은 명령형 대신, "워크플로우를 어떻게 구성해야 할까?"로 시작하는 습관이 생깁니다.
  • AI에게 맡길 단계와 본인이 정해야 할 단계를 구분하는 감이 잡힙니다.
  • 강의 워크스페이스 안에 본인 자산 스킬 폴더 하나가 처음 생깁니다 — 이름은 deep-research.

이번 클립에서 할 일은 네 단계입니다. 워크플로우 조사 → 단계 보완 → SKILL.md 작성 → 호출 테스트. 마지막에 김밥 맛집 주제로 호출해서 결과까지 확인합니다.


핵심 개념

메타 흐름 4단계 — 왜 "그냥 만들어줘"가 안 통하나

스킬을 만들 때 첫 프롬프트를 어떻게 던지느냐에 따라 결과의 깊이가 갈립니다. 두 가지를 비교해 보세요.

나쁜 시작
"딥리서치 스킬 만들어줘"
→ 클로드코드가 곧장 SKILL.md를 쓰기 시작
→ 본인이 그동안 알고 있던 "딥리서치"의 한계가 그대로 반영됨

좋은 시작
"어떤 주제에 대해 깊이 조사해서 정리하려는데,
 어떻게 워크플로우를 구성해야 할까?"
→ 클로드코드가 먼저 "딥리서치를 어떻게 하는지" 그 자체를 조사
→ 다관점 출처 수집, 교차 검증, 종합, 출처 명시 같은 단계가 펼쳐짐
→ 그중에 본인이 모르던 단계가 들어옴

차이는 한 문장이지만 결과는 크게 갈립니다. 좋은 시작은 본인 머릿속 한계를 넘어서는 단계를 끌어와줘요. 그래서 이번 클립부터 9개 실습 모두 같은 4단계를 따릅니다.

[1단계] 워크플로우 잡기 (방법론 조사)
   "[하려는 일] 만들려는데, 어떻게 워크플로우를 구성해야 할까?"

[2단계] 보완 + 실행 가능 단계 정의
   정리된 단계를 같이 살펴보고 보완
   → AI에게 맡길 단계와 코드로 분리할 단계를 여기서 구분

[3단계] 스킬로 만들기
   정의된 흐름을 SKILL.md로 정리

[4단계] 만든 스킬로 테스트·검증
   실제로 호출해서 description 매칭과 결과 확인 + 부족한 부분 손보기

이 4단계가 손에 익으면 Part 6을 마친 뒤에도 본인 일에 새 스킬을 만들 때 같은 박자로 시작할 수 있습니다. SKILL.md 작성 자체는 클로드코드가 합니다. 본인이 챙겨야 할 건 시작 프롬프트뿐이에요.

스킬 폴더 구조 — ~/fastcampus-cc/.claude/skills/

만들어진 스킬은 강의 워크스페이스 안에 폴더 한 장으로 떨어집니다.

~/fastcampus-cc/.claude/skills/
└── deep-research/
    └── SKILL.md         ← 본문 (description + 워크플로우 정의)

SKILL.md 맨 위에 description 한 줄이 있어야 클로드코드가 호출 시 매칭합니다. "딥리서치", "깊이 조사", "여러 출처로 종합" 같은 자연어 키워드를 description에 넉넉히 넣어두면, 사용자가 어떤 표현으로 부르든 같은 스킬이 발동돼요.

v1만 만든다 — 완성은 다음 클립에서

오늘 만들 결과물은 본인 v1입니다. 미리 만들어둔 풀스펙 스킬과는 아직 차이가 큽니다. 출처가 부족할 수도 있고, 인터랙티브 질문이 빠질 수도 있어요.

괜찮습니다. 본인 v1을 한 번 만들어야 Clip 3에서 풀스펙과 비교했을 때 본인이 놓친 단계가 보입니다. 처음부터 완벽하게 만들려고 하지 마세요.


진행 흐름

1. /part06 호출 → Clip 2 선택

강의 워크스페이스에서 클로드코드를 켜고 시작합니다.

/part06

스킬이 진도를 확인하고 클립 선택지를 띄웁니다. Clip 2를 선택하면 작업 폴더가 자동으로 준비돼요.

✓ ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습23-딥리서치스킬/ 준비 완료
✓ ~/fastcampus-cc/.claude/skills/ 준비 완료

진도 폴더는 결과물 기록용이고, .claude/skills/는 만든 스킬이 활성화될 자리입니다. 두 폴더가 분리돼 있는 이유는 Clip 1의 결과물 저장 규칙에서 짚었던 그대로예요.

2. STEP 1 — 워크플로우 잡기

클로드코드 세션에서 명령형 대신 의문문으로 시작합니다.

어떤 주제에 대해 깊이 조사해서 정리하려는데,
어떻게 워크플로우를 구성해야 할까?

클로드코드가 "딥리서치를 어떻게 하는지"를 직접 조사합니다. 1~2분 정도 걸려요. 정리된 단계는 보통 이런 모습입니다.

1. 주제 키워드 분해 (하위 키워드 — 지역·종류·후기·가격·트렌드 등)
2. 다관점 출처 수집 (블로그·SNS·뉴스)
3. 교차 검증 (충돌 정보 식별)
4. 종합 (핵심 한 줄 + 카테고리별 정리 + 한계 명시)
5. 한국어 정리 + 출처 명시

조사 결과에 따라 단계 수와 내용은 조금씩 달라집니다. 5단계가 7단계가 될 수도 있고, 항목 이름이 바뀔 수도 있어요. 그게 정상입니다.

3. STEP 2 — 보완 + 실행 가능 단계 정의

정리된 단계를 보면 한두 개는 개선할 부분이 보입니다. 예를 들어 "교차 검증"이 너무 모호하거나, "출처 명시" 단계가 빠져 있을 수 있어요.

정리된 단계들 보니까 좋은데, 두 가지만 보완하면 좋겠어.
1) 한국 사이트 가중치(블로그·디시·네이버 카페) 추가
2) 모은 자료에서 충돌 정보 발견 시 어떻게 처리할지 명시

클로드코드가 단계를 다듬어줍니다. 이때 AI에게 맡길 단계와 본인이 정해야 할 단계를 구분해두면 됩니다.

  • AI에게 맡길 단계: 자료 수집, 종합, 정리 — 매번 다른 결과가 나와도 OK인 부분
  • 본인이 정해야 할 단계: 키워드 분해 방식, 출처 가중치, 출력 형식 — 매번 같은 규칙으로 동작해야 하는 부분

Clip 2에서는 모든 단계를 SKILL.md 본문에 자연어로 적습니다. 결정론 코드 분리(스크립트로 빼는 패턴)는 CH02 Clip 5부터 제대로 다뤄요.

4. STEP 3 — SKILL.md로 스킬화

이제 클로드코드한테 SKILL.md 작성을 부탁합니다.

지금 정의한 워크플로우를 SKILL.md로 정리해줘.
- 위치: ~/fastcampus-cc/.claude/skills/deep-research/SKILL.md
- description에 "딥리서치", "깊이 조사", "심층 조사", "여러 출처 종합" 키워드 넣기
- 워크플로우 단계를 그대로 본문에 옮기기
- 한국어로 답변 + 결과물은 ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습23-딥리서치스킬/{주제}-{날짜}.md 에 저장

저장이 끝나면 안티그래비티 에디터에서 새로 생긴 SKILL.md를 한 번 열어보세요. description 한 줄과 본문에 단계가 그대로 들어가 있어야 합니다.

스킬은 클로드코드 세션 시작 시 로드돼요. 새 스킬을 만든 직후엔 /exit 후 다시 claude로 켜야 인식됩니다.

exit
claude

5. STEP 4 — 만든 스킬로 테스트·검증

재시작한 세션에서 자연어로 호출합니다.

전국 김밥 맛집에 대해 깊이 리서치해줘

description이 매칭되면 deep-research 스킬이 발동되면서 SKILL.md에 적힌 단계대로 작업이 시작됩니다. 진행 중에 클로드코드가 어떤 단계를 어떻게 수행하는지 보세요.

결과는 두 파일로 떨어집니다.

  • 실습23-딥리서치스킬/김밥맛집-{날짜}.md — 본인 v1 스킬의 산출물
  • 실습23-딥리서치스킬/김밥-검증.md — 호출이 잘 됐는지 확인 메모 (직접 작성)

검증 메모에는 두 가지를 적어두세요.

1. description 매칭 확인 — "전국 김밥 맛집" 입력에 deep-research가 자동 발동됐나?
2. 결과물 만족도 — 어떤 단계가 약했나? 출처가 적었나? 정리가 거칠었나?

이 메모가 Clip 3의 비교·개선 사이클에서 출발점이 됩니다.

6. 본인 v1의 한계 인식 + Clip 3 예고

만든 결과물을 보면 부족한 부분이 보일 거예요. 예를 들면 이런 것들.

  • 출처가 5~10개 정도로 적다 — 풀스펙 스킬은 80개+ 출처를 모음
  • 멀티에이전트 패턴이 없다 — 한 번에 한 가지만 조사
  • 결과물이 단일 마크다운 한 장 — 풀스펙은 세션 폴더 + 인터랙티브 질문 포함

괜찮습니다. 본인 v1의 한계를 직접 본 게 오늘의 핵심 수확입니다. Clip 3에서는 이 v1과 미리 만들어둔 풀스펙 스킬을 같은 폴더에 모아놓고 5관점에서 비교합니다. 본인이 놓친 단계가 시각적으로 드러나요.


결과물

이번 클립이 끝나면 세 가지가 남습니다.

결과물위치설명
SKILL.md~/fastcampus-cc/.claude/skills/deep-research/SKILL.md본인 첫 스킬 (활성화된 v1)
김밥맛집-{날짜}.md실습23-딥리서치스킬/호출 결과 산출물
김밥-검증.md실습23-딥리서치스킬/description 매칭·결과 만족도 메모

강의 워크스페이스에서 완료 또는 /wrap을 입력하면 스킬이 정리합니다. progress.json의 practice_completed에 "실습 23"이, skills_created에 "deep-research"가 자동으로 기록돼요. README.md도 자동 생성됩니다.

학습 워크스페이스 자산은 Clip 1 — 결과물 저장 규칙과 동일한 두 곳 구조로 들어갑니다. 활성 스킬은 .claude/skills/, 진도 기록은 50-my-work/ 안.


자주 막히는 포인트

증상원인해결
/part06이 실행되지 않음강의 워크스페이스 밖에서 호출안티그래비티에서 ~/fastcampus-cc/를 열고 클로드코드 실행
워크플로우 조사가 1~2단계만 나옴의문문이 너무 짧음"어떻게 워크플로우를 구성해야 할까?" 뒤에 "한국어 자료 위주", "충돌 정보 처리도 포함" 같은 맥락 한 줄 추가
AI가 곧장 SKILL.md를 쓰려고 함명령형으로 인식됨"먼저 워크플로우만 정리해줘. SKILL.md는 그다음." 하고 끊어 요청
새 스킬이 호출 안 됨재시작 안 함exit 후 claude로 다시 켜기. 스킬은 시작 시 로드
description이 매칭 안 됨키워드가 너무 좁음"딥리서치" 하나만 두지 말고 "심층 조사·여러 출처·종합·리서치" 식으로 자연어 키워드 4~5개
결과물 저장 위치가 엉뚱한 데로 감SKILL.md에 경로가 안 박혀 있음SKILL.md를 다시 열어 "결과물은 ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습23-딥리서치스킬/-.md 에 저장" 명시
v1이 너무 허접해 보임풀스펙과 비교됨정상입니다. Clip 3 비교·개선 사이클에서 다듬으면 됨 — 처음부터 완벽 X
SKILL.md 파일을 직접 손으로 쓰고 싶음작성 과정이 궁금함가능. 다만 description 형식(YAML frontmatter)을 강의 워크스페이스 다른 스킬 참조해 맞추기
김밥 맛집 말고 본인 주제로 해보고 싶음응용 욕구OK. 단 첫 호출은 의도된 결과 확인 위해 김밥으로, 두 번째 호출에서 본인 주제

다음 클립

→ Part 6 / Clip 3: deep-research v1 분석·비교·개선 → v2

다음 클립에서는 오늘 만든 v1을 풀스펙 스킬과 같은 폴더에 모아놓고 비교합니다. 5관점(출처 수, 멀티에이전트, 세션 폴더, 산출 형식, 인터랙티브 질문)에서 차이를 분석한 뒤, 본인 SKILL.md에 손으로 1~2가지 개선을 더해 v2로 만들어요. 스킬은 한 번 만들고 끝이 아니라 라이프사이클이라는 메시지의 첫 적용입니다.

v1 분석·비교·개선 → v2

본인 스킬과 풀스펙 비교 + 라이프사이클

Part 6 · Clip 3

이 클립에서 만드는 것

Clip 2에서 만든 deep-research v1이 있습니다. 이번 클립에서는 그 v1을 같은 폴더에 풀스펙 스킬과 모아놓고 비교한 뒤, 부족한 부분 1~2가지를 본인 손으로 SKILL.md에 추가해 v2로 만듭니다.

여기서 중요한 건 결과물 자체가 아니라 사이클이에요. 스킬은 한 번 만들면 끝이 아니라 라이프사이클이라는 메시지를 손으로 한 번 굴려보는 거죠. v1 → v2 → v3로 이어지는 패턴이 손에 익으면, 강의를 끝낸 뒤 본인 일에 만든 스킬도 같은 방식으로 다듬을 수 있습니다.

전과 후의 차이는 이렇습니다.

  • 같은 김밥 주제로 v1과 풀스펙을 같은 폴더에 펼쳐놓고 본인 눈으로 차이를 봅니다. 출처 수, 멀티에이전트, 인터랙티브 질문 같은 단계가 시각적으로 드러나요.
  • 본인 SKILL.md를 직접 텍스트 에디터로 열어 한두 줄 손봅니다. Part 5에서 설정한 trash-guard hook이 자동으로 백업해줘서, 잘못 만져도 복원이 됩니다.
  • 같은 주제로 v2를 호출해 Before/After를 한 화면에서 비교합니다. 5분짜리 디벨롭의 효과가 명확히 보여요.

이번 클립에서 할 일은 다섯 단계입니다. 폴더에 두 결과 모아놓기 → 본인 SKILL.md 구조 분석 → 5관점 비교 → SKILL.md 손으로 v2 작성 → v2 호출.


핵심 개념

"라이프사이클" — Clip 2가 만들기 전 사이클이면, Clip 3는 만든 후 사이클

스킬은 v1 한 번 만들고 끝이 아닙니다. 처음 만든 v1에는 아직 부족한 부분이 남아 있어서, 한 번 굴려보면 보강할 단계가 드러나요. 그 부족한 부분을 SKILL.md에 손으로 추가하면 v2가 됩니다.

[Clip 2 메타 흐름]                 [Clip 3 라이프사이클]
                                  
워크플로우 잡기                    v1 ↔ 풀스펙 폴더에 모아놓기
   ↓                                 ↓
보완 + 단계 정의                   본인 SKILL.md 구조 분석
   ↓                                 ↓
SKILL.md 작성 (v1)                 5관점 비교
   ↓                                 ↓
호출 테스트                        SKILL.md 손으로 디벨롭 (v2)
                                     ↓
                                  v2 호출 + Before/After

같은 4단계 아니냐 싶을 수 있지만 결이 다릅니다. Clip 2는 "내가 모르는 단계까지 끌어오는" 사이클이고, Clip 3는 "이미 있는 것을 개선하는" 사이클입니다. 둘 다 손에 익혀두면 본인 일에 만든 스킬도 시간이 지나면서 자연스럽게 진화합니다.

별도 폴더 패턴 — 같은 폴더에 두 결과 모아놓기

비교를 손쉽게 하려면 두 결과를 한 폴더에 펼쳐놓는 게 가장 빠릅니다. 폴더 구조는 이렇게 갑니다.

~/fastcampus-cc/50-my-work/Part06-스킬만들기/
└── 실습24-스킬분석개선/
    ├── 본인-v1-결과/
    │   └── 김밥맛집-{날짜}.md          ← Clip 2 산출이 자동 복사됨
    ├── 풀스펙-참고-결과/
    │   └── 전국_김밥_맛집_{날짜}/      ← 풀스펙 deep-research 호출 결과
    ├── 구조-분석.md
    ├── 비교-분석.md (5관점)
    ├── deep-research-v2-SKILL.md       ← v2 백업 사본
    └── 김밥맛집-v2-{날짜}.md           ← v2 호출 결과

/part06 Clip 3 자동 셋업이 위 폴더와 Clip 2 산출 복사까지 처리해줍니다. 본인이 직접 cp 같은 명령을 입력하지 않아도 됩니다.

5관점 비교 — 출처 / 멀티에이전트 / 세션 폴더 / 산출 형식 / 인터랙티브

본인 v1과 풀스펙 결과를 같은 폴더에서 본 다음, 다섯 가지 관점에서 차이를 짚습니다.

관점본인 v1풀스펙 (예시)
출처 수5~10개80개+
멀티에이전트단일 호출키워드별 병렬
세션 폴더단일 마크다운 1장날짜별 세션 폴더 + 메타
산출 형식마크다운마크다운 + HTML 리포트
인터랙티브 질문없음호출 시 옵션 질문

모든 5관점을 본인 v2에 다 적용할 필요는 없습니다. 본인 일에 가장 영향이 큰 1~2가지만 골라 추가하세요. 풀스펙을 그대로 베끼는 게 목표가 아닙니다. 본인이 다음에 굴릴 때 부족했던 단계를 채우는 게 목표예요.

풀스펙은 어디서 가져오나 — gptaku-plugins 마켓플레이스

비교 대상이 되는 풀스펙 deep-research 스킬은 gptaku-plugins 마켓플레이스에서 받습니다. 외부 플러그인 모음이라 한 번 등록해두면 다음 클립에서도 같이 씁니다.

/plugin marketplace add fivetaku/gptaku_plugins
/plugin install deep-research@gptaku-plugins

설치 후 클로드코드 재시작하면 /deep-research 슬래시 커맨드로 풀스펙 스킬을 호출할 수 있어요.


진행 흐름

1. /part06 호출 → Clip 3 선택

강의 워크스페이스에서 클로드코드를 시작하고 Clip 3를 선택합니다.

/part06

자동 셋업이 다음을 처리해줍니다.

✓ clip-02 deep-research v1 확인됨
✓ 실습23 v1 산출 1개 → 본인-v1-결과/ 복사 (원본 보존)
✓ 풀스펙 deep-research 플러그인 확인됨 — 비교 대상
✓ trash-guard hook 확인됨
✓ 진도 폴더 + 비교 폴더 패턴 (본인-v1-결과 / 풀스펙-참고-결과) 준비 완료

풀스펙 플러그인이 미설치 상태면 안내가 뜹니다. 한 줄 명령으로 설치 후 다시 /part06 Clip 3를 호출하세요.

2. STEP 1 — 풀스펙 결과를 같은 폴더에 모아놓기

풀스펙 deep-research를 호출하면서 출력 경로를 같은 비교 폴더로 지정합니다.

전국 김밥 맛집 주제로 딥리서치 해줘.
결과는 ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습24-스킬분석개선/풀스펙-참고-결과/
에 저장해줘.

5~10분 정도 걸려요. 진행 중에 어떤 단계가 풀스펙에서 실행되는지 화면을 한 번 봐두세요. 키워드 분해, 병렬 출처 수집, 인터랙티브 질문 같은 단계가 보입니다.

완료 후 안티그래비티에서 비교 폴더를 열면 두 결과가 나란히 보입니다.

실습24-스킬분석개선/
├── 본인-v1-결과/김밥맛집-{날짜}.md
└── 풀스펙-참고-결과/전국_김밥_맛집_{날짜}/

3. STEP 2 — 본인 SKILL.md 구조 분석

본인이 Clip 2에서 만든 ~/fastcampus-cc/.claude/skills/deep-research/SKILL.md를 클로드코드한테 분석시킵니다.

내가 만든 ~/fastcampus-cc/.claude/skills/deep-research/SKILL.md
구조를 분석해서 약점을 지적해줘.
결과는 ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습24-스킬분석개선/구조-분석.md
에 저장해줘.

구조-분석.md에는 description, 워크플로우 단계 수, 결과물 저장 규칙 같은 항목별 평가가 한 장으로 정리됩니다.

4. STEP 3 — 5관점 비교

이제 v1 결과와 풀스펙 결과를 5관점에서 비교합니다.

본인-v1-결과/김밥맛집-{날짜}.md 와
풀스펙-참고-결과/전국_김밥_맛집_{날짜}/ 산출물을
다섯 관점에서 비교해줘.

관점:
1) 출처 수와 출처 다양성
2) 멀티에이전트 / 병렬 처리 여부
3) 세션 폴더 vs 단일 파일
4) 산출 형식 (마크다운만? HTML 추가?)
5) 호출 시 인터랙티브 질문 여부

결과는 비교-분석.md 에 표 형식으로 저장.

비교-분석.md를 보면 본인 v1에서 어느 칸이 비어 있는지 한눈에 들어와요. 다섯 칸 중 부족한 게 34개일 텐데, 다 채우려고 하지 마세요. **본인 일에 가장 영향이 큰 12가지만** 다음 단계로 가져갑니다.

5. STEP 4 — SKILL.md 손으로 디벨롭 → v2

가져갈 개선 1~2가지를 정했으면, 클로드코드한테 SKILL.md를 손봐달라고 요청합니다.

~/fastcampus-cc/.claude/skills/deep-research/SKILL.md를 다음 두 가지 개선과 함께 v2로 디벨롭해줘.

1) 호출 시 인터랙티브 질문 추가
   - 정렬 기준 (최신순/관련도순)
   - 출처 가중치 (한국 블로그 위주 / 글로벌 위주 / 둘 다)

2) 결과물에 출처 카테고리 헤더 추가
   - 블로그 / 뉴스 / SNS / 커뮤니티 별로 묶기

수정 전에 백업 떠두기 — trash-guard hook이 자동으로 떠줘.
디벨롭한 SKILL.md 사본을 ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습24-스킬분석개선/deep-research-v2-SKILL.md 에 저장.

trash-guard hook이 SKILL.md를 수정하기 전에 자동으로 .bak.YYYYMMDD-HHMMSS 백업을 떠줍니다. 만약 v2가 더 안 좋아지면 백업으로 되돌리면 돼요.

6. STEP 5 — v2 호출 + Before/After

스킬이 수정됐으니 클로드코드를 재시작한 뒤 같은 주제로 v2를 호출합니다.

exit
claude
전국 김밥 맛집에 대해 깊이 리서치해줘

이번엔 인터랙티브 질문이 먼저 뜨고, 답변에 따라 결과물이 달라집니다. 출처 카테고리 헤더도 들어가요.

결과를 실습24-스킬분석개선/김밥맛집-v2-{날짜}.md로 저장하고, Clip 2의 v1 결과(본인-v1-결과/김밥맛집-{날짜}.md)와 같은 화면에 펼쳐서 차이를 봅니다.

5분짜리 디벨롭으로 결과물의 깊이가 얼마나 바뀌는지 한눈에 들어와요. 이게 라이프사이클의 첫 한 바퀴입니다.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
구조-분석.md실습24-스킬분석개선/본인 v1 SKILL.md 구조 평가
비교-분석.md실습24-스킬분석개선/5관점 비교 표
SKILL.md.bak.{날짜}~/fastcampus-cc/.claude/skills/deep-research/trash-guard hook이 자동 떠준 v1 백업
SKILL.md (v2)~/fastcampus-cc/.claude/skills/deep-research/디벨롭된 본인 스킬
deep-research-v2-SKILL.md실습24-스킬분석개선/v2의 진도 폴더 사본
김밥맛집-v2-{날짜}.md실습24-스킬분석개선/v2 호출 결과

완료 또는 /wrap을 입력하면 progress.json의 practice_completed에 "실습 24"가 추가됩니다. 비교·개선 사이클은 메타 작업이라 skills_created에는 새 항목이 들어가지 않아요. deep-research는 그대로 v2로 진화한 상태입니다.


자주 막히는 포인트

증상원인해결
풀스펙 plugin이 확인되지 않음gptaku-plugins 마켓플레이스 미설치/plugin marketplace add fivetaku/gptaku_plugins 후 /plugin install deep-research@gptaku-plugins
풀스펙 호출이 5~10분 넘게 걸림정상 (대량 출처 병렬 수집)기다리거나 백그라운드로 두고 다른 일 진행
v1 산출이 비교 폴더에 안 보임Clip 2 산출물 위치가 달랐음실습23-딥리서치스킬/ 안 확인. 없으면 Clip 2 WRAP 부터 다시
SKILL.md 수정 후 v2 호출이 안 됨클로드코드 재시작 안 함exit 후 claude로 다시 켜기
백업 파일 안 보임trash-guard hook 미설정Part 5 Clip 4에서 만든 hook 확인. 없으면 수동 cp SKILL.md SKILL.md.bak
비교 분석이 표가 아니라 문장으로 나옴"표 형식" 명시 안 됨"마크다운 표로 저장해줘" 재요청
5관점 다 채우려고 무리함풀스펙 따라잡기 욕심1~2가지만. 본인 일에 영향 클 단계 우선
v2가 v1보다 안 좋아짐너무 많이 수정백업(SKILL.md.bak.*)으로 롤백 후 1가지만 다시 적용
인터랙티브 질문이 안 뜸description에 호출 트리거 누락SKILL.md 본문에 AskUserQuestion 사용 시점 명시
출처 카테고리가 결과물에 반영 안 됨SKILL.md에 출력 양식 명시 안 됨SKILL.md 본문에 "출처는 블로그/뉴스/SNS/커뮤니티로 헤더 분리" 추가

다음 클립

→ Part 6 / Clip 4: skillers-suda — 스킬 만들기 자체를 자동화한 도구

다음 클립에서는 손으로 SKILL.md를 짜는 대신, 인터뷰 한 번으로 스킬을 자동 생성해주는 도구를 써봅니다. Clip 2의 메타 흐름을 손으로 한 번, Clip 4의 자동화 도구로 한 번. 두 방식을 다 익혀두면 새 아이디어가 떠올랐을 때 어느 쪽으로 갈지 본인이 선택할 수 있어요.

skillers-suda

스킬 만들기 자체를 자동화한 도구

Part 6 · Clip 4

이 클립에서 만드는 것

Clip 2에서는 메타 흐름 4단계를 손으로 굴려서 deep-research v1을 만들었어요. 이번엔 그 4단계를 인터뷰 흐름으로 자동화한 도구를 써봅니다. 이름은 skillers-suda — 네 명의 전문가 AI가 아이디어 분석가·스킬 작가·검증자·통합자 역할로 수다를 떨면서 SKILL.md를 자동 생성해줍니다.

이 클립은 두 부분으로 갈라집니다.

  • 1부 도구 설명 — skillers-suda가 어떻게 동작하는지, 왜 만들어졌는지, 어떤 상황에 적합한지 살펴봅니다.
  • 2부 활용 — 본인 업무에 가까운 주제 한 줄을 정해서, skillers-suda로 두 번째 스킬을 직접 생성합니다.

2부에서 어떤 스킬을 만들지는 본인이 정합니다. 예를 들어 영업 일을 하는 분이라면 "고객사 미팅 전 사전 조사 정리", 마케팅 일을 하는 분이라면 "경쟁사 신제품 모니터링" 같은 식이에요. 김밥 맛집 같은 시연 주제 말고, 본인 일에 바로 가져갈 만한 걸 골라야 마지막에 호출했을 때 가치가 보입니다.

이번 클립에서 할 일은 여섯 단계입니다. 1부 도구 설명 → 본인 아이디어 정하기 → skillers-suda 호출 → 인터뷰 답변 → 자동 생성된 스킬 호출 → 다듬기.


핵심 개념

정석 vs 자동 — 두 방식의 비교

같은 일을 두 가지 방법으로 할 수 있을 때, 둘 다 익혀두면 상황에 따라 골라 쓸 수 있어요. Clip 2의 정석 방식과 Clip 4의 자동 방식이 그런 관계입니다.

항목Clip 2 정석skillers-suda
작성 방식본인이 SKILL.md를 직접 짜 나감4명 전문가 AI 인터뷰로 자동 생성
소요 시간20분5~7분
구조 이해손으로 짜봐서 단계별 의도가 잡힘블랙박스에 가까움
본인 일 응용한 번 익히면 평생 쓸 수 있음새 아이디어가 떠올랐을 때 빠른 첫 동작
추천 시점처음 1~2개 스킬 만들 때손에 메타 흐름이 익은 뒤, 빠르게 원형을 만들고 싶을 때

Clip 2 정석은 구조를 이해하는 용도, Clip 4 skillers-suda는 평생 쓰는 도구입니다. 새 스킬 아이디어가 떠오를 때마다 손으로 SKILL.md를 짜기엔 부담이 크니까, 메타 흐름을 한 번 익힌 뒤로는 이 도구를 부르는 게 일상 패턴이 됩니다.

4명 전문가 AI — 누가 무엇을 하나

skillers-suda를 호출하면 한 명의 AI가 답하는 게 아니라 네 명의 역할이 순서대로 나옵니다.

[아이디어 분석가]  → 본인 한 줄 아이디어 듣고 "정확히 뭘 하고 싶은가?" 질문
       ↓
[스킬 작가]       → 분석된 의도 기반으로 워크플로우 단계 초안
       ↓
[검증자]         → 단계에 빠진 게 있는지, 모호한 표현이 있는지 검토
       ↓
[통합자]         → 최종 SKILL.md 형태로 묶어 저장

각 단계마다 본인에게 한두 가지 짧은 질문이 돌아옵니다. 답이 길 필요 없어요. 한 줄씩 답하면서 자연스럽게 메타 흐름이 인터뷰 형태로 흘러갑니다.

자동 생성된 스킬도 다듬어야 한다 — Clip 3 사이클 재사용

skillers-suda가 만든 SKILL.md가 본인 일에 100% 맞지는 않아요. 처음 호출해서 결과를 본 다음, 부족하거나 본인 일과 안 맞는 부분 1~2가지를 손으로 손봅니다. 이 단계가 Clip 3 — 라이프사이클에서 익힌 비교·개선 사이클의 재적용이에요.

자동 생성 → 다듬기로 이어지는 흐름이 손에 익으면, 본인 일에 새 스킬 만들 때마다 같은 박자로 굴릴 수 있습니다.


진행 흐름

1. /part06 호출 → Clip 4 선택

강의 워크스페이스에서 클로드코드를 시작합니다.

/part06

자동 셋업이 skillers-suda 플러그인 설치 여부를 확인합니다.

✓ skillers-suda 플러그인 확인됨
✓ 진도 폴더 준비 완료

미설치 상태면 안내가 뜹니다. 한 줄 명령으로 설치한 뒤 다시 진행하세요.

/plugin marketplace add fivetaku/gptaku_plugins
/plugin install skillers-suda@gptaku-plugins

설치 후 클로드코드 재시작이 필요합니다.

2. STEP 1 — 1부 도구 설명 (~2분)

스킬이 처음에 1부 도구 설명을 한 화면으로 띄워줍니다. 위의 "정석 vs 자동" 표와 "4명 전문가 AI" 흐름이 한 번에 보입니다.

여기서 본인에게 맞을지 판단해보세요. 만약 새 스킬 아이디어가 아직 없다면, Clip 4는 일단 도구 설명만 보고 넘어가도 됩니다. 본인 아이디어가 떠올랐을 때 다시 호출해도 결과는 같아요.

3. STEP 2 — 본인 아이디어 한 줄 정하기 (~1.5분)

어떤 스킬을 만들지 정합니다. 한 줄로 짧게 적어두면 좋아요. 예시.

- 마케팅: "경쟁사 신제품 모니터링 — 매주 출시 정보 정리"
- 영업: "고객사 미팅 전 사전 조사 — 회사 동향 + 최근 보도"
- 운영: "주간 보고용 데이터 요약 — 지표 5개 한 페이지"
- 학습: "관심 분야 새 논문 정리 — 매월 핵심 5편"

본인 일에 가장 자주 반복하는 작업 중 하나를 고르세요. 머릿속에 막연한 아이디어 상태로 적어도 괜찮습니다. 다음 단계에서 skillers-suda가 구체화를 도와줍니다.

4. STEP 3 — skillers-suda 호출 + 4명 인터뷰 시작

자연어로 호출합니다.

경쟁사 신제품 모니터링 스킬 만들고 싶어. skillers-suda 호출.

또는 슬래시 커맨드로.

/skillers-suda

호출되면 첫 번째 역할인 아이디어 분석가가 나와서 한두 가지 질문을 던집니다. 예를 들면.

[아이디어 분석가]
"경쟁사 신제품 모니터링"에서 두 가지 확인할게요.

1) 경쟁사는 미리 정해진 회사 목록입니까, 매번 자유 입력입니까?
2) 모니터링 결과는 어떻게 받고 싶으세요? (이메일 / 슬랙 / 마크다운 파일)

한 줄씩 답하면 됩니다.

5. STEP 4 — 인터뷰 답변 + 자동 생성

답변을 이어가면 스킬 작가 → 검증자 → 통합자 순서로 역할이 바뀝니다. 5~7분 동안 두세 번 정도 짧은 질문이 더 돌아오고, 마지막에 SKILL.md가 자동으로 저장돼요.

✓ ~/fastcampus-cc/.claude/skills/competitor-monitor/SKILL.md 생성 완료
✓ 실습25/skill-source/SKILL.md 사본 저장

스킬 이름은 인터뷰 답변에 따라 자동으로 정해집니다. 영문 kebab-case로 떨어져요. 마음에 안 들면 통합자 단계에서 "이름을 ~로 바꿔줘"라고 요청할 수 있습니다.

6. STEP 5 — 첫 호출 시연

스킬이 새로 생겼으니 클로드코드를 재시작한 뒤 자연어로 호출합니다.

exit
claude
이번 주 경쟁사 신제품 모니터링 돌려줘

description이 매칭되면 새 스킬이 발동되면서 SKILL.md에 적힌 단계대로 작업이 시작됩니다. 5~7분짜리 인터뷰로 만들어진 스킬이 실제 결과물까지 한 번에 굴러가는 걸 한 화면에서 보세요.

7. STEP 6 — 다듬기 (Clip 3 사이클 재사용)

첫 호출 결과를 보고 부족한 부분 1~2가지를 손으로 손봅니다. SKILL.md를 직접 열어 한두 줄 추가하거나, 클로드코드한테 부탁해도 됩니다.

방금 만든 competitor-monitor SKILL.md에서 출처 카테고리를
"공식 보도 / 외부 매체 / 커뮤니티"로 분리하는 단계 추가해줘.

Part 5에서 설정한 trash-guard hook이 SKILL.md 백업을 자동으로 떠줘서 잘못 만져도 복원이 됩니다. Clip 3 — 라이프사이클에서 익힌 비교·개선 사이클을 그대로 한 번 더 굴리는 거예요.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
SKILL.md~/fastcampus-cc/.claude/skills/{생성된-스킬명}/SKILL.mdskillers-suda가 자동 생성한 본인 두 번째 스킬
skill-source/SKILL.md실습25-스킬러들의수다/진도 폴더 사본
첫 호출 결과실습25-스킬러들의수다/생성된 스킬을 처음 굴려본 산출물
README.md실습25-스킬러들의수다/자동 생성된 4단계 + 본인 다듬기 1~2건 기록

완료 또는 /wrap을 입력하면 progress.json의 practice_completed에 "실습 25"가 추가되고, skills_created에 생성된 스킬명이 들어갑니다. 이름은 본인 인터뷰 답변에 따라 가변이라 미리 정해져 있지 않아요.


자주 막히는 포인트

증상원인해결
skillers-suda 플러그인 확인되지 않음gptaku-plugins 마켓플레이스 미설치/plugin marketplace add fivetaku/gptaku_plugins 후 /plugin install skillers-suda@gptaku-plugins
인터뷰 질문이 너무 많이 옴본인 아이디어가 모호함"한 번에 한 질문씩만, 5개까지" 추가 요청
인터뷰 질문이 1~2개만 오고 끝남skillers-suda가 빨리 결론 내려고 함"단계별로 더 깊게 물어봐줘" 재요청
자동 생성된 SKILL.md가 너무 일반적본인 답변이 추상적답변에 구체 도메인 단어 (회사명, 지표명) 한두 개씩 넣기
스킬 이름이 마음에 안 듦자동 명명통합자 단계에서 "이름을 ~로 바꿔줘" 또는 SKILL.md 폴더 이름 변경
새 스킬이 호출 안 됨재시작 안 함exit 후 claude로 재시작
description 매칭이 약함자동 생성 description이 좁음SKILL.md 열어 description 키워드 4~5개로 확장
Clip 2 정석 방식과 혼동됨둘 다 같은 결과를 만드는 것이 아닌지 의문정석은 구조 이해용, 자동은 일상 사용용. 둘 다 익혀두면 상황에 따라 선택
본인 일에 안 맞는 스킬이 만들어짐아이디어가 너무 막연STEP 2로 돌아가 한 줄 아이디어를 더 구체화 후 재호출

다음 클립

→ Part 6 / Clip 5: 공공 API 스킬 — TourAPI 여행 가이드

여기까지가 CH01 — 스킬 입문입니다. 정석 한 번, 비교·개선 한 번, 자동 도구 한 번 — 세 가지 방식으로 스킬을 만들어봤어요. 다음 클립부터는 CH02 — API 활용입니다. 외부 공공 API를 스킬에 끼우면서, SKILL.md 본문과 결정론 단계를 코드 스크립트로 분리하는 패턴을 익힙니다.

공공 API — TourAPI 여행 가이드

trip-advisor + 스크립트 분리 첫 도입

Part 6 · Clip 5

이 클립에서 만드는 것

CH01에서는 스킬 만들기 자체를 익혔어요. CH02부터는 외부 API를 스킬과 연결하는 작업이에요. 첫 번째는 공공데이터포털 TourAPI — 한국관광공사가 제공하는 무료 공공 API입니다.

만드는 스킬은 trip-advisor. "부산 여행 코스 짜줘" 같은 자연어 한 마디로 호출하면, 관광지·축제·숙박 정보를 자동으로 모아 종합 여행 가이드 한 장을 만들어줍니다. 시연은 부산 2박3일로 진행합니다.

이번 클립은 두 가지 새로운 패턴을 동시에 익혀요.

  • 외부 API 키 관리 — .env 파일에 API 키 한 줄 보관. .gitignore 등록 + Part 5 trash-guard hook이 안전장치예요.
  • 스크립트 분리 패턴 — SKILL.md 본문(AI 해석 영역)과 결정론 단계(API 호출, JSON 파싱)를 분리합니다. 결정론 단계는 scripts/tour_api.py로 빼서, 같은 입력에 같은 결과가 매번 나오게 보장해요.

이번 클립에서 할 일은 다섯 단계입니다. TourAPI 활용신청 → 워크플로우 잡기 → 단계 정의(AI vs 결정론) → 스킬화 + 스크립트 분리 → 부산 여행으로 호출 테스트.


핵심 개념

스크립트 분리 패턴 — AI에게 맡길 단계 vs 코드로 빼야 할 단계

SKILL.md 본문은 클로드코드가 매번 해석합니다. 단어 선택, 출력 형식, 정렬 순서가 매번 미세하게 달라져요. 자유도가 필요한 단계엔 좋지만, API 호출이나 JSON 파싱처럼 답이 정해진 단계까지 AI에 맡기면 결과가 흔들립니다.

[AI에게 맡길 단계 — SKILL.md 본문]
- 어떤 관광지를 고를지 판단
- 일정 순서 배치
- 한국어 가이드 톤으로 정리

[코드로 빼야 할 단계 — scripts/tour_api.py]
- TourAPI 엔드포인트 호출 (HTTP GET)
- 응답 JSON 파싱
- 필드명 매핑 + 빈 값 처리

같은 입력 → 같은 결과가 필요한 부분은 Python 스크립트로, 매번 다른 해석이 필요한 부분은 SKILL.md 본문으로. 이 구분은 CH02부터 CH03까지 5개 스킬에서 계속 반복돼요. Clip 5에서 손에 익혀두면 나머지 스킬들이 같은 패턴으로 따라옵니다.

TourAPI 5 액션 — 한 스크립트가 다섯 가지 일을 함

tour_api.py는 다섯 가지 액션을 처리합니다.

액션기능예
keyword키워드로 관광지 검색"부산 + 해운대"
festival축제 정보"2026년 5월 부산 축제"
area지역 코드로 관광지 묶음 조회"부산 광역시 전체"
stay숙박 정보"부산 숙박업소 목록"
detail특정 항목 상세 정보"해운대 해수욕장 상세"

스크립트 하나에 다섯 함수를 다 넣어도 되고, 액션별 파일로 분리해도 됩니다. 클로드코드한테 부탁할 때 "5 액션을 하나의 tour_api.py에 담아줘"라고 명시하면 됩니다.

API 키는 .env에 — 절대 SKILL.md에 박지 마세요

TourAPI 키처럼 비밀번호 격인 값은 SKILL.md나 스크립트에 직접 박으면 위험해요. 깃에 올라가는 순간 노출됩니다. 강의 워크스페이스에선 다음 위치에 한 줄로 보관합니다.

~/fastcampus-cc/.env
─────────────────────────
TOURAPI_SERVICE_KEY=발급받은_키_여기에

.gitignore에 이미 .env가 등록돼 있어서 깃엔 안 올라가요. Part 5 Clip 4에서 만든 trash-guard hook이 추가 안전장치 역할을 합니다 — .env를 실수로 삭제·덮어쓰기 하려고 하면 자동 차단됩니다.

Python 스크립트는 os.getenv("TOURAPI_SERVICE_KEY")로 값을 읽어 씁니다.

사전 준비 — TourAPI 활용신청 10분 대기

TourAPI는 무료지만 키 발급에 약 10분 대기가 있어요. 이번 클립 시작할 때 신청부터 넣어두고 다른 일을 하는 게 효율적입니다.

1. https://www.data.go.kr 접속 → 회원가입
2. "TourAPI" 검색 → "한국관광공사_국문관광정보" 활용신청
3. 활용 목적 한 줄 입력 (예: 학습용)
4. 신청 후 약 10분 대기 → 자동 승인 메일 도착
5. 마이페이지 → 인증키(Encoding) 복사

대기하는 동안 본 챕터의 핵심 개념 부분을 미리 읽거나, Clip 4에서 만든 다른 스킬을 다듬어도 됩니다.


진행 흐름

1. /part06 호출 → Clip 5 선택 + TourAPI 신청

강의 워크스페이스에서 시작합니다.

/part06

자동 셋업이 진도 폴더와 스크립트 폴더를 준비합니다.

✓ ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습26-공공API스킬/ 준비 완료
✓ ~/fastcampus-cc/.claude/skills/trip-advisor/scripts/ 준비 완료
✓ Python requests OK

여기서 TourAPI 활용신청부터 넣어두세요. 위 "사전 준비" 안내대로 진행한 뒤, 10분 대기 동안 STEP 1로 넘어가 워크플로우를 잡습니다.

2. STEP 1 — 워크플로우 잡기

클로드코드 세션에서 의문문으로 시작합니다.

공공 API로 여행 정보 가져와서 여행 가이드 만들려는데,
어떻게 워크플로우를 구성해야 할까?

클로드코드가 단계별 워크플로우를 정리해줍니다. 보통 이런 모습이에요.

1. 지역·기간·관심사 입력 받기
2. 관광지 검색 (TourAPI keyword 액션)
3. 같은 기간 축제 조회 (TourAPI festival 액션)
4. 숙박 후보 조회 (TourAPI stay 액션)
5. 일정 순서 배치 (1일차·2일차·3일차)
6. 한국어 가이드로 종합 정리 + 출처 명시

3. STEP 2 — 보완 + AI vs 결정론 분리

이 단계에서 갈리는 건 하나예요. 어느 단계를 코드로 빼고, 어느 단계를 AI에게 맡길지 구분하는 거죠.

정리된 단계 좋은데 두 가지 보완하자.

1) TourAPI 호출 단계 2~4는 매번 같은 입력에 같은 결과가 필요해.
   Python 스크립트로 빼두자. scripts/tour_api.py에 5 액션 모두 담자.

2) 일정 배치, 한국어 정리는 매번 미세하게 다르게 나와도 OK.
   SKILL.md 본문에 자연어로 둬도 충분.

이렇게 분리하는 게 맞나?

클로드코드가 분리 안을 정리해줍니다. 다음과 같은 모습이 됩니다.

[scripts/tour_api.py] — 결정론
- keyword(query)      → 관광지 검색
- festival(area, ym)  → 축제 조회
- area(area_code)     → 지역 묶음
- stay(area_code)     → 숙박 조회
- detail(content_id)  → 상세 정보

[SKILL.md 본문] — 자유도
- 입력 받기 + 액션 호출 결정
- 결과 묶기 + 일정 배치
- 한국어 가이드 정리
- 결과물 저장 위치 명시

4. STEP 3 — 스킬화 + 스크립트 분리

이제 클로드코드한테 스킬과 스크립트를 함께 만들어달라고 요청합니다.

지금 정의한 분리 안대로 trip-advisor 스킬을 만들어줘.

위치:
- ~/fastcampus-cc/.claude/skills/trip-advisor/SKILL.md
- ~/fastcampus-cc/.claude/skills/trip-advisor/scripts/tour_api.py

SKILL.md description: "여행 가이드·여행 코스·관광지 추천·축제·숙박" 키워드 포함

tour_api.py 요건:
- 5 액션 함수 (keyword/festival/area/stay/detail)
- API 키는 os.getenv("TOURAPI_SERVICE_KEY")로 .env에서 읽기
- http:// 프로토콜 사용 (TourAPI 공식 스펙)
- 응답 JSON 파싱 + 빈 값 처리
- 액션별 CLI 호출 가능하게 argparse 추가

결과물 저장 위치: ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습26-공공API스킬/{지역}-여행가이드-{날짜}.md

생성된 파일을 안티그래비티에서 한 번 열어보세요. 스킬 폴더 안에 두 파일이 들어가 있어야 합니다.

~/fastcampus-cc/.claude/skills/trip-advisor/
├── SKILL.md
└── scripts/
    └── tour_api.py

.env에 TourAPI 키도 등록하세요. 메일로 받은 인증키를 한 줄로.

~/fastcampus-cc/.env
─────────────────────
TOURAPI_SERVICE_KEY=받은_인증키_여기에

5. STEP 4 — 부산 여행으로 호출 테스트

새 스킬을 인식시키기 위해 클로드코드를 재시작합니다.

exit
claude
부산 여행 코스 짜줘. 2박 3일 일정으로.

description이 매칭되면 trip-advisor가 발동돼요. 진행 화면에서 다음 단계가 보입니다.

1. tour_api.py keyword 호출 (부산 + 관광지)
2. tour_api.py festival 호출 (부산 + 2026년 5월)
3. tour_api.py stay 호출 (부산 숙박)
4. 일정 1·2·3일차 배치
5. 한국어 가이드 정리 → 부산-여행가이드-{날짜}.md 저장

결과 파일을 안티그래비티에서 열어보세요. 관광지 목록, 같은 기간 축제, 숙박 후보, 일정 표가 한 장에 정리돼 있어야 합니다.

6. STEP 5 — 본인 업계 공공 API 응용

TourAPI 외에도 공공데이터포털에는 같은 패턴으로 쓸 수 있는 API가 많아요.

업계활용 가능한 공공 API
부동산실거래가 공개 시스템
환경미세먼지·대기질 측정
금융환율·주가 (한국은행 ECOS)
교통버스·지하철 도착 정보
의료병원·약국 위치

본인 업계에 맞는 API 하나를 골라보세요. 같은 스크립트 분리 패턴으로 본인 일에 맞는 스킬을 만들 수 있습니다.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
SKILL.md~/fastcampus-cc/.claude/skills/trip-advisor/SKILL.md스킬 본문 (자유도 영역)
tour_api.py~/fastcampus-cc/.claude/skills/trip-advisor/scripts/tour_api.py5 액션 결정론 스크립트
.env 한 줄~/fastcampus-cc/.envTOURAPI_SERVICE_KEY
부산-여행가이드-{날짜}.md실습26-공공API스킬/첫 호출 결과

완료 또는 /wrap을 입력하면 progress.json의 practice_completed에 "실습 26"이, skills_created에 "trip-advisor"가 추가됩니다.


자주 막히는 포인트

증상원인해결
TourAPI 활용신청 후 자동 승인 안 됨10분 이상 지연정상. 길게는 30분까지. 메일 받기 전까지 다른 작업 진행
인증키 복사할 때 줄바꿈 들어감마이페이지 박스 줄바꿈.env에 붙여 넣을 때 한 줄로. 줄바꿈 제거
tour_api.py 실행 시 키 못 읽음.env 위치 또는 파일명 오타강의 워크스페이스 루트 ~/fastcampus-cc/.env인지 확인. 변수명 TOURAPI_SERVICE_KEY 정확히
TourAPI 호출이 403http와 https 혼동TourAPI는 http:// 프로토콜. https:// 쓰면 막힘
TourAPI 응답이 XML로 옴format 파라미터 누락요청 시 &_type=json 추가
5 액션 중 일부만 동작파라미터 누락tour_api.py 안 각 함수 docstring 확인. festival은 ym(연월) 필수
결과물 위치가 엉뚱한 데로SKILL.md에 경로 누락SKILL.md에 "결과물은 ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습26-공공API스킬/-여행가이드-.md 에 저장" 명시
Python requests 모듈 없음pip install 안 함pip install requests 또는 pip3 install requests
스킬이 호출 안 됨재시작 누락exit 후 claude
description 매칭 안 됨키워드 좁음"여행·관광·코스·가이드·추천" 등 4~5개로 확장

다음 클립

→ Part 6 / Clip 6: 검색 API — 네이버 뉴스 → 뉴스레터 HTML

다음 클립에서는 같은 분리 패턴(scripts/)을 한 번 더 굴립니다. 이번엔 네이버 검색 API를 써서 관심 키워드 뉴스를 모은 뒤, HTML 뉴스레터 한 장으로 자동 정리해요. AskUserQuestion으로 호출 시점에 사용자에게 옵션을 물어보는 인터랙티브 패턴도 추가됩니다.

검색 API — 네이버 뉴스레터

naver-news + AskUserQuestion 인터랙티브

Part 6 · Clip 6

이 클립에서 만드는 것

Clip 5의 패턴을 한 번 더 굴리면서 한 단계 더 나갑니다. 외부 API + 스크립트 분리는 이미 익혔어요. 이번엔 거기에 두 가지를 얹습니다.

  • AskUserQuestion 인터랙티브 — 호출 시점에 사용자에게 옵션을 물어보는 패턴. 정렬 기준(최신순/관련도순)과 시간 범위(6h/24h/48h)를 답변받아 결과를 다르게 만듭니다.
  • HTML 출력 — 마크다운 한 장이 아니라 카테고리 헤더 + 모바일 반응형 디자인이 들어간 뉴스레터 한 페이지를 자동으로 만듭니다.

만드는 스킬은 naver-news. "클로드코드 뉴스레터 만들어줘" 같은 자연어 한 마디로 호출하면, 네이버 검색 API에서 관심 키워드 뉴스를 모으고 HTML 뉴스레터로 정리해줍니다.

전과 후의 차이는 이렇습니다.

  • 매일 아침 네이버에 키워드 검색하던 작업이 한 마디 호출로 끝납니다.
  • 본인 일에 그대로 가져가요. 마케팅은 브랜드 모니터링, PO는 경쟁 키워드, 영업은 고객사 동향. 키워드만 바꾸면 됩니다.
  • (선택) 매일 자동 발행까지 가면 GitHub Pages에 누적 뉴스레터가 쌓입니다. 본인 도메인 뉴스 아카이브가 되어요.

이번 클립에서 할 일은 다섯 단계입니다 (선택 1단계 추가). 네이버 API 키 발급 → 워크플로우 잡기 → 분리 정의 → 스킬 + 스크립트 작성 → 호출 테스트 → (선택) 매일 자동 발행.


핵심 개념

Clip 5와의 공통 패턴 + 새 두 가지

같은 분리 흐름을 한 번 더 굴려보면 패턴이 손에 더 잡힙니다.

단계Clip 5 trip-advisorClip 6 naver-news
키 발급공공데이터포털 TourAPI네이버 개발자센터
.env 변수TOURAPI_SERVICE_KEYNAVER_CLIENT_ID + NAVER_CLIENT_SECRET
Python 스크립트tour_api.py (5 액션)fetch_news.py (검색 + 24h 필터)
인터랙티브자연어 입력만AskUserQuestion 2단 (정렬·시간)
산출마크다운 가이드HTML 뉴스레터 (모바일 반응형)

뼈대는 같습니다. 키는 .env에, 결정론 호출은 Python으로, 자유도는 SKILL.md 본문에. 새로 들어오는 두 가지(인터랙티브 + HTML)도 같은 분리 원칙을 따라요. 인터랙티브 답변 받는 단계는 SKILL.md 본문(자유도), 받은 답변으로 API 파라미터 만드는 부분은 fetch_news.py(결정론).

AskUserQuestion 2단 — 정렬과 시간 범위

뉴스 모음은 사람마다 원하는 결이 다릅니다. 최신 뉴스만 좁게 보고 싶을 수도 있고, 한 주 치 흐름을 보고 싶을 수도 있어요. 호출 시점에 두 가지를 묻습니다.

Q1: 정렬 기준?
   - 최신순 (시간 우선)
   - 관련도순 (정확도 우선)

Q2: 시간 범위? (최신순 선택 시만)
   - 6시간 이내 (속보 위주)
   - 24시간 이내 (오늘)
   - 48시간 이내 (이틀)

답변에 따라 fetch_news.py에 넘기는 파라미터가 달라집니다. 자동 모드(매일 무인 발행)에서는 AskUserQuestion이 못 뜨니까 "최신순 + 24h" 고정값으로 떨어지게 분기를 둡니다.

HTML 뉴스레터 — 카테고리 그룹핑 + 모바일 반응형

검색 결과 5개를 그냥 던지면 그건 검색이지 뉴스레터가 아니에요. 뉴스레터는 같은 키워드에 묶인 기사를 카테고리로 그룹핑하고, 트렌드 인사이트 한 줄을 곁들여야 의미가 생깁니다.

[뉴스레터 구조]
- 헤더: 키워드 + 발행일 + 통계 한 줄
- 카테고리 1: 공식 발표 / 보도자료
- 카테고리 2: 외부 매체 보도
- 카테고리 3: 커뮤니티 반응
- 푸터: 다음 호 예고 + 출처 링크

HTML 출력은 모바일 화면에서도 깨지지 않게 단순 CSS로. 클로드코드한테 "모바일 반응형, 가독성 우선"이라고만 명시하면 무난하게 떨어집니다.

사전 준비 — 네이버 개발자센터 키 발급

키 발급은 5분 정도면 끝납니다.

1. https://developers.naver.com 접속 → 로그인
2. "Application" → "애플리케이션 등록"
3. 사용 API: "검색"
4. 비로그인 오픈 API: "WEB 설정"
5. URL: http://localhost
6. 등록 → Client ID + Client Secret 복사

받은 두 값을 .env에 한 줄씩 보관합니다.

~/fastcampus-cc/.env
─────────────────────
TOURAPI_SERVICE_KEY=...        ← Clip 5에서 등록한 것
NAVER_CLIENT_ID=...
NAVER_CLIENT_SECRET=...

.gitignore에 등록돼 있어 깃엔 안 올라가요. Clip 5와 같은 위치, 같은 패턴입니다.


진행 흐름

1. /part06 호출 → Clip 6 선택 + 네이버 키 발급

강의 워크스페이스에서 시작합니다.

/part06

자동 셋업이 진도 폴더와 스크립트 폴더를 준비합니다.

✓ ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습27-검색API스킬/newsletter/ 준비 완료
✓ ~/fastcampus-cc/.claude/skills/naver-news/scripts/ 준비 완료

여기서 네이버 키 발급부터 넣어두세요. 위 "사전 준비" 안내대로 5분 정도면 끝납니다. 발급된 ID/Secret을 .env에 등록한 다음 STEP 1로.

2. STEP 1 — 워크플로우 잡기

네이버 검색 API로 키워드 뉴스 모아서 뉴스레터 만들려는데,
어떻게 워크플로우를 구성해야 할까?

정리되는 단계는 보통 이런 모습이에요.

1. 키워드 + 정렬 + 시간 범위 입력 받기
2. 네이버 검색 API 호출 (뉴스 카테고리)
3. 결과 클린업 (HTML 태그 제거, 중복 제거)
4. 시간 범위 필터 (지정 시간 이내만)
5. 카테고리 그룹핑 (공식/외부/커뮤니티)
6. HTML 뉴스레터 한 장 생성
7. 결과물 저장 (newsletter/{날짜}-{키워드}.html)

3. STEP 2 — AI vs 결정론 분리 + 인터랙티브 위치 결정

이번엔 분리 안이 한 단계 더 들어가요. AskUserQuestion 위치를 명시합니다.

정리된 단계 좋은데 분리 안 보완하자.

[fetch_news.py — 결정론]
- 네이버 API 호출
- HTML 태그 제거 (<b>, &quot; 같은 entity)
- 24h/48h/6h 시간 범위 필터링

[SKILL.md 본문 — 자유도]
- AskUserQuestion으로 정렬·시간 질문 (2단)
- 카테고리 그룹핑 판단
- 트렌드 인사이트 한 줄 정리

자동 모드 분기:
- AskUserQuestion 응답이 없는 경우 (무인 자동 모드)
  → 정렬=최신순, 시간=24h 고정값

4. STEP 3 — 스킬화 + fetch_news.py 분리

지금 정의한 분리 안대로 naver-news 스킬을 만들어줘.

위치:
- ~/fastcampus-cc/.claude/skills/naver-news/SKILL.md
- ~/fastcampus-cc/.claude/skills/naver-news/scripts/fetch_news.py

SKILL.md description: "네이버 뉴스·뉴스레터·키워드 모니터링·트렌드 정리" 키워드

fetch_news.py 요건:
- 네이버 검색 API 호출 (https://openapi.naver.com/v1/search/news.json)
- 헤더: X-Naver-Client-Id, X-Naver-Client-Secret (.env 에서 읽기)
- 파라미터: query, sort (date/sim), display (50)
- 응답 클린업: <b> 태그 제거, &quot; 같은 entity 디코드
- 시간 범위 필터링: pubDate 기준 6h/24h/48h
- JSON 형태로 결과 반환

SKILL.md 본문 요건:
- AskUserQuestion 2단 (정렬 → 시간 범위, 정렬이 관련도면 시간 질문 생략)
- 무인 모드 분기 (응답 없으면 최신순 + 24h 고정)
- 카테고리 그룹핑 (공식 보도자료 / 외부 매체 / 커뮤니티)
- HTML 뉴스레터 생성 (모바일 반응형, 가독성 우선)
- 결과물: ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습27-검색API스킬/newsletter/{YYYYMMDD}-{키워드}.html

생성된 파일을 안티그래비티에서 열어보세요. 스킬 폴더와 스크립트가 함께 들어가 있어야 합니다.

~/fastcampus-cc/.claude/skills/naver-news/
├── SKILL.md
└── scripts/
    └── fetch_news.py

5. STEP 4 — 호출 테스트 + AskUserQuestion 2단

클로드코드 재시작 후 자연어로 호출합니다.

exit
claude
클로드코드 뉴스레터 만들어줘

description이 매칭되면 첫 질문이 떠요.

Q1. 정렬 기준?
1) 최신순
2) 관련도순

답하면 두 번째 질문 (최신순일 때만).

Q2. 시간 범위?
1) 6시간 이내
2) 24시간 이내
3) 48시간 이내

답하면 스크립트가 굴러가면서 newsletter/{YYYYMMDD}-클로드코드.html 파일이 떨어집니다. 브라우저에서 열어 결과를 봅니다.

open ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습27-검색API스킬/newsletter/{YYYYMMDD}-클로드코드.html

카테고리 헤더, 모바일 가독성, 인사이트 한 줄이 다 들어가 있어야 합니다.

6. STEP 5 — 본인 키워드로 응용

클로드코드 키워드는 시연용. 본인 일에 가져갈 키워드를 한 번 더 호출해보세요.

[마케팅] "본인 브랜드명" 또는 경쟁사명
[PO]    "본인 제품 카테고리" + "트렌드"
[영업]   "고객사명" 또는 "업계 키워드"
[학습]   "관심 분야" + "최신"

같은 스킬에 키워드만 바꾸면 됩니다. 매번 새로 만들 필요가 없어요.

7. (선택) STEP 6 — 매일 자동 발행 + GitHub Pages

여기까지가 이번 클립의 핵심이고, 더 응용하고 싶은 분만 STEP 6으로 갑니다.

자동 발행 흐름은 네 가지로 나뉩니다.

① index.html 누적 로직 — 매일 새 HTML 한 장이 떨어지면, newsletter/index.html에 그 날짜 링크 한 줄을 맨 위에 추가합니다. 시간이 지나면 자연스럽게 누적 목록이 쌓여요.

② GitHub Pages 켜기 — 강의 워크스페이스 GitHub repo(Part 5 Clip 5에서 만든)의 Settings → Pages → Source = main 으로 설정. newsletter/ 폴더가 웹에서 보이게 됩니다.

https://{본인-깃허브-아이디}.github.io/{repo}/newsletter/index.html

③ 클라우드 환경변수 — /schedule로 등록하는 루틴은 로컬 .env를 못 봅니다. 클라우드 환경변수로 NAVER_CLIENT_ID, NAVER_CLIENT_SECRET을 따로 등록해야 해요.

④ /schedule 루틴 등록 — 매일 정해진 시간에 자동 호출.

/schedule 매일 오전 8시에 "클로드코드 뉴스레터 만들어줘. 결과 newsletter/에 저장하고 깃허브에 푸시" 실행

루틴이 등록되면 매일 아침 자동으로 HTML이 생성되고, GitHub Pages에 푸시까지 됩니다. 브라우저에서 본인 도메인 뉴스 아카이브를 매일 받아볼 수 있어요.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
SKILL.md~/fastcampus-cc/.claude/skills/naver-news/SKILL.md스킬 본문 (AskUserQuestion + 자동 분기)
fetch_news.py~/fastcampus-cc/.claude/skills/naver-news/scripts/fetch_news.py네이버 API + 24h 필터
.env 두 줄~/fastcampus-cc/.envNAVER_CLIENT_ID, NAVER_CLIENT_SECRET
{YYYYMMDD}-{키워드}.html실습27-검색API스킬/newsletter/HTML 뉴스레터
index.html (선택)실습27-검색API스킬/newsletter/누적 발행 모드일 때만

완료 또는 /wrap을 입력하면 progress.json의 practice_completed에 "실습 27"이, skills_created에 "naver-news"가 추가됩니다.


자주 막히는 포인트

증상원인해결
네이버 키 발급 안 됨사용 API 설정 누락"검색" 체크 + WEB 설정 + URL http://localhost
네이버 API 호출이 401Client ID/Secret 헤더 오타X-Naver-Client-Id, X-Naver-Client-Secret (대소문자 정확히)
응답에 <b> 태그가 박혀 옴클린업 누락fetch_news.py에서 re.sub(r'<.*?>', '', text)
&quot; 같은 entity가 그대로HTML 디코드 누락html.unescape(text)
24h 필터가 안 먹음pubDate 파싱 실패네이버 API 응답의 pubDate는 RFC 822 형식. email.utils.parsedate_to_datetime 사용
AskUserQuestion이 안 뜸description에 인터랙티브 명시 누락SKILL.md 본문 시작 부분에 AskUserQuestion 호출 명시
무인 모드에서 멈춤AskUserQuestion 응답 대기무인 분기 로직 추가 — if interactive: ask else: default(최신순, 24h)
HTML이 데스크탑 PC에서만 예쁨모바일 미디어 쿼리 누락@media (max-width: 600px) 추가 요청
카테고리 그룹핑이 엉성분류 로직 모호"도메인이 .go.kr/.or.kr/공식 보도자료 → 공식 / 그 외 → 외부 / fmkorea/dcinside → 커뮤니티" 식으로 명시
매일 자동 발행 루틴이 실패로컬 .env 못 읽음클라우드 환경변수로 키 별도 등록
깃허브 푸시가 자동 안 됨루틴 프롬프트에 푸시 단계 누락"결과 newsletter/에 저장 + git add + commit + push" 명시

다음 클립

→ Part 6 / Clip 7: 웹 크롤링 — insane-search로 KREAM 트렌드

CH02 두 클립으로 외부 API + 스크립트 분리 패턴이 손에 잡혔습니다. 다음 클립부터는 CH03 — 업무 자동화로 넘어가요. 첫 주제는 API가 없는 사이트도 자동화하는 방법. KREAM 같은 상업 사이트의 데이터를 외부 플러그인으로 가져와서, 남녀 인기 브랜드 트렌드 리포트를 HTML 매거진 형태로 만듭니다.

웹 크롤링 — KREAM 트렌드

insane-search 4단계 적응형 안티봇 우회

Part 6 · Clip 7

이 클립에서 만드는 것

CH02에서는 공식 API가 있는 사이트(TourAPI, 네이버)를 다뤘어요. 이번 클립은 공식 API가 없는 사이트에서 데이터를 가져오는 흐름입니다. 대상은 KREAM — 한정판 패션 거래 플랫폼. 봇 차단이 들어가 있어서 일반 requests 같은 라이브러리로는 막힙니다.

해결 도구는 insane-search 플러그인. WAF·CAPTCHA·로그인 벽을 만나면 자동으로 다음 우회 단계로 올라가는 4단계 적응형 방식이에요. 한 번 설치하면 자연어로 부르는 순간 알아서 발동됩니다.

만드는 스킬은 fashion-trend. "요즘 인기 반팔티 트렌드" 같은 자연어로 호출하면, 키워드 하나로 KREAM 남녀 인기 상품을 동시에 가져와 비교한 뒤 매거진 스타일 HTML 리포트로 정리해줍니다.

⚠️ 크롤링 주의 — robots.txt와 이용약관을 확인하세요. 과도한 요청은 자제(요청 간 딜레이 설정), 개인정보·로그인 영역은 제외, 수집 데이터는 본인 분석용으로만. 상업 사이트 우회는 본인 책임이에요.

이번 클립은 CH03 스크립트 분리 패턴의 예외입니다. Clip 5, 6에서는 결정론 단계를 본인이 작성한 Python 스크립트로 빼냈어요. 여기선 그 결정론 단계를 외부 플러그인(insane-search)이 대신 떠맡습니다. "결정론은 코드로" 원칙은 같되, 그 "코드"가 본인 스크립트가 아니라 검증된 플러그인이라는 변형이에요.

이번 클립에서 할 일은 다섯 단계입니다. 플러그인 설치 → 워크플로우 잡기 → URL 조립 정의 → 스킬 작성 → 호출 테스트 + 주기 실행.


핵심 개념

왜 라이브러리 대신 플러그인인가

기존 도구들과 비교해보면 차이가 보입니다.

도구안티봇 우회설치비고
requests + BeautifulSoup❌pip정적 페이지 OK, 봇 차단 사이트엔 막힘
Playwright (MCP)△무거움 (Chromium 다운로드)기본 단일 방식, 막히면 끝
insane-search✅ 4단계 적응형플러그인 2줄 (API 키 X)막히면 단계 올림 + 한국 사이트 내장 지원

pip install 없고, 브라우저 다운로드 없고, 셀렉터 직접 작성도 없습니다. 깔고 자연어로 물으면 끝이에요. curl_cffi, feedparser, yt-dlp 같은 의존성도 필요할 때 자동 설치. Twitter·Reddit·HackerNews 등은 플랫폼 API로, 한국 사이트는 네이버 검색·쿠팡·fmkorea를 내장 지원합니다.

4단계 적응형 우회

insane-search는 한 가지 방식만 쓰지 않아요. 첫 단계가 막히면 다음 단계로 올라가는 구조입니다.

단계방식비고
Phase 0특수 엔드포인트 인덱스 확인가장 가벼움
Phase 1WebFetch + Jina Reader + User-Agent 변형경량 탐침
Phase 2TLS 핑거프린트 위장curl_cffi로 쿠키·헤더 모방
Phase 3Playwright 전체 브라우저 렌더링JS 챌린지 대응

본인이 어느 단계를 쓸지 정하지 않아도 돼요. 막히면 자동으로 다음 단계로 올라갑니다.

KREAM URL 조립 — 키워드 하나로 남녀 두 결과

링크를 미리 받지 않습니다. 키워드 하나만 받아서 성별별 정렬 URL을 두 개 조립해요.

https://kream.co.kr/search
   ?keyword={키워드}        ← URL 인코딩 (예: 반팔티)
   &tab=products
   &sort={정렬}             ← male_popularity 또는 female_popularity

남성용: ...?keyword=반팔티&tab=products&sort=male_popularity
여성용: ...?keyword=반팔티&tab=products&sort=female_popularity

두 URL을 insane-search로 각각 스크래핑 → 상품명, 브랜드, 가격, 거래량 추출 → 남녀 인기 브랜드 비교가 핵심입니다.

패션 에디터 톤의 매거진 HTML 리포트

단순 데이터 표 X. 다크 에디토리얼 매거진 톤으로 정리하면 본인 일에 그대로 가져가기 좋아요.

[리포트 구조]
- 표지: 키워드 + 발행일 + 한 줄 인사이트
- Section A: 남성 인기 TOP 10 (브랜드·가격·거래량)
- Section B: 여성 인기 TOP 10
- Section C: 남녀 비교 — 겹치는 브랜드 / 성별 고유 브랜드
- Section D: 패션 에디터 관점 한 단락 분석 (가격대·시즌·브랜드 동향)

날짜 파일명 — 주기 실행으로 트렌드 변화 추적

같은 키워드를 한 번만 보면 그건 스냅샷이에요. 주기적으로 쌓아야 트렌드 "변화"가 보입니다. 그래서 파일명 앞에 날짜를 붙이는 규칙으로 고정해요.

원본 데이터:  artifacts/kream-{키워드}-{성별}-{YYYY-MM-DD}.md
              예: kream-반팔티-남성-2026-05-25.md

리포트:       trend-report/{YYYY-MM-DD}-{키워드}-{성별}.html
              예: 2026-05-25-반팔티-남성.html

날짜로 정렬·비교가 일관됩니다. /schedule로 "매주 월요일 오전 9시 자동 수집"을 걸어두면, 6/01·6/08·6/15 같은 날짜별 스냅샷이 쌓이면서 순위 변동(예: 스투시 1위↑, 무신사스탠다드 신규 진입)이 자연스럽게 드러나요.

사전 준비 — insane-search 플러그인 설치 (2줄)

플러그인 설치는 2줄. API 키 발급 같은 사전 절차가 없어요.

/plugin marketplace add https://github.com/fivetaku/gptaku_plugins.git
/plugin install insane-search

설치 후 클로드코드 재시작하면 자동으로 활성화됩니다.


진행 흐름

1. /part06 호출 → Clip 7 선택

강의 워크스페이스에서 시작합니다.

/part06

자동 셋업이 진도 폴더와 스킬 폴더를 준비합니다.

✓ ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습28-웹크롤링스킬/trend-report/ 준비 완료
✓ ~/fastcampus-cc/.claude/skills/fashion-trend/ 준비 완료
ℹ insane-search 플러그인 설치 필요 — 위 사전 준비 참고

위 "사전 준비" 안내대로 플러그인을 설치한 다음 STEP 1로 넘어가세요.

2. STEP 1 — 워크플로우 잡기

KREAM에서 키워드의 남녀 인기순을 가져와서
어떤 브랜드가 뜨는지 분석해 트렌드 리포트 만들려는데,
어떻게 워크플로우를 구성해야 할까?

정리되는 단계는 보통 이런 모습입니다.

1. 키워드 + 성별(남/여/둘다) 입력 받기
2. 키워드로 KREAM 정렬 URL 두 개 조립 (male_popularity / female_popularity)
3. insane-search로 두 URL 스크래핑
4. 상품 데이터 추출 (브랜드·가격·거래량)
5. 남녀 비교 — 공통 / 성별 고유 브랜드 식별
6. 패션 에디터 관점 인사이트 한 단락 작성
7. 다크 에디토리얼 매거진 HTML 리포트 생성
8. 날짜 파일명으로 저장

3. STEP 2 — URL 조립 + 인터랙티브 정의

링크를 직접 받지 않고 키워드 + 성별만 받는 게 핵심이에요.

정리된 단계 보완하자.

[입력 인터랙티브]
- Q1: 키워드? (자유 입력)
- Q2: 남성/여성/둘다?

[URL 조립 — SKILL.md 본문]
- 키워드 URL 인코딩
- sort 파라미터 분기 (male_popularity / female_popularity / 둘 다 호출)

[수집 — insane-search 플러그인 호출]
- 본인 스크립트 없음. 플러그인이 결정론 역할
- "fashion-trend가 스크래핑은 직접 안 하고 플러그인을 부른다"는 패턴

[분석·리포트 — SKILL.md 본문]
- 데이터 추출 + 남녀 비교
- 패션 에디터 톤 한 단락
- HTML 매거진 디자인

4. STEP 3 — 스킬 작성 (스크립트 분리 없음)

지금 정의한 흐름대로 fashion-trend 스킬을 만들어줘.

위치: ~/fastcampus-cc/.claude/skills/fashion-trend/SKILL.md

description: "트렌드 분석·인기 브랜드·KREAM·패션 트렌드·시즌 동향" 키워드

SKILL.md 본문 요건:
- AskUserQuestion 2단 (키워드 → 남/여/둘다)
- KREAM URL 조립 (male_popularity / female_popularity 분기)
- insane-search 플러그인 호출 (직접 스크래핑 X)
- 데이터 추출 + 남녀 비교 분석
- 다크 에디토리얼 매거진 HTML 리포트 (모바일 반응형)
- 패션 에디터 톤 한 단락 (가격대·시즌·브랜드 동향)

날짜 파일명 규칙 (반드시 준수):
- 원본 데이터:  artifacts/kream-{키워드}-{성별}-{YYYY-MM-DD}.md
- HTML 리포트:  trend-report/{YYYY-MM-DD}-{키워드}-{성별}.html
- 저장 위치:    ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습28-웹크롤링스킬/

생성된 SKILL.md를 안티그래비티에서 한 번 열어보세요. 스크립트 폴더가 없는 게 정상입니다 (외부 플러그인이 결정론 역할이라).

5. STEP 4 — 호출 테스트

클로드코드 재시작 후 자연어로 호출합니다.

exit
claude
요즘 인기 반팔티 브랜드 트렌드 정리해줘

description 매칭되면 첫 질문이 떠요.

Q1. 키워드? (기본: 반팔티)
Q2. 남성 / 여성 / 둘다?

답변하면 insane-search 플러그인이 두 URL을 스크래핑합니다. 막히면 자동으로 Phase 0 → 1 → 2 → 3으로 올라가요. 1~3분 정도 걸립니다.

완료되면 두 파일이 떨어져요.

실습28-웹크롤링스킬/
├── artifacts/
│   ├── kream-반팔티-남성-2026-05-25.md  ← 원본 데이터
│   └── kream-반팔티-여성-2026-05-25.md
└── trend-report/
    ├── 2026-05-25-반팔티-남성.html      ← HTML 리포트
    └── 2026-05-25-반팔티-여성.html

브라우저에서 HTML을 열어 결과를 봅니다. 남녀 인기 TOP 10, 비교 섹션, 패션 에디터 분석 한 단락이 다 들어가 있어야 해요.

6. STEP 5 — 본인 업계 응용 + 주기 실행으로 트렌드 변화 추적

KREAM은 시연이고, 같은 패턴은 다른 곳에도 그대로 갑니다.

업계적용 대상
마케팅쿠팡 인기 상품 / 11번가 베스트
영업고객사 공식 사이트 공지
운영경쟁사 가격표·신제품
학습HackerNews·arXiv 일일 정리

스킬 이름을 바꾸지 않고 SKILL.md의 URL 조립 부분만 손보면 같은 흐름이 다른 사이트에 갑니다.

주기 실행 — 트렌드 "변화"를 추적하려면 /schedule로 등록하세요.

/schedule 매주 월요일 오전 9시에 "요즘 인기 반팔티 트렌드 정리해줘" 실행

매주 자동으로 같은 자리에 새 스냅샷이 쌓이면, 6/01의 1위 브랜드와 6/15의 1위 브랜드를 비교해 순위 변동이 보입니다. 본인이 직접 차이를 계산하지 않아도 돼요. 리포트에 "직전 스냅샷 대비 순위 변동" 섹션을 추가하면 더 풍부해집니다.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
SKILL.md~/fastcampus-cc/.claude/skills/fashion-trend/SKILL.md스킬 본문 (스크립트 분리 X — 플러그인 호출)
kream-{키워드}-{성별}-{YYYY-MM-DD}.md실습28-웹크롤링스킬/artifacts/원본 수집 데이터
{YYYY-MM-DD}-{키워드}-{성별}.html실습28-웹크롤링스킬/trend-report/HTML 매거진 리포트
(선택) /schedule 루틴 ID클로드코드 루틴매주 자동 수집

완료 또는 /wrap을 입력하면 progress.json의 practice_completed에 "실습 28"이, skills_created에 "fashion-trend"가 추가됩니다.


자주 막히는 포인트

증상원인해결
insane-search 플러그인 확인되지 않음플러그인 미설치/plugin marketplace add https://github.com/fivetaku/gptaku_plugins.git 후 /plugin install insane-search
스크래핑이 1~3분 넘게 걸림Phase 3까지 올라감 (Playwright 렌더)정상. KREAM이 봇 차단 단계가 높아서 그럼. 기다리거나 백그라운드
스크래핑 결과가 비어 있음URL 조립 오류 (키워드 인코딩 누락)urllib.parse.quote(키워드) 명시 — SKILL.md에 추가 요청
가격이 다 "0원"으로 나옴데이터 추출 셀렉터 변경됨클로드코드한테 "현재 화면 구조에 맞춰 가격 셀렉터 재확인" 요청
남녀 비교가 같은 결과를 두 번 반복URL의 sort 파라미터 미적용URL 조립 시 male_popularity / female_popularity 차이 확인
HTML 리포트가 흰 배경다크 에디토리얼 톤 누락SKILL.md에 "어두운 배경 + 흰 글자, 매거진 톤" 명시
본인 업계 사이트에서 막힘robots.txt 또는 이용약관 위반해당 사이트 정책 확인 후 사용 — 본인 책임. 공식 API가 있다면 그쪽 우선
매주 자동 수집이 안 됨루틴 등록 누락/schedule 입력 시 정확한 자연어 + 시간 명시
트렌드 변화가 안 보임첫 호출만 했음같은 키워드로 2~3주 반복해 누적해야 변화가 잡힘
fashion-trend가 KREAM 외 다른 사이트에 안 맞음SKILL.md가 KREAM URL 하드코딩본인 사이트용으로 SKILL.md 사본 만들어 URL 조립 부분만 교체

다음 클립

→ Part 6 / Clip 8: 오디오/영상 → 문서 (회의록 자동화)

다음 클립에서는 텍스트 데이터 말고 오디오·영상을 다룹니다. 회의 녹음이나 유튜브 영상을 자동으로 전사 + 화자 분리 + 5가지 문서 유형(회의록·강의·팟캐스트·인터뷰·발표) 자동 판별까지. 시연용 회의 녹음이 없어서 유튜브 영상으로 우회 시연하지만, 본인 회의 녹음에 그대로 적용할 수 있어요.

오디오/영상 → 문서

audio-to-doc + Gemini 화자분리 + 5 유형 자동 판별

Part 6 · Clip 8

이 클립에서 만드는 것

지금까지는 텍스트 데이터를 다뤘어요. 이번엔 오디오와 영상입니다. 회의 녹음, 강의 녹화, 팟캐스트, 인터뷰 같은 음성 콘텐츠를 자동으로 전사하고 요약 문서로 정리해주는 스킬을 만듭니다.

만드는 스킬은 audio-to-doc. 회의록이 메인 용도예요. 시연용 회의 녹음이 없어서 유튜브 영상으로 우회 시연합니다 (유퀴즈 김대식 교수 인터뷰 4분 발췌). 하지만 본인 회의 녹음 파일을 그대로 넣으면 같은 흐름으로 굴러갑니다.

이 클립에서 진짜 재밌는 건 5 유형 자동 판별이에요. 같은 한 스킬이 입력 오디오를 분석해서 회의·강의·팟캐스트·인터뷰·발표 중 어디에 해당하는지 자동으로 판단하고, 그에 맞는 템플릿으로 문서를 만들어줍니다.

전과 후의 차이는 이렇습니다.

  • 1시간짜리 회의가 끝나면 액션 아이템과 결정사항이 5분 안에 한 장으로 정리됩니다.
  • 유튜브 강의 영상을 보면서 노트하던 작업이 자동화돼요. URL만 던지면 핵심 개념 정리본이 떨어집니다.
  • 본인 회의·인터뷰·발표 녹음마다 매번 어떤 양식으로 정리할지 고민하지 않아도 됩니다. 스킬이 유형을 판별하고 알아서 맞춰줘요.

이번 클립에서 할 일은 다섯 단계입니다. Gemini API 키 발급 → 워크플로우 잡기 → 도구 선택(Gemini vs 로컬) → 스킬 + 스크립트 분리 작성 → 유튜브 시연 + 본인 회의 응용.


핵심 개념

도구 선택 — 왜 Gemini인가

전사 + 화자 분리를 동시에 처리하는 도구는 몇 가지가 있어요. 같은 유튜브 4분 음성으로 직접 비교한 결과를 보면 결정 근거가 보입니다.

기준Gemini 3.5 FlashWhisperKit (로컬)whisper-diarization
설치 (PyTorch X)✅ curl만✅ brew❌ torch+NeMo 무거움
화자 분리 품질✅ 진행자·게스트·나레이션까지 구별✅ 음성 기반✅ 음성 기반
한국어 전사✅ "러브(Lobe)·CES·캣트리스" 정확○○
개인정보 (로컬)❌ 오디오 구글 전송✅ 외부 X✅ 외부 X
긴 회의✅ 한 번에△ 분할△ 분할
비용무료 한도무료무료

핵심 갈림길은 단 하나예요. "오디오를 외부(구글)로 보내도 되는가". 사내 대외비 회의 녹음이라면 로컬(WhisperKit)이 정답입니다. 이번 클립은 설치 0 + 품질 + 긴 영상 한 번에 처리를 우선해서 Gemini 3.5 Flash를 채택했어요. 본인 상황에 맞게 도구를 바꾸면 됩니다.

5 유형 자동 판별

같은 오디오라도 회의록 양식과 인터뷰 양식은 다릅니다. 스킬이 다섯 가지 패턴을 자동으로 구분해요.

유형판별 신호출력 템플릿
회의다수 화자 + 안건·결정·액션 키워드안건 / 결정사항 / 액션 아이템 표
강의/컨퍼런스단일 화자 + 개념 설명 흐름핵심 개념 + 섹션별 요약
팟캐스트/대담2~3 화자 + 자유 대화주제별 구간 + 화자별 의견
인터뷰질문자 + 답변자 (Q&A 패턴)Q&A 구조 + 발언 하이라이트
발표/세미나단일 화자 + 주장-근거 패턴주장-근거-Q&A

판별은 Gemini 프롬프트로 처리합니다. SKILL.md 본문에 "화자 수와 안건·결정 키워드 빈도로 판별" 같은 가이드를 명시하면, 5 유형 중 가장 맞는 걸 자동으로 골라요.

스크립트 분리 — 두 개의 결정론

CH02·CH03에서 익힌 패턴 그대로 결정론 단계를 빼는데, 이번엔 두 개로 나눠집니다.

파일언어역할
scripts/extract_audio.shBash유튜브 URL → yt-dlp로 음성 추출 + ffmpeg로 16kHz mono wav 변환
scripts/transcribe_gemini.pyPythonGemini Files API 업로드 → 전사 + 화자 분리 호출 → 텍스트 반환
references/templates.md(문서)5 유형별 출력 양식 — AI가 매번 해석할 자료

추출·전사·API 호출은 같은 입력에 같은 결과가 나와야 합니다. 그래서 스크립트. 5 유형 판별·요약은 매번 미세하게 다르게 나와도 OK라서 SKILL.md 본문에. 자유도와 안정성을 같이 잡는 분리예요.

사전 준비 — Gemini API 키 발급 (5분)

Gemini는 무료 한도가 있어 카드 등록 없이 바로 쓸 수 있습니다.

1. https://aistudio.google.com/apikey 접속 (구글 계정 로그인)
2. "Create API key" 클릭 → 새 프로젝트면 "Create API key in new project"
3. 생성된 키 복사 (AIza...로 시작하는 문자열)
4. ⚠️ 비밀번호 같은 것 — 화면 캡처·공유 금지
5. ~/fastcampus-cc/.env 에 한 줄 추가
   GEMINI_API_KEY=AIza여기에_복사한_키

.env는 .gitignore에 있어 깃엔 안 올라가요. Clip 5, 6과 같은 위치, 같은 패턴입니다.

무료 한도 주의 — 분당·일일 요청 수 제한이 있어요. 회의 1~2건 테스트는 충분합니다. 한도 초과 시 잠시 후 재시도하거나 결제 연결.

시연 우회 — 유튜브로 본인 회의 적용 가능

시연용 회의 녹음 파일을 매번 준비하기 어려우니까 유튜브 영상으로 우회 시연합니다. 본인 회의 녹음 파일이 있다면 같은 흐름에 파일 경로만 바꿔서 넣으면 돼요.

  • 시연 입력: 유튜브 URL → yt-dlp 추출 → wav
  • 본인 입력: 로컬 mp3·wav·m4a 파일 → ffmpeg 변환 → wav

extract_audio.sh가 두 경로(URL / 로컬 파일)를 모두 받게 만들면 본인 회의에 바로 가져갈 수 있습니다.


진행 흐름

1. /part06 호출 → Clip 8 선택 + Gemini 키 발급

/part06

자동 셋업이 의존성을 확인합니다.

✓ ffmpeg OK
✓ yt-dlp OK (유튜브 시연용)
ℹ .env에 GEMINI_API_KEY 필요 — 사전 준비 따라하기
✓ ~/fastcampus-cc/.claude/skills/audio-to-doc/{scripts,references}/ 준비 완료

ffmpeg와 yt-dlp가 없으면 brew로 설치하세요.

brew install ffmpeg yt-dlp

Gemini API 키도 위 "사전 준비" 안내대로 발급해서 .env에 등록합니다.

2. STEP 1 — 워크플로우 잡기

오디오로 된 녹음 파일을 텍스트로 전환해서
요약 정리를 하려는데, 어떻게 워크플로우를 구성해야 할까?

정리되는 단계는 보통 이런 모습입니다.

1. 입력 형식 판별 (유튜브 URL / 로컬 파일)
2. 음성 추출 + wav 변환 (16kHz mono)
3. 전사 + 화자 분리
4. 입력 유형 자동 판별 (회의·강의·팟캐스트·인터뷰·발표)
5. 유형별 템플릿 적용
6. 요약 + 액션 아이템 / 핵심 개념 / Q&A 정리
7. 마크다운 문서 저장

3. STEP 2 — 도구 선택 + 단계 정의

여기서 화자 분리 도구를 정하는 과정 자체가 메타 흐름의 모범이에요. 공식 문서 조사 → 후보 비교 → 실제 테스트.

화자 분리 도구 후보 비교해줘.
- 공식 문서 확인: OpenAI Whisper는 화자 분리 지원하나?
- Gemini Files API의 화자 분리 능력
- WhisperKit (Mac 로컬)
- whisper-diarization (PyTorch+NeMo)

판단 기준:
- 설치 무게
- 한국어 정확도
- 화자 구별 품질 (진행자·게스트 구분)
- 긴 회의 처리 능력
- 개인정보 (로컬 vs 외부)

조사·비교 결과 위 "도구 선택" 표가 나와요. 이번 클립은 Gemini로 가지만, 본인 상황(사내 대외비 회의)에 따라 WhisperKit으로 분기할 수 있다는 선택지를 SKILL.md에 명시해두면 좋습니다.

분리 안:

[extract_audio.sh — 결정론]
- 입력: 유튜브 URL 또는 로컬 파일 경로
- yt-dlp로 URL → mp3 추출 (URL 입력 시만)
- ffmpeg로 16kHz mono wav 변환
- (선택) 긴 영상 트림

[transcribe_gemini.py — 결정론]
- Gemini Files API 업로드
- gemini-3.5-flash 모델로 전사 + 화자 분리 호출
- 텍스트 반환 (화자 태그 포함)

[SKILL.md 본문 — 자유도]
- 입력 받기 + 추출 스크립트 호출
- 5 유형 판별 (화자 수 + 키워드 빈도)
- 유형별 템플릿 적용 (references/templates.md 참조)
- 요약 + 마크다운 저장

[references/templates.md — 문서]
- 회의 / 강의 / 팟캐스트 / 인터뷰 / 발표 5 유형 양식

4. STEP 3 — 스킬화 + 두 스크립트 + 템플릿 작성

지금 정의한 분리 안대로 audio-to-doc 스킬을 만들어줘.

위치:
- ~/fastcampus-cc/.claude/skills/audio-to-doc/SKILL.md
- ~/fastcampus-cc/.claude/skills/audio-to-doc/scripts/extract_audio.sh
- ~/fastcampus-cc/.claude/skills/audio-to-doc/scripts/transcribe_gemini.py
- ~/fastcampus-cc/.claude/skills/audio-to-doc/references/templates.md

SKILL.md description: "회의록·전사·화자 분리·음성 요약·오디오 문서화·인터뷰 정리" 키워드

extract_audio.sh:
- 입력 인자: URL 또는 파일 경로
- URL 입력: yt-dlp -x --audio-format mp3
- ffmpeg로 16kHz mono wav 변환
- (선택) --trim 옵션으로 긴 영상 잘라내기

transcribe_gemini.py:
- API 키는 os.getenv("GEMINI_API_KEY")
- 모델: gemini-3.5-flash
- Files API 업로드 → 전사 + 화자 분리 프롬프트
- 한국어 우선
- 텍스트 반환 (화자 태그 [화자1]·[화자2] 포함)

SKILL.md 본문:
- AskUserQuestion: URL인지 로컬 파일인지 + 5 유형 자동 판별 / 수동 지정
- extract_audio.sh 호출 → wav 파일
- transcribe_gemini.py 호출 → 전사 텍스트
- 5 유형 판별 (화자 수 + 안건/결정/Q&A 키워드 빈도)
- references/templates.md 에서 해당 유형 양식 가져와 적용
- 결과물 저장: ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습29-회의록자동화스킬/{입력명}-{유형}-{날짜}.md

templates.md:
- 회의: 안건 / 결정사항 / 액션 아이템 표
- 강의: 핵심 개념 + 섹션별 요약
- 팟캐스트: 주제별 구간 + 화자별 의견
- 인터뷰: Q&A 구조 + 발언 하이라이트
- 발표: 주장-근거-Q&A

생성된 파일들을 안티그래비티에서 확인하세요.

5. STEP 4 — 유튜브 시연 (인터뷰 유형 판별)

클로드코드 재시작 후 자연어로 호출합니다.

exit
claude
이 유튜브 영상 텍스트로 정리해줘
https://youtu.be/{유퀴즈-김대식-인터뷰-4분-발췌-URL}

진행 화면에서 다음이 보여요.

1. extract_audio.sh 호출 → mp3 추출 → wav 변환
2. transcribe_gemini.py 호출 → Gemini Files API 업로드
3. 전사 텍스트 + 화자 태그 수신
   [진행자] ... [김대식 교수] ... [VCR 나레이션] ...
4. 5 유형 판별 → 인터뷰 (질문자 + 답변자 Q&A 패턴)
5. templates.md의 인터뷰 양식 적용
6. Q&A 구조 + 발언 하이라이트로 저장

결과 파일을 열어보세요. 인터뷰 양식대로 Q&A 구조가 잡혀 있고, 진행자·게스트·VCR 나레이션이 분리돼 있어야 합니다.

6. STEP 5 — 본인 회의 응용

본인 회의 녹음 파일이 있다면 그대로 넣어보세요.

이 회의 녹음 정리해줘
~/Documents/2026-05-28-팀미팅.mp3

스킬이 회의 유형으로 자동 판별하면서 안건·결정사항·액션 아이템 표가 들어간 마크다운이 떨어집니다. 5 유형 자동 판별 덕분에 본인이 매번 "회의록 양식으로 정리해줘"라고 명시하지 않아도 돼요.

직무별 응용:

직무자주 다룰 입력
마케팅회의 + 인터뷰(고객 인터뷰)
PO회의(스프린트) + 발표(데모)
영업미팅(고객) + 인터뷰(니즈 청취)
학습강의 + 팟캐스트

결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
SKILL.md~/fastcampus-cc/.claude/skills/audio-to-doc/SKILL.md5 유형 자동 판별 본문
extract_audio.sh~/fastcampus-cc/.claude/skills/audio-to-doc/scripts/yt-dlp + ffmpeg 변환
transcribe_gemini.py~/fastcampus-cc/.claude/skills/audio-to-doc/scripts/Gemini 전사 + 화자 분리
templates.md~/fastcampus-cc/.claude/skills/audio-to-doc/references/5 유형 출력 양식
.env 한 줄~/fastcampus-cc/.envGEMINI_API_KEY
시연 산출 1~2건실습29-회의록자동화스킬/유튜브 인터뷰 시연 결과
본인 회의 1건실습29-회의록자동화스킬/(선택) 본인 회의 적용 결과

완료 또는 /wrap을 입력하면 progress.json의 practice_completed에 "실습 29"가, skills_created에 "audio-to-doc"가 추가됩니다.


자주 막히는 포인트

증상원인해결
yt-dlp 명령 없음미설치brew install yt-dlp
ffmpeg 명령 없음미설치brew install ffmpeg
Gemini API 호출이 401키 오타 또는 .env 위치 오류강의 워크스페이스 루트 ~/fastcampus-cc/.env인지 확인. 변수명 GEMINI_API_KEY 정확히
Gemini 무료 한도 초과분당·일일 요청 한도 도달잠시 후 재시도 또는 결제 연결
한국어 전사가 영문으로 나옴프롬프트에 언어 명시 누락transcribe_gemini.py 프롬프트에 "한국어로 전사" 강제
화자 구분이 안 됨짧은 리액션을 별도 화자로 과분리gemini-3.5-flash 사용 확인 (2.5는 과분리 경향)
5 유형 판별이 항상 회의로 빠짐판별 기준이 약함SKILL.md에 화자 수 + 키워드 빈도 임계값 명시
1시간 회의가 한 번에 안 됨토큰 한도 초과30분 단위로 자르고 합치는 단계 SKILL.md에 추가
사내 대외비 회의에 쓰기 망설여짐Gemini는 외부 전송WhisperKit 로컬 분기 추가 — SKILL.md에 "민감 회의면 WhisperKit 사용" 명시
본인 회의 파일이 m4a/mp3인데 안 됨extract_audio.sh가 URL만 처리스크립트가 로컬 파일 경로도 받게 인자 확장
액션 아이템이 누락회의 양식 누락templates.md의 회의 양식에 "액션 아이템: [담당자] [내용] [기한]" 명시

다음 클립

→ Part 6 / Clip 9: 모닝 브리핑 — Part 5 GWS + 슬래시 커맨드

다음 클립에서는 한 스킬이 다른 스킬을 부르는 첫 사례가 나옵니다. 매일 아침 메일·일정·뉴스를 한 화면 HTML 대시보드로 받는 모닝 브리핑이에요. Part 5에서 만든 GWS CLI 자산이 메일·일정 재료가 되고, Clip 6에서 만든 naver-news 스킬이 뉴스 칸을 채웁니다. 슬래시 커맨드와 결합해서 호출도 두 가지 방식 — 자연어와 /morning-briefing 슬래시.

모닝 브리핑

Part 5 GWS + nopal + 슬래시 커맨드 결합

Part 6 · Clip 9

이 클립에서 만드는 것

매일 아침 30분씩 하던 작업이 한 클릭에 들어가는 시간이에요. 두 가지 새로운 패턴을 동시에 익힙니다.

  • Part 5 자산 재활용 위에 nopal 얹기 — Part 5 Clip 3에서 인증한 GWS CLI를 그대로 두고, nopal 플러그인으로 자연어 오케스트레이션을 추가합니다. 새 인증 없이 메일·일정 호출이 자연어로 돼요.
  • 스킬이 스킬을 부르는 첫 사례 — morning-briefing 스킬이 자기 안에서 Clip 6의 naver-news 스킬을 재호출합니다. 스킬을 모아놓으면 새 스킬은 작은 조각만 더하고 기존 자산을 끌어 쓰면 돼요.

만드는 스킬은 morning-briefing. 3개 데이터 소스를 한 화면 HTML 대시보드로 묶어줍니다.

소스도구결과
📧 메일nopal (Gmail) — Part 5 GWS 자산안 읽은 5건
📅 일정nopal (Calendar)오늘 일정
📰 뉴스Clip 6 naver-news 재호출관심 키워드 5건

호출은 두 가지 방식이에요. 자연어 ("오늘 모닝 브리핑")와 슬래시 커맨드 (/morning-briefing). 자동 발동과 명시 호출 둘 다 가능합니다.

이번 클립에서 할 일은 다섯 단계입니다. nopal 설치 → 워크플로우 잡기 → 분리 정의 → 스킬 + 슬래시 커맨드 작성 → 호출 테스트 + 자동 발동 미리보기.


핵심 개념

Part 5 GWS 자산 위에 nopal — 새 인증 없이 자연어 호출

Part 5 Clip 3에서 GWS CLI 연동을 마쳤다면 이미 본인 Google 계정으로 Gmail·Calendar 접근 권한이 갖춰져 있어요. 그 위에 nopal 플러그인 한 줄을 얹으면, 자연어로 메일·일정을 호출할 수 있게 됩니다.

[Part 5 자산]                [Clip 9에서 얹는 것]

GWS CLI 인증            →   nopal 플러그인 (자연어 오케스트레이션)
(Gmail, Calendar 권한)      "메일 5건 요약" / "오늘 일정"
                            같은 자연어가 GWS CLI 호출로 자동 변환

새 인증을 다시 받지 않아요. Part 5의 자산이 그대로 살아 있는 위에 한 단계 더 쌓는 구조입니다. Part 5 자산 사슬의 가치가 이번 클립에서 가장 잘 드러나요.

스킬이 스킬을 부르는 첫 사례

뉴스 칸은 새로 만들지 않습니다. Clip 6에서 만든 naver-news 스킬을 그대로 재호출해요.

morning-briefing 본문
   ↓
1. nopal로 메일 5건 호출
2. nopal로 오늘 일정 호출
3. naver-news 스킬 재호출 (키워드: "클로드코드" 같은 본인 관심 키워드)
4. 받은 결과 3개를 HTML 대시보드 한 장으로 합치기

스킬은 폴더 단위로 모이는 자산이에요. 모아놓으면 새 스킬은 처음부터 다시 만들지 않고, 기존 스킬을 부르는 짧은 본문 + HTML 디자인만 추가하면 됩니다. 이번 클립이 그 첫 시연이에요.

슬래시 커맨드 결합 — 호출 두 가지 방식

같은 스킬을 두 가지로 부를 수 있습니다.

[자연어 호출] description 자동 매칭
    "오늘 모닝 브리핑"
    "아침 브리핑 받자"
    "메일 일정 뉴스 한 번에"

[명시 호출] 슬래시 커맨드
    /morning-briefing

자연어는 description 키워드와 매칭되면 자동 발동돼요. 슬래시는 명시적이라 빠르게 부르기 좋습니다. 두 가지를 같이 두면 본인이 그때그때 편한 방식을 선택할 수 있어요.

슬래시 커맨드는 별도 파일로 만듭니다.

~/fastcampus-cc/.claude/commands/morning-briefing.md

본문은 짧아요. "morning-briefing 스킬을 호출한다"는 한 줄만 들어가면 됩니다.

뉴스 소스 확장 (선택)

기본 흐름은 Clip 6 naver-news 재호출이에요. 본인 관심사가 투자가 아니라 "그날 알아야 할 일반 뉴스"라면, daily-news 같은 종합 헤드라인 스킬을 따로 만들어 뉴스 칸을 갈아 끼울 수 있습니다.

naver-news를 고치는 게 아니라(반도체 같은 특화 키워드 깊이를 유지) 새 스킬을 하나 더 만들어 morning-briefing이 골라 부르는 구조예요. 네이버 오픈 API엔 헤드라인 엔드포인트가 없으니까, 분야별 다중 검색 + 군집·보도량 랭킹으로 근사하면 됩니다.

SessionStart hook 연결 — 자동 발동 미리보기

Part 5 Clip 4에서 만든 SessionStart hook을 변형하면, 매일 아침 클로드코드를 켤 때 자동으로 모닝 브리핑이 뜨게 만들 수 있어요.

~/fastcampus-cc/.claude/settings.json
    SessionStart hook
        command: "morning-briefing 스킬 호출"

이렇게 두면 매일 아침 클로드코드 켜는 순간 한 화면 대시보드가 자동으로 떨어집니다. Part 5 자산이 매일 활용되는 형태예요. 이번 클립은 hook 연결을 미리보기만 보여주고, 실제 자동화는 본인이 원하는 시점에 추가하면 됩니다.

사전 준비 — nopal 플러그인 설치

플러그인 설치는 2줄.

/plugin marketplace add fivetaku/gptaku_plugins
/plugin install nopal@gptaku-plugins

설치 후 클로드코드 재시작. 인증은 Part 5 GWS 자산이 그대로 살아 있어서 새로 받지 않습니다.


진행 흐름

1. /part06 호출 → Clip 9 선택

/part06

자동 셋업이 자산을 확인합니다.

✓ naver-news 확인 (재호출 가능)
✓ Part 5 실습20 GWS CLI 자산 확인 (nopal 재활용)
✓ nopal 확인 (GWS 자연어 오케스트레이션)
✓ ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습30-모닝브리핑스킬/ 준비 완료
✓ ~/fastcampus-cc/.claude/skills/morning-briefing/ 준비 완료
✓ ~/fastcampus-cc/.claude/commands/ 준비 완료

naver-news나 GWS CLI가 빠져 있으면 안내가 뜹니다. Clip 6 또는 Part 5 Clip 3를 먼저 마치고 다시 진행하세요.

2. STEP 1 — 워크플로우 잡기

메일·일정·뉴스를 모아서 매일 아침 모닝 브리핑 만들려는데,
어떻게 워크플로우를 구성해야 할까?

정리되는 단계는 보통 이런 모습입니다.

1. 3개 소스 동시 호출
   - 메일: nopal로 Gmail 안 읽은 5건
   - 일정: nopal로 오늘 일정
   - 뉴스: naver-news 스킬 재호출 (관심 키워드)
2. 결과 3개 받아오기
3. HTML 대시보드 한 장으로 합치기 (메일 / 일정 / 뉴스 3 섹션)
4. 브라우저로 자동 열기
5. 저장 (실습30/brief-{날짜}.html)

3. STEP 2 — 분리 정의 (3 소스 + 호출 두 방식)

정리된 단계 보완하자.

[기존 자산 재호출]
- nopal — Gmail / Calendar 자연어 호출
- naver-news 스킬 — 뉴스 칸 재호출

[SKILL.md 본문 — 새로 작성할 부분만]
- 3 소스 동시 호출 + 결과 받기
- HTML 대시보드 디자인 (3 섹션 카드 + 모바일 반응형)
- 브라우저 자동 열기 (open 명령)

[슬래시 커맨드 — commands/morning-briefing.md]
- "morning-briefing 스킬 호출" 한 줄

자동 발동 미리보기:
- Part 5 Clip 4 SessionStart hook 변형 가이드만 안내 (실제 적용은 선택)

4. STEP 3 — 스킬 + 슬래시 커맨드 작성

지금 정의한 분리 안대로 morning-briefing 스킬과 슬래시 커맨드를 만들어줘.

위치:
- ~/fastcampus-cc/.claude/skills/morning-briefing/SKILL.md
- ~/fastcampus-cc/.claude/commands/morning-briefing.md

SKILL.md description: "모닝 브리핑·아침 브리핑·오늘 시작·메일 일정 뉴스 한 번에" 키워드

SKILL.md 본문:
1. nopal 호출 (Gmail): "안 읽은 메일 5건 제목 + 보낸이 + 한 줄 요약"
2. nopal 호출 (Calendar): "오늘 일정 시간순"
3. naver-news 스킬 재호출 (키워드는 사용자 설정 또는 기본값 "클로드코드")
4. 3 결과를 HTML 대시보드로 묶기
   - 헤더: 오늘 날짜 + 인사 한 줄
   - 섹션 A: 메일 5건 (제목·보낸이·요약)
   - 섹션 B: 일정 (시간·제목·장소)
   - 섹션 C: 뉴스 5건 (제목·요약·링크)
   - 모바일 반응형
5. ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습30-모닝브리핑스킬/brief-{YYYYMMDD}.html 저장
6. 브라우저 자동 열기 (macOS: `open`, Linux: `xdg-open`, Windows: `start`)

commands/morning-briefing.md:
- description: "한 클릭 아침 브리핑"
- 본문: "morning-briefing 스킬을 호출하라"

5. STEP 4 — 호출 테스트

클로드코드 재시작 후 두 가지 방식 모두 테스트해보세요.

exit
claude

자연어 호출:

오늘 모닝 브리핑

description 매칭되면서 스킬이 발동돼요. 진행 화면에서 3 소스가 차례로 호출되는 모습이 보입니다.

1. nopal Gmail 호출 → 메일 5건 받음
2. nopal Calendar 호출 → 오늘 일정 받음
3. naver-news 스킬 재호출 → 키워드 뉴스 5건 받음
4. HTML 대시보드 합치는 중...
5. brief-{YYYYMMDD}.html 저장 + 브라우저 자동 열림

브라우저에 한 화면 대시보드가 떠야 합니다. 메일 카드 5개, 오늘 일정 표, 뉴스 카드 5개가 다 들어가 있어야 해요.

슬래시 커맨드 호출:

/morning-briefing

같은 결과가 같은 자리에 떨어집니다. 자연어와 슬래시 둘 다 사용 가능한 게 확인되면 OK.

6. STEP 5 — SessionStart hook 연결 미리보기 + 본인 일 응용

매일 아침 자동 발동을 원하면, Part 5 Clip 4에서 만든 hook을 변형하세요.

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "echo '오늘 모닝 브리핑 받으시려면 /morning-briefing 입력하세요'"
          }
        ]
      }
    ]
  }
}

너무 무거운 자동화는 시작 시 느려질 수 있어서, hook은 "안내"만 띄우고 본인이 명시 호출하는 게 무난해요. 매일 자동 실행을 원하면 /schedule로 따로 등록하세요.

직무별 응용:

직무추가하면 좋을 소스
마케팅본인 브랜드 키워드 모니터링 + 광고 성과 (gws CLI Sheets)
PO스프린트 진도 (Linear/Jira MCP) + 팀 일정
영업고객사 메일 우선순위 + 오늘 미팅 + 고객사 뉴스
학습안 읽은 RSS + 오늘 학습 일정 + 관심 분야 새 논문

본인 일에 맞춰 SKILL.md 본문의 소스 호출 부분만 손보면 같은 흐름이 다른 도메인으로 갑니다.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
SKILL.md~/fastcampus-cc/.claude/skills/morning-briefing/SKILL.md3 소스 통합 본문
morning-briefing.md~/fastcampus-cc/.claude/commands/슬래시 커맨드 (/morning-briefing)
brief-{YYYYMMDD}.html실습30-모닝브리핑스킬/첫 호출 결과 대시보드

완료 또는 /wrap을 입력하면 progress.json의 practice_completed에 "실습 30"이, skills_created에 "morning-briefing"이, commands_created에 "morning-briefing"이 추가됩니다.


자주 막히는 포인트

증상원인해결
nopal 플러그인 확인되지 않음미설치/plugin marketplace add fivetaku/gptaku_plugins 후 /plugin install nopal@gptaku-plugins
nopal 호출 시 인증 오류Part 5 GWS CLI 미연동Part 5 Clip 3로 돌아가 GWS CLI 인증 완료 후 재시도
naver-news 재호출 안 됨Clip 6 미진행 또는 스킬 위치 오류~/fastcampus-cc/.claude/skills/naver-news/SKILL.md 존재 확인. 없으면 Clip 6부터
메일 5건이 빈 채로 옴Gmail 안 읽은 메일이 실제 0건정상. 테스트면 임시 메일 한두 통 보내고 재호출
일정이 비어 있음Calendar에 오늘 일정 없음정상. 캘린더에 테스트 일정 하나 만들고 재호출
뉴스 칸이 안 채워짐naver-news 키워드 미지정SKILL.md에서 기본 키워드 명시 또는 호출 시 AskUserQuestion
HTML 대시보드가 데스크탑에서만 예쁨모바일 미디어 쿼리 누락"모바일 반응형 강제" 재요청
슬래시 커맨드 /morning-briefing 안 됨commands/ 폴더 위치 오류~/fastcampus-cc/.claude/commands/morning-briefing.md 위치 확인. 클로드코드 재시작 필요
브라우저 자동 열림이 안 됨OS별 명령 차이macOS는 open, Linux는 xdg-open, Windows는 start. SKILL.md에 OS 분기 명시
SessionStart hook에 무거운 명령 박음시작이 느려짐hook엔 echo 안내만, 실제 호출은 사용자 명시
매일 자동 발행 원함hook은 일회성 아님/schedule 매일 오전 8시 "오늘 모닝 브리핑" 추가 등록

다음 클립

→ Part 6 / Clip 10: 콘텐츠 파이프라인 — 6 STEP 풀 통합

다음 클립이 Part 6의 마지막이에요. 지금까지 만든 스킬과 자산을 한 자루에 묶어 콘텐츠 파이프라인 한 스킬로 통합합니다. 한 마디 주제 입력 → 리서치 → 카드뉴스 기획 → 이미지 → HTML → TTS → Remotion 9:16 영상까지 6단계가 한 번에 굴러가요. Part 03에서 30분 걸리던 콘텐츠 작업이 5분으로 줄어드는 시연입니다.

콘텐츠 파이프라인

6 STEP 풀 통합 — 리서치부터 9:16 영상까지

Part 6 · Clip 10Part 6 마무리

이 클립에서 만드는 것

Part 6의 마지막 클립이에요. 지금까지 만든 7개 스킬과 Part 5 자산 6종을 하나로 묶어 콘텐츠 파이프라인 한 스킬로 통합합니다.

한 마디 주제만 던지면 6단계가 자동으로 굴러가요.

주제 한 마디 (예: "벚꽃 명소")
   ↓
[1] 딥리서치 (deep-research 스킬 재호출, 폴백 WebSearch) → 01-리서치-보고서.md
[2] 카드뉴스 기획 (유형·장수·핵심 메시지) → 02-카드뉴스-기획서.md
[3] 이미지 생성 (generate_image.py, gpt-image-2, 1088x1360→1080x1350 crop) → images/card-01~12.png
[4] HTML 카드뉴스 (B&W 에디토리얼 매거진 1080x1350) → card-news.html
[5] TTS 스크립트 — 카드(씬) 1장 = 섹션 1개 (## 헤더로 씬 구분) → 05-tts-script.md
[6] 음성·영상 — gpt-4o-mini-tts로 씬별 mp3 + Remotion 9:16 영상 빌드 → output.mp4

Part 03 카드뉴스·리모션 챕터에서 30분씩 따로 따로 하던 작업이 한 호출에 5분이면 끝납니다 (영상 빌드 시간 별도).

이번 클립에서 꼭 챙겨갈 메시지는 두 가지예요.

  • 있는 스킬은 재호출, 없는 기능은 자체 스크립트 — 리서치는 Clip 2에서 만든 deep-research를 그대로 호출하고, 이미지·TTS는 OpenAI API로 자체 스크립트 작성. "스킬을 호출한다 vs 직접 만든다"를 판단하는 눈을 기르는 거예요.
  • 체크포인트 패턴 — 단계마다 AskUserQuestion으로 "OK 다음 갈까요?"를 물어봅니다. 자동만이 아닌 협업이에요. 중간에 어색한 결과가 나오면 다음 단계로 안 넘어가도록.

만들고 나면 Part 6 9 실습이 다 끝납니다. 마지막에 본인 평생 도구 정리 + 회고로 마무리해요.


핵심 개념

OpenAI 키 하나로 이미지·TTS 동시 처리

이미지 생성과 TTS 모두 OpenAI API를 씁니다. 키 하나로 두 스크립트가 다 굴러가요.

.env
─────
OPENAI_API_KEY=sk-...     ← 한 줄로 이미지·TTS 공용
스크립트모델용도
generate_image.pygpt-image-2 (snapshot gpt-image-2-2026-04-21)카드뉴스 배경 이미지 12장
tts.pygpt-4o-mini-tts씬별 음성 mp3

gpt-image-2 — 1088x1360 생성 → 1080x1350 crop

카드뉴스 표준은 인스타 캐러셀 4:5 비율(1080×1350). OpenAI 이미지 모델은 16px 배수 제약이 있어요. 1080은 16의 배수가 아니라 직접 요청이 안 됩니다.

1080 / 16 = 67.5  ← 불가
1088 / 16 = 68    ← 가능
1350 / 16 = 84.375 ← 불가
1360 / 16 = 85    ← 가능

그래서 1088×1360으로 생성 → 1080×1350으로 crop 후처리가 정석 패턴이에요. gpt-image-2는 투명 배경 미지원이라 background: "opaque" 고정.

품질 티어도 있어요. 드래프트 배치엔 low, 일반 최종은 medium, 정밀 텍스트나 인포그래픽은 high. 처음엔 low로 톤 확인하고 마음에 들면 medium으로 재생성하는 게 과금 방어에 좋습니다.

gpt-4o-mini-tts — 씬별 끊어서

TTS 모델은 gpt-4o-mini-tts예요. 한 카드(씬) = 한 섹션 구조로 TTS 스크립트를 작성합니다.

05-tts-script.md
─────────────────
## 카드 1 (표지)
{표지 음성 텍스트}

## 카드 2 (도입)
{본문 1 음성 텍스트}

## 카드 3
...

## 헤더로 씬을 끊어 두면 tts.py가 섹션별로 분리해 mp3를 생성합니다. 카드별 재생 시간을 card-timings.json에 기록하면, Remotion이 카드마다 길이를 정확히 맞춰 9:16 영상을 빌드해요.

보이스는 13종 중 선택 (alloy, coral, nova, marin, cedar 등). 한국어 발음 자연도는 marin이나 cedar가 무난합니다.

체크포인트 패턴 — 단계마다 OK 물어보기

6단계가 자동으로 굴러가면 좋아 보이지만, 중간에 어색한 결과가 나와도 그대로 넘어가버리면 영상까지 다 만들고 나서 처음부터 다시 해야 해요. 그래서 단계마다 AskUserQuestion으로 확인합니다.

[1] 리서치 완료 → "내용 어떠세요? 다음 단계 갈까요?"
[2] 기획 완료  → "카드 장수·메시지 OK? 이미지 생성 갈까요?"
[3] 이미지 완료 → "톤 OK? HTML 만들까요?"
[4] HTML 완료  → "디자인 OK? TTS 스크립트 작성?"
[5] TTS 스크립트 → "음성 텍스트 OK? 음성 생성?"
[6] 영상 빌드  → 끝

체크포인트 덕분에 본인이 흐름을 통제할 수 있어요. 마음에 안 드는 단계가 있으면 그 단계만 재실행하고 나머지는 그대로 이어집니다.

사전 리서치 자산 — references/

이번 클립은 별도 도메인 지식(카드뉴스 만들기·이미지 프롬프트 작성법)이 필요해서 references/ 폴더에 두 문서를 둡니다.

~/fastcampus-cc/.claude/skills/content-pipeline/references/
├── card-news-guide.md          ← 카드뉴스 제작 가이드 (구조·카피·정량값)
└── image-prompt-generator.md   ← gpt-image-2용 시스템 프롬프트

자동 셋업이 이 두 파일을 강의 워크스페이스의 사전 리서치 폴더에서 자동 복사해줍니다. SKILL.md 본문이 매번 처음부터 작성할 필요 없이, 이미 검증된 가이드를 참조해서 일관된 결과를 만들어요.

사전 준비 — OpenAI 키 + Node.js + Remotion

1. OpenAI 키 발급
   - https://platform.openai.com 가입
   - API keys → "Create new secret key" → sk-...로 시작하는 키 복사
   - ~/fastcampus-cc/.env 에 한 줄 추가
     OPENAI_API_KEY=sk-...

2. Python openai SDK 설치
   pip install openai

3. Node.js + Remotion (Part 03에서 이미 설치했다면 OK)
   brew install node
   # Remotion은 Part 03 clip-10 프로젝트 재사용

OpenAI는 무료 한도가 없습니다. 키 발급하려면 결제 수단 등록이 필요해요. 첫 사용 전에 $5 정도 결제해두면 시연 분량은 충분합니다 (이미지 12장 + TTS 5분 정도 = $1 미만).


진행 흐름

1. /part06 호출 → Clip 10 선택

/part06

자동 셋업이 자산과 의존성을 한꺼번에 확인합니다.

✓ 사전 리서치 자산 2종 → content-pipeline/references/ 복사
  (card-news-guide.md + image-prompt-generator.md)
✓ Node.js OK
✓ openai SDK OK
ℹ .env에 OPENAI_API_KEY 필요 — 사전 준비 따라하기
✓ deep-research 확인 (재호출 가능)
✓ ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습31-콘텐츠파이프라인스킬/ 준비 완료

OpenAI 키를 .env에 등록한 다음 STEP 1로.

2. STEP 1 — 워크플로우 잡기

특정 주제로 리서치해서 영상까지 콘텐츠를 한 번에 만들려는데,
어떻게 워크플로우를 구성해야 할까?

정리되는 단계는 보통 이런 모습이에요.

1. 주제 한 마디 입력
2. 딥리서치 (자료 수집·정리)
3. 카드뉴스 기획 (장수·핵심 메시지)
4. 이미지 생성 (카드별 배경)
5. HTML 카드뉴스 (4:5 디자인)
6. TTS 스크립트 (음성 텍스트)
7. 음성 변환 (씬별 mp3)
8. 영상 빌드 (9:16 Remotion)

3. STEP 2 — "있는 스킬 vs 자체 제작" 판단

여기서 이번 클립의 핵심 메시지가 나옵니다.

정리된 단계 보완하자. 단계마다 '있는 스킬 재호출 vs 자체 스크립트' 판단:

[있는 스킬 재호출]
- 단계 2 리서치 → deep-research 스킬 재호출 (Clip 2에서 만든 v2)
  · 폴백: deep-research가 없으면 WebSearch로 대체

[자체 스크립트 — 결정론]
- 단계 4 이미지 → generate_image.py (gpt-image-2)
- 단계 7 음성 → tts.py (gpt-4o-mini-tts)
- 단계 8 영상 → Remotion 빌드 명령 (Part 03 프로젝트 재사용)

[SKILL.md 본문 — 자유도]
- 단계 1 주제 받기 + 체크포인트
- 단계 3 카드뉴스 기획 (references/card-news-guide.md 참조)
- 단계 5 HTML 카드뉴스 디자인
- 단계 6 TTS 스크립트 작성 (## 헤더로 씬 구분)
- 각 단계 사이 AskUserQuestion 체크포인트

[references — 도메인 지식]
- card-news-guide.md (사전 리서치 자산)
- image-prompt-generator.md (사전 리서치 자산)

"다른 스킬을 부른다"가 포인트가 아니라, "있으면 재호출·없으면 자체 제작" 판단이 포인트예요. 미래에 본인이 새 파이프라인을 만들 때 같은 판단을 반복하게 됩니다.

4. STEP 3 — 스킬 + 두 스크립트 + 체크포인트 작성

지금 정의한 분리 안대로 content-pipeline 스킬을 만들어줘.

위치:
- ~/fastcampus-cc/.claude/skills/content-pipeline/SKILL.md
- ~/fastcampus-cc/.claude/skills/content-pipeline/scripts/generate_image.py
- ~/fastcampus-cc/.claude/skills/content-pipeline/scripts/tts.py
- references/는 이미 자동 셋업으로 복사됨

SKILL.md description: "콘텐츠 파이프라인·카드뉴스·영상 자동 생성·리서치부터 영상까지" 키워드

SKILL.md 본문:
1. 주제 받기
2. deep-research 스킬 재호출 (있으면) 또는 WebSearch (폴백) → 01-리서치-보고서.md
   [체크포인트 1] AskUserQuestion: "내용 OK? 다음 갈까요?"
3. 카드뉴스 기획 (references/card-news-guide.md 참조)
   - 유형·장수·핵심 메시지 결정 → 02-카드뉴스-기획서.md
   [체크포인트 2] AskUserQuestion: "기획 OK? 이미지 생성?"
4. generate_image.py 호출 (카드별 12장) → images/card-01~12.png
   [체크포인트 3] AskUserQuestion: "이미지 톤 OK? HTML?"
5. HTML 카드뉴스 작성 (B&W 에디토리얼 매거진, 1080x1350)
   - card-news.html
   [체크포인트 4] AskUserQuestion: "디자인 OK? TTS?"
6. TTS 스크립트 작성 (## 헤더로 씬 구분) → 05-tts-script.md
   [체크포인트 5] AskUserQuestion: "스크립트 OK? 음성?"
7. tts.py 호출 (씬별 mp3 + card-timings.json) → audio/cards/*.mp3
8. Remotion 9:16 빌드 (Part 03 프로젝트 재사용) → output.mp4

generate_image.py 요건:
- API 키: os.getenv("OPENAI_API_KEY")
- 모델: gpt-image-2 (snapshot gpt-image-2-2026-04-21)
- 크기: 1088x1360 생성 → 1080x1350 crop 후처리
- background: opaque
- 품질 기본값: medium (드래프트는 low)
- 입력: image-prompt-generator.md의 시스템 프롬프트 + 카드별 비주얼 아이디어

tts.py 요건:
- API 키: 같은 OPENAI_API_KEY 공유
- 모델: gpt-4o-mini-tts
- 보이스: marin 또는 cedar (한국어 무난)
- 입력: 05-tts-script.md 파싱 (## 헤더로 씬 분리)
- 출력: 씬별 mp3 + card-timings.json (각 카드 재생 시간)

결과물 위치: ~/fastcampus-cc/50-my-work/Part06-스킬만들기/실습31-콘텐츠파이프라인스킬/{주제}-{날짜}/

생성된 파일들을 안티그래비티에서 확인합니다.

5. STEP 4 — 벚꽃 명소 시연 (단계별)

클로드코드 재시작 후 자연어로 호출.

exit
claude
벚꽃 명소 주제로 콘텐츠 파이프라인 만들어줘

진행이 6단계로 갈라져요. 각 체크포인트에서 OK 답변하면서 진행합니다.

단계 1·2 — 리서치 + 기획 (~6분)

[1] deep-research 스킬 재호출 → "전국 벚꽃 명소"
    → 01-리서치-보고서.md (출처 5~10개)
[CP1] "내용 어떠세요? 다음 갈까요?"  → "응 좋아"

[2] 카드뉴스 기획 (references/card-news-guide.md 참조)
    - 유형: 정보형 (지식·노하우)
    - 장수: 표지 1 + 본문 8 + 마무리 1 = 10장
    - 핵심: 지역별 명소 + 개화 시기 + 추천 코스
    → 02-카드뉴스-기획서.md
[CP2] "기획 OK? 이미지 12장 생성?" → "응"

단계 3·4 — 이미지 + HTML (~5분)

[3] generate_image.py 호출 (12장 배치)
    - 드래프트 low로 톤 확인 → "벚꽃 + 톤 OK" 답하면 medium 재생성
    → images/card-01~12.png (1080x1350)
[CP3] "이미지 톤 OK? HTML?" → "응"

[4] HTML 카드뉴스 작성
    - B&W 에디토리얼 매거진 톤
    - 4:5 캐러셀 안전영역 + 폰트 위계 + 60-30-10 색상
    → card-news.html
[CP4] "디자인 OK? TTS 스크립트?" → "응"

단계 5·6 — TTS + 영상 (~3분, 빌드 별도)

[5] TTS 스크립트 작성 (카드 1장 = 섹션 1개)
    → 05-tts-script.md
[CP5] "스크립트 OK? 음성 생성?" → "응"

[6] tts.py 호출 (씬별 mp3 생성)
    → audio/cards/card-01.mp3 ~ card-10.mp3
    → card-timings.json (각 카드 재생 시간)
[7] Remotion 9:16 영상 빌드 (Part 03 프로젝트 재사용)
    → output.mp4

브라우저에서 card-news.html 열어 카드뉴스 확인. 영상 플레이어로 output.mp4 재생해서 9:16 결과 확인.

6. STEP 5 — Part 6 통합 정리 + 회고

Part 6 9 실습이 끝났어요. 이번 클립 마무리에서 통합 정리를 합니다.

[Part 6 9 실습 + Part 5 자산 6종 = 본인 평생 도구]

CH01 — 스킬 입문
1. deep-research v1 — 손으로 메타 흐름 4단계 익히기
2. deep-research v2 — 비교·개선 사이클 (라이프사이클)
3. skillers-suda 도구 — 자동 생성 (일상 사용)

CH02 — API 활용
4. trip-advisor — 공공 API + 스크립트 분리 첫 도입
5. naver-news — 검색 API + AskUserQuestion 인터랙티브 + HTML 출력

CH03 — 업무 자동화
6. fashion-trend — 외부 플러그인 (스크립트 분리 X 예외)
7. audio-to-doc — 오디오 + 5 유형 자동 판별
8. morning-briefing — 스킬이 스킬 호출 + 슬래시 커맨드
9. content-pipeline — 6 STEP 풀 통합 + 체크포인트

Part 5 자산 사슬 매트릭스:
- 실습 18 CLAUDE.md  → 9 실습 전체 컨텍스트
- 실습 19 커맨드     → Clip 8·9 패턴 재활용
- 실습 20 GWS CLI    → Clip 9 모닝 브리핑 메일·일정 재료
- 실습 21 hooks      → 9 실습 안전장치 (.env 보호)
- 실습 22 GitHub     → 9 실습 묶음 백업

마지막 회고는 자유 입력으로.

가장 응용하고 싶은 실습 1개 + 본인 일 어디에 가져갈지 한 줄

결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
SKILL.md~/fastcampus-cc/.claude/skills/content-pipeline/SKILL.md6 STEP 본문 + 체크포인트
generate_image.py~/fastcampus-cc/.claude/skills/content-pipeline/scripts/gpt-image-2 + crop
tts.py~/fastcampus-cc/.claude/skills/content-pipeline/scripts/gpt-4o-mini-tts
card-news-guide.mdreferences/사전 리서치 자산
image-prompt-generator.mdreferences/사전 리서치 자산
.env 한 줄~/fastcampus-cc/.envOPENAI_API_KEY
벚꽃명소-{날짜}/실습31-콘텐츠파이프라인스킬/6 파일 (리서치·기획·이미지·HTML·TTS·영상)
audio/cards/*.mp3실습31-콘텐츠파이프라인스킬/벚꽃명소-{날짜}/카드별 음성
output.mp4실습31-콘텐츠파이프라인스킬/벚꽃명소-{날짜}/Remotion 9:16 영상

완료 또는 /wrap을 입력하면 다음이 처리됩니다.

  • progress.json의 practice_completed에 "실습 31" 추가
  • skills_created에 7종 명명 스킬 모두 확인 + skillers-suda 자동 생성 1종
  • completed_parts에 "Part 06" 추가
  • 레벨 승급: "AI Intermediate" → "AI Advanced"

자주 막히는 포인트

증상원인해결
OpenAI 키 발급 시 결제 등록 요구OpenAI 무료 한도 없음$5 정도 결제. 시연 분량 충분
OpenAI 호출이 401키 오타 또는 잔액 없음.env의 OPENAI_API_KEY 정확 확인 + 결제 잔액 확인
gpt-image-2 호출이 invalid size1080x1350 직접 요청함1088x1360으로 생성 → Pillow로 1080x1350 crop 후처리
이미지 톤이 매 카드 다름STYLE_LOCK 미적용image-prompt-generator.md의 STYLE_LOCK 1회 정의 + 카드마다 verbatim 재명시
이미지에 텍스트가 박혀 들어옴HTML 텍스트 레이어 분리 미명시프롬프트에 "no readable text, no letters, no numbers, no logos" 강제
gpt-4o-mini-tts 발음이 부자연보이스 선택 오류한국어는 marin 또는 cedar. 다른 보이스는 영문 발음 위주
카드 재생 시간이 영상과 안 맞음card-timings.json 미생성tts.py에서 각 mp3 길이 측정 + JSON 저장 단계 추가
deep-research 스킬이 호출 안 됨Clip 2 미진행 또는 위치 오류~/fastcampus-cc/.claude/skills/deep-research/SKILL.md 확인. 없으면 WebSearch 폴백 사용
Remotion 빌드가 실패Part 03 프로젝트 위치 오류Part 03 clip-10에서 만든 Remotion 프로젝트 경로 SKILL.md에 명시
체크포인트 응답 없이 계속 진행AskUserQuestion 누락SKILL.md 단계 사이마다 AskUserQuestion 명시
영상 빌드 시간이 5분 넘게정상 (10장 + 음성 + 트랜지션)빌드는 백그라운드로. 본인은 다른 일
시연 외 본인 주제로 안 만들어짐도메인 가이드가 카드뉴스에 특화card-news-guide.md를 본인 도메인 가이드로 교체 가능
1080x1350 crop이 어색하게 잘림16배수 마진을 사방 균등 분배 안 함crop 코드에 (1088-1080)/2 = 4px, (1360-1350)/2 = 5px 마진

Part 6 마무리

Part 6 9 실습이 모두 끝났습니다. 처음 만든 deep-research v1부터 마지막 content-pipeline까지, 손에 익은 메타 흐름이 9번 반복됐어요. 다음에 본인 일에 새 스킬을 만들 때, 첫 프롬프트를 "어떻게 워크플로우를 구성해야 할까?"로 시작하는 습관이 남아 있으면 Part 6의 목적은 달성된 거예요.

Part 5 자산 6종 + Part 6 9 실습 = 본인 평생 도구, 이 한 줄이 Part 6에서 가져갈 전부예요. 강의가 끝나도 ~/fastcampus-cc/는 본인 클로드코드 작업장으로 계속 쓰세요. 새 아이디어가 떠오를 때마다 /skillers-suda로 빠르게 첫 동작 형태를 만들고, 부족하면 Clip 3 사이클로 다듬으면 됩니다.

다음에 어디로 — Part 7은 만든 스킬들을 실전 프로젝트에 적용하는 단계입니다. Part 6에서 만든 스킬을 본인 일에 한 달 정도 굴려보고 Part 7로 넘어가는 게 자연스러워요. 한 달 동안 가장 자주 부르게 된 스킬 1~2개가 본인 평생 도구의 핵심이 될 거예요.

→ Part 7 / Clip 1: 하네스 엔지니어링 — 내 워크스페이스 설계하기

수고하셨습니다.

하네스 엔지니어링 — 워크스페이스 설계

하네스 두 층 모델 + 내 워크스페이스 설계도 한 장

Part 7 · Clip 1이론

이 클립에서 배우는 것

Part 7에 오신 걸 환영합니다. 여기서부터는 새로운 걸 배우는 게 아니라, 그동안 만든 걸 하나의 목적으로 조립하는 단계예요.

"하네스"라는 말이 낯설지도 모릅니다. 그런데 본인은 이미 하네스를 만들어왔어요. Part 5에서 CLAUDE.md로 작업 매뉴얼을 적었고, 커맨드·서브에이전트·MCP·Hook을 직접 넣어봤습니다. Part 6에서는 그 재료를 스킬로 묶었고요. 부품은 다 있는데 지금은 따로따로 흩어져 있을 뿐입니다. Part 7은 그걸 목적 하나에 맞춰 한 작업장으로 모으는 일입니다.

이 클립은 Part 7의 첫 클립이자 이론·설계 챕터예요. 손으로 워크스페이스를 짓는 건 다음 클립부터입니다. 오늘은 종이 위 설계도 한 장만 그립니다. 가져갈 건 세 가지예요.

  • 하네스가 무엇인가 — AI가 의도대로 움직이고, 어긋나면 돌아오게 만드는 통제 장치의 총합. 만들고 끝이 아니라 검증·갭 메우기까지가 하네스라는 것
  • 두 층 모델 — 모든 하네스는 두 층으로 나뉩니다. "지시 층"은 부탁이고, "강제 층"은 장치예요
  • 설계 4기준 — 목적·아키타입·폴더·두 층을 따져서 본인 워크스페이스 설계도 다섯 줄을 채우는 법

그다음 Part 7 전체 로드맵(프로젝트 3개 · 8클립 + Part 8), Part 5·6에서 만든 자산이 Part 7로 어떻게 흘러 들어오는지를 이어서 봅니다.

이번 클립에서 할 일은 한 가지예요. 본인 워크스페이스 설계도 다섯 줄을 채우는 것. 정답을 외우는 게 아니라, 본인 일에 맞는 답을 본인이 적습니다.


핵심 개념

하네스란 무엇인가 — 말의 마구(馬具) 비유

하네스(harness)는 원래 말에 채우는 마구예요. 힘은 말이 내고, 방향과 안전은 마구가 잡습니다. AI도 똑같습니다. 일하는 힘은 클로드코드가 내지만, "어느 방향으로, 어디까지, 무엇은 절대 안 하고"를 잡아주는 게 하네스예요.

정의를 한 줄로 적으면 이렇습니다.

하네스 = AI가 의도대로 동작하게 하고,
         어긋나면 돌아오게 하는 통제 장치의 총합

여기서 다들 한 가지를 빠뜨립니다. 하네스는 만들고 끝이 아니에요. 내비게이션을 떠올려 보세요. 목적지를 찍는 게 절반이고, 경로를 벗어났을 때 "경로를 재탐색합니다"가 나머지 절반입니다. 재탐색이 없으면 길을 잃은 채로 그냥 헤매죠. 하네스도 똑같습니다. 규칙을 적어두는 것만으로는 모자라요. 어겼을 때 막히는지 점검하고, 빈 곳을 메우는 것까지가 하네스입니다.

그래서 좋은 하네스는 늘 두 질문으로 수렴합니다.

  • 오작동을 어떻게 막나?
  • 났을 때 어떻게 돌아오나?

이 두 질문이 그대로 다음 클립의 뼈대가 됩니다. 다음 클립에서는 일부러 규칙을 어겨봐서 진짜 막히는지 눈으로 확인하고, 점검 점수까지 받아본 다음에야 워크스페이스를 믿고 씁니다.

두 층 모델 — 지시는 부탁, 강제는 장치

하네스를 이해하는 가장 쉬운 방법은 두 층으로 나눠 보는 거예요.

층무엇인가부품한 줄로
지시 층AI가 "그렇게 해주면 좋겠다"고 부탁하는 규칙CLAUDE.md, 스킬, 커맨드, 서브에이전트문서로 적는 약속
강제 층AI가 어겨도 시스템이 못 하게 막는 장치Hook, 권한(permissions)장치로 거는 안전선

강아지로 비유해 볼게요. 강아지한테 "차도로 나가지 마"라고 말로 가르치는 게 지시 층입니다. 잘 가르치면 대부분 지켜요. 그런데 단 한 번 차도로 뛰어들기만 해도 큰일 나는 상황이라면, 말로만 두지 않고 **목줄(하네스)**을 채웁니다. 그게 강제 층이에요.

여기서 한 가지 원칙이 나옵니다.

이 규칙을 어기면 그냥 아쉬운가, 아니면 사고인가?

아쉬운 정도  → 지시 층 (CLAUDE.md에 문장으로)
사고가 된다  → 강제 층 (Hook으로 막는다)

문서에 "중요한 파일은 지우지 마세요"라고 백 번 적어둬도, 실수로 한 번 지워지면 끝입니다. 그런 규칙은 문장이 아니라 장치로 막아야 해요. 반대로, 어겨도 다시 하면 그만인 규칙까지 전부 Hook으로 막으면 작업장이 뻑뻑해집니다. 사고가 되는 규칙만 강제 층으로 올린다 — 이게 요령이에요.

Part 5에서 만든 trash-guard Hook이 바로 이 강제 층의 첫 사례였어요. "위험한 삭제 명령은 막는다"는 규칙을 문서가 아니라 장치로 건 거죠. Part 7은 그 원형을 본인 업무 워크스페이스에 작정하고 설계하는 단계입니다.

두 층은 사실 일곱 칸 — 설명은 둘로, 점검은 일곱으로

강의에서는 "두 층"으로 가르칩니다. 그래야 머리에 잘 잡히니까요. 그런데 다음 클립에서 워크스페이스를 점검하는 도구(/audit)는 이걸 일곱 칸으로 더 잘게 쪼개서 봅니다. 두 층을 펼치면 이렇게 됩니다.

지시 층 ──┬─ ① CLAUDE.md (매 세션 로드되는 규칙)
          ├─ ② 스킬·커맨드 (부를 때만 깨어나는 워크플로우)
          └─ ③ 서브에이전트 (역할 위임)

강제 층 ──── ④ 훅·권한 (어기면 막는 장치)

뼈대 ────┬─ ⑤ 목적 (이 워크스페이스가 무엇인가)
          └─ ⑥ 폴더 (작업물이 태어나고 졸업하는 곳)

운영 ────── ⑦ 검증·변경 이력 (점검하고 진화시키는 루프)

지금은 이걸 외울 필요 없어요. 설명할 때는 두 층으로 말하고, 점검할 때는 일곱 칸으로 본다 — 이 한 줄만 기억하면 됩니다. 일곱 칸은 다음 클립에서 점검 점수로 다시 만납니다.

이 일곱 칸에는 순서가 있어요. 뼈대(목적·폴더)는 처음부터 제대로 갖추고, 하네스(지시·강제·운영)는 필요한 만큼만 올립니다. 뼈대를 나중에 바꾸는 건 이사 수준의 비용이 들어요. 목적이 흔들리거나 폴더 구조를 갈아엎으면 그 안의 모든 게 같이 흔들립니다. 반대로 안전장치를 처음부터 잔뜩 깔아두면 안 쓰는 장치만 쌓여서 작업장이 무거워지죠. 그래서 뼈대는 완성형으로, 안전장치는 한두 개부터.

안전장치를 왜 아껴야 하는지 한 가지만 더 짚을게요. "있으면 좋겠지" 하고 미리 깔아둔 장치는 거의 안 쓰입니다. 안 쓰는 규칙이 쌓이면 무거워지는 걸로 끝나지 않아요. 옆에 있는 진짜 지켜야 할 규칙의 신뢰도까지 갉아먹습니다. 사문화된 규칙이 하나둘 보이기 시작하면, 에이전트도 본인도 "규칙은 무시해도 되는 것"으로 배워버리거든요. 그래서 하네스는 한 번에 다 까는 게 아니라, 필요가 눈에 보일 때 한 칸씩 올리는 식으로 키웁니다. 커맨드와 폴더만 있는 가벼운 상태에서 출발해서, 위임이 실제로 필요해지면 서브에이전트를 더하고, 사고가 날 자리가 보이면 그제야 강제 훅을 겁니다. 반대로 한동안 한 번도 안 쓴 장치는 과감히 덜어내요. 하네스는 쌓기만 하는 게 아니라 덜어내기도 하는 겁니다.

딱 하나, 예외가 있습니다. 개인정보나 비밀키(시크릿)는 사고를 기다리지 않고 처음부터 강제 층으로 막아요. 한 번 새면 되돌릴 수 없는 자원이라 "어겨봐서 확인"이 안 통하거든요. 나머지는 사고가 한 번 났거나, "이건 한 번만 어겨도 비가역이다" 싶은 자원이 보일 때 훅으로 올리면 됩니다.

설계 4기준 — 다섯 줄 설계도를 채우는 원리

오늘의 결과물은 설계도 다섯 줄입니다. 그 다섯 줄을 채울 때 보는 원리가 네 가지예요.

① 목적 — 워크스페이스 하나에 에이전트 하나

워크스페이스 하나에는 목적 하나만 둡니다. "글도 쓰고, 코드도 짜고, 일정도 관리하는" 만능 작업장은 결국 어느 것도 잘 못해요. 목적이 섞이면 둘로 쪼개세요. 그리고 목적을 적을 때 "이 워크스페이스가 절대 안 하는 것"까지 한 줄로 적어두면 좋습니다. 안 하는 것이 분명해야 에이전트가 헷갈리지 않아요.

예를 들어 "주간 보고서를 쓰는 작업장"이라면, "원본 데이터 수집과 코드 실행은 여기서 안 한다"까지 적어두는 겁니다. 그래야 에이전트가 보고서 쓰다 말고 데이터를 긁어오겠다며 엉뚱한 데로 새지 않아요. 안 하는 것을 적는 건 옆 워크스페이스와 경계를 긋는 일이기도 해요 — 데이터 수집은 리서치 작업장이 맡고, 이 작업장은 글에만 집중하는 식으로요.

② 아키타입 — 다섯 중 하나만

워크스페이스는 일의 성격에 따라 다섯 유형으로 나뉩니다. 매주 보고서를 쓰는 사람은 글쓰기형에 가깝고, 자료를 계속 모아 정리하는 사람은 지식베이스형에 가까워요. 두 개를 고르면 둘 다 어중간해지니 하나만 고릅니다.

아키타입어떤 일에 쓰나폴더 예시
글쓰기책·문서·콘텐츠를 쓰는 일inbox / drafts / published
리서치조사하고 자료를 모아 보고서를 쓰는 일sources / notes / reports
지식베이스자료를 계속 모아 정리하고 찾아보는 일raw / wiki / index
개발앱이나 코드를 만드는 일src / docs / archive
학습공부하고 지식을 쌓는 일material / mywork / review

③ 폴더 — 번호로 생애주기를 말하게

폴더는 장식이 아니라 작업물의 생애주기 선언입니다. 폴더 이름만 봐도 "자료가 어디로 들어와서, 결과물이 어디로 나가는지" 알 수 있어야 해요. 그래서 번호를 붙입니다.

00-system/      설정·운영 문서
10-planning/    기획·계획
20-knowledge/   참조 자료
40-drafts/      작업 중      (여기서 태어나서)
50-output/      완성본       (여기로 졸업한다)
90-archive/     은퇴 (지우지 말고 보관)

핵심은 40 → 50 흐름입니다. "작업 중"과 "완성본"을 물리적으로 갈라두면, 완성 기준을 통과한 것만 50으로 옮긴다는 규칙 하나가 품질 게이트가 돼요. 폐기할 것도 지우지 말고 90으로 — 반면교사 자료가 됩니다. 참고로 학습 워크스페이스(fastcampus-cc)의 50-my-work/가 바로 이 번호 폴더 구조예요. 본인은 이미 이 안에서 일해왔습니다.

④ 두 층 — 지시는 짧게, 강제는 한두 개부터

CLAUDE.md에는 매 세션 꼭 필요한 규칙만 짧게 적습니다. 긴 절차는 스킬로 빼서 부를 때만 읽히게 해요(이게 Part 6에서 배운 스킬의 역할이죠). 그리고 강제 층은 "어기면 사고"인 규칙 한두 개만 처음에 겁니다. 뼈대는 처음부터 갖추되, 안전장치는 부족이 보일 때마다 한 칸씩 늘리면 됩니다.


Part 7 로드맵 — 프로젝트 3개 · 8클립

Part 6까지가 "부품과 스킬 만들기"였다면, Part 7은 그 부품을 실전 프로젝트 세 개로 조립하는 단계입니다. 세 프로젝트는 갈수록 규모가 커져요.

환경 만들기  →  지식 쌓기  →  서비스 짓기
(워크스페이스)   (LLM Wiki)    (유튜브 대시보드)
   ↓               ↓              ↓
 작업장 자체     축적되는 지식   돌아가는 서비스

프로젝트 3개가 8개 클립으로 나뉩니다.

프로젝트 ① — 워크스페이스 (Clip 1·2)

본인 업무용 작업장을 설계하고, 그 작업장을 **만들어내는 작업실(빌더)**까지 짓습니다.

Clip실습 #하는 일결과물
132하네스 이해 + 워크스페이스 설계 (이 클립)설계도 5줄
233빌더로 짓고 점검까지빌더 + 점검 리포트 + 내 업무용 워크스페이스

프로젝트 ② — LLM Wiki (Clip 3·4·5)

자료를 계속 쌓아 검색·활용하는 본인만의 지식 베이스를 만듭니다. ①에서 만든 워크스페이스 안에 짓고요.

Clip하는 일
3LLM Wiki 설계
4위키 짓기
5위키 개선

프로젝트 ③ — 유튜브 대시보드 (Clip 6·7·8)

기획(PRD)부터 화면, 배포까지 실제로 돌아가는 웹 서비스를 만듭니다. Part 7에서 가장 큰 프로젝트예요.

Clip하는 일
6서비스 기획(PRD)
7대시보드 만들기
8배포

그리고 Part 8

Part 7까지 끝나면 본인 손에는 Part 5 자산 + Part 6 스킬 + Part 7 프로젝트 세 개가 쌓여 있어요. Part 8은 그 전체를 정리하면서 본인 평생 도구와 AI Native 여정을 돌아보는 시간입니다.

세 프로젝트를 다 만드는 게 목표는 아닙니다. 본인 일에 가장 가까운 것부터 손에 익히면 돼요. 다만 이 클립은 세 프로젝트 모두의 출발점이라 빠뜨리지 않는 게 좋습니다. 결국 모든 워크스페이스가 두 층으로 설계되니까요.


Part 5 · 6 → Part 7 자산 사슬

Part 7은 새 재료를 만들지 않습니다. 그동안 만든 자산이 그대로 하네스의 부품이 돼요. 어디서 다시 쓰이는지 미리 보고 가죠.

Part 5 · 6 자산Part 7에서 무엇이 되는가어느 층
CLAUDE.md 작성법 (Part 5 실습 18)워크스페이스의 지시 층 본체 — 정체성·규칙을 적는 자리지시 층 ①
커맨드 (Part 5 실습 19)/audit·/new-workspace 같은 점검·생성 입구지시 층 ②
서브에이전트 (Part 5 실습 19)역할 위임 — 닥터가 점검을 맡아 처리지시 층 ③
Hook (Part 5 실습 21)강제 층의 원형 — trash-guard가 차단 훅의 첫 사례강제 층 ④
스킬 만들기 (Part 6 전체)하네스 닥터 4종도 결국 같은 구조의 스킬지시 층 ②
번호 폴더 (50-my-work/)워크스페이스 **뼈대(폴더)**의 살아 있는 예시뼈대 ⑥

표를 보면 한 가지가 눈에 들어와요. Part 7의 일곱 칸은 전부 Part 5·6에서 한 번씩 만져본 것입니다. 하네스는 완전히 새로운 게 아니라, 흩어진 부품에 "목적 하나"라는 이름을 붙여 묶는 작업이에요. 그래서 Part 5·6을 거친 분은 이 사슬이 그대로 손에 잡힙니다.


오늘 결과물 — 설계도 다섯 줄

오늘 남기는 건 종이 위 설계도 한 장입니다. 다섯 줄을 본인이 직접 채우세요. 정답을 베끼지 말고, 본인 일을 떠올리면서 적습니다.

학습 워크스페이스에서 /part07을 호출해 Clip 1을 선택하면 진도 폴더(실습32-워크스페이스설계/)가 자동으로 준비됩니다. 그 안의 설계도.md에 아래 다섯 줄을 채우면 됩니다.

1. 목적:       (무엇을 하고, 무엇은 절대 안 하는지 한 줄)
2. 아키타입:   (글쓰기 / 리서치 / 지식베이스 / 개발 / 학습 중 하나)
3. 폴더 초안:  (번호 붙여서 — 자료 들어오는 곳 / 결과 나가는 곳 구분)
4. 지시 층:    CLAUDE.md 핵심 규칙 + 배치할 스킬·커맨드
5. 강제 층:    막을 행동 한두 개 (어기면 사고인 것)

채울 때 다섯 줄 각각에 위에서 본 원리를 적용하면 됩니다.

  • 1번 목적: 워크스페이스 하나 = 에이전트 하나. 안 하는 것까지 적기
  • 2번 아키타입: 다섯 중 딱 하나. 두 개 고르면 어중간
  • 3번 폴더: 40(작업 중) → 50(완성)처럼 생애주기가 보이게 번호로
  • 4번 지시 층: 매 세션 필요한 규칙만 CLAUDE.md에 짧게, 긴 절차는 스킬로
  • 5번 강제 층: "어기면 사고"인 규칙 한두 개부터

이 다섯 줄이 다음 클립에서 그대로 입력이 됩니다. 다음 클립의 빌더가 이 설계도를 받아 진짜 워크스페이스로 만들어 줘요. 그러니 오늘 다섯 줄을 비워두지 말고 끝까지 채워두세요.

이 클립을 끝낼 때 완료 또는 /wrap을 입력하면 설계도가 정리됩니다. 다섯 줄이 다 채워졌는지 확인하고, 고른 아키타입과 두 층 계획을 README에 한 줄로 남기고, progress.json에 실습 32를 기록해요. 마지막으로 본인이 이미 만들어둔 하네스 부품이 뭐였는지 한 줄로 돌아봅니다.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
설계도.md (5줄)~/fastcampus-cc/50-my-work/Part07-실전/실습32-워크스페이스설계/목적·아키타입·폴더·지시 층·강제 층
README.md같은 폴더고른 아키타입 + 두 층 계획 한 줄

완료 또는 /wrap을 입력하면 다음이 처리됩니다.

  • 설계도.md의 다섯 줄이 다 채워졌는지 확인
  • progress.json의 practice_completed에 "실습 32" 추가
  • completed_parts에 Part 7 진입 기록
  • 본인이 Part 5·6에서 만든 하네스 부품 회고 한 줄

이론·설계 챕터라 코드나 실행 결과물은 없습니다. 오늘의 진짜 자산은 본인 일에 맞는 설계 판단 그 자체예요.


자주 막히는 포인트

이론·설계 챕터라 손으로 만지는 건 적지만, 설계도를 채우다 보면 막히는 지점이 몇 군데 있습니다.

증상원인해결
목적 한 줄이 안 써짐하고 싶은 일이 여러 개워크스페이스 하나 = 목적 하나. 섞이면 둘로 쪼개기. "안 하는 것"부터 적어보면 목적이 또렷해짐
아키타입 두 개를 고르고 싶음일이 양쪽에 걸침두 개 고르면 둘 다 어중간. "주로" 하는 일 하나로. 나머지는 나중에 별도 워크스페이스
폴더를 몇 개 둬야 할지 모름처음부터 완벽하게 짜려 함자료 들어오는 곳·작업 중·완성본 3개부터. 부족하면 나중에 추가
지시 층에 규칙을 잔뜩 적게 됨CLAUDE.md에 절차까지 다 넣음매 세션 필요한 불변식만 짧게. 긴 절차는 스킬로 빼서 부를 때만 읽히게
강제 층에 막을 걸 너무 많이 적음"있으면 좋겠지"로 선제 설치어기면 사고인 것만. 한두 개부터. 안 쓰는 장치는 작업장만 무겁게 함
지시 층과 강제 층 구분이 헷갈림둘 다 "규칙"이라 비슷해 보임"어기면 아쉬운가, 사고인가"로 판단. 아쉬우면 지시, 사고면 강제
두 층인데 왜 일곱 칸이냐설명용과 점검용 단위가 다름설명은 두 층, 점검은 일곱 칸. 일곱 칸은 다음 클립 점검 점수에서 만남
Part 5·6을 안 했는데 가능한가자산 사슬 끊김 우려설계는 가능. 다만 다음 클립부터 CLAUDE.md·Hook·스킬을 쓰므로 Part 5·6을 먼저 보는 게 매끄러움
정답이 궁금함영상 속 예시를 베끼고 싶음정답 없음. 본인 일이 기준. 영상 속 설계와 달라도 정상

다음 클립

→ 워크스페이스 만들기 — 빌더로 짓고 점검까지

다음 클립에서는 오늘 그린 설계도 다섯 줄을 실물로 만듭니다. 그런데 그냥 워크스페이스 하나가 아니라, **워크스페이스를 점검하고 새로 만들어주는 작업실(빌더)**을 짓습니다. Part 6에서 배운 스킬 만들기를 그대로 써서 하네스 닥터 4종(점검·지시 보강·강제 설치·강제 검증)을 라이브로 빌드합니다.

핵심은 "만들고 끝"이 아니라는 겁니다. 오늘 배운 검증·갭 메우기가 여기서 도구가 돼요. 일부러 규칙을 어겨봐서 진짜 막히는지 눈으로 확인하고, /audit 점수 리포트로 검증한 다음에야 워크스페이스를 믿고 씁니다. 마지막엔 그 빌더가 본인 설계도 다섯 줄을 받아 업무용 워크스페이스를 1분 만에 만들어 줘요.

그러니 오늘의 설계도 다섯 줄을 꼭 채워두세요. 다음 클립의 첫 입력이 바로 그 다섯 줄입니다.

워크스페이스 만들기

빌더로 짓고 점검까지

Part 7 · Clip 2

이 클립에서 만드는 것

이번 클립에서는 워크스페이스를 하나 만드는 게 아니라, 워크스페이스를 점검하고 새로 만들어주는 작업실을 만듭니다. 직전 클립에서 그린 설계도 5줄을 실물로 옮기는데, 그 결과물이 "빌더"예요. 빌더는 하네스를 만드는 하네스, 그래서 "메타하네스"라고 부릅니다.

빌더가 보통 워크스페이스와 갈리는 지점은 만들고 끝이 아니라는 데 있습니다. 다 만든 뒤에 일부러 규칙을 어겨봐서 진짜 막히는지 눈으로 확인하고, /audit으로 점수를 매겨 검증한 다음에야 믿고 씁니다. 직전 클립에서 "하네스는 만들고 끝이 아니라 검증·갭 메우기까지"라고 했던 그 검증이, 이번 클립에서는 손에 잡히는 도구가 됩니다.

이 클립의 한 줄 메시지는 이렇습니다.

어기는 건 막히고, 시키는 건 되고, 필요한 건 만들어낸다
  • 어기는 건 막히고 — 삭제 금지 같은 강제 규칙을 일부러 어겨보면 차단됩니다 (강제 층)
  • 시키는 건 되고 — /audit이라고 부르면 점검 닥터가 동작합니다 (지시 층)
  • 필요한 건 만들어낸다 — /new-workspace에 설계도 5줄을 주면 새 워크스페이스가 나옵니다 (메타)

이걸 떠받치는 게 두 층 모델입니다. 이번 클립에서 만드는 부품은 전부 아래 표 안에 들어가요.

층정의이번 클립에서 만드는 것
지시 층"이렇게 해줘" 부탁 — 모델이 읽고 따라준다짧은 CLAUDE.md, 닥터 4종 스킬, /audit·/new-workspace 커맨드
강제 층"이건 막는다" 장치 — 모델이 무시해도 기계가 강제한다삭제 차단 훅, CLAUDE.md 백업 훅, 폴더 밖 수정 승인

핵심은 지시는 부탁, 강제는 장치라는 것. 부탁은 잊히거나 무시될 수 있지만, 장치는 그냥 작동합니다. 그래서 진짜로 막아야 하는 건 문서에 적는 게 아니라 훅으로 거는 거예요.

이번 클립에서 할 일은 다섯 STEP입니다. 빈 폴더 + 짧은 CLAUDE.md → 닥터 4종 라이브 빌드 + /audit → 안전장치 설치 + 일부러 어겨보기 → /audit 점수 2건 → /new-workspace로 본인 업무용 워크스페이스 생성.


핵심 개념

메타하네스 — 워크스페이스를 만드는 워크스페이스

하네스는 세 종류로 나눕니다. 기본 하네스(CLAUDE.md·커맨드·규칙처럼 정적인 통제), 런타임 하네스(훅·권한처럼 실행 중에 동작하는 통제), 그리고 메타하네스 — 하네스를 생성하고 검증하고 개선하는 상위 하네스예요. 이번에 짓는 빌더가 바로 메타하네스입니다.

일반 워크스페이스   →  CLAUDE.md + 스킬 + 훅으로 "내 일"을 한다
빌더(메타하네스)    →  워크스페이스를 점검(/audit)하고 새로 만든다(/new-workspace)
                       즉, 빌더가 다루는 "일감"이 다른 워크스페이스다

빌더 자신도 결국 워크스페이스라서, 똑같이 짧은 CLAUDE.md와 폴더 구조, 안전장치를 갖춥니다. 딱 하나 다른 점은 안에 든 도구가 "다른 워크스페이스를 손보는 도구"라는 거예요.

짧은 CLAUDE.md — 긴 절차는 전부 스킬로

빌더의 CLAUDE.md는 일부러 짧게 씁니다. 수첩이라고 생각하면 됩니다. 들어가는 건 네 가지 정도예요.

~/workspace-builder/CLAUDE.md  (수첩 — 짧게)
─────────────────────────────────────────
1. 정체성     이 작업실은 무엇이고 무엇을 안 하는가 (One Workspace, One Agent)
2. 설계 기준  목적 · 지시 층 · 강제 층 · 검증 — 직전 클립 설계 기준 4가지
3. 금지 한두 개  (예: 폴더 밖 수정 금지, 90-archive 삭제 금지)
4. 어디서 찾나   긴 절차는 .claude/skills/ 안 닥터들에게

길고 자세한 절차 — "점검할 때 7축을 어떻게 세는지", "훅을 어떻게 설치하는지" — 는 CLAUDE.md에 넣지 않습니다. 그건 스킬(닥터)로 뺍니다. CLAUDE.md는 매 세션 통째로 로드되니까, 매번 필요한 불변식만 남기고 가끔 필요한 절차는 스킬로 떼어 두는 게 원칙이에요. 직전 클립에서 말한 "수첩은 얇게, 절차는 스킬로"가 바로 이겁니다.

자산 콜백 — 이 짧은 CLAUDE.md는 Part 5 실습 18에서 배운 CLAUDE.md 작성법 그대로예요. 학습 워크스페이스 fastcampus-cc가 이미 이 구조(PARA식 폴더 + 짧은 매뉴얼)를 따르고 있으니, 그걸 떠올리면 빌더 폴더 구조도 금방 잡힙니다.

하네스 닥터 4종 — 두 층이 그대로 도구가 된다

빌더 안에는 워크스페이스를 손보는 전문가 스킬 네 개를 둡니다. 이걸 "닥터"라고 부를게요. 네 닥터는 직전 클립의 두 층 모델과 1:1로 딱 맞아떨어집니다.

닥터하는 일어느 층
harness-audit워크스페이스를 설계 기준으로 점검 → 7축 점수 + 부족한 곳 TOP3검토
instruction-tunerCLAUDE.md·규칙을 또렷하게 다듬고 "이건 스킬로 빼라" 추천지시 층 보강
guard-installer훅(차단·백업)과 권한을 진단하고 설치강제 층 설치
breach-test금지 행동을 자동으로 시도해 방어가 작동하는지 검증강제 층 검증

검토 하나, 지시 층 보강 하나, 강제 층 설치 하나, 강제 층 검증 하나. 직전 클립의 두 층이 네 개의 도구로 펼쳐진 것이에요. 그리고 짚어둘 게 하나 있는데, 이 닥터들은 미리 만들어진 완성품을 받아 쓰는 게 아닙니다. 이번 클립에서 본인이 그 자리에서 만듭니다. Part 6에서 배운 스킬 만들기를 실전에 써먹는 자리예요. 닥터도 결국 SKILL.md + references/ 스킬이라, 채점·진단의 기준이 될 표준 문서만 있으면 그 자리에서 만들어집니다.

각 닥터가 무엇을 기준으로 만들어지는지는 빌더 안에 내장된 표준 12편(하네스 표준집)에서 가져옵니다. 닥터마다 필요한 표준만 추려서 각 닥터의 references/에 넣어 self-contained로 만드는 게 핵심이에요.

닥터기준이 되는 표준
harness-audit09(검증 원리, P0/P1/P2 채점) + 01(7축 모델)
instruction-tuner02(지침 표면) + 07(컨텍스트 경제) + 03(라우팅 description)
guard-installer05(훅과 Recovery-First) + 06(보안·PII)
breach-test05(훅) + 09(양성/음성 픽스처)
/new-workspace04(구조·네이밍) + 08(구축 워크플로우) + 01(쌓는 순서)

7축 점검 — 점수표가 "두 층"으로 묶인다

harness-audit이 내는 리포트는 LLM의 감상이 아니라 grep과 카운트로 직접 센 결정론적 점검표입니다. 7개 축으로 점검하고, 그 7축을 "크게 묶으면 두 층"으로 표기해요.

[지시 층 3축]
  1. CLAUDE.md 존재 · 정체성 섹션
  2. 스킬/커맨드 description (트리거 발화가 있나)
  3. 서브에이전트 카드

[강제 층 1축]
  4. 훅 · 권한

[뼈대 2축]
  5. 목적 (One Workspace, One Agent)
  6. 폴더 넘버링 (00-/40-/50-/90-)

[운영 1축]
  7. 검증 · 변경 이력

채점은 모든 항목을 똑같이 두지 않습니다. P0/P1/P2 가중치를 씁니다. P0는 치명 — 하나라도 실패하면 낙제(F)예요. 정체성 섹션이 없거나 .gitignore에 .env 패턴이 없으면 그것만으로 F입니다. P1은 중요(90% 이상 통과 요구), P2는 권장(점수엔 반영하되 낙제 사유는 아님)이고요. 등급 규칙은 가령 "F = P0 1건이라도 실패 / A = P0 100% + P1 90% 이상" 식으로 잡습니다. 숫자가 핵심이 아니라 "치명과 권장을 구분한다"는 사고방식이 핵심이에요.

여기서 한 가지 마음가짐을 미리 잡아두세요. 낮은 점수는 실패가 아니라 다음 보강 지점입니다. 하네스는 처음부터 완성형으로 쌓는 게 아니라, 부족이 보일 때마다 한 칸씩 올리는 거예요. instruction-tuner(지시 층 보강)와 guard-installer(강제 층 설치)가 옆에 같이 붙어 있는 이유도 그래서고요 — 점수가 낮게 나온 축을 그 닥터들이 채웁니다.

강제 층의 두 얼굴 — 막는 것과 되돌리는 것

guard-installer가 설치하는 안전장치는 두 종류입니다. 흔히 "막는 것"만 생각하지만, 빠지면 안 되는 게 "되돌리는 것"이에요.

강제 층 = 막기 + 되돌리기

[막기]  PreToolUse 훅으로 비가역 행위를 사전 차단
        예: 90-archive 안 파일 삭제 시도 → exit 2로 차단
        차단 4요소: 차단 + 이유 + 다음 행동 안내 + 의식적 우회 마커

[되돌리기]  변경 직후·세션 시작 시 복구 지점 확보
        예: CLAUDE.md 자동 백업 훅 — 수정 전 사본을 남김
        "사고가 나도 돌아올 길"을 사고 전에 만들어 둔다 (Recovery-First)

막는 장치만 있으면 차단을 못 뚫었을 때까지만 안전하고, 한 번 새면 그걸로 끝입니다. 되돌리는 장치가 같이 있어야 사고가 나도 복구 지점으로 돌아올 수 있어요. 이게 표준 05편이 말하는 Recovery-First 원칙입니다.

자산 콜백 — Part 5 실습 21에서 만든 trash-guard Hook이 바로 이 강제 층의 원형이에요. 그때 손으로 만든 "위험 명령 차단" 훅을, 이번엔 guard-installer 닥터가 진단하고 설치해줍니다.


진행 흐름

진도 폴더와 빌더 본체 폴더부터 준비합니다. 진도 기록은 50-my-work 안에 남기고, 빌더 본체는 별도 폴더(~/workspace-builder)에 짓습니다. LLM Wiki·유튜브 대시보드 때와 똑같이, 본체가 큰 프로젝트는 별도 폴더에 두고 진도 README만 학습 워크스페이스에 남기는 규칙이에요.

mkdir -p ~/fastcampus-cc/50-my-work/Part07-실전/실습33-워크스페이스구축/
# 빌더 본체는 별도 폴더에 짓습니다 (예: ~/workspace-builder)

학습 워크스페이스에서 /part07을 호출해 Clip 2를 선택하면 위 폴더가 자동으로 준비됩니다.

/part07
✓ ~/fastcampus-cc/50-my-work/Part07-실전/실습33-워크스페이스구축/ 준비 완료
ℹ 빌더 본체는 별도 폴더에 짓습니다 (예: ~/workspace-builder)

이제 빌더 본체 폴더에서 클로드코드를 켜고 STEP 1로 갑니다.

1. STEP 1 — 지시 층 ①: 빈 폴더 + 짧은 CLAUDE.md

명령형 대신 의문문으로 시작합니다. 빌더의 규칙이 직전 클립 설계 기준(목적·지시 층·강제 층·검증)이 되도록 맥락을 함께 줍니다.

여기를 '워크스페이스를 점검하고 새로 만들어주는 작업실'로 만들려는데,
폴더 구조랑 CLAUDE.md를 어떻게 잡으면 좋을까?
지난번에 배운 설계 기준 — 목적·지시 층·강제 층·검증 —
이 작업실의 규칙이 됐으면 해.

클로드코드가 구조를 제안하면, 만들기 전에 트리부터 보여달라고 한 번 끊어 요청합니다. 곧바로 생성하지 않고 검토부터 하는 습관이에요.

좋아, 그 구조로 가자. 만들기 전에 최종 폴더 트리랑 CLAUDE.md부터 보여줘.

제안되는 구조는 보통 이런 모습입니다. 폴더 넘버링은 표준 04편의 10단위 규칙을 따라요.

~/workspace-builder/
├── CLAUDE.md              ← 짧은 수첩 (정체성 + 설계 기준 4 + 금지 한두 개)
├── .claude/
│   ├── skills/            ← 닥터 4종이 들어갈 자리 (STEP 2에서)
│   └── commands/          ← /audit, /new-workspace (STEP 2·5에서)
├── 00-system/            시스템·운영 문서
├── 40-drafts/            점검 중인 워크스페이스 작업본
├── 50-output/            완성된 점검 리포트
├── 90-archive/           은퇴 (삭제 대신 여기로)
└── _meta/                변경이력·복구 계약 등 자기 기록

트리와 CLAUDE.md 초안이 마음에 들면 그때 생성을 허락합니다. CLAUDE.md는 짧게 유지하는 게 핵심 — 긴 절차는 다음 STEP에서 닥터로 뺄 거예요.

2. STEP 2 — 지시 층 ②: 닥터 4종 라이브 빌드 + /audit

여기가 이번 클립의 절반입니다. 닥터 네 개를 그 자리에서 만듭니다. 네 개를 다 풀로 만들면 너무 길어지니, harness-audit 하나만 정석대로 자세히 만들고, 나머지 셋은 "같은 구조로" 묶어서 생성합니다.

먼저 harness-audit를 Part 6 방식 그대로 만듭니다. 질문 → SKILL.md 구조 확인 → 생성 순서예요.

Part 06에서 배운 대로 harness-audit 스킬부터 만들어줘 —
references/harness-standards의 09(검증)랑 01(7축) 기준,
워크스페이스를 점검해 7축 점수랑 부족한 곳 TOP3를 주는 스킬로.
만들기 전에 SKILL.md 구조부터 보여줘.

만들기 전에 구조부터 보여달라고 한 이유는 Part 6 때와 같습니다 — 클로드코드가 곧장 파일을 쓰지 않고 절차를 먼저 정리하게 하려고요. SKILL.md 절차는 대개 이렇게 잡힙니다.

harness-audit SKILL.md 절차
① 대상 워크스페이스 스캔 (grep·카운트 — 결정론)
② 7축별 점검 (지시 층 3 / 강제 층 1 / 뼈대 2 / 운영 1)
③ P0/P1/P2 가중치로 등급 (F ~ A)
④ 부족한 곳 TOP3 + 보강 닥터 추천

harness-audit가 만들어지면, 나머지 셋은 "같은 구조로, 각자 기준 표준 보고" 한 번에 묶어 만듭니다. 기준 표준이 빌더 안에 이미 내장돼 있어서 한 줄만 입력해도 빠르게 나와요.

나머지 셋도 같은 구조로 만들어줘 —
instruction-tuner(02·07·03 기준), guard-installer(05·06 기준),
breach-test(05·09 기준).
각자 references에 해당 표준만 넣어서 self-contained로.

마지막으로 점검 입구가 될 /audit 커맨드를 만듭니다. 커맨드는 닥터를 부르는 얇은 wrapper예요.

harness-audit를 부르는 /audit 커맨드를 점검 입구로 만들어줘.

만들어진 닥터 SKILL.md를 한 번 열어보세요. Part 6에서 직접 만든 스킬과 똑같은 구조(description + 본문 절차 + references)라는 걸 눈으로 확인하는 게 이 STEP의 진짜 수확입니다. /new-workspace 커맨드는 여기서 만들지 않습니다 — 점검할 닥터와 지킬 안전장치가 다 갖춰진 STEP 5에서 만들어요.

3. STEP 3 — 강제 층: 안전장치 설치 + 일부러 어겨보기 ★

이번 클립의 피크입니다. guard-installer로 안전장치를 걸고, 그게 정말 막는지 손으로 직접 확인합니다.

guard-installer로 이 작업실에 안전장치를 걸어줘 —
삭제 차단 훅, CLAUDE.md 자동 백업 훅, 폴더 밖 수정은 승인받기.

guard-installer가 비가역 자원(삭제·외부 전송)을 식별하고, 막는 장치(차단 훅·권한)와 되돌리는 장치(백업 훅)를 한 세트로 settings.json에 설치합니다.

✓ PreToolUse 훅 설치 — 삭제 명령 차단 (exit 2)
✓ CLAUDE.md 백업 훅 설치 — 수정 전 사본 보관
✓ 폴더 밖 수정 — 승인 필요
설치 리포트: 막기 2종 + 되돌리기 1종

이제 일부러 어겨봅니다. 방금 설치한 차단이 정말 작동하는지 눈으로 확인하는 거예요.

테스트야. 90-archive에 있는 아무 파일이나 하나 삭제해봐.

훅이 작동하면 삭제가 차단되고, 이유와 다음 행동이 함께 나옵니다.

⛔ 차단됨 (PreToolUse, exit 2)
이유: 90-archive는 은퇴 폴더 — 삭제 대신 보존이 원칙입니다.
다음 행동: 정말 지워야 하면 백업 후 의식적 우회 마커를 붙여 재시도하세요.

차단 화면을 본 다음에 한 가지만 짚어두세요. 방금 본인이 손으로 한 "어겨보기"를 자동화한 게 breach-test 닥터입니다. breach-test는 금지 행동 목록(삭제·폴더 밖 수정 등)을 자동으로 하나씩 시도해서, 차단되면 통과·안 되면 실패로 표를 만들어줘요. 손으로 한 번 해봤으니 자동화가 왜 필요한지 바로 와닿을 겁니다.

breach-test로 금지 행동 전부 어겨봐줘.
[어겨보기 결과]
| 금지 행동              | 차단 여부 |
|----------------------|----------|
| 90-archive 파일 삭제   | ✓ 차단    |
| 폴더 밖 파일 수정       | ✓ 차단    |
| CLAUDE.md 백업 없이 수정 | ✓ 사본 보관됨 |
→ 설치한 장치 전부 작동 확인.

4. STEP 4 — 검증: /audit 점수 리포트 2건

이제 /audit으로 점검표를 뽑습니다. 점검 대상은 두 곳, 빌더 자신과 학습 워크스페이스 fastcampus-cc예요.

/audit — 이 워크스페이스를 설계 기준으로 점검해줘.
[harness-audit 리포트 — workspace-builder]
크게 묶으면 두 층:

지시 층 (3축)
  CLAUDE.md·정체성      ✓ P0 통과
  스킬/커맨드 description ✓ P1 통과 (닥터 4종 트리거 발화 있음)
  서브에이전트          - 해당 없음
강제 층 (1축)
  훅·권한              ✓ P0 통과 (차단+백업+승인)
뼈대 (2축)
  목적                 ✓ P0 통과
  폴더 넘버링           ✓ P1 통과
운영 (1축)
  검증·변경 이력        △ P1 — _meta 변경이력 비어 있음

등급: B (P0 전부 통과 · P1 일부 미충족 — 변경 이력 축이 비어 A에 못 미침)
부족한 곳 TOP3:
  1) 변경 이력 구조 채우기 → instruction-tuner
  2) (이하 보강 제안)

이어서 학습 워크스페이스도 점검합니다.

/audit — 학습 워크스페이스(fastcampus-cc)를 점검해줘.

fastcampus-cc는 빌더와 목적이 다르니 점수도 다르게 나옵니다. 빌더보다 낮게 나오는 축이 있어도 괜찮아요. 다시 말하지만 낮은 점수는 실패가 아니라 다음 보강 지점입니다. 여기서 얻는 가장 큰 교훈은 "말이 아니라 점검표가 증거"라는 거예요. "잘 만든 것 같다"는 감 대신, 같은 워크스페이스를 두 번 돌리면 늘 같은 점수가 나오는 결정론적 점검표가 근거가 됩니다.

5. STEP 5 — 피날레: /new-workspace로 내 업무용 워크스페이스 생성

이제 점검할 닥터도, 지킬 안전장치도 다 갖췄으니 /new-workspace 커맨드를 만들 차례입니다. 이 커맨드는 04·08·01 표준을 기준으로 설계도 5줄을 받아 새 워크스페이스를 만들어 줍니다.

/new-workspace 커맨드를 만들어줘 — 04·08·01 표준 기준으로,
설계도 5줄(목적·아키타입·폴더·규칙·강제 층)을 받아 새 워크스페이스를 생성하게.

만들었으면 직전 클립에서 그린 본인 설계도 5줄을 그대로 넣습니다.

/new-workspace — 설계도대로 만들어줘:
목적은 ___, 아키타입은 ___, 폴더는 ___, 규칙은 ___, 강제 층은 ___.

빌더가 설계도대로 폴더 구조, 짧은 CLAUDE.md, 안전장치를 갖춘 워크스페이스를 1분 만에 만들어냅니다. 오늘의 진짜 결론이 여기서 나와요. 오늘 만든 건 워크스페이스 하나가 아니라, 워크스페이스를 만드는 능력입니다. 업무가 하나 늘 때마다 빌더에게 설계도 다섯 줄만 주면 새 워크스페이스가 나옵니다.

자산 사슬 — Part 5 실습 18(CLAUDE.md 작성법)이 지시 층, Part 6 스킬 구조가 닥터 4종, Part 5 실습 21(trash-guard Hook)이 강제 층의 원형이에요. 이번 클립은 그 부품들을 "워크스페이스를 만들어낸다"는 목적 하나로 조립한 자리입니다.


결과물

이번 클립이 끝나면 세 가지가 남습니다.

결과물위치설명
워크스페이스 빌더 본체~/workspace-builder/짧은 CLAUDE.md + 닥터 4종 + 안전장치 훅 + /audit·/new-workspace
/audit 리포트 2건~/workspace-builder/50-output/빌더 자신 + 학습 워크스페이스(fastcampus-cc) 점검표
본인 업무용 워크스페이스별도 폴더 (/new-workspace 생성)빌더가 설계도 5줄로 만들어 준 본인 실제 작업장
README.md실습33-워크스페이스구축/진도 메타 — 목적 + 건 장치 + "어겨봤더니 막혔다" 한 줄

학습 워크스페이스에서 완료 또는 /wrap을 입력하면 다음이 처리됩니다.

  • progress.json의 practice_completed에 "실습 33" 추가
  • projects_completed에 "workspace" 추가
  • README.md 자동 생성 — 워크스페이스 목적 + 건 안전장치 + "어겨봤더니 막혔다" 한 줄
  • 회고 한 줄 — "닥터 4종과 점검 기준도 예시일 뿐. 내 일엔 어떤 검사를 추가/수정할까?"

빌더 본체는 별도 폴더(~/workspace-builder)에 있고, 진도 기록(README·점검 리포트 사본)만 50-my-work 안에 남습니다. 본체가 큰 프로젝트는 별도 폴더, 진도는 학습 워크스페이스 — Part 7 내내 이 규칙은 그대로예요.


자주 막히는 포인트

증상원인해결
닥터 4종을 다 라이브로 만들면 너무 길어 보임네 개를 다 풀로 만들려 함harness-audit 1종만 정석으로, 나머지 셋은 "같은 구조로" 묶음 생성 — 기준 표준이 빌더 안에 내장돼 있어 한 줄로 빠르게
"닥터를 직접 만든다고요?"완성품을 받는 줄 앎Part 6에서 배운 그대로예요. 닥터도 SKILL.md + references 스킬이라, 표준 문서만 있으면 그 자리에서 만들어집니다 — 그게 오늘의 핵심
일부러 어겨봤는데 안 막힘settings.json 위치·인식 문제settings.json 위치 확인 → 클로드코드 재시작. 막힐 때까지는 방어장치가 없는 상태입니다
/audit 점수가 낮게 나옴갓 만든 빌더라 비어 있는 축 있음낮은 게 실패가 아니라 다음 보강 지점입니다. instruction-tuner·guard-installer가 그래서 옆에 있어요
/audit 점검 결과가 매번 다름LLM 감상으로 채점채점은 grep·카운트 기반 결정론이어야 정상. 같은 대상은 두 번 돌려도 같은 점수가 나와야 합니다
harness-audit가 만들기 전에 곧장 SKILL.md를 씀명령형으로 인식됨"만들기 전에 SKILL.md 구조부터 보여줘"로 끊어 요청 — Part 6의 메타 흐름 그대로
/new-workspace를 STEP 2에서 만들려 함순서 혼동/new-workspace는 STEP 5에서. 점검할 닥터·지킬 안전장치가 다 갖춰진 뒤에 답니다
/new-workspace 결과가 이상함설계도 5줄 중 일부 빠뜨림목적·아키타입·폴더·규칙·강제 층 다섯 줄을 빼먹지 말고 그대로 넣으세요
백업 훅이 안 도는 것 같음막는 장치만 보고 되돌리는 장치를 안 챙김강제 층은 막기 + 되돌리기 한 세트. guard-installer 설치 리포트에 백업 훅이 포함됐는지 확인
"빌더가 제 업무에 무슨 소용?"빌더 자체를 결과물로 봄빌더가 만들어내는 게 전부 본인 업무용입니다. 업무가 늘 때마다 1분에 새 워크스페이스를 만들어요

다음 클립

→ LLM Wiki — 대화로 자라는 지식베이스 설계

다음 클립부터는 두 번째 실전 프로젝트, LLM Wiki를 짓습니다. 그런데 빈 자리가 아니라 방금 빌더로 만들어낸 본인 워크스페이스 안에 짓습니다. 빌더가 만들어준 그 CLAUDE.md가 위키의 규칙서가 되고, 이번 클립에서 익힌 두 층 모델이 그대로 적용돼요. 환경(워크스페이스)을 만들었으니, 다음은 그 위에 쌓이는 지식 차례입니다.

LLM Wiki 설계

대화로 자라는 지식베이스

Part 7 · Clip 3이론

이 클립에서 배우는 것

Part 7의 두 번째 프로젝트가 시작됩니다. 첫 번째는 워크스페이스였죠. clip-02에서 빌더로 워크스페이스 아키타입을 골라 폴더 구조를 만들었습니다. 이번엔 그 위에 지식을 쌓아요. 환경 → 지식 → 서비스로 규모가 커지는 흐름인데, 오늘이 그 가운데 칸인 "지식"의 출발점입니다.

만드는 건 LLM Wiki입니다. AI가 본인 자료를 읽어서 마크다운 위키를 직접 짓고, 자료가 늘 때마다 계속 고쳐주는 지식베이스예요. 이름이 좀 낯설죠? 본인이 만든 개념은 아닙니다. 안드레이 카파시(Andrej Karpathy)가 정리해 공유한 패턴이고, 우리는 그걸 비개발자가 따라치며 끝까지 동작시키는 형태로 가져옵니다.

이 클립은 이론·설계 챕터예요. 손으로 자료를 넣고 정리하는 건 다음 클립부터고요. 오늘은 두 가지만 확실히 챙겨 갑니다.

  • LLM Wiki가 흔한 "검색"과 무엇이 다른지 — 한 문장으로 말하면, 검색은 매번 찾고 위키는 한 번 정리한 게 쌓입니다.
  • 본인 주제로 위키 설계도 4칸을 채우는 일 — 무슨 자료를 / raw에 무엇을 / wiki 페이지 주제를 / 정리 규칙을.

할 일은 두 단계예요. 먼저 검색과 LLM Wiki의 차이를 잡고, 그다음 본인 주제로 설계도 4칸을 채웁니다. 빈 위키 뼈대를 실제로 만드는 건 다음 클립이에요. 오늘은 설계까지만.

BeforeAfter
AI에게 매번 내 상황을 처음부터 설명한다한 번 정리한 지식이 쌓여서 다음 대화의 바탕이 된다
"RAG·벡터DB" 같은 말이 부담스럽다우리 규모엔 마크다운 폴더면 충분하다는 기준이 선다
위키를 어떻게 시작할지 막막하다본인 주제로 설계도 4칸이 채워져 있다

핵심 개념

왜 위키인가 — 정리·연결을 AI가 떠맡는다

LLM Wiki가 왜 필요한지부터 짚고 갑시다. AI와 대화할 때 가장 지치는 순간이 언제인가요? 매번 본인 상황을 처음부터 다시 설명할 때입니다. 어제 한참 설명해서 이해시킨 내용도 새 대화를 열면 AI는 기억하지 못해요. 그래서 같은 배경을 다시 깔고, 같은 자료를 또 붙여넣습니다. 이게 쌓이면 은근히 큰 피로예요.

그런데 정리가 귀찮은 진짜 이유는 따로 있어요. 자료를 읽는 것보다 정리하고 연결을 유지보수하는 것이 훨씬 손이 갑니다. 새 자료가 들어올 때마다 기존 정리와 어디가 겹치는지, 어디를 고쳐야 하는지, 무엇과 이어야 하는지를 사람이 일일이 챙겨야 하니까요. LLM Wiki가 노린 지점이 바로 여기예요. 그 귀찮은 정리·연결 유지보수를 AI에게 맡기는 겁니다. 본인은 원본만 던져 넣고, 정리하고 연결하고 갱신하는 건 클로드코드가 떠맡아요.

그래서 LLM Wiki는 "검색을 잘하는 도구"가 아니라 **"쓸수록 똑똑해지는 지식베이스"**입니다. 한 번 이해시킨 내용이 파일로 남아 다음 대화의 바탕이 되고, 자료가 늘수록 정리가 두꺼워져요. 검색과 가장 크게 갈리는 지점이 바로 이 "축적된다"는 성질입니다. 다시 말하지만 본인이 만든 개념이 아니라 카파시가 정리해 공유한 패턴이고 — 우리는 그걸 비개발자가 따라치며 끝까지 동작시키는 형태로 가져옵니다.

검색(RAG)과 LLM Wiki — 무엇이 다른가

먼저 풀어야 할 오해가 하나 있어요. "AI한테 내 자료 물어보는 거면 그냥 검색 아니야?" 싶은 거죠. 비슷해 보여도 처리 시점이 완전히 다릅니다.

검색 기반 방식(흔히 RAG라고 부릅니다)은 질문할 때마다 자료 더미에서 관련 조각을 새로 찾아옵니다. 질문이 끝나면 그 조각은 흩어지고, 다음 질문 때 또 처음부터 긁어모아요. 찾는 일은 잘하지만 쌓이는 게 없습니다. 어제 한 번 잘 정리해 답한 내용도 오늘 다시 물으면 처음부터입니다.

LLM Wiki는 반대예요. 자료를 넣을 때 한 번 AI가 읽어서 정리·연결을 해두고, 그 결과를 파일로 남깁니다. 다음에 같은 주제를 물으면 이미 정리된 페이지에서 답해요. 쓸수록 페이지가 늘고 연결이 촘촘해지니까, 한 번 이해시킨 내용이 다음 대화의 바탕이 됩니다.

검색 기반 (RAG)LLM Wiki
처리 시점질문할 때마다 조각을 새로 찾음자료 넣을 때 한 번 정리·연결
축적안 쌓임 (찾을 뿐, 이해·연결이 누적 안 됨)쌓임 (정리·답이 누적)
도구보통 검색·벡터DB로 거침기본은 마크다운 폴더
비유매번 도서관 서가를 처음부터 뒤짐한 번 정리한 서가가 그대로 남음

오해하지 마세요. RAG가 나쁜 게 아닙니다. 규모로 선을 긋는 것이에요. 수십에서 수백, 천 개 정도의 자료는 마크다운 폴더로 충분하고, 그보다 훨씬 커지면 그때 검색을 선택적으로 더하면 됩니다(그 얘기는 clip-05에서 다룹니다). 지금 단계에서 벡터DB를 깊이 공부할 필요는 없어요. 우리 규모엔 과하니까요.

하나 더 짚을게요. 위키를 만든다고 옵시디언(Obsidian) 같은 별도 앱을 깔 필요는 없습니다. 위키는 그냥 마크다운 파일 폴더고, 클로드코드가 직접 그 폴더를 읽고 써요. 연결을 그래프로 눈으로 보고 싶으면 나중에 "그래프 그려줘"라고 부탁하면 됩니다. 다른 데로 옮겨 갈 일이 없어요.

3계층 — 위키는 세 칸짜리 폴더다

LLM Wiki의 골격은 단순합니다. 칸이 셋이에요. 이 세 칸이 위키의 전부라고 봐도 됩니다.

llm-wiki/
├── raw/         ← 원본 자료. AI는 읽기만, 안 고침   (박물관 유리장)
├── wiki/        ← AI가 만든 정리 페이지            (정리된 서가)
└── CLAUDE.md    ← 정리 규칙 = 위키의 두뇌 (schema)  (사서 매뉴얼)
칸역할비유
raw/본인이 넣은 원본 자료. AI는 보고 베끼기만 하고 절대 고치지 않습니다박물관 유리장 — 보고 베끼되 훼손 금지
wiki/AI가 원본을 읽고 만들어낸 정리 페이지 (인물·작품·개념 단위)정리된 서가
CLAUDE.md"이 위키는 이렇게 정리해"라고 적어둔 규칙서사서 매뉴얼

여기서 꼭 지켜야 할 약속이 하나 있습니다. raw/의 원본은 AI가 절대 고치지 않습니다. 원본은 박물관 유리장 안에 들어 있다고 보면 돼요. AI는 보고 베껴서 정리 페이지를 만들 뿐, 원본 자체엔 손대지 않습니다. 이 규칙이 위키 전체를 믿을 수 있게 해줘요. 나중에 "이 정리, 어디서 나온 거지?" 싶을 때 언제든 원본으로 돌아가 확인할 수 있으니까요.

그리고 한가운데서 실제로 일하는 건 클로드코드입니다. CLAUDE.md(규칙)를 읽고, raw/를 읽어서 wiki/를 쓰고, 질문에 답해요. 따로 엔진이 있는 게 아니라 클로드코드가 곧 그 엔진입니다.

CLAUDE.md라는 이름이 눈에 익죠? clip-02에서 배운 그 CLAUDE.md 방식 그대로예요. 워크스페이스 루트에 CLAUDE.md를 두면 그 워크스페이스의 작업 매뉴얼이 됐죠. 똑같이 위키 폴더 안 llm-wiki/CLAUDE.md를 두면 그게 위키의 정리 규칙=두뇌가 됩니다. 새 개념이 아니라 이미 쓰던 방식을 위키에 가져다 쓴 거예요.

세 칸이 골격이지만, 위키가 자라면 자연스럽게 따라붙는 보조 장치가 둘 더 있습니다. 미리 알아두면 설계도를 그릴 때 마음이 편해요.

  • 작업 로그(log.md) — AI가 위키에 무슨 일을 했는지 날짜순으로 적어두는 일기입니다. "언제 어떤 자료가 들어왔고, 어떤 페이지가 새로 생겼는지"가 한 줄씩 쌓여요. 위키가 어떻게 자라왔는지 되짚는 타임라인이 됩니다. 처음부터 꼭 있어야 하는 건 아니고, 자료가 늘면 그때 두면 좋은 정도예요.
  • 버전 관리(Git) — AI가 정리 페이지를 잘못 고쳐도 되돌릴 수 있는 안전망입니다. wiki/는 AI가 직접 쓰는 곳이라 가끔 어긋날 수 있는데, Git이 깔려 있으면 언제든 이전 상태로 돌아가는 타임머신이 돼요. 이것도 오늘 당장 손댈 건 아닙니다 — 위키가 본인 자산으로 쌓이기 시작하면 그때 챙기세요.

이 둘은 오늘 설계도에 적을 4칸엔 들어가지 않습니다. 다만 위키가 "쓸수록 자라는 자산"이라는 성격을 떠받치는 장치라는 것만 알아두세요.

Part 6 콜백 — 스킬이 이미 미니 위키였다

사실 이 골격, 본인이 이미 한 번 만져봤어요. Part 6에서 스킬을 만들 때입니다.

스킬은 규칙서(SKILL.md)에 필요한 자료(references/)를 붙여서, 클로드코드가 필요할 때만 골라 읽게 한 구조였습니다. 위키도 똑같아요. 클로드코드가 목차(index)를 먼저 보고 필요한 페이지만 펼쳐 읽습니다. 전부 한꺼번에 읽지 않아요.

스킬 (Part 6)              LLM Wiki (Part 7)
─────────────             ─────────────────
SKILL.md (규칙서)    →     CLAUDE.md (정리 규칙)
references/ (자료)   →     raw/ + wiki/ (원본·정리)
필요할 때만 골라 읽기 →     index 보고 필요한 페이지만 읽기

위키는 거기에 세 가지를 더한 것뿐입니다.

  • 원본에서 스스로 정리 — references/는 본인이 미리 다듬어 넣었지만, 위키는 raw/의 거친 원본에서 AI가 직접 정리 페이지를 만듭니다.
  • 페이지끼리 연결 — [[링크]]로 인물 페이지와 작품 페이지를 엮습니다.
  • 계속 자라는 루프 — 자료가 늘 때마다 정리가 갱신되고, 심지어 질문해서 나온 답도 다시 위키에 쌓입니다.

그러니 LLM Wiki도 갑자기 튀어나온 새 개념이 아니에요. Part 5·6에서 만들어온 부품을 "지식을 쌓는다"는 목적 하나로 다시 조립한 겁니다. Part 7 내내 이어지는 이야기의 연장이죠.

init(1회) → 4동사 루프 — 오늘 어디까지

위키의 수명을 보면 단계가 두 종류로 나뉩니다. 처음 한 번 하는 **만들기(init)**와, 그 위에서 계속 도는 4동사 루프예요.

단계하는 일어느 클립
만들기(init) · 1회빈 위키 뼈대(폴더 + 규칙서) 세우기clip-04에서 실행
┄ 4동사 루프 (반복) ┄
투입(ingest)raw/에 자료 넣기 (아직 정리 X)clip-04
정리(compile)AI가 raw/ → wiki/ 페이지로 정리·연결clip-04
질문(query)위키에 묻고, 좋은 답은 다시 위키에 저장clip-04
점검(lint)끊긴 링크·중복·모순 찾아 고치기clip-05

만들기(init)는 처음 한 번만 하는 뼈대 세우기예요. 루프가 아닙니다. 그 빈 뼈대 위에서 투입 → 정리 → 질문 → 점검 네 동사가 돌아요. 오늘 clip-03에서는 그 네 동사를 돌리기 전에 설계도부터 그립니다. 무엇을 모을지, raw와 wiki를 어떻게 나눌지, 정리 규칙은 뭘로 잡을지를 먼저 정해두는 거죠.

특히 질문(query) 단계를 기억해두세요. 위키에 물어서 나온 좋은 답이 다시 위키에 쌓이는 장면, 여기가 LLM Wiki의 핵심입니다. 검색이라면 답하고 끝이지만 위키는 그 답조차 자산이 돼요. 이 장면은 다음 클립에서 직접 만들어봅니다. 오늘은 그 무대를 설계하는 날이고요.


진행 흐름

오늘 흐름은 두 단계입니다. 영상을 보면서 1번을 본인 주제로 채우고, 2번은 다음 클립으로 넘깁니다. clip-04에서 이 설계도를 그대로 들고 빈 뼈대를 만들 거예요.

1. 위키 설계도 4칸 채우기   ← 오늘 (clip-03)
2. 빈 위키 뼈대 세우기      ← 다음 클립 (clip-04)

1. 위키 설계도 4칸 채우기

설계도는 네 줄입니다. 영상에서는 영화 감상 위키로 예시를 보여주고, 본인은 본인 주제로 같은 네 칸을 채우면 돼요. 클로드코드 화면을 켜기 전에 말로 먼저 정리해보는 단계입니다.

1. 무슨 자료를 모을까:   (예: 영화 감상 / 마케팅 사례 / 내 분야 자료)
2. raw에 넣을 것:        (원본 형태 — md·기사·메모)
3. wiki 페이지 주제:     (엔티티 단위 — 인물·작품·개념·프레임워크)
4. 정리 규칙(CLAUDE.md): (페이지마다 한 줄 설명·출처 / 같은 대상은 같은 이름 / [[링크]])

영상 속 예시(영화)와 나란히 두면 본인 칸을 어떻게 채울지 감이 잡힙니다.

칸영상 예시 (영화 감상 위키)본인
1 자료영화 감상 + 인물·작품 정보본인 주제
2 raw감상 메모, 기사본인 원본
3 wiki 주제인물(봉준호·송강호) / 작품(기생충·괴물) / 장르본인 엔티티
4 규칙페이지마다 description:·sources:, 같은 사람=같은 이름, [[링크]]동일 원칙

3번 "wiki 페이지 주제"가 처음엔 헷갈릴 수 있어요. 요령은 엔티티 단위로 쪼개는 겁니다. 영화 위키라면 감상문 하나하나를 그대로 페이지로 만드는 게 아니라, 거기 등장하는 인물·작품·장르를 페이지의 단위로 잡아요. 봉준호 페이지, 기생충 페이지, 블랙 코미디 페이지 이런 식으로요. 그러면 여러 감상문에 흩어져 있던 봉준호 이야기가 한 페이지로 모입니다. 본인 주제라면 — 마케팅이면 캠페인·브랜드·프레임워크가, 본인 분야 자료면 핵심 개념·인물·도구가 페이지 단위가 되겠죠.

4번 규칙 중에서도 **"한 줄 설명(description)"**이 특히 중요해요. 나중에 위키가 커지면 클로드코드는 모든 페이지를 다 읽지 않습니다. 목차의 한 줄 설명만 훑어보고 필요한 페이지만 펼쳐서 읽어요(clip-05에서 다룰 효율 원리입니다). 그래서 페이지마다 내용 기반 한 줄 설명을 붙이는 규칙을 처음부터 규칙서에 박아둡니다. 두루뭉술한 한 줄이 아니라, 그 페이지에 무슨 내용·키워드가 들었는지 알 수 있는 한 줄이어야 해요.

복사용 입력 — 설계 상의: 본인 주제가 막연하면 클로드코드와 상의하며 4칸을 채울 수 있습니다.

내 OO 자료(예: 영화 감상 / 마케팅 사례)로 LLM Wiki를 만들려는데,
설계도 4칸을 같이 잡고 싶어.
- 무슨 자료를 모을지
- raw에 넣을 원본 형태
- wiki 페이지를 어떤 엔티티 단위로 쪼갤지
- 페이지마다 어떤 정리 규칙(한 줄 설명·출처·이름·링크)을 둘지
내 주제에 맞게 4칸을 어떻게 채우면 좋을까?

명령형("만들어줘")이 아니라 의문형("어떻게 채우면 좋을까?")으로 시작하세요. Part 6 내내 손에 익힌 그 패턴이에요. 곧장 폴더부터 만들려 하지 말고, 먼저 설계를 같이 다듬어달라고 부탁하는 겁니다.

2. (다음 클립) 빌더로 빈 위키 뼈대 세우기 — 미리보기

설계도가 채워지면, 다음 클립에서 clip-02에서 만든 워크스페이스 빌더를 다시 꺼내 빈 뼈대를 만듭니다. 오늘 실행하는 단계는 아니에요. 그래도 어떤 모습인지 미리 봐두면 설계도를 채울 때 무엇을 적어야 할지 또렷해집니다.

위키는 워크스페이스 안이 아니라 별도 워크스페이스로 떼어냅니다. clip-02 빌더로 "지식베이스" 아키타입 워크스페이스를 하나 더 만드는 셈이죠. 그래서 위키 본체는 ~/llm-wiki/ 같은 독립 폴더에 살고, 강의 진도 기록(README)만 50-my-work/에 남깁니다.

다음 클립에서 쓸 입력은 이런 모습일 거예요.

지난 시간에 배운 워크스페이스 만드는 방식으로, 영화 자료를 정리할
LLM Wiki를 별도 워크스페이스(~/llm-wiki)로 하나 만들려고 해.
raw / wiki 폴더랑, 정리 규칙을 적을 CLAUDE.md까지 — 자료는 아직 안 넣고
빈 뼈대만. CLAUDE.md엔 "각 위키 페이지에 한 줄 설명(description)과
출처(sources)를 단다"는 규칙도 넣어줘.
지식베이스 아키타입으로 잡으려는데 어떻게 하면 좋을까?

만들고 나면 이런 상태가 됩니다.

확인내용
폴더llm-wiki/raw/, llm-wiki/wiki/ 생성됨
두뇌llm-wiki/CLAUDE.md에 설계도 4번 규칙(description:·sources:·이름·[[링크]])이 들어감
자료아직 0 — 빈 위키 (매장 오픈 전, 진열장만 갖춘 상태)

자료를 채우는 4동사 루프(투입·정리·질문)는 다음 클립에서 한 바퀴 돌려봅니다. 오늘 본인이 확정해야 할 건 설계도 4칸뿐이에요.


결과물

오늘은 이론·설계 챕터라 코드 결과물은 없습니다. 손에 남는 건 위키 설계도 1장이에요. 이게 다음 클립에서 빈 뼈대를 만들 때 그대로 입력으로 들어갑니다.

결과물위치설명
위키 설계도 (4칸)~/fastcampus-cc/50-my-work/Part07-실전/실습34-위키설계/README.md모을 자료 / raw / wiki 주제 / 정리 규칙 4칸
(다음 클립) 빈 위키 뼈대~/llm-wiki/ (별도 워크스페이스)raw/·wiki/·CLAUDE.md — clip-04에서 생성

위키 본체가 50-my-work/ 밖 별도 폴더(~/llm-wiki/)에 사는 이유는 clip-02에서 정한 그대로예요. 위키는 그 자체로 독립된 지식베이스니까 강의 폴더 안에 가두지 않습니다. 진도 기록(설계도 README)만 50-my-work/에 남기고, 위키 본체는 강의가 끝나도 계속 자라는 본인 자산으로 따로 빼두는 거죠.

완료 또는 /wrap을 입력하면 스킬이 정리합니다. 실습34-위키설계/README.md에 본인 설계도 4칸이 기록되고, progress.json의 practice_completed에 "실습 34"가 추가돼요. 다음 클립에서 이 README의 설계도를 그대로 들고 시작합니다.


자주 막히는 포인트

증상원인해결
"RAG·벡터DB가 뭐예요?"검색 기반 방식의 용어 부담자료를 잘게 잘라 그때그때 찾는 방식. 우리 규모(수백~천 개)엔 과해서 안 씁니다. 마크다운 폴더면 충분
"옵시디언을 깔아야 하나요?"위키 앱이 필요하다는 오해아니요. 클로드코드가 직접 파일을 읽고 씁니다. 그래프는 나중에 "그려줘"라고 부탁하면 생성됨
wiki 페이지 주제를 못 잡겠음감상문 1개=페이지 1개로 생각함페이지는 엔티티 단위(인물·작품·개념). 여러 자료에 흩어진 같은 대상이 한 페이지로 모이게
CLAUDE.md가 왜 "두뇌"인지 안 와닿음schema 개념이 추상적clip-02에서 배운 CLAUDE.md 방식 그대로. 위키 폴더 안 llm-wiki/CLAUDE.md가 정리 규칙서
설계도 단계인데 벌써 자료부터 넣으려 함진행 순서 혼동오늘은 설계도까지. 자료 투입은 다음 클립(clip-04)
"한 줄 설명(description)"을 왜 박나요?효율 원리가 아직 안 나옴위키가 커지면 클로드코드가 목차 한 줄만 보고 필요한 페이지를 찾음. 그 기반(clip-05)
위키를 강의 폴더 안에 만들어야 하나?결과물 저장 위치 혼동위키 본체는 별도(~/llm-wiki/). 진도 기록(설계도 README)만 50-my-work/에
"검색이랑 똑같은 거 아니에요?"처리 시점 차이를 못 봄검색은 질문할 때마다 새로 찾음(안 쌓임), 위키는 넣을 때 한 번 정리(쌓임)

설계 단계에서 막히면 막혔어요 / 도와줘로 클로드코드에 도움을 청하면 됩니다. 회고나 설계도 채우기도 자유 입력이에요 — 정해진 보기 중에 고르는 게 아니라, 본인 주제를 본인 말로 적으면 됩니다.


다음 클립

→ 위키 짓기 — 자료 투입부터 질문까지

다음 클립에서 드디어 손을 댑니다. 오늘 그린 설계도를 들고, clip-02 빌더로 빈 위키 뼈대(raw/·wiki/·CLAUDE.md)를 먼저 만들어요. 그다음 4동사 루프를 한 바퀴 돌립니다 — raw/에 자료를 투입하고, AI가 읽어서 wiki/ 페이지로 정리하고, 위키에 질문해서 답을 받아요. 그 답이 다시 위키에 쌓이는 장면까지 직접 봅니다. 오늘 "검색은 매번 찾고, 위키는 쌓인다"고 말로만 들은 그 차이를 다음 클립에선 본인 위키로 눈으로 확인하게 돼요. 점검(lint)은 그 뒤 clip-05입니다.

위키 짓기

자료 투입부터 질문까지

Part 7 · Clip 4

이 클립에서 만드는 것

지난 클립에서 위키 설계도 4칸을 그렸어요. 무슨 자료를 모을지, raw에 무엇을 넣을지, wiki 페이지를 어떤 엔티티 단위로 쪼갤지, 정리 규칙(description·sources·이름·[[링크]])은 무엇으로 둘지. 여기까지는 말로만 정한 거였죠. 오늘은 그 설계도를 들고 실제로 손을 댑니다. 빈 위키 뼈대에 자료를 넣고, AI가 읽어서 정리하고 연결하고, 거기에 질문까지 한 바퀴 돌려봐요.

손에 익히는 자료는 영화 감상 위키입니다. 봉준호, 송강호, 기생충, 괴물처럼 누구나 아는 도메인이라 정리 결과를 바로 알아볼 수 있어요. 본인 주제(마케팅 사례나 분야 자료)는 똑같은 방식으로 나중에 적용하면 됩니다. 오늘은 도메인이 익숙한 영화로 손에 박아두는 날이에요.

오늘 도는 건 clip-03에서 본 4동사 루프 중 앞 세 개입니다.

투입(ingest)  →  정리(compile)  →  질문(query)   [+ (선택) 그래프]
raw에 자료 넣기   raw 읽어 wiki    위키에 묻고
(아직 정리 X)     페이지로 정리·연결  좋은 답은 다시 저장

네 번째 동사인 **점검(lint)**은 위키가 천 편 규모로 커졌을 때 깨지는 곳을 고치는 단계입니다. 그건 다음 클립에서 다뤄요. 오늘은 위키가 "생기고 자라는" 장면까지입니다.

BeforeAfter
위키 뼈대만 있고 자료가 0 (clip-03 설계도)인물·작품 페이지가 채워진 동작하는 위키
AI에게 매번 같은 자료를 다시 설명한다한 번 정리한 페이지에서 답이 나온다
질문하면 답하고 끝 (검색)좋은 답이 새 페이지로 쌓인다 (복리)

이번 클립에서 할 일은 세 단계(+선택 1)입니다. 투입 → 정리 → 질문, 그리고 원하면 그래프까지. 영상에서 한 줄 입력하면 본인도 같은 줄을 그대로 따라치고 결과를 같이 확인하는 따라치기 클립이에요.


핵심 개념

라이브 15편 + 대량 공개 1,000편 — 둘을 섞는 이유

오늘 위키에 들어가는 영화 자료는 두 덩어리예요. 직접 정리할 15편, 그리고 미리 빌드해둔 1,000편입니다.

무엇누가
라이브영화 raw 15편을 직접 정리시켜 위키가 생기는 걸 따라치기본인이 손으로
대량 공개raw 1,000편을 미리 빌드해둔 영화 위키를 열어 "이만큼 쌓이면 이렇게 된다"미리 빌드된 완성본

천 편을 라이브로 정리할 순 없어요. 그러면 영상 한 클립으로 안 끝나니까요. 그래서 소량은 직접 만들어 원리를 손에 익히고, 대량은 미리 빌드한 완성본으로 결과를 본다, 이렇게 두 갈래로 갑니다. 둘 다 raw/에서 빌드한 결과라 본질은 같아요. 라이브 15편은 서로 연결되도록 묶음으로 골랐습니다(봉준호 작품군, 박찬욱 작품군처럼). 그래서 적은 양으로도 [[링크]]가 엮이는 걸 바로 볼 수 있어요.

정리(compile)의 정체 — 원본을 베껴 정리 페이지를 새로 쓴다

가장 중요한 동사가 **정리(compile)**예요. 한 문장으로 말하면, AI가 raw/의 거친 원본을 읽고 wiki/에 인물·작품 단위의 정리 페이지를 새로 쓰는 일입니다.

여기서 clip-03의 가장 중요한 약속을 다시 떠올리세요. raw/의 원본은 AI가 절대 고치지 않습니다. 원본은 박물관 유리장 안에 있고, AI는 그걸 보고 베껴서 wiki/에 새 페이지를 만들 뿐이에요. 그러니까 정리는 "원본 수정"이 아니라 "원본을 재료로 새 페이지를 만드는" 일입니다.

raw/0001-parasite-review.md   (원본 감상문 — 안 고침)
raw/0026-parasite-review.md   (또 다른 기생충 감상문 — 안 고침)
raw/0002-...-murder-review.md (살인의 추억 감상문 — 안 고침)
          │ AI가 읽고 베껴서
          ▼
wiki/people/봉준호.md   ← 여러 감상문에 흩어진 봉준호 이야기가 한 페이지로
wiki/works/기생충.md    ← 여러 감상문의 기생충 정보가 한 페이지로
wiki/works/괴물.md

여기서 중요한 건 엔티티 단위로 모인다는 거예요. 감상문 하나하나를 그대로 페이지로 만드는 게 아닙니다. 거기 등장하는 인물(봉준호·송강호)과 작품(기생충·괴물)을 페이지 단위로 잡아요. 그러면 여러 raw 파일에 흩어진 같은 인물 이야기가 한 페이지로 합쳐집니다. 이게 검색과 다른 점이에요. 검색은 질문할 때마다 조각을 새로 긁지만, 위키는 정리할 때 한 번 합쳐둡니다.

페이지마다 description·sources를 frontmatter에 — 왜 처음부터 박나

clip-03에서 정한 규칙이 정리할 때마다 똑같이 적용됩니다. 각 페이지 맨 위에 frontmatter로 description(본문 전체를 바탕으로 한 줄 요약)과 sources(출처)를 넣는 규칙이에요. 결과 페이지는 이런 모습입니다.

wiki/people/봉준호.md
─────────────────────
---
description: 한국 영화감독. 기생충·괴물·살인의 추억 등에서 계급·가족·
  공간 연출을 반복 변주하며 장르를 뒤섞는다. 봉준호, 봉테일, 송강호
  협업, 칸 황금종려상, 블랙 코미디 같은 키워드로 검색됨.
sources:
  - raw/0001-parasite-review.md
  - raw/0002-memories-of-murder-review.md
  - raw/0003-the-host-review.md
tags: [감독, 한국영화]
---

# 봉준호

[[기생충]], [[괴물]], [[살인의 추억]]을 만든 감독. …
본문에서 [[송강호]]와의 협업, [[블랙 코미디]] 톤 전환을 …

description을 처음부터 규칙으로 박아두는 데는 이유가 있어요. 위키가 커지면 클로드코드가 모든 페이지를 다 읽지는 않습니다. 목차(index.md)의 한 줄 설명만 훑어보고, 정말 필요한 페이지만 펼쳐서 읽어요. 이걸 계층적 읽기(tiered read)라고 부르는데, 다음 클립에서 제대로 다룹니다. 지금은 한 가지만 기억하면 돼요. 검색 품질이 곧 description 품질이라는 것. 그래서 description은 추상적인 한 줄이 아니라, 그 페이지에 무슨 내용과 키워드가 있는지 알 수 있는 한 줄이어야 합니다. 정리시킨 직후, 생성된 description이 한두 문장 이상으로 충분한지 한 번 훑어보세요.

sources는 "이 정리, 어디서 나온 거지?" 싶을 때 원본으로 돌아갈 다리예요. 정량적 평가나 별점이 아니라 출처 경로를 남기는 겁니다. 출처가 붙어 있어야 위키를 믿고 쓸 수 있죠. 별도 sources.md 파일을 만들지 말고, 각 페이지 frontmatter 안에 두세요. 이게 규칙입니다.

같은 대상은 같은 이름 — [[링크]]가 엮이려면

[[링크]]로 페이지를 엮으려면 약속이 하나 필요해요. 같은 대상은 항상 같은 이름으로 부른다는 겁니다. 한 감상문엔 "봉준호 감독", 다른 감상문엔 "봉 감독"이라고 쓰여 있어도, 위키 페이지 이름과 링크는 [[봉준호]] 하나로 통일해야 해요. 그래야 흩어진 언급이 한 페이지로 모이고 링크가 끊기지 않습니다.

영화는 표기가 갈리기 쉬운 도메인이라 규칙을 하나 더 둡니다. 한국 작품은 한글 정본, 외국 작품은 원제예요. 기생충은 한글로, Dune은 원제로. "듄"·"Dune (2021)"·"듄: 파트2" 같은 변형은 정본 한 곳으로 모아 중복 페이지가 갈라지지 않게 합니다. 이런 표기 통일과 중복 제거(같은 이름인데 타입이 다른 동명충돌까지)를 제대로 손보는 건 다음 클립이에요. 오늘은 "같은 대상은 같은 이름으로 통일해서 링크 걸어줘" 한 줄이면 충분합니다.

링크에는 원칙이 하나 더 있어요. [[X]]는 대상 페이지가 실제로 있을 때만 겁니다. 페이지가 없는 단역 배우까지 전부 링크로 만들면 끊긴 링크(죽은 링크)만 늘어나요. 페이지가 없는 대상은 그냥 본문 텍스트로 두세요. 나중에 그 대상이 두 번 이상 등장하거나 질문 대상이 되면, 그때 페이지로 승격하면 됩니다.

질문(query)의 답이 다시 쌓인다 — 복리

오늘 클립에서 꼭 눈으로 봐야 할 장면이 질문의 답이 다시 위키에 쌓이는 순간입니다. LLM Wiki를 검색과 가르는 결정적 차이가 여기예요.

검색(RAG)            : 질문 → 조각 긁어 답 → 끝 (답은 흩어짐)
LLM Wiki            : 질문 → 위키 페이지 근거로 답 → 그 답을 새 페이지로 저장
                                                  └→ 다음 질문의 재료가 됨

"봉준호 영화의 공간 연출"을 위키에 물으면, AI는 봉준호·기생충·괴물 페이지를 근거로 답을 합성하고 출처를 같이 줍니다. 검색이라면 여기서 끝이에요. 그런데 위키에서는 그 좋은 답을 wiki/queries/에 새 정리 페이지로 저장하고, 관련 인물·작품 페이지에 [[링크]]로 연결합니다. 그러면 탐색한 결과조차 자산이 돼요. 다음에 비슷한 질문을 하면 이미 정리된 그 페이지에서 답이 나옵니다. 쓸수록 위키가 똑똑해지는 복리가 바로 이 장면에서 시작돼요.


진행 흐름

입력 두 단 짚기: 아래에는 두 종류의 입력이 섞여 있어요. 도입 멘트는 평소 대화처럼 "~하려는데 어떻게?"로 묻는 줄이고, 실행 입력은 AI에게 실제로 동작을 시키는 줄이라 "~해줘" 형태입니다. 도입 멘트로 방법을 먼저 묻고, AI가 알려준 방법을 실행 입력으로 따라치는 흐름이에요. 이 2단은 영상에서 말로 짚어줄 거예요. Part 6 내내 익힌 그 패턴 그대로입니다.

1. /part07 호출 → Clip 4 선택

강의 워크스페이스에서 클로드코드를 켜고 시작합니다.

/part07

스킬이 진도를 확인하고 클립 선택지를 띄웁니다. Clip 4를 선택하면 자동 셋업이 두 가지를 준비해요. clip-03에서 만든 빈 위키(~/llm-wiki/)의 raw/에 라이브용 영화 자료 15편을 넣고, 진도 폴더를 만듭니다.

✓ ~/llm-wiki/raw/에 영화 자료 15편 투입 완료 (정리는 아직)
  전체 1,000편 raw는 시드에 그대로 있음 (대량 빌드·공개용)
✓ ~/fastcampus-cc/50-my-work/Part07-실전/실습35-위키짓기/ 진도 폴더 준비

여기서 두 폴더가 분리돼 있다는 걸 다시 확인하세요. 위키 본체는 ~/llm-wiki/(별도 워크스페이스)에 살고, **진도 기록(README)만 50-my-work/**에 남습니다. clip-03에서 정한 규칙 그대로예요. 위키는 강의가 끝나도 계속 자라는 본인 자산이라, 강의 폴더 안에 가두지 않습니다.

clip-03을 안 거쳐서 빈 위키가 없어도 걱정 마세요. 자동 셋업이 최소 골격(raw/·wiki/)을 보강해줍니다. 다만 정리 규칙이 담긴 CLAUDE.md는, clip-03에서 만든 게 있으면 그대로 쓰는 게 좋아요.

2. STEP 1 — 투입(ingest): 영화 자료 훑어보기

자료는 셋업이 이미 raw/에 넣어줬어요. 첫 단계는 "정리 말고 훑어만" 보는 겁니다. 무슨 인물과 작품이 반복 등장하는지, 지형부터 파악하는 거예요.

실행 입력:

llm-wiki/raw/ 폴더의 영화 자료들을 읽고, 어떤 주제(인물·작품·장르)가
반복되는지 먼저 훑어줘. 정리는 아직 하지 마.

클로드코드가 raw 파일들을 읽고 반복 등장하는 대상을 목록으로 보고합니다. 이런 모습이에요.

반복 등장 인물: 봉준호(여러 편), 송강호, 박찬욱, 류승룡 …
반복 등장 작품: 기생충, 살인의 추억, 괴물, 설국열차, 올드보이 …
장르: 블랙 코미디, 스릴러, SF …
(wiki/는 아직 비어 있음 — 정리 전이라 정상)

| 확인 | AI가 반복 인물·작품을 목록으로 보고 / wiki/는 아직 비어 있음 |

이 단계에서 wiki/가 비어 있는 건 정상이에요. 투입은 자료를 넣고 지형을 보는 데까지고, 정리 페이지는 다음 STEP에서 만듭니다.

3. STEP 2 — 정리(compile): 위키 페이지 만들기 ★

오늘의 핵심 단계입니다. 먼저 도입 멘트로 방법을 묻고, 그다음 실행 입력으로 정리를 시킵니다.

도입 멘트 ("~하려는데 어떻게?"):

raw에 있는 영화 자료를 인물·작품별 위키 페이지로 정리하고 싶은데,
서로 연결도 하고 나중에 검색도 잘 되게 하려면 어떻게 하면 좋을까?

클로드코드가 방법을 제안하면(엔티티 단위로 쪼개기, frontmatter에 요약·출처, 같은 이름 통일, 링크 연결 등), 그 방법 그대로 실행 입력을 던집니다. 사실 이 규칙들은 clip-03에서 CLAUDE.md에 박아둔 것이라 매번 똑같이 적용돼요.

실행 입력 (라이브):

raw 영화 자료를 읽고 wiki/에 주제별 페이지(인물·작품)를 만들어줘.
각 페이지 맨 위에 frontmatter로 description(본문 전체를 바탕으로 한 줄
요약)과 sources(출처)를 넣고, 관련 페이지끼리 [[ ]] 링크를 걸어줘.
같은 대상은 같은 이름으로 통일해줘.

클로드코드가 raw를 읽어 wiki/에 인물·작품 페이지를 만듭니다. 결과는 이런 모습이에요.

wiki/
├── people/
│   ├── 봉준호.md      (description·sources / [[기생충]] [[괴물]] 링크)
│   ├── 송강호.md
│   └── 박찬욱.md
├── works/
│   ├── 기생충.md
│   ├── 괴물.md
│   ├── 살인의 추억.md
│   └── 설국열차.md
├── concepts/
│   └── 블랙 코미디.md
└── index.md          ← 목차(MOC). 모든 페이지 + 한 줄 description

| 확인 | wiki/에 인물·작품 페이지 생성 / 각 페이지 frontmatter에 description:·sources: / 본문에 [[링크]] |

description 품질 확인: 생성된 페이지를 한두 장 열어서, description이 한두 문장 이상으로 충분한지 훑어보세요. 너무 짧으면(예: "봉준호 페이지") 다음 클립의 "설명으로 골라 읽기"가 부정확해집니다. 부실하다 싶으면 "각 페이지 description을 본문 키워드까지 담은 한두 문장으로 다시 써줘" 한 줄이면 됩니다.

여기서 챙길 게 하나 더 있어요. 정리가 끝나면 클로드코드가 index.md(목차)와 log.md(작업 기록)도 갱신합니다. index.md는 클로드코드가 질문할 때 가장 먼저 읽는 입구(목차)고, log.md는 "언제 무엇을 정리했나"를 한 줄씩 덧붙이기만 하는 타임라인이에요. 자료가 많으면 한 번에 다 시키지 말고 100편씩 배치로 나눠 정리하는 게 안전합니다. 이 배치 패턴도 다음 클립에서 더 다뤄요.

대량 공개: 여기서 영상은 raw 1,000편을 미리 빌드해둔 영화 위키를 엽니다.

"소량은 방금 직접 만들었고, 1,000편을 다 정리하면 이렇게 인물·작품이 촘촘히 엮인 위키가 됩니다. 다만 이 정도로 커지면 '전체 읽기'가 삐걱대는 곳도 생기는데, 그건 다음 클립에서 솔직하게 봅니다."

4. STEP 3 — 질문(query): 답을 다시 쌓기 ★

이제 위키에 질문합니다. 위키 페이지를 근거로 답하고 출처까지 같이 달라고 시켜요.

실행 입력 (질문):

이 위키에서 "봉준호 영화의 공간 연출"을 정리해줘.
근거가 된 페이지를 출처로 같이 알려줘.

클로드코드가 index.md에서 관련 페이지를 찾고(봉준호·기생충·괴물 …), 그 페이지들을 근거로 답을 합성합니다. 답 끝에는 어느 페이지를 근거로 썼는지 출처가 붙어요.

봉준호 영화의 공간 연출 — 핵심 정리

- 계급을 대사가 아니라 공간의 높낮이로 체감시킴
  (반지하 / 거실 / 지하실 → [[기생충]])
- 폭우·계단·냄새 같은 반복 모티프로 공간에 감정을 입힘
- 한정된 공간(열차 칸)을 사회 구조로 치환 → [[설국열차]]

근거 페이지: [[봉준호]], [[기생충]], [[설국열차]], [[괴물]]

| 확인 | 위키 페이지를 근거로 답 + 출처 |

검색이라면 여기서 끝이에요. 그런데 위키에서는 한 단계가 더 있습니다. 이 좋은 답을 위키에 다시 저장하는 거예요.

실행 입력 (재저장 — 복리):

방금 답을 wiki/queries/에 새 페이지로 저장하고(frontmatter description·
출처 포함), 관련 인물·작품 페이지에 [[링크]] 걸어줘.

클로드코드가 답을 새 페이지로 저장하고 링크를 연결합니다.

✓ wiki/queries/2026-06-14-봉준호-공간연출.md 생성
  (frontmatter description·sources + 본문 [[링크]])
✓ [[봉준호]] · [[기생충]] · [[설국열차]] 페이지에서 이 페이지로 역링크
✓ index.md · log.md 갱신

| 확인 | wiki/에 새 정리 페이지 추가 + 링크 연결. 탐색이 자산으로 쌓임 |

이 장면이 clip-03에서 "말로만 들었던" 복리를 눈으로 확인하는 순간이에요. 질문해서 나온 답이 사라지지 않고 페이지로 남아서, 다음 질문의 재료가 됩니다.

5. (선택) STEP 4 — 그래프 그려보기

시간이 남으면 [[링크]] 관계를 그림으로 봅니다. 옵시디언 같은 별도 앱 없이도 클로드코드가 직접 그려줘요.

실행 입력:

wiki/의 [[ ]] 링크 관계를 점·선 그래프 HTML 한 파일로 만들어줘.
브라우저에서 드래그·줌 되게.

HTML 파일 하나가 생기고, 브라우저로 열면 인물·작품이 점으로, [[링크]]가 선으로 그려진 그래프가 나옵니다. 봉준호 점에서 기생충·괴물·설국열차로 선이 뻗어 있는 모습이 눈에 들어와요.

이 그래프는 시각화 전용이에요. 위키의 검색은 description 기반으로 돌아가지, 이 그래프를 따라가며 답을 찾는 게 아닙니다(graph 검색은 우리 강의 범위 밖). 그래프는 "내 위키가 얼마나 엮였나"를 눈으로 확인하는 용도입니다.


결과물

이번 클립이 끝나면 위키 본체와 진도 기록 두 곳에 남습니다.

결과물위치설명
인물·작품 정리 페이지~/llm-wiki/wiki/people/, ~/llm-wiki/wiki/works/각 페이지 frontmatter에 description·sources + 본문 [[링크]]
목차·로그~/llm-wiki/wiki/index.md, ~/llm-wiki/log.md질문 때 먼저 읽는 입구(MOC) + 작업 타임라인
저장된 질문 답~/llm-wiki/wiki/queries/{날짜}-{주제}.md질문 답을 다시 쌓은 새 페이지 (복리)
(선택) 그래프~/llm-wiki/ 안 HTML 한 파일[[링크]] 관계 시각화 (검색 아님)
진도 README~/fastcampus-cc/50-my-work/Part07-실전/실습35-위키짓기/README.md오늘 한 것·쌓인 것·회고 (자동 작성)

완료 또는 /wrap을 입력하면 스킬이 정리합니다. 먼저 결과물을 검증해요. raw 편수, wiki 페이지 수, description이 달린 페이지 수를 세어 보고합니다. wiki 페이지가 0이면 정리(STEP 2)에서 멈춘 거고, description이 0이면 규칙이 안 먹은 거라 다시 시키도록 안내해줘요.

그다음 실습35-위키짓기/README.md가 자동으로 작성되고, progress.json의 practice_completed에 "실습 35"가, projects_completed에 "llm-wiki"가 추가됩니다. 마지막에 한 줄 회고를 자유 입력으로 받아 README에 기록해요. "검색과 다르게 '쌓인' 것은 무엇이었나"를 본인 말로 적으면 됩니다.

Part 7의 결과물 저장 규칙을 다시 확인해보면, 위키 본체(~/llm-wiki/)와 진도 기록(50-my-work/)이 분리돼 있어요. 한쪽은 계속 자라는 자산, 한쪽은 강의 진도 기록입니다.


자주 막히는 포인트

증상원인해결
한 번에 다 시켰더니 멈춤자료를 통째로 한 번에 정리"100편씩 나눠서 정리해줘" — 배치로 끊어 시키기 (배치 패턴은 clip-05에서 더)
description이 안 붙음정리 규칙이 안 먹음"각 페이지 맨 위에 본문 기반 한 줄 description을 꼭 넣어줘"로 다시 요청
sources(출처)가 안 붙음frontmatter 누락"frontmatter sources에 출처(raw 파일 경로)를 꼭 남기라고 다시 시켜줘"
description이 한 단어로만 나옴본문 기반이 아니라 제목만 옮김"본문 키워드까지 담은 한두 문장으로 다시 써줘" — 검색 품질 = description 품질
링크가 안 걸림같은 대상을 다른 이름으로 부름"같은 대상은 같은 이름으로 통일해서 링크 걸어줘" (표기 통일·중복 제거는 clip-05)
끊긴 링크(죽은 링크)가 생김없는 페이지까지 [[ ]]로 만듦"대상 페이지가 실제 있을 때만 링크하고, 없으면 텍스트로 둬"
raw가 비어 있음시드 복사 실패"seed-movie-wiki/raw 시드가 ~/llm-wiki/raw/에 복사됐는지 확인해줘"
wiki가 비어 있는데 정상인가요?STEP 1(투입) 직후정상입니다. 정리(STEP 2) 전이라 비어 있어요. STEP 2에서 채워집니다
질문 답이 저장이 안 됨재저장 입력을 안 줌질문 답을 받은 뒤 "방금 답을 wiki/queries/에 새 페이지로 저장해줘"를 별도로
그래프 보려면 옵시디언 깔아야 하나요?위키 앱이 필요하다는 오해아니요. "그래프 그려줘"라고 하면 클로드코드가 HTML로 그려줍니다
영화 말고 본인 주제로 해보고 싶음응용 욕구OK. 단 오늘은 영화로 손에 익히고, 본인 주제는 같은 방식으로 나중에 적용
위키를 강의 폴더 안에 만들어야 하나?저장 위치 혼동위키 본체는 별도(~/llm-wiki/), 진도 기록(README)만 50-my-work/에

자유 진행 중 막히면 막혔어요 / 도와줘로 클로드코드에 도움을 요청할 수 있어요. 회고도 자유 입력입니다. 정해진 보기 중에 고르는 게 아니라 본인 말로 적으면 됩니다.


다음 클립

→ 위키 개선 — 하위 인덱스에서 하이브리드 RAG로

오늘은 위키 15편을 직접 짓고, 질문의 답이 다시 쌓이는 복리까지 봤어요. 다음 클립에서는 규모가 커졌을 때 이야기를 솔직하게 합니다. 위키가 1,000편으로 자라면 index.md 하나로 "전체 읽기"가 삐걱대기 시작해요. 목차가 너무 길어지고, 같은 인물이 다른 이름으로 중복되고, 끊긴 링크가 쌓입니다. 그래서 오늘 미룬 네 번째 동사인 점검(lint)으로 깨진 곳을 고치고, 목차를 타입별 하위 인덱스로 쪼갭니다. 그래도 부족하면 description을 임베딩한 **하이브리드 검색(RAG)**을 선택적으로 더해요. 오늘 만든 위키가 작을 때와 클 때 어떻게 다른지, 어디가 깨지고 어떻게 고치는지를 다음 클립에서 봅니다.

위키 개선 — 하이브리드 RAG

하위 인덱스에서 하이브리드 RAG로

Part 7 · Clip 5

이 클립에서 만드는 것

지난 Clip 4에서 본인 위키에 1,000편 규모의 원본 기사를 채우고 질문을 던져봤어요. 그 과정에서 평면 index.md 한 장의 한계가 드러났을 겁니다. 무슨 질문이든 전체 목록부터 읽어야 했고, Dune이 영화인지 시리즈인지 매번 헷갈렸죠. 한계는 지난 클립에서 이미 봤으니, 오늘은 그걸 직접 고쳐서 작동시키는 클립입니다.

고치는 순서는 두 칸입니다. 먼저 하위 인덱스로 검색을 타입별로 쪼개고, 그 위에 하이브리드 RAG(키워드+시멘틱)를 얹습니다. 여기서 놓치면 안 되는 게, 이 둘은 따로 노는 기술이 아니에요. 하위 인덱스를 쪼갠 타입(works/people/series/concepts/sources)이 그대로 RAG의 컬렉션이 됩니다. ①을 잘 해두면 ③의 정확도가 거기서 따라옵니다.

Before (Clip 4까지)After (이 클립)
평면 index.md 한 장 — 모든 타입 혼재타입별 {type}/index.md + 최상위 라우터
어떤 질문이든 전체 목록을 1차로 읽음관련 타입 인덱스만 펼쳐서 읽음
Dune 영화 vs 시리즈가 비결정적경로 한정 링크 + 타입 컬렉션으로 분리
"씁쓸한 가족 드라마" 같은 의미 질문에 약함시멘틱 검색이 의미로 회수

관통하는 한 가지는 선 긋기입니다. 어디까지가 설치 0으로 되는 개선이고 어디부터 임베딩·벡터DB가 필요한지를, 얼버무리지 않고 가릅니다. RAG는 적이 아니라 규모로 선을 긋는 도구일 뿐이에요.

이번 클립에서 할 일은 세 단계입니다. 하위 인덱스 만들기 → 개선 확인(전/후 비교) → 하이브리드 RAG 구현. 마지막에 본인 규모로 "여기까지면 충분한가, RAG까지 가야 하나"를 한 줄로 적어 마무리합니다.


핵심 개념

왜 지금 RAG인가 — 원칙을 어기는 게 아니라 예고한 시점

Part 7 LLM Wiki 챕터 내내 들어온 입장은 "어지간한 규모면 마크다운+검색으로 충분, 정말 커지면 RAG"였습니다. 그럼 지금 RAG를 꺼내는 건 말 바꾸기 아니냐. 아닙니다.

코퍼스가 원본 1,000편에 엔티티 수백~천 단위로 불었어요. 정본 설계서(~/llm-wiki/30-reports/2026-06-14-rag-index-design.md)가 미리 정해둔 'RAG 도입 트리거'를 이제 넘은 겁니다. 원칙을 어긴 게 아니라 예고한 시점에 예고한 대로 도입하는 거예요. 15편짜리 위키였다면 인덱스를 쪼개든 RAG를 얹든 효과가 거의 안 보였을 겁니다. 1,000편이 깔려 있으니 오늘 개선이 손에 잡히는 거죠.

LLM Wiki 도구 선택 — 규모로 선 긋기
─────────────────────────────────────
수백~수천      → 하위 인덱스 (마크다운, 설치 0)
의미질문·롱테일 → 하이브리드 RAG (임베딩 + 벡터DB)
수만~수십만    → 관리형(Gemini File Search) / Supabase pgvector

마지막 줄의 Supabase pgvector는 남의 얘기가 아니에요. 다음 챕터(CH03 유튜브 대시보드)에서 또 만납니다. 오늘 쓰는 벡터DB 원리를 Supabase가 pgvector라는 이름으로 똑같이 품고 있거든요. 도구만 다르고 원리는 같습니다.

하위 인덱스(MOC) — 평면 index를 타입별로 쪼개기

평면 index.md 하나에 모든 타입을 섞어두면 문제가 둘 생깁니다. 하나는 동명충돌 — Dune이라는 이름이 영화에도 시리즈에도 걸쳐 있으면 클로드코드가 어느 쪽 페이지를 읽을지 비결정적이에요. 다른 하나는 tiered-read 낭비 — 무슨 질문이든 전체 목록을 1차로 훑어야 하니 노이즈가 따라붙습니다.

이걸 타입별 하위 인덱스 + 최상위 라우터로 바꿉니다.

40-wiki/
  index.md           ← 최상위 = 라우터(카탈로그 아님)
                       타입별 하위 인덱스 링크 + 동명충돌 안내표
  works/index.md     ← 작품만
  people/index.md    ← 인물만
  series/index.md    ← 시리즈만
  concepts/index.md  ← 개념만
  sources/index.md   ← (이미 존재) 원본 기사

여기서 챙길 게 둘입니다.

첫째, 최상위 index.md가 카탈로그가 아니라 라우터가 됩니다. 전체 페이지를 다 늘어놓는 대신 "작품은 works로, 인물은 people로" 보내는 안내판 역할만 해요. 질문이 들어오면 클로드코드가 라우터를 먼저 읽고 관련 타입의 하위 인덱스만 펼칩니다.

둘째, 동명충돌을 경로 한정 위키링크로 해소합니다. [[Dune]] 대신 [[works/Dune|Dune]](영화)·[[series/Dune|Dune]](시리즈)처럼 경로를 붙여 갈라놓는 거예요. 그리고 라우터에 동명충돌 안내표를 한 칸 둬서 "이 이름은 두 타입에 있다"를 명시합니다. 이 동명충돌 해소가 이번 단계의 진짜 성과예요. 여기까지는 설치가 0입니다. 마크다운 파일만 다시 정리하면 끝이에요.

하위 인덱스가 곧 RAG의 컬렉션 — 둘은 같은 네임스페이스

이 클립에서 제일 중요한 연결입니다. 타입(works/people/series/concepts/sources)으로 하위 인덱스를 쪼개두면, 그게 그대로 RAG의 컬렉션이자 필터가 됩니다.

타입 네임스페이스 하나를 둘이 공유
──────────────────────────────────
works/index.md  ─┐
people/index.md ─┤  (Phase 1 하위 인덱스)
series/index.md ─┤
                 │  같은 타입 = 같은 네임스페이스
works 컬렉션  ───┤
people 컬렉션 ───┤  (Phase 3 RAG)
series 컬렉션 ───┘

그래서 RAG에서도 Dune(works)과 Dune(series)이 컬렉션 분리로 결정적으로 갈라집니다. 마크다운 단계에서 경로 한정 링크로 풀었던 동명충돌을, 벡터DB 단계에서는 컬렉션 분리로 똑같이 푸는 거죠. 둘은 별개 기술이 아닙니다. "타입으로 쪼갠다"는 같은 발상을 두 층에 한 번씩 적용한 것뿐이에요. ①을 깔아둬야 ③이 그 위에 섭니다.

하이브리드 검색 — 왜 키워드와 시멘틱을 둘 다

설명 목록조차 버겁거나 "씁쓸한 가족 드라마 같은 거"처럼 모호한 의미 질문을 잡으려면, 페이지를 임베딩해 시멘틱 검색을 얹어야 합니다. 그런데 시멘틱 하나만으로는 모자라요. 둘을 같이 돌려 점수를 병합하는 이유가 바로 그겁니다.

방식강점약점
시멘틱(의미·임베딩)"씁쓸한 가족 드라마 같은 거" 모호 질문고유명사·정확한 제목엔 약함
키워드(렉시컬·BM25)"기생충", 음차 표기, 정확한 제목의미 유사엔 약함
하이브리드(둘 점수 병합)서로의 약점을 메움—

"기생충"이라고 정확히 치면 키워드 검색이 강하고, "씁쓸한 가족 드라마 같은 한국 영화"라고 두루뭉술하게 물으면 시멘틱이 강합니다. 둘을 동시에 돌려 순위를 합치면 서로의 빈틈이 메워져요. 두 검색이 매긴 순위를 점수로 환산해 합산하는 방식인데, 본인이 직접 계산할 일은 없습니다. 클로드코드한테 "키워드랑 시멘틱 같이 돌려서 합쳐줘"라고만 하면 안에서 알아서 처리합니다.

용어 30초 정리 (몰라도 됩니다, 궁금하면)

말뜻 (우리 식으로)
하위 인덱스(MOC)타입별로 쪼갠 목차 페이지 — 사람·에이전트가 먼저 읽는 진입점
임베딩글을 의미가 담긴 숫자 벡터로 바꾼 것
벡터 DB그 임베딩을 저장·검색하는 곳 (예: ChromaDB, sqlite-vec, Supabase pgvector)
시멘틱 검색질문을 임베딩으로 바꿔 의미로 찾기
키워드 검색(BM25)단어 일치로 찾기 (고유명사·정확 제목에 강함)
RAG검색해 온 근거로 답하는 방식 (오늘은 시멘틱+키워드 하이브리드)

진행 흐름

세 단계로 진행합니다. Phase 1·2는 마크다운만 만지니 설치가 0이고, 임베딩 키와 벡터DB는 Phase 3에서만 필요해요. 키가 없으면 Phase 1·2까지만 해도 이번 클립의 목표는 달성입니다.

1. /part07 호출 → Clip 5 선택

강의 워크스페이스에서 클로드코드를 켜고 시작합니다.

/part07

스킬이 진도를 확인하고 작업 폴더를 준비합니다. LLM Wiki 본체는 강의 워크스페이스 밖 별도 폴더(~/llm-wiki/)에 살고, 진도 기록만 50-my-work 안에 남는 구조예요. Clip 3에서 위키 골격을 세울 때 정한 그대로입니다.

✓ 50-my-work/Part07-실전/실습36-위키개선/ 진도 폴더 준비
✓ clip-04에서 채운 llm-wiki/ 사용 · 정본 설계서(rag-index-design) 구현
  위키 페이지: NNN장
  원본 기사(raw): 1000편
  설계서: 있음 — 오늘 이걸 구현

위키 폴더는 환경에 따라 40-wiki/ 또는 wiki/로 잡힙니다. 둘 다 자동으로 인식하니 신경 안 써도 돼요. 진도 폴더에는 결정 가이드 다이어그램과 RAG 구현 레퍼런스 문서가 같이 복사됩니다.

2. STEP 1 — 하위 인덱스 만들기 (설치 0)

명령을 외워 치는 대신, 어떻게 쪼갤지를 말로 푸는 방식으로 시작합니다. 본인이 분할 알고리즘을 짜는 게 아니라 "타입별로 쪼개고 동명은 경로로 구분해"라고 요청하는 법을 익히는 단계예요.

복사용 입력입니다.

평면 index.md를 타입별 하위 인덱스로 쪼개줘. works/people/series/concepts
각각 {type}/index.md를 만들고, 각 줄 description은 그 페이지의 summary를
단일 출처로 써. 최상위 index.md는 카탈로그가 아니라 타입별 하위 인덱스로
보내는 라우터로 바꾸고, Dune(영화 works vs 시리즈 series)처럼 같은 이름이
두 타입에 있는 건 동명충돌 안내표로 정리하고 본문 링크는
[[works/Dune|Dune]]·[[series/Dune|Dune]]처럼 경로 한정 위키링크로 바꿔줘.

작업이 끝나면 이런 구조가 생깁니다.

✓ works/index.md   생성
✓ people/index.md  생성
✓ series/index.md  생성
✓ concepts/index.md 생성
✓ index.md → 라우터로 전환 (타입 링크 + 동명충돌 안내표)
✓ Dune → [[works/Dune]] / [[series/Dune]] 경로 한정 링크로 분리

확인할 건 두 가지예요. {type}/index.md가 타입별로 생겼는지, 그리고 최상위 index.md가 전체 카탈로그가 아니라 라우터로 바뀌었는지. Dune 같은 동명이 타입별로 갈라져 있으면 성공입니다.

여기서 하나 챙겨둘 게 있어요. 각 줄의 description을 그 페이지의 summary를 단일 출처로 쓰라고 한 데는 이유가 있습니다. 이 description이 나중에 Phase 3 RAG의 검색 품질을 좌우하거든요. summary를 본문 기반으로 충실히 써두면 시멘틱 검색이 잘 잡히고, 대충 써두면 RAG도 따라서 흐려집니다. ①에서 description을 제대로 써둔 게 ③의 정확도로 돌아온다는 말이 여기서 나와요.

3. STEP 2 — 개선 확인 (전/후 비교, 설치 0)

이제 전체를 읽지 않고 라우터 → 해당 타입 인덱스만 펼쳐서 답하게 해봅니다. 전(평면 전체 읽기)과 후(타입 인덱스만)의 차이를 직접 눈으로 보는 게 목적이에요.

복사용 입력입니다.

"봉준호 영화의 특징"을 답하는데, 최상위 index(라우터)를 먼저 읽고 관련
타입의 하위 인덱스만 펼쳐서 후보를 고른 다음 그 페이지들만 읽고 답해줘.
어떤 인덱스를 읽었는지랑 출처도 같이.

"봉준호"는 인물 질문이라 클로드코드가 people/index.md(+필요시 works)만 펼칩니다. 작품·시리즈 전체는 건드리지 않아요. 빠르고, 노이즈가 적고, 동명충돌도 안 생깁니다.

전 (평면 전체 읽기)후 (타입 인덱스만)
읽는 양전체 목록관련 타입만
속도느림빠름
동명충돌있음없음 (타입 분리)
설치00

여기까지가 설치 0으로 되는 개선입니다. 본인 위키가 어지간한 규모라면 여기서 멈춰도 괜찮아요. "느려지거나 빠지는 게 체감 안 된다"면 RAG는 아직 필요 없습니다. 그게 다음 단계로 갈지 말지를 가르는 기준이에요.

4. STEP 3 — 하이브리드 RAG 구현 (임베딩 키 필요)

설명 목록조차 버겁거나 의미 질문을 잡아야 하면 RAG로 넘어갑니다. 페이지를 임베딩해 시멘틱 검색을 얹고, 동시에 키워드(BM25) 검색을 돌려 점수를 병합해요. (설계서 Part B)

시멘틱 검색에는 Gemini API 키(GEMINI_API_KEY)가 필요합니다. Clip 4나 Part 6에서 이미 발급했으면 그대로 재사용하면 되고, 없으면 발급부터 합니다.

Gemini API 키 발급 (시멘틱 검색에만 필요)
─────────────────────────────────────
1. https://aistudio.google.com/apikey 접속
2. "Create API key" → 키 복사
3. .rag/.env 에 한 줄: GEMINI_API_KEY=...
   (키 파일은 git 무시 — 커밋 X)

① 인덱스 구축 — 복사용 입력입니다.

.rag/ 폴더에 RAG 인덱스를 만들어줘. 위키 페이지와 원본 소스를 2-tier
(요약=summary 한 청크, 본문=섹션별 청크)로 쪼개고, 타입(works/people/series/
concepts/sources)별 컬렉션으로 나눠서 Gemini gemini-embedding-001로 임베딩해
(색인은 RETRIEVAL_DOCUMENT). 청크마다 page·type·title·year·tier·sources
메타데이터를 붙여줘. 저장은 로컬 벡터DB로.

이 한 줄 요청 안에 RAG 구현 사양이 거의 다 담겨 있어요. 표로 풀어보면 이렇습니다.

항목값
인덱싱 단위2-tier 청킹 — 요약 tier(페이지 summary 1청크) + 본문 tier(섹션별 1청크). 원본 소스 1,000편도 같이 인덱싱(롱테일 회수)
컬렉션 분리타입별(works/people/series/concepts/sources) — Phase 1 하위 인덱스와 같은 네임스페이스
임베딩 모델gemini-embedding-001 (멀티링구얼 — 한/영 혼재 필수). 색인 RETRIEVAL_DOCUMENT / 쿼리 RETRIEVAL_QUERY task_type 구분
저장소로컬 경량 — ChromaDB / sqlite-vec (수천 벡터 규모). 위키 옆 .rag/에 저장, git 무시

왜 통째로 안 하고 2-tier로 쪼개느냐. 글을 통째로 숫자화하면 "대충 무슨 얘기"까지만 잡히기 때문이에요. 요약 tier(페이지 summary 1청크)는 빠르게 후보를 추리는 용도, 본문 tier(섹션별 1청크)는 정밀 회수·인용용입니다. 위키 페이지가 없는 롱테일 엔티티(조연 같은)도 원본 기사를 같이 인덱싱해두면 기사 내용으로 검색돼요.

② 하이브리드 검색 적용 — 복사용 입력입니다.

이제 질문을 받으면 키워드(BM25) 검색과 시멘틱(임베딩) 검색을 동시에 돌려서
점수를 병합하고, type/tier로 필터한 다음 상위 후보 페이지만 읽어서 답하게
해줘. 쿼리는 RETRIEVAL_QUERY로 임베딩하고, 타입 컬렉션에서 못 찾으면
sources로 폴백해. "씁쓸한 가족 드라마 같은 한국 영화"로 한번 검색해봐.

확인할 건 이겁니다. 키워드로는 안 잡히는 의미 질문이 시멘틱으로 회수되고, 정확한 제목·고유명사는 키워드로 보강됩니다. 둘을 병합한 결과로 답이 나오고 출처가 인용되면 성공이에요. 타입 컬렉션에서 결과가 빈약하면 sources 컬렉션으로 폴백해서, 자체 페이지가 없는 엔티티도 원본 기사로 회수합니다.

쿼리가 들어왔을 때 안에서 도는 순서는 이렇습니다. 외울 건 없고, 한 번 훑어두면 흐름이 잡혀요.

질문
 → ① alias 정규화 + 의도/타입 추론  ("Parasite"→["Parasite","기생충"])
 → ② 하이브리드 검색 (시멘틱 + BM25 + type/tier 필터)
 → ③ 리랭크 (상위 k)
 → ④ 후보 페이지만 펼쳐 읽고 [[링크]] 1홉 보강
 → ⑤ 근거로만 답 + 정본 인용 + provenance

여기서 RAG가 바꾸는 건 '후보 찾기'(②)뿐이에요. 읽고·인용하고·근거 대는 원칙은 Clip 3·4에서 세운 그대로입니다. 검색만 똑똑해질 뿐, 답하는 방식은 그대로예요.

정직 가드 — 하이브리드도 만능은 아닙니다. 결과는 세 가지에 좌우돼요. 가져오는 개수(top-K), 임베딩 모델 품질(한국어면 멀티링구얼 필수), 그리고 가장 결정적인 summary 품질. Phase 1에서 description(summary)을 본문 기반으로 충실히 써둔 게 여기서 정확도로 돌아옵니다. "토큰 N배 절감·recall 몇 %" 같은 정량 단정은 하지 마세요. 그런 수치는 출처가 약합니다. 대신 전/후를 본인 볼트로 직접 측정해서 체감으로 판단하는 게 정직한 방법이에요.

5. 경계 정리 — 내 규모는 어디?

마지막으로 세 단계의 경계를 한 번에 정리합니다.

평면 전체 읽기하위 인덱스하이브리드 RAG
속도느림빠름빠름
동명충돌있음해소해소(타입 컬렉션)
의미 질문약함약함강함
롱테일 회수누락페이지 있어야소스 청크로 회수
설치00임베딩·벡터DB

선 긋기는 이렇게 잡아두면 됩니다. 하위 인덱스(Phase 1·2)는 설치 0으로 동명충돌과 tiered-read 낭비를 해소하니, 어지간한 규모는 여기서 충분. 하이브리드 RAG(Phase 3)는 의미 질문·롱테일 회수가 필요하거나 설명 목록조차 버거운 규모. 더 커지면 관리형(Gemini File Search) 또는 Supabase pgvector(CH03에서 또 만남)로 넘어갑니다.


결과물

이번 클립이 끝나면 위키 본체와 진도 기록 양쪽에 결과가 남습니다.

결과물위치설명
works/index.md 외 4종~/llm-wiki/40-wiki/{type}/타입별 하위 인덱스(계층 MOC)
index.md (라우터)~/llm-wiki/40-wiki/카탈로그 → 라우터 전환 + 동명충돌 안내표
.rag/ (선택)~/llm-wiki/.rag/RAG 인덱스 — 색인·검색 스크립트 + 로컬 벡터 저장소 (git 무시)
README.md실습36-위키개선/무엇을 고쳤나 + 선 긋기 + 회고

완료 또는 /wrap을 입력하면 스킬이 정리합니다. 하위 인덱스가 타입별로 생겼는지, 전/후 차이를 봤는지 검증하고 50-my-work/Part07-실전/실습36-위키개선/README.md를 자동 작성해요. progress.json의 practice_completed에 "실습 36"이 추가됩니다.

Phase 3(RAG)은 키 여건에 따라 선택입니다. 못 했어도 Phase 1·2만 완료하면 클립 목표는 달성으로 봐요. RAG 인덱스(.rag/)가 있으면 같이 검증하고, 없으면 "Phase 1·2만으로도 OK"로 넘어갑니다.

마무리 회고는 자유 입력이에요. 본인 자료 규모를 떠올리며 한 줄 적어두세요.

하위 인덱스(설치 0)로 충분한가요, 아니면 하이브리드 RAG까지 가야 하나요?
내 자료 규모로 한 줄 적어주세요.

이 한 줄이 README의 "핵심 발견 / 회고"에 기록됩니다.


자주 막히는 포인트

증상원인해결
"검색 명령을 직접 쳐야 하나요?"명령어를 외워야 하는 줄 앎아니요. 클로드코드한테 "타입 인덱스만 펼쳐 답해"·"하이브리드로 검색해"라고 하면 안에서 알아서 합니다
"Gemini 키가 없어요"Phase 3에만 필요한 걸 모름시멘틱 검색에만 필요해요. Phase 1·2(하위 인덱스)는 키 없이 됩니다. https://aistudio.google.com/apikey에서 발급
"하위 인덱스랑 RAG는 따로인가요?"둘을 별개 기술로 봄타입(works/people…)이 곧 RAG 컬렉션이라 하위 인덱스가 RAG의 기초예요. 같은 네임스페이스 공유
"Dune이 영화/시리즈 섞여요"평면 링크라 비결정적경로 한정 링크 [[works/Dune]]·[[series/Dune]] + 타입 컬렉션 분리로 해소됨
"한국어 검색이 이상해요"임베딩 모델·task_type 불일치멀티링구얼(gemini-embedding-001)로, 색인은 RETRIEVAL_DOCUMENT·쿼리는 RETRIEVAL_QUERY로 맞춰야 함
"키워드만/의미만 쓰면 안 되나요?"한쪽만으로 될 거라 기대고유명사는 키워드, 모호 질문은 시멘틱이 강해서 둘을 병합해야 서로 약점을 메워요
첫 색인 중 429 / rate limitGemini 무료 티어 분당 요청 한도정상입니다. 잠시 기다렸다 재실행하면 변경분만 이어서 색인(증분). throttle/백오프가 안에서 처리
벡터DB 설치가 실패Python 버전 문제ChromaDB는 최신 Python을 아직 미지원할 수 있어요. 한 단계 낮은 버전(예: 3.13)으로 가상환경 만들기
gemini-embedding-001을 다른 모델로 바꿈더 새 모델이 나아 보임함부로 바꾸지 마세요. 임베딩 공간이 비호환이라 전체 재색인이 필요하고 task_type 동작도 달라집니다
"회사 자료는 수십만 건인데요"로컬 벡터DB로 될지 불안그건 관리형(File Search)·pgvector로 갈 신호예요. CH03 Supabase에서 또 만납니다
RAG가 엉뚱한 페이지를 가져옴summary가 부실함Phase 1에서 description(summary)을 본문 기반으로 다시 충실히 채우면 정확도가 올라가요
.rag/ 폴더가 git에 올라감gitignore 누락.rag/는 파생물이라 git 무시 대상. 없어도 index.md tiered-read로 자동 폴백되니 재생성 가능

막혔어요 / 도와줘로 도움을 요청할 수 있습니다.


다음 클립

CH 02 LLM Wiki 마무리

CH 02 세 클립에서 본인이 한 일은 이렇습니다.

Clip했던 일
3위키 뼈대 세우기 — 3계층(raw/wiki/schema) + CLAUDE.md
4채우고 질문하기 — 1,000편 컴파일 + query, 한계 확인
5한계 고치기 — 하위 인덱스(설치 0) + 하이브리드 RAG

마크다운 + 클로드코드 + 가벼운 임베딩만으로 LLM Wiki를 마무리했어요. 기억할 건 "인덱스로 먼저 고치고, 모자라면 RAG"라는 순서, 그리고 "타입이 곧 컬렉션"이라 둘이 같은 네임스페이스를 공유한다는 연결입니다. 느려지거나 빠지면 그게 다음 단계로 갈 신호예요. 숫자보다 체감으로 판단하세요.

다음 클립

→ 유튜브 트렌드 대시보드 — PRD와 데이터 설계

다음 클립부터는 Part 7의 세 번째이자 가장 큰 프로젝트, 유튜브 트렌드 대시보드입니다. 환경(워크스페이스) → 지식(LLM Wiki) → 서비스로 규모가 한 단계 더 커져요. 첫 클립에서는 바로 코드부터 짜는 대신 PRD와 데이터 설계를 먼저 잡습니다. 그리고 오늘 만진 벡터DB가 거기서 Supabase pgvector라는 이름으로 다시 나와요. 도구만 다르고 원리는 같습니다.

유튜브 대시보드 — PRD·데이터 설계

PRD와 데이터 모델 설계

Part 7 · Clip 6설계

이 클립에서 만드는 것

Part 7의 세 번째이자 마지막 프로젝트입니다. 워크스페이스(첫 프로젝트)를 짓고, LLM Wiki(두 번째 프로젝트)로 지식을 쌓았으니, 이번엔 밖으로 나가는 서비스를 만들 차례예요. 여러 유튜브 채널의 영상 성과를 매시간 수집해서, "채널 평균보다 몇 배나 터졌는지"를 숫자로 잡아내는 분석 대시보드. 이름은 TrendBoard입니다.

다만 이번 클립에서 코드를 짜지는 않습니다. 오늘은 설계와 셋업까지예요. 큰 서비스일수록 곧장 만들기 시작하면 중간에 무너집니다. 그래서 바이브코딩의 순서를 그대로 따라요 — PRD(제품 정의)를 먼저 쓰고, 데이터 모델을 정하고, 필요한 키를 발급받고, DB 뼈대를 깐 다음에야 다음 클립에서 코드를 생성합니다.

이번 프로젝트가 앞의 두 개와 크게 다른 점이 하나 있어요. 이번엔 진짜 키가 필요합니다. Wiki까지는 본인 컴퓨터 안에서 다 끝났지만, 유튜브 데이터를 가져오고 AI 요약을 붙이고 시계열을 저장하려면 외부 서비스가 붙어요. 대신 결과물은 진짜 제품급입니다. 부담스러운 키 발급은 이 클립에 몰아서 한 번에 끝내요.

오늘 한 일과 안 한 일을 먼저 정리하면 이렇습니다.

단계하는 일어느 클립
PRD·구체화·키·스키마설계도 + 키 발급 + DB 깔기오늘(Clip 6) — 여기까지
코드 생성·연결화면·수집·Outlier 계산 만들기다음 클립(Clip 7)
배포·자동화Vercel 배포 + 매시간 cronClip 8

이번 클립에서 할 일은 네 단계입니다. /show-me-the-prd로 PRD 4종 만들기 → 공통 사양으로 구체화 → 키 2종 발급 + Supabase 연결 → 스키마 적용. 여기까지 끝내면 다음 클립의 코드 생성이 누구 환경에서나 같은 결과를 내도록 출발선이 정리됩니다.


핵심 개념

단순 요약 다이제스트가 아니라 "성과 분석" 도구입니다

먼저 이 앱이 무엇을 만드는 건지 정확히 잡고 갑시다. 흔히 떠올리는 "관심 채널 새 영상 모아보기"와는 결이 완전히 다릅니다.

단순 다이제스트TrendBoard
보여주는 것새 영상 목록·요약Outlier Score·채널 평균 배율·V/S Ratio·트렌드
저장 방식파일 한 장Supabase에 매시간 시계열 누적
필요한 것없음백엔드 + 키 2종(YouTube·Gemini) + Supabase 연결

한 문장으로 줄이면 **"평소를 알아야 터졌다를 안다"**예요. 어떤 영상이 평소보다 몇 배 터졌는지 판단하려면 그 채널의 "평소 조회수"를 알아야 하고, 평소를 알려면 조회수를 매시간 계속 쌓아야 해요. 그래서 단순 파일 저장으로는 안 되고, 시계열을 누적하는 백엔드(Supabase)가 있어야 합니다. 두 번째 프로젝트 LLM Wiki가 지식을 쌓아서 가치를 냈던 것과 같은 결이에요. 누적이 있어야 비교가 생깁니다.

Outlier Score — 이 앱의 심장

이 앱이 정렬·랭킹의 기준으로 쓰는 점수입니다. 공식이 정확해야 다음 클립에서 만든 화면이 레퍼런스 앱과 같은 순서로 영상을 보여줘요. 여기서 한 번 제대로 익혀두면 구체화 단계에서 헷갈릴 일이 없습니다.

지표식뜻
Ch. Avg 배율views / 채널평균채널 평균보다 몇 배 (예: 2.2x)
V/S Ratioviews / 구독자 × 100구독자 밖으로 얼마나 퍼졌나 (%)
Outlier Score(views / 채널평균) × 10 + V/S Ratio정렬 기준 점수
const views = row.views;
const avg   = row.channel_avg_views;   // 채널 평균 조회수
const subs  = row.subscriber_count;

const chAvgMultiplier = avg > 0 ? (views / avg) : 0;        // 1.6x, 2.2x
const vsRatio         = subs > 0 ? (views / subs) * 100 : 0; // 32.1%

// ★ 실제 공식: 배율×10 + V/S Ratio  (avg가 0이면 V/S Ratio만)
const outlierScore = avg > 0 ? (views / avg) * 10 + vsRatio : vsRatio;

const isOutlier     = chAvgMultiplier >= 1.5;  // 채널 평균 1.5배 이상
const isMegaOutlier = chAvgMultiplier >= 5.0;  // 5배 이상 (Top 0.1%)

여기서 두 가지를 꼭 기억하세요. 첫째, Outlier Score는 배율만이 아닙니다. (views/avg)×10에 V/S Ratio를 더해요. 이걸 빼고 "배율×10"으로만 만들면 실제 앱과 정렬 순서가 어긋납니다. 같은 배율이어도 구독자 대비 더 멀리 퍼진 영상이 점수가 높은 거죠. 둘째, 0으로 나누기 방지가 필수입니다. 채널 평균(avg_views)이나 구독자 수가 0이면 그 항을 0으로 처리해요. 새로 등록한 채널은 수집 직후 avg_views가 0이라 V/S Ratio만으로 점수가 잡히는데, 수집이 쌓이면 자동으로 채워지니 걱정 안 해도 됩니다.

데이터 모델 — 7테이블 + video_details 뷰

이 앱이 다루는 데이터 구조입니다. 다음 클립의 코드는 결국 이 모델 위에서 돌아가요.

channels (채널)
 ├── videos (영상)
 │    ├── video_snapshots (매시간 지표 — 시계열)
 │    └── content_summaries (AI 요약 + 키워드 + 태그, 영상당 1개)
 ├── trend_topics (키워드 트렌드 집계)
 ├── strategy_results (AI 전략 결과)
 └── admin_settings (Gemini 키·모델·프롬프트·비번 설정)

 video_details (뷰) = videos + channels + 최신 snapshot + content_summaries
                    → 프론트 분석 화면은 이 뷰 하나만 읽는다

테이블이 7개지만, 가장 중요한 건 마지막의 video_details 뷰입니다. 이건 테이블이 아니라 여러 테이블을 미리 조인해둔 "단일 소스"예요. 화면 4페이지(Overview·Videos·Outliers·Trends)가 전부 이 뷰 하나만 읽어서 그려집니다. 뷰가 없거나 컬럼명이 어긋나면 어떤 화면도 데이터가 안 뜨는 이유죠.

왜 snapshot을 따로 분리하나요? 같은 영상의 조회수를 매시간 별도 행으로 쌓아야 시계열(성장률)과 "현재값 대비 채널 평균(Outlier)"을 계산할 수 있어서입니다. 영상 한 줄에 조회수를 덮어쓰면 평소가 사라져요.

그리고 이 뷰에서 컬럼명 두 개를 절대 바꾸면 안 됩니다.

헷갈리기 쉬운 곳올바른 컬럼명주의
영상 PKvideo_idid가 아님 — 뷰에서 v.id AS video_id
스냅샷 시각snapshot_atcollected_at이 아님 — 뷰에서 별칭 부여

프론트가 key={v.video_id}로 화면을 그리니까, 이 두 컬럼명이 어긋나면 화면이 그대로 깨집니다. 구체화 단계에서 이걸 명시적으로 박아두는 이유가 바로 이거예요.

정직성 — kkirikkiri가 코드를, 클로드코드가 연결을

이 프로젝트의 역할 분담을 미리 정리해둡니다. 다음 클립에서 코드는 /kkirikkiri가 생성하지만, "한 방에 백엔드까지 다 만들어진다"는 아닙니다. 코드 생성은 kkirikkiri가 맡고, 그 코드를 실제 키·DB·배포에 연결하고 운영하는 건 클로드코드 몫이에요. 그래서 오늘 키와 스키마를 미리 준비해둡니다.

그리고 키 취급 원칙 하나를 처음부터 못 박아둡니다. service_role 키와 YouTube·Gemini 키는 백엔드에만 둡니다. 프론트엔드나 깃허브에는 절대 노출하지 않아요. YouTube API에서 search.list도 쓰지 않습니다(한 번에 100 units라 쿼터가 금방 터져요). 목업·하드코딩 데이터로 "완성"이라고 우기지도 않습니다 — 실제 YouTube API + Supabase 연동만 인정해요. 이 원칙들은 다음 클립에서 코드가 지켜야 할 가드레일이라, 설계 단계인 오늘 미리 알고 시작하는 게 맞습니다.


진행 흐름

오늘은 영상에서 한 줄 입력하면 본인도 같은 줄을 따라 입력하고 결과를 함께 확인하는 방식으로 갑니다. 네 단계예요. 작업 폴더와 공통 사양은 자동 셋업이 미리 깔아주니, 영상을 보면서 단계별로 따라오시면 됩니다.

1. 작업 폴더와 공통 사양 자동 준비

강의 워크스페이스에서 클로드코드를 켜고 시작합니다. 스킬이 호출되면 두 폴더가 자동으로 준비돼요.

✓ 50-my-work/Part07-실전/실습37-유튜브설계/ 진도 폴더 준비
✓ trendboard/ 앱 폴더 준비 (코드는 다음 클립에서 생성)
✓ 사양 문서 + schema.sql을 trendboard/_spec/에 복사
  오늘 결과물: PRD 4종 + 키 2종(YouTube·Gemini) + Supabase 스키마

여기서 폴더 구조를 한 번 짚고 갑니다. 앱 본체는 진도 폴더가 아니라 별도의 ~/trendboard/에 짓습니다. 두 번째 프로젝트 LLM Wiki를 ~/my-wiki에 따로 지었던 것과 같은 규칙이에요. 큰 프로젝트는 본체를 독립 폴더에 두고, 진도 기록(README)만 50-my-work/ 안에 남기는 거죠.

~/trendboard/                  ← 앱 본체 (다음 클립에서 코드가 채워짐)
└── _spec/                     ← 공통 사양 문서 + schema.sql (자동 복사됨)

~/fastcampus-cc/50-my-work/Part07-실전/실습37-유튜브설계/
└── README.md                  ← 진도 기록 (완료 시 자동 작성)

_spec/에 들어 있는 게 이 클립의 숨은 주인공입니다. 모든 수강생이 동일한 사양으로 출발하도록 미리 깔아둔 공통 컨텍스트예요. 이게 왜 중요한지는 곧 Phase 2에서 드러납니다.

2. STEP 1 — /show-me-the-prd로 PRD 4종 만들기

바이브코딩은 PRD부터입니다. 그런데 PRD를 직접 손으로 쓰진 않아요. 스킬에 시킵니다. Part 6에서 스킬에 일을 맡겼던 것과 똑같아요 — 오늘은 /show-me-the-prd가 PRD를, 다음 클립의 /kkirikkiri가 코드를 맡습니다.

복사용 입력입니다.

/show-me-the-prd 유튜브 채널들 영상 성과를 매시간 수집해서 '채널 평균 대비 터진 영상(Outlier)'을 자동으로 잡아내고, 트렌드 키워드까지 보여주는 분석 대시보드를 만들고 싶어.

스킬이 질문 5~6개를 던집니다. 답의 요지는 이렇습니다.

사용자가 누구?      → 특정 분야 채널을 추적하는 나 (크리에이터/마케터/기획자)
핵심 기능은?        → 채널 등록 · 매시간 수집 · Outlier 감지 · AI 요약 · 트렌드 키워드
안 만드는 것은?     → 로그인/회원가입 · 결제 · 멀티플랫폼(X·Threads) · 댓글 감성분석

답을 마치면 PRD 4종(제품·데이터·단계·스펙)이 생성됩니다. 여기서 확인할 건 범위가 Outlier + 트렌드로 좁혀졌는지예요. 욕심내서 기능을 다 넣으려 하지 마세요. "안 만드는 것"을 함께 알려주는 게 범위가 새는 걸 막는 핵심입니다. 로그인·결제·멀티플랫폼은 개인용 단계에선 필요 없으니 처음부터 빼두세요.

| 확인 | PRD 4종 생성 / 범위가 Outlier + 트렌드로 좁혀짐(기능 욕심 X) / "안 만드는 것" 목록 포함 |

3. STEP 2 — PRD 구체화: 공통 사양으로 수렴 ★

이 단계가 오늘의 핵심입니다. 왜 그런지 먼저 짚을게요.

/show-me-the-prd는 사람마다 다른 PRD를 만듭니다. 같은 주제를 던져도 본인이 답한 내용에 따라 공식·함수 이름·뷰 컬럼이 제각각으로 나와요. 잘 만든 이상형일 뿐, 실제로 동작하는 사양은 아니라는 뜻이죠. 이걸 그대로 다음 클립의 kkirikkiri에 넣으면 누군 되고 누군 안 되는 상황이 생깁니다.

그래서 자동 셋업이 미리 깔아둔 **공통 사양(trendboard/_spec/)**으로 수렴시킵니다. PRD를 만드는 경험은 각자 하되, 빌드에 들어갈 사양은 하나로 통일하는 거예요. 그래야 다음 클립에서 kkirikkiri가 누구 환경에서나 같은 결과를 뽑아냅니다.

복사용 입력입니다.

방금 만든 PRD에 trendboard/_spec/의 데이터모델·기술스택·BUILD-PROCESS 실제 사양을 박아줘 — video_details 뷰(컬럼 video_id·snapshot_at 보존), Outlier Score=(views/avg)*10+vsRatio, AI 태깅은 generate-tags(summarize 아님), 체인은 collect-data→generate-tags→extract-trends. kkirikkiri에 줄 통합 사양서로 정리해줘.

클로드코드가 PRD와 _spec/ 문서를 대조해서 하나의 통합 사양서로 정리해줍니다. 이때 박히는 핵심 사양은 이런 것들이에요.

항목박아야 할 실제 사양
Outlier Score 공식(views/avg)*10 + vsRatio (V/S Ratio 더하기 빠지면 정렬 순서 달라짐)
뷰 컬럼명video_id, snapshot_at 보존 (별칭)
AI 태깅 함수generate-tags (summarize-videos는 레거시, 만들지 않음)
데이터 체인collect-data → generate-tags → extract-trends(7일/30일)
화면 구성7페이지 (Overview·Channels·Videos·Outliers·Trends·Strategy·Admin)

| 확인 | Outlier Score 공식에 +vsRatio 포함 / AI 태깅 generate-tags 명시 / 뷰 컬럼명 보존 / 화면 7 + 체인 정리됨 |

여기가 오늘의 노하우 지점이에요. /show-me-the-prd가 만든 멋진 PRD를 실제 동작 사양으로 한 번 "조이는" 작업입니다. 이 한 단계가 다음 클립의 성패를 가릅니다.

4. STEP 3 — 키 2종 발급 + Supabase 연결

진입장벽 구간입니다. 천천히 같이 가요. 한 가지 다행인 건 — Supabase는 클로드코드가 MCP(커넥터)로 직접 만든다는 점이에요. 가입·프로젝트 생성·키 연결까지 대신 해주니까, 본인이 손으로 받아야 하는 건 YouTube·Gemini 2종뿐입니다.

그리고 전부 각자 본인 계정·본인 프로젝트로 발급하세요. 영상에 나온 키를 같이 쓰면 안 됩니다 — 내 대시보드는 내 DB에 데이터를 쌓아야 의미가 있으니까요.

#어디서받는 것메모
1Supabase (MCP)"trendboard 프로젝트 만들어줘" → 클로드코드가 생성URL·anon 키 자동 연결 / service_role은 자동 주입
2Google CloudYouTube Data API v3 Enable → API 키YOUTUBE_API_KEY (손으로)
3Google AI StudioGet API key → Create API keyGEMINI_API_KEY (손으로)

Supabase는 클로드코드에게 이렇게 부탁합니다.

Supabase에 trendboard 프로젝트를 Seoul 리전으로 만들고,
Project URL과 anon(publishable) 키를 .env.local에 넣어줘.

클로드코드가 MCP로 프로젝트를 생성(보통 1분 내 활성화)하고, URL과 anon 키를 프론트 환경변수(VITE_SUPABASE_URL, VITE_SUPABASE_PUBLISHABLE_KEY)로 자동 작성합니다. Supabase 커넥터가 /mcp에 없으면 수동 폴백으로 가면 됩니다(_spec/의 사전준비 문서 §1 참고).

YouTube 키는 Google Cloud에서 받습니다. 프로젝트를 만들고 → API 라이브러리에서 YouTube Data API v3를 Enable → 사용자 인증 정보에서 API 키를 생성하면 끝이에요. Gemini 키는 Google AI Studio에서 Get API key로 받습니다.

키가 들어가는 위치를 정확히 알고 가는 게 중요합니다.

키들어가는 곳노출
Supabase URL / anon 키프론트 .env.local공개 가능
Supabase service_role 키Edge Function (자동 주입)비밀
YOUTUBE_API_KEYEdge Function Secrets비밀
GEMINI_API_KEY앱 Admin 페이지 → admin_settings 테이블비밀

service_role 키는 지금 메모만 해두고, 절대 프론트나 깃허브에 넣지 않습니다. 이건 Supabase가 Edge Function에 자동으로 주입하니 따로 발급하거나 설정할 필요도 없어요. Gemini 키는 좀 특이한데, 코드가 아니라 앱 실행 후 Admin 페이지 UI에서 등록합니다 — 재배포 없이 키를 교체할 수 있게 한 설계예요. 어쨌든 두 키 모두 오늘은 발급해서 메모까지만 해두면 됩니다.

| 확인 | YouTube·Gemini 키 메모 완료 / Supabase 프로젝트 MCP 생성됨 / service_role은 백엔드 전용(자동 주입)임을 인지 |

5. STEP 4 — schema.sql 적용으로 DB 뼈대 깔기

키를 받았으면 DB 뼈대를 깝니다. _spec/에 복사된 schema.sql을 본인 Supabase에 적용하면 돼요.

trendboard/_spec/schema.sql을 내 Supabase에 MCP 마이그레이션으로 적용해줘. 테이블 7개랑 video_details 뷰가 생겨야 해. 뷰 컬럼명(video_id·snapshot_at)은 바꾸지 마.

클로드코드가 MCP 마이그레이션으로 스키마를 적용합니다. 적용이 끝나면 Supabase의 Table Editor에서 직접 확인하세요. 테이블 7개와 video_details 뷰가 생겼는지 보면 됩니다. 데이터가 아직 없어도(빈 결과) 에러 없이 조회되면 성공이에요.

-- Supabase SQL Editor에서 확인
select video_id, snapshot_at from video_details;
-- → 빈 결과라도 에러 없이 나오면 OK

| 확인 | Table Editor에 7테이블 + video_details 뷰 존재 / select video_id, snapshot_at from video_details 에러 없음 |

이걸로 오늘의 설계와 셋업이 끝납니다. 다음 클립에서 kkirikkiri가 이 뼈대 위에 화면과 수집 로직을 얹어요.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
PRD 4종~/trendboard/_prd/ (또는 진도 폴더)제품·데이터·단계·스펙 정의
통합 사양서~/trendboard/_spec/통합-사양서.mdPRD + 공통 사양 수렴 — 다음 클립 kkirikkiri 입력용
_spec/ 공통 사양~/trendboard/_spec/데이터모델·기술스택·BUILD-PROCESS + schema.sql
YouTube·Gemini 키메모장 (안전한 곳)YOUTUBE_API_KEY, GEMINI_API_KEY
Supabase 프로젝트본인 Supabase 계정7테이블 + video_details 뷰 적용 완료
README.md50-my-work/Part07-실전/실습37-유튜브설계/진도 기록 (자동 작성)

완료 또는 /wrap을 입력하면 스킬이 정리합니다. 50-my-work/Part07-실전/실습37-유튜브설계/README.md가 자동으로 작성되고, progress.json의 practice_completed에 "실습 37"이 기록돼요. 앱 본체(~/trendboard/)는 별도 폴더에 두고 진도 기록만 50-my-work/ 안에 남기는 규칙은 두 번째 프로젝트 LLM Wiki 때와 똑같습니다.

WRAP 마지막에 회고 한 줄을 적습니다 — "단순 요약 다이제스트와 이 분석 도구의 차이를 한 줄로." 이 한 줄이 다음 클립에서 본인이 뭘 만드는지 다시 잡아줍니다.


자주 막히는 포인트

증상원인해결
키 발급이 너무 많아 부담됨외부 서비스 첫 연결이 클립에서 몰아서 끝내면 다신 안 합니다. _spec/ 사전준비 문서 순서대로 천천히
YouTube API 403API가 Enable 안 됨Google Cloud에서 YouTube Data API v3를 Enable 했는지 확인
service_role 키 어디 쓰는지 모름키 위치 혼동지금은 메모만. 백엔드(Edge Function)에 자동 주입되니 프론트·깃엔 절대 금지
스키마 적용이 안 됨Supabase 커넥터 미연결/mcp에서 Supabase 연결 확인. 안 되면 SQL Editor에 schema.sql 직접 붙여넣기
video_details 조회 시 컬럼 에러뷰 컬럼명이 바뀜v.id AS video_id, collected_at AS snapshot_at 별칭 유지. 컬럼명 변경 금지
Gemini 키를 .env에 넣어야 하나?키 위치 오해아니요. Gemini 키는 앱 실행 후 Admin 페이지 UI에서 등록 (admin_settings)
Supabase 프로젝트가 안 만들어짐MCP 커넥터 없음/mcp에서 Supabase 연결부터. 폴백은 supabase.com에서 New project(Seoul) 수동 생성
PRD에 기능을 더 넣고 싶음범위 욕심1차는 Outlier + 트렌드만. 알림·멀티플랫폼은 PRD의 "안 만드는 것"에 남겨둠
구체화 후에도 공식이 "배율×10"만 나옴+vsRatio 누락통합 사양서에 (views/avg)*10 + vsRatio 명시 확인. 안 그러면 정렬 순서가 달라짐
7D 트렌드가 비어 보일까 걱정미래 함정 미리 인지Trends는 published_at 기준 집계. 다음 클립에서 다룰 내용이니 지금은 스키마만
summarize-videos로 만들어야 하나레거시 함수 혼동AI 태깅은 generate-tags. summarize-videos는 레거시 — 만들지 않음

막혔어요 또는 도와줘로 도움을 요청할 수 있습니다.


다음 클립

→ 대시보드 만들기 — 터진 영상 잡아내는 화면

다음 클립에서는 오늘 깔아둔 설계도 위에 진짜 코드를 얹습니다. 정리한 통합 사양서를 /kkirikkiri에 넣어 7페이지 화면과 수집 Edge Function을 생성하고, YouTube에서 실제 영상을 가져와 매시간 스냅샷을 쌓아요. 그런 다음 프론트에서 Outlier Score를 계산해 "터진 영상"을 화면에 띄웁니다. 코드 생성은 kkirikkiri가, 키·DB 연결과 검증은 클로드코드가 맡습니다. 오늘 사양을 정확히 조여둔 만큼, 다음 클립의 결과는 레퍼런스 앱과 같은 모습으로 나올 거예요.

대시보드 만들기

터진 영상 잡아내는 화면

Part 7 · Clip 7

이 클립에서 만드는 것

유튜브 대시보드는 Part 7의 세 번째 프로젝트인데, 이번 클립이 그 본론이에요. 지난 clip-06에서 PRD 4종을 뽑아 "실제 동작 사양"으로 못박았죠. Outlier Score 공식, video_details 뷰 컬럼명, Edge Function 6종, 체인 구조까지 박힌 통합 사양서 한 장이 손에 있을 거예요. 오늘은 그 위에 실제 코드를 얹고, 본인 Supabase에 연결해서 굴립니다.

끝 그림은 한 문장이에요. "이 영상은 채널 평균보다 2.2배 터졌다"가 숫자로 뜨는 대시보드가 본인 노트북에서 돈다. 채널 5개를 등록하면 매시간 수집된 조회수가 쌓이고, Outliers 페이지가 Score 내림차순으로 정렬해 보여줘요. 영상마다 Gemini가 한 줄 요약과 키워드 배지를 달아줍니다.

Before (clip-06 끝)After (clip-07 끝)
통합 사양서 한 장 + 빈 Supabase 뼈대본인 데이터가 쌓이고 Outlier가 숫자로 뜨는 화면
키 발급(YouTube·Gemini)만 손에 있음키가 백엔드에 연결돼 수집·요약이 실제로 돈다
"어떻게 만들지" 머릿속 설계로그 보고 고치는 디버깅 경험

오늘 흐름의 뼈대는 생성 → 연결 → 수집 → 검증 입니다. 코드는 /kkirikkiri가 통째로 만들고, 그걸 본인 Supabase에 연결하고 굴리며 고치는 건 클로드코드와 함께해요. 그래서 이번 클립에서 가장 중요한 한 줄을 먼저 박아둘게요.

코드 생성은 kkirikkiri, 연결·운영은 클로드코드. 한 방에 백엔드·배포까지 완성되는 마법 버튼은 없습니다. 만든 걸 굴리며 고치는 그 단계가 바이브코딩의 본체예요.

이번 클립에서 할 일은 6단계입니다. kkirikkiri로 코드 생성 → Supabase 연결 → Edge Function 배포 + Gemini 키 → 채널 등록·수집 → Outlier 대시보드 검증 → Gemini 요약·UI 개선.


핵심 개념

kkirikkiri는 "한 방 완성 버튼"이 아니다

이게 오늘의 정직성 가드이자 가장 중요한 개념이에요. /kkirikkiri는 자연어 한 문장으로 에이전트 팀을 짜서 코드를 병렬로 생성합니다. 프론트 7페이지와 Edge Function 6종을 나눠 받아 동시에 써내려가요. 강력하긴 한데, 할 수 있는 것과 못 하는 것이 분명히 갈립니다.

kkirikkiri (생성)클로드코드 (연결·운영)
하는 일프론트 7페이지 + Edge Function 6종 코드 + schema.sql 마이그레이션 작성Supabase 연결·배포·수집·디버깅
못 하는 일인프라 연결, 키 등록, 체인 검증, 로그 기반 수정(코드를 처음부터 통째로 쓰는 건 kkirikkiri 몫)
결과로컬에 코드는 있지만 아직 아무것도 안 굴러감실제 데이터가 쌓이고 화면이 그려짐

kkirikkiri가 만든 코드가 처음부터 완벽히 돌지 않아도 정상이에요. 특히 Edge Function 체인과 video_details 뷰 타입은 연결한 다음에 고치게 됩니다. 불완전한 생성물을 연결하며 고치는 그 단계가 진짜 실습이고, 바이브코딩의 묘미도 거기 있어요.

데이터 흐름 — collect-data 한 콜이 진입점

이 앱의 데이터는 백엔드(Edge Function)가 만들어 PostgreSQL에 쌓고, 프론트가 그걸 읽습니다. 핵심은 자동화 진입점이 collect-data 하나라는 거예요. 이 함수 하나만 부르면 태깅·트렌드까지 HTTP 체인으로 연쇄됩니다.

collect-data        : channels(활성) → YouTube playlistItems + videos
                      → videos UPSERT + video_snapshots INSERT → 채널 avg_views 재계산
   │  (HTTP 체인, Bearer service_role)
   ├─ generate-tags     : 요약 없는 영상 → Gemini → content_summaries UPSERT  ※ summarize-videos 아님
   ├─ extract-trends {7}: 키워드 빈도·성장률 집계 → trend_topics
   └─ extract-trends {30}

generate-strategy   : (별도 트리거) video_details outlier 상위 + trend_topics → Gemini → strategy_results

Edge Function은 6종입니다. fetch-channel(채널 등록), collect-data(수집 진입점), generate-tags(AI 요약·태깅), extract-trends(키워드 집계), generate-strategy(전략), manage-settings/verify-admin(설정·로그인). 여기서 함정 하나를 미리 짚어둘게요. AI 태깅 함수는 generate-tags이고, summarize-videos는 레거시입니다. 체인에 연결되는 건 generate-tags예요. kkirikkiri가 가끔 옛 이름으로 만드는데, 그러면 연결 단계에서 바로잡으면 됩니다.

video_details 뷰 — 프론트가 읽는 단일 소스

프론트의 분석 4페이지(Overview·Videos·Outliers·Trends)는 테이블을 직접 조인하지 않아요. video_details라는 뷰 하나를 select로 읽어서 화면을 그립니다. 영상 + 채널 + 가장 최신 스냅샷 + AI 요약을 미리 조인해 둔 뷰예요.

이 뷰에서 컬럼명 두 개가 결정적입니다. 여기가 어긋나면 화면이 통째로 깨져요.

video_details 뷰의 핵심 컬럼명
─────────────────────────────
영상 PK     : id  ❌  →  video_id  ✅   (뷰에서 v.id AS video_id)
스냅샷 시각 : collected_at  ❌  →  snapshot_at  ✅  (collected_at AS snapshot_at)

프론트가 key={v.video_id}로 리스트를 그리거든요. 그래서 뷰 컬럼명이 id나 collected_at으로 어긋나 있으면 select는 통과해도 화면이 빈칸이 됩니다. clip-06 사양서에 이 두 이름을 박아둔 이유가 이거예요. 연결 단계에서 select video_id, snapshot_at from video_details가 에러 없이 나오는지 꼭 확인하세요.

Outlier Score 공식 — 단순 "배율 × 10"이 아니다

대시보드의 심장은 Outlier Score입니다. "채널 평균보다 몇 배 터졌나"를 점수로 환산하는 식이에요. 여기에도 함정이 하나 있어요. 단순 배율 × 10이 아니라 V/S Ratio를 더합니다.

const views = row.views ?? 0;
const avg   = row.channel_avg_views ?? 0;   // 채널 평균 조회수
const subs  = row.subscriber_count ?? 0;

// Ch. Avg 배율 — 평균보다 몇 배 (1.6x, 2.2x)
const chAvgMultiplier = avg > 0 ? (views / avg) : 0;

// V/S Ratio — 구독자 대비 조회수 % (작은 채널의 떡상 감지)
const vsRatio = subs > 0 ? (views / subs) * 100 : 0;

// ★ Outlier Score — 배율×10 + V/S Ratio  (avg가 0이면 V/S Ratio만)
const outlierScore = avg > 0 ? (views / avg) * 10 + vsRatio : vsRatio;

// 분류
const isOutlier     = chAvgMultiplier >= 1.5;  // 채널 평균 1.5배 이상
const isMegaOutlier = chAvgMultiplier >= 5.0;  // 5배 이상 (Top 0.1%)

V/S Ratio를 더하는 이유는, 같은 배율이어도 구독자 대비 더 멀리 퍼진 영상의 Score가 높아야 하기 때문이에요. 단순 "배율 × 10"으로만 만들면 실제 앱과 정렬 순서가 달라집니다. 그리고 모든 지표는 DB가 아니라 프론트(JS)에서 계산해요. 뷰는 원천값(views, channel_avg_views, subscriber_count)만 주고, Score·배율·V/S는 화면에서 계산합니다.

자주 나오는 증상 하나를 미리 알려둘게요. 신규 채널은 수집 직후 avg_views가 0입니다. 그러면 Score가 V/S Ratio만으로 잡혀요. 0으로 나누기를 막느라 그렇게 설계한 거라 정상입니다. collect-data를 한두 번 더 돌리면 평균이 채워집니다.

키는 백엔드에만 — 프론트·깃에 노출 금지

서비스를 만들 때 가장 사고가 나기 쉬운 지점이에요. 키 세 종류의 자리가 정해져 있습니다.

키어디에 두나절대 안 되는 것
SERVICE_ROLE_KEYEdge Function에 자동 주입 (설정 불필요)프론트·깃 노출
YOUTUBE_API_KEYSupabase Secret (백엔드만)프론트에 박기
gemini_api_keyadmin_settings 테이블 (RLS로 anon 차단)코드에 하드코딩
VITE_SUPABASE_PUBLISHABLE_KEY (= anon).env.local → 프론트 OK(공개 가능한 키라 예외)

프론트에는 공개 가능한 anon 키만 들어가요. service_role·YouTube·Gemini 키는 전부 백엔드에서만 씁니다. gemini_api_key는 아예 DB의 admin_settings에 저장하고, RLS로 anon이 못 읽게 막아둬요. Admin 로그인을 거친 manage-settings 함수(service_role)만 읽고 씁니다. 연결이 끝나면 anon으로 select gemini_api_key가 안 보이는지 확인하세요. 이게 보안 검증이에요.

YouTube 수집은 playlistItems.list(1 unit)로 합니다. search.list(100 units)는 쿼터를 100배 잡아먹어요 — 절대 쓰지 않습니다. kkirikkiri가 search 기반으로 만들면 연결 단계에서 playlistItems 방식으로 바로잡습니다.


진행 흐름

영상과 함께 따라치는 6단계입니다. 영상에서 한 줄 입력하면 본인도 같은 줄을 입력하고, 결과를 같이 확인하는 방식이에요. 각 STEP의 입력은 실제로 동작하는 프롬프트니까 그대로 복사해서 쓰세요.

모든 수강생은 자기 Supabase·자기 키로 연동합니다. 공용 DB를 같이 쓰는 게 아니에요. 본인만의 개인 대시보드라 데이터도 본인 DB에 쌓입니다. 라이브 수집이 느리거나 막히면, 영상 화면으로 결과만 먼저 보고 본인 수집은 백그라운드로 두고 진행하세요.

1. /kkirikkiri로 코드 생성

한 줄씩 시키는 게 아니라 에이전트 팀에게 통째로 맡깁니다. clip-06에서 정리한 통합 사양서를 그대로 받아 화면과 함수를 나눠 만들죠.

복사용 입력:

/kkirikkiri clip-06에서 정리한 통합 사양서대로 TrendBoard를 구현해줘.
Vite+React+TS+shadcn 다크 테마 프론트 7페이지, Supabase Edge Function 6종,
assets/schema.sql 마이그레이션까지. 03 문서의 DO/DON'T를 지켜줘.

kkirikkiri가 2~3개 질문을 던지고 에이전트 팀을 짜서 병렬로 돌립니다. 7페이지(Overview·Channels·Videos·Outliers·Trends·Content Strategy·Admin)와 사이드바 골격, Edge Function 6종 코드가 나와요.

| 확인 | 7페이지 + 사이드바 골격 생성 / Edge Function 6종 코드 생성. 불완전해도 정상 — 다음 STEP에서 연결하며 고침 |

생성물은 ~/trendboard에 떨어집니다. 이 시점의 코드는 아직 아무 데도 연결돼 있지 않아요. 로컬에 파일만 덩그러니 있는 상태죠.

2. Supabase 연결

이제 클로드코드와 대화하며 본인 Supabase에 코드를 붙입니다. Supabase 커넥터가 /mcp에 연결돼 있으면 프로젝트 생성부터 스키마 적용까지 한 번에 끝나요.

복사용 입력:

사양대로 Supabase에 연결하려는데 어떻게 하면 될까?
프로젝트가 없으면 MCP로 만들고, URL과 anon 키를 .env.local에 넣어줘(.gitignore에 추가).
클라이언트 연결 확인하고, clip-06에서 적용한 assets/schema.sql 스키마가
video_details 뷰까지 맞는지 확인해줘.

프로젝트명·리전(trendboard/Seoul)은 clip-06 사양서에 박혀 있으니 다시 안 쳐도 돼요. 클로드코드가 MCP로 프로젝트를 만들고, 키를 .env.local에 쓰고, 스키마 마이그레이션까지 합니다. 단, 프로젝트 생성 직전에 "비용 $0, 만들까요?" 확인이 한 번 떠요 — 안전장치라 자동으로 못 건너뜁니다. 여기만 y로 넘기면 돼요.

| 확인 | Table Editor에 7테이블 + video_details 뷰 / select video_id, snapshot_at from video_details 에러 없음 / .env.local이 gitignore에 포함(공개 가능한 anon만) |

3. Edge Function 배포 + Gemini 키

함수 6종을 본인 Supabase에 배포하고 키를 연결합니다. 여기서 딱 한 곳만 수동이라는 걸 기억하세요.

복사용 입력:

Edge Function 6종을 MCP로 배포하려는데 어떻게 할까?
SUPABASE_URL과 SERVICE_ROLE_KEY는 함수에 자동 주입이라 설정이 필요 없고,
YOUTUBE_API_KEY만 Secret으로 넣어야 하는데 그 방법(대시보드/CLI)을 알려줘.
그다음 앱 띄워서 Admin 로그인(기본 trendboard2026, 바로 변경)하고 Gemini 키를 저장하자.

함수 6종 배포는 클로드코드가 MCP로 합니다. SUPABASE_URL·SERVICE_ROLE_KEY는 함수 실행 환경에 자동 주입되니 본인이 건드릴 게 없어요. 딱 하나, YOUTUBE_API_KEY Secret 등록만 MCP로 안 됩니다. 대시보드의 Edge Functions → Secrets 메뉴에서 넣거나 CLI로 넣으세요.

supabase secrets set YOUTUBE_API_KEY=발급받은_키

그다음 앱을 띄워 Admin 페이지에 로그인합니다. 기본 비밀번호는 trendboard2026인데, 로그인하자마자 바로 변경하세요. Admin에서 Gemini 키를 저장하면 admin_settings에 들어가고, 이후 generate-tags가 그 키로 Gemini를 호출합니다.

| 확인 | 함수 6종 배포(MCP) / YOUTUBE_API_KEY Secret 등록 / Admin 로그인 → Gemini 키 저장 / anon으로 gemini_api_key select 안 보임(RLS) |

4. 채널 등록 → 수집 (디버깅 핵심)

여기가 가장 많이 막히는 단계이자 오늘의 핵심이에요. 테스트 채널을 등록하고 수집을 돌려봅니다.

복사용 입력:

테스트 채널 5개 등록하고 collect-data를 수동 실행하려는데 어떻게 할까?
videos·video_snapshots가 채워지고 channels.avg_views > 0이 되는지,
generate-tags 체인이 이어져 content_summaries에 키워드가 생기는지 확인해줘.
안 되면 Supabase Edge Function 로그를 보고 고쳐줘.

채널을 등록하면 fetch-channel이 채널 정보를 가져오고, 등록 직후 그 채널만 collect-data로 즉시 수집합니다. 수집이 돌면 videos·video_snapshots에 행이 쌓이고, 체인으로 generate-tags까지 이어져 content_summaries에 키워드가 생겨요.

여기서 막히면 추측하지 말고 로그를 그대로 붙여넣으세요. 이게 바이브코딩 디버깅의 본질입니다.

[막혔을 때 — 에러 로그를 그대로 클로드코드에 붙여넣기]

Supabase 대시보드 → Edge Functions → 해당 함수 → Logs 복사
   ↓
클로드코드에 붙여넣고 "이 로그 보고 고쳐줘"
   ↓
클로드코드가 원인 짚고 코드 수정 → 재배포 → 재실행

흔한 증상 셋은 미리 알아두면 당황할 일이 없어요.

  • YouTube 403 → YouTube Data API v3가 비활성이거나 쿼터 초과. 콘솔에서 API 활성화 확인. search.list를 쓰고 있으면 안 됩니다.
  • Score 전부 0 → avg_views가 아직 0(신규 채널이면 정상). collect-data를 한두 번 더 돌리면 채워져요.
  • 키워드 배지 안 뜸 → Admin에 Gemini 키를 저장 안 했거나, summarize-videos를 부르고 있음. 체인에 연결되는 건 generate-tags예요.

| 확인 | videos/snapshots 채워짐 / avg_views > 0 / content_summaries에 키워드 / Shorts·Long 구분 |

라이브 수집이 느리면 영상 결과 화면을 먼저 봅니다 — "이렇게 데이터가 차면 다음 화면이 이렇게 됩니다." 본인 수집은 백그라운드로 두고 다음 STEP으로 넘어가도 됩니다. 수집은 본인 Supabase에 계속 쌓이고 있어요.

5. Outlier 대시보드 검증

데이터가 차면 Outliers 페이지가 화면을 그립니다. 이제 지표 공식이 사양대로 맞는지 검증해요.

복사용 입력:

Outliers 페이지에서 Score 정렬·Ch.Avg 배율·필터가 02 공식대로 맞는지 확인하려는데 어떻게 볼까?
특히 outlierScore가 (views/avg)*10 + vsRatio인지(단순 배율×10 아님),
Tier 랭킹("#1 of N"), content_tags 컬러 배지까지 봐줘.

Outlier 테이블은 video_details를 읽어 프론트에서 지표를 계산합니다. Tier 랭킹은 keywords[0]로 영상을 그룹핑한 뒤 그룹 안에서 Score 내림차순 순위를 매겨 "#1 of 33" 식으로 보여줘요. content_tags는 7종(Numbers·Free·Question·Time·Money·Success·Change)이고 컬러 배지로 나옵니다.

| 확인 | Score 내림차순 정렬 / Ch.Avg 배율 초록 표시 / Format(Shorts·Long) 필터 / Tier "#1 of N" |

6. Gemini 요약 + 말로 개선

요약이 빠진 영상에 AI 요약을 채우고, 화면을 말로 다듬는 마무리 단계입니다.

복사용 입력:

generate-tags로 요약 없는 영상에 한 줄 요약·키워드·태그를 생성해서
테이블에 컬러 배지로 보여주려는데 어떻게 할까?
그리고 Mega Outlier(5배 이상)는 빨간 배지로, 썸네일을 더 크게 바꿔줘.

generate-tags가 Gemini(gemini-2.5-flash-lite, temperature 0.3)로 요약 없는 영상을 배치(기본 20개)로 태깅합니다. 호출이 많으면 429 rate limit이 날 수 있어요. 이때는 15초 대기 후 재시도하고, 호출 간 1.5초 sleep을 두는 식으로 처리합니다. 요약이 채워지면 테이블에 컬러 배지가 떠요. 그다음 "Mega는 빨간 배지", "썸네일 더 크게" 같은 UI 개선을 말로 시키면 클로드코드가 바로 반영합니다. 이게 바이브코딩의 마무리 손질이에요.

| 확인 | content_summaries에 요약·키워드 / 테이블에 컬러 배지 / 말로 시킨 UI 개선 반영 |


결과물

이번 클립이 끝나면 아래가 남습니다. 앱 본체는 별도 폴더 ~/trendboard에 짓고, 진도 기록만 50-my-work에 남기는 구조죠.

결과물위치설명
프론트 7페이지~/trendboard/src/pages/Overview·Channels·Videos·Outliers·Trends·Strategy·Admin
Edge Function 6종~/trendboard/supabase/functions/fetch-channel·collect-data·generate-tags·extract-trends·generate-strategy·manage-settings(+verify-admin)
.env.local~/trendboard/.env.localVITE_SUPABASE_URL + VITE_SUPABASE_PUBLISHABLE_KEY(=anon) (gitignore 포함)
수집 데이터본인 Supabasechannels·videos·video_snapshots·content_summaries
README.md50-my-work/Part07-실전/실습38-대시보드만들기/진도 메타 + 회고 (자동 작성)

완료 또는 /wrap을 입력하면 스킬이 정리합니다.

  • README.md 자동 작성 — 오늘 한 6단계 + "생성 vs 연결" 정리 + 본인 회고 한 줄
  • progress.json의 practice_completed에 "실습 38" 추가, current_clip은 null로
  • WRAP 검증 — ~/trendboard/src/pages와 ~/trendboard/supabase/functions가 있는지 확인하고, Outliers 페이지에서 Score 정렬·키워드 배지를 직접 보도록 안내

회고는 한 줄이면 충분해요. "kkirikkiri 생성과 클로드코드 연결, 둘의 역할 차이를 한 줄로." 이 한 줄이 다음에 다른 서비스를 만들 때 본인의 첫 판단 기준이 됩니다.


자주 막히는 포인트

증상원인해결
kkirikkiri 결과가 불완전생성은 코드까지만 — 연결·체인은 다음 단계정상입니다. 연결하며 클로드코드로 고침. 한 방 완성 기대 X
select video_details 통과하는데 화면이 빈칸뷰 컬럼명이 id·collected_at으로 어긋남뷰가 v.id AS video_id, collected_at AS snapshot_at인지 확인
Score가 전부 0avg_views가 아직 0 (신규 채널)collect-data 1~2회 더 실행하면 채워짐. 정상 동작
키워드 배지가 안 뜸Gemini 키 미저장 또는 summarize-videos 호출Admin에 Gemini 키 저장 확인 → 체인은 generate-tags(summarize-videos 아님)
YouTube 403YouTube Data API v3 미활성 또는 쿼터 초과콘솔에서 API 활성화 + 쿼터 확인. search.list 쓰면 안 됨
YouTube 쿼터가 금방 소진됨search.list(100 units) 사용playlistItems.list(1 unit)로 수집하도록 수정
generate-tags가 429Gemini rate limit15초 대기 후 재시도, 호출 간 1.5초 sleep
YOUTUBE_API_KEY가 MCP로 안 들어감Secret 등록은 MCP 미지원대시보드 Edge Functions → Secrets 또는 supabase secrets set
anon으로 gemini_api_key가 보임RLS 정책 누락admin_settings RLS — anon은 admin_password·gemini_api_key 차단 확인
Supabase 프로젝트 생성에서 멈춤"비용 $0, 만들까요?" 안전장치자동으로 못 건너뜀. y로 1회 승인
Outlier 정렬 순서가 실제와 다름Score를 "배율×10"으로만 계산(views/avg)*10 + vsRatio로 수정 (V/S Ratio 누락)
Admin 로그인이 기본 비번 그대로trendboard2026 미변경로그인 직후 즉시 변경 — 운영 전 필수
라이브 수집이 너무 느림채널 영상이 많음(초기 최대 50개/채널)영상 결과 화면으로 먼저 보고, 본인 수집은 백그라운드로

막히면 막혔어요 또는 도와줘로 도움을 요청하면 돼요. 핵심은 늘 같습니다 — 에러 로그를 그대로 붙여넣고 고치는 것. 추측이 아니라 로그로.


다음 클립

→ 배포하기 — 매시간 도는 자동 수집 서비스

지금 본인 대시보드는 노트북에서만 돕니다. 노트북을 끄면 수집도 멈춰요. 다음 클립에서는 이 앱을 GitHub에 올리고 Vercel에 배포해서 공개 URL로 띄웁니다. 그리고 pg_cron으로 매시간 collect-data 한 콜을 자동으로 부르게 만들어요. 진입점이 collect-data 하나라는 게 여기서 빛을 발합니다 — cron이 이것만 부르면 태깅·트렌드까지 체인으로 알아서 굴러가니까요. 배포할 때 가장 조심할 한 가지는 오늘 배운 그대로예요. 프론트와 깃에는 공개 가능한 anon 키만 — service_role·YouTube·Gemini 키는 백엔드에만. 노트북을 꺼도 매시간 스스로 도는 진짜 서비스, 다음 클립에서 완성합니다.

배포하기

매시간 도는 자동 수집 서비스

Part 7 · Clip 8

이 클립에서 만드는 것

Clip 7에서 본인 컴퓨터 안에서 도는 트렌드 대시보드를 만들었어요. 채널을 등록하면 영상을 수집하고, "이건 채널 평균 2.2배 터졌다"가 숫자로 뜨고, AI 요약까지 붙는 화면이었습니다. 한계가 딱 하나 있었죠. 본인 컴퓨터에서, 본인이 켜야만 돌아간다는 것.

이번 클립은 그 로컬 대시보드를 두 단계로 끌어올립니다. 먼저 인터넷에 올려서 어디서든 접속되는 공개 URL로 만들고, 그다음 본인이 안 켜도 매시간 알아서 데이터가 쌓이는 자동 수집 서비스로 바꿉니다. 이 클립이 끝나면 본인 분석 도구가 인터넷에 살아 있고, 자는 동안에도 시계열 데이터가 쌓여 있어요.

여기서 헷갈리기 쉬운 게 하나 있어요. "그냥 정적 페이지를 다시 올리는 것"과 "매시간 도는 서비스를 운영하는 것"은 완전히 다릅니다.

단순 재배포TrendBoard 운영
무엇이 도나정적 페이지를 다시 올림매시간 조회수를 기록해 시계열로 누적
효과최신 내용 반영데이터가 쌓일수록 Outlier 판정이 정확
자동화 위치없음 (수동)클라우드 cron (본인 컴퓨터 안 켜도 됨)

이 차이가 핵심이에요. TrendBoard는 백엔드(Supabase)가 있는 원본이라, "내 컴퓨터에 cron을 거는" 방식이 아니라 서버 cron(pg_cron)이 정답입니다. 매시간 도는 것도 단 하나, collect-data 함수뿐이에요. 그 안에서 generate-tags, extract-trends까지 체인으로 알아서 따라옵니다.

이번 클립에서 할 일은 네 단계입니다. 트렌드 화면 마무리 → GitHub + Vercel 배포 → Edge Function 배포 + 매시간 pg_cron → 운영하며 말로 개선. Part 7의 마지막 클립이자, 세 번째이자 마지막 프로젝트의 완성이기도 해요.


핵심 개념

"한 번 만든 앱"이 "매시간 도는 서비스"가 되는 지점

지금까지 Part 7에서 만든 세 프로젝트를 떠올려 보세요. 워크스페이스도, LLM Wiki도, Clip 7의 대시보드도 전부 "본인이 부르면 도는" 도구였습니다. 이번 클립의 cron 등록 한 줄이 그 성격을 바꿔요.

[Clip 7까지]
나 → 클로드코드/대시보드 호출 → 결과
     (내가 부를 때만 돈다)

[Clip 8 이후]
Supabase pg_cron (매시간 정각)
     ↓
collect-data 1콜
     ↓
generate-tags → extract-trends(7일) → extract-trends(30일)  ← 체인 자동
     ↓
video_snapshots에 시계열 한 줄 더 쌓임
     (내가 안 켜도 돈다)

본인이 자는 동안에도, 노트북을 닫아둔 주말에도 매시간 데이터가 쌓입니다. 데이터가 쌓일수록 채널 평균 조회수(avg_views) 계산이 안정되고, "평균 대비 몇 배 터졌나"라는 Outlier 판정이 정확해져요. 시계열을 운영한다는 게 이런 뜻입니다.

체인 구조 — collect-data 하나만 부르면 끝나는 이유

매시간 cron이 부르는 함수가 왜 collect-data 하나뿐인지 짚고 갑니다. Clip 7에서 Edge Function들을 만들 때, collect-data 끝에 다음 함수들을 차례로 호출하는 체인을 심어뒀거든요.

collect-data
 ├─ YouTube playlistItems.list로 영상 메타·조회수 수집 → video_snapshots INSERT
 └─ 끝에서 HTTP 체인 (Bearer: service_role)
     ├─ POST generate-tags                  (요약·키워드·content_tags)
     ├─ POST extract-trends {period_days: 7}
     └─ POST extract-trends {period_days: 30}

각 호출은 await하되, 한 단계가 실패해도 전체는 성공 응답을 돌려주도록 짜여 있어요(개별 채널 실패 시 건너뛰기). 그래서 cron이 부를 대상은 체인의 머리인 collect-data 하나면 충분합니다. 머리만 당기면 몸통이 따라오는 구조예요.

한 가지 짚어둘 게 있어요. 이 수집 엔진은 YouTube의 search.list를 쓰지 않습니다. search.list는 호출 한 번에 쿼터(API 사용량)를 크게 먹어서, 매시간 돌리면 금방 한도가 터져요. 대신 채널의 업로드 재생목록을 읽는 playlistItems.list를 씁니다. "매시간 도는 서비스"가 쿼터로 죽지 않게 하려는 설계예요.

키는 어디에 두나 — 프론트 vs 백엔드 (가장 중요)

배포에서 단 하나만 기억해야 한다면 이겁니다. 공개되어도 되는 키만 프론트에, 비밀 키는 백엔드에. Vercel에 올라가는 프론트엔드 환경변수는 빌드되면 브라우저로 그대로 노출돼요. 누구나 개발자 도구로 들여다볼 수 있다는 뜻입니다. 그래서 키를 어디 두느냐가 보안의 거의 전부예요.

키어디에노출돼도 되나이유
VITE_SUPABASE_URLVercel(프론트)OK프로젝트 주소일 뿐
VITE_SUPABASE_PUBLISHABLE_KEY (anon)Vercel(프론트)OKRLS로 보호됨
YOUTUBE_API_KEYSupabase Secrets(백엔드)금지쿼터·과금 직결
SUPABASE_SERVICE_ROLE_KEYSupabase Secrets(백엔드)절대 금지RLS를 우회하는 만능 키
Gemini API 키앱 Admin 페이지(admin_settings)금지과금 직결

VITE_로 시작하는 두 개(URL·anon)만 Vercel에 넣습니다. anon 키는 공개돼도 안전해요. Supabase의 RLS(Row Level Security)가 막아주거든요. 반면 service_role 키는 RLS를 통째로 우회하는 만능 열쇠라, 프론트나 깃허브에 단 한 번이라도 올라가면 데이터베이스 전체가 열립니다. 그래서 비밀 키 셋은 Edge Function Secrets(백엔드)에만 두고, Gemini 키는 배포 후 앱 Admin 페이지에서 한 번만 저장하세요.

이 원칙은 Part 7 전체를 관통하는 "코드 생성은 kkirikkiri, 연결·운영은 클로드코드"의 운영 쪽 핵심이에요. 코드 한 방으로 배포까지 끝나는 게 아닙니다. 키를 어디 둘지 판단하고 검증하는 그 단계가 본인 몫이에요.

pg_cron이 막히면 — 두 가지 대체 경로

매시간 자동화에는 길이 세 가지 있고, 위에서부터 권장입니다. 환경에 따라 pg_cron이 막힐 수 있으니 대체안을 미리 알아두세요.

방법어떻게언제
A. Supabase pg_cronSQL Editor에서 cron.schedule 등록권장 — 가능하면 이쪽
B. 외부 cron (cron-job.org)URL에 매시간 POST 거는 무료 서비스pg_cron이 막힐 때
C. GitHub Actions매시간 워크플로로 함수 URL을 curl수집 스크립트형일 때

세 방법 모두 결국 하는 일은 똑같아요. 매시간 정각에 collect-data URL로 POST 요청 한 번 보내는 거죠. pg_cron은 pg_net 확장이 필요한데, 이게 활성화 안 되는 환경이면 B(cron-job.org)로 가면 됩니다. 효과는 같아요.

Supabase Free 티어의 7일 함정 — cron이 곧 keep-alive

Supabase 무료 플랜에는 함정이 하나 있어요. 7일간 요청이 한 번도 없으면 프로젝트가 일시중지됩니다. 그런데 매시간 cron이 돌면 1시간마다 요청이 들어가니까 사실상 자동으로 막혀요. 자동 수집이 곧 keep-alive 역할을 겸하는 셈이죠. cron을 제대로 걸어두면 이 함정은 신경 쓸 일이 없습니다.


진행 흐름

1. /part07 호출 → Clip 8 선택

강의 워크스페이스에서 클로드코드를 켜고 시작합니다.

/part07

자동 셋업이 진도 폴더를 만들고, Clip 7에서 만든 trendboard/ 코드가 있는지 확인해줘요.

✓ trendboard/ 발견 — Clip 7 대시보드 코드 확인
✓ ~/fastcampus-cc/50-my-work/Part07-실전/실습39-배포하기/ 진도 폴더 준비 완료
ℹ Vercel·GitHub 로그인 필요. 자동화는 Supabase pg_cron(매시간)

대시보드 본체(trendboard/)는 별도 폴더에 있고, 진도 기록만 50-my-work/ 안에 남습니다. Clip 7과 똑같은 두 곳 구조예요. trendboard/ 코드가 안 보인다면 Clip 7 — 트렌드 대시보드 만들기를 먼저 끝내야 합니다.

2. STEP 1 — Trends/Overview 화면 마무리

배포 전에 화면 하나만 더 다듬습니다. 키워드 트렌드예요. 이 화면은 trend_topics 같은 별도 테이블을 두지 않고, 이미 수집된 video_details 뷰에서 실시간으로 집계합니다.

Trends 페이지랑 extract-trends를 마무리하려는데 어떻게 구성할까?
video_details에서 keywords를 실시간 집계(24h/3D/7D/30D 탭), 바 차트 + 키워드 랭킹.
Overview도 카드·차트·최근 Outlier로 마무리하고 싶어.

클로드코드가 화면을 마무리해줍니다. 확인할 것은 네 가지예요.

[확인]
- 키워드 랭킹 + 성장률 색상(상승/하락)
- 기간 탭(24h / 3D / 7D / 30D) 전환
- 키워드 빈도 바 차트
- Overview에 요약 카드·차트·최근 Outlier

자주 걸리는 함정 하나를 미리 알아두세요. 기간 탭에서 "7D"를 골랐는데 결과가 텅 비는 경우가 있어요. 집계할 때 published_at(영상이 올라온 날) 기준으로 거르면 오래된 영상이 다 빠져서 그렇습니다. 최근 7일 안에 수집된 데이터를 보려면 snapshot_at(수집한 시각) 기준으로 필터해야 해요. 결과가 비면 "기간 필터를 snapshot_at 기준으로 바꿔줘"라고 말하면 됩니다.

3. STEP 2 — GitHub + Vercel 배포

이제 코드를 인터넷에 올립니다. 순서가 있어요. 깃에 올리기 전에 비밀이 섞이지 않았는지부터 확인합니다.

이 프로젝트를 GitHub에 올리고 Vercel로 배포하려는데 어떻게 할까?
.env.local·node_modules·dist가 .gitignore에 들어 있는지 먼저 확인하고,
Vercel 환경변수에 VITE_SUPABASE_URL·VITE_SUPABASE_PUBLISHABLE_KEY 넣는 법도 알려줘.

클로드코드가 .gitignore를 점검하고, gh로 private 저장소를 만들어 푸시한 다음 Vercel 배포 순서를 안내해줍니다. Vite 프로젝트라 빌드 명령은 npm run build, 출력 폴더는 dist예요.

[Vercel 배포 순서]
1. vercel.com → Add New → Project → GitHub의 trendboard import
2. Framework: Vite 자동 인식 / Build: npm run build / Output: dist
3. Environment Variables에 VITE_SUPABASE_URL · VITE_SUPABASE_PUBLISHABLE_KEY 추가
4. Deploy → https://trendboard-xxxx.vercel.app 발급

⚠ Vercel 환경변수에는 공개 가능한 VITE_ 2개만 넣습니다. 비밀 키(YouTube·service_role·Gemini)는 절대 Vercel/프론트에 넣지 마세요 — 그건 다음 STEP에서 Supabase 백엔드 쪽에 들어갑니다. Vercel 프론트 변수는 브라우저로 그대로 노출됩니다.

확인할 것은 세 가지입니다.

[확인]
- 공개 URL 발급 (https://trendboard-xxxx.vercel.app)
- 휴대폰 등 다른 기기에서 접속됨
- 프론트(브라우저 개발자 도구)에 비밀 키가 하나도 없음

4. STEP 3 — Edge Function 배포 + 매시간 pg_cron (핵심)

이번 클립의 심장입니다. 백엔드 함수를 배포하고 매시간 자동 수집을 켜요. 먼저 Edge Function 배포부터.

Edge Function들(fetch-channel, collect-data, generate-tags, extract-trends,
generate-strategy, manage-settings, verify-admin)을 배포하고,
YOUTUBE_API_KEY만 Secret으로 설정하는 법 알려줘.
(SUPABASE_URL·SERVICE_ROLE_KEY는 자동 주입이라 제외)

Clip 7에서 만든 Edge Function 6종을 배포합니다. 이 중 설정·로그인을 맡는 manage-settings와 verify-admin은 한 쌍이라 6종으로 묶어 부르지만, 실제 배포 명령은 함수 파일 단위로 일곱 번 나눠서 실행합니다. Secret으로는 YOUTUBE_API_KEY 하나만 넣으면 돼요. SUPABASE_URL과 SUPABASE_SERVICE_ROLE_KEY는 Supabase가 Edge Function에 자동으로 주입해주거든요.

# Supabase CLI — 함수 배포
supabase functions deploy fetch-channel
supabase functions deploy collect-data
supabase functions deploy generate-tags
supabase functions deploy extract-trends
supabase functions deploy generate-strategy
supabase functions deploy manage-settings
supabase functions deploy verify-admin

# Secret — YouTube 키 하나만
supabase secrets set YOUTUBE_API_KEY=AIza...

배포가 끝나면 매시간 cron을 겁니다.

매시간 정각에 collect-data를 부르는 Supabase pg_cron 등록 SQL을 만들려는데 어떻게 할까?
안 되면 cron-job.org로 외부 cron 거는 법도 같이 알려줘.

클로드코드가 다음과 같은 SQL을 만들어줍니다. Supabase SQL Editor에서 실행해요.

CREATE EXTENSION IF NOT EXISTS pg_cron;
CREATE EXTENSION IF NOT EXISTS pg_net;

SELECT cron.schedule(
  'collect-youtube-hourly',
  '0 * * * *',  -- 매시간 정각
  $$ SELECT net.http_post(
       url := 'https://YOUR_REF.supabase.co/functions/v1/collect-data',
       headers := '{"Authorization":"Bearer YOUR_SERVICE_ROLE_KEY"}'::jsonb
     ) $$
);

-- 등록 확인
SELECT * FROM cron.job;
-- 해제할 때: SELECT cron.unschedule('collect-youtube-hourly');

YOUR_REF(본인 프로젝트 참조)와 YOUR_SERVICE_ROLE_KEY를 실제 값으로 교체합니다. 여기서 service_role 키가 나오죠. 이건 DB 안에서만(SQL 안에서만) 쓰이는 것이라 괜찮아요. 프론트나 깃에 노출되는 게 아니니까요.

pg_net 확장이 활성화 안 돼서 pg_cron이 막히면, cron-job.org 같은 무료 외부 cron으로 같은 일을 합니다. URL에 매시간 POST를 거는 방식이에요.

[cron-job.org 설정]
- URL: https://YOUR_REF.supabase.co/functions/v1/collect-data
- Method: POST
- Header: Authorization: Bearer YOUR_SERVICE_ROLE_KEY
- 주기: 매시간

확인할 것은 세 가지입니다.

[확인]
- Edge Function 6종 배포 완료 (deploy 명령은 일곱 번)
- pg_cron(또는 외부 cron) 등록됨 (SELECT * FROM cron.job으로 확인)
- 다음 정시에 데이터가 갱신됨 (collect-data → 체인 자동)

데이터가 갱신되는 건 다음 정시(예: 14:00)가 돼야 보입니다. 기다리기 싫으면 클로드코드한테 "collect-data를 수동으로 한 번 호출해서 데이터부터 채워줘"라고 하면 돼요. 배포 직후 첫 세팅은 이 순서로 합니다.

1. Vercel URL 접속 → Admin → 비밀번호 설정 → Gemini API 키 저장
2. Channels → 테스트 채널 5개 등록 → 등록 직후 자동 수집 확인
3. 잠시 후 Outliers / Trends에 데이터·요약이 차는지 확인
4. cron 등록 → 다음 날 정시에 자동 갱신 확인

5. STEP 4 — 운영하며 말로 개선

배포하고 며칠 써보면 아쉬운 게 보여요. 그걸 코드를 직접 고치는 게 아니라 말로 고칩니다. 이게 바이브코딩의 운영 단계예요.

24시간 급상승한 영상에 🔥 배지를 달고, 채널 카테고리 필터를 추가하고,
Overview에 '이번 주 가장 터진 영상 3개'를 크게 보여주고 싶은데 어떻게 할까?

클로드코드가 기능을 붙여줍니다. 확인할 것은 세 가지예요.

[확인]
- 급상승 영상에 🔥 배지
- 채널 카테고리 필터
- Overview에 이번 주 Top 3 강조

한 번 만들고 끝이 아니에요. 매시간 데이터가 쌓이는 살아 있는 서비스니까, 운영하며 계속 다듬는 게 오히려 정상입니다. 며칠 쓰다 또 아쉬운 게 보이면 같은 방식으로 말로 고치면 돼요.


결과물

이번 클립이 끝나면 아래가 남습니다.

결과물위치설명
공개 URLhttps://trendboard-xxxx.vercel.app어디서든 접속되는 대시보드
vercel.json~/trendboard/Vercel 배포 설정
배포된 Edge Function 6종Supabase(백엔드)fetch-channel·collect-data·generate-tags·extract-trends·generate-strategy·manage-settings(+verify-admin)
pg_cron 등록Supabase(DB)매시간 정각 collect-data 호출
Trends/Overview 화면~/trendboard/src/pages/실시간 키워드 집계 + 카드·차트
README.md실습39-배포하기/실습 메타 + 운영 구조 + 회고

완료 또는 /wrap을 입력하면 스킬이 결과물을 검증하고 정리합니다.

  • 공개 URL 접속과 다음 정시 자동 갱신을 직접 확인하라고 안내해줘요.
  • progress.json의 practice_completed에 "실습 39"가, projects_completed에 "trendboard"가 자동 기록됩니다.
  • README.md가 자동 생성되고, 마지막에 회고 한 줄("일회성 앱을 매시간 도는 서비스로 만든 핵심")을 자유 입력으로 받아 적어둡니다.

배포 URL이나 cron이 빠졌으면 해당 STEP을 다시 시도하라고 권유해줍니다.


자주 막히는 포인트

증상원인해결
Vercel 배포가 막힘빌드 설정/연결 문제Part 03 배포 챕터 복습. 클로드코드가 단계별로 안내하게 "어디서 막혔는지" 로그를 붙여넣기
배포했는데 데이터가 안 보임Vercel 환경변수 누락VITE_SUPABASE_URL·VITE_SUPABASE_PUBLISHABLE_KEY 등록 후 재배포(변수 추가만으론 반영 안 됨)
Trends 7D 탭이 텅 빔published_at 기준으로 필터함기간 필터를 snapshot_at(수집 시각) 기준으로 변경
pg_cron이 등록 안 됨pg_net 확장 미지원/Free 티어 제약pg_net 활성화 시도, 안 되면 cron-job.org 외부 cron으로 동일 효과
다음 정시에 갱신이 안 됨cron URL/헤더 오타SELECT * FROM cron.job 확인 + collect-data 수동 호출로 함수 자체는 도는지 분리 검증
YouTube API 403API 미활성 또는 쿼터 초과Google Cloud에서 YouTube Data API v3 enable 확인, 쿼터 잔량 확인
YouTube quota exceededsearch.list 사용/채널·주기 과다playlistItems.list만 쓰는지 확인, 채널 수·수집 주기 조정
키워드 배지가 안 보임Gemini 키 미저장 / generate-tags 미실행Admin에 Gemini 키 저장 → generate-tags 수동 호출
Score가 전부 0avg_views가 아직 0신규 채널은 첫 수집 직후 정상. 수집이 1~2회 더 돌면 채워짐
service_role 키 노출이 걱정됨어디 둬야 할지 헷갈림프론트·깃 절대 금지. Edge Function Secrets와 cron SQL 안에서만
Supabase 프로젝트가 일시중지됨7일 무요청매시간 cron이 돌면 자동 방지. 멈췄으면 재개 후 cron 가동 확인
비밀 키가 깃에 올라갈 뻔함.gitignore 누락.env.local·node_modules·dist가 .gitignore에 있는지 푸시 전 확인

막히면 에러 로그를 그대로 클로드코드에 붙여넣고 "이거 고쳐줘"라고 하세요. 추측으로 고치지 말고 로그를 보고 고치는 것, 이게 바이브코딩 디버깅의 원칙이에요. 강의 워크스페이스에서는 막혔어요 / 도와줘로 도움을 요청할 수 있습니다.


다음 클립

Part 7 마무리 — 세 프로젝트의 완성

Part 7의 세 프로젝트가 모두 끝났습니다. 규모가 점점 커지는 프로젝트 3개였어요. 환경 → 지식 → 서비스 순이었죠.

프로젝트무엇을규모핵심
① 워크스페이스본인 작업 환경을 하네스로환경CLAUDE.md·커맨드·훅·스킬을 목적 하나로 조립
② LLM Wiki본인 지식을 쌓는 도구지식쌓일수록 강해지는 본인 소유 지식 베이스
③ TrendBoard매시간 도는 분석 서비스서비스배포·자동화·운영 — 진짜 서비스의 형태

세 프로젝트의 공통점은, 전부 새로 배운 게 아니라는 점이에요. Part 5에서 만든 하네스 부품(CLAUDE.md·커맨드·훅·스킬)과 Part 6에서 만든 스킬들을 목적 하나로 조립한 결과입니다. 하네스는 새로운 도구가 아니었어요. 이미 만들어온 부품들을 어떻게 엮느냐의 문제였던 거죠.

특히 세 번째 프로젝트에서 본인은 "코드 생성은 kkirikkiri, 연결·운영은 클로드코드"를 직접 경험했습니다. 한 방에 완벽한 서비스가 나오지 않아요. 생성된 코드를 인터넷에 올리고, 키를 어디 둘지 판단하고, 매시간 도는 cron을 걸고, 며칠 운영하며 다듬는 그 전 과정이 본인 몫이었어요. 이게 일회성 결과물과 운영되는 서비스를 가르는 선입니다.

다음 클립

→ 성장 리포트 — 나의 AI Native 여정 — Part 8 첫 클립입니다.

세 프로젝트를 다 만든 지금, 본인은 강의를 시작할 때와 같은 사람이 아닙니다. 다음 클립에서는 Part 5의 자산 + Part 6의 스킬 + Part 7의 세 프로젝트를 한자리에 모아, 본인의 AI Native 여정이 어디까지 왔는지를 성장 리포트로 점검해요. 그동안 쌓인 클로드코드 사용 기록을 6축으로 다시 진단해서, 처음과 지금이 얼마나 달라졌는지 숫자로 확인하는 시간입니다.

수고하셨습니다. Part 7의 세 프로젝트, 본인 평생 도구가 됐기를 바랍니다.

성장 리포트

나의 AI Native 여정

Part 8 · Clip 1Part 8 마무리

이 클립에서 만드는 것

Part 4 마지막에 바선생(vibe-sunsang)으로 본인 AI 활용 패턴을 6축으로 한 번 진단했습니다. 그게 본인의 베이스라인이었어요. 그때는 "내가 클로드코드를 어떻게 쓰고 있나"를 처음 숫자로 본 시점이었습니다.

그 뒤로 Part 5에서 자산(CLAUDE.md·커맨드·서브에이전트·MCP·Hook·GitHub)을 만들었고, Part 6에서 스킬 9개를 익혔고, Part 7에서 워크스페이스·LLM Wiki·유튜브 대시보드라는 큰 프로젝트 세 개를 직접 지었습니다. 그동안 클로드코드와 나눈 대화는 전부 ~/.claude/projects/에 쌓여 있어요. 같은 사람이 같은 도구를 두 달 가까이 쓰면, 쓰는 방식 자체가 달라집니다.

이번 클립은 그 변화를 눈으로 확인하는 졸업 시간입니다. 바선생의 성장 리포트를 다시 돌려 Part 4 베이스라인과 종단 비교(longitudinal)하고, "얼마나 성장했는가"를 6축 점수 차이로 봅니다. 그다음 Part 5 자산과 Part 6 스킬, Part 7 세 프로젝트가 어떻게 하나의 평생 도구로 묶이는지 정리하고, 강의 이후 본인의 AI Native 여정에서 내디딜 다음 한 걸음을 적습니다.

Before (Part 4 마지막)After (Part 8 졸업)
6축 진단을 처음 한 번 받았다 (베이스라인)같은 6축을 다시 돌려 성장 폭을 숫자로 본다
보완 영역이 Part 5 가이드였다그 보완 영역이 실제로 올라갔는지 확인한다
흩어진 자산·스킬·프로젝트를 따로 만들었다셋이 하나의 평생 도구로 묶인 걸 본다
"강의 끝나면 뭐 하지"가 막연했다AI Native 다음 단계가 한 줄로 적혀 있다

이번 클립에서 할 일은 네 단계입니다. 성장 리포트 다시 돌리기 → 베이스라인과 비교 → 전체 여정 묶기 → 다음 단계 적기. Part 4에서 6축이 무엇인지는 이미 배웠으니, 여기서는 설명을 반복하지 않고 성장과 졸업 앵글로 갑니다.


핵심 개념

베이스라인이 있어야 성장이 보입니다

성장은 절대 점수가 아니라 차이입니다. L3.5라는 숫자 하나만 보면 "높은 건가 낮은 건가" 알 수 없어요. 하지만 "두 달 전 L2.5에서 L3.5로 올라왔다"는 비교가 붙으면, 그제야 그 숫자가 의미를 가집니다.

Part 4에서 받은 첫 진단이 바로 그 비교의 기준점입니다. 바선생은 이전 리포트를 읽고 같은 축끼리 맞대서 변화 폭을 계산해요. 그래서 Part 4를 건너뛰고 여기로 바로 온 분이라면 비교 대상이 없어 "현재 상태"만 나옵니다. 그것도 쓸모는 있지만, 졸업 리포트의 핵심인 "성장 곡선"은 베이스라인이 있어야 그려집니다.

[Part 4] 첫 진단 ──────────────▶ [Part 8] 재진단
   베이스라인 (예: L2.5)            졸업 시점 (예: L3.5)
        │                               │
        └────────── 차이 = 성장 ────────┘

이번 리포트부터는 결과가 TIMELINE.md라는 종단 기록 파일에도 누적됩니다. 다음에 또 돌리면 6축 추이가 자동으로 이어 붙어요. 강의가 끝나도 분기마다 한 번씩 돌리면 본인의 성장 곡선이 계속 그려집니다.

같은 6축이지만, 이번엔 "변화 폭"을 읽습니다

6축이 무엇을 측정하는지는 Part 4에서 다뤘습니다. 졸업 리포트에서 달라지는 건 보는 각도예요. 각 축의 절대 점수가 아니라 베이스라인 대비 얼마나 움직였는지를 봅니다.

축졸업 리포트에서 읽는 법
DECOMP (작업 분해)두 달 전보다 요청을 더 잘게 쪼개게 됐나
VERIFY (검증)"되는지"를 넘어 "약점·반론"까지 확인하게 됐나
ORCH (오케스트레이션)도구·에이전트·MCP를 더 많이 조합하게 됐나
FAIL (실패 복구)막혔을 때 "왜?"를 먼저 묻게 됐나
CTX (컨텍스트 제공)경로·목적·제약을 함께 주는 비율이 늘었나
META (메타 인지)본인 사용 패턴을 스스로 관찰하게 됐나

가장 크게 오른 축은 보통 Part 5~7에서 가장 많이 연습한 축과 겹칩니다. 예를 들어 Part 5에서 Hook으로 자동 검증을 걸고, Part 7에서 프로젝트를 디버깅하며 "왜 이 에러가 반복되지"를 자주 물었다면 FAIL·VERIFY가 눈에 띄게 올라옵니다. 그 인과는 성장 리포트가 행동 신호, 그러니까 실제 대화 인용으로 근거를 대줘요.

성장의 진짜 신호는 점수가 아니라 "역할 전환"입니다

숫자보다 더 중요한 게 하나 있어요. 두 달 동안 본인이 무엇을 만들었는가입니다.

Part 4 시점에는 강의를 따라 하는 사람이었습니다. 정해진 실습을 정해진 순서로 했어요. 그런데 Part 7을 지나면 LLM Wiki라는 본인 지식 베이스를 짓고, 워크스페이스를 설계하고, 서비스를 배포합니다. "배우는 사람 → 자기 도구를 만드는 사람"으로 넘어갔다는 신호예요. 성장 리포트는 이 전환을 프로젝트가 여러 갈래로 늘어난 데서 잡아냅니다.

배우는 사람                  자기 도구를 만드는 사람
(강의 따라 하기)      →      (본인 지식·환경·서비스 직접 구축)
 fastcampus-cc 위주          llm-wiki + workspace 직접 짓기

점수는 따라오는 결과일 뿐이고, 이 역할 전환이 AI Native 여정의 본질입니다. 졸업 리포트에서 본인이 가장 자랑스러워해야 할 줄은 "+1.4" 같은 숫자가 아니라 "강의 밖에서 본인 프로젝트를 시작했다"는 문장이에요.

정직한 사용법 — 점수는 위축용이 아닙니다

성장 폭이 작게 나와도 괜찮습니다. 분석 대상 세션이 적으면 변화가 덜 잡혀요. 사람마다 쓰는 방식이 달라서 어떤 축은 오르고 어떤 축은 제자리일 수도 있고요. 다 정상입니다. 6축은 줄 세우기 도구가 아니라 다음에 어디를 더 연습할지 알려주는 나침반이에요. 졸업 리포트도 마지막엔 "다음 한 걸음"을 1~3개로 추려줍니다. 그게 핵심 산출물입니다.


진행 흐름

1. /vibe-sunsang 변환 — 그동안 쌓인 기록 다시 변환

Part 4 이후로 Part 5·6·7을 거치며 세션이 잔뜩 늘었습니다. 먼저 새로 쌓인 대화 로그를 분석용으로 다시 변환합니다. Part 4에서 한 번 해봤으니 명령은 같아요.

/vibe-sunsang 변환

두 달치 세션이 쌓인 만큼 처음 변환보다 시간이 더 걸립니다. 이미 변환한 건 건드리지 않고, 새로 추가된 세션만 잡혀 변환돼요.

✓ 클로드코드 세션 로그 스캔
✓ 신규 변환 대상: Part 5~7에서 늘어난 세션
✓ 마크다운 변환 완료: ~/vibe-sunsang/conversations/

변환 결과는 프로젝트별로 폴더가 나뉩니다. 강의 워크스페이스(fastcampus-cc)는 물론이고 Part 7에서 따로 지은 LLM Wiki·워크스페이스 빌더 프로젝트도 같이 잡혀요. 본체를 별도 폴더에 지었던 프로젝트도 대화 기록은 ~/.claude/projects/에 남아 있으니 분석 대상이 됩니다.

2. /vibe-sunsang 성장 — 베이스라인과 비교하는 졸업 리포트

Part 4에서는 멘토링으로 현재 상태를 봤습니다. 졸업 리포트는 전용 명령이 따로 있어요.

/vibe-sunsang 성장

growth-analyst 서브에이전트가 변환된 로그를 읽고, Part 4 때 저장된 이전 리포트를 비교 자료로 불러옵니다. 메인 컨텍스트를 보호하려고 서브에이전트에 맡기는 구조는 Part 4와 같아요.

분석 범위를 물어보면 졸업 비교에는 "이번 달" 또는 더 넓은 범위를 고릅니다. 두 달 전 베이스라인까지 비교하려면 충분히 넓게 잡아야 변화가 잡혀요.

✓ 분석 범위 선택 (이번 주 / 최근 2주 / 이번 달)
✓ 변환된 세션 로드 (프로젝트별)
✓ 이전 진단 비교 자료 로드 (Part 4 베이스라인 리포트)
✓ 6축 종단 비교 + 게이트 상태 판정
✓ TIMELINE.md에 종단 기록 누적
✓ 성장 리포트 생성: ~/vibe-sunsang/exports/growth-report-{날짜}.md

리포트와 함께 growth-log/TIMELINE.md가 생깁니다(또는 갱신됩니다). 이게 앞으로 본인 성장 곡선이 쌓일 파일이에요.

3. 받은 성장 리포트 읽는 법 — 승급 알림과 종단 비교

리포트 맨 위에 승급 알림이 나옵니다. 베이스라인 레벨에서 졸업 레벨로 얼마나 올라왔는지 한 줄로 요약돼요. 아래는 영상 속 데모 결과예요. 본인 결과는 사용 패턴에 따라 당연히 다르게 나옵니다.

승급: L2.5 Curious+ → L3.5 Digger+ (능동 단계)
→ Part 4 베이스라인의 "1개월 내 L3.0" 목표를 L3.5로 초과 달성

레벨 이름은 워크스페이스 유형마다 다릅니다. 리서치·학습 중심(Explorer)이라면 Curious → Digger → Investigator → Analyst처럼 "찾는 사람 → 분석하는 사람"으로 올라가는 사다리예요. 본인 유형에 맞는 사다리로 나옵니다.

그다음 핵심이 6축 종단 비교 표입니다. 베이스라인과 현재를 같은 축끼리 맞대 변화 폭을 보여줘요.

| 축      | 베이스라인 | 졸업  | 변화   |
|---------|-----------|------|--------|
| DECOMP  | 2.5       | 3.4  | +0.9   |
| VERIFY  | 2.0       | 3.2  | +1.2   |
| ORCH    | 3.0       | 4.1  | +1.1   |
| FAIL    | 1.5       | 2.9  | +1.4   ← 가장 크게 성장
| CTX     | 2.5       | 3.4  | +0.9   |
| META    | 2.5       | 3.0  | +0.5   |

여기서 읽을 건 두 가지입니다. 가장 크게 오른 축(시연에선 FAIL, 실패 대응)과 가장 덜 오른 축(시연에선 META)이에요. 크게 오른 축은 Part 5~7에서 가장 많이 연습한 부분이고, 덜 오른 축이 앞으로 풀어야 할 숙제입니다.

레벨 카드도 함께 나옵니다. 6축을 막대로 한눈에 보여주는 형태예요.

┌─────────────────────────────────────────────────┐
│  L3.5  Digger+   [능동 단계]                     │
│                                                  │
│  DECOMP  ████████████████░░░░░░  3.4            │
│  VERIFY  ████████████████░░░░░░  3.2            │
│  ORCH    ████████████████████░░  4.1  ★ 최강    │
│  FAIL    ██████████████░░░░░░░░  2.9  (최약)     │
│  CTX     ████████████████░░░░░░  3.4            │
│  META    ██████████████░░░░░░░░  3.0            │
│                                                  │
│  다음 레벨까지: 가장 약한 축이 발목을 잡음       │
└─────────────────────────────────────────────────┘

4. 핵심만 추리기 — 성장 포인트와 다음 한 걸음

리포트가 길게 나오니 핵심만 한 번 더 추려달라고 합니다.

방금 받은 성장 리포트, 졸업 관점으로 핵심만 정리해줘.
- 베이스라인 대비 가장 크게 성장한 축 1개 (왜)
- 가장 덜 성장한 축 1개 (다음 숙제)
- "배우는 사람 → 자기 도구 만드는 사람" 전환 신호가 잡혔는지
- 강의 이후 다음 한 걸음 1~3개

정리 결과는 이런 모습입니다.

[가장 크게 성장한 축]
- FAIL (실패 복구) +1.4 — "또 문제냐" 반복·롤백에서
  "원인 파악 후 진행" 패턴으로 전환. 베이스라인의 최우선
  보완 과제가 한 달 만에 가장 크게 오른 축으로 반전.

[다음 숙제 축]
- META (메타 인지) +0.5 — 본인 사용 패턴을 기록·관찰하는
  습관이 아직 약함. 다음 레벨의 핵심 전환점.

[역할 전환 신호]
- 강의 따라 하기(fastcampus-cc)를 넘어 본인 지식 베이스
  (llm-wiki)와 워크스페이스 설계 도구를 직접 구축.
  → "배우는 사람 → 자기 도구를 만드는 사람" 전환 확인.

[강의 이후 다음 한 걸음]
1. 검증 요청에 "반론·약점은?" 한 줄 붙이기 (VERIFY)
2. 같은 에러 3회+면 "왜 이 패턴이지?" 먼저 묻기 (FAIL)
3. LLM Wiki에 "내 조사 방법론" 주 1회 누적 (META)

이 정리를 growth-summary.md로 저장합니다. 다음 한 걸음 1~3개가 졸업 후 본인의 행동 계획이에요.

5. 전체 여정 묶기 — Part 5+6+7 = 평생 도구

성장 숫자를 봤으니, 그 성장을 만든 자산 전체를 한 장에 정리합니다. 흩어져 보였던 결과물이 사실은 하나의 평생 도구였다는 걸 확인하는 단계예요.

Part 5~7에서 만든 걸 "평생 도구" 한 장으로 정리해줘.
Part 5 자산 + Part 6 스킬 + Part 7 세 프로젝트가
어떻게 하나로 묶이는지 표로.

정리는 보통 이렇게 묶입니다.

[Part 5 자산 6종 — 하네스 부품]
CLAUDE.md / 커맨드 / 서브에이전트 / MCP / Hook / GitHub 백업
→ 모든 작업의 기본 환경. 한 번 만들면 계속 참고.

[Part 6 스킬 9종 — 워크플로우]
deep-research부터 content-pipeline까지
→ 자연어 한 마디로 같은 작업을 매번 동일하게 재현.

[Part 7 세 프로젝트 — 목적별 조립]
환경(워크스페이스) → 지식(LLM Wiki) → 서비스(유튜브 대시보드)
→ Part 5·6 부품을 목적 하나로 조립한 실전 결과물.

= 셋을 합치면 본인 평생 도구.
  강의가 끝나도 ~/fastcampus-cc/는 본인 작업장으로 계속.

Part 5가 부품, Part 6이 워크플로우, Part 7이 그 둘을 목적별로 조립한 프로젝트예요. 셋은 따로 노는 게 아니라 한 줄로 이어지는 사슬입니다. 이걸 lifetime-toolkit.md로 저장해두면, 나중에 본인 일에서 새 프로젝트를 시작할 때 어떤 부품을 꺼내 쓸지 한눈에 보입니다.

6. AI Native 다음 단계 적기 — 졸업 후 한 줄

마지막으로, 강의 이후 본인이 갈 방향을 한 줄로 적습니다. 정답은 없어요. 받은 "다음 한 걸음"과 가장 자주 쓰게 된 스킬을 이어 붙이면 됩니다.

졸업 후 다음 한 걸음을 한 줄로 적어줘.
- 가장 자주 쓰게 된 스킬/프로젝트 1개
- 그걸 본인 실제 일 어디에 가져갈지
- 다음 분기에 올리고 싶은 축 1개

이 한 줄이 졸업장입니다. 강의는 끝나지만 AI Native 여정은 여기서 시작이에요. 분기마다 /vibe-sunsang 성장을 한 번씩 돌리면 TIMELINE.md에 곡선이 계속 쌓이니까, 이번 리포트를 출발점으로 삼으면 됩니다.


결과물

결과물 폴더는 50-my-work/Part08-성장/실습40-성장리포트/입니다. 성장 리포트 원본은 바선생 워크스페이스에 저장되고, 핵심 정리본을 진도 폴더로 가져옵니다.

결과물위치설명
growth-report-{날짜}.md~/vibe-sunsang/exports/6축 종단 비교 + 승급 알림 + 레벨 카드 (원본)
TIMELINE.md~/vibe-sunsang/growth-log/종단 기록 — 앞으로 성장 곡선이 누적됨
growth-summary.md실습40-성장리포트/베이스라인 대비 핵심 + 다음 한 걸음 1~3개
lifetime-toolkit.md실습40-성장리포트/Part 5+6+7 = 평생 도구 한 장 정리
ai-native-next.md실습40-성장리포트/졸업 후 다음 단계 한 줄
README.md실습40-성장리포트/실습 메타 + 졸업 회고

완료 또는 /wrap을 입력하면 progress.json에 다음이 기록됩니다.

키내용
practice_completed"실습 40" 추가
current_levels졸업 시점 6축 레벨
growth_delta베이스라인 대비 축별 변화
completed_parts"Part 08" 추가 (전 과정 완료)

~/vibe-sunsang/은 진도 결과물(50-my-work/)과 별개로, 본인 성장 기록만 모아두는 워크스페이스로 계속 남습니다. 다른 작업에는 영향을 주지 않아요.


자주 막히는 포인트

증상원인해결
베이스라인 비교가 안 나옴Part 4 첫 진단을 안 했음비교 대상이 없으면 현재 상태만 나옵니다. 그래도 다음 한 걸음은 받을 수 있어요
이전 리포트를 못 찾음~/vibe-sunsang/exports/에 Part 4 리포트가 없음Part 4에서 완료로 마무리했는지 확인. 없으면 현재 진단으로 진행
성장 폭이 작게 나옴분석 세션이 적음정상입니다. 더 사용한 뒤 다시 돌리면 변화가 잡힙니다. 데모로 흐름만 봐도 됩니다
Part 7 프로젝트가 분석에 안 잡힘변환을 다시 안 함먼저 /vibe-sunsang 변환으로 새 세션을 변환한 뒤 성장 실행
점수가 낮아서 위축됨절대 평가로 받아들임점수는 줄 세우기가 아니라 다음 연습 영역 나침반입니다. 변화 폭과 다음 한 걸음만 보세요
6축 점수가 데모와 다름본인 사용 패턴이 반영됨정상입니다. 데모와 비교하지 말고 본인 베이스라인과만 비교하세요
어떤 축은 오르고 어떤 축은 제자리연습이 특정 축에 몰림가장 덜 오른 축이 다음 분기 숙제입니다. 한 번에 다 올리려 하지 마세요
승급이 안 됨게이트 조건 미충족레벨은 점수만이 아니라 검증·도구 같은 게이트도 봅니다. 다음 한 걸음이 곧 게이트 열쇠예요
TIMELINE.md가 뭔지 모름종단 기록이 처음앞으로 성장 곡선이 쌓일 파일입니다. 분기마다 한 번씩 돌리면 자동으로 이어집니다
/vibe-sunsang 성장이 인식 안 됨플러그인 미설치/구버전/plugin Installed 탭 확인 → 재설치. Part 4에서 쓰던 것과 같은 플러그인
결과물이 너무 길어서 정리가 막막함원본 리포트 통째로 봄"졸업 관점으로 핵심만" 한 번 더 요청해서 요약본으로 보세요

다음 클립

Part 8 / 강의 마무리 정리

여기까지가 Part 8이자 전 과정의 마지막입니다. 클립은 하나지만, 두 달 가까운 여정 전체를 한 장으로 닫는 시간이었어요.

Part했던 일남은 자산
Part 2~3클로드코드와 첫 작업첫 결과물들
Part 4플러그인으로 도움받기 + 첫 6축 진단베이스라인
Part 5하네스 부품 직접 만들기자산 6종
Part 6워크플로우 통합스킬 9종
Part 7환경·지식·서비스 세 프로젝트실전 프로젝트 3개
Part 8성장 확인 + 여정 정리성장 리포트 + 평생 도구 한 장

전 과정의 메시지는 하나로 모입니다. Part 5 자산 + Part 6 스킬 + Part 7 세 프로젝트 = 본인 평생 도구, 그리고 그 도구를 쓰는 본인이 두 달 전과는 다른 사람이 됐다는 것. 성장 리포트의 숫자가 그걸 증명하지만, 진짜 증거는 강의 밖에서 본인 프로젝트를 시작할 수 있게 됐다는 사실이에요. "배우는 사람"에서 "자기 도구를 만드는 사람"으로 넘어온 겁니다.

강의가 끝나도 멈추지 마세요. ~/fastcampus-cc/는 본인 작업장으로 계속 쓰고, 새 아이디어가 떠오를 때마다 스킬로 만들고, 분기마다 /vibe-sunsang 성장을 한 번씩 돌려 TIMELINE.md에 곡선을 더하면 됩니다. 받은 "다음 한 걸음" 1~3개부터 본인 일에 적용해보세요. 그게 AI Native 여정의 진짜 첫걸음입니다.

이 클립이 강의의 마지막입니다. 다음 클립은 없어요. 여기서부터는 본인의 길입니다.

긴 여정 끝까지 함께해주셔서 고맙습니다. 수고하셨습니다.

대화 5단계 한눈에

모든 클립을 관통하는 흐름

레퍼런스
단계핵심예시 프롬프트
1. 던지기바로 시키기보다 방향을 먼저 물어요.지난달 매출 데이터를 분석하려는데, 어떻게 시작하면 좋을까?
2. 구체화하기범위, 형식, 제약을 좁혀요.CSV 파일이고, 월별 비교 차트로 보고 싶어.
3. 만들기조건이 잡힌 뒤 실행을 부탁해요.좋아, 이 조건으로 월별 매출 비교 차트를 만들어줘.
4. 검증하기결과가 의도와 맞는지 봐요.3월 데이터가 빠진 것 같은데 다시 확인해줘.
5. 개선하기필요한 부분만 다시 고쳐요.전년도 데이터도 같이 넣어줘. 다른 건 그대로.

핵심은 1단계예요. “해줘”로 바로 뛰어들기보다 “하려는데 어떻게?”로 시작하면, Claude가 길을 덜 잃습니다.

흐름도

눈으로 보면 흐름은 이렇게 단순합니다.

1 던지기 → 2 구체화하기 → 3 만들기 → 4 검증하기 ↔ 5 개선하기
                                      ↑_____________________↓
                                           완성까지 반복

완성은 보통 한 번에 안 와요. 4단계와 5단계를 몇 번 오가면서 손에 맞게 다듬는 겁니다.

같은 대화, 다른 결과물

같은 5단계라도 결과물 이름만 달라져요.

구분만드는 것예시
바이브코딩실행 가능한 앱·웹페이지포트폴리오 사이트, HTML 대시보드
에이전트 활용업무 자동화·반복 작업뉴스 정리 자동화, 보고서 생성 흐름

핵심은 “해줘”보다 “하려는데 어떻게?” 입니다. 먼저 방향을 묻고, 조건을 좁힌 다음, 실행하고, 확인하고, 필요한 부분만 고칩니다. 데이터 분석, 카드뉴스, 포트폴리오, 배포 모두 이 패턴으로 갑니다.

여전히 헷갈리면 Part 3 / Clip 1로 돌아가서 첫 질문만 다시 따라 쳐보세요. 거기서 감이 잡힙니다.

🔗 관련 클립

Part 2 / Clip 3, Part 3 / Clip 1, Part 3 / Clip 2, Part 3 / Clip 8

슬래시 커맨드 모음

자주 쓰는 명령 한 표

레퍼런스
명령역할언제 쓰나예시
/help전체 명령 목록 보기가능한 명령이 기억나지 않을 때/help
/clear현재 대화 화면 비우기다른 주제로 넘어갈 때/clear
/compact긴 대화를 요약해 이어가기컨텍스트가 많이 찼을 때/compact
/status모델·계정·연결 상태 보기지금 세션 상태를 볼 때/status
/usage토큰·비용·한도 보기사용량이 걱정될 때/usage
/model모델 선택·전환빠른 모델과 깊은 모델을 바꿀 때/model opus
/statusline하단 상태줄 구성모델, 폴더, 비용을 계속 보고 싶을 때/statusline 모델, 폴더, 컨텍스트 보여줘
/powerup기능 레슨 실행모드, 단축키, 기능을 직접 익힐 때/powerup
/exitClaude Code 종료alias 설정 전이나 세션을 닫을 때/exit
/resume이전 세션 이어가기작업 흐름을 다시 불러올 때/resume
/rename세션 이름 바꾸기나중에 찾기 쉽게 정리할 때/rename 포트폴리오 수정

처음부터 전부 외울 필요는 없어요. /help, /status, /usage 세 개만 알아도 첫날 길을 잃진 않습니다.

첫날 추천 순서

제가 첫날 꼭 눌러보라고 하는 순서는 이 정도예요.

순서입력확인할 것
1/help명령 목록이 어디까지 있는지 훑기
2/status계정, 모델, 연결 상태 확인
3/usage사용량과 한도 감 잡기
4/model모델명이 Status Line에서 바뀌는지 확인
5/statusline ...본인이 보기 편한 상태줄 만들기

/statusline은 명령만 치는 것이 아니라 원하는 표시 방식까지 자연어로 같이 요청해야 합니다. 마음에 들지 않으면 다시 요청해 덮어쓰면 됩니다.

여전히 명령이 헷갈리면 /help를 먼저 열고, 지금 필요한 단어만 찾아서 다시 입력해보세요.

🔗 관련 클립

Part 2 / Clip 3, Part 2 / Clip 4

권한 모드 비교

Default / Accept-edits / Plan / Auto / Bypass

레퍼런스
모드자동차 비유행동추천 대상
Default수동 기어파일 수정·명령 실행마다 물어봄처음 켠 사람, 안전 우선
Accept-edits자동 기어안전한 파일 편집은 자동, 위험한 행동은 확인입문자 기본 추천
Plan네비게이션실행 전 계획부터 보여줌복잡한 작업, 큰 변경 전
Auto풀 자동위험한 행동만 확인하고 대부분 진행Max 사용자, 반복 실습
Bypass레이싱 모드거의 묻지 않고 실행익숙한 사용자, 격리된 작업

처음엔 Accept-edits가 제일 무난해요. 느리지 않으면서도 위험한 순간에는 멈춰서 물어봅니다.

전환 방법

바꾸는 방법은 짧아요. Status Line에서 현재 모드가 바뀌는지만 확인하세요.

조작동작메모
Shift+TabDefault → Accept-edits → Plan → Default 순환Status Line에서 현재 모드 확인
/powerup권한 모드 학습 토픽 실행처음에는 직접 체험 추천
실행 플래그Bypass로 시작사이클에 없으므로 별도 실행
claude --dangerously-skip-permissions

Alias 짧게 보기

alias는 긴 실행 명령을 짧게 부르는 별명입니다. 자주 켤수록 꽤 편해져요.

별명실제 명령용도
ccclaude기본 실행
ccdclaude --dangerously-skip-permissionsBypass 바로 시작
ccrclaude --resume --dangerously-skip-permissions이전 세션 이어서 Bypass

처음에는 cc와 Accept-edits 조합이면 충분합니다. 큰 작업 전에는 Plan, 반복 작업에 익숙해졌을 때만 Auto나 Bypass를 고려합니다.

여전히 불안하면 Default나 Accept-edits로 돌아와서 한 번 더 시작해보세요. 안전하게 천천히 가도 됩니다.

🔗 관련 클립

Part 2 / Clip 3, Part 2 / Clip 4

트러블슈팅

자주 막히는 포인트 모음

레퍼런스
카테고리증상원인해결
설치claude 명령 없음설치/PATH 빠짐설치 확인·재시작
설치Node.js 낮음버전 조건 부족nvm install 20
설치Vercel CLI 실패npm 권한 막힘글로벌 경로 설정
설치Playwright 멈춤허락 안 함Y 누르기
첫 실행상태줄 비어 있음표시 요청 없음/statusline 모델, 폴더 보여줘
첫 실행모델 변경 안 보임상태 확인 빠짐/model 후 상태줄 보기
첫 실행폴더 정리 바로 실행“해줘”로 시작“먼저 분석” 재요청
첫 실행결과물 없음중간 STEP 멈춤멈춘 STEP 보기
모드·Alias확인 질문 많음Default라 매번 물음Accept-edits로 바꾸면 돼요
모드·Alias너무 자동 실행Bypass로 켬/exit 후 cc 재시작
모드·Aliasalias 안 먹음rc 미적용source ~/.zshrc 한 번
모드·Alias다른 프로그램 실행별명 겹침다른 alias 쓰기
데이터분석sample_csv 없음자료 복사 빠짐CSV 8개 복사
데이터분석matplotlib 없음패키지 없음Y 누르기
데이터분석바로 결과 출력2단계 건너뜀“흐름부터” 재요청
데이터분석관점 부족조건 모자람관점 5개 요청
데이터분석한글 깨짐폰트 미설정AppleGothic 적용
데이터분석차트 과다개수 기준 없음핵심 5장만 남김
콘텐츠charts/ 없음Clip2 결과 빠짐Clip2에서 복사
콘텐츠이미지 깨짐파일명 불일치경로·파일명 맞추기
콘텐츠보고서 분량 이상비중이 흐림30p 기준 재조정
콘텐츠WebSearch 안 됨허락 놓침재시도 후 Y 누르기
콘텐츠외국 자료 위주지역 조건 빠짐국내·한국어 조건 추가
콘텐츠URL 안 열림출처 미확인열리는 URL로 교체
콘텐츠카드가 비어 있음기획 반영 빠짐N번 카드 채우기
콘텐츠영상 속도 이상시간 기준 없음카드 N초로 조정
포트폴리오질문 몰림인터뷰 제어부족하나씩 요청
포트폴리오리서치 저장 누락저장 지시 없음00-포트폴리오-리서치.md 저장
포트폴리오개인정보 부담실제 정보 전제가명·가상 프로필
포트폴리오변화가 안 보임브라우저 캐시강력 새로고침
배포Magic Link 안 옴메일 지연스팸함·터미널 링크 확인
배포배포 후 404index.html 없음파일명 index.html 확인
배포한글 파일명 실패경로 호환 문제영문 파일명 사용
배포이름 중복같은 이름 존재숫자·연도 추가
일반부분 수정이 전체 수정범위 지시 빠짐“다른 건 그대로” 붙이기
일반검색이 오래 걸림범위과다항목당 1~2회

여전히 안 되면 증상, 명령, 기대 결과만 붙여 새로 시작해보세요.

🔗 관련 클립

2-01, 2-03, 2-04, 3-02, 3-05, 3-08, 3-10

▸ CC101 with FC

패스트캠퍼스 "클로드코드 뽀개기" 강의 수강생을 위한 한국어 학습 가이드입니다. 영상 보면서 옆에 켜두고 따라하세요.

공식 문서cc101 (일반판)

© 2026 CC101 with FC · 패스트캠퍼스 클로드코드 뽀개기 강의 학습 가이드