Post

[AI 터미널 도구 3~4일차] Claude Code 시작

[AI 터미널 도구 3~4일차] Claude Code 시작

AI CLI book cover

도서명 : AI 자율학습 클로드 코드·코덱스 CLI·제미나이 CLI 완전 활용법

이 포스팅은 길벗 출판사의 코딩 자율학습단 20기 활동의 일환으로, 개인 공부 정리용 포스팅이다.


3장. Claude Code 시작하기

결제후에 폴더 접근 권한을 확인하면 Claude Code 홈 화면이 생성된다.

3.1 - Claude Code 실행 환경 준비

(1) Claude Code의 입력 방식

1. 명령 프롬프트

  • > 기호 자체가 명령 입력 위치를 의미
  • /login, /model, /help와 같은 슬래시 기반 제어 명령을 입력하는 영역
  • CLI 설정 변경, 인증, 모델 선택 등 시스템 제어 기능 수행

2. 지시문 프롬프트

  • > 뒤에 자연어로 작성하는 일반 지시문
    • ex ) “@src/App.tsx 버튼 색상을 파란색으로 바꿔줘”
  • 파일 경로(@), 코드 블록, 자연어 설명 등을 조합해 AI에 작업을 요청

줄바꿈 입력 방식

  • \ + Enter
  • Shift + Enter : macOS의 iTrm2와 Cursor 내장 터미널 등 Claude Code가 자동 감지하는 일부 터미널에서는 Shift + Enter 적용 가능

모델 선택

  • /model : 현재 선택된 모델의 목록이 기본값으로 표시되며, 모델 구성은 매번 바뀜. 한 번 선택한 모델은 세션 단위로 유지
    • 세션 : Claude Code를 실행하고 /exit또는 Cntr + D로 종료할 때까지의 작업 단위

토큰과 컨텍스트 윈도우

1. 토큰(token)
AI 모델이 텍스트를 처리할 때 사용하는 기본 단위. 입력 문자열이 길어질수록 토큰 사용량도 증가

  • 영어단어 1개 -> 1~2토큰
  • 한글글자 1개 -> 1~2토큰

2. 컨텍스트(context)와 컨텍스트 윈도우(context window)

  • 컨텍스트 : AI가 현재 대화나 작업을 수행할 때 기억하고 참고할 수 있는 모든 정보를 의미함
    • 책상 위에 펼쳐놓은 자료
  • 컨텍스트 윈도우 : AI 모델이 한 번에 읽고 기억하며 작업할 수 있는 전체 정보의 양을 의미
    • 책상의 크기

3.2 - Claude Code와 상호작용하는 기본 패턴

Claude Code와의 상호작용 패턴은 크게 세 가지 상황에서 가장 자주 사용.

1. 새 프로젝트를 시작할 때 - 기술 스택, 구조 생성 요청

1
2
3
4
> 회사 홍보 웹 페이지를 만들고 싶은데 추천하는 기술 스택을 알려줘.
> Next.js와 TypeScript로 블로그 프로젝트를 시작하고 싶어.
  기본 폴더 구조와 설정 파일을 생성해줘.
> Python Flask로 Rest API 서버를 만들고 싶어. 초기 프로젝트 골격을 잡아줘.

2. 기존 프로젝트를 분석할 때 - 구조, 기술 스택, 진입점 파악

1
2
3
> 이 프로젝트는 무엇을 하는 프로젝트야?
> 프로젝트의 진입점(main entry point)은 어디야?
> 폴더 구조를 전체적으로 설명해줘.

3. 구체적인 개발 작업을 요청할 때 - 파일 생성, 수정, 삭제

1
2
3
> src/utils 폴더에 날짜를 포매팅하는 유틸리티 함수를 추가해줘.
> App.tsx 파일에서 버튼 색상을 파란색에서 초록색으로 변경해줘.
> 프로젝트에 TypeScript 설정(tsconfig.json)을 추가해줘.

이러한 요청은 Claude Code가 자동으로 관련 파일을 생성, 수정, 삭제하며, 필요할 경우 diff를 보여준 뒤 승인을 요청하기도 함.

4. 여러 줄로 구조화된 요청을 작성할 때

