AI로 만든 앱의 일관성 확보를 위한 한 페이지 앱 스펙 템플릿
한 페이지 앱 스펙 템플릿으로 막연한 아이디어를 Planning Mode에서 쓸 수 있는 명확한 프롬프트로 바꾸세요. 사용자, JTBD, 엔티티, 엣지 케이스를 다룹니다.

아이디어가 아직 모호할 때 Planning Mode가 중요한 이유
막연한 아이디어는 상상하기에는 괜찮지만, 만들기에는 불편합니다.
AI 빌더에게 “습관을 추적하는 앱”처럼 자세하지 않은 요청을 하면, AI는 사용자가 의미하는 바를 추측해야 합니다. 그 추측은 프롬프트마다 달라지고, 따라서 앱도 달라집니다. 화면이 서로 맞지 않게 되고, 빌드 도중 데이터 이름이 바뀌며, 기능이 생겼다 사라졌다 다른 형태로 다시 나타납니다.
그 불일치는 보통 몇 군데에서 나타납니다:
- 사용자가 누구인지에 대한 다른 가정(개인 사용자 vs 팀)
- 상충하는 워크플로(먼저 기록하나, 먼저 생성하나)
- 바뀌는 데이터 이름(습관 vs 루틴 vs 목표)
- 누락된 엣지 케이스(사용자가 무언가를 삭제하면 어떻게 되나)
“Planning Mode”는 빌드 전에 잠깐 멈추는 간단한 단계입니다. AI가 대신 만들어낼 결정을 당신이 적어두는 것입니다. 목적은 일관성입니다: UI, 백엔드, 데이터베이스가 따를 수 있는 하나의 선택 집합을 만드는 것.
목표는 완벽함이 아닙니다. 끊임없이 추측을 고쳐 쌓는 대신 반복 가능한 빌드를 만드는 것입니다. 나중에 마음이 바뀌면 작은 스펙 하나만 업데이트하고 같은 논리로 재빌드하면 됩니다.
그래서 한 페이지 앱 스펙 템플릿이 중요합니다. 긴 PRD도, 수주에 걸친 다이어그램도 아닙니다. 누구를 위한지, 무엇을 달성하는지, 어떤 데이터가 있는지(평이한 언어로), 그리고 어떤 엣지 케이스나 비목표가 첫 버전을 폭발시키지 않게 하는지 네 가지를 답하는 한 페이지입니다.
예: “예약 앱”은 단 한 곳에서 단일 살롱 주인을 위한 것인지 마켓플레이스인지, 고객이 일정 변경/취소/노쇼를 할 수 있는지 여부를 결정하면 훨씬 명확해집니다.
한 페이지 스펙 템플릿을 1분 만에 설명하면
한 페이지 앱 스펙 템플릿은 막연한 아이디어를 명확한 지침으로 바꾸는 짧은 메모입니다. 당신은 “제품 전체를 설계”하는 것이 아니라 AI 빌더가 매번 같은 선택을 하도록 충분한 구조를 제공합니다.
페이지는 네 블록으로 구성됩니다. 한 페이지에 들어가지 않으면 첫 빌드에 기능이 너무 많다는 신호일 가능성이 큽니다.
- Users: 누가 사용하는가(2–3 유형)와 그 차이점
- Jobs-to-be-done: 각 사용자가 달성하려는 결과
- Entities: 저장하고 추적할 주요 항목(데이터 명사)
- Edge cases + non-goals: 무엇이 잘못될 수 있고, 무엇을 아직 만들지 않을지
한 페이지는 유용한 제약을 강제합니다. 주요 사용자를 정하고, 최소 성공 흐름을 정의하고, “모두 지원” 같은 모호한 약속을 피하도록 합니다. 이런 제약이 AI로 만든 앱이 화면마다 마음을 바꾸지 않게 하는 핵심입니다.
“충분히 좋은” 세부 정도는 간단하고 테스트 가능한 문장입니다. 누군가 읽고 “이게 어떻게 작동하는지 어떻게 알지?”라고 물을 수 있다면 적절한 수준입니다.
목표로 삼을 빠른 기준:
- 새 사용자가 주요 작업을 2분 이내에 완료할 수 있다.
- 각 작업은 명확한 시작과 끝이 있다(열려 있는 ‘무언가 관리하기’가 아님).
- 각 엔티티는 지금 실제로 필요로 하는 필드가 3–7개다.
- 상위 5개 엣지 케이스(중복, 권한, 빈 상태, 실패, 잘못된 입력)를 명시한다.
언어는 평이하게 유지하세요. 프롬프트에 바로 붙여넣을 수 있는 문장을 쓰세요. 예: “매니저는 요청을 승인하거나 거부할 수 있고, 요청자는 상태 업데이트를 받는다.”
단계별: 템플릿을 20분 안에 채우기
20분 타이머를 맞추고 “빌드할 만큼 명확”을 목표로 하세요. 목적은 AI 빌더가 매번 같은 선택을 하게 해 추측을 제거하는 것입니다.
한 문장으로 누가 대상이고 어떤 결과를 얻는지 답하는 문장으로 시작하세요.
예: “반려견 주인이 산책과 병원 방문을 한 곳에서 기록하는 모바일 앱.”
한 문장으로 말할 수 없다면 아이디어가 아마 두 개의 앱일 가능성이 큽니다.
다음으로 실제 사람처럼 1–3개의 사용자 유형을 이름 짓고, 각 유형에 대해 가장 신경 쓰는 한 줄을 적으세요. “Owner”, “Vet”, “Family member”는 “User A”보다 낫습니다.
그다음 “When [상황], I want to [동작], so I can [결과]” 형식으로 3–7개의 JTBD를 적으세요. 테스트 가능하게 유지하세요. 예: “산책을 끝내면 거리와 메모를 기록해서 패턴을 파악할 수 있다”는 “건강 추적”보다 명확합니다.
이제 엔티티와 주요 필드를 데이터베이스 용어 없이 정의하세요. 앱이 기억하는 것을 생각하세요. 개 앱 예시: Dog(name, age), Walk(date, duration, notes), Visit(date, clinic, cost). 화면이나 작업에서 사용하지 않는 필드는 제외하세요.
마지막으로 엣지 케이스와 비목표 두 블록을 짧게 작성하세요. 엣지 케이스는 성가시지만 흔한 것들입니다(“인터넷 없음”, “이름이 같은 두 마리 개” 등). 비목표는 아직 만들지 않을 것들입니다(“결제 없음”, “소셜 피드 없음”).
마지막으로 각 블록을 빌더가 따를 수 있는 프롬프트로 바꾸세요. 구조(목적, 사용자, 작업, 엔티티, 엣지 케이스)를 일관되게 유지하면 시스템이 화면, 데이터, 흐름을 일치하게 생성합니다.
AI가 실제로 따를 수 있는 사용자와 JTBD
스펙에 “모두를 위한”이라고 적으면 AI 빌더는 무엇을 먼저 만들지 추측해야 합니다. 한 페이지 앱 스펙 템플릿에서는 사용자를 의도(무엇을 하려는지)로 정의하세요. 의도는 화면, 데이터, 권한에 대한 명확한 선택을 이끕니다.
2–4개의 사용자 유형을 이름 짓고 각자 하나의 주요 목표만 적으세요. 좋은 예: “주문하는 고객”, “주문을 처리하는 팀원”, “성과를 검토하는 관리자”. 모호한 예: “18–35세”, “바쁜 전문가”, “admins”(무엇을 관리하는지 설명하지 않으면).
JTBD는 엄격한 형식으로 쓰세요
항상 같은 문장 구조를 사용하세요: “When..., I want to..., so I can...”. 이렇게 하면 앱이 결과에 집중하고 AI 빌더에 안정적이고 테스트 가능한 요구사항을 제공합니다.
다음은 ‘완료’가 명확한 현실적인 JTBD 예시들입니다:
- 통화가 끝나면 다음 단계를 한 곳에 기록하고 싶다, 그래서 제때 후속 조치할 수 있다. 완료 기준: 노트 저장, 마감일 설정, 알림 예약.
- 새 요청이 도착하면 빠르게 승인하거나 거부해 작업이 계속 진행되게 하고 싶다. 완료 기준: 결정 기록, 요청자 알림, 상태 업데이트.
- 모바일에서는 오늘의 작업만 보고 싶다, 그래서 검색 없이 바로 행동할 수 있다. 완료 기준: 오늘로 필터된 작업, 한 번의 탭으로 완료 표시.
- 실수하면 마지막 변경을 되돌리고 싶다, 그래서 지원 없이 복구할 수 있다. 완료 기준: 이전 상태 복원, 감사 메모 생성.
성공 기준은 ‘보기 좋다’는 모호함을 제거합니다. UI가 무엇을 허용해야 하고 백엔드가 무엇을 저장해야 하는지 빌더에게 알려줍니다.
권한은 높은 수준에서 추가하세요
전체 보안 계획을 쓰지는 마세요. 단지 누가 무엇을 할 수 있는지 평이하게 적으세요.
예: “회원은 자신의 항목을 생성 및 편집할 수 있다. 매니저는 어떤 항목이든 편집하고 상태를 변경할 수 있다. 소유자는 사용자와 결제를 관리할 수 있다.”
Planning Mode 같은 도구에서 이 단계의 사용자 유형, JTBD 문장, 권한은 신뢰할 수 있는 입력이 됩니다. 또한 AI가 불필요한 역할을 만들거나 책임을 뒤섞는 것을 방지합니다.
엔티티: 기술적이지 않게 데이터를 정의하기
엔티티는 앱이 추적하는 ‘사물’입니다. 명확히 이름을 지으면 AI 빌더가 화면, 폼, 일관된 데이터 구조를 만들 수 있습니다. 이게 필드 불일치와 무작위 추가 기능을 막는 방법입니다.
핵심 명사를 나열하는 것부터 시작하세요. 예: 프로젝트 관리 앱이라면 Project, Task, Comment. 미용실 예약이라면 Booking, Service, Customer, Staff.
사람들이 실제로 말하는 5–10개 필드를 고르세요
각 엔티티에 대해 평이한 단어로 필드를 적으세요. 사람이 폼에 입력할 법한 것들을 떠올리세요.
- Task: title, description, status, due date, priority, assigned to, created by
- Project: name, goal, start date, end date, owner, archived(yes/no)
- Invoice: invoice number, client name, amount, currency, due date, paid(yes/no)
한 문장으로 설명할 수 없으면 그 필드는 v1에 너무 자세한 것입니다.
관계와 규칙을 평이하게 쓰세요
엔티티가 어떻게 연결되는지 간단한 문장으로 설명하세요:
“한 사용자는 여러 프로젝트를 가질 수 있다.” “각 태스크는 하나의 프로젝트에 속한다.” “댓글은 태스크에 속하고 한 명의 작성자가 있다.”
이러면 빌더는 일관된 목록, 상세 페이지, 필터를 생성할 수 있습니다.
몇 가지 데이터 규칙을 추가해 엉망이 되는 동작을 피하세요:
- 필수: “Task 제목은 필수다.”
- 고유: “Invoice 번호는 고유해야 한다.”
- 제한: “Description 최대 500자.”
- 기본값: “새 태스크는 기본 상태 = Open.”
마지막으로 아직 저장하지 않을 것을 명시해 범위를 줄이세요. 예: “v1에 파일 첨부 없음”, “직원 일정 추적은 하지 않고 예약만” 같은 제외 항목은 앱이 잘못 성장하는 것을 막습니다.
화면과 흐름: 단순하고 예측 가능하게 유지하세요
첫 버전이 적고 안정적인 화면 집합을 가질 때 한 페이지 스펙 템플릿이 가장 잘 작동합니다. 미래의 모든 화면을 설계하려 하면 AI 빌더는 계속 추측하고 UI는 빌드마다 흘러갑니다.
주요 작업을 완료하게 해주는 최소 화면을 이름 짓는 것부터 시작하세요. 대부분의 MVP는 3–6개의 화면이면 충분합니다:
- 로그인
- 목록(주요 아이템)
- 상세(한 항목 보기)
- 생성/편집(폼)
- 설정(선택 사항)
그다음 해피 패스를 시작에서 끝까지 짧은 이야기로 쓰세요.
예: “사용자가 로그인하고 목록으로 착륙, 검색, 항목 열기, 한 필드 편집, 저장, 목록으로 복귀.”
각 화면에 대해 핵심 동작을 평이한 말로 적으세요. 모든 것을 할 수 있는 화면을 피하고, 가장 중요한 2–4개의 동작(생성, 편집, 검색, 내보내기, 보관 등)을 선택하세요.
또한 무엇이 ‘빠르게’ 되어야 하고 무엇이 ‘충분히 좋을’지 결정하세요. ‘빠름’은 보통 목록이 빠르게 열리고 검색이 즉각적이며 저장이 즉각적으로 느껴지는 것을 의미합니다. ‘충분히 좋음’은 내보내기가 몇 초 걸리거나 기본 분석, 설정이 간략한 것일 수 있습니다.
마지막으로 역할과 접근을 역할별로 한 줄씩 캡처하세요:
- Viewer: 보기 및 검색 가능
- Editor: 생성 및 편집 가능
- Admin(필요한 경우만): 사용자 관리 및 삭제 가능
이렇게 하면 화면이 예측 가능해지고 권한 관련 문제를 줄이며 이후 재작업을 줄입니다.
재작업을 막는 엣지 케이스와 비목표
대부분의 재작업은 한 가지 이유로 발생합니다: 해피 패스에서는 잘 동작하는데 실제 사용에서 깨질 때입니다.
좋은 한 페이지 스펙 템플릿은 엣지 케이스와 비목표를 다루는 공간을 마련하고, 그 작은 공간이 수시간을 절약합니다.
각 JTBD에서 무엇이 잘못될 수 있는지 물어보면서 시작하세요. 기술적이기보다는 평이하게 쓰세요. 목표는 빌더가 매번 같은 결정을 하게 모호함을 제거하는 것입니다.
자주 적어둘 가치가 있는 엣지 케이스:
- 누락되거나 불완전한 정보(빈 필드, 알 수 없는 주소, 프로필 사진 없음)
- 중복(같은 사용자가 두 번 가입, 같은 항목 두 번 추가)
- 충돌(두 사람이 같은 레코드를 편집, 보는 동안 상태 변경)
- 제한과 타임아웃(느린 연결, 업로드 실패, 요청 지연)
- 권한 문제(볼 수 없거나 편집할 수 없어야 할 것을 시도)
그런 다음 반응을 결정하세요. 구체적으로: “동작을 차단하고 명확한 메시지를 띄운다”, “임시 저장으로 허용한다”, “한 번 재시도하고 실패하면 버튼으로 재시도” 등. 이런 규칙은 일관된 프롬프트로 바로 번역됩니다.
개인정보 및 안전 기대치도 한두 줄로 적으세요. 예: “필요 최소한의 데이터만 수집”, “사용자는 계정 및 개인 데이터 전부를 삭제할 수 있다”, “기본적으로 개인 항목은 숨김”. 사용자 생성 콘텐츠가 있다면 신고와 스팸 처리 방침도 v1에서는 단순하게라도 적어두세요.
마지막으로 비목표를 써서 범위 확장을 막으세요. 지금 당장 하지 않을 가장 유혹적인 기능을 골라 쓰세요.
분명한 비목표 예시:
- v1에 결제나 구독 없음
- 소셜 로그인 없음(지금은 이메일만)
- 기본 목록 및 삭제 이상의 관리자 대시보드 없음
- 오프라인 모드 없음
간단한 예: 작업이 “이벤트 생성”이라면 날짜가 과거일 때, 제목이 비어 있을 때, 같은 이벤트가 두 번 생성될 때 무슨 일이 일어나는지 정의하세요. 그 명료함이 다음 재작업을 막습니다.
한 페이지 스펙을 AI 빌더가 실행할 수 있는 프롬프트로 변환하기
일관된 결과를 얻는 가장 빠른 방법은 스펙의 각 블록을 작은 직접 명령으로 바꾸는 것입니다. 빌더가 순서대로 따라갈 수 있는 카드 세트처럼 생각하세요. 한 번에 큰 모호한 요청 하나보다 이 방식이 낫습니다.
각 블록(Users, Jobs, Entities, Screens, Edge cases, Non-goals)을 명확한 명사와 동사를 가진 한 문장 지시로 바꾸세요. “깔끔하게 만들어라” 같은 의견은 “깔끔”이 무엇인지 설명하지 않으면 피하세요.
작동하는 단순한 프롬프트 패턴
두 단계 사이클을 사용하세요: 먼저 빌드하고, 검증하세요.
- 빌드: “다음 엔티티에 대한 데이터 모델과 API를 생성하라: [Entities 붙여넣기]. 다음 역할을 지원하라: [Users 붙여넣기].”
- 빌드: “다음 화면과 흐름을 정확히 생성하라: [Screens/Flows 붙여넣기].”
- 검증: “이제 전체 스펙과 대조하라. 불일치 항목을 나열하고 고쳐라: [한 페이지 스펙 전체 붙여넣기].”
완료 정의를 짧게 적어 빌더가 언제 멈출지 알게 하세요. 측정 가능하게 유지:
- 모든 역할이 각 JTBD를 처음부터 끝까지 완료할 수 있다
- 각 엔티티는 생성, 보기, 편집, 보관(스펙에 명시된 경우)을 지원한다
- 화면이 명명된 흐름과 일치하고 필드 레이블이 일관된다
- 엣지 케이스에 대해 명확한 메시지로 처리(무음 실패 없음)
정말 중요한 경우에만 제약을 추가하세요: 요구되는 기기(모바일 우선), 요구되는 인증(관리자 전용 동작), 또는 플랫폼이 기대하는 특정 스택(예: React 프런트엔드, Go 백엔드, PostgreSQL) 등.
계획을 깨지 않고 변경 요청하기
수정하고 싶을 때는 스펙 블록을 참조하고 코드를 직접 지시하지 마세요.
예: “Entities 블록 업데이트: ‘Subscription’ 추가 필드 X와 Y. 그런 다음 영향받는 API와 화면만 재생성하고 검증 단계 다시 실행.”
이 접근법은 계획을 안정적으로 유지하면서 안전하게 반복하게 해줍니다.
현실적인 예: 아이디어에서 Planning Mode 프롬프트까지
간단한 미용실 약속 알림 트래커를 원한다고 가정해보겠습니다. 목표는 전체 예약 시스템이 아니라 약속을 저장하고 알림을 보내는 가벼운 도구입니다.
다음은 한 페이지 앱 스펙 템플릿을 채웠을 때의 예시입니다.
APP: Appointment Reminder Tracker
GOAL: Track appointments and send reminders. No payments, no online booking.
USERS
1) Owner/Staff: creates and manages appointments, wants fewer no-shows.
2) Client: receives reminders, wants an easy way to confirm.
JOBS TO BE DONE (JTBD)
1) As staff, I add an appointment in under 30 seconds.
2) As staff, I see today's schedule in time order.
3) As staff, I mark a client as confirmed or no-show.
4) As staff, I resend a reminder when asked.
5) As a client, I confirm from a message without creating an account.
ENTITIES (DATA)
- Client: id, name, phone, email (optional), notes
- Appointment: id, client_id, service, start_time, duration_min, status (scheduled/confirmed/canceled/no_show)
- Reminder: id, appointment_id, channel (sms/email), send_at, sent_at, result (ok/failed)
- StaffUser: id, name, role (owner/staff)
Relationships: Client 1-to-many Appointment. Appointment 1-to-many Reminder.
EDGE CASES (WHAT BREAKS NAIVE BUILDS)
1) Duplicate client (same phone, different name)
2) Overlapping appointments for the same staff
3) Time zone changes (travel, daylight saving)
4) Client has no email, SMS only
5) Reminder send fails, needs retry and visible status
6) Appointment edited after reminder scheduled
7) Client cancels after confirmation
8) Same-day appointment created 10 minutes before start
9) Phone number format varies (+1, spaces, dashes)
10) Deleting a client with future appointments
이제 이를 Planning Mode에 붙여넣을 수 있는 프롬프트 번들로 바꾸세요. 빌더가 매번 같은 선택을 하도록 엄격하게 유지하세요.
PLANNING MODE PROMPT BUNDLE
1) Build an MVP web app with these entities and relationships exactly as written.
2) Required screens: Login (StaffUser), Today Schedule, Client List, Client Detail, Appointment Create/Edit.
3) Required flows: create client, create appointment for a client, confirm/cancel/no-show, schedule reminders, resend reminder.
4) Constraints: no payments, no public booking page, no client accounts.
5) Edge-case handling: implement validation and UI feedback for all 10 edge cases listed.
6) Output: database schema, API endpoints, and UI behavior notes per screen.
AI로 만든 앱을 일관성 없게 만드는 흔한 함정
엉망인 출력은 보통 모호한 스펙과 기능 위시리스트에서 시작합니다. AI 빌더는 당신이 시키는 대로 하지만, 당신의 생각은 읽을 수 없습니다. 작은 구멍이 화면과 흐름 전반에 큰 차이를 만듭니다.
다음 함정들이 가장 자주 일관성을 깨뜨리며, 한 페이지 스펙 템플릿은 이를 고칩니다:
- 기능 중심의 명세: “즐겨찾기 추가”는 기능입니다. 작업은 “나중에 다시 볼 항목을 저장”과 같이 의도와 성공을 포함합니다. 작업은 버튼 위치, 저장 후 동작, 빈 상태 문구 같은 합리적인 선택을 가능하게 합니다.
- 초기부터 너무 많은 엔티티: 첫날 12개의 테이블을 정의하면 로직이 여기저기 퍼집니다. 먼저 배포할 수 있는 가장 작은 모델로 시작하세요. “Project, Task, Comment, Tag, Attachment”가 크다면 우선 “Project”와 “Task”만으로 시작하세요.
- 권한 누락: 누가 편집하거나 삭제할 수 있는지 쓰지 않으면 빌더가 추측합니다. “오직 소유자만 삭제 가능”, “회원은 생성/편집 가능”, “뷰어는 읽기만 가능” 같은 단순 규칙을 쓰세요. 이는 데이터 노출 사고를 줄입니다.
- 명확한 완료 기준 부재: 완료 정의가 없으면 끝없는 반복이 생깁니다. 2–4개의 수용 기준을 추가하세요(예: “사용자가 30초 내에 태스크 생성 가능” 또는 “새로고침 후에 태스크가 올바르게 표시됨”).
- 예상 동작 없는 엣지 케이스: “오프라인”, “중복 이메일”, “빈 목록”을 나열하는 것만으로는 부족합니다. 각 경우에 앱이 무엇을 해야 하는지 쓰세요. 예: “이메일이 이미 있으면 친절한 오류를 보여주고 로그인 제안을 표시.”
Planning Mode를 Koder.ai에서 사용한다면 이 기본은 더욱 중요합니다. 계획은 반복 프롬프트의 근원이 되기 때문에 명확한 작업, 작은 데이터 모델, 명시적 권한, 테스트 가능한 완료 규칙이 각 화면을 정렬된 상태로 유지합니다.
빠른 체크리스트와 다음 단계
빌드 전에 한 페이지 앱 스펙 템플릿을 빠르게 점검하세요. 목표는 AI 빌드가 추측하게 만드는 구멍을 제거하는 것입니다. 그 추측들이 재작업으로 이어집니다.
빠른 완성도 체크:
- Users: 각 사용자 유형에 명확한 목표와 “누가 무엇을 할 수 있는지”(생성, 보기, 편집, 삭제) 메모가 있는가?
- Jobs-to-be-done: 각 작업이 트리거로 시작하고 검증 가능한 명확한 성공 결과로 끝나는가?
- Entities: 작업에서 사용하는 모든 명사가 데이터 항목으로 뒷받침되는가(이름, 상태, 타임스탬프 등 최소한의 필드라도)?
- Screens and flows: 각 작업이 단순한 경로(시작 화면, 주요 동작, 확인)로 매핑되는가?
- Edge cases: 빈 상태, 잘못된 입력, 중복, 권한, 네트워크 문제/오프라인 등 최소 5가지 이상 적었는가?
간단한 점수 아이디어: 각 영역을 0–2로 평가하세요:
- 0: 누락되었거나 모호함
- 1: 존재하지만 불분명함
- 2: 빌드할 만큼 명확함
생성하기 전에 총점 7 이상을 목표로 하세요. Entities나 Edge cases가 2 미만이면 먼저 그 부분을 고치세요. 이들이 가장 많은 변경을 유발합니다.
첫 빌드 후에는 각 JTBD에 대해 앱을 검토하고 불일치를 표시하세요. 변경 전 스냅샷을 남기고, 새로운 반복이 상황을 악화시키면 롤백하고 더 작은 수정을 시도하세요.
Koder.ai (koder.ai)를 사용하는 경우, Planning Mode에 이 한 페이지 스펙을 “진실의 원천”으로 보관하고 변경된 부분만 재생성해 수작업으로 모든 것을 다시 쓰지 않도록 하세요. 변경을 수용하면 같은 날 스펙을 업데이트하고, 변경을 거부하면 그 이유를 적어 다음 프롬프트가 일관되게 유지되게 하세요.
자주 묻는 질문
“Planning Mode”란 무엇이며, 왜 빌드 전에 사용해야 하나요?
Planning Mode는 화면과 코드를 생성하기 전에 핵심 결정을 적어두는 짧은 일시정지 단계입니다. 목적은 일관성입니다: 동일한 사용자, 흐름, 데이터 명칭이 UI, 백엔드, 데이터베이스 전반에 걸쳐 유지되게 하여 매번 다른 추측 때문에 재구성하지 않도록 합니다.
한 페이지 앱 스펙 템플릿에 무엇을 넣어야 하나요?
한 문장 목표로 시작한 뒤 네 블록을 채우세요:
- Users (2–3 유형)
- Jobs-to-be-done (3–7개의 결과 중심 문장)
- Entities (핵심 명사 + 몇 개의 필드)
- Edge cases + non-goals (무엇이 깨지는지, 무엇을 아직 안 할지)
한 페이지에 들어가지 않으면 v1에서 기능을 줄이세요.
적절한 사용자 역할을 어떻게 선택하나요? 복잡하게 만들지 않으려면?
실용적이고 의도 기반으로 유지하세요. 몇 가지 사용자 유형과 그들이 달성하려는 목적을 적으세요.
예: “약속을 생성하는 Owner/Staff”는 단순히 “Admin”보다 명확합니다. 역할이 한 줄로 설명되지 않으면 아마 너무 모호한 것입니다.
AI 빌더가 실제로 따라할 수 있는 JTBD는 어떻게 작성하나요?
각 작업을 테스트 가능하게 만드려면 엄격한 패턴을 사용하세요:
- “When [상황], I want to [동작], so I can [결과].”
그런 다음 완료 정의(무엇이 저장/업데이트/보여져야 하는지)를 추가하세요. 이 방식은 빌더가 임의의 단계나 무작위 화면을 추가하지 못하게 합니다.
MVP를 위한 Entities 섹션은 어느 정도 상세해야 하나요?
화면에서 실제로 사용할 ‘앱이 기억하는 것들’을 평이한 언어로 적고, 각 항목에 3–7개의 필드를 적으세요.
예: Appointment: start time, duration, status, service, client. 화면이나 작업에서 사용하지 않는 필드는 v1에서 제외하세요.
관계와 데이터 규칙을 설명해야 하나요, 아니면 나열만으로 충분한가요?
관계를 간단한 문장으로 쓰세요:
- “한 클라이언트는 여러 예약을 가질 수 있다.”
- “각 리마인더는 하나의 예약에 속한다.”
필수 필드, 고유성, 기본값 같은 몇 가지 기본 규칙을 추가하면 목록, 폼, 필터가 일관되게 생성됩니다.
첫 버전에서 얼마나 많은 화면과 흐름을 정의해야 하나요?
첫 버전에서 사람을 완료시키는 최소 화면을 정하세요. 대부분의 MVP는 3–6개의 화면이면 충분합니다:
- 로그인
- 목록(주요 항목)
- 상세(개별 항목 보기)
- 생성/수정(폼)
- 설정(선택 사항)
그리고 시작부터 끝까지의 해피 패스를 짧은 이야기로 쓰세요(예: 로그인 → 목록 → 항목 열기 → 편집 → 저장 → 목록 복귀).
한 페이지 스펙에서 어떤 엣지 케이스를 작성해야 하나요?
현실 사용에서 해피 패스가 깨지는 지점을 적으세요. 가장 가능성 높은 상위 5–10개를 쓰고, 각 상황에 대한 기대 동작을 명확히 하세요(차단하고 메시지 표시, 임시 저장 허용, 재시도 후 오류 표시 등).
예: 중복, 빈 필드, 권한 오류, 충돌(동시 편집), 실패/타임아웃.
한 페이지 스펙을 일관되게 실행 가능한 프롬프트로 어떻게 바꾸나요?
각 블록을 빌더가 실행하고 검증할 수 있는 짧은 지시문으로 바꾸세요.
간단한 순서:
- Entities로 데이터 모델 + API를 빌드하라.
- Screens/Flows로 화면을 빌드하라.
- 전체 스펙과 대조해 불일치를 나열하고 고치라.
이 방식은 한 번에 너무 큰 프롬프트에 의존하지 않게 합니다.
마음이 바뀌었을 때 앱을 전체를 망가뜨리지 않고 어떻게 업데이트하나요?
먼저 스펙을 업데이트하고, 변경된 부분만 재생성하세요.
예: “Subscription 엔티티와 필드 X/Y를 추가: 영향받는 API와 화면만 갱신하고 스펙과 대조해 검증하라.” 스펙을 진실의 원천으로 유지하면 흩어진 불일치를 막을 수 있습니다.