파트 4의 시작 — '나만의 앱'을 직접 만듭니다. Claude Code는 앱이나 터미널에서 자연어로 코드를 작성·수정하는 도구로, 코딩을 몰라도 '말로 시켜서' 앱을 만들 수 있습니다. 이번 회차의 진짜 목표는 '코드를 받는 법'이 아니라 '계획 → 승인 → 수정 → 저장의 리듬'을 익히는 것 — 이 리듬이 8~10회차의 진짜 서비스로 이어집니다.
🚪 Claude Code 시작하기 — 두 입구: CLI · 데스크탑 앱
본격 실습 전에 '어디서 켤지'부터 정합시다. Claude Code는 같은 두뇌(Anthropic 모델 + 에이전트 엔진)를 여러 방식으로 쓸 수 있는데, 2026년 4월 데스크탑 앱이 '병렬 에이전트 작업 환경'으로 새로 단장되면서 입구가 또렷해졌습니다. 크게 보면 입구는 둘 — CLI(터미널)와 데스크탑 앱입니다. 일반적인 웹서비스를 만드는 데는 데스크탑 앱이면 충분하니, 비개발자는 앱으로 시작하는 걸 추천합니다. 터미널(CLI)은 자동화·CI나 '여러 에이전트 병렬' 같은 심화로 갈 때 진가를 발휘하고, 이때 '어떤 터미널에서 돌릴지'(기본 터미널·tmux·cmux 등)를 한 번 더 고를 수 있어요.
- 🖥️ CLI(터미널) — 가장 강력·자유. Node.js 설치 후 'npm install -g @anthropic-ai/claude-code' 한 줄. 7~8회차 실습 기본이고, 8회차 GitHub Actions 자동화도 동일한 CLI가 서버에서 돌아갑니다.
- 🪟 데스크탑 앱(Mac/Windows) — 별도 창에서 깔끔한 UI. 터미널 명령 없이 폴더만 열어 시작. 'claude.ai/download'에서 설치하고 Anthropic 계정 로그인이면 끝.
🖥️ 터미널 선택지 — CLI를 '어디서' 돌릴까 (심화·선택)
CLI를 고르면 질문이 하나 더 열립니다 — '어떤 터미널에서 claude를 돌릴까'. 먼저 핵심부터: 무엇을 고르든 그 안에서 도는 건 똑같은 claude CLI예요. 터미널은 그 CLI를 '담는 그릇'일 뿐이라, 아래 선택지는 모두 '같은 claude를 어디에 담느냐'의 차이입니다. 기본 터미널로도 충분하지만, '여러 에이전트를 병렬로 굴리고 싶다'면 멀티플렉서나 전용 터미널이 답이 됩니다.
- 🟢 기본 터미널 (macOS Terminal·iTerm2 / Windows Terminal) — 설치 0, 바로 시작. 이 강의 실습은 이걸 기준으로 진행합니다.
- 🔀 tmux — 2007년에 나온 터미널 멀티플렉서가 에이전트 시대에 부활. 세션 지속·창 분리·실시간 출력·원격 attach가 곧 '에이전트 오케스트레이션'에 필요한 바로 그 속성들이죠. git worktree와 묶으면 패널마다 다른 에이전트를 병렬로 — 사실상 표준 조합입니다. 단, 손에 익으려면 .tmux.conf 설정(보통 30~50줄)을 한 번은 손봐야 해요.
- ✨ Zellij — tmux의 현대판(Rust). 설정 파일 없이도 마우스·복사·키바인딩이 기본값으로 동작해 진입장벽이 낮습니다. 인터랙티브 작업엔 편하지만, 스크립트 자동화·오케스트레이션 생태계는 아직 tmux가 앞서요.
- 🚀 cmux — 아예 'AI 에이전트가 스스로 환경을 조작하는 것'을 전제로 만든 macOS 네이티브 전용 터미널. 세로 탭·스플릿·내장 브라우저로 Claude Code·Codex·Gemini CLI를 한 창에서 병렬 비교하고, 소켓 API로 외부 스크립트가 원격 제어까지. Lawrence Chen·Austin Wang이 2026.2 공개, GitHub 18.8k+ 스타. (Linux는 cmux-linux, Windows는 wmux 포트)
- 가장 쉬운 길 — 기본 터미널에서 그냥 'claude' (7회차 설치 흐름 그대로). 여기서 출발하세요.
- 병렬이 필요해지면 tmux: 'brew install tmux' → 'tmux' 실행 → 기본 접두키 Ctrl+b 다음에 % (세로 분할)·큰따옴표(가로 분할)·c (새 창). 각 패널에서 'claude'를 따로 띄웁니다.
- 전용 도구를 원하면 cmux: 'brew install --cask cmux' 또는 cmux.com에서 .dmg → 탭마다 claude·codex·gemini를 띄워 같은 폴더에서 비교, split(⌘D)으로 나란히.
- 어느 길이든 인증·사용량은 동일(같은 Anthropic 계정) — 터미널만 바뀔 뿐 claude 자체는 그대로입니다.
🪟 앱으로 시작하기 (터미널 없이 — 추천 경로)
데스크탑 앱으로 시작하면 설치·첫 앱·실행까지 클릭과 자연어만으로 가능합니다. 터미널(CLI)로 직접 하는 방법은 8회차 후반 'CLI 심화'에서 따로 다루니, 앱 사용자는 명령을 외울 필요 없이 '말로' 시키면 됩니다. (터미널이 이미 익숙하면 8회차 후반 CLI 심화부터 봐도 됩니다.)
- claude.ai/download 에서 데스크탑 앱 설치(Mac/Windows) → Anthropic 계정으로 로그인
- 새 프로젝트(폴더) 선택 또는 생성 — mkdir·cd 같은 명령 불필요
- 채팅창에 자연어로 첫 앱 요청 — 아래 '첫 앱 만들기'의 프롬프트를 그대로 붙여넣어도 됨
- 내장 미리보기 패널에서 결과 즉시 확인 (브라우저로 따로 열 필요 없음)
- '추가 버튼 크게', '완료 항목 흐리게'처럼 말로 수정 → 미리보기 자동 갱신
- 빌드·실행에 필요한 명령은 앱의 통합 터미널이 알아서 실행
🧰 Claude Code 앱 완전 정복 (2026.4)
'앱으로 시작하기'가 빠른 출발이었다면, 여기서는 앱의 핵심 기능을 화면 기준으로 하나씩 익힙니다. 2026년 4월 리디자인으로 앱은 '여러 작업을 동시에 굴리는 작업대'가 됐어요. 채팅·diff·미리보기·터미널 패널은 모두 드래그·드롭으로 원하는 격자 배치로 둘 수 있습니다.
🗂️ 병렬 세션 — 사이드바 + Git worktree
왼쪽 사이드바에서 작업(세션)을 여러 개 만들어 동시에 굴립니다. 각 세션은 Git worktree로 격리된 프로젝트 사본을 가져, 한 세션의 변경이 다른 세션에 영향을 주지 않습니다(머지 전까지).
- 사이드바에서 '+ 새 세션'으로 작업 추가 (예: 세션A=로그인 기능, 세션B=버그 수정)
- 각 세션은 같은 레포의 독립 worktree에서 동작 — 서로 안 섞임
- 세션 사이를 클릭으로 전환하며 병렬 진행
- 마음에 들면 각 세션의 변경을 커밋·머지
🔍 diff 뷰어 — 큰 변경도 한눈에 검토
Claude가 무엇을 바꿨는지 색으로 표시(추가=초록, 삭제=빨강). 대규모 변경도 빠르게 검토하도록 새로 만들어졌습니다.
- Claude가 파일을 수정하면 diff 뷰어 패널에 변경분이 뜸
- 추가/삭제 줄을 확인 → 의도와 맞는지 검토
- 맞으면 승인(커밋), 아니면 '이 부분 되돌려'로 수정 요청
👁️ 미리보기 패널 — HTML·PDF·로컬 서버
브라우저를 따로 열 필요 없이 앱 안에서 결과를 봅니다. HTML·PDF를 바로 열고, 로컬 개발 서버(localhost)도 패널 안에서 띄웁니다.
- 만든 index.html → 미리보기 패널에 바로 표시
- '개발 서버 띄워줘'(npm run dev 등) → 패널 안에서 실행 결과 확인
- 코드 수정 → 패널이 새로고침으로 갱신
- PDF·문서 결과물도 같은 패널에서 확인
⌨️ 통합 터미널 + 패널 배치
- 통합 터미널 — 테스트·빌드 명령을 앱이 실행하고 결과를 보여줌
- 드래그·드롭 — 채팅·diff·미리보기·터미널을 원하는 격자 배치로 정렬
💬 사이드 챗 (Cmd+;) — 본 작업 안 건드리고 곁가지 질문
긴 작업이 도는 중 '이거 잠깐 물어볼게'를 메인 대화에 끼어들지 않게. 메인 스레드에 추가 컨텍스트를 섞지 않고 곁에서 묻습니다.
- 작업 실행 중 Cmd+; 로 사이드 챗 열기
- 메인과 분리된 곳에서 질문 — 메인 스레드 컨텍스트 오염 없음
- 답 확인 후 메인 작업으로 복귀
🗣️ 첫 앱 만들기 — To-do 웹앱 (앱으로)
전형적인 첫 앱. 코드 한 줄도 안 쳐도 됩니다. 이 과정에서 '계획 → 승인 → 수정' 리듬을 직접 경험합니다.
- 앱에서 새 세션 만들기 — 작업할 빈 폴더 선택 (예: my-todo)
- 채팅창에 자연어로 첫 요청 — 아래 프롬프트 그대로
- Claude가 만들 파일을 미리 설명 → 'Accept'로 승인
- diff 뷰어에서 생성된 코드 확인
간단한 To-do 웹앱 만들어줘.
- HTML 한 파일에 CSS·JS 인라인
- 기능: 추가 / 완료 토글 / 삭제
- 저장은 localStorage (새로고침해도 유지)
- 디자인: 미니멀 다크, 폰트는 system
- 모바일에서도 잘 보이게 반응형
먼저 어떻게 만들지 계획 알려주고, 내가 OK 하면 코드 작성해줘.
🖥️ 로컬에서 실행 & 수정 (미리보기 패널)
- 미리보기 패널 열기 — 앱이 로컬 서버를 띄워 결과를 바로 보여줌
- 화면에서 마음에 안 드는 부분 메모
- 채팅창에 자연어로 수정 요청 — '추가 버튼이 더 컸으면', '완료된 항목은 흐리게'
- 패널에서 즉시 반영 확인 — 마음에 들 때까지 반복 (한 번에 한두 가지만)
🧩 MCP·플러그인·SSH — 앱의 능력 확장 (이제 CLI와 동등)
MCP(Model Context Protocol)는 Claude에 외부 도구를 붙이는 표준 — 한 번 연결하면 '내 노션', '내 시트'에 Claude가 직접 접근합니다. 2026.4 리뉴얼로 앱이 CLI와 동등하게 플러그인·MCP·SSH까지 지원해요.
- MCP 예 — GitHub(이슈·PR) · Notion(페이지 읽기·쓰기) · Google Drive·Sheets(시트 데이터) · Filesystem(특정 폴더 안전 접근) · Slack(메시지)
- 플러그인 — 스킬·명령 묶음을 한 번에 설치 (CLI·앱 공통, 바로 뒤에서 자세히)
- SSH 세션 — 멀리 있는 클라우드 서버에 명령창으로 접속해 그 위에서 바로 작업 (예: 카페에서 회사 클라우드 서버에 붙어 그 서버의 코드를 직접 수정)
- Routines(예약) — 정해진 시간에 자동 실행 (8회차 'Anthropic Cloud' 참고)
- 백그라운드 에이전트 — 작업을 뒤에서 대신 진행
🧩 스킬 & 플러그인 — 나만의 Claude Code 만들기
MCP가 '외부 도구를 연결'하는 거라면, 스킬·플러그인은 'Claude가 일하는 방식 자체를 내 식대로 굳혀두는 것'입니다. 같은 작업을 매번 길게 설명하지 않아도 되게 만들어요.
- 스킬(Skill) — 자주 하는 작업의 '방법'을 파일 하나(SKILL.md)에 적어두면, 비슷한 요청이 올 때 Claude가 알아서 그 절차대로 처리. 예: '커밋 정리' 스킬을 만들면 '커밋해줘' 한마디에 늘 같은 규칙으로 실행
- 어떻게 불리나 — 파일 맨 위 '설명' 한 줄을 보고 Claude가 상황에 맞으면 자동으로 꺼내 씀. 콕 집어 부르려면 /스킬이름 입력
- 어디에 두나 — 나만 쓰기(~/.claude/skills) · 프로젝트 공용(.claude/skills, 팀과 git으로 공유) · 플러그인에 동봉
- 플러그인(Plugin) — 스킬 + 슬래시 명령 + 서브에이전트 + 훅 + MCP를 한 꾸러미로 묶은 '설치팩'. /plugin 으로 마켓플레이스에서 골라 설치
- 관계 한 줄 — 플러그인은 '상자', 그 안에 스킬·명령·에이전트가 담김. 혼자 쓰면 스킬 한 개, 팀·커뮤니티에 나눠주려면 플러그인으로 포장
- /plugin 입력 → 마켓플레이스에서 원하는 플러그인 설치 (안의 스킬·명령이 한꺼번에 추가, /플러그인이름:스킬 형태로 호출)
- 자주 반복하는 내 작업이 있으면 → .claude/skills/ 에 SKILL.md 한 개 만들어 '나만의 스킬'로
- 그 스킬이 쓸 만하면 → 플러그인으로 묶어 팀·동료에게 배포
🧩 (심화) 서브에이전트 & 훅 — 플러그인 속 두 부품
앞에서 플러그인이 묶는다고 한 '서브에이전트'와 '훅'이 뭔지 한 번만 짚고 갑니다. 비개발자는 '이런 게 있구나' 정도면 충분해요.
- 서브에이전트(Subagent) — Claude가 한 부분을 떼어 '전문 비서'에게 맡기고 결과만 받는 것. 별도 작업창에서 따로 처리해 본 대화가 안 길어짐. 예: '코드 리뷰 전담'·'테스트 작성 전담' 비서를 두고, Claude가 상황을 보고 판단해 알아서 넘김
- 훅(Hook) — 특정 순간에 '자동으로 실행되는 정해진 명령'. AI 판단이 아니라 규칙이라 매번 똑같이 실행. 예: Claude가 파일을 고칠 때마다 자동으로 코드 정리(포맷) · 작업 끝나면 알림 · 민감 파일 수정은 차단
- 핵심 차이 — 서브에이전트는 'Claude가 판단해 전문 비서에게 넘기고 결과만 받음', 훅은 '정해진 순간 무조건 실행'
🧠 워크플로 감각 — 잘 되는 패턴
같은 도구를 써도 결과가 다른 건 '리듬' 차이. 다음 패턴을 익히세요.
- 🎯 명확한 한 가지 요청 — 한 번에 한 기능. '추가 + 완료 + 삭제'가 아니라 '추가만 먼저'
- 📋 계획 먼저 — 큰 변경은 '먼저 계획만, 승인 후 실행'
- 👀 작은 단위로 확인 — 매 단계 브라우저 확인 후 다음
- 💾 자주 저장 — Git으로 커밋(8회차에서 실습), 'Restore' 가능하게
- ❌ 잘못된 방향은 빨리 되돌리기 — 5분 헛도면 무리해서 가지 말고 처음으로
- 🔁 같은 결과 안 나오면 컨텍스트 리셋 — '/clear' 후 다시 정확히
⚙️ 슬래시 명령 — 자주 쓰는 것만 (앱·CLI 공통)
입력창에 '/' 를 치면 명령 메뉴가 뜹니다 — 앱·CLI 모두. 아래는 앱 채팅창에서도 그대로 되는 핵심.
- /clear — 현재 대화 컨텍스트 비우기 (새 작업 시작 시)
- /init — 현재 폴더에 CLAUDE.md 자동 생성 (프로젝트 컨텍스트)
- /model — 사용할 모델 변경 (앱은 입력창 옆 드롭다운으로도)
- /compact — 길어진 대화를 요약해 컨텍스트 절약
📜 CLAUDE.md — 프로젝트에 영구 지침 주기
매번 'React 쓰지 마', '한국어로 답해'를 반복하긴 번거롭습니다. 프로젝트 루트에 CLAUDE.md를 두면 Claude가 매 세션 시작 시 자동으로 읽습니다.
# 이 프로젝트 규칙
- 언어: 한국어로 답변
- 스타일: Vanilla JS + HTML 한 파일 구조
- 디자인: 미니멀 다크, system 폰트
- 코드 주석은 최소화
- 새 라이브러리 추가 전 반드시 물어볼 것
- 모든 데이터는 localStorage, 외부 API 호출은 명시적 허가 후
🔒 권한 모드 & 보안
Claude Code는 파일을 고치고 터미널 명령을 실행하는 권한이 강력합니다. 그래서 평소엔 '얼마나 자주 멈춰서 물어볼지'를 터미널(CLI)에서 Shift+Tab 키 하나로 조절합니다 — 누를 때마다 아래 세 모드를 차례로 돕니다(상태 표시줄에 현재 모드가 떠요). 데스크톱 앱·웹(GUI)에는 Shift+Tab이 없으니, 상단 '권한 모드 드롭다운'에서 고르세요(맥 Cmd+Shift+M / 윈도우 Ctrl+Shift+M).
- 기본(default) — 위험 작업(파일 수정·삭제·외부 호출) 때마다 멈춰 승인 요청. 가장 안전한 출발점.
- Edit 자동 승인(acceptEdits) — 파일 편집은 묻지 않고 진행하고, 결과는 나중에 diff로 검토. 손이 빨라지는 대신 그만큼 덜 멈춤.
- 계획(plan) — 실제로 바꾸지 않고 '이렇게 하겠다'는 계획만 작성. 큰 작업 전에 방향부터 맞출 때.
여기까지가 '안전한 범위'입니다(터미널은 Shift+Tab으로 순환, GUI는 위 드롭다운으로 전환). 모드와 별개로, 보안의 기본기는 꼭 챙기세요 — 이게 돼 있어야 뒤의 자동화도 마음 놓고 씁니다.
- .gitignore에 .env·node_modules·.claude/ 등 필수 추가 (실수로 올라가면 안 되는 것들)
- 민감 데이터(API 키)는 코드가 아닌 .env에 — Claude도 권장하면 자동으로 그렇게 합니다
⚡ 권한 프롬프트 줄이기 — 안전하게 단계별로 (터미널 기준)
아래 단계는 터미널(CLI) 기준입니다 — 데스크톱 앱·웹(GUI) 사용자는 뒤의 '앱으로 시작' 슬라이드를 참고하세요. 앞의 모드 선택이 '어떤 방식으로 일할지'를 고르는 다이얼이라면, 여기서는 한 발 더 나아가 '확인 자체를 어디까지 생략할지'를 정합니다. 실습을 하다 보면 grep·ls 같은 안전한 명령까지 매번 '허용하시겠습니까?'를 물어 흐름이 끊기거든요. 무작정 전부 끄지 말고, 위험도에 맞춰 아래 순서로 한 칸씩 푸는 게 정석입니다 — 내려갈수록 편하지만 그만큼 위험해집니다.
- 1단계 · 그 명령만 허용 — 다이얼로그에서 '항상 허용'을 누르면, 그 명령 패턴 하나만 프로젝트 설정(.claude/settings.local.json)에 저장돼 다음부터 안 물어봅니다. 쓰면서 자연스럽게 쌓여 가장 안전.
- 2단계 · 안전한 명령만 미리 등록 — 같은 settings.local.json의 permissions.allow에 'Bash(grep:*)'처럼 '도구(명령 prefix):*' 형태로 읽기 전용 명령을 적어두면 그것만 자동 통과. 등록 안 한 위험 명령은 계속 확인합니다.
- 3단계 · 세션 전체 자동 (CLI 전용) — 터미널에서 'claude --dangerously-skip-permissions'로 시작하면 이번 세션 동안만 모든 확인을 건너뜁니다. 창을 닫으면 원래대로 복귀. 데스크톱 앱은 설정에서 'Bypass permissions' 활성화 후 모드 선택기로 동일 효과 — 뒤의 '앱으로 시작' 슬라이드 참고.
- 4단계 · 영구 자동 (개인 전역 설정) — ~/.claude/settings.json의 permissions.defaultMode를 'bypassPermissions'로 두면 내 PC의 모든 프로젝트에서 켤 때마다 자동으로 전체 생략. 주의: 프로젝트 폴더 안의 .claude/settings.local.json에 같은 설정을 넣어도 현재 버전(v2.1.72+)에서는 작동하지 않는 버그가 있습니다 — 반드시 개인 전역 파일(~/.claude/settings.json)에만 설정하세요. 가장 편하지만 가장 위험합니다.
// .claude/settings.local.json — 안전한 읽기 명령만 자동 허용 (2단계 · 권장)
{
"permissions": {
"allow": [
"Bash(grep:*)",
"Bash(ls:*)",
"Bash(cat:*)"
]
}
}
🐛 막힐 때 — 30초 대응
에러가 나면 메시지를 그대로 복사해 Claude에 붙여넣고 '고쳐줘'. 꼬이면 '/clear' 후 다시 한 줄로 명확히, 또는 직전 커밋으로 되돌리기. 재현·콘솔·수정·재테스트로 이어지는 '5단계 디버깅 워크플로'는 8회차에서 본격적으로 다룹니다.
📌 7회차 핵심
- 앱으로 시작하면 터미널 없이 — 설치·첫 앱·실행·수정까지 클릭과 자연어로 (일반 웹서비스는 이걸로 충분).
- CLI는 심화 경로 — 터미널 명령 10개면 충분하고, 막히면 그것조차 Claude에 물어보면 된다.
- Claude Code = '말로 시키는 코딩' — 자연어가 곧 코드.
- 리듬이 중요 — 계획 먼저 → 승인 → 작은 단위로 수정 → 확인.
- CLAUDE.md로 프로젝트 영구 지침, 슬래시 명령(/clear·/init)으로 흐름 제어.
- IDE 통합(VS Code) + MCP로 능력 확장. 권한 프롬프트는 위험도에 맞춰 단계별로 — 안전한 명령만 풀고, 전체 해제(bypass)는 신뢰할 수 있는 프로젝트에서만.