커머스 AI 운영 실전 8주 과정 · 2주차

요청을 설계하기

무엇을, 어디까지, 어떻게 확인하면 끝인가

난이도 LV.2 기초

수업 3시간 · 자료 4시간 40분

실습: contto.ai 70% 클론

2 / 8

이번 주 목표

이번 주가 끝나면 할 수 있어요

01

요청서로 일을 맡겨요

목표·범위·완료 조건·하지 말 것·보고 형식이 든 요청서로 한 번에 맞혀요.

02

결정은 1문1답으로

PRD v0.2와 기술 결정 15개를 AI의 질문에 답하며 정하고 기록해요.

03

브랜드를 DB에 저장해요

Supabase(DB·Storage만)를 연결하고 마이그레이션으로 브랜드 등록을 저장해요.

2주차 · 요청을 설계하기 — 2

진행 순서

이번 주 자료는 4시간 40분 분량이에요

진한 칸(코어)만 하면 3시간 수업이에요. 회색 칸은 확장·자습이에요.

20분
45분
15분
20분
30분
70분
45분
20분
15분

0:00

복습 리뷰

0:20

개념 핵심

1:05

개념 심화

1:20

영상 노트

1:40

강사 시연

2:10

실습 1

3:20

실습 2 도전

4:05

상급 노하우

4:25

회고 과제

코어확장전체 4시간 40분

2주차 · 요청을 설계하기 — 3

진행 순서 · 자세히

구간마다 이렇게 진행해요

시간순서내용구분
0:00–0:20복습·과제 리뷰RULES.md·PRD v0.1 두 명 발표코어
0:20–1:05개념 (핵심)모호한 요청, 요청서 다섯 칸, 완료 조건, 계획 먼저코어
1:05–1:20개념 (심화)같은 요청도 결과가 다른 이유, 결정 기록확장
1:20–1:40참고 영상 노트양실장 PRD 방식, CNV 3단계 '먼저 대화'확장
1:40–2:10강사 시연PRD v0.2와 기술 결정 1문1답코어
2:10–3:20실습 1 (기본)결정 15개·Supabase·마이그레이션·브랜드 등록코어
3:20–4:05실습 2 (도전)할인정보·제품 화면확장
4:05–4:25상급 노하우모델별 에이전트 최적화확장
4:25–4:40회고·과제나쁜 요청 vs 좋은 요청 비교 공유코어

2주차 · 요청을 설계하기 — 4

지난주 복습

지난주에 세운 규칙 위에 쌓아요

오늘 이어서

PRD v0.1 → v0.2, 로컬 JSON → DB

2주

diff 읽기

요청 안 한 변경을 찾았나요? 그 경험이 RULES.md에 들어갔나요?

1주

지침 한 장

RULES.md와 포인터 파일. 새 세션이 '읽은 파일'을 적었나요?

1주

2주차 · 요청을 설계하기 — 5

미니 콘토 지도

이번 주는 '브랜드' 메뉴의 바닥을 깔아요

URL 자동 분석은 3주차예요. 화면 꾸미기는 최소로 해요.

브랜드 메뉴

contto.ai의 네 화면

브랜드정보

이름·URL을 DB에 · 이번 주

할인정보

손으로 입력 · 도전

고객 유형

URL 분석 초안 · 3주차

제품

손으로 입력 · 도전

2주차 · 요청을 설계하기 — 6

개념 1

모호한 요청이 비싼 이유

에이전트는 빈칸을 비워 두지 않아요. 그럴듯하게 채워요.

한 줄 요청

빈칸은 추측으로 채워져요

  • 말 안 한 조건을 지어내요
  • 가입 화면을 만들어 와요
  • 끝은 '다 됐어요'가 정해요
  • 세 번 왕복하며 고쳐요
요청서 한 장

빈칸을 사람이 먼저 채워요

  • 범위·하지 말 것이 있어요
  • 완료 조건으로 끝을 확인해요
  • 한 번에 맞힐 확률이 높아요
  • 왕복 세 번보다 싸요

2주차 · 요청을 설계하기 — 7

개념 2

요청서는 다섯 칸이에요

가장 자주 빠지는 칸은 '하지 말 것'이에요.

01

목표

한 문장: 브랜드 등록을 DB에 저장

02

범위

brands 테이블, 등록·목록 화면

03

완료 조건

2개 등록 → 새로고침 유지, 테스트 통과

사람 승인 관문

04

하지 말 것

로그인 만들지 않기, 키를 코드에 쓰지 않기

05

보고 형식

바꾼 파일 · 확인 결과 · 못 한 것

2주차 · 요청을 설계하기 — 8

개념 3

완료 조건은 확인할 수 있게 써요

