- harness: 도메인 한 줄 → 에이전트 팀 자동 생성 메타 스킬 (v1.2.0) - zio-harness: React + Spring Boot + Mobile 풀스택 개발 에이전트 팀 (v1.0.0) - 에이전트 4종: orchestrator / analyst / bot / agent - PROJECT_MAP.md 폴더 구조 메모리 시스템 - references/: react, spring-boot, mobile, playwright, database, folder-map Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
143 lines
4.9 KiB
Markdown
143 lines
4.9 KiB
Markdown
# Folder Map — PROJECT_MAP.md 생성 및 유지 가이드
|
|
|
|
Claude Code가 세션 간 프로젝트 구조를 기억하기 위한 `PROJECT_MAP.md` 시스템.
|
|
|
|
---
|
|
|
|
## PROJECT_MAP.md 란
|
|
|
|
프로젝트 루트에 위치하는 **폴더 구조 메모리 파일**이다. 모든 에이전트가 작업 시작 시 이 파일을 먼저 읽어 "어떤 폴더에 무엇이 있는지" 파악한다.
|
|
|
|
**왜 필요한가:** Claude Code는 세션마다 새로 시작하므로, 프로젝트 구조를 매번 탐색하면 토큰 낭비가 크다. PROJECT_MAP.md 한 파일만 읽으면 전체 구조를 즉시 파악할 수 있다.
|
|
|
|
---
|
|
|
|
## 초기 생성 절차
|
|
|
|
프로젝트 루트에 PROJECT_MAP.md가 없을 때 실행한다:
|
|
|
|
1. 프로젝트 루트에서 최상위 폴더 목록 스캔
|
|
2. 각 폴더의 목적을 파악 (package.json, build.gradle, pubspec.yaml 등 메타파일 기준)
|
|
3. 아래 템플릿으로 PROJECT_MAP.md 생성
|
|
|
|
---
|
|
|
|
## PROJECT_MAP.md 템플릿 (React + Spring Boot + Mobile)
|
|
|
|
```markdown
|
|
# PROJECT_MAP
|
|
|
|
> 마지막 업데이트: {YYYY-MM-DD HH:MM}
|
|
> 스택: React {version} | Spring Boot {version} | {Mobile Framework} {version}
|
|
> 업데이트 방법: "PROJECT_MAP 업데이트해줘" 또는 zio-harness 실행 시 자동 갱신
|
|
|
|
## 프로젝트 구조
|
|
|
|
### 루트
|
|
| 파일/폴더 | 용도 |
|
|
|----------|------|
|
|
| `frontend/` | React 웹 프론트엔드 |
|
|
| `backend/` | Spring Boot 백엔드 API |
|
|
| `mobile/` | 모바일 앱 (React Native / Flutter) |
|
|
| `e2e/` | Playwright E2E 테스트 |
|
|
| `docs/` | 프로젝트 문서 |
|
|
| `docker-compose.yml` | 로컬 개발 환경 |
|
|
| `PROJECT_MAP.md` | 이 파일 — 폴더 구조 메모리 |
|
|
|
|
### frontend/ (React)
|
|
| 경로 | 용도 |
|
|
|------|------|
|
|
| `src/pages/` | 페이지 컴포넌트 (라우트 단위) |
|
|
| `src/components/` | 공유 UI 컴포넌트 |
|
|
| `src/hooks/` | 커스텀 훅 |
|
|
| `src/store/` | 상태 관리 (Zustand / Redux) |
|
|
| `src/api/` | API 호출 함수 (Axios / fetch) |
|
|
| `src/types/` | TypeScript 타입 정의 |
|
|
| `src/utils/` | 유틸리티 함수 |
|
|
| `public/` | 정적 에셋 |
|
|
| `package.json` | 의존성 |
|
|
| `.env.local` | 로컬 환경 변수 (VITE_API_URL 등) |
|
|
|
|
### backend/ (Spring Boot)
|
|
| 경로 | 용도 |
|
|
|------|------|
|
|
| `src/main/java/{package}/controller/` | REST API 컨트롤러 |
|
|
| `src/main/java/{package}/service/` | 비즈니스 로직 |
|
|
| `src/main/java/{package}/repository/` | JPA 리포지토리 |
|
|
| `src/main/java/{package}/domain/` | 엔티티 / 도메인 모델 |
|
|
| `src/main/java/{package}/dto/` | Request / Response DTO |
|
|
| `src/main/java/{package}/config/` | Spring 설정 (Security, CORS 등) |
|
|
| `src/main/java/{package}/exception/` | 예외 처리 |
|
|
| `src/main/resources/application.yml` | 앱 설정 |
|
|
| `src/main/resources/db/migration/` | Flyway DB 마이그레이션 |
|
|
| `src/test/` | 단위/통합 테스트 |
|
|
| `build.gradle` | 의존성 |
|
|
|
|
### mobile/ (React Native / Flutter)
|
|
| 경로 | 용도 |
|
|
|------|------|
|
|
| `src/screens/` | 화면 컴포넌트 |
|
|
| `src/navigation/` | 네비게이션 설정 |
|
|
| `src/components/` | 공유 UI 컴포넌트 |
|
|
| `src/api/` | API 클라이언트 |
|
|
| `src/store/` | 상태 관리 |
|
|
| `src/types/` | 타입 정의 |
|
|
| `android/` | Android 네이티브 코드 |
|
|
| `ios/` | iOS 네이티브 코드 |
|
|
|
|
### e2e/ (Playwright)
|
|
| 경로 | 용도 |
|
|
|------|------|
|
|
| `tests/` | 테스트 파일 |
|
|
| `pages/` | 페이지 오브젝트 |
|
|
| `fixtures/` | 테스트 픽스처 |
|
|
| `playwright.config.ts` | Playwright 설정 |
|
|
|
|
## 핵심 컨벤션
|
|
- **API URL 패턴**: `GET /api/v1/{resource}`, `POST /api/v1/{resource}`
|
|
- **컴포넌트 네이밍**: PascalCase (예: `UserProfile.tsx`)
|
|
- **훅 네이밍**: `use` 접두사 (예: `useAuth.ts`)
|
|
- **서비스 네이밍**: `{Resource}Service.java`
|
|
- **DTO 네이밍**: `{Action}{Resource}Request.java`, `{Resource}Response.java`
|
|
|
|
## 환경 변수
|
|
| 변수 | 위치 | 설명 |
|
|
|------|------|------|
|
|
| `VITE_API_URL` | frontend/.env.local | 백엔드 API 주소 |
|
|
| `DB_URL` | backend/application.yml | 데이터베이스 주소 |
|
|
| `JWT_SECRET` | backend/application.yml | JWT 서명 키 |
|
|
|
|
## 최근 변경 이력
|
|
| 날짜 | 변경 내용 | 담당 에이전트 |
|
|
|------|----------|--------------|
|
|
| {YYYY-MM-DD} | 초기 맵 생성 | analyst |
|
|
```
|
|
|
|
---
|
|
|
|
## 업데이트 규칙
|
|
|
|
다음 상황에서 PROJECT_MAP.md를 업데이트한다:
|
|
|
|
1. **새 폴더 생성** → 해당 폴더 행 추가
|
|
2. **새 컨벤션 발견** → 핵심 컨벤션 섹션에 추가
|
|
3. **새 환경 변수 추가** → 환경 변수 테이블 업데이트
|
|
4. **구조 변경** → 해당 섹션 수정
|
|
|
|
업데이트 시 `마지막 업데이트` 날짜와 최근 변경 이력을 항상 갱신한다.
|
|
|
|
---
|
|
|
|
## 빠른 파악 프로토콜
|
|
|
|
에이전트가 새 작업을 시작할 때:
|
|
|
|
```
|
|
1. PROJECT_MAP.md 읽기 (없으면 생성)
|
|
2. 작업과 관련된 폴더 파악
|
|
3. 해당 폴더만 탐색 (전체 탐색 금지)
|
|
4. 작업 완료 후 새 파일/폴더가 생겼으면 PROJECT_MAP.md 갱신
|
|
```
|
|
|
|
이 순서를 지키면 탐색 토큰을 70% 이상 절약할 수 있다.
|