바이브코딩이란? AI에게 코드를 맡길 때 사람이 해야 할 일
바이브코딩을 단순히 '말로 시키면 AI가 알아서 만드는 것'으로 받아들이지 않고, 사람이 요구사항과 확인 기준을 정한 뒤 AI가 만든 결과를 점검하는 작업 방식으로 이해합니다. 가상의 가계부 CSV 합계 도구를 예로 들어 입력·출력·하지 말 것·확인 방법을 한 쪽 메모로 정리합니다.
Claude Code가 파일을 수정하기 전에 git으로 기준점을 남기고, 작업 뒤에는 `git status`와 `git diff`로 실제 변경 내용을 읽는 흐름을 익힙니다. AI에게 diff 설명을 요청할 수 있지만, 설명만 믿지 않고 사람이 diff와 실행 결과를 확인한 뒤 직접 스테이징하고 커밋하는 절차를 사용합니다.
이런 분께Claude Code가 만든 변경을 되돌릴 수 있는 기준점과 검토 기록을 남기기 위해 git의 최소 작업 흐름을 익히려는 초보 사용자
Claude Code는 프롬프트마다 자동 체크포인트를 만들고 `/rewind`로 코드나 대화를 되돌리는 선택지를 제공하지만, 공식 문서에서도 이것이 git 같은 버전 관리를 대체하지 않는다고 설명합니다. 특히 Bash 명령의 rm, mv, cp 등으로 바뀐 파일과 Claude Code 밖에서 직접 바꾼 파일은 체크포인트가 추적·복원하지 못할 수 있습니다. 따라서 중요한 작업에서는 AI 기능과 별개로 git 기준점을 남기는 편이 좋습니다.
| 수단 | 이번 글에서의 역할 | 주의 |
|---|---|---|
| Claude Code 체크포인트 | 세션 중 되돌리기 보조 | 모든 외부 변경을 추적하는 버전 관리가 아님 |
| git commit | 작업 전·후 명시적인 상태 기록 | 커밋할 파일을 사람이 확인해야 함 |
| git diff | 실제 줄 단위 변경 확인 | AI 설명보다 diff 원문이 기준 |
| 실행 결과 | 기능이 요구사항대로 동작하는지 확인 | diff가 작아도 결과 검증은 별도로 필요 |
이 글의 목표는 git의 모든 기능을 배우는 것이 아닙니다. '작업 전 상태를 커밋하고, AI가 바꾼 뒤 diff를 읽고, 실행 결과를 확인한 다음 커밋한다'는 최소 흐름만 사용합니다.
이미 git 저장소라면 현재 상태를 먼저 확인하고, 아직 저장소가 아니라면 연습 폴더에서 초기화할 수 있습니다. 다음 예시는 앞선 글까지의 파일을 작업 전 기준점으로 기록하는 흐름입니다. 실제 프로젝트에서는 무조건 모든 파일을 추가하지 말고 `git status`로 포함 대상을 확인합니다.
cd vibe-expenses
git init
git status --short
git add expenses.csv summarize.py CLAUDE.md
git diff --cached
git commit -m "Baseline before category summary"이 컴퓨터에서 git으로 처음 커밋한다면 커밋 작성자 정보가 없어서 git commit이 멈출 수 있습니다. 그럴 때는 git config --global user.name "이름"과 git config --global user.email "이메일"로 한 번 설정한 뒤 다시 커밋합니다. 공개 저장소에 올릴 계획이라면 공개해도 괜찮은 이메일을 사용합니다.
`git diff --cached`는 커밋에 들어갈 스테이징된 변경을 보여줍니다. 처음 커밋이라 출력이 길 수 있지만, 적어도 의도하지 않은 파일이 섞이지 않았는지 확인합니다. 실제 업무 저장소에서 `.env`, 키 파일, 개인 데이터 같은 민감한 파일을 무심코 추가해서는 안 됩니다. 이 시리즈는 애초에 가상 데이터만 사용합니다.
이번 작업은 summarize.py에 `--by-category` 옵션을 추가하는 한 가지 기능입니다. Claude Code에 요청할 때도 다른 리팩터링이나 파일 정리를 함께 하지 말라고 범위를 좁힙니다. 변경이 작을수록 diff를 읽기 쉽고 문제가 생겼을 때 원인을 찾기 쉽습니다.
summarize.py에만 `--by-category` 옵션을 추가해줘.
기본 실행 결과는 바꾸지 말고, expenses.csv와 CLAUDE.md는 수정하지 마.
외부 패키지를 추가하지 마.
수정 후 어떤 파일을 바꿨는지 알려줘.Claude Code 공식 문서에는 자연어로 'what files have I changed?'처럼 변경 파일을 물을 수 있다고 안내되어 있습니다. 그러나 AI의 답만으로 변경 범위를 확정하지 않고, 바로 다음 단계에서 git이 보여주는 실제 상태를 확인합니다.
작업이 끝났다고 가정하면 먼저 `git status --short`로 변경 파일을 봅니다. 요구사항대로라면 summarize.py만 수정되어 있어야 합니다. 그다음 `git diff -- summarize.py`로 아직 커밋하지 않은 실제 변경 내용을 읽습니다. 파일명만 확인하고 바로 커밋하면 AI가 한 줄을 잘못 바꿔도 놓칠 수 있습니다.
git status --short
git diff -- summarize.py여기서 git diff는 '무엇이 실제로 바뀌었는가'를 보여주는 자료이고, AI 설명은 그 자료를 이해하도록 돕는 보조 수단입니다. 둘이 다르면 diff 원문과 실제 파일을 기준으로 판단합니다.
diff가 낯설다면 Claude Code에게 현재 변경을 설명해 달라고 요청할 수 있습니다. 이때 새 수정까지 한꺼번에 시키지 말고, 우선 설명만 요구하면 검토와 추가 변경이 섞이지 않습니다.
현재 git diff를 읽고 summarize.py에서 바뀐 내용을 설명해줘.
1) 기존 동작 유지 부분
2) `--by-category`를 위해 추가된 부분
3) 원본 CSV를 수정하는 코드가 있는지
4) 외부 패키지를 새로 쓰는지
네 항목으로만 정리해줘. 지금은 파일을 더 수정하지 마.[편집 예시 · 실제 응답 아님]
- 기존 월별 합계 계산은 유지되고 기본 실행에서는 같은 형식으로 출력됩니다.
- category별 누적 자료구조와 `--by-category` 조건이 추가되었습니다.
- 입력 CSV에 쓰는 코드는 추가되지 않았습니다.
- Python 표준 라이브러리만 사용하며 새 외부 패키지는 없습니다.위 내용은 실제 Claude Code가 읽은 diff의 결과가 아니라 설명 형식을 보여주는 편집 예시입니다. 실제 작업에서는 각 설명이 `git diff`의 줄과 일치하는지 직접 대조합니다.
diff가 의도대로 보여도 동작 확인은 별개입니다. 앞 글에서 검증한 두 명령을 다시 실행해 기본 출력과 옵션 출력을 확인합니다. 이 글은 git 흐름에 집중하므로 Python 코드를 다시 싣지 않고, 이미 검증한 summarize.py를 사용한다는 전제로 실행 명령만 제시합니다.
python summarize.py expenses.csv
python summarize.py expenses.csv --by-category기본 실행은 2026-09 = 26600, 2026-10 = 9800이어야 합니다. 옵션 실행에서는 2026-09의 food 20500, transport 2900, supplies 3200이 확인되어야 합니다. 값이 다르면 커밋하지 말고 코드나 입력 파일을 다시 확인합니다.
검토와 실행 확인이 끝났다면 변경한 파일만 스테이징합니다. 이어서 `git diff --cached`로 실제 커밋에 들어갈 내용을 한 번 더 보고 커밋합니다. Claude Code에 자연어로 커밋을 요청할 수도 있지만, 초보자는 어떤 파일이 들어가는지 직접 확인한 뒤 커밋하는 흐름을 먼저 익히는 편이 좋습니다.
git add summarize.py
git diff --cached -- summarize.py
git commit -m "Add category summary option"
git status --short공식 문서에는 'commit my changes with a descriptive message'처럼 자연어로 커밋을 요청할 수 있다고 안내되어 있습니다. 다만 이 기능을 쓰더라도 커밋 직전 diff와 대상 파일을 검토하는 원칙은 같습니다. 커밋 후 `git status --short`가 비어 있다면 추적 중인 변경 사항이 남아 있지 않은 상태입니다.
| 시점 | 명령 또는 행동 | 확인 목적 |
|---|---|---|
| 작업 전 | git commit | 되돌아갈 기준점 만들기 |
| 작업 후 | git status --short | 바뀐 파일 범위 확인 |
| 검토 | git diff | 실제 줄 단위 변경 읽기 |
| 기능 확인 | Python 두 실행 명령 | 기대 출력 유지 여부 확인 |
| 커밋 전 | git diff --cached | 커밋 대상 최종 확인 |
| 완료 | git commit | 검토한 변경을 새 기준점으로 기록 |
Claude Code 공식 문서(2026-09-22 확인)의 git·체크포인트 설명을 기준으로 작성 · Claude Code와 git 명령을 실제 실행했다고 주장하지 않음
이 글에서는 실제 git 저장소를 만들거나 Claude Code에 커밋을 맡긴 실행 기록을 제시하지 않습니다. 명령은 학습용 연속 예제이며 실제 프로젝트에서는 기존 브랜치 정책, .gitignore, 민감정보 포함 여부를 별도로 확인해야 합니다.