'잘 되게'는 조건이 아니에요. 실패할 때의 동작도 넣어요.

완료 조건

누가 봐도 같은 판정

숫자로

2개 등록 → 2개 보임

명령으로

pnpm test 통과 · 응답 200

화면으로

모바일 폭 가로 스크롤 없음

없을 때도

URL이 비면 저장 안 됨

2주차 · 요청을 설계하기 — 9

개념 4

큰 일은 계획부터 받아요

바뀔 내용을 한 문장으로 말할 수 없으면 계획부터 받아요.

나

사람

에이전트

AI

1. 계획만 보여 줘

2. 할 일 목록 작성

3. 계획 제안

4. 빠진 것·넘친 것 고치기

5. OK, 실행해

6. 실행

7. 완료 조건별 결과 보고

2주차 · 요청을 설계하기 — 10

개념 5

클론에 필요한 기술 결정 15개

결정선택결정선택
01 프레임워크Next.js (App Router)09 단위 테스트Vitest
02 언어TypeScript10 E2E 테스트Playwright
03 스타일Tailwind + shadcn/ui11 CIGitHub Actions
04 DBSupabase Postgres12 배포Vercel
05 파일 저장Supabase Storage13 입력 검증Zod
06 인증없음 (가입 제외)14 LLM 호출서버 라우트에서만
07 스키마 변경SQL 마이그레이션15 비용하루 상한
08 API라우트 핸들러

2주차 · 요청을 설계하기 — 11

개념 6 · 심화

같은 요청도 결과가 다른 이유

그래서 요청서에는 '확인할 방법'이 꼭 있어야 해요.

3D 장면 · 같은 요청도 결과가 다른 이유

웹 발표 화면에서 움직여요

1

앞의 글이 토큰으로 들어가요

2

모델이 다음 후보를 계산해요

3

후보마다 확률이 붙어요

4

온도를 올리면 고르게 퍼져요

5

그래서 뽑을 때마다 달라요

2주차 · 요청을 설계하기 — 12

개념 7 · 심화

결정은 기록으로 남겨요 (ADR)

# docs/decisions/004-database.md
결정: Supabase Postgres + Storage (Auth는 쓰지 않음)
날짜: 2주차 실습
이유: 무료 플랜으로 시작, 마이그레이션 파일로 형상 관리
대안: SQLite(배포가 번거로움), Firebase(SQL이 아님)
결과: brands 테이블부터 시작, 키는 .env.local
되돌리는 법: 마이그레이션 down, 데이터는 JSON으로 내보내기
AI에게 물은 것: '대안과 왜 이걸 추천하는지'

2주차 · 요청을 설계하기 — 13

운영 루프에서

요청서는 AI 칸의 입력이에요

완료 조건은 나중에 승인 관문의 기준이 돼요.

01

코드

데이터

브랜드 URL·이름 저장 (이번 주)

02

AI

AI

요청서가 AI의 입력

03

사람

승인 관문

완료 조건 = 사람의 확인 기준

사람 승인 관문

04

가짜

실행

아직 없음 (7주)

05

코드

성과 원장

결정 기록이 첫 원장

원장이 다음 데이터가 돼요

2주차 · 요청을 설계하기 — 14

참고 영상 노트

PRD는 AI의 질문에 답하며 써요

출처: 양실장의 바이브코딩대학 「3시간 순삭) 55개 기술 의사결정, 소스코드 해설까지」 · https://www.youtube.com/watch?v=K6Rsy-pHBi0&t=1714s

28:34

초안부터 받아요

AI가 PRD 초안을 쓰고 사람은 고쳐요.

31:41

결정할 것만 묻게

결정이 필요한 것만 한 번에 하나씩 묻게 해요.

32:42

모르면 '권장대로'

모르는 결정은 권장안으로 넘기고 기록을 남겨요.

35:45

틀리면 지적해요

맥락에 안 맞는 가정은 바로 고쳐 달라고 해요.

PRD v0.1 → 질문 → v0.2. 결정마다 이유를 남겨요.

2주차 · 요청을 설계하기 — 15

참고 영상 노트

먼저 대화하고, 그다음 개발해요

출처: CNV AI 「AI 에이전트 만들기 3단계 — AI에게 실제 업무 시스템을 개발시키는 방법」 · https://www.youtube.com/watch?v=hG9i8nFHEEs&t=924s

15:24

바로 만들라고 하지 않기

충분히 대화한 뒤 개발하자고 시작해요.

17:33

선택지와 질문 받기

에이전트가 선택지와 질문을 내고 사람이 답해요.

21:41

확장은 모듈로

나중에 붙일 기능을 모듈 단위로 미리 정해요.

