기본 패턴
text
Goal:
- 무엇을 바꿀지
Context:
- 관련 파일, 재현 절차, 현재 상태
Constraints:
- 건드리면 안 되는 API, 성능 조건, 스타일 규칙
Done when:
- 어떤 테스트와 어떤 결과가 나오면 끝인지설명
- 공식 Best practices는 강한 기본 프롬프트 구조로
Goal,Context,Constraints,Done when을 명시하라고 권합니다. - Goal은 결과를, Context는 현재 상태를, Constraints는 금지선과 선택 기준을, Done when은 종료 조건을 분리해 줍니다.
- IDE에서는 열린 파일과 선택 코드가 자동으로 붙지만, CLI에서는 관련 파일 경로와 재현 절차를 더 명시적으로 주는 편이 좋습니다.
- "버그를 고쳐 줘"보다 "이 재현 절차를 따라 실패를 확인하고, 최소 수정 후 관련 테스트를 다시 돌려라"가 훨씬 안정적으로 작동합니다.
- 작업이 크더라도 모든 배경을 한 문단에 몰아넣기보다, 파일 경로와 조건을 구조적으로 나누는 편이 Codex가 더 잘 따릅니다.
짧은 예제
text
Goal:
- settings 저장 버그를 고쳐라
Context:
- 관련 파일: @app/settings/page.tsx @lib/api/settings.ts
- 재현: 저장 후 새로고침하면 토글 값이 원래대로 돌아감
Constraints:
- API 응답 형식은 바꾸지 말 것
- 수정은 최소화할 것
Done when:
- 재현이 더 이상 되지 않고
- 관련 테스트 또는 최소 검증 명령 결과를 함께 보고할 것빠른 정리
| 구성 요소 | 역할 |
|---|---|
| Goal | 원하는 최종 결과를 고정 |
| Context | Codex가 읽어야 할 현재 상태 제공 |
| Constraints | 금지선과 선택 기준 지정 |
| Done when | 종료 조건과 검증 범위 고정 |
| 파일 경로 첨부 | 추측보다 실제 코드 기준으로 작업 |
주의할 점
제약이 많을수록 좋은 것이 아닙니다. 꼭 필요한 파일, 재현 절차, 금지선, 완료 기준만 남기고 나머지는 AGENTS.md나 설정으로 옮겨야 프롬프트가 읽기 쉬워집니다.
참고 링크
3 sources