docs: cli 용 문서 업로드 (runbook: 개발, runbook_planner: 기획)

This commit is contained in:
2026-02-14 02:05:07 +09:00
parent 99c996b20e
commit 8e9ba0431b
41 changed files with 2818 additions and 1 deletions

77
.cli/docs/architecture.md Normal file
View File

@@ -0,0 +1,77 @@
# Architecture
## 목표
- 사람이 유지보수하기 쉬운 구조
- LLM/CLI가 토큰을 낭비하지 않고 정확히 수정할 수 있는 구조
- 경계(레이어)를 강제해 회귀(regression)를 예방
## 레이어 규칙 (FSD)
### app/\*
- 페이지/레이아웃은 **조합자(composer)** 역할만 한다
- `app/**`**widgets public API만** import 한다
- `app/**``features/entities/shared`의 UI를 직접 import 하지 않는다
### widgets/\*
- 페이지 단위 블록(화면 조립 단위)
- `index.ts`를 통해 public API를 노출한다
- 내부에서 `features/entities/shared`를 조합한다
### features/\*
- 제품 기능 단위(UI + model + lib)
- `app/*` 를 import 하면 안 된다
- `entities/shared` 는 import 가능
### entities/\*
- 도메인 모델(session/log 등)
- 가능한 한 타입/스키마를 스스로 소유한다
- `shared` 만 import 가능
### shared/\*
- 재사용 가능한 최소 단위(ui/lib/config/types)
- `entities/features/widgets/app` 를 import 하면 안 된다
## Public API 규칙
- 모든 widget은 `index.ts`를 가진다
- 페이지는 아래 형태로 import 한다:
- `import { X } from "@/widgets/x";`
- `app/*`에서 `widgets/x/ui/*` 같은 깊은 경로 import는 피한다
## 공용 위치 규칙
- `shared/ui`: 공용 UI 프리미티브(button/card/dialog/input…)
- `shared/lib`: 순수 유틸(math/motion 등)
- `shared/config`: 튜닝 상수(예: starfield params)
## LLM/CLI 작업 규칙
- 모든 작업은 `current.md`에 **대상 파일 경로**를 반드시 명시한다
- 튜닝 작업은 가능하면 **config만 수정**한다
- 레포 검색이 필요하면 `grep/rg`는 1회만 사용하고, 결과 요약은 5줄 이내로 제한한다
## Starfield 소유권
- Flight 배경 로직: `features/flight-starfield/**`
- Lobby 별자리/글린트: `features/lobby-starfield/**`
- 페이지 마운트: `widgets/flight-background`, `widgets/lobby-background`
- 튜닝 파라미터: `shared/config/starfield.ts`
## Boarding 소유권
- 탑승 시작 로직: `features/boarding/model/startVoyage.ts`
- 탑승 미션 폼 UI: `features/boarding/ui/BoardingMissionForm.tsx`
- 로비 출항 진입: `widgets/lobby-routes` (modal open/close + flight 진입)
- `/boarding` 라우트: 딥링크 호환을 위해 동일 form/model 재사용
- 메모/노트 입력은 탑승 생성 경로에서 제거됨
## 변경 정책
- 구조 리팩토링은 명시적으로 요청되지 않는 한 동작을 바꾸면 안 된다
- 포맷만 바꾸는 변경(diff) 지양