24:49

참고 자료는 폴더에

기준과 참고 소스를 작업 폴더에 받아 둬요.

요청 전에 대화, 대화의 결론은 요청서 한 장으로.

2주차 · 요청을 설계하기 — 16

현장에서 있었던 일

요일 탓인가, 소재 탓인가

상황

한 D2C 브랜드가 광고 소재 판정을 에이전트에게 맡겼는데, 요청에 판정 시점이 없었어요.

문제

요일마다 매출이 크게 달라서(예시: 일 125 … 금 89), 금요일 숫자만 보면 좋은 소재도 잘려요.

바꾼 것

요청서의 완료 조건에 '판정은 월요일, 요일 보정 후'를 넣었어요. 그 뒤로 판정이 흔들리지 않았어요.

2주차 · 요청을 설계하기 — 17

강사 시연 30분

PRD v0.2와 기술 결정 1문1답

볼 것: 결정 충돌 알림 · 코드에 키 없음 · 완료 조건으로 끝 확인

01

AI

결정 질문

PRD를 읽고 필요한 것만 하나씩

02

사람

용어 묻기

뭐고, 대체재는, 왜 이걸 추천해?

03

AI

기록

결정마다 docs/decisions/ 에

04

사람

키 발급

Supabase 프로젝트·키는 .env.local

사람 승인 관문

05

코드

저장 확인

마이그레이션 001 → 등록 → 새로고침

2주차 · 요청을 설계하기 — 18

시연 프롬프트

요청서를 채워서 보내요

[목표] 브랜드 등록(이름·URL)을 Supabase brands 테이블에 저장해요
[범위] supabase/migrations/001_brands.sql, 브랜드 등록·목록 화면
[완료 조건] 2개 등록 → 새로고침 후 2개 보임 / URL이 비면 저장 안 됨
            pnpm test 통과
[하지 말 것] 인증·로그인 만들지 않기, 키를 코드에 쓰지 않기
[보고] 바꾼 파일 · 확인 명령과 결과 · 확인 못 한 것

먼저 계획을 보여 줘. 내가 OK 하면 그때 실행해.

2주차 · 요청을 설계하기 — 19

실습 1 · 70분

요청서로 브랜드 등록을 DB에 저장해요

  1. 같은 기능을 한 줄 요청(A)과 요청서(B)로 각각
  2. PRD v0.2: AI의 결정 질문에 답하기
  3. 기술 결정 15개를 docs/decisions/ 에 기록
  4. Supabase 연결(DB·Storage), 키는 .env.local
  5. 마이그레이션 001 + 브랜드 등록 저장
  6. A와 B를 시간·왕복 수·결과로 비교

완료 조건

  • 결정 기록 15개
  • 브랜드 2개 등록 → 새로고침 뒤에도 유지
  • .env.local이 커밋에 없음
  • A/B 비교표

2주차 · 요청을 설계하기 — 20

실습 힌트

막히면 이렇게 요청해요

상황이렇게 말해요
질문이 너무 많아요"꼭 필요한 5개만 묻고 나머지는 권장대로"
용어를 모르겠어요"이게 뭐고, 대체재는 뭐고, 왜 이걸 추천해?"
결정끼리 부딪혀요"결정 목록 전체에서 서로 충돌하는 걸 찾아 줘"
계획 없이 실행해요"실행하지 말고 계획만. 내가 OK 하면 실행"
완료를 못 믿겠어요"완료 조건 하나씩 확인한 명령과 결과를 보여 줘"

2주차 · 요청을 설계하기 — 21

실습 2 · 도전 45분

할인정보·제품 화면을 붙여요

완료: 마이그레이션 002 · 잘못된 입력은 저장 안 됨 · 요청서 v2(고친 점 표시)

01

사람

요청서

다섯 칸부터 써요

02

AI

마이그레이션

002: offers·products

03

AI

화면

브랜드 메뉴 아래 할인정보·제품

04

코드

입력 검사

Zod: 가격은 0 이상 숫자

05

코드

테스트

잘못된 입력 1개는 저장 안 됨

2주차 · 요청을 설계하기 — 22

템플릿

요청서 템플릿

[목표] 한 문장: 무엇을 바꾸나
[범위] 만질 파일·화면 / 만지지 않을 곳
[완료 조건] 확인할 수 있는 기준 3개 (숫자·명령·화면)
              실패할 때의 동작 1개
[하지 말 것] 가입·로그인, 키를 코드에, 실제 외부 API
[참고] docs/PRD.md, docs/decisions/, 화면 캡처
[보고 형식] 바꾼 것 · 확인 방법과 결과 · 확인 못 한 것

먼저 계획만 보여 줘. 내가 OK 하면 실행해.