1
2
3
4
5
> 다음 요구 사항에 맞는 로그인 컴포넌트를 만들어줘.
	- 이메일과 비밀번호 입력 필드
	- 입력값 유효성 검사
	- 로그인 버튼 클릭 시 API 호출
	- 로딩 상태 표시

요구 사항을 리스트처럼 구조화하면 더 정확하게 이해함.


3.3 - 세션 관리

Claude Code는 모든 대화를 세션 단위로 관리한다. 세션이란 Claude Code를 실행한 시점부터 종료할때까지의 작업 흐름을 의미함.
세션은 다음과 같은 특성이 있다.

  • 각 세션은 고유한 ID를 가짐
  • 세션 내 모든 대화가 컨텍스트로 유지됨
  • 세션을 종료해도 대화 기록이 자동 저장됨
  • 저장된 세션은 다시 열어 이어서 작업할 수 있음

세션 종료

1
2
> \quit
> \exit
  • Ctrl + C : 현재 응답 생성만 중단

이전 세션 이어서 실행

# 세션 목록 표시
claude -r

# 마지막 세션 즉시실행
claude -c

3.4 - 컨텍스트 관리

Claude Code는 사용자가 주고받은 모든 대화 내용과 파일 수정 기록, CLAUDE.md에 정의된 규칙 등을 하나의 컨텍스트로 유지함.
컨텍스트 는 쉽게 말해 Claude가 지금까지 이해한 모든 ‘작업 기억’으로, 사람이 대화할 때 압뒤 문맥을 자연스럽게 이어가는 것과 같은 역할을 함.
컨텍스트는 무한하지 않음. Claude는 지정된 토큰 한도 안에서만 컨텍스트를 유지할 수 있음.

  • 대화가 길어지면 정보가 점점 쌓임
  • 한도를 넘어서면 오래된 내용이 자동 축약되거나 제거됨
  • 중요한 맥락이 사라지면 Claude가 이전 작업 흐름을 놓칠 수 있음 따라서 특정 시점에 컨텍스트를 정리해주면 Claude의 이해력이 유지됨.

컨텍스트 명령어

  • /clear : 세션의 모든 대화를 초기화하고 새로 시작
    • ex ) 완전히 새로운 작업을 시작할 때, Claude가 잘못된 컨텍스트에서 벗어나지 못할 때
  • /compact : 이전 대화를 Claude가 스스로 요약해 컨텍스트를 압축
    • ex ) 대화가 길어졋지만 작업 흐름을 유지하고 싶은 경우, 대화는 계속하지만 토큰 소모를 줄여야 하는 상황

CLAUDE.md

보통 Claude Code는 세션이 종료되면 대화 컨텍스트는 사라지고 새 세션을 시작해야 한다. 하지만 프로젝트 단위에서 반복되는 정보(규칙, 구조, 설명)는 매번 다시 설명하기 어렵기 때문에 CLAUDE.md라는 프로젝트용 ‘영구 메모리’ 파일을 제공한다.

  • /memory : CLAUDE.md 파일을 열어 프로젝트 규칙을 직접 수정
  • /init : 현재 프로젝트를 분석해 CLAUDE.md를 자동 생성

3.5 - 대화형 모드

대화형 모드(interactive mode)는 Claude Code를 실행하면 기본적으로 활성화 되는 모드.
사용자가 자연어로 작성한 요청을 기반으로 Claude가 즉시 코드를 일고, 수정 제안을 표시하거나 직접 파일을 생성 및 편집함. 기본모드 (터미널에서 claude실행)와 YOLO 모드가 있음

  • YOLO 모드 (권한 자동 승인 모드) YOLO(You Only Live Once) 모드는 읽기, 쓰기, 명령 실행 등 모든 권한을 자동으로 승인하는 고급 실행 옵션. 격리된 개발 환경이나 단독 프로젝트처럼 안전한 환경에서만 사용하는 것이 좋음
    claude --dangerously-skip-permissions
    

세션 내에서 실행 모드 전환

대화형 모드를 실행한 뒤에는 Shift + Tab을 눌러 실행 모드를 전환할 수 있음 Shift Tab이 안먹힐시 Alt + M

