From 49069a16cfb00ea10f0864d899e53deee0c9c487 Mon Sep 17 00:00:00 2001 From: gahusb Date: Mon, 15 Jun 2026 23:59:28 +0900 Subject: [PATCH] =?UTF-8?q?docs(harness):=20RULES/CLAUDE/settings=EB=A5=BC?= =?UTF-8?q?=20=ED=98=84=EC=9E=AC=20=EC=A0=80=EC=9E=A5=EC=86=8C=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=EC=99=80=20=EB=8F=99=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P14/P15/노드맵 작업으로 생긴 산출물·생성기가 하네스 문서에 미반영이던 드리프트를 정정 (개인 메모리에만 있던 내용을 공용 하네스로 승격). - RULES §1 표: `map01~map11` → `map01~map05` + `lobby.map`(P14 5막화), 크기 정정(ui ~7.1MB·controller ~270KB), 누락 산출물 추가 (CombatMonster/PlayerLock/MapCamera/LobbyNpc/LobbyMobility codeblock, Global/SectorConfig.config) - RULES §1: deny glob 범위 + 메이커 저작 codeblock/UI 금지 + 보조 생성기 10종 인벤토리(생성기→산출물 매핑) 명시 - .claude/settings.json: deny를 glob화(`ui/*.ui`·`RootDesk/MyDesk/*.codeblock`) 해 전 산출물(PopupGroup/ToastGroup.ui, codeblock 12종) 커버 + SectorConfig.config - CLAUDE.md: 크기 정정(8.3MB→~7.1MB) Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/settings.json | 16 +++++++++------- CLAUDE.md | 2 +- RULES.md | 26 +++++++++++++++++++++----- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/.claude/settings.json b/.claude/settings.json index fa401f5..0781fb7 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -2,17 +2,19 @@ "$schema": "https://json.schemastore.org/claude-code-settings.json", "permissions": { "deny": [ - "Read(./ui/DefaultGroup.ui)", + "Read(./ui/*.ui)", "Read(./map/*.map)", - "Read(./RootDesk/MyDesk/SlayDeckController.codeblock)", - "Edit(./ui/DefaultGroup.ui)", + "Read(./RootDesk/MyDesk/*.codeblock)", + "Edit(./ui/*.ui)", "Edit(./map/*.map)", - "Edit(./RootDesk/MyDesk/SlayDeckController.codeblock)", + "Edit(./RootDesk/MyDesk/*.codeblock)", "Edit(./Global/common.gamelogic)", - "Write(./ui/DefaultGroup.ui)", + "Edit(./Global/SectorConfig.config)", + "Write(./ui/*.ui)", "Write(./map/*.map)", - "Write(./RootDesk/MyDesk/SlayDeckController.codeblock)", - "Write(./Global/common.gamelogic)" + "Write(./RootDesk/MyDesk/*.codeblock)", + "Write(./Global/common.gamelogic)", + "Write(./Global/SectorConfig.config)" ] } } diff --git a/CLAUDE.md b/CLAUDE.md index 007ef3d..357a1ec 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # SlayMaple — CLAUDE.md -MapleStory Worlds 기반 Slay the Spire 풍 덱빌더. 게임 전체가 데이터(`data/*.json`) + 생성기(`tools/`) 단일 소스이고, `ui/DefaultGroup.ui`(8.3MB)·codeblock·map 파일은 **생성 산출물**이다. +MapleStory Worlds 기반 Slay the Spire 풍 덱빌더. 게임 전체가 데이터(`data/*.json`) + 생성기(`tools/`) 단일 소스이고, `ui/DefaultGroup.ui`(~7.1MB)·codeblock·map 파일은 **생성 산출물**이다. @RULES.md diff --git a/RULES.md b/RULES.md index 52e7a33..f789ffd 100644 --- a/RULES.md +++ b/RULES.md @@ -11,13 +11,29 @@ Claude Code는 `CLAUDE.md`가 이 파일을 임포트하므로 자동 적용된 | 산출물 (절대 Read/Edit 금지) | 크기 | 단일 소스 (여기만 편집) | 재생성 명령 | |---|---|---|---| -| `ui/DefaultGroup.ui` | **8.3MB** | `data/*.json` + `tools/deck/gen-slaydeck.mjs` | `node tools/deck/gen-slaydeck.mjs` | -| `RootDesk/MyDesk/SlayDeckController.codeblock` | 132KB | 〃 | 〃 | -| `Global/common.gamelogic` | 1KB | 〃 | 〃 | -| `map/map01.map`~`map11.map` | 각 ~200KB | `tools/map/`·`tools/monster/`·`tools/camera/` | 해당 생성기 | +| `ui/DefaultGroup.ui` | **~7.1MB** | `data/*.json` + `tools/deck/gen-slaydeck.mjs` | `node tools/deck/gen-slaydeck.mjs` | +| `RootDesk/MyDesk/SlayDeckController.codeblock` | ~270KB | 〃 | 〃 | +| `Global/common.gamelogic` | ~1KB | 〃 | 〃 | +| `map/map01.map`~`map05.map`, `map/lobby.map` | 각 ~210KB | `tools/map/`·`tools/monster/`·`tools/camera/`·`tools/player/` (↓ 보조 생성기) | 해당 생성기 | +| `RootDesk/MyDesk/CombatMonster.codeblock` | ~2KB | `tools/monster/gen-combat-monster.mjs` | `node tools/monster/gen-combat-monster.mjs` | +| `RootDesk/MyDesk/PlayerLock.codeblock` | ~2KB | `tools/player/gen-player-lock.mjs` | `node tools/player/gen-player-lock.mjs` | +| `RootDesk/MyDesk/MapCamera.codeblock` | ~2KB | `tools/camera/gen-camera.mjs` (값: `data/camera.json`) | `node tools/camera/gen-camera.mjs` | +| `RootDesk/MyDesk/LobbyNpc.codeblock`·`LobbyMobility.codeblock` | 각 ~2-3KB | `tools/player/gen-lobby-npc.mjs` | `node tools/player/gen-lobby-npc.mjs` | +| `Global/SectorConfig.config` | ~1KB | `tools/map/gen-maps.mjs`·`gen-lobby-map.mjs` (패치) | 해당 생성기 | -- `.claude/settings.json`의 permissions.deny가 위 파일의 Read/Edit/Write 도구 사용을 차단한다 (이 저장소를 열면 자동 적용). +- `.claude/settings.json`의 permissions.deny가 위 파일의 Read/Edit/Write 도구 사용을 차단한다 (이 저장소를 열면 자동 적용). deny는 **glob** — `ui/*.ui`·`map/*.map`·`RootDesk/MyDesk/*.codeblock`·`Global/common.gamelogic`·`Global/SectorConfig.config`. 따라서 **메이커 저작 codeblock/UI**(`Monster`·`MonsterAttack`·`PlayerAttack`·`PlayerHit`·`UIPopup`·`UIToast`.codeblock, `ui/PopupGroup.ui`·`ui/ToastGroup.ui`)**도** Read/Edit 금지 — 이들은 생성기가 없으니 **메이커에서** 편집한다(텍스트 도구로 X). codeblock은 한 줄짜리 JSON이라 Read 시 토큰 폭발. - 게임 로직·UI 수정 = **`tools/deck/gen-slaydeck.mjs`(생성기 JS) 또는 `data/*.json`(데이터)을 수정** → 재생성 → 산출물은 통째로 커밋. +- **보조 생성기**(각자 자기 산출물의 단일 소스 — 위 표의 메인 `gen-slaydeck.mjs` 외): + - `tools/camera/gen-camera.mjs` → `MapCamera.codeblock` + map01~05 카메라 부착 (값 `data/camera.json`) + - `tools/map/gen-maps.mjs` → `map02~05` + `Global/SectorConfig.config` (map01 템플릿 클론) + - `tools/map/gen-lobby-map.mjs` → `map/lobby.map` + `SectorConfig.config` + - `tools/map/gen-map-encounters.mjs` → map01~05 노드 타입별 몬스터 그룹 재구성 + - `tools/monster/gen-combat-monster.mjs` → `CombatMonster.codeblock` + map01~05 부착 + - `tools/monster/freeze-turn-monsters.mjs` → 몬스터 `.model`·맵 AI 컴포넌트 제거 + - `tools/player/gen-player-lock.mjs` → `PlayerLock.codeblock` + map01~05 부착 + - `tools/player/gen-lobby-npc.mjs` → `LobbyNpc.codeblock`·`LobbyMobility.codeblock` + - `tools/player/freeze-turn-player.mjs` → `Global/DefaultPlayer.model` 이동 0 고정 + - `tools/deck/gen-cardhand.mjs` → `DefaultGroup.ui` 카드핸드 보조 패처 ## 2. 산출물 검증은 카운트로, 내용 출력 금지