바이브코딩이란? AI에게 코드를 맡길 때 사람이 해야 할 일
바이브코딩을 단순히 '말로 시키면 AI가 알아서 만드는 것'으로 받아들이지 않고, 사람이 요구사항과 확인 기준을 정한 뒤 AI가 만든 결과를 점검하는 작업 방식으로 이해합니다. 가상의 가계부 CSV 합계 도구를 예로 들어 입력·출력·하지 말 것·확인 방법을 한 쪽 메모로 정리합니다.
매 요청마다 반복하던 실행 명령·데이터 규칙·금지사항·확인 방법을 프로젝트의 CLAUDE.md에 간결하게 정리합니다. `/init`이 초안을 만드는 기능과 파일 위치별 용도를 구분하고, 가계부 CSV 예제에 맞는 35줄 규칙 파일을 완성합니다.
이런 분께Claude Code로 한 프로젝트를 여러 차례 수정하면서 같은 규칙을 반복해서 설명하는 일을 줄이고 싶은 초보 사용자
앞 글에서는 Claude Code에 요청할 때마다 입력 파일, 표준 라이브러리 사용, 원본 CSV 수정 금지, 실행 명령, 기대 출력까지 직접 적었습니다. 같은 프로젝트를 계속 작업한다면 이런 규칙을 매번 다시 쓰는 대신 CLAUDE.md에 정리할 수 있습니다. Claude Code는 세션 시작 시 이 파일을 읽어 프로젝트 맥락으로 사용합니다.
다만 CLAUDE.md를 접근 제어 장치나 절대적인 강제 규칙으로 생각하면 안 됩니다. 공식 문서 기준으로 이 파일은 맥락이며, 구체적이고 간결할수록 따르기 쉽습니다. 따라서 '항상 완벽하게 지켜진다'고 가정하지 말고 실제 변경 내용은 계속 확인해야 합니다.
| 반복 규칙 | CLAUDE.md에 적을 예 | 이유 |
|---|---|---|
| 입력 | expenses.csv / UTF-8 / 고정 열 | 다른 파일이나 열을 임의로 가정하는 것을 줄임 |
| 구현 | Python 표준 라이브러리만 사용 | 패키지 추가 범위를 명확히 함 |
| 실행 | python summarize.py expenses.csv | 검증 명령을 고정 |
| 금지 | expenses.csv 수정 금지 | 원본 데이터 보존 기준을 명시 |
| 완료 기준 | 월별 기대값 두 줄 | 작업 후 사람이 대조할 값 제공 |
공식 문서에서 안내하는 위치는 용도가 다릅니다. 프로젝트 루트의 `./CLAUDE.md`는 팀과 공유할 프로젝트 규칙에 적합합니다. `~/.claude/CLAUDE.md`는 개인 전체 프로젝트에 공통으로 적용할 메모이고, `./CLAUDE.local.md`는 특정 프로젝트에서 개인적으로만 쓰며 .gitignore에 추가할 수 있습니다.
./CLAUDE.md
~/.claude/CLAUDE.md
./CLAUDE.local.md이번 예제는 실행 명령과 데이터 규칙처럼 프로젝트 자체에 속하는 내용을 담으므로 `./CLAUDE.md`를 사용합니다. 개인적인 선호나 로컬 경로를 팀 공유 파일에 섞지 않는 편이 관리하기 쉽습니다.
세션에서 `/init`을 사용하면 Claude Code가 코드베이스를 분석해 빌드·테스트 명령과 관례를 담은 CLAUDE.md 초안을 만들 수 있습니다. 이미 CLAUDE.md가 있다면 덮어쓰지 않고 개선을 제안하는 방식으로 동작한다고 공식 문서에 설명되어 있습니다. 따라서 `/init`은 규칙을 자동으로 결정하는 명령이 아니라, 사람이 다듬을 초안을 얻는 출발점으로 보는 편이 적절합니다.
/init초안이 만들어지면 실제 프로젝트와 맞지 않는 명령, 존재하지 않는 테스트, 과도하게 일반적인 지시가 들어갔는지 확인합니다. 이 글에서는 Claude Code를 실제 실행하지 않았으므로 `/init`이 어떤 문장을 생성했다고 예시 응답을 꾸며 제시하지 않습니다.
아래 예시는 이 시리즈의 가상 프로젝트에 필요한 규칙만 모은 CLAUDE.md입니다. 공식 문서에서는 파일당 200줄 미만을 권장하며, 이번 예제는 35줄로 유지했습니다. 목표·데이터·Python 규칙·실행 명령·기대 결과·작업 규칙을 구분해 사람이 읽어도 바로 이해할 수 있게 합니다.
# Project: vibe-expenses
## Goal
- Read expenses.csv and summarize expense amounts.
- Keep the example small and understandable for beginners.
## Data
- Input file: expenses.csv
- Encoding: UTF-8
- Columns: date, category, amount
- date format: YYYY-MM-DD
- category values stay in English.
- amount is treated as an integer.
## Python rules
- Use only the Python standard library.
- Prefer csv for reading CSV files.
- Do not add third-party packages.
- Keep functions short and names descriptive.
- Do not modify expenses.csv.
## Commands
- Run: python summarize.py expenses.csv
- On Windows, py summarize.py expenses.csv is also acceptable.
## Expected result
- 2026-09 = 26600
- 2026-10 = 9800
## Working rules
- Explain the planned change before editing files.
- Change only files needed for the requested task.
- Do not invent extra input columns or business rules.
- If a requirement is unclear, ask before expanding scope.
- After editing, show what changed and how to verify it.여기에는 비밀번호, API 키, 실제 고객 경로 같은 비밀정보를 넣지 않습니다. 프로젝트 지침 파일은 작업 맥락을 전달하기 위한 것이므로, 공개되거나 공유되어도 문제가 없는 규칙 중심으로 작성하는 편이 안전합니다.
CLAUDE.md가 길어질수록 좋은 것은 아닙니다. '코드를 잘 작성해라'처럼 판정하기 어려운 문장보다 '외부 패키지를 추가하지 않는다', 'expenses.csv를 수정하지 않는다', '실행 명령은 이것이다'처럼 실제 변경 결과와 대조할 수 있는 규칙이 유용합니다. 필요하다면 `@경로` 문법으로 다른 파일의 내용을 가져올 수 있지만, 이번 작은 예제에서는 별도 파일을 가져올 필요가 없습니다.
규칙을 추가한 뒤에도 Claude Code가 실제로 어떤 파일을 바꾸는지는 별도로 확인해야 합니다. CLAUDE.md는 검토를 대신하는 장치가 아니라, 반복해서 설명해야 하는 프로젝트 맥락을 줄이는 장치입니다.
CLAUDE.md를 저장했다면 다음 기능을 요청하기 전에 사람이 파일을 한 번 읽어 봅니다. 현재 코드와 실행 명령이 달라졌는데 오래된 지시가 남아 있으면 오히려 잘못된 맥락을 줄 수 있습니다. 특히 기대 출력이나 파일명이 바뀌면 규칙 파일도 함께 갱신해야 합니다.
| 검토 질문 | 예제에서 확인할 답 | 수정 필요 신호 |
|---|---|---|
| 입력 파일이 맞나 | expenses.csv | 다른 파일명이 남아 있음 |
| 실행 명령이 맞나 | python summarize.py expenses.csv | 이전 스크립트명이 남아 있음 |
| 패키지 규칙이 맞나 | 표준 라이브러리만 사용 | 불필요한 외부 패키지를 요구함 |
| 기대값이 맞나 | 26600 / 9800 | 현재 예제와 다른 숫자가 적혀 있음 |
| 금지 범위가 명확한가 | expenses.csv 수정 금지 | 모호한 표현만 있음 |
다음 글에서는 이 규칙을 유지한 채 새 기능을 바로 구현하지 않고 plan 모드에서 먼저 설계합니다. 목표는 `--by-category` 옵션으로 2026-09의 food 20500, transport 2900, supplies 3200을 출력하는 기능이 어떤 변경을 요구하는지 계획 단계에서 검토하는 것입니다.
Claude Code 공식 문서(2026-09-22 확인)와 이 시리즈의 가상 예제를 기준으로 작성 · Claude Code 실제 실행 없음 · 본 글에 실행 대상 Python 코드 없음
이 글에서는 Claude Code의 `/init`이나 메모리 파일 기능을 실제 실행하지 않았습니다. CLAUDE.md 예시는 이 시리즈의 가상 프로젝트 요구사항을 바탕으로 작성한 편집 원고이며, 실제 프로젝트에서는 현재 파일 구조와 명령에 맞춰 사람이 직접 검토해야 합니다.