기본 모드에서의 전환 : 기본모드 -> accept edits on -> plan mode on

  • accept edits on : Claude가 제안한 코드 수정은 자동 적용하지만 파일 읽기와 명령 실행
  • plan mode on : Claude가 먼저 전체 계획을 제시하고 사용자가 승인한 뒤 수정 및 실행이 이루어지는 안전 모드
    YOLO 모드에서의 전환 : bypass permissions on -> 기본 모드 -> accept edits on -> plan mode on
  • bypass permissions on : 모든 권한 자동 승인(읽기, 쓰기, 명령 실행 모두 즉시 실행)
  • accept edits on : 기본 모드와 동일하게 파일 수정 자동 승인, 그 외 작업은 승인 필요
  • plan mode on : 실행하기 전에 변경 계획만 제시하고 사용자의 승인을 기다림

3.6 - 명령형 모드

명령형 모드(command mode) 는 Claude Code와의 대화 세션을 유지하지 않고, 한 번의 요청만 실행한 뒤 즉시 종료하는 모드

단일 요청 실행 방법

# 시간 복잡도 분석
claude -p "src/utils/dates.ts 파일을 열어(파일 경로 기준) 시간 복잡도를 분석해줘."
# 최근 변경 코드 리뷰
claude -p "main 대비 현재 브랜치의 변경분을 기준으로 코드 리뷰를 수행해줘."

계획 모드와 함께 사용

claude --permission-mode plan -p "JWT 인증 기능 구현 계획을 세워줘."
  • 다음과 같은 경우에 유용
  • 기능을 구현하기 전에 설계 초안을 자동으로 생성할 때
  • 코드 리뷰용 분석 리포트를 만들 때
  • 프로젝트 초기 구조를 기획하며 전체 흐름을 빠르게 점검할 때

파이프로 입력 전달

기존 터미널 명령과 파이프로 연결할 수 있음

cat error.log | claude -p "이 오류 로그를 분석해 문제 원인을 요약해줘."

출력 형식 지정하기

# 출력 형식 지정
claude -p "이 프로젝트 함수 목록을 JSON으로 나열해줘." --output-format json
# 결과 파일로 저장
claude -p "README 초안을 작성해줘." > README.md

이전 세션 컨텍스트 불러오기

# 컨텍스트 없이 실행
claude -p "리스트와 튜플의 차이를 설명해줘."
# 특정 세션 컨텍스트 활용
claude -c -p "이전에 수정한 코드의 타입 오류를 다시 확인해줘."

3.7 - 모드별 활용 시나리오

대화형 모드 추천 시나리오

  • 1 - 새 프로젝트 탐색
1
2
3
4
> 이 프로젝트의 전체 구조를 설명해줘.
> 인증 로직이 어떻게 동작해?
> 데이터베이스 모델 파일을 보여줘.
> 가장 복잡한 부분을 어디야?
  • 2 - 복잡한 기능 구현(계획 모드 병행 권장)
1
2
> [Shift] + [Tab] -> plan mode on
> JWT 기반 사용자 인증 시스템을 설계해줘.

Shift Tab이 안먹힐시 Alt + M

  • 3 - 버그 디버깅
1
2
3
4
> 로그인 시 500 오류가 발생했어. 원인을 찾아줘.
> auth.js 파일을 점검해줘.
> 데이터베이스 연결 부분이 이상한 것 같아 자세히 확인해줘.
> 연결 풀 설정이 잘못된 것 같은데 수정해줘.
  • 4 - 리팩터링(계획 모드 병행 권장)
1
2
> [Shift] + [Tab] -> plan mode on
> user-service.js를 리팩터링하고싶어. 개선점과 영향도를 분석해줘.

Shift Tab이 안먹힐시 Alt + M

  • 5 - 학습 및 코드 이해
1
2
3
4
> 이 프로젝트에서 사용하는 디자인 패턴을 설명해줘.
> Factory 패턴이 실제 코드에서 어떻게 적용됐는지 예시를 보여줘.
> 다른 방식으로 구현하면 어떤 차이가 있어?
> 장단점을 비교해 줘.

명령형 모드 추천 시나리오

  • 1 - 빠른 코드 분석
