claudeos-core 2.0.2 → 2.1.1
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/CHANGELOG.md +208 -0
- package/README.de.md +961 -880
- package/README.es.md +960 -880
- package/README.fr.md +960 -880
- package/README.hi.md +960 -880
- package/README.ja.md +960 -880
- package/README.ko.md +126 -47
- package/README.md +126 -46
- package/README.ru.md +960 -880
- package/README.vi.md +128 -48
- package/README.zh-CN.md +959 -880
- package/bin/cli.js +7 -2
- package/bin/commands/init.js +733 -143
- package/bin/commands/memory.js +17 -5
- package/bootstrap.sh +81 -81
- package/lib/expected-outputs.js +6 -7
- package/lib/memory-scaffold.js +84 -46
- package/lib/plan-parser.js +12 -0
- package/manifest-generator/index.js +16 -18
- package/package.json +1 -1
- package/pass-prompts/templates/angular/pass3.md +2 -10
- package/pass-prompts/templates/common/pass3-phase1.md +131 -0
- package/pass-prompts/templates/common/pass3a-facts.md +143 -0
- package/pass-prompts/templates/common/pass3b-core-header.md +58 -0
- package/pass-prompts/templates/common/pass3c-skills-guide-header.md +53 -0
- package/pass-prompts/templates/common/pass3d-plan-aux-header.md +57 -0
- package/pass-prompts/templates/common/pass4.md +4 -19
- package/pass-prompts/templates/java-spring/pass3.md +5 -15
- package/pass-prompts/templates/kotlin-spring/pass3.md +5 -15
- package/pass-prompts/templates/node-express/pass3.md +5 -14
- package/pass-prompts/templates/node-fastify/pass3.md +2 -10
- package/pass-prompts/templates/node-nestjs/pass3.md +5 -13
- package/pass-prompts/templates/node-nextjs/pass3.md +5 -14
- package/pass-prompts/templates/node-vite/pass3.md +95 -103
- package/pass-prompts/templates/python-django/pass3.md +5 -14
- package/pass-prompts/templates/python-fastapi/pass3.md +5 -14
- package/pass-prompts/templates/python-flask/pass3.md +95 -103
- package/pass-prompts/templates/vue-nuxt/pass3.md +2 -10
- package/plan-installer/pass3-context-builder.js +258 -0
- package/plan-installer/prompt-generator.js +9 -1
- package/plan-validator/index.js +23 -8
- package/sync-checker/index.js +44 -0
package/README.ko.md
CHANGED
|
@@ -222,7 +222,7 @@ npx claudeos-core init --lang en # English (기본값)
|
|
|
222
222
|
|
|
223
223
|
> **참고:** 이 설정은 생성되는 문서 파일의 언어만 변경합니다. 코드 분석(Pass 1–2)은 항상 영어로 실행되며, 생성 결과(Pass 3)만 선택한 언어로 작성됩니다. 코드 예시는 원래 프로그래밍 언어 구문 그대로 유지됩니다.
|
|
224
224
|
|
|
225
|
-
이게 전부입니다.
|
|
225
|
+
이게 전부입니다. 10분(소규모 프로젝트)에서 2시간(60도메인 이상 모노레포)까지, 모든 문서가 생성되어 바로 사용 가능합니다. CLI가 각 Pass 실행 시 퍼센트, 경과시간, 예상 남은시간이 포함된 프로그레스 바를 표시합니다. 프로젝트 크기별 상세 타이밍은 [프로젝트 규모별 자동 스케일링](#프로젝트-규모별-자동-스케일링) 참조.
|
|
226
226
|
|
|
227
227
|
### 수동 단계별 설치
|
|
228
228
|
|
|
@@ -249,11 +249,13 @@ mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.securi
|
|
|
249
249
|
# Skills
|
|
250
250
|
mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
|
|
251
251
|
|
|
252
|
-
# Guide,
|
|
252
|
+
# Guide, Database, MCP, Generated, Memory (v2.0.0: memory 추가 / v2.1.0: plan 제거)
|
|
253
253
|
mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
|
|
254
|
-
mkdir -p claudeos-core/{
|
|
254
|
+
mkdir -p claudeos-core/{database,mcp-guide,generated,memory}
|
|
255
255
|
```
|
|
256
256
|
|
|
257
|
+
> **v2.1.0 노트:** `claudeos-core/plan/` 디렉토리는 더 이상 생성되지 않습니다. Master plan은 Claude Code가 런타임에 읽지 않는 내부 백업이었고, 이를 집계하는 것이 `Prompt is too long` 실패를 유발했습니다. 백업·복원은 `git`을 사용하세요.
|
|
258
|
+
|
|
257
259
|
#### Step 3: plan-installer 실행 (프로젝트 분석)
|
|
258
260
|
|
|
259
261
|
프로젝트를 스캔하여 스택을 감지하고, 도메인을 찾고, 그룹으로 분할하고, 프롬프트를 생성합니다.
|
|
@@ -267,7 +269,8 @@ node claudeos-core-tools/plan-installer/index.js
|
|
|
267
269
|
- `domain-groups.json` — Pass 1용 도메인 그룹
|
|
268
270
|
- `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — 분석 프롬프트
|
|
269
271
|
- `pass2-prompt.md` — 통합 프롬프트
|
|
270
|
-
- `pass3-prompt.md` —
|
|
272
|
+
- `pass3-prompt.md` — Phase 1 "Read Once, Extract Facts" 블록(Rule A–E)이 prepend된 Pass 3 프롬프트 템플릿. 자동 파이프라인은 런타임에 Pass 3를 여러 스테이지로 분할하며, 이 템플릿은 각 스테이지에 공급됩니다.
|
|
273
|
+
- `pass3-context.json` — Pass 2 이후 생성되는 슬림 요약 파일 (< 5 KB). Pass 3 프롬프트가 전체 `pass2-merged.json` 대신 우선 참조합니다 (v2.1.0)
|
|
271
274
|
- `pass4-prompt.md` — L4 메모리 스캐폴딩 프롬프트 (v2.0.0; `60.memory/` 규칙 쓰기에도 동일한 `staging-override.md` 사용)
|
|
272
275
|
|
|
273
276
|
진행하기 전에 이 파일들을 검토하여 감지 정확도를 확인할 수 있습니다.
|
|
@@ -322,16 +325,35 @@ cat claudeos-core/generated/pass2-prompt.md \
|
|
|
322
325
|
|
|
323
326
|
**확인:** `claudeos-core/generated/pass2-merged.json`이 존재하고 9개 이상의 최상위 키가 있어야 합니다.
|
|
324
327
|
|
|
325
|
-
#### Step 6: Pass 3 — 전체 문서 생성
|
|
328
|
+
#### Step 6: Pass 3 — 전체 문서 생성 (여러 스테이지로 분할)
|
|
329
|
+
|
|
330
|
+
**v2.1.0 노트:** 자동 파이프라인은 Pass 3를 **항상 split 모드로 실행**합니다. 각 스테이지는 새 컨텍스트 윈도우를 가진 별개의 `claude -p` 호출이며, 프로젝트 크기와 무관하게 출력 누적 오버플로우가 구조적으로 불가능합니다. `pass3-prompt.md` 템플릿은 Claude에게 어떤 파일 서브셋을 출력할지 지시하는 `STAGE:` 디렉티브와 함께 스테이지별로 조립됩니다. 수동 모드에서는 여전히 전체 템플릿을 한 번에 Claude에 공급할 수 있지만, 이는 소규모 프로젝트(≤5 도메인)에서만 안정적으로 동작합니다. 그 이상은 `npx claudeos-core init`을 사용하여 split 러너가 스테이지 오케스트레이션을 처리하도록 하세요.
|
|
331
|
+
|
|
332
|
+
**단일 호출 모드 (소규모 프로젝트 전용, ≤5 도메인):**
|
|
326
333
|
|
|
327
334
|
```bash
|
|
328
335
|
cat claudeos-core/generated/pass3-prompt.md \
|
|
329
336
|
| claude -p --dangerously-skip-permissions
|
|
330
337
|
```
|
|
331
338
|
|
|
332
|
-
|
|
339
|
+
**스테이지별 모드 (모든 프로젝트 크기에 권장):**
|
|
340
|
+
|
|
341
|
+
자동 파이프라인은 아래 스테이지들을 실행합니다:
|
|
342
|
+
|
|
343
|
+
| 스테이지 | 작성 대상 | 비고 |
|
|
344
|
+
|---|---|---|
|
|
345
|
+
| `3a` | `pass3a-facts.md` (5–10 KB 증류 팩트 시트) | `pass2-merged.json`을 한 번 읽음; 이후 스테이지들은 이 파일을 참조 |
|
|
346
|
+
| `3b-core` | `CLAUDE.md`, 공통 `standard/`, 공통 `.claude/rules/` | 프로젝트 전역 파일; 도메인별 출력 없음 |
|
|
347
|
+
| `3b-1..N` | 도메인별 `standard/60.domains/*.md` + 도메인 규칙 | 스테이지당 ≤15 도메인 배치 (16도메인 이상에서 자동 분할) |
|
|
348
|
+
| `3c-core` | `guide/` (9개 파일), `skills/00.shared/MANIFEST.md`, `skills/*/` 오케스트레이터 | 공유 skills와 사용자 대면 가이드 전체 |
|
|
349
|
+
| `3c-1..N` | `skills/20.frontend-page/scaffold-page-feature/` 하위 도메인 sub-skills | 스테이지당 ≤15 도메인 배치 |
|
|
350
|
+
| `3d-aux` | `database/`, `mcp-guide/` | 고정 크기; 도메인 수와 무관 |
|
|
333
351
|
|
|
334
|
-
|
|
352
|
+
1–15 도메인 프로젝트는 4스테이지로 확장됩니다 (`3a`, `3b-core`, `3c-core`, `3d-aux` — 배치 분할 없음). 16–30 도메인은 8스테이지 (`3b`와 `3c`가 각각 2배치로 분할). 전체 표는 [프로젝트 규모별 자동 스케일링](#프로젝트-규모별-자동-스케일링) 참조.
|
|
353
|
+
|
|
354
|
+
**확인:** 프로젝트 루트에 `CLAUDE.md`가 존재해야 하고, `claudeos-core/generated/pass3-complete.json` 마커가 작성되어야 합니다. split 모드에서는 마커에 `mode: "split"`와 완료된 모든 스테이지를 나열하는 `groupsCompleted` 배열이 포함됩니다 — partial-marker 로직은 이 배열을 읽어 크래시 이후 정확한 스테이지에서 재개하며, `3a`부터 재시작하는 것을 방지해 토큰 비용을 절약합니다.
|
|
355
|
+
|
|
356
|
+
> **Staging 노트:** Pass 3는 Claude Code의 sensitive-path 정책이 `.claude/`에 직접 쓰기를 차단하기 때문에 규칙 파일을 `claudeos-core/generated/.staged-rules/`에 먼저 씁니다. 자동 파이프라인은 각 스테이지 이후 이동을 자동 처리합니다. 스테이지를 수동으로 실행하면 staged 트리를 직접 이동해야 합니다: `mv claudeos-core/generated/.staged-rules/* .claude/rules/` (하위 경로 보존).
|
|
335
357
|
|
|
336
358
|
#### Step 7: Pass 4 — 메모리 스캐폴딩
|
|
337
359
|
|
|
@@ -340,7 +362,9 @@ cat claudeos-core/generated/pass4-prompt.md \
|
|
|
340
362
|
| claude -p --dangerously-skip-permissions
|
|
341
363
|
```
|
|
342
364
|
|
|
343
|
-
**확인:** `claudeos-core/memory/`에 4개 파일(`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`)이 있고, `.claude/rules/60.memory/`에 4개 규칙 파일이 있으며, `
|
|
365
|
+
**확인:** `claudeos-core/memory/`에 4개 파일(`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`)이 있고, `.claude/rules/60.memory/`에 4개 규칙 파일이 있으며, `CLAUDE.md`에 `## Memory (L4)` 섹션이 추가되어야 합니다. 마커: `claudeos-core/generated/pass4-memory.json`.
|
|
366
|
+
|
|
367
|
+
> **v2.1.0 gap-fill:** Pass 4는 `claudeos-core/skills/00.shared/MANIFEST.md`의 존재도 보장합니다. Pass 3c가 이를 생략한 경우(skill-sparse 프로젝트에서 가능 — 스택 `pass3.md` 템플릿들이 `MANIFEST.md`를 생성 대상으로 나열하지만 REQUIRED로 표시하지 않음), gap-fill이 최소 스텁을 생성하여 `.claude/rules/50.sync/03.skills-sync.md`가 항상 유효한 참조 대상을 갖도록 합니다. Idempotent: 파일이 이미 실제 내용(20자 초과)을 가지고 있으면 스킵합니다.
|
|
344
368
|
|
|
345
369
|
> **참고:** `claude -p`가 실패하거나 `pass4-prompt.md`가 없으면, 자동 파이프라인은 `lib/memory-scaffold.js`를 통한 정적 스캐폴드로 폴백합니다(`--lang`이 비영어일 때 Claude-driven 번역 포함). 정적 폴백은 `npx claudeos-core init` 내부에서만 실행됩니다 — 수동 모드에서는 Pass 4가 성공해야 합니다.
|
|
346
370
|
|
|
@@ -396,31 +420,42 @@ ls .claude/rules/*/
|
|
|
396
420
|
```
|
|
397
421
|
npx claudeos-core init
|
|
398
422
|
│
|
|
399
|
-
├── [1] npm install
|
|
400
|
-
├── [2] 디렉토리 구조 생성
|
|
401
|
-
├── [3] plan-installer (Node.js)
|
|
423
|
+
├── [1] npm install ← 의존성 설치 (~10초)
|
|
424
|
+
├── [2] 디렉토리 구조 생성 ← 폴더 생성 (~1초)
|
|
425
|
+
├── [3] plan-installer (Node.js) ← 프로젝트 스캔 (~5초)
|
|
402
426
|
│ ├── 스택 자동 감지 (멀티스택 지원)
|
|
403
427
|
│ ├── 도메인 목록 추출 (backend/frontend 태깅)
|
|
404
428
|
│ ├── 도메인 그룹 자동 분할 (타입별)
|
|
429
|
+
│ ├── pass3-context.json 생성 (슬림 요약, v2.1.0)
|
|
405
430
|
│ └── 스택별 프롬프트 선택 (타입별)
|
|
406
431
|
│
|
|
407
|
-
├── [4] Pass 1 × N (claude -p)
|
|
432
|
+
├── [4] Pass 1 × N (claude -p) ← 코드 심층 분석 (~2-8분)
|
|
408
433
|
│ ├── ⚙️ 백엔드 그룹 → 백엔드 분석 프롬프트
|
|
409
434
|
│ └── 🎨 프론트엔드 그룹 → 프론트엔드 분석 프롬프트
|
|
410
435
|
│
|
|
411
|
-
├── [5] Pass 2 × 1 (claude -p)
|
|
412
|
-
│ └── 전체 Pass 1
|
|
436
|
+
├── [5] Pass 2 × 1 (claude -p) ← 분석 결과 통합 (~1분)
|
|
437
|
+
│ └── 전체 Pass 1 결과를 pass2-merged.json으로 통합
|
|
413
438
|
│
|
|
414
|
-
├── [6] Pass 3
|
|
415
|
-
│
|
|
439
|
+
├── [6] Pass 3 (split 모드, v2.1.0) ← 전체 생성
|
|
440
|
+
│ │
|
|
441
|
+
│ ├── 3a × 1 (claude -p) ← 팩트 추출 (~5-10분)
|
|
442
|
+
│ │ └── pass2-merged.json 1회 읽기 → pass3a-facts.md
|
|
443
|
+
│ │
|
|
444
|
+
│ ├── 3b-core × 1 (claude -p) ← CLAUDE.md + 공통 standard/rules
|
|
445
|
+
│ ├── 3b-1..N × N (claude -p) ← 도메인 standards/rules (배치당 ≤15 도메인)
|
|
446
|
+
│ │
|
|
447
|
+
│ ├── 3c-core × 1 (claude -p) ← Guides + 공유 skills + MANIFEST.md
|
|
448
|
+
│ ├── 3c-1..N × N (claude -p) ← 도메인 sub-skills (배치당 ≤15 도메인)
|
|
449
|
+
│ │
|
|
450
|
+
│ └── 3d-aux × 1 (claude -p) ← database/ + mcp-guide/ 스텁
|
|
416
451
|
│
|
|
417
|
-
├── [7] Pass 4 × 1 (claude -p)
|
|
452
|
+
├── [7] Pass 4 × 1 (claude -p) ← 메모리 스캐폴딩 (~30초-5분)
|
|
418
453
|
│ ├── memory/ 시드 (decision-log, failure-patterns, …)
|
|
419
454
|
│ ├── 60.memory/ 규칙 생성
|
|
420
455
|
│ ├── CLAUDE.md에 "Memory (L4)" 섹션 추가
|
|
421
|
-
│ └──
|
|
456
|
+
│ └── Gap-fill: skills/00.shared/MANIFEST.md 존재 보장 (v2.1.0)
|
|
422
457
|
│
|
|
423
|
-
└── [8] 검증
|
|
458
|
+
└── [8] 검증 ← health checker 자동 실행
|
|
424
459
|
```
|
|
425
460
|
|
|
426
461
|
### 왜 4 Pass인가?
|
|
@@ -429,9 +464,17 @@ npx claudeos-core init
|
|
|
429
464
|
|
|
430
465
|
**Pass 2**는 모든 Pass 1 결과를 통합 분석으로 병합합니다: 공통 패턴 (100% 공유), 다수 패턴 (50%+ 공유), 도메인 특화 패턴, 심각도별 안티패턴, 횡단 관심사 (명명, 보안, DB, 테스트, 로깅, 성능). 백엔드와 프론트엔드 결과가 함께 병합됩니다.
|
|
431
466
|
|
|
432
|
-
**Pass 3
|
|
467
|
+
**Pass 3** (split 모드, v2.1.0)는 병합된 분석을 기반으로 여러 순차 `claude -p` 호출을 통해 전체 파일 생태계(CLAUDE.md, rules, standards, skills, guides)를 생성합니다. 핵심 통찰: 출력 누적 오버플로우는 입력 크기로부터 예측 불가능합니다 — 단일 호출 Pass 3는 2도메인에서는 잘 동작하다가 ~5도메인에서 안정적으로 실패했고, 실패 경계는 각 파일이 얼마나 verbose한지에 따라 달라졌습니다. Split 모드는 이를 구조적으로 회피합니다 — 각 스테이지는 새 컨텍스트 윈도우에서 시작하고 제한된 파일 서브셋만 작성합니다. 단일 호출의 주요 장점이었던 스테이지 간 일관성은 `pass3a-facts.md`(5–10 KB 증류 팩트 시트)로 보존되며, 이후 모든 스테이지가 이를 참조합니다.
|
|
468
|
+
|
|
469
|
+
Pass 3 프롬프트 템플릿에는 출력 볼륨을 추가로 제약하는 **Phase 1 "Read Once, Extract Facts" 블록**(5가지 규칙)도 포함됩니다:
|
|
470
|
+
|
|
471
|
+
- **Rule A** — 팩트 테이블 참조; `pass2-merged.json` 재독 금지.
|
|
472
|
+
- **Rule B** — Idempotent 파일 쓰기 (대상이 실제 내용을 가지고 존재하면 스킵), Pass 3를 중단 후 안전하게 재실행 가능.
|
|
473
|
+
- **Rule C** — 팩트 테이블을 단일 진실 원천으로 삼아 파일 간 일관성 강제.
|
|
474
|
+
- **Rule D** — 출력 간결성: 파일 쓰기 사이에 한 줄(`[WRITE]`/`[SKIP]`)만, 팩트 테이블 반복 금지, 파일 내용 에코 금지.
|
|
475
|
+
- **Rule E** — 배치 idempotent 체크: PHASE 2 시작 시 `Glob` 1회로 대상별 `Read` 호출 대체.
|
|
433
476
|
|
|
434
|
-
**Pass 4**는 L4
|
|
477
|
+
**Pass 4**는 L4 Memory 레이어를 스캐폴딩합니다: 지속 팀 지식 파일들(decision-log, failure-patterns, compaction policy, auto-rule-update)과 향후 세션에 이 파일들을 언제 어떻게 읽고 쓸지 지시하는 `60.memory/` 규칙들. 메모리 레이어는 Claude Code가 세션마다 교훈을 재발견하는 대신 누적할 수 있게 해주는 핵심입니다. `--lang`이 비영어일 때는 폴백 정적 콘텐츠가 Claude를 통해 번역된 후 작성됩니다. v2.1.0은 Pass 3c가 `skills/00.shared/MANIFEST.md`를 생략한 경우의 gap-fill을 추가합니다.
|
|
435
478
|
|
|
436
479
|
---
|
|
437
480
|
|
|
@@ -459,23 +502,30 @@ your-project/
|
|
|
459
502
|
│ │ ├── pass1-backend-prompt.md ← 백엔드 분석 프롬프트
|
|
460
503
|
│ │ ├── pass1-frontend-prompt.md ← 프론트엔드 분석 프롬프트 (감지 시)
|
|
461
504
|
│ │ ├── pass2-prompt.md ← 통합 프롬프트
|
|
462
|
-
│ │ ├──
|
|
505
|
+
│ │ ├── pass2-merged.json ← Pass 2 출력 (Pass 3a만 소비)
|
|
506
|
+
│ │ ├── pass3-context.json ← Pass 3용 슬림 요약 (< 5 KB, v2.1.0)
|
|
507
|
+
│ │ ├── pass3-prompt.md ← Pass 3 프롬프트 템플릿 (Phase 1 블록 prepend)
|
|
508
|
+
│ │ ├── pass3a-facts.md ← Pass 3a가 작성, 3b/3c/3d가 읽는 팩트 시트 (v2.1.0)
|
|
463
509
|
│ │ ├── pass4-prompt.md ← 메모리 스캐폴딩 프롬프트 (v2.0.0)
|
|
464
|
-
│ │ ├── pass3-complete.json ← Pass 3 완료 마커 (
|
|
510
|
+
│ │ ├── pass3-complete.json ← Pass 3 완료 마커 (split 모드: groupsCompleted 포함, v2.1.0)
|
|
465
511
|
│ │ ├── pass4-memory.json ← Pass 4 완료 마커 (재실행 시 스킵)
|
|
512
|
+
│ │ ├── rule-manifest.json ← 검증 도구용 파일 인덱스
|
|
513
|
+
│ │ ├── sync-map.json ← Plan ↔ 디스크 매핑 (v2.1.0에선 비어있음; sync-checker 호환성 유지)
|
|
514
|
+
│ │ ├── stale-report.json ← 통합 검증 결과
|
|
466
515
|
│ │ ├── .i18n-cache-<lang>.json ← 번역 캐시 (비영어 `--lang`)
|
|
467
516
|
│ │ └── .staged-rules/ ← `.claude/rules/` 쓰기용 임시 스테이징 디렉토리 (자동 이동/정리)
|
|
468
|
-
│ ├── standard/ ← 코딩 표준 (15-19개 파일)
|
|
517
|
+
│ ├── standard/ ← 코딩 표준 (15-19개 파일 + 60.domains/ 하위 도메인별)
|
|
469
518
|
│ │ ├── 00.core/ ← 개요, 아키텍처, 명명 규칙
|
|
470
519
|
│ │ ├── 10.backend-api/ ← API 패턴 (스택별)
|
|
471
520
|
│ │ ├── 20.frontend-ui/ ← 프론트엔드 패턴 (감지 시)
|
|
472
521
|
│ │ ├── 30.security-db/ ← 보안, DB 스키마, 유틸리티
|
|
473
522
|
│ │ ├── 40.infra/ ← 설정, 로깅, CI/CD
|
|
474
523
|
│ │ ├── 50.verification/ ← 빌드 검증, 테스트
|
|
524
|
+
│ │ ├── 60.domains/ ← 도메인별 표준 (Pass 3b-N이 작성, v2.1.0)
|
|
475
525
|
│ │ └── 90.optional/ ← 선택적 규칙 (스택별 추가)
|
|
476
|
-
│ ├── skills/ ← CRUD 스캐폴딩
|
|
526
|
+
│ ├── skills/ ← CRUD/페이지 스캐폴딩 skills
|
|
527
|
+
│ │ └── 00.shared/MANIFEST.md ← 등록된 skill의 단일 진실 원천
|
|
477
528
|
│ ├── guide/ ← 온보딩, FAQ, 트러블슈팅 (9개 파일)
|
|
478
|
-
│ ├── plan/ ← 마스터 플랜 (백업/복원)
|
|
479
529
|
│ ├── database/ ← DB 스키마, 마이그레이션 가이드
|
|
480
530
|
│ ├── mcp-guide/ ← MCP 서버 연동 가이드
|
|
481
531
|
│ └── memory/ ← L4: 팀 지식 (4개 파일) — 커밋 대상
|
|
@@ -489,6 +539,8 @@ your-project/
|
|
|
489
539
|
|
|
490
540
|
모든 standard 파일은 ✅ 올바른 예시, ❌ 잘못된 예시, 규칙 요약 테이블을 포함합니다 — 제네릭 템플릿이 아닌 실제 코드 패턴에서 추출됩니다.
|
|
491
541
|
|
|
542
|
+
> **v2.1.0 노트:** `claudeos-core/plan/`은 더 이상 생성되지 않습니다. Master plan은 Claude Code가 런타임에 소비하지 않는 내부 백업이었고, Pass 3에서 이를 집계하는 것이 출력 누적 오버플로우의 주요 원인이었습니다. 백업·복원은 `git`을 사용하세요. v2.0.x에서 업그레이드하는 프로젝트는 기존 `claudeos-core/plan/` 디렉토리를 안전하게 삭제할 수 있습니다.
|
|
543
|
+
|
|
492
544
|
### Gitignore 권장사항
|
|
493
545
|
|
|
494
546
|
**커밋 대상** (팀 지식 — 공유 목적):
|
|
@@ -508,16 +560,22 @@ claudeos-core/generated/
|
|
|
508
560
|
|
|
509
561
|
---
|
|
510
562
|
|
|
511
|
-
## 규모별 자동
|
|
563
|
+
## 프로젝트 규모별 자동 스케일링
|
|
564
|
+
|
|
565
|
+
Pass 3 split 모드는 도메인 수에 비례하여 스테이지 수가 증가합니다. 배치 하위 분할은 16도메인부터 작동하여 각 스테이지의 출력을 ~50 파일 이하로 유지합니다 — 이는 `claude -p`가 출력 누적 오버플로우 없이 처리할 수 있는 경험적 안전 범위입니다.
|
|
512
566
|
|
|
513
|
-
| 규모 | 도메인 수 | Pass
|
|
567
|
+
| 프로젝트 규모 | 도메인 수 | Pass 3 스테이지 | 총 `claude -p` | 예상 시간 |
|
|
514
568
|
|---|---|---|---|---|
|
|
515
|
-
| 소규모 | 1–4 |
|
|
516
|
-
| 중규모 | 5–
|
|
517
|
-
| 대규모 |
|
|
518
|
-
| 초대규모 |
|
|
569
|
+
| 소규모 | 1–4 | 4 (`3a`, `3b-core`, `3c-core`, `3d-aux`) | 7 (Pass 1 + 2 + Pass 3의 4스테이지 + Pass 4) | ~10–15분 |
|
|
570
|
+
| 중규모 | 5–15 | 4 | 8–9 | ~25–45분 |
|
|
571
|
+
| 대규모 | 16–30 | **8** (3b, 3c 각각 2배치로 분할) | 11–12 | **~60–105분** |
|
|
572
|
+
| 초대규모 | 31–45 | 10 | 13–14 | ~100–150분 |
|
|
573
|
+
| 초초대규모 | 46–60 | 12 | 15–16 | ~150–200분 |
|
|
574
|
+
| 최대규모 | 61+ | 14+ | 17+ | 200분+ |
|
|
575
|
+
|
|
576
|
+
스테이지 수 공식 (배치 적용 시): `1 (3a) + 1 (3b-core) + N (3b-1..N) + 1 (3c-core) + N (3c-1..N) + 1 (3d-aux) = 2N + 4`, 여기서 `N = ceil(totalDomains / 15)`.
|
|
519
577
|
|
|
520
|
-
Pass 4(메모리 스캐폴딩)는
|
|
578
|
+
Pass 4(메모리 스캐폴딩)는 Claude-driven 생성 또는 정적 폴백 중 어느 것이 실행되는지에 따라 ~30초–5분을 추가합니다. 멀티스택 프로젝트(예: Java + React)에서는 백엔드와 프론트엔드 도메인이 합산됩니다. 백엔드 6개 + 프론트엔드 4개 = 총 10개로 중규모 등급입니다.
|
|
521
579
|
|
|
522
580
|
---
|
|
523
581
|
|
|
@@ -543,11 +601,11 @@ node claudeos-core-tools/sync-checker/index.js
|
|
|
543
601
|
|
|
544
602
|
| 도구 | 역할 |
|
|
545
603
|
|---|---|
|
|
546
|
-
| **manifest-generator** | 메타데이터 JSON 생성 (rule-manifest
|
|
547
|
-
| **plan-validator** |
|
|
548
|
-
| **sync-checker** | 미등록 파일 (디스크에 있지만 Plan에 없는) 및 고아 항목 탐지 — 7개 디렉토리 커버 (v2.0.0에서 `memory/` 추가) |
|
|
604
|
+
| **manifest-generator** | 메타데이터 JSON 생성 (`rule-manifest.json`, `sync-map.json`, `stale-report.json` 초기화); `memory/` 포함 7개 디렉토리 인덱싱 (`totalMemory` 요약). v2.1.0: master plan 제거에 따라 `plan-manifest.json`은 더 이상 생성되지 않습니다. |
|
|
605
|
+
| **plan-validator** | `claudeos-core/plan/`이 남아있는 프로젝트(레거시 업그레이드 케이스)를 위해 master plan `<file>` 블록과 디스크 비교. v2.1.0: `plan/`이 없거나 비어있을 때 `plan-sync-status.json` 생성을 스킵 — `stale-report.json`은 여전히 passing no-op을 기록. |
|
|
606
|
+
| **sync-checker** | 미등록 파일 (디스크에 있지만 Plan에 없는) 및 고아 항목 탐지 — 7개 디렉토리 커버 (v2.0.0에서 `memory/` 추가). `sync-map.json`에 매핑이 없을 때 정상 종료 (v2.1.0 기본 상태). |
|
|
549
607
|
| **content-validator** | 9섹션 품질 검증 — 빈 파일, ✅/❌ 예시 누락, 필수 섹션 + L4 메모리 스캐폴드 무결성 (decision-log 헤딩 날짜, failure-pattern 필수 필드, fence-aware 파싱) |
|
|
550
|
-
| **pass-json-validator** | Pass 1–4 JSON 구조 + `pass3-complete.json` 및 `pass4-memory.json` 완료 마커 검증 |
|
|
608
|
+
| **pass-json-validator** | Pass 1–4 JSON 구조 + `pass3-complete.json` (split 모드 형식, v2.1.0) 및 `pass4-memory.json` 완료 마커 검증 |
|
|
551
609
|
|
|
552
610
|
---
|
|
553
611
|
|
|
@@ -584,7 +642,7 @@ standard-reference 규칙의 `DO NOT Read` 섹션으로 명시적으로 제외
|
|
|
584
642
|
|
|
585
643
|
| 폴더 | 제외 이유 |
|
|
586
644
|
|---|---|
|
|
587
|
-
| `claudeos-core/plan/` | Master
|
|
645
|
+
| `claudeos-core/plan/` | 레거시 프로젝트(v2.0.x 이하)의 Master plan 백업. v2.1.0에서는 생성되지 않음. 존재하더라도 Claude Code는 자동 로드하지 않음 — 온디맨드 읽기만. |
|
|
588
646
|
| `claudeos-core/generated/` | 빌드 메타데이터 JSON, 프롬프트, Pass 마커, 번역 캐시, `.staged-rules/`. 코딩 참조 아님. |
|
|
589
647
|
| `claudeos-core/guide/` | 사람을 위한 온보딩 가이드. |
|
|
590
648
|
| `claudeos-core/mcp-guide/` | MCP 서버 문서. 코딩 참조 아님. |
|
|
@@ -616,7 +674,11 @@ npx claudeos-core health
|
|
|
616
674
|
### 문서가 깨졌을 때
|
|
617
675
|
|
|
618
676
|
```bash
|
|
619
|
-
#
|
|
677
|
+
# v2.1.0 권장: git으로 복원 (master plan이 더 이상 생성되지 않으므로).
|
|
678
|
+
# 생성된 문서를 정기적으로 커밋하면 재생성 없이 특정 파일만 롤백 가능:
|
|
679
|
+
git checkout HEAD -- .claude/rules/ claudeos-core/
|
|
680
|
+
|
|
681
|
+
# 레거시 (claudeos-core/plan/이 여전히 남아있는 v2.0.x 프로젝트):
|
|
620
682
|
npx claudeos-core restore
|
|
621
683
|
```
|
|
622
684
|
|
|
@@ -643,8 +705,13 @@ npx claudeos-core memory propose-rules
|
|
|
643
705
|
# confidence 계산 (가중 증거에 sigmoid × anchor 배수)
|
|
644
706
|
# memory/auto-rule-update.md에 제안 작성 (자동 적용 안 됨)
|
|
645
707
|
# Confidence ≥ 0.70은 진지한 검토 가치; 수락 → 규칙 편집 + 결정 로그 기록
|
|
708
|
+
|
|
709
|
+
# v2.1.0: `memory --help`가 이제 서브커맨드 help로 라우팅됩니다 (이전엔 top-level 표시)
|
|
710
|
+
npx claudeos-core memory --help
|
|
646
711
|
```
|
|
647
712
|
|
|
713
|
+
> **v2.1.0 수정:** `memory score`가 첫 실행 후 중복 `importance` 라인을 남기지 않습니다 (이전엔 auto-scored 라인이 위에 추가되고 원본 plain 라인이 아래 남음). `memory compact`의 Stage 1 summary 마커가 이제 올바른 markdown 리스트 항목(`- _Summarized on ..._`)이므로 렌더링이 깔끔하고 다음 compact 실행 시 올바르게 재파싱됩니다.
|
|
714
|
+
|
|
648
715
|
메모리에 쓰는 시점 (Claude가 온디맨드 처리하지만, 수동 편집도 가능):
|
|
649
716
|
- **`decision-log.md`** — 경쟁 패턴 중 선택, 라이브러리 선정, 팀 컨벤션 정의, "NOT to do" 결정 시 새 항목 추가. Append-only; 기존 항목 수정 금지.
|
|
650
717
|
- **`failure-patterns.md`** — 반복 에러나 비명확한 근본 원인의 **두 번째 발생** 시 추가. 첫 발생은 항목 불필요.
|
|
@@ -707,19 +774,21 @@ ClaudeOS-Core로 프로젝트 규칙을 생성한 뒤, ECC나 Harness를 그 위
|
|
|
707
774
|
아니요. `CLAUDE.md`, `.claude/rules/`, `claudeos-core/`만 생성합니다. 기존 코드는 절대 수정하지 않습니다.
|
|
708
775
|
|
|
709
776
|
**Q: 비용이 얼마나 드나요?**
|
|
710
|
-
`claude -p`를 4–
|
|
777
|
+
4 Pass에 걸쳐 `claude -p`를 여러 번 호출합니다. v2.1.0 split 모드에서는 Pass 3만 해도 프로젝트 크기에 따라 4–14+ 스테이지로 확장됩니다 (자세히는 [프로젝트 규모별 자동 스케일링](#프로젝트-규모별-자동-스케일링) 참조). 일반적으로 소규모 프로젝트(1–15 도메인)는 총 8–9회, 18 도메인 프로젝트는 11회, 60 도메인 프로젝트는 15–17회의 `claude -p` 호출을 사용합니다. 각 스테이지는 새 컨텍스트 윈도우에서 실행되므로 호출당 토큰 비용은 실제로 단일 호출 Pass 3보다 낮습니다 — 어떤 스테이지도 전체 파일 트리를 한 컨텍스트에 담지 않기 때문입니다. `--lang`이 비영어이면 정적 폴백 경로가 번역을 위해 추가로 몇 번 호출할 수 있지만, 결과는 `claudeos-core/generated/.i18n-cache-<lang>.json`에 캐시되어 이후 실행에서 재사용됩니다. 일반적인 Claude Code 사용량 내에서 처리됩니다.
|
|
711
778
|
|
|
779
|
+
**Q: Pass 3 split 모드가 무엇이고 왜 v2.1.0에 추가됐나요?**
|
|
780
|
+
v2.1.0 이전에는 Pass 3가 전체 생성 파일 트리(`CLAUDE.md`, standards, rules, skills, guides — 보통 30–60개 파일)를 한 응답에 출력해야 하는 단일 `claude -p` 호출이었습니다. 소규모 프로젝트에서는 동작했지만 ~5도메인부터 `Prompt is too long` 출력 누적 실패가 안정적으로 발생했습니다. 이 실패는 입력 크기로부터 예측 불가능 — 각 생성 파일이 얼마나 verbose한지에 따라 달라졌고, 같은 프로젝트에서도 간헐적으로 발생할 수 있었습니다. Split 모드는 이를 구조적으로 회피합니다: Pass 3가 순차 스테이지들(`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`)로 분할되고, 각각은 새 컨텍스트 윈도우를 가진 별개의 `claude -p` 호출입니다. 스테이지 간 일관성은 `pass3a-facts.md`(5–10 KB 증류 팩트 시트)로 보존되며, 이후 모든 스테이지가 `pass2-merged.json` 재독 대신 이를 참조합니다. `pass3-complete.json` 마커는 `groupsCompleted` 배열을 가지므로 `3c-2`에서 크래시되어도 `3c-2`부터 재개되어(`3a`가 아니라) 토큰 비용 두 배 증가를 방지합니다.
|
|
712
781
|
**Q: 생성된 파일을 Git에 커밋해야 하나요?**
|
|
713
782
|
네, 권장합니다. 팀원 전체가 동일한 Claude Code 표준을 공유할 수 있습니다. `claudeos-core/generated/`는 `.gitignore`에 추가하는 것을 권장합니다 (분석 JSON은 재생성 가능).
|
|
714
783
|
|
|
715
784
|
**Q: 멀티스택 프로젝트(예: Java 백엔드 + React 프론트엔드)는?**
|
|
716
|
-
완전 지원됩니다. ClaudeOS-Core가 두 스택을 자동 감지하고, 도메인을 `backend`/`frontend`로 태깅하여 각각 스택별 분석 프롬프트를 사용합니다. Pass 2에서 통합하고, Pass 3
|
|
785
|
+
완전 지원됩니다. ClaudeOS-Core가 두 스택을 자동 감지하고, 도메인을 `backend`/`frontend`로 태깅하여 각각 스택별 분석 프롬프트를 사용합니다. Pass 2에서 통합하고, Pass 3는 분할된 스테이지들에 걸쳐 백엔드와 프론트엔드 표준을 모두 생성합니다 — 백엔드 도메인은 일부 3b/3c 배치로, 프론트엔드 도메인은 다른 배치로 들어가며, 모두 같은 `pass3a-facts.md`를 일관성을 위해 참조합니다.
|
|
717
786
|
|
|
718
787
|
**Q: Turborepo / pnpm workspaces / Lerna 모노레포에서도 작동하나요?**
|
|
719
788
|
네. ClaudeOS-Core는 `turbo.json`, `pnpm-workspace.yaml`, `lerna.json`, `package.json#workspaces`를 감지하고 서브 패키지 `package.json`에서 프레임워크/ORM/DB 의존성을 자동으로 스캔합니다. 도메인 스캔은 `apps/*/src/`와 `packages/*/src/` 패턴을 지원합니다. 모노레포 루트에서 실행하세요.
|
|
720
789
|
|
|
721
790
|
**Q: 재실행하면 어떻게 되나요?**
|
|
722
|
-
이전 Pass 1/2 결과가 존재하면 인터랙티브 프롬프트가 표시됩니다: **Continue** (중단된 곳에서 재개) 또는 **Fresh** (전부 삭제 후 새로 시작). `--force`를 사용하면 프롬프트 없이 항상 새로 시작합니다. Pass 3
|
|
791
|
+
이전 Pass 1/2 결과가 존재하면 인터랙티브 프롬프트가 표시됩니다: **Continue** (중단된 곳에서 재개) 또는 **Fresh** (전부 삭제 후 새로 시작). `--force`를 사용하면 프롬프트 없이 항상 새로 시작합니다. v2.1.0 split 모드에서 Pass 3 재개는 스테이지 단위로 작동합니다 — 실행이 `3c-2` 중 크래시되면 다음 `init`이 `3c-2`부터 재개됩니다 (`3a`부터 재시작 시 토큰 비용이 두 배가 됨). `pass3-complete.json` 마커가 `mode: "split"`과 `groupsCompleted` 배열을 기록하여 이 로직을 구동합니다.
|
|
723
792
|
|
|
724
793
|
**Q: NestJS는 전용 템플릿이 있나요, 아니면 Express 템플릿을 사용하나요?**
|
|
725
794
|
NestJS는 NestJS 전용 분석 카테고리가 포함된 `node-nestjs` 전용 템플릿을 사용합니다: `@Module`, `@Injectable`, `@Controller` 데코레이터, Guards, Pipes, Interceptors, DI 컨테이너, CQRS 패턴, `Test.createTestingModule`. Express 프로젝트는 별도의 `node-express` 템플릿을 사용합니다.
|
|
@@ -746,10 +815,16 @@ ClaudeOS-Core는 중첩 깊이에 관계없이 모든 서브모듈(`**/src/main/
|
|
|
746
815
|
위의 [메모리 레이어 유지보수](#메모리-레이어-유지보수-v200) 섹션 참조. 요약: `compact`는 4단계 정책 실행(요약 → 병합 → 드롭 → 400줄 제한); `score`는 `failure-patterns.md`를 중요도(frequency × recency)로 재랭킹; `propose-rules`는 반복 실패에서 규칙 후보를 `auto-rule-update.md`에 도출 (자동 적용 안 됨 — 수동 검토/수락/거부).
|
|
747
816
|
|
|
748
817
|
**Q: `--force` (또는 "fresh" 재개 모드)는 왜 `.claude/rules/`를 삭제하나요?**
|
|
749
|
-
v2.0.0에 Pass 3 silent-failure 가드가 3개 추가됨 (Guard 3는 두 변종 커버: `guide/` 대상 H2와 `standard/skills
|
|
818
|
+
v2.0.0에 Pass 3 silent-failure 가드가 3개 추가됨 (Guard 3는 두 변종 커버: `guide/` 대상 H2와 `standard/skills` 대상 H1). Guard 1("부분 staged-rules 이동")과 Guard 3("불완전 출력 — 누락/빈 guide 파일 또는 누락된 standard 센티넬 / 빈 skills")는 기존 규칙에 의존하지 않지만, Guard 2("zero rules 감지")는 의존 — Claude가 `staging-override.md` 디렉티브를 무시하고 `.claude/`에 직접 쓰려 할 때 발동 (Claude Code의 sensitive-path 정책이 차단). 이전 실행의 stale 규칙이 Guard 2를 false-negative 만들 수 있어 — `--force`/`fresh`가 `.claude/rules/`를 삭제하여 깨끗한 감지 보장. **수동 편집한 규칙 파일은 손실됨** (`--force`/`fresh` 하에서); 필요 시 사전 백업. (v2.1.0 노트: Guard 3 H1은 master plan이 더 이상 생성되지 않으므로 `plan/`을 검사하지 않습니다.)
|
|
750
819
|
|
|
751
820
|
**Q: `claudeos-core/generated/.staged-rules/`는 무엇이고 왜 존재하나요?**
|
|
752
|
-
Claude Code의 sensitive-path 정책이 `claude -p` 서브프로세스에서 `.claude/`에 직접 쓰는 것을 거부합니다 (`--dangerously-skip-permissions`에도). v2.0.0은 Pass 3/4 프롬프트가 모든 `.claude/rules/` 쓰기를 스테이징 디렉토리로 리다이렉트하게 하여 이 문제를 우회합니다; Node.js 오케스트레이터(해당 정책 미적용)가 각 Pass 후 staged 트리를 `.claude/rules/`로 이동합니다. 사용자에게 투명 — 디렉토리 자동 생성/정리/이동. 이전 실행이 이동 중 크래시되면 다음 실행이 재시도 전 staging dir를 정리합니다.
|
|
821
|
+
Claude Code의 sensitive-path 정책이 `claude -p` 서브프로세스에서 `.claude/`에 직접 쓰는 것을 거부합니다 (`--dangerously-skip-permissions`에도). v2.0.0은 Pass 3/4 프롬프트가 모든 `.claude/rules/` 쓰기를 스테이징 디렉토리로 리다이렉트하게 하여 이 문제를 우회합니다; Node.js 오케스트레이터(해당 정책 미적용)가 각 Pass 후 staged 트리를 `.claude/rules/`로 이동합니다. 사용자에게 투명 — 디렉토리 자동 생성/정리/이동. 이전 실행이 이동 중 크래시되면 다음 실행이 재시도 전 staging dir를 정리합니다. v2.1.0 split 모드에서는 스테이지 러너가 모든 스테이지 이후(마지막뿐 아니라) staged 규칙을 `.claude/rules/`로 이동하므로, Pass 3 중간 크래시에도 이전 스테이지 완료분의 규칙이 남아있습니다.
|
|
822
|
+
|
|
823
|
+
**Q: `npx claudeos-core init` 대신 Pass 3를 수동으로 실행할 수 있나요?**
|
|
824
|
+
소규모 프로젝트(≤5 도메인)라면 네 — [Step 6](#step-6-pass-3--전체-문서-생성-여러-스테이지로-분할)의 단일 호출 수동 지침이 여전히 동작합니다. 더 큰 프로젝트라면 `npx claudeos-core init`을 사용해야 합니다 — split 러너가 새 컨텍스트 스테이지별 실행 오케스트레이션, 16도메인 이상에서의 배치 하위 분할, `pass3-complete.json` 올바른 마커 형식(`mode: "split"` + `groupsCompleted`) 작성, 스테이지 간 staged 규칙 이동을 처리하기 때문입니다. 손으로 오케스트레이션을 재현하는 것도 가능하지만 번거롭습니다. 특정 스테이지 디버깅 등의 이유로 스테이지를 수동 실행해야 한다면, 적절한 `STAGE:` 디렉티브로 `pass3-prompt.md`를 템플릿화한 후 `claude -p`에 공급할 수 있지만 — 각 스테이지 후 `.staged-rules/` 이동과 마커 업데이트를 수동으로 해야 합니다.
|
|
825
|
+
|
|
826
|
+
**Q: v2.0.x에서 업그레이드했고 기존 `claudeos-core/plan/` 디렉토리가 있습니다. 어떻게 해야 하나요?**
|
|
827
|
+
아무것도 하지 않아도 됩니다 — v2.1.0 도구는 `plan/`이 없거나 비어있으면 무시하고, `plan-validator`는 하위 호환을 위해 여전히 `plan/`이 채워진 레거시 프로젝트를 처리합니다. master plan 백업이 필요 없다면 `claudeos-core/plan/`을 안전하게 삭제할 수 있습니다 (git 히스토리가 더 나은 백업입니다). `plan/`을 유지하면 `npx claudeos-core init`이 업데이트하지 않습니다 — v2.1.0에서는 새 콘텐츠가 master plan에 집계되지 않습니다. 검증 도구는 양쪽 경우 모두 깨끗하게 처리합니다.
|
|
753
828
|
|
|
754
829
|
---
|
|
755
830
|
|
|
@@ -772,7 +847,7 @@ pass-prompts/templates/
|
|
|
772
847
|
└── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
|
|
773
848
|
```
|
|
774
849
|
|
|
775
|
-
`plan-installer`가 스택을 자동 감지한 후 타입별 프롬프트를 조합합니다. NestJS, Vue/Nuxt, Vite SPA, Flask는 각각 프레임워크별 분석 카테고리가 적용된 전용 템플릿 사용 (예: NestJS의 `@Module`/`@Injectable`/Guards; Vue의 `<script setup>`/Pinia/useFetch; Vite의 client-side routing/`VITE_` env; Flask의 Blueprint/`app.factory`/Flask-SQLAlchemy). 멀티스택 프로젝트에서는 `pass1-backend-prompt.md`와 `pass1-frontend-prompt.md`가 별도로 생성되고, `pass3-prompt.md`는 두 스택의 생성 대상을 결합합니다. Pass 4는 스택 무관 공유 `common/pass4.md` 템플릿 사용 (메모리 스캐폴딩).
|
|
850
|
+
`plan-installer`가 스택을 자동 감지한 후 타입별 프롬프트를 조합합니다. NestJS, Vue/Nuxt, Vite SPA, Flask는 각각 프레임워크별 분석 카테고리가 적용된 전용 템플릿 사용 (예: NestJS의 `@Module`/`@Injectable`/Guards; Vue의 `<script setup>`/Pinia/useFetch; Vite의 client-side routing/`VITE_` env; Flask의 Blueprint/`app.factory`/Flask-SQLAlchemy). 멀티스택 프로젝트에서는 `pass1-backend-prompt.md`와 `pass1-frontend-prompt.md`가 별도로 생성되고, `pass3-prompt.md`는 두 스택의 생성 대상을 결합합니다. v2.1.0에서는 Pass 3 템플릿 앞에 `common/pass3-phase1.md`("Read Once, Extract Facts" 블록, Rule A–E 포함)가 prepend된 후 split 모드 스테이지별로 슬라이스됩니다. Pass 4는 스택 무관 공유 `common/pass4.md` 템플릿 사용 (메모리 스캐폴딩).
|
|
776
851
|
|
|
777
852
|
---
|
|
778
853
|
|
|
@@ -842,7 +917,11 @@ my-monorepo/ ← 여기서 실행: npx claudeos-core init
|
|
|
842
917
|
|
|
843
918
|
**"Pass 3 produced CLAUDE.md and rules but N/9 guide files are missing or empty" (v2.0.0)** — Guard 3 (H2) 발동: Claude가 CLAUDE.md + rules 작성 후 `claudeos-core/guide/` 섹션에 도달하기 전(또는 시작 전) 응답이 잘림 (9 파일 예상). BOM-only 또는 공백만 있는 파일에서도 발동 (헤딩은 작성됐으나 본문이 잘림). 이 가드 없으면 완료 마커가 작성되어 이후 실행에서 `guide/`가 영구히 비어 있음. 마커 미작성이므로 다음 `init` 실행이 동일 Pass 2 결과에서 Pass 3 재시도. 계속 반복되면 `npx claudeos-core init --force`로 처음부터 재생성.
|
|
844
919
|
|
|
845
|
-
**"Pass 3 finished but the following required output(s) are missing or empty" (v2.0.0)** — Guard 3 (H1) 발동: Claude가 `claudeos-core/guide/` 이후, `claudeos-core/standard
|
|
920
|
+
**"Pass 3 finished but the following required output(s) are missing or empty" (v2.0.0, v2.1.0에서 업데이트)** — Guard 3 (H1) 발동: Claude가 `claudeos-core/guide/` 이후, `claudeos-core/standard/`나 `claudeos-core/skills/` 도달 전(또는 진행 중) 응답이 잘림. 요구사항: (a) `standard/00.core/01.project-overview.md` 존재 + 비어있지 않음 (모든 스택의 Pass 3 프롬프트가 작성하는 센티넬), (b) `skills/`에 ≥1 비어있지 않은 `.md`. `database/`와 `mcp-guide/`는 의도적으로 제외 (일부 스택은 정당하게 0 파일 생성). v2.1.0부터 `plan/`은 검사하지 않음 (master plan 제거됨). Guard 3 (H2)와 동일 복구 경로: `init` 재실행, 지속되면 `--force`.
|
|
921
|
+
|
|
922
|
+
**"Pass 3 split 스테이지가 중간에 크래시됨 (v2.1.0)"** — split 스테이지 중 하나(예: `3b-1`, `3c-2`)가 실행 중 실패하면 해당 스테이지 마커는 작성되지 **않지만**, 완료된 스테이지는 `pass3-complete.json.groupsCompleted`에 기록**됩니다**. 다음 `init` 실행이 이 배열을 읽고 첫 미완료 스테이지부터 재개하며, 이전 완료 작업을 스킵합니다. 수동 조치 불필요 — 그냥 `npx claudeos-core init`을 재실행하세요. 같은 스테이지에서 재개가 계속 실패하면 `claudeos-core/generated/pass3-prompt.md`를 검사하여 malformed content가 있는지 확인 후 전체 재시작을 위해 `--force`를 시도하세요. `pass3-complete.json` 형식(`mode: "split"`, `groupsCompleted: [...]`)은 안정적 — 마커가 없거나 malformed이면 전체 Pass 3가 `3a`부터 재실행됩니다.
|
|
923
|
+
|
|
924
|
+
**"Pass 3 stale 마커 (형식 불일치) — incomplete로 처리" (v2.1.0)** — v2.1.0 이전의 단일 호출 실행에서 생성된 `pass3-complete.json`이 새 split 모드 규칙으로 해석되고 있습니다. 형식 체크가 `mode: "split"`와 `groupsCompleted` 배열을 찾으며, 둘 중 하나라도 없으면 마커를 partial로 간주하고 Pass 3가 split 모드로 재실행됩니다. v2.0.x에서 업그레이드했다면 한 번 예상되는 동작 — 다음 실행이 올바른 마커 형식을 작성합니다. 조치 불필요.
|
|
846
925
|
|
|
847
926
|
**"pass2-merged.json exists but is malformed or incomplete (<5 top-level keys), re-running" (v2.0.0)** — 에러가 아닌 정보 로그. 재개 시 `init`이 이제 `pass2-merged.json`을 파싱하고 검증 (≥5 최상위 키 필요, `pass-json-validator`의 `INSUFFICIENT_KEYS` 임계값 미러링). 이전 크래시 실행에서 남은 skeleton `{}` 또는 malformed JSON은 자동 삭제되고 Pass 2 재실행. 수동 조치 불필요 — 파이프라인 자가 치유. 계속 반복되면 `claudeos-core/generated/pass2-prompt.md` 검사 후 `--force`로 재시도.
|
|
848
927
|
|
|
@@ -865,7 +944,7 @@ my-monorepo/ ← 여기서 실행: npx claudeos-core init
|
|
|
865
944
|
- **새 스택 템플릿** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
|
|
866
945
|
- **IDE 연동** — VS Code 확장, IntelliJ 플러그인
|
|
867
946
|
- **CI/CD 템플릿** — GitLab CI, CircleCI, Jenkins 예시 (GitHub Actions는 이미 포함 — `.github/workflows/test.yml` 참조)
|
|
868
|
-
- **테스트 커버리지** — 테스트 스위트 확장 중 (현재
|
|
947
|
+
- **테스트 커버리지** — 테스트 스위트 확장 중 (현재 563개 테스트, 29개 테스트 파일; 스캐너, 스택 감지, 도메인 그룹핑, 플랜 파싱, 프롬프트 생성, CLI 셀렉터, 모노레포 감지, Vite SPA 감지, 검증 도구, L4 메모리 스캐폴드, Pass 2 재개 검증, Pass 3 Guards 1/2/3 (H1 센티넬 + H2 BOM-aware 빈 파일 + strict stale-marker unlink), Pass 3 split 모드 배치 하위 분할, Pass 3 partial-marker 재개 (v2.1.0), Pass 4 마커 내용 검증 + stale-marker unlink strictness + scaffoldSkillsManifest gap-fill (v2.1.0), 번역 env-skip 가드 + early fail-fast + CI 워크플로, staged-rules 이동, 언어별 번역 폴백, master plan 제거 regression 스위트 (v2.1.0), memory score/compact 포맷팅 regression (v2.1.0), AI Work Rules 템플릿 구조 커버)
|
|
869
948
|
|
|
870
949
|
전체 영역 목록, 코드 스타일, 커밋 컨벤션, 새 스택 템플릿 추가 단계별 가이드는 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 참조.
|
|
871
950
|
|