claudeos-core 2.0.1 → 2.1.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/CHANGELOG.md +188 -0
- package/README.de.md +994 -880
- package/README.es.md +993 -880
- package/README.fr.md +993 -880
- package/README.hi.md +993 -880
- package/README.ja.md +993 -880
- package/README.ko.md +159 -47
- package/README.md +159 -46
- package/README.ru.md +993 -880
- package/README.vi.md +161 -48
- package/README.zh-CN.md +992 -880
- package/bin/cli.js +7 -2
- package/bin/commands/init.js +775 -147
- 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.vi.md
CHANGED
|
@@ -12,6 +12,20 @@ ClaudeOS-Core đọc codebase của bạn, trích xuất mọi pattern tìm th
|
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
+
## Có Gì Mới Trong v2.1.0
|
|
16
|
+
|
|
17
|
+
v2.1.0 tái kiến trúc Pass 3 để loại bỏ lỗi `Prompt is too long` trên các dự án cỡ trung bình đến lớn. Trước đây, một lời gọi Pass 3 đơn lẻ phải phát ra toàn bộ cây tài liệu cùng lúc — hàng chục file trải dài qua `CLAUDE.md`, rules, standards, skills và guides — và output tích lũy luôn vượt context window khi vượt quá ~5 domain. Fix này mang tính **cấu trúc**, không phải tinh chỉnh prompt:
|
|
18
|
+
|
|
19
|
+
- **Pass 3 split mode** (luôn bật) — Pass 3 được tách thành các lời gọi `claude -p` tuần tự (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`). Mỗi stage bắt đầu với **context window mới**, nên tràn output do tích lũy không còn khả thi bất kể kích thước dự án.
|
|
20
|
+
- **Fact sheet giữa các stage** — Stage `3a` đọc kết quả phân tích Pass 2 một lần và chắt lọc thành `pass3a-facts.md` kích thước 5–10 KB. Tất cả stage sau tham chiếu fact sheet này thay vì đọc lại `pass2-merged.json` 100–500 KB, giữ tính nhất quán xuyên file qua các context mới.
|
|
21
|
+
- **Chia batch tự động** (tự động ở ≥16 domain) — Stage 3b/3c được chia thêm thành các batch 15 domain mỗi cái, giữ output của mỗi stage dưới ~50 file. Admin frontend React 19 + Vite 6 với 18 domain hoàn thành trong **102 phút với 101 file được tạo qua 8 stage, 0 lỗi tràn output** (chạy thực tế production, 2026-04-20).
|
|
22
|
+
- **Loại bỏ tạo master plan** — Các file `claudeos-core/plan/*-master.md` không còn được tạo nữa. Master plan là backup nội bộ mà Claude Code không đọc lúc runtime, và việc tổng hợp chúng trong Pass 3d là nguyên nhân tràn chính. Dùng `git` để backup/restore thay thế.
|
|
23
|
+
- **Pass 4 gap-fill: `skills/00.shared/MANIFEST.md`** — Nếu Pass 3c bỏ sót skill registry (dự án ít skill), Pass 4 giờ tự động tạo stub để `.claude/rules/50.sync/03.skills-sync.md` không bao giờ trỏ tới file không tồn tại.
|
|
24
|
+
|
|
25
|
+
Một vài fix nhỏ: `memory --help` giờ hiển thị help của subcommand memory (trước đây hiển thị top-level); `memory score` không còn để lại các dòng `importance` trùng lặp; marker summary của `memory compact` giờ là markdown list item đúng định dạng. Chi tiết đầy đủ: [CHANGELOG.md](./CHANGELOG.md).
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
15
29
|
## Tại sao chọn ClaudeOS-Core?
|
|
16
30
|
|
|
17
31
|
Mọi công cụ Claude Code khác hoạt động như sau:
|
|
@@ -222,7 +236,7 @@ npx claudeos-core init --lang en # English (mặc định)
|
|
|
222
236
|
|
|
223
237
|
> **Lưu ý:** Cài đặt này chỉ áp dụng cho ngôn ngữ của các file tài liệu được tạo. Phân tích code (Pass 1–2) luôn chạy bằng tiếng Anh; output được tạo (Pass 3) được viết bằng ngôn ngữ bạn chọn. Các ví dụ code bên trong file được tạo vẫn giữ nguyên cú pháp ngôn ngữ lập trình gốc.
|
|
224
238
|
|
|
225
|
-
Vậy thôi. Sau
|
|
239
|
+
Vậy thôi. Sau 10 phút (dự án nhỏ) đến 2 giờ (monorepo 60+ domain), tất cả tài liệu được tạo và sẵn sàng sử dụng. CLI hiển thị thanh tiến trình kèm phần trăm, thời gian đã trôi qua và ETA cho mỗi pass. Xem [Tự Động Mở Rộng Theo Kích Thước Dự Án](#tự-động-mở-rộng-theo-kích-thước-dự-án) để biết thời gian chi tiết theo kích thước dự án.
|
|
226
240
|
|
|
227
241
|
### Cài Đặt Thủ Công Từng Bước
|
|
228
242
|
|
|
@@ -249,11 +263,13 @@ mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.securi
|
|
|
249
263
|
# Skills
|
|
250
264
|
mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
|
|
251
265
|
|
|
252
|
-
# Guide,
|
|
266
|
+
# Guide, Database, MCP, Generated, Memory (v2.0.0: thêm memory; v2.1.0: bỏ plan)
|
|
253
267
|
mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
|
|
254
|
-
mkdir -p claudeos-core/{
|
|
268
|
+
mkdir -p claudeos-core/{database,mcp-guide,generated,memory}
|
|
255
269
|
```
|
|
256
270
|
|
|
271
|
+
> **Lưu ý v2.1.0:** Thư mục `claudeos-core/plan/` không còn được tạo nữa. Việc tạo master plan đã bị loại bỏ vì master plan là backup nội bộ mà Claude Code không đọc lúc runtime, và việc tổng hợp chúng đã gây ra lỗi `Prompt is too long`. Dùng `git` để backup/restore thay thế.
|
|
272
|
+
|
|
257
273
|
#### Step 3: Chạy plan-installer (phân tích dự án)
|
|
258
274
|
|
|
259
275
|
Lệnh này quét dự án, phát hiện stack, tìm domain, chia chúng thành các nhóm và tạo prompt.
|
|
@@ -267,7 +283,8 @@ node claudeos-core-tools/plan-installer/index.js
|
|
|
267
283
|
- `domain-groups.json` — các nhóm domain cho Pass 1
|
|
268
284
|
- `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — prompt phân tích
|
|
269
285
|
- `pass2-prompt.md` — prompt merge
|
|
270
|
-
- `pass3-prompt.md` — prompt
|
|
286
|
+
- `pass3-prompt.md` — template prompt Pass 3 với block "Read Once, Extract Facts" Phase 1 được thêm vào đầu (Rules A–E). Pipeline tự động chia Pass 3 thành nhiều stage lúc runtime; template này dùng cho từng stage.
|
|
287
|
+
- `pass3-context.json` — slim project summary (< 5 KB, xây sau Pass 2) mà prompt Pass 3 ưu tiên hơn `pass2-merged.json` đầy đủ (v2.1.0)
|
|
271
288
|
- `pass4-prompt.md` — prompt L4 memory scaffolding (v2.0.0; dùng cùng `staging-override.md` cho ghi rule `60.memory/`)
|
|
272
289
|
|
|
273
290
|
Bạn có thể kiểm tra các file này để xác minh độ chính xác phát hiện trước khi tiếp tục.
|
|
@@ -322,16 +339,35 @@ cat claudeos-core/generated/pass2-prompt.md \
|
|
|
322
339
|
|
|
323
340
|
**Xác minh:** `claudeos-core/generated/pass2-merged.json` phải tồn tại với 9+ top-level key.
|
|
324
341
|
|
|
325
|
-
#### Step 6: Pass 3 — Tạo toàn bộ tài liệu
|
|
342
|
+
#### Step 6: Pass 3 — Tạo toàn bộ tài liệu (chia thành nhiều stage)
|
|
343
|
+
|
|
344
|
+
**Lưu ý v2.1.0:** Pass 3 **luôn chạy ở chế độ split** bởi pipeline tự động. Mỗi stage là một lời gọi `claude -p` riêng biệt với context window mới, nên tràn output do tích lũy không thể xảy ra về mặt cấu trúc bất kể kích thước dự án. Template `pass3-prompt.md` được lắp ráp theo từng stage với một directive `STAGE:` chỉ cho Claude biết tập con file nào cần phát ra. Với chế độ thủ công, đường đơn giản nhất vẫn là đưa toàn bộ template và để Claude tạo mọi thứ trong một lời gọi — nhưng điều này chỉ đáng tin cậy trên dự án nhỏ (≤5 domain). Cho dự án lớn hơn, hãy dùng `npx claudeos-core init` để split runner xử lý điều phối stage.
|
|
345
|
+
|
|
346
|
+
**Chế độ lời gọi đơn (chỉ cho dự án nhỏ, ≤5 domain):**
|
|
326
347
|
|
|
327
348
|
```bash
|
|
328
349
|
cat claudeos-core/generated/pass3-prompt.md \
|
|
329
350
|
| claude -p --dangerously-skip-permissions
|
|
330
351
|
```
|
|
331
352
|
|
|
332
|
-
**
|
|
353
|
+
**Chế độ từng stage (khuyến nghị cho mọi kích thước dự án):**
|
|
354
|
+
|
|
355
|
+
Pipeline tự động chạy các stage sau. Danh sách stage:
|
|
356
|
+
|
|
357
|
+
| Stage | Ghi | Ghi chú |
|
|
358
|
+
|---|---|---|
|
|
359
|
+
| `3a` | `pass3a-facts.md` (fact sheet đã chắt lọc 5–10 KB) | Đọc `pass2-merged.json` một lần; stage sau tham chiếu file này |
|
|
360
|
+
| `3b-core` | `CLAUDE.md`, `standard/` chung, `.claude/rules/` chung | File xuyên dự án; không output đặc thù domain |
|
|
361
|
+
| `3b-1..N` | `standard/60.domains/*.md` đặc thù domain + rule domain | Batch ≤15 domain mỗi stage (tự động chia ở ≥16 domain) |
|
|
362
|
+
| `3c-core` | `guide/` (9 file), `skills/00.shared/MANIFEST.md`, orchestrator `skills/*/` | Skill chung và tất cả guide hướng người dùng |
|
|
363
|
+
| `3c-1..N` | Sub-skill domain dưới `skills/20.frontend-page/scaffold-page-feature/` | Batch ≤15 domain mỗi stage |
|
|
364
|
+
| `3d-aux` | `database/`, `mcp-guide/` | Kích thước cố định, không phụ thuộc số domain |
|
|
365
|
+
|
|
366
|
+
Cho dự án 1–15 domain, điều này mở rộng thành 4 stage (`3a`, `3b-core`, `3c-core`, `3d-aux` — không chia batch). Cho 16–30 domain, mở rộng thành 8 stage (`3b` và `3c` mỗi cái chia thành 2 batch). Xem [Tự Động Mở Rộng Theo Kích Thước Dự Án](#tự-động-mở-rộng-theo-kích-thước-dự-án) để có bảng đầy đủ.
|
|
367
|
+
|
|
368
|
+
**Xác minh:** `CLAUDE.md` phải tồn tại ở thư mục gốc dự án, và marker `claudeos-core/generated/pass3-complete.json` phải được ghi. Ở chế độ split, marker chứa `mode: "split"` và một mảng `groupsCompleted` liệt kê mọi stage đã hoàn thành — logic partial-marker dùng thông tin này để resume từ stage đúng sau khi crash thay vì bắt đầu lại từ `3a` (sẽ nhân đôi chi phí token).
|
|
333
369
|
|
|
334
|
-
> **Lưu ý
|
|
370
|
+
> **Lưu ý staging:** Pass 3 ghi các file rule vào `claudeos-core/generated/.staged-rules/` trước vì chính sách sensitive-path của Claude Code chặn ghi trực tiếp vào `.claude/`. Pipeline tự động xử lý việc di chuyển sau mỗi stage. Nếu bạn chạy một stage thủ công, bạn cần tự di chuyển cây staged: `mv claudeos-core/generated/.staged-rules/* .claude/rules/` (giữ nguyên subpath).
|
|
335
371
|
|
|
336
372
|
#### Step 7: Pass 4 — Memory scaffolding
|
|
337
373
|
|
|
@@ -340,7 +376,9 @@ cat claudeos-core/generated/pass4-prompt.md \
|
|
|
340
376
|
| claude -p --dangerously-skip-permissions
|
|
341
377
|
```
|
|
342
378
|
|
|
343
|
-
**Xác minh:** `claudeos-core/memory/` phải chứa 4 file (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`), `.claude/rules/60.memory/` phải chứa 4 file rule,
|
|
379
|
+
**Xác minh:** `claudeos-core/memory/` phải chứa 4 file (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`), `.claude/rules/60.memory/` phải chứa 4 file rule, và `CLAUDE.md` giờ phải có mục `## Memory (L4)` được append. Marker: `claudeos-core/generated/pass4-memory.json`.
|
|
380
|
+
|
|
381
|
+
> **Gap-fill v2.1.0:** Pass 4 cũng đảm bảo `claudeos-core/skills/00.shared/MANIFEST.md` tồn tại. Nếu Pass 3c bỏ sót (có thể xảy ra ở các dự án ít skill vì template stack `pass3.md` liệt kê `MANIFEST.md` là mục tiêu tạo mà không đánh dấu REQUIRED), gap-fill tạo stub tối thiểu để `.claude/rules/50.sync/03.skills-sync.md` luôn có tham chiếu hợp lệ. Idempotent: bỏ qua nếu file đã có nội dung thực (>20 ký tự).
|
|
344
382
|
|
|
345
383
|
> **Lưu ý:** Nếu `claude -p` lỗi hoặc thiếu `pass4-prompt.md`, pipeline tự động sẽ fallback về scaffold tĩnh qua `lib/memory-scaffold.js` (có dịch qua Claude khi `--lang` khác tiếng Anh). Fallback tĩnh chỉ chạy bên trong `npx claudeos-core init` — chế độ thủ công yêu cầu Pass 4 thành công.
|
|
346
384
|
|
|
@@ -396,31 +434,42 @@ ls .claude/rules/*/
|
|
|
396
434
|
```
|
|
397
435
|
npx claudeos-core init
|
|
398
436
|
│
|
|
399
|
-
├── [1] npm install
|
|
400
|
-
├── [2] Cấu trúc thư mục
|
|
401
|
-
├── [3] plan-installer (Node.js)
|
|
437
|
+
├── [1] npm install ← Dependencies (~10s)
|
|
438
|
+
├── [2] Cấu trúc thư mục ← Tạo folder (~1s)
|
|
439
|
+
├── [3] plan-installer (Node.js) ← Quét dự án (~5s)
|
|
402
440
|
│ ├── Tự phát hiện stack (multi-stack aware)
|
|
403
441
|
│ ├── Trích domain list (tag: backend/frontend)
|
|
404
442
|
│ ├── Chia thành domain group (theo kiểu)
|
|
443
|
+
│ ├── Xây pass3-context.json (slim summary, v2.1.0)
|
|
405
444
|
│ └── Chọn prompt theo stack (theo kiểu)
|
|
406
445
|
│
|
|
407
|
-
├── [4] Pass 1 × N (claude -p)
|
|
446
|
+
├── [4] Pass 1 × N (claude -p) ← Phân tích code sâu (~2-8min)
|
|
408
447
|
│ ├── ⚙️ Backend group → prompt backend
|
|
409
448
|
│ └── 🎨 Frontend group → prompt frontend
|
|
410
449
|
│
|
|
411
|
-
├── [5] Pass 2 × 1 (claude -p)
|
|
412
|
-
│ └── Tổng hợp TẤT CẢ kết quả Pass 1
|
|
450
|
+
├── [5] Pass 2 × 1 (claude -p) ← Merge phân tích (~1min)
|
|
451
|
+
│ └── Tổng hợp TẤT CẢ kết quả Pass 1 vào pass2-merged.json
|
|
413
452
|
│
|
|
414
|
-
├── [6] Pass 3
|
|
415
|
-
│
|
|
453
|
+
├── [6] Pass 3 (split mode, v2.1.0) ← Tạo mọi thứ
|
|
454
|
+
│ │
|
|
455
|
+
│ ├── 3a × 1 (claude -p) ← Trích xuất fact (~5-10min)
|
|
456
|
+
│ │ └── Đọc pass2-merged.json một lần → pass3a-facts.md
|
|
457
|
+
│ │
|
|
458
|
+
│ ├── 3b-core × 1 (claude -p) ← CLAUDE.md + standard/rules chung
|
|
459
|
+
│ ├── 3b-1..N × N (claude -p) ← Standard/rules domain (≤15 domain/batch)
|
|
460
|
+
│ │
|
|
461
|
+
│ ├── 3c-core × 1 (claude -p) ← Guides + skill chung + MANIFEST.md
|
|
462
|
+
│ ├── 3c-1..N × N (claude -p) ← Sub-skill domain (≤15 domain/batch)
|
|
463
|
+
│ │
|
|
464
|
+
│ └── 3d-aux × 1 (claude -p) ← Stub database/ + mcp-guide/
|
|
416
465
|
│
|
|
417
|
-
├── [7] Pass 4 × 1 (claude -p)
|
|
418
|
-
│ ├──
|
|
466
|
+
├── [7] Pass 4 × 1 (claude -p) ← Memory scaffolding (~30s-5min)
|
|
467
|
+
│ ├── Seed memory/ (decision-log, failure-patterns, …)
|
|
419
468
|
│ ├── Tạo rules 60.memory/
|
|
420
469
|
│ ├── Append mục "Memory (L4)" vào CLAUDE.md
|
|
421
|
-
│ └──
|
|
470
|
+
│ └── Gap-fill: đảm bảo skills/00.shared/MANIFEST.md tồn tại (v2.1.0)
|
|
422
471
|
│
|
|
423
|
-
└── [8] Xác minh
|
|
472
|
+
└── [8] Xác minh ← Tự chạy health checker
|
|
424
473
|
```
|
|
425
474
|
|
|
426
475
|
### Tại sao 4 Pass?
|
|
@@ -429,9 +478,17 @@ npx claudeos-core init
|
|
|
429
478
|
|
|
430
479
|
**Pass 2** merge tất cả kết quả Pass 1 thành phân tích thống nhất: pattern chung (100% share), pattern đa số (50%+ share), pattern đặc thù domain, anti-pattern theo mức độ nghiêm trọng và các mối quan tâm cross-cutting (naming, security, DB, testing, logging, performance). Kết quả backend và frontend được merge cùng nhau.
|
|
431
480
|
|
|
432
|
-
**Pass 3** nhận phân tích đã merge và tạo toàn bộ hệ sinh thái file (CLAUDE.md, rules, standards, skills, guides)
|
|
481
|
+
**Pass 3** (split mode, v2.1.0) nhận phân tích đã merge và tạo toàn bộ hệ sinh thái file (CLAUDE.md, rules, standards, skills, guides) qua nhiều lời gọi `claude -p` tuần tự. Insight quan trọng là tràn output do tích lũy không thể dự đoán từ kích thước input: Pass 3 lời-gọi-đơn hoạt động tốt trên dự án 2 domain và thất bại nhất quán ở ~5 domain, và ranh giới thất bại thay đổi tùy theo mức độ dài dòng của mỗi file. Split mode né hoàn toàn vấn đề này — mỗi stage bắt đầu với context window mới và ghi một tập con file có giới hạn. Tính nhất quán xuyên stage (vốn là lợi thế chính của phương pháp lời-gọi-đơn) được bảo tồn bởi `pass3a-facts.md`, một fact sheet đã chắt lọc 5–10 KB mà mọi stage sau tham chiếu.
|
|
482
|
+
|
|
483
|
+
Template prompt Pass 3 cũng bao gồm **block Phase 1 "Read Once, Extract Facts"** với năm rule ràng buộc thêm khối lượng output:
|
|
433
484
|
|
|
434
|
-
**
|
|
485
|
+
- **Rule A** — Tham chiếu bảng fact; không đọc lại `pass2-merged.json`.
|
|
486
|
+
- **Rule B** — Ghi file idempotent (bỏ qua nếu target đã có nội dung thực), giúp Pass 3 có thể chạy lại an toàn sau khi gián đoạn.
|
|
487
|
+
- **Rule C** — Tính nhất quán xuyên file được đảm bảo qua bảng fact như single source of truth.
|
|
488
|
+
- **Rule D** — Output cô đọng: một dòng (`[WRITE]`/`[SKIP]`) giữa các lần ghi file, không nhắc lại bảng fact, không echo nội dung file.
|
|
489
|
+
- **Rule E** — Kiểm tra idempotent theo batch: một `Glob` lúc bắt đầu PHASE 2 thay vì gọi `Read` từng target.
|
|
490
|
+
|
|
491
|
+
**Pass 4** scaffold L4 Memory layer: các file kiến thức team bền vững (decision-log, failure-patterns, compaction policy, auto-rule-update) cộng với rules `60.memory/` chỉ dẫn các session tương lai khi nào và cách đọc/ghi các file đó. Memory layer là thứ giúp Claude Code tích lũy bài học qua các session thay vì phải khám phá lại mỗi lần. Khi `--lang` khác tiếng Anh, nội dung fallback tĩnh được dịch qua Claude trước khi ghi. v2.1.0 thêm gap-fill cho `skills/00.shared/MANIFEST.md` phòng trường hợp Pass 3c bỏ sót.
|
|
435
492
|
|
|
436
493
|
---
|
|
437
494
|
|
|
@@ -459,23 +516,30 @@ your-project/
|
|
|
459
516
|
│ │ ├── pass1-backend-prompt.md ← Prompt phân tích backend
|
|
460
517
|
│ │ ├── pass1-frontend-prompt.md ← Prompt phân tích frontend (nếu phát hiện)
|
|
461
518
|
│ │ ├── pass2-prompt.md ← Prompt merge
|
|
462
|
-
│ │ ├──
|
|
519
|
+
│ │ ├── pass2-merged.json ← Output Pass 2 (chỉ Pass 3a tiêu thụ)
|
|
520
|
+
│ │ ├── pass3-context.json ← Slim summary (< 5 KB) cho Pass 3 (v2.1.0)
|
|
521
|
+
│ │ ├── pass3-prompt.md ← Template prompt Pass 3 (block Phase 1 được thêm trước)
|
|
522
|
+
│ │ ├── pass3a-facts.md ← Fact sheet được ghi bởi Pass 3a, đọc bởi 3b/3c/3d (v2.1.0)
|
|
463
523
|
│ │ ├── pass4-prompt.md ← Prompt memory scaffolding (v2.0.0)
|
|
464
|
-
│ │ ├── pass3-complete.json ← Marker hoàn thành Pass 3 (
|
|
524
|
+
│ │ ├── pass3-complete.json ← Marker hoàn thành Pass 3 (split mode: bao gồm groupsCompleted, v2.1.0)
|
|
465
525
|
│ │ ├── pass4-memory.json ← Marker hoàn thành Pass 4 (bỏ qua khi resume)
|
|
526
|
+
│ │ ├── rule-manifest.json ← Index file cho công cụ xác minh
|
|
527
|
+
│ │ ├── sync-map.json ← Mapping Plan ↔ disk (rỗng ở v2.1.0; giữ lại để tương thích sync-checker)
|
|
528
|
+
│ │ ├── stale-report.json ← Kết quả xác minh tổng hợp
|
|
466
529
|
│ │ ├── .i18n-cache-<lang>.json ← Cache bản dịch (`--lang` khác tiếng Anh)
|
|
467
530
|
│ │ └── .staged-rules/ ← Thư mục staging tạm cho ghi `.claude/rules/` (tự động di chuyển + dọn)
|
|
468
|
-
│ ├── standard/ ← Coding standards (15-19 file)
|
|
531
|
+
│ ├── standard/ ← Coding standards (15-19 file + theo domain ở 60.domains/)
|
|
469
532
|
│ │ ├── 00.core/ ← Tổng quan, kiến trúc, naming
|
|
470
533
|
│ │ ├── 10.backend-api/ ← API pattern (theo stack)
|
|
471
534
|
│ │ ├── 20.frontend-ui/ ← Frontend pattern (nếu phát hiện)
|
|
472
535
|
│ │ ├── 30.security-db/ ← Security, DB schema, utilities
|
|
473
536
|
│ │ ├── 40.infra/ ← Config, logging, CI/CD
|
|
474
537
|
│ │ ├── 50.verification/ ← Build verification, testing
|
|
538
|
+
│ │ ├── 60.domains/ ← Standard theo domain (ghi bởi Pass 3b-N, v2.1.0)
|
|
475
539
|
│ │ └── 90.optional/ ← Convention tùy chọn (mở rộng theo stack)
|
|
476
|
-
│ ├── skills/ ← Skills scaffold CRUD
|
|
540
|
+
│ ├── skills/ ← Skills scaffold CRUD/page
|
|
541
|
+
│ │ └── 00.shared/MANIFEST.md ← Single source of truth cho skill đã đăng ký
|
|
477
542
|
│ ├── guide/ ← Onboarding, FAQ, troubleshooting (9 file)
|
|
478
|
-
│ ├── plan/ ← Master plans (backup/restore)
|
|
479
543
|
│ ├── database/ ← DB schema, hướng dẫn migration
|
|
480
544
|
│ ├── mcp-guide/ ← Hướng dẫn tích hợp MCP server
|
|
481
545
|
│ └── memory/ ← L4: kiến thức team (4 file) — commit các file này
|
|
@@ -489,12 +553,14 @@ your-project/
|
|
|
489
553
|
|
|
490
554
|
Mọi file standard đều bao gồm ví dụ đúng ✅, ví dụ sai ❌, và bảng tóm tắt rule — tất cả đều được trích xuất từ pattern code thực tế của bạn, không phải template chung chung.
|
|
491
555
|
|
|
556
|
+
> **Lưu ý v2.1.0:** `claudeos-core/plan/` không còn được tạo nữa. Master plan là backup nội bộ mà Claude Code không tiêu thụ lúc runtime, và việc tổng hợp chúng trong Pass 3 là nguyên nhân chính gây tràn output. Dùng `git` để backup/restore thay thế. Các dự án upgrade từ v2.0.x có thể xóa an toàn thư mục `claudeos-core/plan/` hiện có.
|
|
557
|
+
|
|
492
558
|
### Đề xuất gitignore
|
|
493
559
|
|
|
494
560
|
**Nên commit** (kiến thức team — có mục đích chia sẻ):
|
|
495
561
|
- `CLAUDE.md` — entry point của Claude Code
|
|
496
562
|
- `.claude/rules/**` — rules tự động load
|
|
497
|
-
- `claudeos-core/standard/**`, `skills/**`, `guide/**`, `database/**`, `mcp-guide/**`, `plan/**` — tài liệu được tạo
|
|
563
|
+
- `claudeos-core/standard/**`, `skills/**`, `guide/**`, `database/**`, `mcp-guide/**`, `plan/**` — tài liệu được tạo (lưu ý: `plan/**` không còn được tạo ở v2.1.0)
|
|
498
564
|
- `claudeos-core/memory/**` — lịch sử quyết định, failure pattern, đề xuất rule
|
|
499
565
|
|
|
500
566
|
**KHÔNG commit** (build artifact có thể tạo lại):
|
|
@@ -510,14 +576,38 @@ Thư mục `generated/` chứa JSON phân tích (`pass1-*.json`, `pass2-merged.j
|
|
|
510
576
|
|
|
511
577
|
## Tự Động Mở Rộng Theo Kích Thước Dự Án
|
|
512
578
|
|
|
513
|
-
|
|
579
|
+
Split mode của Pass 3 mở rộng số stage theo số domain. Việc chia batch kích hoạt ở 16 domain để giữ output mỗi stage dưới ~50 file, là khoảng an toàn thực nghiệm cho `claude -p` trước khi tràn output do tích lũy.
|
|
580
|
+
|
|
581
|
+
| Kích thước | Domain | Số stage Pass 3 | Tổng `claude -p` | Thời gian ước tính |
|
|
514
582
|
|---|---|---|---|---|
|
|
515
|
-
| Nhỏ | 1–4 |
|
|
516
|
-
| Vừa | 5–
|
|
517
|
-
| Lớn |
|
|
518
|
-
| Rất lớn |
|
|
583
|
+
| Nhỏ | 1–4 | 4 (`3a`, `3b-core`, `3c-core`, `3d-aux`) | 7 (Pass 1 + 2 + 4 stage Pass 3 + Pass 4) | ~10–15 phút |
|
|
584
|
+
| Vừa | 5–15 | 4 | 8–9 | ~25–45 phút |
|
|
585
|
+
| Lớn | 16–30 | **8** (3b, 3c mỗi cái chia thành 2 batch) | 11–12 | **~60–105 phút** |
|
|
586
|
+
| Rất lớn | 31–45 | 10 | 13–14 | ~100–150 phút |
|
|
587
|
+
| Siêu lớn | 46–60 | 12 | 15–16 | ~150–200 phút |
|
|
588
|
+
| Cực lớn | 61+ | 14+ | 17+ | 200 phút+ |
|
|
589
|
+
|
|
590
|
+
Công thức số stage (khi chia batch): `1 (3a) + 1 (3b-core) + N (3b-1..N) + 1 (3c-core) + N (3c-1..N) + 1 (3d-aux) = 2N + 4`, với `N = ceil(totalDomains / 15)`.
|
|
519
591
|
|
|
520
|
-
Pass 4 (memory scaffolding) thêm khoảng ~
|
|
592
|
+
Pass 4 (memory scaffolding) thêm khoảng ~30 giây đến 5 phút lên trên tùy thuộc vào việc chạy tạo qua Claude hay fallback tĩnh. Với dự án multi-stack (ví dụ Java + React), domain backend và frontend được đếm cộng lại. Dự án 6 backend + 4 frontend = 10 tổng = tier Vừa.
|
|
593
|
+
|
|
594
|
+
### Thực tế production: admin frontend 18 domain (2026-04-20)
|
|
595
|
+
|
|
596
|
+
Một admin frontend React 19 + Vite 6 + TypeScript với 18 domain và 6 domain group hoàn thành end-to-end trong **102 phút với 101 file được tạo**. Phân bổ stage:
|
|
597
|
+
|
|
598
|
+
| Stage | File | Thời gian | File/phút |
|
|
599
|
+
|---|---|---|---|
|
|
600
|
+
| `3a` (trích xuất fact) | 1 (`pass3a-facts.md`) | 8m 44s | — |
|
|
601
|
+
| `3b-core` (CLAUDE.md + chung) | 24 | 22m 10s | 1.1 |
|
|
602
|
+
| `3b-1` (15 domain) | 30 | 10m 6s | **3.0** |
|
|
603
|
+
| `3b-2` (3 domain) | 6 | 4m 34s | 1.3 |
|
|
604
|
+
| `3c-core` (guide + chung) | 11 | 8m 31s | 1.3 |
|
|
605
|
+
| `3c-1` (15 domain) | 8 | 5m 11s | **1.5** |
|
|
606
|
+
| `3c-2` (3 domain) | 3 | 3m 50s | 0.8 |
|
|
607
|
+
| `3d-aux` (database + mcp) | 3 | 2m 52s | 1.0 |
|
|
608
|
+
| Pass 4 | 12 | 5m 36s | 2.1 |
|
|
609
|
+
|
|
610
|
+
Throughput cao rõ rệt ở các stage domain theo batch (3b-1: 3.0 file/phút vs. 3b-core: 1.1 file/phút) vì các stage context mới được hưởng lợi từ các pattern chặt chẽ, lặp lại cho từng domain. Xác minh toàn xanh: `plan-validator`, `sync-checker`, `content-validator`, `pass-json-validator` — 0 lỗi tràn, 0 file bị cắt.
|
|
521
611
|
|
|
522
612
|
---
|
|
523
613
|
|
|
@@ -543,11 +633,11 @@ node claudeos-core-tools/sync-checker/index.js
|
|
|
543
633
|
|
|
544
634
|
| Công cụ | Chức năng |
|
|
545
635
|
|---|---|
|
|
546
|
-
| **manifest-generator** | Tạo JSON metadata (rule-manifest
|
|
547
|
-
| **plan-validator** |
|
|
548
|
-
| **sync-checker** | Phát hiện file chưa đăng ký (trên disk nhưng không có trong plan) và entry orphan — bao phủ 7 thư mục (thêm `memory/` ở v2.0.0) |
|
|
636
|
+
| **manifest-generator** | Tạo JSON metadata (`rule-manifest.json`, `sync-map.json`, khởi tạo `stale-report.json`); index 7 thư mục bao gồm `memory/` (`totalMemory` trong summary). v2.1.0: `plan-manifest.json` không còn được tạo vì master plan đã bị loại bỏ. |
|
|
637
|
+
| **plan-validator** | Xác minh block `<file>` master plan với disk cho các dự án vẫn còn `claudeos-core/plan/` (trường hợp upgrade legacy). v2.1.0: bỏ qua tạo `plan-sync-status.json` khi `plan/` vắng mặt hoặc rỗng — `stale-report.json` vẫn ghi một no-op pass. |
|
|
638
|
+
| **sync-checker** | Phát hiện file chưa đăng ký (trên disk nhưng không có trong plan) và entry orphan — bao phủ 7 thư mục (thêm `memory/` ở v2.0.0). Thoát sạch khi `sync-map.json` không có mapping nào (trạng thái mặc định của v2.1.0). |
|
|
549
639
|
| **content-validator** | Kiểm tra chất lượng 9 mục — file rỗng, thiếu ví dụ ✅/❌, mục bắt buộc, cộng với toàn vẹn scaffold L4 memory (ngày heading decision-log, trường bắt buộc failure-pattern, parse nhận biết fence) |
|
|
550
|
-
| **pass-json-validator** | Xác minh cấu trúc JSON Pass 1–4 cộng với marker hoàn thành `pass3-complete.json` và `pass4-memory.json` |
|
|
640
|
+
| **pass-json-validator** | Xác minh cấu trúc JSON Pass 1–4 cộng với marker hoàn thành `pass3-complete.json` (shape split-mode, v2.1.0) và `pass4-memory.json` |
|
|
551
641
|
|
|
552
642
|
---
|
|
553
643
|
|
|
@@ -584,7 +674,7 @@ Các folder này được loại trừ rõ ràng qua mục `DO NOT Read` trong r
|
|
|
584
674
|
|
|
585
675
|
| Folder | Lý do loại trừ |
|
|
586
676
|
|---|---|
|
|
587
|
-
| `claudeos-core/plan/` | Master Plan backup (
|
|
677
|
+
| `claudeos-core/plan/` | Master Plan backup từ các dự án legacy (v2.0.x và trước đó). Không tạo ở v2.1.0. Nếu có mặt, Claude Code sẽ không tự động load — chỉ đọc theo yêu cầu. |
|
|
588
678
|
| `claudeos-core/generated/` | JSON metadata build, prompt, Pass marker, translation cache, `.staged-rules/`. Không dùng cho coding. |
|
|
589
679
|
| `claudeos-core/guide/` | Hướng dẫn onboarding cho con người. |
|
|
590
680
|
| `claudeos-core/mcp-guide/` | Tài liệu MCP server. Không dùng cho coding. |
|
|
@@ -616,7 +706,12 @@ npx claudeos-core health
|
|
|
616
706
|
### Khi Docs Bị Hỏng
|
|
617
707
|
|
|
618
708
|
```bash
|
|
619
|
-
#
|
|
709
|
+
# Khuyến nghị v2.1.0: dùng git để khôi phục (vì master plan không còn
|
|
710
|
+
# được tạo nữa). Commit tài liệu được tạo thường xuyên để có thể rollback
|
|
711
|
+
# từng file cụ thể mà không cần tạo lại:
|
|
712
|
+
git checkout HEAD -- .claude/rules/ claudeos-core/
|
|
713
|
+
|
|
714
|
+
# Legacy (dự án v2.0.x vẫn còn claudeos-core/plan/):
|
|
620
715
|
npx claudeos-core restore
|
|
621
716
|
```
|
|
622
717
|
|
|
@@ -643,8 +738,13 @@ npx claudeos-core memory propose-rules
|
|
|
643
738
|
# Tính confidence (sigmoid trên weighted evidence × anchor multiplier)
|
|
644
739
|
# Ghi proposal vào memory/auto-rule-update.md (KHÔNG tự động áp dụng)
|
|
645
740
|
# Confidence ≥ 0.70 đáng xem xét nghiêm túc; nếu accept → sửa rule + log quyết định
|
|
741
|
+
|
|
742
|
+
# v2.1.0: `memory --help` giờ route tới help subcommand (trước đây hiển thị top-level)
|
|
743
|
+
npx claudeos-core memory --help
|
|
646
744
|
```
|
|
647
745
|
|
|
746
|
+
> **Fix v2.1.0:** `memory score` không còn để lại dòng `importance` trùng lặp sau lần chạy đầu (trước đây dòng được tự chấm điểm được thêm ở trên trong khi dòng nguyên bản bị bỏ lại bên dưới). Marker summary Stage 1 của `memory compact` giờ là markdown list item đúng định dạng (`- _Summarized on ..._`) nên render sạch và được parse lại đúng ở các lần compact sau.
|
|
747
|
+
|
|
648
748
|
Khi nào ghi vào memory (Claude làm theo yêu cầu, nhưng bạn cũng có thể sửa thủ công):
|
|
649
749
|
- **`decision-log.md`** — append entry mới bất cứ khi nào bạn chọn giữa các pattern cạnh tranh, chọn thư viện, định nghĩa convention team, hoặc quyết định KHÔNG làm gì đó. Chỉ append; không bao giờ sửa entry lịch sử.
|
|
650
750
|
- **`failure-patterns.md`** — append vào **lần xuất hiện thứ hai** của lỗi lặp lại hoặc nguyên nhân không hiển nhiên. Lỗi lần đầu không cần entry.
|
|
@@ -707,19 +807,22 @@ Bạn có thể dùng ClaudeOS-Core để tạo rule cho dự án, rồi dùng E
|
|
|
707
807
|
Không. Nó chỉ tạo `CLAUDE.md`, `.claude/rules/`, và `claudeos-core/`. Code hiện có của bạn không bao giờ bị sửa.
|
|
708
808
|
|
|
709
809
|
**Q: Chi phí là bao nhiêu?**
|
|
710
|
-
Nó gọi `claude -p`
|
|
810
|
+
Nó gọi `claude -p` vài lần qua 4 pass. Ở split mode v2.1.0, chỉ riêng Pass 3 đã mở rộng thành 4–14+ stage tùy theo kích thước dự án (xem [Tự Động Mở Rộng](#tự-động-mở-rộng-theo-kích-thước-dự-án)). Một dự án nhỏ điển hình (1–15 domain) dùng tổng cộng 8–9 lời gọi `claude -p`; dự án 18 domain dùng 11; dự án 60 domain dùng 15–17. Mỗi stage chạy với context window mới — chi phí token mỗi lời gọi thực ra thấp hơn Pass 3 lời-gọi-đơn, vì không stage nào phải giữ toàn bộ cây file trong một context. Khi `--lang` khác tiếng Anh, đường fallback tĩnh có thể gọi thêm vài `claude -p` để dịch; kết quả được cache trong `claudeos-core/generated/.i18n-cache-<lang>.json` nên các lần chạy sau dùng lại. Vẫn nằm trong mức sử dụng Claude Code bình thường.
|
|
811
|
+
|
|
812
|
+
**Q: Pass 3 split mode là gì và tại sao được thêm ở v2.1.0?**
|
|
813
|
+
Trước v2.1.0, Pass 3 thực hiện một lời gọi `claude -p` đơn phải phát ra toàn bộ cây file được tạo (`CLAUDE.md`, standards, rules, skills, guides — thường 30–60 file) trong một response. Điều này hoạt động trên dự án nhỏ nhưng luôn gặp lỗi `Prompt is too long` do tích lũy output ở ~5 domain. Lỗi không thể dự đoán từ kích thước input — nó phụ thuộc vào mức độ dài dòng của mỗi file được tạo, và có thể ập đến cùng một dự án một cách không ổn định. Split mode né vấn đề này về cấu trúc: Pass 3 được chia thành các stage tuần tự (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`), mỗi cái là một lời gọi `claude -p` riêng với context window mới. Tính nhất quán xuyên stage được bảo tồn bởi `pass3a-facts.md`, fact sheet đã chắt lọc 5–10 KB mà mọi stage sau tham chiếu thay vì đọc lại `pass2-merged.json`. Marker `pass3-complete.json` mang mảng `groupsCompleted` để crash trong `3c-2` resume từ `3c-2` (không phải từ `3a`), tránh chi phí token gấp đôi. Đã xác minh thực nghiệm lên tới 18 domain × 101 file × 102 phút với 0 tràn — xem [Tự Động Mở Rộng](#tự-động-mở-rộng-theo-kích-thước-dự-án) cho phân tích production thực tế.
|
|
711
814
|
|
|
712
815
|
**Q: Tôi có nên commit các file được tạo vào Git không?**
|
|
713
816
|
Có, khuyến nghị. Team của bạn có thể chia sẻ cùng standard Claude Code. Hãy xem xét thêm `claudeos-core/generated/` vào `.gitignore` (JSON phân tích có thể tạo lại).
|
|
714
817
|
|
|
715
818
|
**Q: Còn dự án mixed-stack (ví dụ Java backend + React frontend)?**
|
|
716
|
-
Được hỗ trợ hoàn toàn. ClaudeOS-Core tự phát hiện cả hai stack, gắn tag domain là `backend` hoặc `frontend`, và dùng prompt phân tích theo stack cho mỗi cái. Pass 2 merge mọi thứ, và Pass 3 tạo cả standard backend và frontend
|
|
819
|
+
Được hỗ trợ hoàn toàn. ClaudeOS-Core tự phát hiện cả hai stack, gắn tag domain là `backend` hoặc `frontend`, và dùng prompt phân tích theo stack cho mỗi cái. Pass 2 merge mọi thứ, và Pass 3 tạo cả standard backend và frontend qua các split stage — domain backend rơi vào một số batch 3b/3c, domain frontend vào các batch khác, tất cả đều tham chiếu cùng `pass3a-facts.md` để có tính nhất quán.
|
|
717
820
|
|
|
718
821
|
**Q: Nó có hoạt động với monorepo Turborepo / pnpm workspaces / Lerna không?**
|
|
719
822
|
Có. ClaudeOS-Core phát hiện `turbo.json`, `pnpm-workspace.yaml`, `lerna.json`, hoặc `package.json#workspaces` và tự động quét file `package.json` của sub-package để tìm dependency framework/ORM/DB. Quét domain bao phủ pattern `apps/*/src/` và `packages/*/src/`. Chạy từ root monorepo.
|
|
720
823
|
|
|
721
824
|
**Q: Chạy lại thì chuyện gì xảy ra?**
|
|
722
|
-
Nếu kết quả Pass 1/2 trước đó tồn tại, một prompt tương tác cho bạn chọn: **Continue** (tiếp tục từ chỗ dừng) hoặc **Fresh** (xóa tất cả và bắt đầu lại). Dùng `--force` để bỏ qua prompt và luôn bắt đầu mới. Pass 3
|
|
825
|
+
Nếu kết quả Pass 1/2 trước đó tồn tại, một prompt tương tác cho bạn chọn: **Continue** (tiếp tục từ chỗ dừng) hoặc **Fresh** (xóa tất cả và bắt đầu lại). Dùng `--force` để bỏ qua prompt và luôn bắt đầu mới. Ở split mode v2.1.0, resume Pass 3 hoạt động ở mức độ stage — nếu lần chạy crash trong `3c-2`, `init` tiếp theo resume từ `3c-2` thay vì bắt đầu lại từ `3a` (sẽ nhân đôi chi phí token). Marker `pass3-complete.json` ghi `mode: "split"` cộng với mảng `groupsCompleted` để điều khiển logic này.
|
|
723
826
|
|
|
724
827
|
**Q: NestJS có template riêng hay dùng của Express?**
|
|
725
828
|
NestJS dùng template `node-nestjs` chuyên dụng với các danh mục phân tích đặc thù NestJS: decorator `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, DI container, pattern CQRS, và `Test.createTestingModule`. Dự án Express dùng template `node-express` riêng biệt.
|
|
@@ -746,10 +849,16 @@ Pipeline tự động (`npx claudeos-core init`) có static fallback: nếu `cla
|
|
|
746
849
|
Xem mục [Bảo Trì Memory Layer](#bảo-trì-memory-layer-v200) ở trên. Phiên bản ngắn: `compact` chạy chính sách 4 giai đoạn (tóm tắt cũ, merge trùng, bỏ importance thấp cũ, áp dụng giới hạn 400 dòng); `score` xếp hạng lại `failure-patterns.md` theo importance (frequency × recency); `propose-rules` nổi bật candidate rule addition từ failure lặp lại vào `auto-rule-update.md` (không tự động áp dụng — xem và accept/reject thủ công).
|
|
747
850
|
|
|
748
851
|
**Q: Tại sao `--force` (hoặc chế độ "fresh" resume) xóa `.claude/rules/`?**
|
|
749
|
-
v2.0.0 thêm ba silent-failure guard cho Pass 3 (Guard 3 bao phủ hai biến thể output không đầy đủ: H2 cho `guide/` và H1 cho `standard/skills
|
|
852
|
+
v2.0.0 thêm ba silent-failure guard cho Pass 3 (Guard 3 bao phủ hai biến thể output không đầy đủ: H2 cho `guide/` và H1 cho `standard/skills`). Guard 1 ("partial staged-rules move") và Guard 3 ("incomplete output — missing/empty guide files or missing standard sentinel / empty skills") không phụ thuộc vào rule hiện có, nhưng Guard 2 ("zero rules detected") thì có — nó kích hoạt khi Claude bỏ qua directive `staging-override.md` và thử ghi trực tiếp vào `.claude/` (nơi chính sách sensitive-path của Claude Code chặn). Rule cũ từ lần chạy trước sẽ khiến Guard 2 false-negative — nên `--force`/`fresh` xóa `.claude/rules/` để đảm bảo phát hiện sạch. **Sửa rule thủ công sẽ bị mất** dưới `--force`/`fresh`; hãy backup trước nếu cần. (Lưu ý v2.1.0: Guard 3 H1 không còn kiểm tra `plan/` vì master plan không còn được tạo.)
|
|
750
853
|
|
|
751
854
|
**Q: `claudeos-core/generated/.staged-rules/` là gì và tại sao tồn tại?**
|
|
752
|
-
Chính sách sensitive-path của Claude Code từ chối ghi trực tiếp vào `.claude/` từ subprocess `claude -p` (ngay cả với `--dangerously-skip-permissions`). v2.0.0 đi vòng bằng cách cho prompt Pass 3/4 chuyển hướng mọi ghi `.claude/rules/` vào thư mục staging; orchestrator Node.js (không chịu chính sách đó) sau đó di chuyển cây staged vào `.claude/rules/` sau mỗi pass. Điều này trong suốt với người dùng — thư mục được tự tạo, tự dọn, và tự di chuyển. Nếu lần chạy trước crash giữa chừng di chuyển, lần chạy sau xóa staging dir trước khi thử lại.
|
|
855
|
+
Chính sách sensitive-path của Claude Code từ chối ghi trực tiếp vào `.claude/` từ subprocess `claude -p` (ngay cả với `--dangerously-skip-permissions`). v2.0.0 đi vòng bằng cách cho prompt Pass 3/4 chuyển hướng mọi ghi `.claude/rules/` vào thư mục staging; orchestrator Node.js (không chịu chính sách đó) sau đó di chuyển cây staged vào `.claude/rules/` sau mỗi pass. Điều này trong suốt với người dùng — thư mục được tự tạo, tự dọn, và tự di chuyển. Nếu lần chạy trước crash giữa chừng di chuyển, lần chạy sau xóa staging dir trước khi thử lại. Ở split mode v2.1.0, stage runner di chuyển staged rules vào `.claude/rules/` sau mỗi stage (không chỉ cuối cùng), nên crash giữa Pass 3 vẫn để lại rule của các stage đã hoàn thành trước đó tại chỗ.
|
|
856
|
+
|
|
857
|
+
**Q: Tôi có thể chạy Pass 3 thủ công thay vì `npx claudeos-core init` không?**
|
|
858
|
+
Có cho dự án nhỏ (≤5 domain) — hướng dẫn thủ công lời-gọi-đơn ở [Step 6](#step-6-pass-3--tạo-toàn-bộ-tài-liệu-chia-thành-nhiều-stage) vẫn hoạt động. Cho dự án lớn hơn bạn nên dùng `npx claudeos-core init` vì split runner là cái điều phối thực thi từng stage với context mới, xử lý chia batch ở ≥16 domain, ghi shape marker `pass3-complete.json` đúng (`mode: "split"` + `groupsCompleted`), và di chuyển staged rules giữa các stage. Tái tạo điều phối đó bằng tay có thể được nhưng mệt mỏi. Nếu bạn có lý do chạy stage thủ công (ví dụ: debug một stage cụ thể), bạn có thể template `pass3-prompt.md` với directive `STAGE:` phù hợp và đưa cho `claude -p` trực tiếp — nhưng nhớ di chuyển `.staged-rules/` sau mỗi stage và tự cập nhật marker.
|
|
859
|
+
|
|
860
|
+
**Q: Dự án của tôi là upgrade từ v2.0.x và có thư mục `claudeos-core/plan/` hiện hữu. Tôi phải làm gì?**
|
|
861
|
+
Không cần gì cả — công cụ v2.1.0 bỏ qua `plan/` khi nó vắng mặt hoặc rỗng, và `plan-validator` vẫn xử lý các dự án legacy có thư mục `plan/` đã điền để tương thích ngược. Bạn có thể xóa an toàn `claudeos-core/plan/` nếu không cần master plan backup (git history dù sao cũng là backup tốt hơn). Nếu giữ `plan/`, chạy `npx claudeos-core init` sẽ không cập nhật nó — nội dung mới không được tổng hợp vào master plan ở v2.1.0. Công cụ xác minh xử lý sạch cả hai trường hợp.
|
|
753
862
|
|
|
754
863
|
---
|
|
755
864
|
|
|
@@ -772,7 +881,7 @@ pass-prompts/templates/
|
|
|
772
881
|
└── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
|
|
773
882
|
```
|
|
774
883
|
|
|
775
|
-
`plan-installer` tự phát hiện các stack của bạn, rồi lắp ráp prompt theo kiểu. NestJS, Vue/Nuxt, Vite SPA và Flask mỗi cái dùng template chuyên dụng với danh mục phân tích đặc thù framework (ví dụ: `@Module`/`@Injectable`/Guards cho NestJS; `<script setup>`/Pinia/useFetch cho Vue; client-side routing/`VITE_` env cho Vite; Blueprint/`app.factory`/Flask-SQLAlchemy cho Flask). Cho dự án multi-stack, `pass1-backend-prompt.md` và `pass1-frontend-prompt.md` riêng biệt được tạo, trong khi `pass3-prompt.md` kết hợp mục tiêu tạo của cả hai stack. Pass 4 dùng template chung `common/pass4.md` (memory scaffolding) bất kể stack.
|
|
884
|
+
`plan-installer` tự phát hiện các stack của bạn, rồi lắp ráp prompt theo kiểu. NestJS, Vue/Nuxt, Vite SPA và Flask mỗi cái dùng template chuyên dụng với danh mục phân tích đặc thù framework (ví dụ: `@Module`/`@Injectable`/Guards cho NestJS; `<script setup>`/Pinia/useFetch cho Vue; client-side routing/`VITE_` env cho Vite; Blueprint/`app.factory`/Flask-SQLAlchemy cho Flask). Cho dự án multi-stack, `pass1-backend-prompt.md` và `pass1-frontend-prompt.md` riêng biệt được tạo, trong khi `pass3-prompt.md` kết hợp mục tiêu tạo của cả hai stack. Ở v2.1.0, template Pass 3 được thêm `common/pass3-phase1.md` (block "Read Once, Extract Facts" với Rules A–E) vào đầu trước khi được cắt theo từng stage split-mode. Pass 4 dùng template chung `common/pass4.md` (memory scaffolding) bất kể stack.
|
|
776
885
|
|
|
777
886
|
---
|
|
778
887
|
|
|
@@ -842,7 +951,11 @@ my-monorepo/ ← Chạy ở đây: npx claudeos-core init
|
|
|
842
951
|
|
|
843
952
|
**"Pass 3 produced CLAUDE.md and rules but N/9 guide files are missing or empty" (v2.0.0)** — Guard 3 (H2) kích hoạt: Claude bị cắt giữa chừng sau khi viết CLAUDE.md + rules nhưng trước khi hoàn thành (hoặc bắt đầu) mục `claudeos-core/guide/` (mong đợi 9 file). Cũng kích hoạt trên file chỉ có BOM hoặc chỉ có whitespace (heading đã viết nhưng body bị cắt). Không có guard này, completion marker vẫn được ghi, để `guide/` trống vĩnh viễn ở các lần chạy sau. Marker KHÔNG được ghi ở đây, nên lần chạy `init` tiếp theo retry Pass 3 từ cùng kết quả Pass 2. Nếu cứ lặp lại, chạy lại với `npx claudeos-core init --force` để tạo lại từ đầu.
|
|
844
953
|
|
|
845
|
-
**"Pass 3 finished but the following required output(s) are missing or empty" (v2.0.0)** — Guard 3 (H1) kích hoạt: Claude bị cắt SAU `claudeos-core/guide/` nhưng trước (hoặc trong lúc) `claudeos-core/standard
|
|
954
|
+
**"Pass 3 finished but the following required output(s) are missing or empty" (v2.0.0, cập nhật v2.1.0)** — Guard 3 (H1) kích hoạt: Claude bị cắt SAU `claudeos-core/guide/` nhưng trước (hoặc trong lúc) `claudeos-core/standard/` hoặc `claudeos-core/skills/`. Yêu cầu: (a) `standard/00.core/01.project-overview.md` tồn tại và không rỗng (sentinel được ghi bởi mọi prompt Pass 3 của mọi stack), (b) `skills/` có ≥1 `.md` không rỗng. `database/` và `mcp-guide/` bị loại trừ có chủ đích (một số stack tạo ra 0 file hợp lệ). `plan/` không còn được kiểm tra kể từ v2.1.0 (master plan đã bị loại bỏ). Đường khôi phục như Guard 3 (H2): chạy lại `init`, hoặc `--force` nếu lỗi vẫn tiếp diễn.
|
|
955
|
+
|
|
956
|
+
**"Pass 3 split stage crashed partway through (v2.1.0)"** — Khi một trong các split stage (ví dụ: `3b-1`, `3c-2`) lỗi giữa chừng, marker mức stage KHÔNG được ghi, nhưng các stage đã hoàn thành ĐƯỢC ghi trong `pass3-complete.json.groupsCompleted`. Lần chạy `init` tiếp theo đọc mảng này và resume từ stage chưa hoàn thành đầu tiên, bỏ qua mọi công việc đã hoàn thành trước đó. Bạn không cần làm gì thủ công — chỉ cần chạy lại `npx claudeos-core init`. Nếu resume cứ lỗi ở cùng stage, kiểm tra `claudeos-core/generated/pass3-prompt.md` tìm nội dung bị lỗi, rồi thử `--force` để khởi động lại đầy đủ. Shape `pass3-complete.json` (`mode: "split"`, `groupsCompleted: [...]`) ổn định; một marker thiếu hoặc lỗi sẽ khiến toàn bộ Pass 3 chạy lại từ `3a`.
|
|
957
|
+
|
|
958
|
+
**"Pass 3 stale marker (shape mismatch) — treating as incomplete" (v2.1.0)** — Một `pass3-complete.json` từ lần chạy lời-gọi-đơn pre-v2.1.0 đang được diễn giải theo luật split-mode mới. Kiểm tra shape tìm `mode: "split"` và mảng `groupsCompleted`; nếu thiếu, marker được coi là partial và Pass 3 chạy lại ở split mode. Nếu bạn upgrade từ v2.0.x, điều này xảy ra một lần là mong đợi — lần chạy tiếp theo sẽ ghi shape marker đúng. Không cần hành động.
|
|
846
959
|
|
|
847
960
|
**"pass2-merged.json exists but is malformed or incomplete (<5 top-level keys), re-running" (v2.0.0)** — Log thông tin, không phải lỗi. Khi resume, `init` giờ parse và validate `pass2-merged.json` (yêu cầu ≥5 top-level key, phản chiếu ngưỡng `INSUFFICIENT_KEYS` của `pass-json-validator`). Skeleton `{}` hoặc JSON lỗi từ lần chạy crash trước tự động bị xóa và Pass 2 chạy lại. Không cần hành động thủ công — pipeline tự chữa. Nếu cứ lặp lại, kiểm tra `claudeos-core/generated/pass2-prompt.md` và retry với `--force`.
|
|
848
961
|
|
|
@@ -865,7 +978,7 @@ my-monorepo/ ← Chạy ở đây: npx claudeos-core init
|
|
|
865
978
|
- **Template stack mới** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
|
|
866
979
|
- **Tích hợp IDE** — VS Code extension, IntelliJ plugin
|
|
867
980
|
- **Template CI/CD** — ví dụ GitLab CI, CircleCI, Jenkins (GitHub Actions đã có — xem `.github/workflows/test.yml`)
|
|
868
|
-
- **Độ phủ test** — Mở rộng test suite (hiện tại
|
|
981
|
+
- **Độ phủ test** — Mở rộng test suite (hiện tại 563 test trên 29 file test bao phủ scanner, phát hiện stack, domain grouping, plan parsing, tạo prompt, CLI selector, phát hiện monorepo, phát hiện Vite SPA, công cụ xác minh, L4 memory scaffold, xác thực resume Pass 2, Pass 3 Guards 1/2/3 (sentinel H1 + empty-file nhận biết BOM H2 + unlink marker cũ nghiêm ngặt), chia batch split-mode Pass 3, resume partial-marker Pass 3 (v2.1.0), xác thực nội dung marker Pass 4 + độ nghiêm ngặt unlink marker cũ + gap-fill scaffoldSkillsManifest (v2.1.0), guard env-skip dịch + fail-fast sớm + CI workflow, di chuyển staged-rules, fallback dịch lang-aware, suite regression loại bỏ master plan (v2.1.0), regression định dạng memory score/compact (v2.1.0), và cấu trúc template AI Work Rules)
|
|
869
982
|
|
|
870
983
|
Xem [`CONTRIBUTING.md`](./CONTRIBUTING.md) để có danh sách đầy đủ các khu vực, code style, commit convention, và hướng dẫn từng bước để thêm template stack mới.
|
|
871
984
|
|