1
2
3
4
# 로그 분석
cat error.log | claude -p "오류 로그를 분석하고 원인을 찾아줘."
# 의존성 점검
cat package.json | claude -p "사용하지 않는 패키지가 있는지 확인해줘."
  • 2 - 간단한 문서 생성
1
2
# README 파일 자동 생성
claude -p "이 프로젝트의 README 파일을 작성해줘." > README.md
  • 3 - 개발 도구 결과 해석
1
2
3
4
# 테스트 결과 분석
npm test | claude -p "실패한 테스트를 분석하고 수정 방법을 알려줘."
# 린트 오류 설명
npm run lint | claude -p "이 린트 오류 메시지들을 분석해줘."

3.8 - Extended Thinking

Extended Thinking(확장 추론) 은 Claude가 답변을 생성하기 전에 문제를 더 깊이 분석하도록 만드는 기능. 단순히 빠른 답을 얻는 것이 아니라, 근거 기반의 설계 제안, 대안 비교, 논리 구조화, 원인 분석처럼 복잡한 의사결정이 필요한 작업에서 특히 효과를 발휘함.
일반적인 기능 구현이나 짧은 수정에는 기본 모드로도 충분하지만, 아키텍처 설계, 성능 및 보안 진단, 레거시 구조 개편, 복잡한 버그 분석 등에는 Extended Thinking을 사용하면 결과의 질이 눈에 띄게 향상될 수 있다. 다만, 더 많은 토큰과 시간이 소모되므로 필요한 순간에 선택에 사용하는 것이 중요

Extended Thinking 켜고 끄기

Extended Thinking은 세션 단위와 요청 단위, 두 가지 방식으로 사용할 수 있다.

1. 세션 전체에 적용 대화형 세션에서는 Alt+T로 Extended Thinking을 켜고 끌 수 있음. 입력시 다음과 같은 메뉴가 표시

1
2
3
Toggle thinking mode Enable or disable thinking for this session.
> 1. Enabled  Claude will think before responding
  2. Disabled  Claude will respond without extended thinking

Enabled - 활성화, Disabled - 비활성화
macOs와 Linux에서는 단축키가 제대로 작동하지 않는경우 /config 명령어로 on/off가능

2. 특정 요청에만 적용 비활성화시에도 ultrathink 키워드를 사용하여 해당 요청만 Extended Thinking으로 처리됨

1
> 인증 흐름을 검토하고 개선 방향을 제시해줘, ultrathink

3.9 - 키워드 사용 방법

1. 문장 끝에 키워드 붙이기

1
2
> 인증 흐름을 검토하고 개선 방향을 제시해줘, ultrathink     # 안정적
> 인증 흐름을 ultrathink 기준으로 점검해 취약점을 정리해줘.  # 신호가 약해질 수 있음

2. 출력 형식 지정하기

키워드만 적용하면 설명만 길게 늘어나 읽기 어렵거나 결론, 근거, 다음 행동이 섞여서 문서로 쓰기 어려울 수 있음. 실무에서 중요한 것은 깊은 사고 자체가 아니라 붙여넣어 바로 쓸 수 있는 결과물이므로 다음과 같이 키워드와 문서 구조와 출력 형식을 조합하면 실전에서 재사용성이 높아짐.

  • 문서 구조 : “3단구성”, “보고서 형식”, “요약 -> 근거 -> 권고”
  • 표현 형식 : “표”, “체크리스트”, “번호 목록”
1
2
3
4
> # 문서로 바로 쓰기 좋음
> 함수의 성능 저하 원인을 찾고, 결과를 표로 정리해줘, ultrathink
> # 내용이 산만해질 수 있음
> 함수의 성능 병목을 원인을 분석해줘, ultrathink

3. 작업 범위 지정하기

Claude는 요청을 받으면 가능한 많은 가능성을 고려하려고 한다. 그런데 범위가 열려있으면 다음과 같이 문제가 생길 수 있다.

  • 어디까지 봐야 할지(파일/모듈/서비스 경계 불명확)
  • 무엇을 기준으로 개선해야 할지(성능/보안/테스트/가독성 혼재)

