| name | rn-harness-plan |
| description | Phase 2 โ PRD generation with user stories, Expo Router structure, FSD module map, and API design. |
| allowed-tools | ["Read","Write","Edit","Bash","Glob","Grep","AskUserQuestion"] |
rn-harness-plan โ Phase 2: ๊ธฐํ (PRD)
์์ฅ ์กฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ธ ๊ธฐํ์(PRD)๋ฅผ ์์ฑํ๋ค.
Trigger
์ค์ผ์คํธ๋ ์ดํฐ์์ Phase 2๋ก ํธ์ถ๋จ.
Input
docs/harness/specs/YYYY-MM-DD-research.md (์์ฅ ์กฐ์ฌ)
docs/harness/config.md
docs/harness/references/ (์์ผ๋ฉด)
Process
Step 1: ์์ฅ ์กฐ์ฌ ๋ถ์
research ์ฐ์ถ๋ฌผ์ ์ฝ๊ณ :
- MVP ๊ธฐ๋ฅ ๋ฆฌ์คํธ ํ์ธ
- ์ฐจ๋ณํ ์ ๋ต ํ์ธ
- ๊ธฐ์ ํ๋น์ฑ ํ์ธ
Step 2: PRD ์์ฑ
2a. ์ ํ ๊ฐ์
- ์ฑ ์ด๋ฆ (๊ฐ์)
- ์ฑ ์ฌ๋ฌ๊ทธ (
app_slug): ์ฑ ์ด๋ฆ์ kebab-case ์๋ฌธ์ผ๋ก ๋ณํ. Expo ํ๋ก์ ํธ ํด๋๋ช
+ Bundle ID์ ์ฌ์ฉ.
- ์: "๊ฐ๊ณ๋ถ ์ฑ" โ
budget-book, "์ปคํผ ๊ตฌ๋
" โ coffee-tracker
- AskUserQuestion์ผ๋ก ์ฌ์ฉ์ ํ์ธ/์์
- ํ ์ค ์๊ฐ
- ํต์ฌ ๊ฐ์น ์ ์
- ํ๊ฒ ์ฌ์ฉ์ ํ๋ฅด์๋ (2~3๊ฐ)
2b. ์ ์ ์คํ ๋ฆฌ
P0/P1/P2 ์ฐ์ ์์๋ก ์์ฑ:
US-001 [P0]: ์ฌ์ฉ์๋ ์ด๋ฉ์ผ๋ก ํ์๊ฐ์
ํ ์ ์๋ค.
- ์๋ฝ ๊ธฐ์ค: ์ด๋ฉ์ผ ํ์ ๊ฒ์ฆ, ๋น๋ฐ๋ฒํธ 8์ ์ด์, ์ฑ๊ณต ์ ํ ์ด๋
2c. ํ๋ฉด ๊ตฌ์กฐ (Expo Router)
app/
โโโ _layout.tsx # Root layout
โโโ (auth)/
โ โโโ _layout.tsx
โ โโโ login.tsx
โ โโโ signup.tsx
โโโ (tabs)/
โ โโโ _layout.tsx
โ โโโ index.tsx # ํ
โ โโโ explore.tsx
โ โโโ profile.tsx
โโโ (modal)/
โโโ settings.tsx
2d. FSD ๋ชจ๋ ๋งต
src/
โโโ features/
โ โโโ auth/ # ์ธ์ฆ
โ โโโ home/ # ํ ํผ๋
โ โโโ profile/ # ํ๋กํ
โโโ entities/
โ โโโ user/ # ์ฌ์ฉ์ ๋๋ฉ์ธ
โ โโโ post/ # ๊ฒ์๋ฌผ ๋๋ฉ์ธ
โโโ widgets/
โ โโโ header/ # ๊ณตํต ํค๋
โโโ shared/
โโโ api/ # Axios ํด๋ผ์ด์ธํธ
โโโ config/ # ํ๊ฒฝ์ค์ , ํ
๋ง
โโโ lib/ # ์ ํธ๋ฆฌํฐ
โโโ types/ # ๊ณตํต ํ์
โโโ ui/ # ๊ณตํต ์ปดํฌ๋ํธ
2e. API ์ค๊ณ
POST /auth/login # ๋ก๊ทธ์ธ
POST /auth/signup # ํ์๊ฐ์
GET /users/:id # ์ ์ ์ ๋ณด
PATCH /users/:id # ์ ์ ์์
GET /posts # ๊ฒ์๋ฌผ ๋ชฉ๋ก
POST /posts # ๊ฒ์๋ฌผ ์์ฑ
2f. ๋ฐ์ดํฐ ๋ชจ๋ธ
์ฃผ์ ์ํฐํฐ์ ํ๋์ ๊ด๊ณ ์ ์.
2g. ๊ด๊ณ ๋ฐฐ์น ์ ๋ต
AdMob ๊ด๊ณ ์์น ๊ฒฐ์ :
- ๋ฐฐ๋: ํญ ํ๋จ ๋๋ ๋ฆฌ์คํธ ์ฌ์ด
- ์ ๋ฉด ๊ด๊ณ : ํ๋ฉด ์ ํ ์
- ๋ฆฌ์๋ ๊ด๊ณ : ํ๋ฆฌ๋ฏธ์ ๊ธฐ๋ฅ ํด์
2h. MVP ๋ฒ์
- 1์ฐจ ์ถ์ ๊ธฐ๋ฅ (P0)
- 2์ฐจ ์
๋ฐ์ดํธ ๊ธฐ๋ฅ (P1)
- ํฅํ ๋ก๋๋งต (P2)
Step 3: ์ฌ์ฉ์ ํ์ธ
AskUserQuestion์ผ๋ก PRD ์์ฝ ๊ณต์ :
- ํ๋ฉด ๊ตฌ์กฐ ํ์ธ
- ํต์ฌ ๊ธฐ๋ฅ ํ์ธ
- ๊ด๊ณ ๋ฐฐ์น ํ์ธ
- ์์ ์์ฒญ ๋ฐ์
Output
docs/harness/plans/YYYY-MM-DD-prd.md:
# Product Requirements Document
## 1. ์ ํ ๊ฐ์
### ์ฑ ์ด๋ฆ
### ํ ์ค ์๊ฐ
### ํต์ฌ ๊ฐ์น ์ ์
### ํ๊ฒ ์ฌ์ฉ์
## 2. ์ ์ ์คํ ๋ฆฌ
### P0 (MVP ํ์)
### P1 (์ค์)
### P2 (๋์ค์)
## 3. ํ๋ฉด ๊ตฌ์กฐ
### Expo Router ํ์ผ ๊ตฌ์กฐ
### ๋ค๋น๊ฒ์ด์
ํ๋ก์ฐ
## 4. FSD ๋ชจ๋ ๋งต
### Features
### Entities
### Shared
## 5. API ์ค๊ณ
### ์๋ํฌ์ธํธ ๋ชฉ๋ก
### ์์ฒญ/์๋ต ํ์
## 6. ๋ฐ์ดํฐ ๋ชจ๋ธ
### ์ํฐํฐ ๊ด๊ณ๋
## 7. ๊ด๊ณ ๋ฐฐ์น ์ ๋ต
### ๋ฐฐ๋ ๊ด๊ณ ์์น
### ์ ๋ฉด ๊ด๊ณ ํธ๋ฆฌ๊ฑฐ
### ๋ฆฌ์๋ ๊ด๊ณ ์๋๋ฆฌ์ค
## 8. ๊ธฐ์ ์คํ
- React Native 0.81+ / Expo 54+
- TypeScript (strict)
- Expo Router 6 (file-based routing)
- NativeWind 4 (Tailwind CSS)
- Zustand 5 (์ ์ญ ์ํ)
- TanStack Query 5 (์๋ฒ ์ํ)
- React Hook Form + Zod (ํผ/๊ฒ์ฆ)
- FlashList 2 (๊ณ ์ฑ๋ฅ ๋ฆฌ์คํธ)
- react-native-google-mobile-ads (AdMob)
## 9. MVP ๋ฒ์ ๋ฐ ๋ก๋๋งต
Config Update
After PRD is finalized, update docs/harness/config.md with:
app_name: "[์ฑ ์ด๋ฆ]"
app_slug: "[kebab-case slug]"
bundle_id: "com.{company}.{slug}"
State Update
current_phase: design
next_role: rn-harness-design
HARD GATES
- ์ ์ ์คํ ๋ฆฌ์ ์๋ฝ ๊ธฐ์ค ํ์
- Expo Router ํ์ผ ๊ตฌ์กฐ ๋ฐ๋์ ํฌํจ
- FSD ๋ ์ด์ด ๊ท์น ์ค์ (app โ widgets โ features โ entities โ shared)
- ์ฌ์ฉ์ ํ์ธ ์์ด ๋ค์ Phase ์งํ ๊ธ์ง