claudeos-core 1.6.2 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ko.md CHANGED
@@ -1,690 +1,692 @@
1
- # ClaudeOS-Core
2
-
3
- **소스코드를 먼저 읽고, 스택과 패턴을 코드로 확정한 뒤, 프로젝트에 정확히 맞는 Claude Code 규칙을 생성하는 유일한 도구.**
4
-
5
- ```bash
6
- npx claudeos-core init
7
- ```
8
-
9
- ClaudeOS-Core는 코드베이스를 읽고, 발견한 모든 패턴을 추출하여, _여러분의_ 프로젝트에 최적화된 Standards, Rules, Skills, Guides를 완전히 생성합니다. 이후 Claude Code에 "주문 CRUD 만들어줘"라고 말하면, 기존 패턴과 정확히 일치하는 코드를 생성합니다.
10
-
11
- [🇺🇸 English](./README.md) · [🇨🇳 中文](./README.zh-CN.md) · [🇯🇵 日本語](./README.ja.md) · [🇪🇸 Español](./README.es.md) · [🇻🇳 Tiếng Việt](./README.vi.md) · [🇮🇳 हिन्दी](./README.hi.md) · [🇷🇺 Русский](./README.ru.md) · [🇫🇷 Français](./README.fr.md) · [🇩🇪 Deutsch](./README.de.md)
12
-
13
-
14
- ---
15
-
16
- ## 왜 ClaudeOS-Core인가?
17
-
18
- 다른 모든 Claude Code 도구는 이렇게 작동합니다:
19
-
20
- > **사람이 프로젝트를 설명 → LLM이 문서 생성**
21
-
22
- ClaudeOS-Core는 이렇게 작동합니다:
23
-
24
- > **코드가 소스를 분석 → 코드가 맞춤 프롬프트 조합 → LLM이 문서 생성 → 코드가 결과 검증**
25
-
26
- 이건 작은 차이가 아닙니다.
27
-
28
- ### 핵심 문제: LLM은 추측한다. 코드는 확정한다.
29
-
30
- Claude에게 "이 프로젝트 분석해줘"라고 하면, 스택, ORM, 도메인 구조를 **추측**합니다.
31
- `build.gradle`에서 `spring-boot`를 보고도 MyBatis가 아닌 JPA로 오인할 수 있습니다.
32
- `user/` 디렉토리를 보고도 layer-first(Pattern A)인지 domain-first(Pattern B)인지 착각할 수 있습니다.
33
-
34
- **ClaudeOS-Core는 추측하지 않습니다.** Claude가 프로젝트를 보기 전에, Node.js 코드가 이미:
35
-
36
- - `build.gradle` / `package.json` / `pyproject.toml`을 파싱하여 스택, ORM, DB, 패키지 매니저를 **확정**
37
- - 디렉토리 구조를 스캔하여 도메인 목록과 파일 수를 **확정**
38
- - 프로젝트 구조를 Java 5패턴, Kotlin CQRS/BFF, Next.js App Router/FSD 중 하나로 **분류**
39
- - Claude의 컨텍스트 윈도우에 맞게 도메인을 최적 그룹으로 **분할**
40
- - 확정된 사실이 주입된 스택별 맞춤 프롬프트를 **조합**
41
-
42
- Claude가 프롬프트를 받는 시점에는 추측할 것이 없습니다. 스택 확정. 도메인 확정. 구조 패턴 확정. Claude는 이 **확정된 사실**에 맞는 문서를 생성하기만 하면 됩니다.
43
-
44
- ### 결과
45
-
46
- 다른 도구는 "일반적으로 좋은" 문서를 생성합니다.
47
- ClaudeOS-Core는 프로젝트가 `ApiResponse.ok()`를 쓴다는 것, MyBatis XML 매퍼가 `src/main/resources/mybatis/mappers/`에 있다는 것, 패키지 구조가 `com.company.module.{domain}.controller`라는 것을 아는 문서를 생성합니다 — 실제 코드를 읽었으니까요.
48
-
49
- ### Before & After
50
-
51
- **ClaudeOS-Core 없이** — Claude Code에게 주문 CRUD 생성을 요청하면:
52
- ```
53
- ❌ JPA 스타일 repository 사용 (프로젝트는 MyBatis 사용)
54
- ❌ ResponseEntity.success() 생성 (프로젝트 래퍼는 ApiResponse.ok())
55
- ❌ order/controller/에 파일 배치 (프로젝트는 controller/order/ 구조)
56
- ❌ 영어 주석 생성 (팀은 한국어 주석 사용)
57
- → 생성된 파일마다 20분씩 수정
58
- ```
59
-
60
- **ClaudeOS-Core 적용 후** — `.claude/rules/`에 확정된 패턴이 이미 존재:
61
- ```
62
- ✅ MyBatis 매퍼 + XML 생성 (build.gradle에서 감지)
63
- ✅ ApiResponse.ok() 사용 (실제 소스에서 추출)
64
- ✅ controller/order/에 파일 배치 (구조 스캔으로 Pattern A 확정)
65
- ✅ 한국어 주석 (--lang ko 적용)
66
- → 생성 코드가 프로젝트 컨벤션과 즉시 일치
67
- ```
68
-
69
- 이 차이는 누적됩니다. 하루 10개 작업 × 20분 절약 = **하루 3시간 이상**.
70
-
71
- ---
72
-
73
- ## 지원 스택
74
-
75
- | 스택 | 감지 기준 | 분석 깊이 |
76
- |---|---|---|
77
- | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5가지 패키지 패턴 | 10개 대분류, 59개 소분류 |
78
- | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin 플러그인, `settings.gradle.kts`, CQRS/BFF 자동감지 | 12개 대분류, 95개 소분류 |
79
- | **Node.js / Express** | `package.json` | 9개 대분류, 57개 소분류 |
80
- | **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10개 대분류, 68개 소분류 |
81
- | **Next.js / React** | `package.json`, `next.config.*`, FSD 지원 | 9개 대분류, 55개 소분류 |
82
- | **Vue / Nuxt** | `package.json`, `nuxt.config.*`, Composition API | 9개 대분류, 58개 소분류 |
83
- | **Python / Django** | `requirements.txt`, `pyproject.toml` | 10개 대분류, 55개 소분류 |
84
- | **Python / FastAPI** | `requirements.txt`, `pyproject.toml` | 10개 대분류, 58개 소분류 |
85
- | **Node.js / Fastify** | `package.json` | 10개 대분류, 62개 소분류 |
86
- | **Angular** | `package.json`, `angular.json` | 12개 대분류, 78개 소분류 |
87
-
88
- 자동 감지 항목: 언어 & 버전, 프레임워크 & 버전, ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy 등), 데이터베이스 (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), 패키지 매니저 (Gradle, Maven, npm, yarn, pnpm, pip, poetry), 아키텍처 (CQRS, BFF — 모듈명에서 감지), 멀티모듈 구조 (settings.gradle에서 감지), 모노레포 (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
89
-
90
- **직접 지정할 필요 없습니다. 전부 자동으로 감지합니다.**
91
-
92
- ### Java 도메인 감지 (5가지 패턴, 폴백 포함)
93
-
94
- | 우선순위 | 패턴 | 구조 | 예시 |
95
- |---|---|---|---|
96
- | A | 레이어 우선 | `controller/{domain}/` | `controller/user/UserController.java` |
97
- | B | 도메인 우선 | `{domain}/controller/` | `user/controller/UserController.java` |
98
- | D | 모듈 접두사 | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
99
- | E | DDD/헥사고날 | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
100
- | C | 플랫 | `controller/*.java` | `controller/UserController.java` → 클래스명에서 `user` 추출 |
101
-
102
- Controller 없는 서비스 전용 도메인도 `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/` 디렉토리를 통해 감지됩니다. 스킵: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2` 등.
103
-
104
-
105
- ### Kotlin 멀티모듈 도메인 감지
106
-
107
- Gradle 멀티모듈 구조의 Kotlin 프로젝트(예: CQRS 모노레포)용:
108
-
109
- | 단계 | 동작 | 예시 |
110
- |---|---|---|
111
- | 1 | `settings.gradle.kts`에서 `include()` 스캔 | 14개 모듈 발견 |
112
- | 2 | 모듈명에서 타입 감지 | `reservation-command-server` type: `command` |
113
- | 3 | 모듈명에서 도메인 추출 | `reservation-command-server` → domain: `reservation` |
114
- | 4 | 같은 도메인을 모듈 간 그룹핑 | `reservation-command-server` + `common-query-server` → 1개 도메인 |
115
- | 5 | 아키텍처 감지 | `command` + `query` 모듈 있음 CQRS |
116
-
117
- 지원 모듈 타입: `command`, `query`, `bff`, `integration`, `standalone`, `library`. 공유 라이브러리(`shared-lib`, `integration-lib`)는 특수 도메인으로 감지됩니다.
118
-
119
- ### 프론트엔드 도메인 감지
120
-
121
- - **App Router**: `app/{domain}/page.tsx` (Next.js)
122
- - **Pages Router**: `pages/{domain}/index.tsx`
123
- - **FSD (Feature-Sliced Design)**: `features/*/`, `widgets/*/`, `entities/*/`
124
- - **RSC/Client 분리**: `client.tsx` 패턴 감지, Server/Client 컴포넌트 분리 추적
125
- - **설정 파일 폴백**: `package.json`에 없어도 `next.config.*`, `vite.config.*` 등에서 감지 (모노레포 지원)
126
- - **깊은 디렉토리 폴백**: React/CRA/Vite/Vue/RN 프로젝트에서 `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/`를 깊이 무관하게 스캔
127
-
128
- ---
129
-
130
- ## 빠른 시작
131
-
132
- ### 사전 요구사항
133
-
134
- - **Node.js** v18+
135
- - **Claude Code CLI** (설치 & 인증 완료)
136
-
137
- ### 설치
138
-
139
- ```bash
140
- cd /your/project/root
141
-
142
- # 방법 A: npx (권장 — 설치 불필요)
143
- npx claudeos-core init
144
-
145
- # 방법 B: 글로벌 설치
146
- npm install -g claudeos-core
147
- claudeos-core init
148
-
149
- # 방법 C: 프로젝트 devDependency
150
- npm install --save-dev claudeos-core
151
- npx claudeos-core init
152
-
153
- # 방법 D: git clone (개발/기여용)
154
- git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
155
-
156
- # 크로스 플랫폼 (PowerShell, CMD, Bash, Zsh — 모든 터미널)
157
- node claudeos-core-tools/bin/cli.js init
158
-
159
- # Linux/macOS 전용 (Bash만)
160
- bash claudeos-core-tools/bootstrap.sh
161
- ```
162
-
163
- ### 출력 언어 (10개 언어 지원)
164
-
165
- `--lang` 없이 `init`을 실행하면 화살표 키 또는 숫자 키로 언어를 선택하는 인터랙티브 화면이 나타납니다:
166
-
167
- ```
168
- ╔══════════════════════════════════════════════════╗
169
- ║ Select generated document language (required) ║
170
- ╚══════════════════════════════════════════════════╝
171
-
172
- 생성되는 파일(CLAUDE.md, Standards, Rules,
173
- Skills, Guides)이 한국어로 작성됩니다.
174
-
175
- 1. en — English
176
- ❯ 2. ko — 한국어 (Korean)
177
- 3. zh-CN 简体中文 (Chinese Simplified)
178
- ...
179
-
180
- ↑↓ Move 1-0 Jump Enter Select ESC Cancel
181
- ```
182
-
183
- 이동 시 설명이 해당 언어로 바뀝니다. 선택 화면을 건너뛰려면 `--lang`을 직접 지정하세요:
184
-
185
- ```bash
186
- npx claudeos-core init --lang ko # 한국어
187
- npx claudeos-core init --lang en # English
188
- npx claudeos-core init --lang ja # 日本語
189
- ```
190
-
191
- > **참고:** 이 설정은 생성되는 문서 파일의 언어만 변경합니다. 코드 분석(Pass 1–2)은 항상 영어로 실행되며, 생성 결과(Pass 3)만 선택한 언어로 작성됩니다. 코드 예시는 원래 프로그래밍 언어 구문 그대로 유지됩니다.
192
-
193
- 이게 전부입니다. 5–18분 모든 문서가 생성되어 바로 사용 가능합니다. CLI가 Pass 소요시간과 소요시간을 완료 배너에 표시합니다.
194
-
195
- ### 수동 단계별 설치
196
-
197
- 단계를 직접 제어하거나, 자동 파이프라인이 특정 단계에서 실패한 경우 수동으로 실행할 수 있습니다. ClaudeOS-Core의 내부 동작을 이해하는 데에도 유용합니다.
198
-
199
- #### Step 1: 클론 의존성 설치
200
-
201
- ```bash
202
- cd /your/project/root
203
-
204
- git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
205
- cd claudeos-core-tools && npm install && cd ..
206
- ```
207
-
208
- #### Step 2: 디렉토리 구조 생성
209
-
210
- ```bash
211
- # Rules
212
- mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync}
213
-
214
- # Standards
215
- mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
216
-
217
- # Skills
218
- mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
219
-
220
- # Guide, Plan, Database, MCP, Generated
221
- mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
222
- mkdir -p claudeos-core/{plan,database,mcp-guide,generated}
223
- ```
224
-
225
- #### Step 3: plan-installer 실행 (프로젝트 분석)
226
-
227
- 프로젝트를 스캔하여 스택을 감지하고, 도메인을 찾고, 그룹으로 분할하고, 프롬프트를 생성합니다.
228
-
229
- ```bash
230
- node claudeos-core-tools/plan-installer/index.js
231
- ```
232
-
233
- **출력 (`claudeos-core/generated/`):**
234
- - `project-analysis.json` — 감지된 스택, 도메인, 프론트엔드 정보
235
- - `domain-groups.json` — Pass 1용 도메인 그룹
236
- - `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` 분석 프롬프트
237
- - `pass2-prompt.md` — 통합 프롬프트
238
- - `pass3-prompt.md` — 생성 프롬프트
239
-
240
- 진행하기 전에 파일들을 검토하여 감지 정확도를 확인할 수 있습니다.
241
-
242
- #### Step 4: Pass 1 도메인 그룹별 심층 코드 분석
243
-
244
- 도메인 그룹에 대해 Pass 1 실행합니다. `domain-groups.json`에서 그룹 수를 확인하세요.
245
-
246
- ```bash
247
- # Check groups
248
- cat claudeos-core/generated/domain-groups.json | node -e "
249
- const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
250
- g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
251
- "
252
-
253
- # Run Pass 1 for group 1:
254
- cp claudeos-core/generated/pass1-backend-prompt.md /tmp/_pass1.md
255
- DOMAIN_LIST="user, order, product" PASS_NUM=1 \
256
- perl -pi -e 's/\{\{DOMAIN_GROUP\}\}/$ENV{DOMAIN_LIST}/g; s/\{\{PASS_NUM\}\}/$ENV{PASS_NUM}/g' /tmp/_pass1.md
257
- cat /tmp/_pass1.md | claude -p --dangerously-skip-permissions
258
-
259
- # 프론트엔드 그룹은 pass1-frontend-prompt.md를 사용하세요
260
- ```
261
-
262
- **확인:** `ls claudeos-core/generated/pass1-*.json`으로 그룹당 하나의 JSON이 있는지 확인합니다.
263
-
264
- #### Step 5: Pass 2 분석 결과 통합
265
-
266
- ```bash
267
- cat claudeos-core/generated/pass2-prompt.md \
268
- | claude -p --dangerously-skip-permissions
269
- ```
270
-
271
- **확인:** `claudeos-core/generated/pass2-merged.json`이 존재하고 9개 이상의 최상위 키가 있어야 합니다.
272
-
273
- #### Step 6: Pass 3 전체 문서 생성
274
-
275
- ```bash
276
- cat claudeos-core/generated/pass3-prompt.md \
277
- | claude -p --dangerously-skip-permissions
278
- ```
279
-
280
- **확인:** 프로젝트 루트에 `CLAUDE.md`가 존재해야 합니다.
281
-
282
- #### Step 7: 검증 도구 실행
283
-
284
- ```bash
285
- # 메타데이터 생성 (다른 검사 전 필수)
286
- node claudeos-core-tools/manifest-generator/index.js
287
-
288
- # 전체 검사 실행
289
- node claudeos-core-tools/health-checker/index.js
290
-
291
- # 또는 개별 검사 실행:
292
- node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk
293
- node claudeos-core-tools/sync-checker/index.js # Sync status
294
- node claudeos-core-tools/content-validator/index.js # Content quality
295
- node claudeos-core-tools/pass-json-validator/index.js # JSON format
296
- ```
297
-
298
- #### Step 8: 결과 확인
299
-
300
- ```bash
301
- find .claude claudeos-core -type f | grep -v node_modules | grep -v '/generated/' | wc -l
302
- head -30 CLAUDE.md
303
- ls .claude/rules/*/
304
- ```
305
-
306
- > **Tip:** 특정 단계에서 실패하면 해당 단계만 다시 실행할 수 있습니다. Pass 1/2 결과는 캐시됩니다 — `pass1-N.json` 또는 `pass2-merged.json`이 이미 존재하면 자동 파이프라인이 건너뜁니다. `npx claudeos-core init --force`를 사용하면 이전 결과를 삭제하고 새로 시작합니다.
307
-
308
- ### 사용 시작
309
-
310
- ```
311
- # Claude Code에서 자연스럽게 요청하면 됩니다:
312
- "주문 도메인 CRUD 만들어줘"
313
- "사용자 인증 API 추가해줘"
314
- " 코드를 프로젝트 패턴에 맞게 리팩토링해줘"
315
-
316
- # Claude Code가 생성된 Standards, Rules, Skills를 자동으로 참조합니다.
317
- ```
318
-
319
- ---
320
-
321
- ## 작동 원리 — 3-Pass 파이프라인
322
-
323
- ```
324
- npx claudeos-core init
325
-
326
- ├── [1] npm install ← 의존성 설치 (~10초)
327
- ├── [2] 디렉토리 구조 생성 ← 폴더 생성 (~1초)
328
- ├── [3] plan-installer (Node.js) 프로젝트 스캔 (~5초)
329
- ├── 스택 자동 감지 (멀티스택 지원)
330
- ├── 도메인 목록 추출 (backend/frontend 태깅)
331
- │ ├── 도메인 그룹 자동 분할 (타입별)
332
- └── 스택별 프롬프트 선택 (타입별)
333
-
334
- ├── [4] Pass 1 × N (claude -p) 코드 심층 분석 (~2-8분)
335
- ├── ⚙️ 백엔드 그룹 → 백엔드 분석 프롬프트
336
- │ └── 🎨 프론트엔드 그룹 프론트엔드 분석 프롬프트
337
-
338
- ├── [5] Pass 2 × 1 (claude -p) ← 분석 결과 통합 (~1분)
339
- └── 전체 Pass 1 결과 통합 (백엔드 + 프론트엔드)
340
-
341
- ├── [6] Pass 3 × 1 (claude -p) ← 전체 생성 (~3-5분)
342
- └── 결합 프롬프트 (백엔드 + 프론트엔드 대상)
343
-
344
- └── [7] 검증 ← health checker 자동 실행
345
- ```
346
-
347
- ### 왜 3 Pass인가?
348
-
349
- **Pass 1**은 소스코드를 직접 읽는 유일한 Pass입니다. 도메인 그룹별 대표 파일을 선정하고 55–95개 분석 카테고리(스택별)에서 패턴을 추출합니다. 대규모 프로젝트에서는 도메인 그룹당 한 번씩 여러 번 실행됩니다. 멀티스택 프로젝트(예: Java 백엔드 + React 프론트엔드)에서는 백엔드와 프론트엔드 도메인이 각 스택에 맞는 **별도의 분석 프롬프트**를 사용합니다.
350
-
351
- **Pass 2**는 모든 Pass 1 결과를 통합 분석으로 병합합니다: 공통 패턴 (100% 공유), 다수 패턴 (50%+ 공유), 도메인 특화 패턴, 심각도별 안티패턴, 횡단 관심사 (명명, 보안, DB, 테스트, 로깅, 성능). 백엔드와 프론트엔드 결과가 함께 병합됩니다.
352
-
353
- **Pass 3**는 병합된 분석을 기반으로 전체 파일 생성을 수행합니다. 소스코드를 읽지 않고 분석 JSON만 참조합니다. 멀티스택 모드에서는 생성 프롬프트가 백엔드와 프론트엔드 대상을 결합하여 세트의 표준을 번에 생성합니다.
354
-
355
- ---
356
-
357
- ## 생성되는 파일 구조
358
-
359
- ```
360
- your-project/
361
-
362
- ├── CLAUDE.md ← Claude Code 진입점
363
-
364
- ├── .claude/
365
- └── rules/ ← Glob 트리거 규칙
366
- ├── 00.core/
367
- ├── 10.backend/
368
- │ ├── 20.frontend/
369
- │ ├── 30.security-db/
370
- │ ├── 40.infra/
371
- └── 50.sync/ ← 동기화 리마인더 규칙
372
-
373
- ├── claudeos-core/ 메인 출력 디렉토리
374
- ├── generated/ ← 분석 JSON + 동적 프롬프트
375
- │ │ ├── project-analysis.json 스택 정보 (멀티스택 포함)
376
- ├── domain-groups.json type: backend/frontend 태깅된 그룹
377
- │ │ ├── pass1-backend-prompt.md 백엔드 분석 프롬프트
378
- │ │ ├── pass1-frontend-prompt.md 프론트엔드 분석 프롬프트 (감지 시)
379
- │ │ ├── pass2-prompt.md 통합 프롬프트
380
- │ │ └── pass3-prompt.md 생성 프롬프트 (결합)
381
- │ ├── standard/ 코딩 표준 (15-19개 파일)
382
- │ │ ├── 00.core/ 개요, 아키텍처, 명명 규칙
383
- ├── 10.backend-api/ API 패턴 (스택별)
384
- │ │ ├── 20.frontend-ui/ 프론트엔드 패턴 (감지 시)
385
- │ │ ├── 30.security-db/ ← 보안, DB 스키마, 유틸리티
386
- │ │ ├── 40.infra/ 설정, 로깅, CI/CD
387
- │ │ └── 50.verification/ 빌드 검증, 테스트
388
- │ ├── skills/ CRUD 스캐폴딩 스킬
389
- ├── guide/ 온보딩, FAQ, 트러블슈팅 (9개 파일)
390
- │ ├── plan/ 마스터 플랜 (백업/복원)
391
- │ ├── database/ DB 스키마, 마이그레이션 가이드
392
- └── mcp-guide/ MCP 서버 연동 가이드
393
-
394
- └── claudeos-core-tools/ 도구 (수정 불필요)
395
- ```
396
-
397
- 모든 standard 파일은 ✅ 올바른 예시, ❌ 잘못된 예시, 규칙 요약 테이블을 포함합니다 — 제네릭 템플릿이 아닌 실제 코드 패턴에서 추출됩니다.
398
-
399
- ---
400
-
401
- ## 규모별 자동 조절
402
-
403
- | 규모 | 도메인 수 | Pass 1 횟수 | 총 `claude -p` | 예상 시간 |
404
- |---|---|---|---|---|
405
- | 소규모 | 1–4 | 1 | 3 | ~5분 |
406
- | 중규모 | 5–8 | 2 | 4 | ~8분 |
407
- | 대규모 | 916 | 3–4 | 5–6 | ~12분 |
408
- | 초대규모 | 17+ | 5+ | 7+ | ~18분+ |
409
-
410
- 멀티스택 프로젝트(예: Java + React)에서는 백엔드와 프론트엔드 도메인이 합산됩니다. 백엔드 6개 + 프론트엔드 4개 = 총 10개로 "대규모"로 스케일링됩니다.
411
-
412
- ---
413
-
414
- ## 검증 도구
415
-
416
- ClaudeOS-Core에는 생성 후 자동으로 실행되는 5개의 내장 검증 도구가 포함되어 있습니다:
417
-
418
- ```bash
419
- # 한 번에 전체 확인 (권장)
420
- npx claudeos-core health
421
-
422
- # 개별 명령어
423
- npx claudeos-core validate # Plan ↔ 디스크 비교
424
- npx claudeos-core refresh # 디스크 → Plan 동기화
425
- npx claudeos-core restore # Plan 디스크 복원
426
-
427
- # node 직접 실행 (git clone 사용자)
428
- node claudeos-core-tools/health-checker/index.js
429
- node claudeos-core-tools/manifest-generator/index.js
430
- node claudeos-core-tools/plan-validator/index.js --check
431
- node claudeos-core-tools/sync-checker/index.js
432
- ```
433
-
434
- | 도구 | 역할 |
435
- |---|---|
436
- | **manifest-generator** | 메타데이터 JSON 생성 (rule-manifest, sync-map, plan-manifest) |
437
- | **plan-validator** | Master Plan `<file>` 블록과 디스크 비교 — check, refresh, restore 3가지 모드 |
438
- | **sync-checker** | 미등록 파일 (디스크에 있지만 Plan에 없는) 및 고아 항목 탐지 |
439
- | **content-validator** | 파일 품질 검증 파일, ✅/❌ 예시 누락, 필수 섹션 확인 |
440
- | **pass-json-validator** | Pass 1–3 JSON 구조, 필수 키, 섹션 완성도 검증 |
441
-
442
- ---
443
-
444
- ## Claude Code가 문서를 사용하는 방식
445
-
446
- ClaudeOS-Core가 생성한 문서를 Claude Code가 실제로 읽는 방식입니다:
447
-
448
- ### 자동으로 읽는 파일
449
-
450
- | 파일 | 시점 | 보장 |
451
- |---|---|---|
452
- | `CLAUDE.md` | 대화 시작 시 | 항상 |
453
- | `.claude/rules/00.core/*` | 파일 편집 시 (`paths: ["**/*"]`) | 항상 |
454
- | `.claude/rules/10.backend/*` | 파일 편집(`paths: ["**/*"]`) | 항상 |
455
- | `.claude/rules/30.security-db/*` | 파일 편집 시 (`paths: ["**/*"]`) | 항상 |
456
- | `.claude/rules/40.infra/*` | config/infra 파일 편집 시만 (스코핑된 paths) | 조건부 |
457
- | `.claude/rules/50.sync/*` | claudeos-core 파일 편집 시만 (스코핑된 paths) | 조건부 |
458
-
459
- ### rule 참조를 통해 온디맨드로 읽는 파일
460
-
461
- rule 파일 하단의 `## Reference` 섹션이 대응하는 standard를 링크합니다. Claude는 현재 작업과 관련된 standard만 읽습니다:
462
-
463
- - `claudeos-core/standard/**` 코딩 패턴, ✅/❌ 예시, 네이밍 규칙
464
- - `claudeos-core/database/**` — DB 스키마 (쿼리, 매퍼, 마이그레이션용)
465
-
466
- `00.standard-reference.md`는 대응 rule이 없는 standard를 발견하기 위한 디렉토리 역할입니다.
467
-
468
- ### 읽지 않는 파일 (컨텍스트 절약)
469
-
470
- standard-reference 규칙의 `DO NOT Read` 섹션으로 명시적으로 제외됩니다:
471
-
472
- | 폴더 | 제외 이유 |
473
- |---|---|
474
- | `claudeos-core/plan/` | Master Plan 백업 (~340KB). `npx claudeos-core refresh`로 동기화. |
475
- | `claudeos-core/generated/` | 빌드 메타데이터 JSON. 코딩 참조 아님. |
476
- | `claudeos-core/guide/` | 사람을 위한 온보딩 가이드. |
477
- | `claudeos-core/mcp-guide/` | MCP 서버 문서. 코딩 참조 아님. |
478
-
479
- ---
480
-
481
- ## 일상 워크플로우
482
-
483
- ### 설치
484
-
485
- ```
486
- # Claude Code를 평소처럼 사용하면 됩니다 — 표준을 자동으로 참조합니다:
487
- "주문 도메인 CRUD 만들어줘"
488
- "사용자 프로필 수정 API 추가해줘"
489
- " 코드를 프로젝트 패턴에 맞게 리팩토링해줘"
490
- ```
491
-
492
- ### 표준을 직접 편집한 후
493
-
494
- ```bash
495
- # standard나 rules 파일을 수정한 후:
496
- npx claudeos-core refresh
497
-
498
- # 전체 일관성 확인
499
- npx claudeos-core health
500
- ```
501
-
502
- ### 문서가 깨졌을 때
503
-
504
- ```bash
505
- # Master Plan에서 전체 복원
506
- npx claudeos-core restore
507
- ```
508
-
509
- ### CI/CD 연동
510
-
511
- ```yaml
512
- # GitHub Actions 예시
513
- - run: npx claudeos-core validate
514
- # Exit code 1이면 PR 블록
515
- ```
516
-
517
- ---
518
-
519
- ## 무엇이 다른가?
520
-
521
- ### 다른 Claude Code 도구와의 비교
522
-
523
- | | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
524
- |---|---|---|---|---|---|
525
- | **접근 방식** | 코드가 먼저 분석 LLM 생성 | 사전 제작된 설정 프리셋 | LLM이 에이전트 팀 설계 | LLM이 스펙 문서 생성 | LLM이 CLAUDE.md 작성 |
526
- | **소스코드 직접 분석** | ✅ Deterministic 정적 분석 | ❌ | ❌ | ❌ (LLM이 읽음) | ❌ (LLM이 읽음) |
527
- | **스택 감지** | 코드가 확정 (ORM, DB, 빌드 툴, 패키지 매니저) | N/A (스택 무관) | LLM이 추측 | LLM이 추측 | LLM이 추측 |
528
- | **도메인 감지** | 코드가 확정 (Java 5패턴, Kotlin CQRS, Next.js FSD) | N/A | LLM이 추측 | N/A | N/A |
529
- | **같은 프로젝트 같은 결과** | Deterministic 분석 | (정적 파일) | ❌ (LLM 결과 변동) | ❌ (LLM 결과 변동) | ❌ (LLM 결과 변동) |
530
- | **대형 프로젝트 처리** | 도메인 그룹 분할 (4 도메인 / 40 파일) | N/A | 분할 없음 | 분할 없음 | 컨텍스트 윈도우 한계 |
531
- | **출력물** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ 파일) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 스펙 문서 | CLAUDE.md (1 파일) |
532
- | **출력 위치** | `.claude/rules/` (Claude Code 자동 로드) | `.claude/` 여러 위치 | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
533
- | **생성 검증** | 5 자동 검증 도구 | | | | |
534
- | **다국어 출력** | 10 언어 | | | | |
535
- | **멀티 스택** | ✅ 백엔드 + 프론트엔드 동시 | ❌ 스택 무관 | ❌ | ❌ | 부분적 |
536
- | **에이전트 오케스트레이션** | ❌ | 28 에이전트 | 6 패턴 | ❌ | ❌ |
537
-
538
- ### 핵심 차이
539
-
540
- **다른 도구는 Claude에게 "일반적으로 좋은 지침"을 줍니다. ClaudeOS-Core는 Claude에게 "실제 코드에서 추출한 지침"을 줍니다.**
541
-
542
- 그래서 Claude Code가 MyBatis 프로젝트에서 JPA 코드를 생성하는 일이 없어지고,
543
- `success()`를 써야 할 곳에 `ok()`를 쓰는 일이 없어지고,
544
- `controller/user/` 구조인데 `user/controller/`로 만드는 일이 없어집니다.
545
-
546
- ### 경쟁이 아닌 보완
547
-
548
- ClaudeOS-Core는 **프로젝트별 규칙과 표준**에 집중합니다.
549
- 다른 도구들은 **에이전트 오케스트레이션과 워크플로우**에 집중합니다.
550
-
551
- ClaudeOS-Core로 프로젝트 규칙을 생성한 뒤, ECC나 Harness를 그 위에 얹어 에이전트 팀과 워크플로우 자동화를 구성할 수 있습니다. 서로 다른 문제를 해결하는 도구입니다.
552
-
553
- ---
554
- ## FAQ
555
-
556
- **Q: 소스코드를 수정하나요?**
557
- 아니요. `CLAUDE.md`, `.claude/rules/`, `claudeos-core/`만 생성합니다. 기존 코드는 절대 수정하지 않습니다.
558
-
559
- **Q: 비용이 얼마나 드나요?**
560
- `claude -p`를 3–7회 호출합니다. 일반적인 Claude Code 사용량 내에서 처리됩니다.
561
-
562
- **Q: 생성된 파일을 Git에 커밋해야 하나요?**
563
- 네, 권장합니다. 팀원 전체가 동일한 Claude Code 표준을 공유할 수 있습니다. `claudeos-core/generated/`는 `.gitignore`에 추가하는 것을 권장합니다 (분석 JSON은 재생성 가능).
564
-
565
- **Q: 멀티스택 프로젝트(예: Java 백엔드 + React 프론트엔드)는?**
566
- 완전 지원됩니다. ClaudeOS-Core가 두 스택을 자동 감지하고, 도메인을 `backend`/`frontend`로 태깅하여 각각 스택별 분석 프롬프트를 사용합니다. Pass 2에서 통합하고, Pass 3에서 백엔드와 프론트엔드 표준을 한 번에 생성합니다.
567
-
568
- **Q: 재실행하면 어떻게 되나요?**
569
- 이전 Pass 1/2 결과가 존재하면 인터랙티브 프롬프트가 표시됩니다: **Continue** (중단된 곳에서 재개) 또는 **Fresh** (전부 삭제 후 새로 시작). `--force`를 사용하면 프롬프트 없이 항상 새로 시작합니다. Pass 3는 항상 재실행됩니다. 이전 버전은 Master Plans에서 복원할 수 있습니다.
570
-
571
- **Q: NestJS전용 템플릿이 있나요, 아니면 Express 템플릿을 사용하나요?**
572
- NestJS는 NestJS 전용 분석 카테고리가 포함된 `node-nestjs` 전용 템플릿을 사용합니다: `@Module`, `@Injectable`, `@Controller` 데코레이터, Guards, Pipes, Interceptors, DI 컨테이너, CQRS 패턴, `Test.createTestingModule`. Express 프로젝트는 별도의 `node-express` 템플릿을 사용합니다.
573
-
574
- **Q: Vue / Nuxt 프로젝트는?**
575
- Vue/Nuxt는 Composition API, `<script setup>`, defineProps/defineEmits, Pinia 스토어, `useFetch`/`useAsyncData`, Nitro 서버 라우트, `@nuxt/test-utils`를 커버하는 `vue-nuxt` 전용 템플릿을 사용합니다. Next.js/React 프로젝트는 `node-nextjs` 템플릿을 사용합니다.
576
-
577
- **Q: Turborepo / pnpm workspaces / Lerna 모노레포에서도 작동하나요?**
578
- 네. ClaudeOS-Core는 `turbo.json`, `pnpm-workspace.yaml`, `lerna.json`, `package.json#workspaces`를 감지하고 서브 패키지 `package.json`에서 프레임워크/ORM/DB 의존성을 자동으로 스캔합니다. 도메인 스캔은 `apps/*/src/`와 `packages/*/src/` 패턴을 지원합니다. 모노레포 루트에서 실행하세요.
579
-
580
- **Q: Kotlin을 지원하나요?**
581
- 네. ClaudeOS-Core는 `build.gradle.kts` 또는 `build.gradle`의 kotlin 플러그인에서 Kotlin을 자동 감지합니다. Kotlin 전용 `kotlin-spring` 템플릿을 사용하여 data class, sealed class, 코루틴, 확장 함수, MockK 등 Kotlin 고유 패턴을 분석합니다.
582
-
583
- **Q: CQRS / BFF 아키텍처는?**
584
- Kotlin 멀티모듈 프로젝트에서 완전 지원됩니다. `settings.gradle.kts`를 읽어 모듈명에서 타입(command, query, bff, integration)을 감지하고, 같은 도메인의 Command/Query 모듈을 그룹핑합니다. 생성되는 표준에는 command controller vs query controller 별도 규칙, BFF/Feign 패턴, 모듈 간 통신 규칙이 포함됩니다.
585
-
586
- **Q: Gradle 멀티모듈 모노레포는?**
587
- ClaudeOS-Core는 중첩 깊이에 관계없이 모든 서브모듈(`**/src/main/kotlin/**/*.kt`)을 스캔합니다. 모듈 타입은 이름 규칙으로 추론됩니다 (예: `reservation-command-server` → 도메인: `reservation`, 타입: `command`). 공유 라이브러리(`shared-lib`, `integration-lib`)도 감지됩니다.
588
-
589
- ---
590
-
591
- ## 템플릿 구조
592
-
593
- ```
594
- pass-prompts/templates/
595
- ├── common/ # Shared header/footer
596
- ├── java-spring/ # Java / Spring Boot
597
- ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
598
- ├── node-express/ # Node.js / Express
599
- ├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
600
- ├── node-fastify/ # Node.js / Fastify
601
- ├── node-nextjs/ # Next.js / React
602
- ├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
603
- ├── angular/ # Angular
604
- ├── python-django/ # Python / Django (DRF)
605
- └── python-fastapi/ # Python / FastAPI
606
- ```
607
-
608
- `plan-installer`가 스택을 자동 감지한 후 타입별 프롬프트를 조합합니다. NestJS와 Vue/Nuxt는 프레임워크별 분석 카테고리가 적용된 전용 템플릿을 사용합니다. 멀티스택 프로젝트에서는 `pass1-backend-prompt.md`와 `pass1-frontend-prompt.md`가 별도로 생성되고, `pass3-prompt.md`는 두 스택의 생성 대상을 결합합니다.
609
-
610
- ---
611
-
612
- ## 모노레포 지원
613
-
614
- ClaudeOS-Core는 JS/TS 모노레포 구성을 자동으로 감지하고 서브 패키지의 의존성을 스캔합니다.
615
-
616
- **지원하는 모노레포 마커** (자동 감지):
617
- - `turbo.json` (Turborepo)
618
- - `pnpm-workspace.yaml` (pnpm workspaces)
619
- - `lerna.json` (Lerna)
620
- - `package.json#workspaces` (npm/yarn workspaces)
621
-
622
- **모노레포 루트에서 실행하세요** — ClaudeOS-Core는 `apps/*/package.json`과 `packages/*/package.json`을 읽어 서브 패키지의 프레임워크/ORM/DB 의존성을 자동으로 검색합니다:
623
-
624
- ```bash
625
- cd my-monorepo
626
- npx claudeos-core init
627
- ```
628
-
629
- **감지되는 항목:**
630
- - `apps/web/package.json`의 의존성 (예: `next`, `react`) → 프론트엔드 스택
631
- - `apps/api/package.json`의 의존성 (예: `express`, `prisma`) → 백엔드 스택
632
- - `packages/db/package.json`의 의존성 (예: `drizzle-orm`) → ORM/DB
633
- - `pnpm-workspace.yaml`의 커스텀 워크스페이스 경로 (예: `services/*`)
634
-
635
- **도메인 스캔도 모노레포 레이아웃을 지원합니다:**
636
- - 백엔드 도메인: `apps/api/src/modules/*/`, `apps/api/src/*/`
637
- - 프론트엔드 도메인: `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/`
638
- - 공유 패키지 도메인: `packages/*/src/*/`
639
-
640
- ```
641
- my-monorepo/ ← 여기서 실행: npx claudeos-core init
642
- ├── turbo.json ← Turborepo 자동 감지
643
- ├── apps/
644
- ├── web/ ← apps/web/package.json에서 Next.js 감지
645
- │ │ ├── app/dashboard/ ← 프론트엔드 도메인 감지
646
- │ └── package.json { "dependencies": { "next": "^14" } }
647
- └── api/ apps/api/package.json에서 Express 감지
648
- ├── src/modules/users/ 백엔드 도메인 감지
649
- └── package.json { "dependencies": { "express": "^4" } }
650
- ├── packages/
651
- ├── db/ ← packages/db/package.json에서 Drizzle 감지
652
- │ └── ui/
653
- └── package.json { "workspaces": ["apps/*", "packages/*"] }
654
- ```
655
-
656
- > **참고:** Kotlin/Java 모노레포의 경우, 멀티모듈 감지는 `settings.gradle.kts`를 사용합니다 (위의 [Kotlin 멀티모듈 도메인 감지](#kotlin-멀티모듈-도메인-감지) 참조). JS 모노레포 마커가 필요하지 않습니다.
657
-
658
- ## 트러블슈팅
659
-
660
- **"claude: command not found"** — Claude Code CLI가 설치되지 않았거나 PATH에 없습니다. [Claude Code 공식 문서](https://code.claude.com/docs/en/overview)를 참조하세요.
661
-
662
- **"npm install 실패"** — Node.js 버전이 낮을 있습니다. v18+ 필요.
663
-
664
- **"도메인 0개 감지됨"** — 프로젝트 구조가 비표준일 수 있습니다. 스택별 감지 패턴은 위의 [지원 스택](#지원-스택) 섹션을 참조하세요.
665
-
666
- **Kotlin 프로젝트에서 "도메인 0개 감지됨"** — 프로젝트 루트에 `build.gradle.kts` (또는 kotlin 플러그인이 있는 `build.gradle`)가 있고, 소스 파일이 `**/src/main/kotlin/` 아래에 있는지 확인하세요. 멀티모듈 프로젝트는 `settings.gradle.kts`에 `include()` 문이 포함되어 있어야 합니다. 단일 모듈 Kotlin 프로젝트(`settings.gradle` 없음)도 지원됩니다 — `src/main/kotlin/` 하위 패키지/클래스 구조에서 도메인을 추출합니다.
667
-
668
- **"언어가 kotlin 대신 java로 감지됨"** — ClaudeOS-Core는 루트 `build.gradle(.kts)`를 먼저 확인한 서브모듈 빌드 파일을 확인합니다. 루트 빌드 파일이 `kotlin` 없이 `java` 플러그인만 사용하는 경우, 최대 5개 서브모듈 빌드 파일을 폴백으로 검사합니다. 그래도 감지되지 않으면 최소 하나의 `build.gradle.kts`에 `kotlin("jvm")` 또는 `org.jetbrains.kotlin`이 포함되어 있는지 확인하세요.
669
-
670
- **"CQRS가 감지되지 않음"** — 아키텍처 감지는 모듈명에 `command`와 `query` 키워드가 포함되어야 합니다. 다른 이름을 사용하는 경우(예: `write-server`, `read-server`) CQRS가 자동 감지되지 않습니다. plan-installer 실행 생성된 프롬프트를 수동으로 조정할 있습니다.
671
-
672
- ---
673
-
674
- ## 기여
675
-
676
- 기여를 환영합니다! 도움이 가장 필요한 영역:
677
-
678
- - **새 스택 템플릿** Ruby/Rails, Go/Gin, PHP/Laravel, Rust/Axum
679
- - **모노레포 심화 지원** — 서브프로젝트 루트 분리, 워크스페이스 감지
680
- - **테스트 커버리지** — 테스트 스위트 확장 중 (현재 256개 테스트, 전체 스캐너, 스택 감지, 도메인 그룹핑, 플랜 파싱, 프롬프트 생성, CLI 셀렉터, 모노레포 감지, 검증 도구 커버)
681
-
682
- ---
683
-
684
- ## 만든 사람
685
-
686
- **claudeos-core** [GitHub](https://github.com/claudeos-core) · [Email](mailto:claudeoscore@gmail.com)
687
-
688
- ## 라이선스
689
-
690
- ISC
1
+ # ClaudeOS-Core
2
+
3
+ **소스코드를 먼저 읽고, 스택과 패턴을 코드로 확정한 뒤, 프로젝트에 정확히 맞는 Claude Code 규칙을 생성하는 유일한 도구.**
4
+
5
+ ```bash
6
+ npx claudeos-core init
7
+ ```
8
+
9
+ ClaudeOS-Core는 코드베이스를 읽고, 발견한 모든 패턴을 추출하여, _여러분의_ 프로젝트에 최적화된 Standards, Rules, Skills, Guides를 완전히 생성합니다. 이후 Claude Code에 "주문 CRUD 만들어줘"라고 말하면, 기존 패턴과 정확히 일치하는 코드를 생성합니다.
10
+
11
+ [🇺🇸 English](./README.md) · [🇨🇳 中文](./README.zh-CN.md) · [🇯🇵 日本語](./README.ja.md) · [🇪🇸 Español](./README.es.md) · [🇻🇳 Tiếng Việt](./README.vi.md) · [🇮🇳 हिन्दी](./README.hi.md) · [🇷🇺 Русский](./README.ru.md) · [🇫🇷 Français](./README.fr.md) · [🇩🇪 Deutsch](./README.de.md)
12
+
13
+
14
+ ---
15
+
16
+ ## 왜 ClaudeOS-Core인가?
17
+
18
+ 다른 모든 Claude Code 도구는 이렇게 작동합니다:
19
+
20
+ > **사람이 프로젝트를 설명 → LLM이 문서 생성**
21
+
22
+ ClaudeOS-Core는 이렇게 작동합니다:
23
+
24
+ > **코드가 소스를 분석 → 코드가 맞춤 프롬프트 조합 → LLM이 문서 생성 → 코드가 결과 검증**
25
+
26
+ 이건 작은 차이가 아닙니다.
27
+
28
+ ### 핵심 문제: LLM은 추측한다. 코드는 확정한다.
29
+
30
+ Claude에게 "이 프로젝트 분석해줘"라고 하면, 스택, ORM, 도메인 구조를 **추측**합니다.
31
+ `build.gradle`에서 `spring-boot`를 보고도 MyBatis가 아닌 JPA로 오인할 수 있습니다.
32
+ `user/` 디렉토리를 보고도 layer-first(Pattern A)인지 domain-first(Pattern B)인지 착각할 수 있습니다.
33
+
34
+ **ClaudeOS-Core는 추측하지 않습니다.** Claude가 프로젝트를 보기 전에, Node.js 코드가 이미:
35
+
36
+ - `build.gradle` / `package.json` / `pyproject.toml`을 파싱하여 스택, ORM, DB, 패키지 매니저를 **확정**
37
+ - 디렉토리 구조를 스캔하여 도메인 목록과 파일 수를 **확정**
38
+ - 프로젝트 구조를 Java 5패턴, Kotlin CQRS/BFF, Next.js App Router/FSD 중 하나로 **분류**
39
+ - Claude의 컨텍스트 윈도우에 맞게 도메인을 최적 그룹으로 **분할**
40
+ - 확정된 사실이 주입된 스택별 맞춤 프롬프트를 **조합**
41
+
42
+ Claude가 프롬프트를 받는 시점에는 추측할 것이 없습니다. 스택 확정. 도메인 확정. 구조 패턴 확정. Claude는 이 **확정된 사실**에 맞는 문서를 생성하기만 하면 됩니다.
43
+
44
+ ### 결과
45
+
46
+ 다른 도구는 "일반적으로 좋은" 문서를 생성합니다.
47
+ ClaudeOS-Core는 프로젝트가 `ApiResponse.ok()`를 쓴다는 것, MyBatis XML 매퍼가 `src/main/resources/mybatis/mappers/`에 있다는 것, 패키지 구조가 `com.company.module.{domain}.controller`라는 것을 아는 문서를 생성합니다 — 실제 코드를 읽었으니까요.
48
+
49
+ ### Before & After
50
+
51
+ **ClaudeOS-Core 없이** — Claude Code에게 주문 CRUD 생성을 요청하면:
52
+ ```
53
+ ❌ JPA 스타일 repository 사용 (프로젝트는 MyBatis 사용)
54
+ ❌ ResponseEntity.success() 생성 (프로젝트 래퍼는 ApiResponse.ok())
55
+ ❌ order/controller/에 파일 배치 (프로젝트는 controller/order/ 구조)
56
+ ❌ 영어 주석 생성 (팀은 한국어 주석 사용)
57
+ → 생성된 파일마다 20분씩 수정
58
+ ```
59
+
60
+ **ClaudeOS-Core 적용 후** — `.claude/rules/`에 확정된 패턴이 이미 존재:
61
+ ```
62
+ ✅ MyBatis 매퍼 + XML 생성 (build.gradle에서 감지)
63
+ ✅ ApiResponse.ok() 사용 (실제 소스에서 추출)
64
+ ✅ controller/order/에 파일 배치 (구조 스캔으로 Pattern A 확정)
65
+ ✅ 한국어 주석 (--lang ko 적용)
66
+ → 생성 코드가 프로젝트 컨벤션과 즉시 일치
67
+ ```
68
+
69
+ 이 차이는 누적됩니다. 하루 10개 작업 × 20분 절약 = **하루 3시간 이상**.
70
+
71
+ ---
72
+
73
+ ## 지원 스택
74
+
75
+ | 스택 | 감지 기준 | 분석 깊이 |
76
+ |---|---|---|
77
+ | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5가지 패키지 패턴 | 10개 대분류, 59개 소분류 |
78
+ | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin 플러그인, `settings.gradle.kts`, CQRS/BFF 자동감지 | 12개 대분류, 95개 소분류 |
79
+ | **Node.js / Express** | `package.json` | 9개 대분류, 57개 소분류 |
80
+ | **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10개 대분류, 68개 소분류 |
81
+ | **Next.js / React** | `package.json`, `next.config.*`, FSD 지원 | 9개 대분류, 55개 소분류 |
82
+ | **Vue / Nuxt** | `package.json`, `nuxt.config.*`, Composition API | 9개 대분류, 58개 소분류 |
83
+ | **Python / Django** | `requirements.txt`, `pyproject.toml` | 10개 대분류, 55개 소분류 |
84
+ | **Python / FastAPI** | `requirements.txt`, `pyproject.toml` | 10개 대분류, 58개 소분류 |
85
+ | **Node.js / Fastify** | `package.json` | 10개 대분류, 62개 소분류 |
86
+ | **Vite / React SPA** | `package.json`, `vite.config.*` | 9개 대분류, 55개 소분류 |
87
+ | **Angular** | `package.json`, `angular.json` | 12개 대분류, 78개 소분류 |
88
+
89
+ 자동 감지 항목: 언어 & 버전, 프레임워크 & 버전(Vite 포함), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy 등), 데이터베이스 (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), 패키지 매니저 (Gradle, Maven, npm, yarn, pnpm, pip, poetry), 아키텍처 (CQRS, BFF — 모듈명에서 감지), 멀티모듈 구조 (settings.gradle에서 감지), 모노레포 (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
90
+
91
+ **직접 지정할 필요 없습니다. 전부 자동으로 감지합니다.**
92
+
93
+ ### Java 도메인 감지 (5가지 패턴, 폴백 포함)
94
+
95
+ | 우선순위 | 패턴 | 구조 | 예시 |
96
+ |---|---|---|---|
97
+ | A | 레이어 우선 | `controller/{domain}/` | `controller/user/UserController.java` |
98
+ | B | 도메인 우선 | `{domain}/controller/` | `user/controller/UserController.java` |
99
+ | D | 모듈 접두사 | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
100
+ | E | DDD/헥사고날 | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
101
+ | C | 플랫 | `controller/*.java` | `controller/UserController.java` → 클래스명에서 `user` 추출 |
102
+
103
+ Controller 없는 서비스 전용 도메인도 `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/` 디렉토리를 통해 감지됩니다. 스킵: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2` 등.
104
+
105
+
106
+ ### Kotlin 멀티모듈 도메인 감지
107
+
108
+ Gradle 멀티모듈 구조의 Kotlin 프로젝트(예: CQRS 모노레포)용:
109
+
110
+ | 단계 | 동작 | 예시 |
111
+ |---|---|---|
112
+ | 1 | `settings.gradle.kts`에서 `include()` 스캔 | 14개 모듈 발견 |
113
+ | 2 | 모듈명에서 타입 감지 | `reservation-command-server` → type: `command` |
114
+ | 3 | 모듈명에서 도메인 추출 | `reservation-command-server` domain: `reservation` |
115
+ | 4 | 같은 도메인을 모듈 간 그룹핑 | `reservation-command-server` + `common-query-server` 1개 도메인 |
116
+ | 5 | 아키텍처 감지 | `command` + `query` 모듈 있음 → CQRS |
117
+
118
+ 지원 모듈 타입: `command`, `query`, `bff`, `integration`, `standalone`, `library`. 공유 라이브러리(`shared-lib`, `integration-lib`)는 특수 도메인으로 감지됩니다.
119
+
120
+ ### 프론트엔드 도메인 감지
121
+
122
+ - **App Router**: `app/{domain}/page.tsx` (Next.js)
123
+ - **Pages Router**: `pages/{domain}/index.tsx`
124
+ - **FSD (Feature-Sliced Design)**: `features/*/`, `widgets/*/`, `entities/*/`
125
+ - **RSC/Client 분리**: `client.tsx` 패턴 감지, Server/Client 컴포넌트 분리 추적
126
+ - **비표준 중첩 경로**: `src/*/pages/`, `src/*/components/`, `src/*/features/` 하위의 페이지, 컴포넌트, FSD 레이어 감지 (예: `src/admin/pages/dashboard/`)
127
+ - **설정 파일 폴백**: `package.json`에 없어도 `next.config.*`, `vite.config.*` 등에서 감지 (모노레포 지원)
128
+ - **깊은 디렉토리 폴백**: React/CRA/Vite/Vue/RN 프로젝트에서 `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/`를 깊이 무관하게 스캔
129
+
130
+ ---
131
+
132
+ ## 빠른 시작
133
+
134
+ ### 사전 요구사항
135
+
136
+ - **Node.js** v18+
137
+ - **Claude Code CLI** (설치 & 인증 완료)
138
+
139
+ ### 설치
140
+
141
+ ```bash
142
+ cd /your/project/root
143
+
144
+ # 방법 A: npx (권장 — 설치 불필요)
145
+ npx claudeos-core init
146
+
147
+ # 방법 B: 글로벌 설치
148
+ npm install -g claudeos-core
149
+ claudeos-core init
150
+
151
+ # 방법 C: 프로젝트 devDependency
152
+ npm install --save-dev claudeos-core
153
+ npx claudeos-core init
154
+
155
+ # 방법 D: git clone (개발/기여용)
156
+ git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
157
+
158
+ # 크로스 플랫폼 (PowerShell, CMD, Bash, Zsh — 모든 터미널)
159
+ node claudeos-core-tools/bin/cli.js init
160
+
161
+ # Linux/macOS 전용 (Bash만)
162
+ bash claudeos-core-tools/bootstrap.sh
163
+ ```
164
+
165
+ ### 출력 언어 (10개 언어 지원)
166
+
167
+ `--lang` 없이 `init`을 실행하면 화살표 키 또는 숫자 키로 언어를 선택하는 인터랙티브 화면이 나타납니다:
168
+
169
+ ```
170
+ ╔══════════════════════════════════════════════════╗
171
+ ║ Select generated document language (required) ║
172
+ ╚══════════════════════════════════════════════════╝
173
+
174
+ 생성되는 파일(CLAUDE.md, Standards, Rules,
175
+ Skills, Guides)이 한국어로 작성됩니다.
176
+
177
+ 1. en English
178
+ ❯ 2. ko — 한국어 (Korean)
179
+ 3. zh-CN — 简体中文 (Chinese Simplified)
180
+ ...
181
+
182
+ ↑↓ Move 1-0 Jump Enter Select ESC Cancel
183
+ ```
184
+
185
+ 이동 시 설명이 해당 언어로 바뀝니다. 선택 화면을 건너뛰려면 `--lang`을 직접 지정하세요:
186
+
187
+ ```bash
188
+ npx claudeos-core init --lang ko # 한국어
189
+ npx claudeos-core init --lang en # English
190
+ npx claudeos-core init --lang ja # 日本語
191
+ ```
192
+
193
+ > **참고:** 설정은 생성되는 문서 파일의 언어만 변경합니다. 코드 분석(Pass 1–2)은 항상 영어로 실행되며, 생성 결과(Pass 3)만 선택한 언어로 작성됩니다. 코드 예시는 원래 프로그래밍 언어 구문 그대로 유지됩니다.
194
+
195
+ 이게 전부입니다. 5–18분 후 모든 문서가 생성되어 바로 사용 가능합니다. CLI가 각 Pass 실행 시 퍼센트, 경과시간, 예상 남은시간이 포함된 프로그레스 바를 표시합니다.
196
+
197
+ ### 수동 단계별 설치
198
+
199
+ 단계를 직접 제어하거나, 자동 파이프라인이 특정 단계에서 실패한 경우 수동으로 실행할 수 있습니다. ClaudeOS-Core의 내부 동작을 이해하는 데에도 유용합니다.
200
+
201
+ #### Step 1: 클론 및 의존성 설치
202
+
203
+ ```bash
204
+ cd /your/project/root
205
+
206
+ git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
207
+ cd claudeos-core-tools && npm install && cd ..
208
+ ```
209
+
210
+ #### Step 2: 디렉토리 구조 생성
211
+
212
+ ```bash
213
+ # Rules
214
+ mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync}
215
+
216
+ # Standards
217
+ mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
218
+
219
+ # Skills
220
+ mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
221
+
222
+ # Guide, Plan, Database, MCP, Generated
223
+ mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
224
+ mkdir -p claudeos-core/{plan,database,mcp-guide,generated}
225
+ ```
226
+
227
+ #### Step 3: plan-installer 실행 (프로젝트 분석)
228
+
229
+ 프로젝트를 스캔하여 스택을 감지하고, 도메인을 찾고, 그룹으로 분할하고, 프롬프트를 생성합니다.
230
+
231
+ ```bash
232
+ node claudeos-core-tools/plan-installer/index.js
233
+ ```
234
+
235
+ **출력 (`claudeos-core/generated/`):**
236
+ - `project-analysis.json` 감지된 스택, 도메인, 프론트엔드 정보
237
+ - `domain-groups.json` — Pass 1용 도메인 그룹
238
+ - `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` 분석 프롬프트
239
+ - `pass2-prompt.md` — 통합 프롬프트
240
+ - `pass3-prompt.md` 생성 프롬프트
241
+
242
+ 진행하기 전에 파일들을 검토하여 감지 정확도를 확인할 있습니다.
243
+
244
+ #### Step 4: Pass 1 도메인 그룹별 심층 코드 분석
245
+
246
+ 각 도메인 그룹에 대해 Pass 1을 실행합니다. `domain-groups.json`에서 그룹 수를 확인하세요.
247
+
248
+ ```bash
249
+ # Check groups
250
+ cat claudeos-core/generated/domain-groups.json | node -e "
251
+ const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
252
+ g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
253
+ "
254
+
255
+ # Run Pass 1 for group 1:
256
+ cp claudeos-core/generated/pass1-backend-prompt.md /tmp/_pass1.md
257
+ DOMAIN_LIST="user, order, product" PASS_NUM=1 \
258
+ perl -pi -e 's/\{\{DOMAIN_GROUP\}\}/$ENV{DOMAIN_LIST}/g; s/\{\{PASS_NUM\}\}/$ENV{PASS_NUM}/g' /tmp/_pass1.md
259
+ cat /tmp/_pass1.md | claude -p --dangerously-skip-permissions
260
+
261
+ # 프론트엔드 그룹은 pass1-frontend-prompt.md를 사용하세요
262
+ ```
263
+
264
+ **확인:** `ls claudeos-core/generated/pass1-*.json`으로 그룹당 하나의 JSON이 있는지 확인합니다.
265
+
266
+ #### Step 5: Pass 2 — 분석 결과 통합
267
+
268
+ ```bash
269
+ cat claudeos-core/generated/pass2-prompt.md \
270
+ | claude -p --dangerously-skip-permissions
271
+ ```
272
+
273
+ **확인:** `claudeos-core/generated/pass2-merged.json`이 존재하고 9개 이상의 최상위 키가 있어야 합니다.
274
+
275
+ #### Step 6: Pass 3 — 전체 문서 생성
276
+
277
+ ```bash
278
+ cat claudeos-core/generated/pass3-prompt.md \
279
+ | claude -p --dangerously-skip-permissions
280
+ ```
281
+
282
+ **확인:** 프로젝트 루트에 `CLAUDE.md`가 존재해야 합니다.
283
+
284
+ #### Step 7: 검증 도구 실행
285
+
286
+ ```bash
287
+ # 메타데이터 생성 (다른 검사 전 필수)
288
+ node claudeos-core-tools/manifest-generator/index.js
289
+
290
+ # 전체 검사 실행
291
+ node claudeos-core-tools/health-checker/index.js
292
+
293
+ # 또는 개별 검사 실행:
294
+ node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk
295
+ node claudeos-core-tools/sync-checker/index.js # Sync status
296
+ node claudeos-core-tools/content-validator/index.js # Content quality
297
+ node claudeos-core-tools/pass-json-validator/index.js # JSON format
298
+ ```
299
+
300
+ #### Step 8: 결과 확인
301
+
302
+ ```bash
303
+ find .claude claudeos-core -type f | grep -v node_modules | grep -v '/generated/' | wc -l
304
+ head -30 CLAUDE.md
305
+ ls .claude/rules/*/
306
+ ```
307
+
308
+ > **Tip:** 특정 단계에서 실패하면 해당 단계만 다시 실행할 수 있습니다. Pass 1/2 결과는 캐시됩니다 — `pass1-N.json` 또는 `pass2-merged.json`이 이미 존재하면 자동 파이프라인이 건너뜁니다. `npx claudeos-core init --force`를 사용하면 이전 결과를 삭제하고 새로 시작합니다.
309
+
310
+ ### 사용 시작
311
+
312
+ ```
313
+ # Claude Code에서 자연스럽게 요청하면 됩니다:
314
+ "주문 도메인 CRUD 만들어줘"
315
+ "사용자 인증 API 추가해줘"
316
+ "이 코드를 프로젝트 패턴에 맞게 리팩토링해줘"
317
+
318
+ # Claude Code가 생성된 Standards, Rules, Skills를 자동으로 참조합니다.
319
+ ```
320
+
321
+ ---
322
+
323
+ ## 작동 원리 — 3-Pass 파이프라인
324
+
325
+ ```
326
+ npx claudeos-core init
327
+
328
+ ├── [1] npm install 의존성 설치 (~10초)
329
+ ├── [2] 디렉토리 구조 생성 ← 폴더 생성 (~1초)
330
+ ├── [3] plan-installer (Node.js) ← 프로젝트 스캔 (~5초)
331
+ │ ├── 스택 자동 감지 (멀티스택 지원)
332
+ ├── 도메인 목록 추출 (backend/frontend 태깅)
333
+ ├── 도메인 그룹 자동 분할 (타입별)
334
+ └── 스택별 프롬프트 선택 (타입별)
335
+
336
+ ├── [4] Pass 1 × N (claude -p) ← 코드 심층 분석 (~2-8분)
337
+ ├── ⚙️ 백엔드 그룹 → 백엔드 분석 프롬프트
338
+ │ └── 🎨 프론트엔드 그룹 프론트엔드 분석 프롬프트
339
+
340
+ ├── [5] Pass 2 × 1 (claude -p) ← 분석 결과 통합 (~1분)
341
+ │ └── 전체 Pass 1 결과 통합 (백엔드 + 프론트엔드)
342
+
343
+ ├── [6] Pass 3 × 1 (claude -p) ← 전체 생성 (~3-5분)
344
+ └── 결합 프롬프트 (백엔드 + 프론트엔드 대상)
345
+
346
+ └── [7] 검증 ← health checker 자동 실행
347
+ ```
348
+
349
+ ### 3 Pass인가?
350
+
351
+ **Pass 1**은 소스코드를 직접 읽는 유일한 Pass입니다. 도메인 그룹별 대표 파일을 선정하고 55–95개 분석 카테고리(스택별)에서 패턴을 추출합니다. 대규모 프로젝트에서는 도메인 그룹당 번씩 여러 실행됩니다. 멀티스택 프로젝트(예: Java 백엔드 + React 프론트엔드)에서는 백엔드와 프론트엔드 도메인이 스택에 맞는 **별도의 분석 프롬프트**를 사용합니다.
352
+
353
+ **Pass 2**는 모든 Pass 1 결과를 통합 분석으로 병합합니다: 공통 패턴 (100% 공유), 다수 패턴 (50%+ 공유), 도메인 특화 패턴, 심각도별 안티패턴, 횡단 관심사 (명명, 보안, DB, 테스트, 로깅, 성능). 백엔드와 프론트엔드 결과가 함께 병합됩니다.
354
+
355
+ **Pass 3**는 병합된 분석을 기반으로 전체 파일 생성을 수행합니다. 소스코드를 읽지 않고 분석 JSON만 참조합니다. 멀티스택 모드에서는 생성 프롬프트가 백엔드와 프론트엔드 대상을 결합하여 두 세트의 표준을 한 번에 생성합니다.
356
+
357
+ ---
358
+
359
+ ## 생성되는 파일 구조
360
+
361
+ ```
362
+ your-project/
363
+
364
+ ├── CLAUDE.md ← Claude Code 진입점
365
+
366
+ ├── .claude/
367
+ └── rules/ ← Glob 트리거 규칙
368
+ │ ├── 00.core/
369
+ │ ├── 10.backend/
370
+ │ ├── 20.frontend/
371
+ ├── 30.security-db/
372
+ ├── 40.infra/
373
+ │ └── 50.sync/ 동기화 리마인더 규칙
374
+
375
+ ├── claudeos-core/ 메인 출력 디렉토리
376
+ │ ├── generated/ 분석 JSON + 동적 프롬프트
377
+ │ │ ├── project-analysis.json 스택 정보 (멀티스택 포함)
378
+ │ │ ├── domain-groups.json type: backend/frontend 태깅된 그룹
379
+ │ │ ├── pass1-backend-prompt.md 백엔드 분석 프롬프트
380
+ │ │ ├── pass1-frontend-prompt.md 프론트엔드 분석 프롬프트 (감지 시)
381
+ ├── pass2-prompt.md 통합 프롬프트
382
+ │ │ └── pass3-prompt.md 생성 프롬프트 (결합)
383
+ │ ├── standard/ 코딩 표준 (15-19개 파일)
384
+ │ │ ├── 00.core/ 개요, 아키텍처, 명명 규칙
385
+ │ │ ├── 10.backend-api/ ← API 패턴 (스택별)
386
+ │ │ ├── 20.frontend-ui/ 프론트엔드 패턴 (감지 시)
387
+ │ │ ├── 30.security-db/ 보안, DB 스키마, 유틸리티
388
+ ├── 40.infra/ 설정, 로깅, CI/CD
389
+ │ └── 50.verification/ 빌드 검증, 테스트
390
+ │ ├── skills/ CRUD 스캐폴딩 스킬
391
+ │ ├── guide/ 온보딩, FAQ, 트러블슈팅 (9개 파일)
392
+ ├── plan/ 마스터 플랜 (백업/복원)
393
+ ├── database/ ← DB 스키마, 마이그레이션 가이드
394
+ └── mcp-guide/ MCP 서버 연동 가이드
395
+
396
+ └── claudeos-core-tools/ ← 이 도구 (수정 불필요)
397
+ ```
398
+
399
+ 모든 standard 파일은 ✅ 올바른 예시, ❌ 잘못된 예시, 규칙 요약 테이블을 포함합니다 — 제네릭 템플릿이 아닌 실제 코드 패턴에서 추출됩니다.
400
+
401
+ ---
402
+
403
+ ## 규모별 자동 조절
404
+
405
+ | 규모 | 도메인 | Pass 1 횟수 | `claude -p` | 예상 시간 |
406
+ |---|---|---|---|---|
407
+ | 소규모 | 14 | 1 | 3 | ~5분 |
408
+ | 중규모 | 5–8 | 2 | 4 | ~8분 |
409
+ | 대규모 | 9–16 | 3–4 | 5–6 | ~12분 |
410
+ | 초대규모 | 17+ | 5+ | 7+ | ~18분+ |
411
+
412
+ 멀티스택 프로젝트(예: Java + React)에서는 백엔드와 프론트엔드 도메인이 합산됩니다. 백엔드 6개 + 프론트엔드 4개 = 총 10개로 "대규모"로 스케일링됩니다.
413
+
414
+ ---
415
+
416
+ ## 검증 도구
417
+
418
+ ClaudeOS-Core에는 생성 후 자동으로 실행되는 5개의 내장 검증 도구가 포함되어 있습니다:
419
+
420
+ ```bash
421
+ # 한 번에 전체 확인 (권장)
422
+ npx claudeos-core health
423
+
424
+ # 개별 명령어
425
+ npx claudeos-core validate # Plan 디스크 비교
426
+ npx claudeos-core refresh # 디스크 → Plan 동기화
427
+ npx claudeos-core restore # Plan 디스크 복원
428
+
429
+ # node 직접 실행 (git clone 사용자)
430
+ node claudeos-core-tools/health-checker/index.js
431
+ node claudeos-core-tools/manifest-generator/index.js
432
+ node claudeos-core-tools/plan-validator/index.js --check
433
+ node claudeos-core-tools/sync-checker/index.js
434
+ ```
435
+
436
+ | 도구 | 역할 |
437
+ |---|---|
438
+ | **manifest-generator** | 메타데이터 JSON 생성 (rule-manifest, sync-map, plan-manifest) |
439
+ | **plan-validator** | Master Plan `<file>` 블록과 디스크 비교 check, refresh, restore 3가지 모드 |
440
+ | **sync-checker** | 미등록 파일 (디스크에 있지만 Plan에 없는) 고아 항목 탐지 |
441
+ | **content-validator** | 파일 품질 검증 — 빈 파일, ✅/❌ 예시 누락, 필수 섹션 확인 |
442
+ | **pass-json-validator** | Pass 1–3 JSON 구조, 필수 키, 섹션 완성도 검증 |
443
+
444
+ ---
445
+
446
+ ## Claude Code가 문서를 사용하는 방식
447
+
448
+ ClaudeOS-Core가 생성한 문서를 Claude Code가 실제로 읽는 방식입니다:
449
+
450
+ ### 자동으로 읽는 파일
451
+
452
+ | 파일 | 시점 | 보장 |
453
+ |---|---|---|
454
+ | `CLAUDE.md` | 대화 시작 시 | 항상 |
455
+ | `.claude/rules/00.core/*` | 파일 편집 시 (`paths: ["**/*"]`) | 항상 |
456
+ | `.claude/rules/10.backend/*` | 파일 편집 (`paths: ["**/*"]`) | 항상 |
457
+ | `.claude/rules/30.security-db/*` | 파일 편집 (`paths: ["**/*"]`) | 항상 |
458
+ | `.claude/rules/40.infra/*` | config/infra 파일 편집 시만 (스코핑된 paths) | 조건부 |
459
+ | `.claude/rules/50.sync/*` | claudeos-core 파일 편집 시만 (스코핑된 paths) | 조건부 |
460
+
461
+ ### rule 참조를 통해 온디맨드로 읽는 파일
462
+
463
+ rule 파일 하단의 `## Reference` 섹션이 대응하는 standard 링크합니다. Claude는 현재 작업과 관련된 standard만 읽습니다:
464
+
465
+ - `claudeos-core/standard/**` — 코딩 패턴, ✅/❌ 예시, 네이밍 규칙
466
+ - `claudeos-core/database/**` DB 스키마 (쿼리, 매퍼, 마이그레이션용)
467
+
468
+ `00.standard-reference.md`는 대응 rule이 없는 standard를 발견하기 위한 디렉토리 역할입니다.
469
+
470
+ ### 읽지 않는 파일 (컨텍스트 절약)
471
+
472
+ standard-reference 규칙의 `DO NOT Read` 섹션으로 명시적으로 제외됩니다:
473
+
474
+ | 폴더 | 제외 이유 |
475
+ |---|---|
476
+ | `claudeos-core/plan/` | Master Plan 백업 (~340KB). `npx claudeos-core refresh`로 동기화. |
477
+ | `claudeos-core/generated/` | 빌드 메타데이터 JSON. 코딩 참조 아님. |
478
+ | `claudeos-core/guide/` | 사람을 위한 온보딩 가이드. |
479
+ | `claudeos-core/mcp-guide/` | MCP 서버 문서. 코딩 참조 아님. |
480
+
481
+ ---
482
+
483
+ ## 일상 워크플로우
484
+
485
+ ### 설치 후
486
+
487
+ ```
488
+ # Claude Code를 평소처럼 사용하면 됩니다 — 표준을 자동으로 참조합니다:
489
+ "주문 도메인 CRUD 만들어줘"
490
+ "사용자 프로필 수정 API 추가해줘"
491
+ "이 코드를 프로젝트 패턴에 맞게 리팩토링해줘"
492
+ ```
493
+
494
+ ### 표준을 직접 편집한 후
495
+
496
+ ```bash
497
+ # standard나 rules 파일을 수정한 후:
498
+ npx claudeos-core refresh
499
+
500
+ # 전체 일관성 확인
501
+ npx claudeos-core health
502
+ ```
503
+
504
+ ### 문서가 깨졌을 때
505
+
506
+ ```bash
507
+ # Master Plan에서 전체 복원
508
+ npx claudeos-core restore
509
+ ```
510
+
511
+ ### CI/CD 연동
512
+
513
+ ```yaml
514
+ # GitHub Actions 예시
515
+ - run: npx claudeos-core validate
516
+ # Exit code 1이면 PR 블록
517
+ ```
518
+
519
+ ---
520
+
521
+ ## 무엇이 다른가?
522
+
523
+ ### 다른 Claude Code 도구와의 비교
524
+
525
+ | | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
526
+ |---|---|---|---|---|---|
527
+ | **접근 방식** | 코드가 먼저 분석 LLM 생성 | 사전 제작된 설정 프리셋 | LLM이 에이전트 팀 설계 | LLM이 스펙 문서 생성 | LLM이 CLAUDE.md 작성 |
528
+ | **소스코드 직접 분석** | Deterministic 정적 분석 | | | (LLM이 읽음) | (LLM이 읽음) |
529
+ | **스택 감지** | 코드가 확정 (ORM, DB, 빌드 툴, 패키지 매니저) | N/A (스택 무관) | LLM 추측 | LLM 추측 | LLM 추측 |
530
+ | **도메인 감지** | 코드가 확정 (Java 5패턴, Kotlin CQRS, Next.js FSD) | N/A | LLM이 추측 | N/A | N/A |
531
+ | **같은 프로젝트 같은 결과** | Deterministic 분석 | (정적 파일) | (LLM 결과 변동) | (LLM 결과 변동) | (LLM 결과 변동) |
532
+ | **대형 프로젝트 처리** | 도메인 그룹 분할 (4 도메인 / 40 파일) | N/A | 분할 없음 | 분할 없음 | 컨텍스트 윈도우 한계 |
533
+ | **출력물** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ 파일) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 스펙 문서 | CLAUDE.md (1 파일) |
534
+ | **출력 위치** | `.claude/rules/` (Claude Code 자동 로드) | `.claude/` 여러 위치 | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
535
+ | **생성 검증** | ✅ 5 자동 검증 도구 | ❌ | ❌ | ❌ | |
536
+ | **다국어 출력** | ✅ 10 언어 | | | ❌ | ❌ |
537
+ | **멀티 스택** | ✅ 백엔드 + 프론트엔드 동시 | ❌ 스택 무관 | ❌ | ❌ | 부분적 |
538
+ | **에이전트 오케스트레이션** | ❌ | ✅ 28 에이전트 | ✅ 6 패턴 | ❌ | ❌ |
539
+
540
+ ### 핵심 차이
541
+
542
+ **다른 도구는 Claude에게 "일반적으로 좋은 지침"을 줍니다. ClaudeOS-Core는 Claude에게 "실제 코드에서 추출한 지침"을 줍니다.**
543
+
544
+ 그래서 Claude Code가 MyBatis 프로젝트에서 JPA 코드를 생성하는 일이 없어지고,
545
+ `success()`를 써야 할 곳에 `ok()`를 쓰는 일이 없어지고,
546
+ `controller/user/` 구조인데 `user/controller/`로 만드는 일이 없어집니다.
547
+
548
+ ### 경쟁이 아닌 보완
549
+
550
+ ClaudeOS-Core는 **프로젝트별 규칙과 표준**에 집중합니다.
551
+ 다른 도구들은 **에이전트 오케스트레이션과 워크플로우**에 집중합니다.
552
+
553
+ ClaudeOS-Core로 프로젝트 규칙을 생성한 뒤, ECC나 Harness를 그 위에 얹어 에이전트 팀과 워크플로우 자동화를 구성할 수 있습니다. 서로 다른 문제를 해결하는 도구입니다.
554
+
555
+ ---
556
+ ## FAQ
557
+
558
+ **Q: 소스코드를 수정하나요?**
559
+ 아니요. `CLAUDE.md`, `.claude/rules/`, `claudeos-core/`만 생성합니다. 기존 코드는 절대 수정하지 않습니다.
560
+
561
+ **Q: 비용이 얼마나 드나요?**
562
+ `claude -p`를 3–7회 호출합니다. 일반적인 Claude Code 사용량 내에서 처리됩니다.
563
+
564
+ **Q: 생성된 파일을 Git에 커밋해야 하나요?**
565
+ 네, 권장합니다. 팀원 전체가 동일한 Claude Code 표준을 공유할 수 있습니다. `claudeos-core/generated/`는 `.gitignore`에 추가하는 것을 권장합니다 (분석 JSON은 재생성 가능).
566
+
567
+ **Q: 멀티스택 프로젝트(예: Java 백엔드 + React 프론트엔드)는?**
568
+ 완전 지원됩니다. ClaudeOS-Core가 두 스택을 자동 감지하고, 도메인을 `backend`/`frontend`로 태깅하여 각각 스택별 분석 프롬프트를 사용합니다. Pass 2에서 통합하고, Pass 3에서 백엔드와 프론트엔드 표준을 한 번에 생성합니다.
569
+
570
+ **Q: 재실행하면 어떻게 되나요?**
571
+ 이전 Pass 1/2 결과가 존재하면 인터랙티브 프롬프트가 표시됩니다: **Continue** (중단된 곳에서 재개) 또는 **Fresh** (전부 삭제 후 새로 시작). `--force`를 사용하면 프롬프트 없이 항상 새로 시작합니다. Pass 3항상 재실행됩니다. 이전 버전은 Master Plans에서 복원할 수 있습니다.
572
+
573
+ **Q: NestJS는 전용 템플릿이 있나요, 아니면 Express 템플릿을 사용하나요?**
574
+ NestJS는 NestJS 전용 분석 카테고리가 포함된 `node-nestjs` 전용 템플릿을 사용합니다: `@Module`, `@Injectable`, `@Controller` 데코레이터, Guards, Pipes, Interceptors, DI 컨테이너, CQRS 패턴, `Test.createTestingModule`. Express 프로젝트는 별도의 `node-express` 템플릿을 사용합니다.
575
+
576
+ **Q: Vue / Nuxt 프로젝트는?**
577
+ Vue/Nuxt는 Composition API, `<script setup>`, defineProps/defineEmits, Pinia 스토어, `useFetch`/`useAsyncData`, Nitro 서버 라우트, `@nuxt/test-utils`를 커버하는 `vue-nuxt` 전용 템플릿을 사용합니다. Next.js/React 프로젝트는 `node-nextjs` 템플릿을 사용합니다.
578
+
579
+ **Q: Turborepo / pnpm workspaces / Lerna 모노레포에서도 작동하나요?**
580
+ 네. ClaudeOS-Core는 `turbo.json`, `pnpm-workspace.yaml`, `lerna.json`, `package.json#workspaces`를 감지하고 서브 패키지 `package.json`에서 프레임워크/ORM/DB 의존성을 자동으로 스캔합니다. 도메인 스캔은 `apps/*/src/`와 `packages/*/src/` 패턴을 지원합니다. 모노레포 루트에서 실행하세요.
581
+
582
+ **Q: Kotlin을 지원하나요?**
583
+ 네. ClaudeOS-Core는 `build.gradle.kts` 또는 `build.gradle`의 kotlin 플러그인에서 Kotlin을 자동 감지합니다. Kotlin 전용 `kotlin-spring` 템플릿을 사용하여 data class, sealed class, 코루틴, 확장 함수, MockK 등 Kotlin 고유 패턴을 분석합니다.
584
+
585
+ **Q: CQRS / BFF 아키텍처는?**
586
+ Kotlin 멀티모듈 프로젝트에서 완전 지원됩니다. `settings.gradle.kts`를 읽어 모듈명에서 타입(command, query, bff, integration)을 감지하고, 같은 도메인의 Command/Query 모듈을 그룹핑합니다. 생성되는 표준에는 command controller vs query controller 별도 규칙, BFF/Feign 패턴, 모듈 간 통신 규칙이 포함됩니다.
587
+
588
+ **Q: Gradle 멀티모듈 모노레포는?**
589
+ ClaudeOS-Core는 중첩 깊이에 관계없이 모든 서브모듈(`**/src/main/kotlin/**/*.kt`)을 스캔합니다. 모듈 타입은 이름 규칙으로 추론됩니다 (예: `reservation-command-server` → 도메인: `reservation`, 타입: `command`). 공유 라이브러리(`shared-lib`, `integration-lib`)도 감지됩니다.
590
+
591
+ ---
592
+
593
+ ## 템플릿 구조
594
+
595
+ ```
596
+ pass-prompts/templates/
597
+ ├── common/ # Shared header/footer
598
+ ├── java-spring/ # Java / Spring Boot
599
+ ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
600
+ ├── node-express/ # Node.js / Express
601
+ ├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
602
+ ├── node-fastify/ # Node.js / Fastify
603
+ ├── node-nextjs/ # Next.js / React
604
+ ├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
605
+ ├── angular/ # Angular
606
+ ├── python-django/ # Python / Django (DRF)
607
+ └── python-fastapi/ # Python / FastAPI
608
+ ```
609
+
610
+ `plan-installer`가 스택을 자동 감지한 후 타입별 프롬프트를 조합합니다. NestJS와 Vue/Nuxt는 프레임워크별 분석 카테고리가 적용된 전용 템플릿을 사용합니다. 멀티스택 프로젝트에서는 `pass1-backend-prompt.md`와 `pass1-frontend-prompt.md`가 별도로 생성되고, `pass3-prompt.md`는 두 스택의 생성 대상을 결합합니다.
611
+
612
+ ---
613
+
614
+ ## 모노레포 지원
615
+
616
+ ClaudeOS-Core는 JS/TS 모노레포 구성을 자동으로 감지하고 서브 패키지의 의존성을 스캔합니다.
617
+
618
+ **지원하는 모노레포 마커** (자동 감지):
619
+ - `turbo.json` (Turborepo)
620
+ - `pnpm-workspace.yaml` (pnpm workspaces)
621
+ - `lerna.json` (Lerna)
622
+ - `package.json#workspaces` (npm/yarn workspaces)
623
+
624
+ **모노레포 루트에서 실행하세요** — ClaudeOS-Core는 `apps/*/package.json`과 `packages/*/package.json`을 읽어 서브 패키지의 프레임워크/ORM/DB 의존성을 자동으로 검색합니다:
625
+
626
+ ```bash
627
+ cd my-monorepo
628
+ npx claudeos-core init
629
+ ```
630
+
631
+ **감지되는 항목:**
632
+ - `apps/web/package.json`의 의존성 (예: `next`, `react`) → 프론트엔드 스택
633
+ - `apps/api/package.json`의 의존성 (예: `express`, `prisma`) → 백엔드 스택
634
+ - `packages/db/package.json`의 의존성 (예: `drizzle-orm`) → ORM/DB
635
+ - `pnpm-workspace.yaml`의 커스텀 워크스페이스 경로 (예: `services/*`)
636
+
637
+ **도메인 스캔도 모노레포 레이아웃을 지원합니다:**
638
+ - 백엔드 도메인: `apps/api/src/modules/*/`, `apps/api/src/*/`
639
+ - 프론트엔드 도메인: `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/`
640
+ - 공유 패키지 도메인: `packages/*/src/*/`
641
+
642
+ ```
643
+ my-monorepo/ ← 여기서 실행: npx claudeos-core init
644
+ ├── turbo.json Turborepo 자동 감지
645
+ ├── apps/
646
+ ├── web/ ← apps/web/package.json에서 Next.js 감지
647
+ │ ├── app/dashboard/ 프론트엔드 도메인 감지
648
+ │ └── package.json { "dependencies": { "next": "^14" } }
649
+ └── api/ ← apps/api/package.json에서 Express 감지
650
+ ├── src/modules/users/ ← 백엔드 도메인 감지
651
+ └── package.json { "dependencies": { "express": "^4" } }
652
+ ├── packages/
653
+ │ ├── db/ ← packages/db/package.json에서 Drizzle 감지
654
+ │ └── ui/
655
+ └── package.json ← { "workspaces": ["apps/*", "packages/*"] }
656
+ ```
657
+
658
+ > **참고:** Kotlin/Java 모노레포의 경우, 멀티모듈 감지는 `settings.gradle.kts`를 사용합니다 (위의 [Kotlin 멀티모듈 도메인 감지](#kotlin-멀티모듈-도메인-감지) 참조). JS 모노레포 마커가 필요하지 않습니다.
659
+
660
+ ## 트러블슈팅
661
+
662
+ **"claude: command not found"** — Claude Code CLI가 설치되지 않았거나 PATH에 없습니다. [Claude Code 공식 문서](https://code.claude.com/docs/en/overview)를 참조하세요.
663
+
664
+ **"npm install 실패"** — Node.js 버전이 낮을 수 있습니다. v18+ 필요.
665
+
666
+ **"도메인 0개 감지됨"** — 프로젝트 구조가 비표준일 있습니다. 스택별 감지 패턴은 위의 [지원 스택](#지원-스택) 섹션을 참조하세요.
667
+
668
+ **Kotlin 프로젝트에서 "도메인 0개 감지됨"** — 프로젝트 루트에 `build.gradle.kts` (또는 kotlin 플러그인이 있는 `build.gradle`)가 있고, 소스 파일이 `**/src/main/kotlin/` 아래에 있는지 확인하세요. 멀티모듈 프로젝트는 `settings.gradle.kts`에 `include()` 문이 포함되어 있어야 합니다. 단일 모듈 Kotlin 프로젝트(`settings.gradle` 없음) 지원됩니다 `src/main/kotlin/` 하위 패키지/클래스 구조에서 도메인을 추출합니다.
669
+
670
+ **"언어가 kotlin 대신 java로 감지됨"** — ClaudeOS-Core는 루트 `build.gradle(.kts)`를 먼저 확인한 서브모듈 빌드 파일을 확인합니다. 루트 빌드 파일이 `kotlin` 없이 `java` 플러그인만 사용하는 경우, 최대 5개 서브모듈 빌드 파일을 폴백으로 검사합니다. 그래도 감지되지 않으면 최소 하나의 `build.gradle.kts`에 `kotlin("jvm")` 또는 `org.jetbrains.kotlin`이 포함되어 있는지 확인하세요.
671
+
672
+ **"CQRS가 감지되지 않음"** — 아키텍처 감지는 모듈명에 `command`와 `query` 키워드가 포함되어야 합니다. 다른 이름을 사용하는 경우(예: `write-server`, `read-server`) CQRS가 자동 감지되지 않습니다. plan-installer 실행 후 생성된 프롬프트를 수동으로 조정할 수 있습니다.
673
+
674
+ ---
675
+
676
+ ## 기여
677
+
678
+ 기여를 환영합니다! 도움이 가장 필요한 영역:
679
+
680
+ - **새 스택 템플릿** Ruby/Rails, Go/Gin, PHP/Laravel, Rust/Axum
681
+ - **모노레포 심화 지원** — 서브프로젝트 루트 분리, 워크스페이스 감지
682
+ - **테스트 커버리지** — 테스트 스위트 확장 중 (현재 269개 테스트, 전체 스캐너, 스택 감지, 도메인 그룹핑, 플랜 파싱, 프롬프트 생성, CLI 셀렉터, 모노레포 감지, 검증 도구, Vite SPA 감지 커버)
683
+
684
+ ---
685
+
686
+ ## 만든 사람
687
+
688
+ **claudeos-core** — [GitHub](https://github.com/claudeos-core) · [Email](mailto:claudeoscore@gmail.com)
689
+
690
+ ## 라이선스
691
+
692
+ ISC