이때 ultrathink 키워드를 붙이면 넓은 범위에서 깊게 파고들어 결과가 길고 모호해질 수 있다. 따라서 범위나 관점을 지정해주는 것이 좋다.

  • 범위 : 함수, 파일, 모듈, 인증 흐름
  • 관점 : 성능, 보안, 테스트, 유지보수 중 1~2개만
1
2
3
4
> # 분석이 집중됨
> 인증 흐름을 보안 관점에서 점검해 취약점/리스크/개선안을 3단 구성으로 써줘, ultrathink
> # 분석 범위가 너무 넒음
> 함수의 성능 병목을 원인을 분석해줘, ultrathink

키워드를 사용할 때 다음 구조로 요청하면 가장 안정적이다.

  • 무엇을 해달라(작업)
  • 어디까지 보라(범위)
  • 무엇을 기준으로 보라(관점)
  • 어떤 형태로 내라(출력 형식)
  • 마지막에 ultrathink 적용
1
2
3
> 이 함수의 성능 병목을 찾아 원인을 설명해줘.
  범위는 이 함수와 호출자까지로 제한하고, 성능 관점에서 개선안을 3개 제시해줘.
  결과는 표로 정리해줘, ultrathink

3.10 - 추천 워크플로

1. 프로젝트 시작 - Extended Thinking으로 큰 그림 먼저 잡기

  • 목표 : 폴더 구조, 아키텍처, 데이터 흐름 같은 장기 결정을 먼저 정리
  • 방법 : 중간에 흔들리지 않는 설계 기반 확보
1
2
> 간단한 할 일 관리 앱을 만들고 싶어.
  인증, CRUD, 검색 기능 포함해 아키텍처를 설계해줘, ultrathink

2. 구현 단계 - 기본 모드로 빠르고 명확하게

1
2
3
> 로그인 폼에 이메일 유효성 검사를 추가해줘.
> 버튼 색상을 파란색으로 변경해줘.
> 이 함수에 주석을 추가해줘.

3. 막히거나 판단이 필요한 경우 - 선택적으로 깊게

  • 원인 규명, 진단
  • 전략, 설계 수준의 의사 결정
1
2
> 로그인 실패가 간혈적으로 발생하는데 원인을 분석해줘, ultrathink
> 이 성능 문제를 해결하기 위한 전략을 제안해줘, ultrathink

3.11 - 슬래시 명령어

기본 슬래시 명령어

1. /init - 프로젝트 초기화
처음 프로젝트에 도입할 때 실행하는 초기화 명령.
현재 폴더를 스캔해 프로젝트 요약과 기본 규칙을 정리한 CLAUDE.md 초안을 자동으로 생성하며, 이후 Claude는 이 파일을 지속해서 참조.
다음과 같은 경우에 실행

  • Claude Code를 프로젝트에 처음 적용할 때
  • 기존 프로젝트를 Claude가 인식하도록 초기 학습시키고 싶을 때

2. /clear - 대화 기록 초기화
현재까지의 대화 기록을 모두 삭제하고 새로운 세션처럼 시작하는 명령어.
다음과 같은 경우에 실행.

  • 새 작업을 시작할 때
  • 이전 대화가 필요 없을 때
  • 컨텍스트가 너무 커져 Claude가 맥락을 잘못 잡기 시작할 때

3. /compact - 대화 요약
전체 대화를 지우고 싶지 않을 때 사용하는 요약 기반 압축 명령.
대화 내용을 유지하면서도 토큰 사용량을 줄일 수 있다.
토큰이 한계에 가까워지면 자동으로 압축을 수행하지만, 자동 압축과 /compact 명령 모두 불완전하고 오류가 발생하기 쉽다.
다음과 같은 상황에서 사용.

  • 컨텍스트 사용량이 높아질 때
  • 긴 세션이 계속되어 메모리가 소모될 때
  • 기능 단위로 대화를 정리하고 싶을 때

4. /context - 컨텍스트 사용량 시각화
현재 세션의 컨텍스트가 얼마나 사용되고 있는지 간단한 블록으로 시각화해주는 명령
다음과 같은 상황에서 실행.

  • 대화가 길어져 컨텍스트 윈도우가 얼마나 찼는지 확인할 때
  • 어떤 구성 요소가 토큰을 많이 소비하는지 파악할 때
  • /clear로 세션을 초기화해야 할지 판단할 때

