개발자를 위한 AI 프롬프트 엔지니어링: 기획 요구사항을 설계와 구현 요청으로 바꾸는 4단계
질문·가정 분해, 설계 선택지 비교, 범위 제한 구현 요청, 자기 교정 검증 템플릿

핵심 요약
- 기획 문장은 구현을 요청하기 전에 결정되지 않은 질문과 기본 가정으로 먼저 분해한다.
- 설계 단계에서는 선택지 2~3개와 장단점, 추천 이유를 고정된 형식으로 받는다.
- 구현 요청에는 수정 대상 파일, 금지 범위, 이유, 완료 조건을 XML 태그로 구분해 적는다.
- 초안 생성 → 기준 검토 → 수정의 자기 교정 흐름으로 결과를 검증하고 템플릿을 팀 저장소에 남긴다.
AI 코딩 도구에 기획서 문장을 그대로 붙여 넣으면, 모델은 빠진 정보를 스스로 가정해 채운 뒤 코드를 만든다. 그 가정이 팀의 의도와 다르면 결과물 전체를 다시 만들어야 한다. Anthropic의 Prompting best practices 문서는 모델을 "맥락을 모르는 유능한 신입 동료"처럼 대하고, 원하는 결과와 제약을 구체적으로 적으라고 안내한다. 이 글은 그 원칙을 개발 흐름에 맞춰 요구사항 분해 → 설계 선택지 비교 → 범위를 제한한 구현 요청 → 결과 검증 네 단계의 프롬프트 템플릿으로 바꿔 정리한다.
공식 가이드의 원칙을 개발 프롬프트에 대응시키기
| 공식 가이드의 원칙 | 개발 프롬프트에서의 적용 |
|---|---|
| 명확하고 직접적으로 쓴다. 맥락이 없는 동료가 읽고 따라 할 수 있는지 확인한다 | 목표, 수정 대상 파일, 완료 조건을 한 문단 안에 적는다 |
| 지시의 이유(맥락)를 함께 준다 | "외부 의존성 추가 금지" 뒤에 "보안 검토 기간이 길어서"처럼 이유를 붙인다 |
예시는 3~5개를 <example> 태그로 감싼다 | 팀 코드 스타일을 보여 줄 기존 함수 1~2개를 예시로 붙인다 |
| 지시·맥락·입력을 XML 태그로 구분한다 | <context>, <constraints>, <task>로 나눠 섞이지 않게 한다 |
| 긴 자료는 위에, 질문은 끝에 둔다 | 로그·스펙 문서를 먼저 붙이고 요청 문장은 마지막에 쓴다 |
| 열어 보지 않은 코드에 대해 추측하지 않게 한다 | "답하기 전에 언급된 파일을 먼저 읽어라"를 지시에 넣는다 |
문서는 긴 입력(약 2만 토큰 이상)을 다룰 때 질문을 프롬프트 끝에 두면 복잡한 다중 문서 입력에서 응답 품질이 테스트상 최대 30%까지 좋아질 수 있다고 적고 있다. 에러 로그나 API 스펙을 통째로 붙이는 디버깅 요청에서 특히 의미가 있다.
1단계: 기획 문장을 질문과 가정으로 분해하기
"회원은 자기 주문 내역을 볼 수 있다" 같은 기획 문장에는 권한 범위, 페이지네이션, 취소 주문 포함 여부 같은 결정이 빠져 있다. 구현을 요청하기 전에 이 빈칸을 먼저 드러내게 한다.
<requirement>
회원은 마이페이지에서 자신의 주문 내역을 최근 순으로 볼 수 있다.
</requirement>
<task>
위 요구사항을 구현하기 전에 다음 세 가지를 목록으로 정리해 줘. 코드는 아직 쓰지 마.
1. 입력 / 출력 / 권한 / 예외 흐름별로 결정되지 않은 질문
2. 질문에 답이 없을 때 네가 적용할 기본 가정
3. 가정이 틀리면 영향을 받는 화면이나 API
</task>
나온 질문 목록은 기획자와 확인하고, 확정된 답을 다음 단계의 <context>에 그대로 붙인다. 이 과정을 거치면 모델이 임의로 채운 가정이 코드 깊숙이 들어가는 일을 막을 수 있다.
2단계: 설계 선택지를 두세 개로 비교하게 하기
설계 단계에서는 정답 하나를 요구하기보다 선택지와 장단점, 추천 이유를 함께 받는다. 출력 형식을 고정하면 팀 리뷰 문서에 그대로 옮기기도 쉽다.
<context>
- 스택: Next.js App Router, PostgreSQL, Prisma
- 확정된 요구사항: (1단계에서 확정한 답을 붙인다)
- 예상 데이터량: 회원당 주문 최대 수천 건
</context>
<task>
주문 내역 조회 API의 설계 선택지를 2~3개 제시해 줘.
각 선택지마다 다음 형식을 지켜:
<option name="...">
<summary>한 줄 요약</summary>
<pros>장점</pros>
<cons>단점과 운영 리스크</cons>
</option>
마지막에 <recommendation>으로 추천안과 이유를 적어 줘.
</task>
3단계: 수정 범위와 제약을 명시해 구현 요청하기
구현 요청에서는 수정해도 되는 파일과 건드리면 안 되는 범위를 적는다. 공식 문서는 모델이 요청하지 않은 파일·추상화·설정 옵션을 덧붙이는 과잉 설계 경향이 있을 때 "요청된 변경만 하라"는 지시를 넣으라고 안내하고, 에이전트형 코딩에서는 열어 보지 않은 코드에 대해 추측하지 말라는 지시를 예로 든다. 두 지시를 템플릿에 기본으로 넣는다.
<files>
src/app/api/orders/route.ts (수정 대상)
src/lib/orders/repository.ts (수정 대상)
src/lib/auth/session.ts (읽기만, 수정 금지)
</files>
<constraints>
- 기존 함수 시그니처는 바꾸지 않는다. 다른 화면이 같은 함수를 쓰기 때문이다.
- 새 npm 패키지를 추가하지 않는다. 보안 검토 기간이 길기 때문이다.
- 요청한 변경만 한다. 주변 코드 정리나 추가 옵션은 넣지 않는다.
- 답하기 전에 위 파일을 먼저 읽고, 읽지 않은 코드에 대해 추측하지 않는다.
</constraints>
<task>
2단계 추천안(커서 기반 페이지네이션)으로 주문 내역 조회 API를 구현해 줘.
완료 조건: 본인 주문만 반환, 한 번에 20건, 다음 페이지 커서 포함.
</task>
같은 요청을 모호하게 쓸 때와 구체적으로 쓸 때
| 모호한 요청 | 구체적인 요청 | 달라지는 점 |
|---|---|---|
| 주문 내역 기능 만들어 줘 | 1단계 템플릿으로 질문·가정 목록부터 받기 | 권한·예외 흐름의 빈칸이 구현 전에 드러난다 |
| 이 API 성능 좀 개선해 줘 | 느린 쿼리 로그를 위에 붙이고, 대상 함수와 목표 응답 시간을 끝에 적기 | 모델이 관련 없는 파일까지 고치는 일이 줄어든다 |
| 코드 정리해 줘 | 대상 파일, 유지할 시그니처, 금지할 변경을 <constraints>로 명시 | 리뷰 범위가 예측 가능해진다 |
| 안 되는데 다시 해 줘 | 실패한 테스트 출력과 기대 결과를 붙이고 원인 추정부터 요청 | 같은 오답을 반복하는 대신 원인부터 좁힌다 |
4단계: 결과를 검증하고 템플릿을 팀 자산으로 남기기
공식 문서는 프롬프트 체이닝의 대표 패턴으로 초안 생성 → 기준에 따른 검토 → 검토 결과를 반영한 수정의 자기 교정 흐름을 소개한다. 개발에서는 다음 순서로 옮길 수 있다.
- 3단계 템플릿으로 구현 초안을 받는다.
- 새 대화에서 diff와 함께 "권한 누락, 경계값, 기존 시그니처 변경 여부를 기준으로 검토해 문제 목록만 적어 줘"라고 요청한다.
- 문제 목록을 근거로 수정을 요청하고, 테스트를 실행해 통과 여부를 확인한다.
검증된 템플릿은 저장소의 docs/prompts/나 도구별 규칙 파일에 넣어 팀이 같은 형식을 쓰게 한다. Cursor를 쓴다면 Cursor Rules 작성법 글처럼 수동 호출 규칙으로 등록할 수 있고, 생성된 코드의 테스트 절차는 AI 생성 코드 테스트 워크플로우 글, 리뷰 기준은 AI 생성 코드 리뷰 규칙 글과 맞춰 두면 프롬프트·테스트·리뷰가 같은 기준으로 움직인다.
초보자가 자주 실수하는 포인트
- 기획서 문장을 그대로 붙여 넣고 바로 코드 생성을 요청하는 경우
- 긴 로그나 스펙 문서를 질문 뒤에 붙여 요청 문장이 묻히는 경우
- 금지 사항만 적고 이유를 적지 않아 모델이 비슷한 우회책을 고르는 경우
- 결과가 틀렸을 때 맥락 없이 같은 요청을 반복하는 경우
체크리스트
- 요구사항을 입력·출력·권한·예외 흐름으로 나눠 빈칸을 확인했는가
- 설계 선택지별 장단점과 추천 이유를 받았는가
- 수정 대상 파일과 수정 금지 범위를 명시했는가
- 제약 조건마다 이유를 함께 적었는가
- 별도 대화에서 기준에 따른 검토를 거쳤는가
자주 묻는 질문
XML 태그 이름은 정해진 것을 써야 하나요?
정해진 이름은 없다. 공식 문서는 일관되고 내용을 잘 설명하는 태그 이름을 프롬프트 전반에서 같은 방식으로 쓰라고 안내한다.
예시 코드는 몇 개나 넣어야 하나요?
공식 문서는 3~5개의 예시를 권한다. 코드 작업에서는 팀 스타일을 보여 주는 기존 함수 1~2개만으로도 충분한 경우가 많으므로, 길이와 컨텍스트 비용을 함께 고려한다.
검토도 같은 대화에서 시키면 안 되나요?
가능하지만 초안을 만든 대화의 가정이 그대로 남는다. 새 대화에서 diff와 검토 기준만 주면 초안의 전제를 다시 확인하기 쉽다.
참고 자료 · 검증 기준
위 자료와 내용을 대조한 날짜: . 도구·서비스 정책은 이후 바뀔 수 있으므로 적용 전 공식 문서를 다시 확인하세요.
이 글은 실제 실무 환경 테스트 및 검증된 기술 자료를 바탕으로 작성되었으며, 환경 변화에 따라 지속적으로 갱신됩니다.