2주차 · 요청을 설계하기 — 23

안전 체크

이번 주 안전 체크

계획

승인 전에는 실행 금지, 결정마다 되돌리는 법

매번

데이터

변경은 마이그레이션 파일로만, 실습 데이터에 개인정보 넣지 않기

한도

Supabase 무료 플랜 한도를 먼저 확인해요

키

키는 .env.local, 예시는 .env.example, 서버 전용 키는 서버에서만, 브라우저로 안 나가게

토대

2주차 · 요청을 설계하기 — 24

흔한 실수

요청 설계에서 자주 나오는 실수

실수무슨 일이 생기나대신 이렇게
한 줄 요청가입 화면 같은 걸 지어내요다섯 칸 요청서
완료 조건이 '잘'끝을 확인할 수 없어요숫자·명령·화면으로
결정 이유를 안 남김다음 세션이 다시 물어요docs/decisions/
DB를 대시보드에서 직접 수정재현이 안 돼요마이그레이션 파일로
키를 코드에커밋되면 회수 불가.env.local + .gitignore

2주차 · 요청을 설계하기 — 25

문제 해결

자주 막히는 곳과 해결

증상원인해결
Invalid API key변수 이름 오타·재시작 안 함이름 확인 후 dev 서버 재시작
relation does not exist마이그레이션 미적용마이그레이션 적용 명령 실행
조회가 0건행 보안(RLS)이 막음서버 라우트에서만 조회, 정책은 5주차
결정끼리 충돌무료 플랜 한도 등결정 목록 전체 점검 요청
계획이 너무 길어요범위가 넓음범위 칸을 줄이고 다시 계획

2주차 · 요청을 설계하기 — 26

자습 목록 · 확장

더 보고 싶은 사람을 위한 구간

자료볼 구간볼 것
양실장 3시간 강의28:34–37:16PRD 초안 → 결정 질문 → v0.2
양실장 3시간 강의37:16–113:41기술 결정 55개를 1문1답으로
CNV AI 3단계15:24–25:21먼저 대화, 요청 템플릿
양실장 LLM 원리54:22–58:31샘플링과 온도
공식 문서Supabase CLI 마이그레이션마이그레이션 만들기·적용

2주차 · 요청을 설계하기 — 27

상급 노하우

모델별 에이전트 최적화: 일마다 맞는 모델과 강도

기법어떻게왜
역할별 모델PRD·기술 결정은 최상위, 화면 구현은 중간, 카피 변형은 경량모든 일을 최상위로 하면 한도가 먼저 닳아요
추론 강도결정 1문1답은 high, 반복 수정은 low (/effort, model_reasoning_effort)모델을 바꾸기 전에 강도부터 조절해요
세션 시작 때 정하기모델·강도는 첫 요청 전에 골라요중간에 바꾸면 캐시가 깨져 사용량이 늘어요
엔진별 요청 스타일클로드는 행동 동사와 이유를, 코덱스는 목표·제약·완료 조건 계약을같은 요청서라도 강조점이 달라요

2주차 · 요청을 설계하기 — 28

상급 노하우 · 예시

결정은 높게, 카피 변형은 가볍게

심화 과제(선택): 같은 기술 결정 요청과 카피 변형 요청을 모델 2개 × 추론 강도 2단계로 돌려 시간·사용량·결과를 표로 비교해요

# 클로드 코드: PRD·기술 결정 세션
claude --model <최상위> --effort high
# .claude/agents/copywriter.md 카피 변형은 경량 모델
---
name: copywriter
model: haiku
tools: Read
---
# 코덱스: ~/.codex/config.toml
[profiles.decide] model_reasoning_effort = "high"
[profiles.fast] model_reasoning_effort = "low"

2주차 · 요청을 설계하기 — 29

과제와 다음 주

이번 주 과제

  • 요청서 템플릿 v1 (docs/request-template.md)
  • 결정 기록 15개 (docs/decisions/)
  • 브랜드 등록 DB 저장 + 마이그레이션 001
  • A/B 비교 3줄: 무엇이 달랐나
  • (선택) 심화 과제: 같은 기술 결정 요청과 카피 변형 요청을 모델 2개 × 추론 강도 2단계로 돌려 시간·사용량·결과를 표로 비교해요

다음 수업 첫 20분에 A/B 비교를 두 명이 발표해요.

다음 주

컨텍스트와 기억

URL을 넣으면 브랜드정보·할인·고객 유형·제품 초안이 채워지게 하고, 그 절차를 스킬로 만들어요.

2주차 · 요청을 설계하기 — 30

가로로 돌리면 더 크게 보여요
← 목록 2주차요청을 설계하기 3주차 →