이 지침은 GPT-5.5를 기준으로 작성했지만, 여기서 제시하는 방법 중 상당수는 다른 모델 버전에도 적용할 수 있습니다.
Prompt
## 프런트엔드 개발 지침
프런트엔드가 있는 애플리케이션을 만들 때는 다음 지침을 따르세요.
### 사용자 입장에서 설계하기
- 기존 디자인을 바탕으로 작업하거나 디자인 프레임워크가 주어진 경우, 기존 설계 관례를 세심하게 살펴보세요. 새로 만드는 부분이 현재 사용하는 프레임워크와 기존 애플리케이션의 디자인에 맞도록 하세요.
- 누가 애플리케이션을 사용할지 충분히 생각하세요. 이를 바탕으로 구현할 기능을 결정하고 레이아웃, 컴포넌트, 시각적 스타일, 화면 문구, 상호작용 방식을 설계하세요. 사용자가 앱을 쓰면서 풍부하고 세련된 경험을 할 수 있도록 하세요.
- 애플리케이션의 분야와 주제에 맞게 프런트엔드를 설계하세요. 예를 들어 SaaS, CRM 등 업무 도구에는 일러스트나 잡지 지면을 연상시키는 구성보다 차분하고 실용적이며 업무에 집중하기 좋은 구성이 어울립니다. 지나치게 큰 히어로 섹션, 장식용 카드를 많이 배치한 레이아웃, 마케팅 페이지 같은 구성은 피하세요. 많은 정보를 질서 있게 배치하고 시각적 표현을 절제하세요. 사용자가 이동 경로를 예측하고, 정보를 훑어보고 비교하며, 같은 작업을 반복하기 쉽게 만드세요. 게임에서는 일러스트와 애니메이션을 더 적극적으로 활용해 개성 있고 유쾌하게 표현할 수 있습니다.
- 앱에서 자주 사용하는 워크플로우는 필요한 단계를 빠짐없이 갖추고 편하고 효율적으로 작업할 수 있게 설계하세요. 사용자가 여러 뷰와 페이지를 자연스럽게 오갈 수 있어야 합니다.
### 디자인 지침
- 별도 지시가 없으면 도구 버튼에는 아이콘, 색상 선택에는 색상 견본, 모드 전환에는 분할 선택 컨트롤, 켜기·끄기 설정에는 토글이나 체크박스를 사용하세요. 숫자 값에는 슬라이더, 스테퍼 또는 입력란을 사용하고, 여러 옵션 중에서 선택할 때는 메뉴를, 뷰를 전환할 때는 탭을 사용하세요. 텍스트만 있는 버튼이나 아이콘과 텍스트를 함께 표시하는 버튼은 실행할 명령이 분명할 때만 사용하세요. 기존 디자인 시스템에서 달리 요구하지 않는 한 카드의 모서리 반경은 8px 이하로 유지하세요.
- 익숙한 기호나 아이콘으로 표현할 수 있다면 둥근 직사각형 안에 텍스트를 넣지 마세요. 예를 들어 실행 취소와 다시 실행에는 화살표 아이콘을, 굵게와 기울임꼴에는 B/I 아이콘을, 저장·다운로드·확대/축소에는 각 동작을 나타내는 아이콘을 사용하세요. 낯선 아이콘에는 사용자가 마우스 포인터를 올리면 이름이나 설명이 나타나는 툴팁을 구현하세요.
- 버튼에 쓸 아이콘이 lucide에 있으면 SVG를 직접 그리지 말고 해당 아이콘을 사용하세요. 기존 애플리케이션에서 이미 사용하는 아이콘 라이브러리가 있다면 그 라이브러리의 아이콘을 사용하세요.
- 대상 사용자가 앱에서 당연히 기대할 만한 컨트롤, 상태, 뷰를 구현하고, 각각에 필요한 기능을 빠짐없이 갖추세요.
- 앱의 기능이나 동작 방식, 키보드 단축키, 스타일, 시각적 요소, 사용법을 설명하는 문구를 앱 화면에 넣지 마세요.
- 꼭 필요한 경우에만 랜딩 페이지를 만드세요. 사이트, 앱, 게임 또는 도구를 만들어 달라는 요청을 받으면 홍보 문구나 설명으로 시작하지 말고 첫 화면에서 바로 사용할 수 있게 하세요.
- 히어로 페이지를 만들 때는 주제에 맞는 이미지나 생성한 비트맵 이미지, 또는 여백 없이 화면을 채우는 몰입형 인터랙티브 장면을 배경으로 사용하세요. 텍스트는 카드에 넣지 말고 배경 위에 바로 배치하세요. 미디어와 텍스트 영역을 나누어 한쪽에 카드, 다른 쪽에 텍스트를 놓는 구성은 사용하지 마세요. 히어로 문구나 핵심 기능을 카드 안에 넣지 마세요. 그라디언트나 SVG로 히어로 페이지를 구성하지 마세요. 실제 이미지나 생성 이미지로 주제를 표현할 수 있다면 SVG로 히어로 일러스트를 만들지 마세요.
- 브랜드, 제품, 장소, 포트폴리오 또는 사물을 중심으로 한 페이지에서는 무엇을 보여 주는지 첫 화면에서 바로 알아볼 수 있어야 합니다. 작은 내비게이션 문구나 제목 위의 짧은 문구에만 브랜드·제품·장소·사물을 표시하지 마세요. 넓은 데스크톱 화면을 포함해 모든 모바일 및 데스크톱 뷰포트에서 다음 섹션의 내용이 조금 보이도록 히어로 콘텐츠를 배치하세요.
- 랜딩 페이지의 히어로 섹션에서는 H1에 브랜드명, 제품명, 장소명 또는 인물의 이름을 쓰거나, 무엇을 제공하는지 또는 어떤 카테고리인지 명시하세요. 사용자에게 어떤 이점이 있는지는 제목 대신 보조 문구에서 설명하세요.
- 웹사이트와 게임에는 반드시 시각 자료를 사용하세요. 게임을 만드는 경우가 아니라면 SVG 대신 이미지 검색으로 찾은 이미지, 이미 알고 있는 관련 이미지 또는 생성한 비트맵 이미지를 사용할 수 있습니다. 주요 이미지와 미디어에는 실제 제품, 장소, 사물, 상태, 게임 플레이 또는 인물이 드러나야 합니다. 사용자가 대상을 자세히 살펴봐야 할 때는 어둡거나 흐릿하거나 일부가 잘린 자료, 스톡 이미지처럼 보이거나 분위기만 전달하는 자료는 피하세요. 게임에 쓰일 에셋의 요구 사항이 매우 구체적이라면 SVG, Three.js 등으로 직접 제작하세요.
- 게임이나 인터랙티브 도구에 이미 잘 정립된 규칙, 물리 시뮬레이션 방식, 파싱 방식 또는 AI 엔진이 있다면 핵심 도메인 로직에는 검증된 기존 라이브러리를 사용하세요. 사용자가 처음부터 직접 구현해 달라고 명시적으로 요청한 경우에만 직접 구현하세요.
- 3D 요소에는 Three.js를 사용하세요. 주요 3D 장면은 여백 없이 화면을 채우거나 별도 프레임 없이 배치하고, 장식용 카드나 미리보기 컨테이너에 넣지 마세요. 마무리하기 전에 데스크톱과 모바일 뷰포트에서 Playwright로 스크린샷을 찍고 캔버스의 픽셀을 검사하세요. 장면이 빈 화면으로 나오지 않는지, 의도한 구도로 보이는지, 상호작용과 움직임이 제대로 작동하는지, 참조한 에셋이 서로 겹치지 않고 의도대로 렌더링되는지 확인하세요.
- UI 카드 안에 다른 카드를 넣지 마세요. 페이지 섹션을 떠 있는 카드처럼 꾸미지 마세요. 카드는 반복해서 표시하는 개별 항목, 모달, 독립된 프레임이 실제로 필요한 도구에만 사용하세요. 페이지 섹션은 화면의 전체 너비를 차지하는 띠 형태로 구성하거나, 별도 프레임 없이 내부 콘텐츠의 너비만 제한하세요.
- 장식이나 배경으로 구형 도형을 따로 배치하거나, 그라디언트를 적용한 구체나 보케 효과처럼 흐릿하게 번지는 빛무리를 추가하지 마세요.
- 모든 모바일 및 데스크톱 뷰포트에서 텍스트가 상위 UI 요소 안에 들어가도록 하세요. 필요하면 줄을 바꾸고, 그래도 요소를 벗어나면 가장 긴 단어까지 들어가도록 크기를 동적으로 조정하세요. 텍스트가 앞뒤 콘텐츠를 가리지 않아야 합니다. 조정한 뒤에도 버튼과 카드 안의 텍스트 배치가 정돈되고 세련돼 보이는지 확인하세요.
- 강조 문구의 크기와 간격을 컨테이너에 맞추세요. 히어로 섹션에서 쓸 만큼 큰 글자는 실제 히어로 섹션에만 사용하세요. 공간이 좁은 패널, 카드, 사이드바, 대시보드, 도구 화면에서는 제목을 더 작게 하고 간격을 좁히세요.
- 보드, 그리드, 도구 모음, 아이콘 버튼, 카운터, 타일처럼 형식이 정해진 UI 요소에는 aspect-ratio, 그리드 트랙, min/max 또는 컨테이너 기준 크기와 같은 반응형 제약 조건을 적용해 치수를 안정적으로 유지하세요. 마우스 포인터를 올렸을 때의 상태, 레이블, 아이콘, 게임 말, 로딩 문구 또는 동적 콘텐츠 때문에 레이아웃의 크기나 위치가 바뀌지 않도록 하세요.
- 뷰포트 너비에 따라 글꼴 크기를 조절하지 마세요. 자간은 0으로 설정하고 음수 값은 사용하지 마세요.
- 색상 구성이 단조로워지지 않게 하세요. 한 계열 안에서 색상만 조금씩 바꿔 UI 대부분을 채우지 마세요. 보라색·청보라색 그라디언트, 베이지·크림·모래색·황갈색 계열, 짙은 파란색·슬레이트색 계열, 갈색·주황색·에스프레소색 계열이 화면을 지배하지 않게 하세요. 마무리하기 전에 CSS에 쓰인 색상을 훑어보고 페이지 전체가 이 중 한 가지 테마로 보이면 색상 구성을 수정하세요.
- UI 요소와 화면 문구가 어색하게 겹치지 않도록 하세요. 요소가 잘못 겹치면 사용자가 화면을 보거나 조작할 때 크게 불편할 수 있으므로 특히 주의하세요.
사이트나 앱을 실행하는 데 개발 서버가 필요하다면 구현을 마친 뒤 로컬 개발 서버를 시작하고 사용자가 직접 사용해 볼 수 있도록 URL을 알려 주세요. 사용하려는 포트에서 이미 서버가 실행 중이면 다른 포트를 사용하세요. HTML 파일을 여는 것만으로 작동하는 웹사이트라면 개발 서버를 시작하지 말고 사용자가 브라우저에서 열 수 있는 HTML 파일 링크를 제공하세요.