바이브코딩 — 2편

AI한테 코드 시킬 때 프롬프트 잘 쓰는 7가지 패턴

"더 구체적으로 쓰세요"는 사실 도움이 안 되는 조언입니다. 무엇을 어떻게 구체적으로 쓸지 — 나쁜 프롬프트와 좋은 프롬프트를 나란히 놓고 봅니다.

2026년 5월 12일 · 약 7분 · Cursor·Claude Code·Copilot 공통

개발자가 AI 코딩 도구에게 명확한 지시를 입력하는 모습을 표현한 일러스트 — 프롬프트가 코드 결과를 가른다

같은 Cursor를 쓰는데 옆자리 사람은 30분 만에 기능 하나를 붙이고, 나는 같은 시간을 "아니 그거 말고"만 반복하다 끝낸다. 도구 차이가 아닙니다. 그 사람이 AI에게 일을 어떻게 던지는지가 다른 거예요.

이 글은 바이브코딩 입문 편에서 한 발 더 들어갑니다. AI 코딩 도구에 명령을 줄 때 결과를 확 끌어올리는 7가지 패턴을, 매번 "이렇게 쓰면(❌) → 이렇게 쓰면(✅)" 형태로 봅니다. 핵심 비유 하나만 먼저 깔고 갈게요 — AI는 똑똑하지만 매우 말 그대로 받아들이는 신입 개발자입니다. 신입한테 "알아서 잘 해줘"라고 하면 사고가 나죠. 명확한 맥락·제약·예시를 주면 놀랍게 잘하고요. 7가지 패턴은 전부 이 비유의 변주입니다.

패턴 1·2 — 맥락을 먼저, 그리고 '하지 말 것'을 못 박는다

패턴 1. 작업 전에 "이게 어떤 프로젝트인지"부터

AI는 당신 머릿속을 못 봅니다. 무슨 프레임워크인지, 어떤 컨벤션을 쓰는지, 어디에 붙이는 코드인지 — 이걸 안 주면 그럴듯하지만 우리 코드베이스랑 안 맞는 답이 나옵니다.

❌ 이렇게
로그인 기능 만들어줘
✅ 이렇게
Next.js 14 App Router + TypeScript 프로젝트야. 인증은 이미
Supabase Auth 쓰고 있고, UI는 shadcn/ui. 기존 app/(auth)/
폴더 컨벤션 따라서 로그인 페이지를 추가해줘. 상태관리는
별도 라이브러리 없이 서버 컴포넌트 위주로.

패턴 2. 원하는 것만큼 "원하지 않는 것"도 적는다

AI는 의욕이 과합니다(over-eager). 안 시킨 것까지 "친절하게" 해버리거나, 멋대로 라이브러리를 추가합니다. 경계를 미리 그어두세요.

❌ 이렇게
날짜 포맷 함수 하나 만들어줘
✅ 이렇게
날짜를 "2026년 5월 12일" 형태로 바꾸는 순수 함수 하나만.
- 외부 라이브러리 추가 금지 (dayjs/moment 쓰지 마)
- 기존 파일 다른 부분은 건드리지 마
- 함수 하나만, 설명 주석은 한 줄로
왜 통하나: AI 코딩 도구 공급사들의 가이드도 똑같이 말합니다 — "맥락을 더해 성능을 끌어올려라(add context to improve performance)"와 "과잉 실행(overeagerness)을 명시적으로 억제하라". Anthropic의 프롬프트 가이드도 'be clear and direct' / 'add context' 를 1순위로 둡니다.

패턴 3·4 — 예시를 보여주고, 큰 일은 단계로 쪼갠다

패턴 3. 말로 설명하지 말고, 결과 예시를 붙여라

"이런 느낌으로"는 사람한테나 통합니다. AI에는 입력 1개 → 기대 출력 1개를 실제로 보여주는 게 단어 100개보다 정확합니다. 표 변환, JSON 가공, 텍스트 파싱류는 특히.

❌ 이렇게
이 배열을 보기 좋게 그룹핑해줘
✅ 이렇게
이 입력을:
[{cat:"A",v:1},{cat:"B",v:2},{cat:"A",v:3}]
이 출력으로 바꾸는 함수가 필요해:
{ A:[1,3], B:[2] }
edge case: cat 없으면 그 항목은 건너뛰기

패턴 4. "기능 하나 통째로" 말고 "1단계부터"

한 프롬프트에 "회원가입 + 이메일 인증 + 비번 재설정 + 프로필 페이지" 다 넣으면, AI는 절반쯤 맞고 절반쯤 틀린 큰 덩어리를 토해냅니다. 검수가 불가능해져요. 신입한테 일 주듯 — 한 조각씩.

