컨텍스트 윈도우의 한계 이해
AI는 무한한 뇌를 가진 것이 아닙니다. 대화가 40~50턴 이상 길어지면 앞서 약속했던 기본 원칙과 설정을 잊고 환각(Hallucination)을 일으킵니다.
코드를 완벽히 몰라도 괜찮습니다. 아이디어를 명확히 전달하고, AI의 환각을 통제하며, 순식간에 작동하는 프로덕트를 만들어내는 실전 바이브 코딩의 모든 노하우를 만나보세요.
무작정 채팅창에 코드를 쳐달라고 하기 전에, 이 원리들을 이해하면 결과물의 퀄리티가 180도 달라집니다.
AI는 무한한 뇌를 가진 것이 아닙니다. 대화가 40~50턴 이상 길어지면 앞서 약속했던 기본 원칙과 설정을 잊고 환각(Hallucination)을 일으킵니다.
초보자가 가장 두려워하는 순간은 "AI가 잘 돌아가던 기존 코드를 다 지워버렸을 때"입니다. Git은 언제든 실수 이전으로 타임머신을 탈 수 있는 유일한 안전벨트입니다.
프롬프트마다 매번 "바닐라 CSS 써줘", "모바일 반응형 신경 써줘"를 반복하지 마세요. 프로젝트 루트의 규칙 파일에 코딩 컨벤션을 명시해 두면 AI가 자동으로 준수합니다.
"로그인, 장바구니, 결제 시스템을 다 만들어줘"는 100% 실패하는 지름길입니다. 한 번에 큰 덩어리를 요청하면 결합도가 높아져 디버깅이 불가능해집니다.
"안 돼요. 고쳐줘요"는 AI가 독심술을 쓰게 만드는 최악의 프롬프트입니다. 브라우저 F12 콘솔이나 터미널의 빨간색 에러 로그 전문을 있는 그대로 건네주세요.
초보자가 흔히 저지르는 두루뭉술한 요청과, 원하는 결과를 단번에 뽑아내는 프로의 구체적 지시를 확인해보세요.
"쇼핑몰에 장바구니 기능 만들어줘. 요즘 유행하는 스타일로 예쁘고 깔끔하게 알아서 짜줘."
"현재 프로젝트(HTML/Vanilla JS)에 우측 슬라이드 방식의 '장바구니 모달'을 구현하고 싶어.
1. 기능 요구사항:
- 상품 카드 [담기] 클릭 시 장바구니에 아이템 추가
- 중복 담기 시 수량 1 증가, 수량 조절(+/-) 및 개별 삭제(X) 가능
- 총 결제 예상 금액 실시간 합산
2. 상태 보존:
- 새로고침해도 유지되도록 `localStorage`에 cartData 키로 저장
3. 예외 케이스:
- 장바구니가 비었을 때 '담긴 상품이 없습니다' 안내 문구 노출
4. 출력 형식:
- 기존 코드를 지우지 말고 index.html, style.css, app.js에 추가할 부분만 명확한 주석과 함께 제공해줘."
"화면에 상품 목록이 아무것도 안 떠요. 고쳐줘요."
"상품 목록 렌더링 중 화면이 빈 화면으로 멈추는 버그가 있어.
[브라우저 개발자도구 F12 콘솔 에러]:
Uncaught TypeError: Cannot read properties of undefined (reading 'map')
at renderProducts (app.js:35:22)
[의심되는 원인]:
서버에서 데이터를 받아오는 fetch 비동기 작업이 완료되기 전에 renderProducts 함수가 호출되어 products 변수가 undefined 상태인 것 같아.
[요청 사항]:
1. 데이터 로딩 전에는 스켈레톤 UI 또는 '로딩 중...' 인디케이터가 표시되도록 보완해줘.
2. app.js의 30~45라인에 해당하는 async/await 수정 코드만 작성해줘."
"디자인이 너무 촌스러워. 좀 더 트렌디하고 화려하고 요즘 감성으로 세련되게 바꿔줘."
"현재 대시보드 카드의 디자인을 모던 테크 SaaS(Vercel/Linear 스타일) 느낌으로 리팩토링해줘. HTML 구조는 그대로 유지하고 CSS만 개선해야 해.
[디자인 가이드라인]:
1. 컬러 팔레트:
- 배경: 딥 슬레이트(#0f172a), 카드 배경: 반투명 다크(#1e293b with backdrop-filter: blur(12px))
- 테두리: 은은한 1px 슬레이트(#334155), 포인트 컬러: 에메랄드(#10b981)
2. 타이포그래피:
- 숫자 지표는 두껍고 큰 폰트(28px, bold), 라벨은 중간 톤 회색(#94a3b8)
3. 인터랙션:
- 카드 호버 시 transform: translateY(-4px) 및 은은한 박스 섀도우(transition 0.2s ease) 적용
`style.css`에 덮어쓸 CSS 클래스만 제공해줘."
"app.js 코드가 너무 길고 지저분해. 알아서 파일 여러 개로 깔끔하게 쪼개줘."
"현재 `app.js`가 너무 비대해져서 모듈화하려고 해. 기존 기능이 고장 나지 않도록 '점진적(Step-by-step)'으로 분리하자.
[1단계 목표]:
다른 코드와 의존성이 가장 적은 '장바구니 상태 관리 로직'만 먼저 `src/cart.js`로 분리할 거야.
[요청 사항]:
1. `src/cart.js` 파일에 들어갈 함수(getCart, addToCart, removeFromCart)를 ES 모듈(export) 형태로 작성해줘.
2. `index.html`에서 `<script type="module" src="app.js"></script>` 설정 시 주의할 점을 알려줘.
3. 1단계가 정상 동작하는지 테스트하는 콘솔 명령어를 알려줘. (다른 파일은 아직 건드리지 마)"
이 순서대로만 따라 하면 아무리 복잡한 웹 서비스도 막힘없이 완성할 수 있습니다.
각 단계의 예시 이미지를 클릭하면 고화질로 확대하여 상세 내용을 확인할 수 있습니다.
머릿속에 떠오른 생각을 바로 코드로 치지 마세요! AI에게 "내가 만들려는 서비스의 기능 목록과 화면 구조를 PRD 마크다운 문서로 먼저 정리해줘"라고 요청하여 무엇을 만들지 먼저 합의합니다.
AI에게 "우리 프로젝트의 규칙"을 먼저 알려주는 단계입니다. 사용할 기술 스택(HTML5, Vanilla CSS), 디자인 가이드(다크모드 지원, 반응형), 그리고 코딩 제약 사항을 파일로 만들어 프로젝트 루트에 배치합니다.
.cursorrules 또는 AGENTS.md 작성바이브 코딩의 핵심 심장 박동입니다! [1. 작은 단위 요청] ➔ [2. AI 코드 생성 & Diff 스캔] ➔ [3. 브라우저 실시간 테스트] ➔ [4. 즉시 피드백 & 미세조정]의 4단계를 3~5분 간격으로 경쾌하게 반복합니다.
초보자가 자유롭게 실험할 수 있는 힘은 언제든 되돌릴 수 있는 Git 커밋에서 나옵니다. 기능 하나가 정상 작동하면 즉시 커밋하고, 에러가 나면 콘솔 에러 전문을 복사하여 AI에게 스마트하게 디버깅을 요청합니다.
git commit -m "feat: 장바구니 UI 완성" 실행git restore .로 1초 만에 롤백기능 구현이 끝났다면 서비스의 감성 품질을 극대화합니다. 모바일 화면(375px) 레이아웃, 버튼 호버 애니메이션, 다크/라이트 테마 전환 시의 색상 대비, 불필요한 콘솔 로그 제거 등 마무리를 진행합니다.
코딩을 시작하거나 다음 단계로 넘어가기 전, 체크리스트를 확인하며 좋은 습관을 들이세요.