5. /doctor - 설치 상태 진단
Claude Code 설치 상태, Node.js 버전, PATH 설정, 업데이트 필요 여부를 점검하는 명령.
다음과 같은 상황에서 실행.

  • 업그레이드 후 문제가 생겼을 때
  • 명령어가 정상 작동하지 않을 때
  • 설정 오류가 의심될 때

6. /usage - 사용량 및 구독 상태 확인
현재 구독 플랜의 사용량을 시각적으로 보여주는 명령.

고급 슬래시 명령어

1. /memory - 프로젝트 메모리 열고 편집
CLAUDE.md를 직접 편집하는 명령. 주요 용도는 다음과 같음.

  • 프로젝트 규칙, 코딩 가이드라인 저장
  • 반복되는 설명을 영구 메모리화
  • API구조, 폴더 구조 등 정적 정보 관리

2. /config - 환경 설정 패널 열기
동작 방식을 제어하는 주요 설정을 변경할 수 있는 패널을 여는 명령. 주요 항목은 다음과 같음

  • Auto-compact : 컨텍스트 임계 시 자동 압축
  • Rewind code (checkpoints) : 변경 체크포인트 생성
  • Verbose output : 상세 출력
  • Theme : 테마 변경
  • Notifications : 터미널 알림 방식
  • Editor mode : 기본 편집기 설정
  • Model : 기본 모델 설정

3. /export - 대화 내보내기
현재 세션의 대화 내용을 저장하거나 클립보드로 복사할 수 있는 기능.

  • Copy to clipboard : 대화 내용을 시스템 클립보드로 복사, Slack, Notion, 이메일 등 공유용으로 적합
  • Save to file : 대화 내용을 .md 파일로 저장

4. /resume - 이전 세션 이어서 작업하기
이전 세션을 이어서 작업하고 싶을 때 사용하는 명령.

5. /output-style - 응답 톤과 형식 전환
프로젝트 단계에 따라 설계 중심 또는 구현 중심처럼 작업 흐름에 맞는 스타일을 선택할 수 있음. 기본 제공 스타일은 다음과 같음.

  • Defalut : 간결하고 빠른 구현 중심
  • Explnatory : 코드 패턴과 이유를 상세히 설명
  • Learning : 사용자가 일부 코드를 직접 작성하도록 유도

6. /add-dir - 외부 디렉터리 추가
현재 프로젝트 외부의 폴더를 작업 범위에 포함시킬 때 사용하는 명령

  • 다른 프로젝트 폴더를 함께 참조해야 할 때
  • 공통 라이브러리를 동시에 작업할 때
  • 외부 유틸리티 폴더가 필요할 때
  • 모노레포에서 여러 서비스를 동시에 다룰 때

7. /exit, /quit - 세션 종료
세션을 종료하고 터미널로 복귀할 때 사용하는 명령. 나중에 /resume명령어로 언제든 작업을 이어서 수행 가능. 다음 단축키도 비슷한 기능 수행

  • Ctrl + D : 정상 종료
  • Ctrl + C 두번 : 강제 종료

사용자 정의 명령어

사용자 정의 멍령어를 정의해 반복 작업을 자동화할 수 있다.

저장 위치

  • ./.claude/commands/ : 프로젝트 전용 명령어, Git으로 버전 관리되어 팀원 전체와 공유
  • ~/.claude/commands/ : 개인 전용 명령어, 사용자 로컬 환경에서만 사용

사용자 정의 명령어 파일 구조

  • .claude/commands/analyze.md
1
2
3
4
5
6
7
8
9
10
11
12
---
title: "파일 분석  리팩터링 가이드"
description: "지정한 파일의 품질을 평가하고 개선 방향을 제안합니다."
arguments:
- name: file
- description: "분석할 파일 경로"
---
다음 파일을 분석하세요:

1. 코드 품질 진단
2. 구조적 개선 포인트
3. 리팩터링 제안




This post is licensed under CC BY 4.0 by the author.