Files
ProjectSS/CLAUDE.md
kyoung5seo 8833e52fab CLAUDE.md 정리 (중복, 충돌, 개선)
파일 역할 분담 개선
ProjectSS/
├── CLAUDE.md      ← 규칙 (거의 안 변함) · Claude Code용
├── AGENTS.md      ← 프로젝트 정체성 (거의 안 변함) · Hermes용
├── ROADMAP.md     ← Phase별 계획·완료 기준 (기존 그대로)
└── docs/
    └── DEVLOG.md  ← 신규: 날짜별 작업 이력 + 미해결 이슈
2026-08-06 22:19:13 +09:00

110 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Project SS — CLAUDE.md
> **위치:** repo root (`ProjectSS/CLAUDE.md`) — Claude Code는 root에서 실행한다.
> **이 파일의 역할:** 규칙만 담는다. 작업 이력·진행 상황은 `docs/DEVLOG.md`, Phase 계획은 `ROADMAP.md`.
> **상위 규칙:** 전역 정체성·개발 철학은 `~/.hermes/SOUL.md`, 프로젝트 정체성은 `AGENTS.md`에 있다.
> 이 파일은 그 위에 얹히는 **코드 레벨 규칙**만 다룬다.
---
## 작업 시작 전 체크
**⚠️ 병렬 브랜치 확인 (필수)**
이 폴더가 유일한 작업 사본이 아니라면, 작업 시작 전 반드시:
```bash
git fetch
git log origin/main..HEAD # 내가 안 올린 커밋
git log HEAD..origin/main # 내가 안 받은 커밋
```
과거에 다른 세션이 origin에 푸시한 커밋을 로컬이 받지 못한 채 Phase 2~4를 독립적으로
재구현해 대형 충돌이 난 적이 있다. 경위는 `ROADMAP.md` 상단 박스 참고.
---
## 코드 컨벤션
- 전체 구조·아키텍처 원칙(상태 배치, `engine/` 경계, world 스냅샷 패턴) → @docs/architecture_design.md
- 실제 앱은 `client/` 안에 있음. npm 명령은 `cd client` 후 실행.
- 로컬에 Node.js LTS 설치되어 `npm run dev`로 실기 검증 가능 (Playwright 플레이 확인까지 완료).
- 플레이테스트는 리포 루트의 `playtest.bat` 더블클릭 (dev 서버 + 브라우저 자동 오픈).
파일명은 ASCII만 사용 — 한글/`chcp`를 넣으면 cmd.exe가 배치 파싱을 깨뜨린다(과거에 겪음).
- 스타일: 컴포넌트별 개별 `.css` (글로벌 클래스, CSS Modules 아님)
- 상태관리: `useState` / `useReducer`만 사용. 외부 상태관리 라이브러리 도입 금지.
- 영구 저장: `localStorage` (도감 엔딩 저장 용도)
- 카드 데이터는 `client/src/data/cards.csv`를 papaparse로 런타임 파싱함
- `GameScreen.jsx`에 상태가 집중되어 있음 — 수정 시 주의, 리팩토링 필요 가능성
- 오염 카드 주입은 반드시 `client/src/engine/pollution.js`의 `previewPollution()`을 경유한다.
예고·주입·사후 알림이 이 단일 기준을 공유하므로, 우회해서 오염 카드를 만들지 말 것.
튜닝 수치는 `pollution.js` 상단 상수 블록에 모여 있다.
---
## ⛔ 보호 파일 (직접 수정/실행 금지 — 변경 제안은 가능)
- `client/update_csv.js` — cards.csv 전처리 스크립트
- `client/update_csv_tags.js` — 내러티브 태그 매핑 스크립트
**이유:** 두 스크립트의 출력 포맷이 바뀌면 이를 읽는 게임 코드(papaparse 파싱)가 깨지거나
데이터를 잘못 읽을 수 있다.
**규칙:** 직접 고쳐서 실행하지 말 것. 스키마 변경이 실제로 필요하면(예: 새 컬럼/태그 카테고리 추가)
어떤 변경이 왜 필요한지 설명하고 변경안(diff)을 먼저 보여준 뒤 승인을 받고 적용할 것.
## 데이터 파일 다루는 법
`cards.csv` / `narrative_tags.json` 등 **데이터 내용**(카드 텍스트, 수치, 태그)은 자유롭게 다뤄도 된다.
단, 이 게임은 카드 밸런스와 스토리 개연성이 핵심이므로:
- 자동 생성으로 일괄 채우지 말 것
- 몇 개씩 초안을 보여주고 피드백을 받아 반영하는 방식으로 진행
- 통짜로 대량 생성해서 덮어쓰지 말 것
> ℹ️ SOUL.md의 "완성도보다 검증 속도 우선"은 **코드**에 적용된다.
> 데이터(카드 텍스트·밸런스)는 예외로, 디자이너가 직접 검토할 수 있는 속도로 제안한다.
---
## 기획 문서 참조 (게임 규칙의 원본)
코드 작성 시 항상 원본 문서를 기준으로 한다. **게임 규칙 수치를 이 파일에 복사하지 말 것.**
- 카드 타입별 스와이프 결과, 파라미터, 의회 액션 → @docs/Project_SS_서사형_덱빌딩_게임_시스템_기획서.md
- 파벌 12종 우호도 조건, 엔딩 매트릭스, 세계관 → @docs/Project_SS_스토리_바이블_v3_0.md
- 화면 전환/분기 로직 → @docs/ProjectSS_유저플로우.md
- UI 레이아웃 → @docs/ProjectSS_텍스트_와이어프레임.md
- 컬러/타이포/햅틱 수치 → @docs/ProjectSS_디자인_토큰.md
- 요구사항 정의 → @docs/ProjectSS_PRD.md
---
## Phase 진행 순서
```
Phase 0 [x] 환경 세팅 & 아키텍처
Phase 1 [x] 코어 루프 프로토타입
Phase 2 [x] 자원 경제 & 덱빌딩
Phase 3 [x] 정치 시스템 & 스토리 페이징
Phase 4 [x] 멀티 엔딩 & 연대기 ← 그레이박스 테스트 시작 가능
Phase 5 [ ] 비주얼 폴리싱 & UX ← 그레이박스 테스트 완료 후에만 착수
```
`[x]` 완료 · `[~]` 부분 완료 · `[ ]` 미착수
**Phase 5 착수 조건:** 외부 플레이어 그레이박스 테스트를 마치고 그 피드백을 반영한 뒤에만 시작한다.
Phase별 상세 계획과 완료 기준은 `ROADMAP.md`, 각 Phase에서 남은 주의사항과 작업 이력은
`docs/DEVLOG.md` 참고.
---
## 작업 지시 방법
```
/goal Phase 5 진행해줘 # 그레이박스 테스트 완료 후에만
```
**작업 완료 후 반드시:**
1. 위 **Phase 진행 순서** 블록의 체크박스를 갱신한다.
2. `docs/DEVLOG.md` 맨 위에 무엇을 왜 바꿨는지 기록한다.
(미해결 이슈나 디자이너 확인이 필요한 사항이 생겼으면 DEVLOG 상단 "열린 이슈"에 추가)