❌ 이렇게
유저 인증 시스템 전부 만들어줘
✅ 이렇게
인증을 단계로 갈 거야. 1단계만 먼저:
이메일/비번 회원가입 폼 + 서버 액션(검증 + Supabase
insert)까지만. 이메일 인증·재설정은 다음 단계에서 할 거니까
지금은 만들지 마. 1단계 끝나면 내가 확인하고 다음 알려줄게.

패턴 5·6 — 있는 코드를 먼저 보게 하고, 막히면 '디버깅'을 시킨다

패턴 5. "새로 짜기 전에 기존 거 먼저 봐"

AI가 가장 자주 하는 짜증나는 짓: 이미 있는 유틸 함수를 못 보고 똑같은 걸 또 짜는 것. Cursor 사용자들이 포럼에서 가장 많이 토로하는 불만이기도 합니다. 참조할 파일을 콕 집어주고, "있으면 그걸 써라"를 명시하세요.

❌ 이렇게
API 호출하는 코드 추가해줘
✅ 이렇게
lib/api-client.ts 먼저 봐. 거기 인증 헤더 붙여서 호출하는
래퍼(apiFetch)가 이미 있어. 새로 fetch 쓰지 말고 그거 써서
/users/me 부르는 코드만 추가해.

패턴 6. 에러가 나면 "고쳐줘" 말고 "원인부터 찾아줘"

에러 메시지만 던지고 "고쳐줘" 하면 AI는 종종 증상만 가립니다(try/catch로 덮기 등). "왜 났는지 먼저 진단하고, 그다음 고쳐"라고 순서를 강제하면 진짜 원인을 짚을 확률이 올라갑니다.

❌ 이렇게
(에러 로그 붙여넣고) 이거 고쳐줘
✅ 이렇게
(에러 로그) — 바로 고치지 말고:
1) 이 에러가 나는 원인을 코드 흐름으로 설명해줘
2) 가능한 원인이 2개 이상이면 다 나열
3) 그다음 가장 가능성 높은 것 기준으로 수정안 제시
나는 1·2를 보고 어느 쪽인지 알려줄게

패턴 7 + 한눈에 — '왜'를 같이 묻고, 좋은 프롬프트의 공통점

패턴 7. 코드만 받지 말고 "왜 이렇게 했는지" 한 줄을 같이

이건 결과 품질보다 당신을 위한 패턴입니다. AI가 짠 코드를 그냥 붙이면 디버깅 못 하는 코드가 쌓여요. "각 선택에 한 줄 이유"를 요구하면 (a) AI가 더 신중해지고 (b) 당신이 그 코드를 이해한 채로 들고 갑니다.

✅ 이렇게
구현하고, 핵심 결정 3가지만 한 줄씩 왜 그렇게 했는지 알려줘.
(예: "useMemo 쓴 이유 — 리스트가 200+이라 매 렌더 정렬 비용 큼")
내가 동의 안 하는 게 있으면 다시 말할게.

7가지를 관통하는 공통점이 보이나요. 좋은 코딩 프롬프트는 "AI를 똑똑한 신입처럼 다룬다" — 맥락을 주고(1), 선을 긋고(2), 예시로 보여주고(3), 일을 쪼개고(4), 있는 걸 먼저 보게 하고(5), 막히면 진단부터 시키고(6), 결정의 이유를 남기게(7) 한다. 반대로 나쁜 프롬프트는 전부 "알아서 잘"의 변주죠.

한 가지 주의: 이 패턴들은 "AI가 알아서 다 해준다"를 만들어주지 않습니다. AI가 짠 코드는 여전히 당신이 읽고 검수해야 합니다 — 특히 비개발자라면 더더욱. 패턴 4(쪼개기)와 패턴 7(이유 남기기)이 그 검수를 가능하게 해주는 안전장치예요. 검수 없이 쌓은 코드는 나중에 '바이브 코드 레스큐'가 필요해집니다.

다음 편에서는 이 반대편 — AI가 만든 코드에서 비개발자도 알아챌 수 있는 위험 신호 체크리스트를 다룹니다. 오늘 7개 중 딱 2개만 골라 내일 작업에 써보세요. 1번(맥락 먼저)과 4번(쪼개기)이면 충분히 체감됩니다.

바이브코딩 시리즈

1편(입문)과 함께 보면, AI 코딩이 "운빨"에서 "기술"로 바뀝니다.

다음 편 "AI 코드 위험 신호 체크리스트"도 JUNAI 블로그에서 이어집니다.

© 2026 JUNAI · 바이브코딩 시리즈 2편 · 본 글은 2026년 5월 12일 기준으로 작성되었습니다.

© 2026 주나이테크(주) @JUNAITECH