Bộ thiết lập Claude Code · Biên soạn bởi Eroca Thanh

Một thư mục quyết định Claude Code
là phép màu hay món đồ chơi

Hầu hết mọi người dừng ở một file CLAUDE.md rồi nghĩ vậy là đủ — trong khi thư mục .claude vẫn để trống. Nửa đầu là sơ đồ đầy đủ từng thư mục (kèm khối bấm sao chép là dùng ngay); nửa sau là cách Thanh đẩy nó lên cả một hệ nhiều agent chạy thật mỗi ngày.

8 thư mục trong .claude/ 22 hồ sơ agent ~19 nguồn dữ liệu MCP 141 mẩu bộ nhớ
Xem sơ đồ ↓

Khoảng trống tạo khác biệt

Thư mục .claude — nơi Claude Code thật sự thông minh lên

Hầu hết mọi người cài Claude Code, viết một file CLAUDE.md rồi nghĩ vậy là đủ. Trong khi đó thư mục .claude vẫn để trống: không agents, không skills, không hooks để làm giúp bạn những việc lặp đi lặp lại. Chính khoảng trống đó tạo ra toàn bộ sự khác biệt.

Hãy hình dung một dự án Claude Code như một văn phòng. CLAUDE.md là tờ nội quy dán ở cửa — ai vào cũng đọc. Còn .claude là cả bộ máy phía sau: nhân sự chuyên trách (agents), kỹ năng đóng gói (skills), nút bấm tự động (hooks), lệnh tắt (commands).

Khi bộ máy đó trống, Claude chỉ trả lời câu hỏi. Khi bạn lấp đầy nó, Claude bắt đầu làm việc thay bạn — đúng cách bạn muốn, lặp lại được, không phải dặn lại mỗi lần.

Toàn cảnh một thư mục dự án

Đây là bản đồ bạn sẽ dựng xong sau trang này. Mỗi dòng đều có một mục riêng bên dưới, kèm khối cấu hình bấm sao chép là dùng được.

dự-án-của-bạn/
├── CLAUDE.md            # nội quy Claude đọc đầu mỗi phiên
├── CLAUDE.local.md      # ghi chú riêng của bạn — không đẩy lên git
├── .gitignore           # giấu file "local" và thông tin bí mật
└── .claude/             # toàn bộ cấu hình — nơi tạo khác biệt
    ├── agents/          # trợ lý theo việc (Eroca dùng cách mạnh hơn ↓)
    ├── skills/          # kỹ năng đóng gói thành quy trình
    ├── commands/        # lệnh tắt gõ "/" là chạy
    ├── hooks/           # tự động chạy trước/sau mỗi bước
    ├── output-styles/   # định dạng câu trả lời theo ý bạn
    ├── plugins/         # cài thêm nguồn và kết nối dữ liệu (MCP)
    ├── rules/           # (tuỳ chọn) gom quy tắc tách riêng
    └── scripts/         # script phụ trợ cho skills
💡 Bạn không cần dựng hết trong một ngày. Bắt đầu từ CLAUDE.md, rồi thêm dần từng thư mục khi gặp việc lặp lại. Nửa đầu trang đi qua từng thư mục (cách Claude Code chuẩn); nửa sau cho bạn xem cách Thanh đẩy nó xa hơn — từ một .claude của một dự án lên cả một hệ nhiều agent chạy thật mỗi ngày.

Ba file gốc

Bắt đầu từ ba file ở thư mục gốc

Trước khi vào .claude, có ba file nằm ngay thư mục dự án. Đây là nền móng — làm đúng ba file này, Claude đã hiểu dự án của bạn hơn hẳn phần lớn người dùng.

1 CLAUDE.md

File quan trọng nhất. Claude đọc nó đầu mỗi phiên để biết dự án của bạn là gì, viết bằng gì, quy ước ra sao. Hãy coi nó như buổi bàn giao việc cho người mới.

# Dự án: [tên dự án của bạn]

## Bối cảnh
Mô tả ngắn dự án làm gì, cho ai.

## Công nghệ
- Ngôn ngữ và thư viện chính
- Cách chạy thử, cách build

## Quy ước
- Giọng văn, cách đặt tên, thư mục nào để làm gì
- Việc luôn làm / việc luôn tránh

## Lệnh hay dùng
- Chạy thử: ...
- Kiểm thử: ...
💡 Mẹo Thanh đang dùng: đặt một CLAUDE.md ở ngay thư mục nhà ~/ làm "nội quy gốc" cho mọi dự án, rồi mỗi dự án con có CLAUDE.md riêng — Claude đọc xếp chồng từ nhà xuống. Khi file dài, đừng nhồi hết: để các dòng "trỏ" tới file chi tiết theo từng mảng việc.

2 CLAUDE.local.md — tuỳ chọn

Đây là cách chuẩn của Claude Code để ghi chú riêng không đẩy lên git. Hợp cho người mới. Nhưng nếu bạn muốn Claude nhớ lâu dài qua nhiều phiên, có cách mạnh hơn một file tĩnh — Thanh dùng một hệ bộ nhớ tự lớn (xem mục "Bộ nhớ & vòng đời" ở cuối trang).

# Ghi chú riêng (không chia sẻ)

- Đường dẫn trên máy mình: ...
- Việc đang làm dở: ...
- Nhắc riêng cho Claude khi làm với mình: ...

3 .gitignore

Dặn git bỏ qua những file không nên chia sẻ: ghi chú cá nhân, cấu hình máy, và mọi thông tin bí mật như khoá API hay mật khẩu. Đây là tuyến phòng thủ để bạn không lỡ tay đẩy bí mật lên mạng.

# Ghi chú và cấu hình cá nhân
CLAUDE.local.md
.claude/settings.local.json

# Thông tin bí mật — TUYỆT ĐỐI không đẩy lên
.env
.env.*
*.key
*.pem
⚠️ Không bao giờ để khoá API hay mật khẩu trong CLAUDE.md (file đó chia sẻ cho cả nhóm). Cách Thanh dùng chắc hơn `.env`: để khoá dùng chung trong file ẩn ở thư mục nhà, đặt quyền chỉ mình đọc được (`chmod 600`) — nằm hẳn ngoài cây git nên không repo nào lỡ commit phải. Thêm một `.gitignore` chung cho cả máy để khỏi lặp `.DS_Store` ở từng dự án.

Hai thư mục tạo sức mạnh

agentsskills — trợ lý riêng và kỹ năng đóng gói

Nếu chỉ thêm được hai thứ vào .claude, hãy thêm hai thư mục này. Chúng biến Claude từ "người trả lời" thành "người làm được việc chuyên môn, lặp lại theo đúng cách của bạn".

📁 agents/ — trợ lý chuyên trách

Cách chuẩn của Claude Code: mỗi agent là một file .md trong .claude/agents/ mô tả một trợ lý có vai riêng (ví dụ một trợ lý chuyên soát lỗi) và những công cụ nó được dùng.

---
name: code-review
description: Soát lỗi và góp ý chất lượng cho đoạn mã vừa thay đổi.
tools: Read, Grep, Bash
---

Bạn là người soát mã kỹ tính. Khi được gọi:
1. Đọc phần vừa thay đổi.
2. Chỉ ra lỗi đúng/sai, rủi ro bảo mật, chỗ khó đọc.
3. Góp ý ngắn gọn, ưu tiên việc quan trọng trước.
💡 Cách Thanh đi xa hơn: thay vì file agent trong một dự án, Thanh coi mỗi phiên làm việc là một agent có tên, có vai, có quyền riêng (ví dụ một agent chuyên lo deploy). Mỗi agent khởi động từ một "hồ sơ nhập vai" và đăng ký vào một sổ chung để không giẫm chân nhau. Phần này nằm ở mục "Hệ nhiều agent" bên dưới — đó mới là chỗ tạo khác biệt thật sự.

📁 skills/ — kỹ năng đóng gói thành quy trình

Skill là một việc bạn làm đi làm lại, gói lại một lần để dùng mãi. Mỗi skill là một thư mục con chứa file SKILL.md; Claude tự đọc phần mô tả để biết khi nào nên dùng. Đây là thứ Thanh dùng nhiều nhất — hiện có gần 70 skill thật trong máy (đăng bài, xuất PDF, chấm bài, cập nhật trạng thái, giao việc cho agent khác...).

Một SKILL.md thật trông như thế này (rút gọn từ skill cập nhật trạng thái):

---
name: status-update
description: Cập nhật bảng việc bằng cách đối chiếu hội thoại
  gần đây rồi đề xuất thay đổi — luôn cần xác nhận trước khi sửa.
---

# status-update — quy trình 6 bước

## Bước 1 — Đọc trạng thái hiện tại
## Bước 2 — Đối chiếu hội thoại, nhận ra việc mới / việc đã xong
## Bước 3 — Đề xuất thay đổi cho người dùng xem
## Bước 4 — Khoá file trước khi ghi (tránh hai phiên cùng sửa)
## Bước 5 — Ghi thay đổi + đóng dấu thời gian
## Bước 6 — Đồng bộ lên trang trạng thái
💡 Khác nhau dễ nhớ: agent là "ai làm" (một vai), còn skill là "làm thế nào" (một quy trình). Chúng ghép vào nhau: agent lo-deploy của Thanh khi chạy sẽ gọi skill /deploy-lich để làm việc — ai làm gọi làm-thế-nào.

Tự động hoá việc lặp

commandshooks — lệnh tắt và nút bấm tự động

Hai thư mục này lo phần "đỡ tay" cho bạn: gõ một lệnh ngắn thay cho cả đoạn dài, và để máy tự chạy việc nền mà không cần nhắc.

📁 commands/ — lệnh tắt gõ "/"

Cách chuẩn của Claude Code: mỗi file .md trong .claude/commands/ là một lệnh tắt, gõ /tên-lệnh là chạy. Ví dụ một lệnh tạo commit:

Xem các thay đổi đang có (git diff), rồi:
1. Tóm tắt thay đổi thành một câu ngắn, rõ.
2. Tạo commit với câu đó theo đúng quy ước dự án.
3. Báo lại cho tôi nội dung commit vừa tạo.
💡 Ở máy Thanh, lệnh "/" không đến từ file lẻ trong commands/ mà đến từ skills (mỗi skill là một thư mục có SKILL.md + script kèm theo) — mạnh hơn vì lệnh có thể mang theo cả quy trình nhiều bước và file phụ trợ. Ví dụ thật: gõ /status-update để cập nhật bảng việc, hay /deploy-lich để đẩy trang lịch lên mạng.

📁 hooks/ — tự chạy trước hoặc sau mỗi bước

Hook là việc chạy tự động tại một thời điểm: khi mở phiên (SessionStart), hay sau mỗi lần Claude dùng công cụ (PostToolUse). Bạn khai báo hook trong file cấu hình:

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "python3 \"$HOME/.claude/hooks/nhac-viec.py\""
          }
        ]
      }
    ]
  }
}

Hook của Thanh không phải để định dạng mã, mà để quản trị khi có nhiều agent cùng làm — viết bằng Python. Ví dụ một hook cảnh báo khi bảng việc phình quá to:

#!/usr/bin/env python3
# nhac-viec.py — chạy khi mở phiên: cảnh báo nếu bảng việc phình to.
# Nguyên tắc 1: hook chỉ NHẮC (đếm + báo), không tự sửa — việc sửa để cho mình quyết.
# Nguyên tắc 2: HỎNG-LÀ-IM (fail-open) — mọi lỗi đều thoát êm (exit 0), KHÔNG chặn phiên.
import sys, os
try:
    f = os.path.expanduser("~/Operations/STATE.md")
    if os.path.getsize(f) > 150_000:
        print("Bảng việc đang to — cân nhắc dọn bớt mục đã xong.")
except Exception:
    pass          # hỏng thì im, không bao giờ chặn phiên làm việc
sys.exit(0)
💡 Hai nguyên tắc Thanh luôn giữ cho hook: chỉ nhắc, không tự quyết (hook đưa tín hiệu, phần xử lý để cho người hoặc một skill lo) và hỏng là im (lỗi gì cũng thoát êm, không bao giờ làm kẹt phiên). Hook gắn được vào nhiều thời điểm: trước khi dùng công cụ, khi mở phiên, khi kết thúc.

Mở rộng và tuỳ biến

pluginsoutput-styles — kết nối dữ liệu và đổi giọng trả lời

Hai thư mục này giúp Claude với tới dữ liệu bên ngoài và trả lời theo đúng phong cách bạn muốn.

📁 plugins/ & MCP — kết nối dữ liệu của bạn

MCP là cách Claude nối tới công cụ và dữ liệu bên ngoài: kho tệp, lịch, cơ sở dữ liệu, dịch vụ bạn đang dùng. Ở máy Thanh hiện có khoảng 19 nguồn MCP thật đang chạy — Drive, Gmail, Lịch, Notion, Supabase, Vercel, WordPress, quảng cáo Facebook, dựng ảnh, dựng video... Có hai cách nối, và đa số người mới hay nhầm:

1) Nối từ xa (remote connector) — qua claude.ai
   → Bật trong phần kết nối của tài khoản, KHÔNG cần file .mcp.json.
   → Hợp với dịch vụ có sẵn cổng (Drive, Notion, Vercel...).

2) Nối tại máy (stdio local) — khai báo trong .mcp.json
   → Claude chạy một lệnh trên máy bạn để mở nguồn dữ liệu.

Khai báo một nguồn chạy tại máy trong .mcp.json:

{
  "mcpServers": {
    "ten-nguon": {
      "command": "npx",
      "args": ["-y", "ten-goi-mcp"]
    }
  }
}

Còn chợ plugin chính thức thì thêm bằng lệnh (tên kho cho đúng):

/plugin marketplace add anthropics/claude-plugins-official
/plugin install ten-plugin
💡 Lưu ý thật từ máy Thanh: khoảng 19 nguồn MCP đều nối qua remote connector hoặc stdio tại máy — không phải cài từ chợ plugin. Đừng nhầm "cài plugin" với "nối MCP": chúng là hai đường khác nhau.

📁 output-styles/ — tuỳ chọn

Đây là cách chuẩn của Claude Code để đổi phong cách trả lời (ví dụ ngắn gọn cho điện thoại) — mỗi style là một file mô tả. Bạn có thể thêm sau nếu cần.

Thanh thì không dùng output-styles — giọng và phong cách trả lời được điều khiển ngay trong CLAUDE.md (quy ước xưng hô, giọng văn, việc tránh) cộng với hệ bộ nhớ và skills. Cách đó áp được cho mọi phiên, mọi dự án, chứ không chỉ một preset.

Quyền hạn và phụ trợ

rulesscripts — đặt luật chơi và gọi việc phụ

Hai thư mục cuối lo phần "luật chơi" và "tay chân": Claude được phép làm gì, và những đoạn việc kỹ thuật bạn muốn gọi lại cho nhanh.

📁 settings.json — luật chơi (rules/ là tuỳ chọn)

Phần cấu hình quan trọng nhất là hai file settings, nằm thẳng ở .claude/ gốc: settings.json (chia sẻ cho nhóm) và settings.local.json (riêng máy bạn). Thư mục rules/ chỉ là chỗ tuỳ chọn để tách bớt khi quy tắc dài ra — không bắt buộc.

Trong settings, bạn đặt quyền: việc gì Claude tự làm, việc gì phải hỏi trước.

{
  "permissions": {
    "allow": ["Bash(npm run test)", "Read", "Edit"],
    "ask":   ["Bash(git push:*)"]
  }
}

Với cấu hình này, Claude được tự chạy kiểm thử và sửa file, nhưng phải hỏi bạn trước khi đẩy mã lên.

💡 Điều ít người để ý: settings.json cũng là nơi cắm hooks (mục trước) — đây mới là chỗ "luật chơi" thật sự được thực thi, không chỉ là danh sách quyền. Ở máy Thanh, phần quyền nằm trọn trong settings.local.json (cả trăm dòng cho phép), còn settings.json lo phần hooks và cờ hệ thống.

📁 scripts/ — việc kỹ thuật gọi lại được

Khi có việc kỹ thuật lặp lại — xuất dữ liệu, dọn dẹp, đồng bộ — bạn tách thành script riêng rồi gọi lại khi cần. Script thật của Thanh lo phần tự động hoá bảng việc, ví dụ:

archive-done.py    # lưu việc đã xong vào nhật ký vĩnh viễn
reconcile-done.py  # đối chiếu cho khớp TRƯỚC khi dọn bảng việc
sync-state.py      # đồng bộ trạng thái lên trang web lịch

Một nguyên tắc Thanh giữ: luôn lưu trước khi dọnarchive-done.py chép việc đã xong sang nhật ký, reconcile-done.py kiểm cho khớp, rồi mới được xoá khỏi bảng. Không bao giờ xoá thẳng.

💡 Vị trí cũng là một lựa chọn: thay vì để hết trong .claude/scripts, Thanh gom script theo mảng việc — script vận hành để ở thư mục Operations, script của một dự án để ngay trong repo dự án đó. Gọn và dễ tìm hơn khi máy lớn dần.

Bắt tay vào làm

Lộ trình thiết lập trong 15 phút

Không cần làm hết một lúc. Đây là thứ tự Thanh khuyên: mỗi bước đều dùng được ngay, và bạn thêm dần khi gặp việc lặp lại.

1

Viết CLAUDE.md

Bàn giao dự án cho Claude: làm gì, viết bằng gì, quy ước ra sao. Đây là bước đổi đời lớn nhất.

2

Tạo .gitignore và CLAUDE.local.md

Tách ghi chú riêng và giấu bí mật trước khi làm gì thêm.

3

Thêm một skill đầu tiên

Chọn đúng việc bạn làm nhiều nhất, gói thành skill. Lần sau chỉ việc gọi.

4

Thêm một agent

Một trợ lý chuyên trách (soát lỗi, tìm tài liệu) cho việc cần góc nhìn riêng.

5

Đặt quyền trong settings.json

Cho phép việc an toàn, bắt hỏi trước với việc nhạy cảm như đẩy mã.

6

Thêm hook và lệnh tắt khi cần

Khi thấy mình lặp một thao tác, biến nó thành hook hoặc lệnh /.

Dựng nhanh khung thư mục

Chạy đoạn này ngay ở thư mục dự án để tạo sẵn khung .claude/:

mkdir -p .claude/{agents,skills,commands,hooks,output-styles,plugins,scripts}
touch CLAUDE.md CLAUDE.local.md .gitignore
echo "CLAUDE.local.md"             >> .gitignore
echo ".claude/settings.local.json" >> .gitignore
echo ".env"                         >> .gitignore
echo "Đã tạo xong khung .claude/ — giờ điền CLAUDE.md trước nhé."
💡 Sau bước này, mở Claude Code lên là nó đã đọc CLAUDE.md của bạn. Mỗi thư mục con bạn điền thêm sẽ làm nó mạnh lên một bậc.

Khi một .claude/ là chưa đủ

Từ một dự án lên cả một hệ nhiều agent

Dựng xong .claude cho một dự án, bạn đã đi trước phần lớn người dùng. Nhưng khi bạn có nhiều dự án cùng lúc, và muốn nhiều trợ lý làm việc song song mà không giẫm chân nhau — một .claude là chưa đủ. Đây là cách Thanh đang làm thật mỗi ngày.

Ý tưởng gốc: thay vì một file agent trong một dự án, Thanh coi mỗi phiên làm việc là một agent có tên, có vai, có quyền riêng — ví dụ claude-lich-deploy (chỉ lo đẩy trang lịch lên mạng), claude-email-funnel-pm (điều phối phễu email). Hiện có 22 vai có "hồ sơ nhập vai" đầy đủ — và đó mới là phần lõi: cả đội còn lớn hơn (hàng chục vai đang hoạt động), tất cả theo dõi trên một bảng việc chung mà bạn xem được công khai (mục dưới).

Tất cả sống ở thư mục ~/Operations/agents/ — ngoài .claude của từng dự án, ở tầng cả máy:

~/Operations/agents/
├── CLAUDE-LICH-DEPLOY-BOOT.md   # "hồ sơ nhập vai" của 1 agent
├── CLAUDE-EMAIL-PM-BOOT.md      # ... (22 hồ sơ, mỗi agent 1 file)
├── ACTIVE.md                    # sổ đăng ký: ai đang làm, sở hữu việc gì
├── ACTIVE-archive.md            # agent đã nghỉ / về hưu
├── AUTHORITY-MATRIX.md          # ai được phép làm gì
└── PM-TASK-ASSIGNMENTS.json     # ai đang được giao việc gì

Mỗi agent khởi động bằng cách đọc hồ sơ nhập vai của nó — một file ghi rõ "em là ai, đọc gì trước, được làm gì". Mở phiên mới, đặt tên, dán một câu là agent tự vào vai:

Em là `claude-lich-deploy` — agent chuyên đẩy trang lịch lên mạng.
Đọc theo thứ tự rồi báo cáo tình hình:
1. Hồ sơ vai + quy tắc riêng
2. Quy trình deploy (skill /deploy-lich)
3. Bảng việc hiện tại + sổ đăng ký (kiểm xem mình đã có dòng chưa)
Xong thì chờ tôi ra lệnh — KHÔNG tự deploy.
💡 Đây là chỗ chữ "agents" có hai tầng dễ nhầm: agents/ trong .claude (nửa đầu trang) là file trợ lý cho một dự án — cách chuẩn của Claude Code. Còn "agents" ở đây là cả một hệ phiên làm việc có tên, có sổ đăng ký, có quyền hạn — cùng một chữ, nhưng là một tầng cao hơn hẳn.

Để nhiều agent không giẫm chân nhau

Cách điều phối khi có nhiều agent cùng làm

Nhiều trợ lý cùng chạy thì câu hỏi khó nhất là: làm sao chúng không sửa đè lên nhau, không làm trùng việc, không gây loạn? Thanh giải bằng ba cơ chế — và đây là phần gần như không ai dạy.

① Một bảng việc chung, mỗi việc có chủ

Tất cả việc của mọi dự án nằm trong một bảng duy nhất — ~/Operations/STATE.md — sắp theo bốn ô ưu tiên (làm ngay / chiến lược / chờ / chưa rõ). Mỗi việc ghi rõ ai sở hữu; một agent không được sửa việc của agent khác.

### [đẩy-trang-lich] Đồng bộ trạng thái lên web lịch
- owned_by: claude-lich-deploy   # ai sở hữu việc này
- status: in_progress
- since: 2026-06-15
- next_action: chờ tôi duyệt rồi đẩy bản mới

② Một kênh trao đổi giữa các agent

Khi một agent điều phối (PM) giao việc cho agent khác, hai bên nói chuyện qua một file kênh chỉ ghi thêm, không xoá (PM-CHANNEL) — giao việc, hỏi đáp, báo xong đều để lại dấu. Chính trang bạn đang đọc cũng được giao và duyệt qua một kênh như vậy.

### [10:00] PM → agent thực thi
🎯 Giao việc: dựng trang, xong báo REVIEW trước khi đưa lên mạng.

### [10:40] agent thực thi → PM
📋 REVIEW: đã dựng + kiểm thử xong, chờ duyệt. (kèm đường dẫn)

### [10:45] PM → agent thực thi
✅ DUYỆT — đưa lên được.

③ Khoá khi sửa file chung

Với vài file dùng chung (như bảng việc), trước khi ghi agent phải giành khoá trong 120 giây, và ngay trước khi ghi còn kiểm lại lần cuối "có ai vừa sửa không" — nếu có thì đọc lại rồi đề xuất lại. Nhờ vậy hai agent không bao giờ ghi đè mất việc của nhau.

💡 Đây là thứ Thanh tốn nhiều công nhất và cũng là tài sản khó sao chép nhất: nhiều agent có chủ sở hữu việc rõ ràng, có kênh trao đổi, có khoá chống đè — gần như chưa thấy ai làm nội dung dạy phần này. Nó là lý do hệ này chạy được thật chứ không chỉ là demo.

④ Cả ba cơ chế, chạy thật trên một chiến dịch

Lý thuyết là vậy. Còn đây là lúc cả ba cơ chế trên cùng chạy trên một việc thật — một đợt gửi thư. Không phải một agent "cứ thế gửi", mà bốn vai chuyền việc cho nhau, có người gác cổng ở hai đầu.

Sơ đồ thật chuỗi thực thi một đợt gửi thư: Owner duyệt hướng → pm-166 (tổng quản) cấp bodies + lịch → email-funnel-pm-r2 chỉ đạo crm-mvp → crm-mvp đẩy danh sách + set lịch, đã áp luật bảo vệ dữ liệu → pm-166 nghiệm thu → BẮN

Ảnh thật: một dây chuyền chạy trọn một đợt gửi thư — bốn vai chuyền việc, hai cổng gác.

Đọc theo chiều chuyền việc: Thanh gác cổng đầu (duyệt hướng) → pm-166 (quản đốc) chẻ hướng thành các bức thư + xếp lịch → email-funnel-pm-r2 (trưởng phễu) chỉ việc xuống → crm-mvp (chạy danh sách) kéo đúng tệp khách, đặt lịch cả loạt.

Hai cái cổng làm nên độ an toàn. Cổng tuân thủ: crm-mvp tự dán nhãn "đã áp luật bảo vệ dữ liệu cá nhân (PDPL)" GIỮA chuyền, trước khi gửi. Cổng nghiệm thu: pm-166 soi lại nội dung + tệp NGAY TRƯỚC nút bắn — cái nút bấm là cả nghìn người nhận, không lấy lại được.

🔁 Đây không phải hai agent cãi nhau, cũng không phải một hội đồng bỏ phiếu — đây là dây chuyền chuyền việc, mỗi vai một công đoạn, có người gác cổng cuối. Chất lượng và an toàn đến từ cách bạn thiết kế chuỗi, không từ chuyện "một agent cứ thế gửi". Đây là 4 trong 22 vaimục "hệ nhiều agent" đang chạy thật trên một chiến dịch.
🔗 Xem hệ chạy thật — ngay lúc này: bảng điều phối của Thanh để công khai tại lich.erocathanh.com (cập nhật thời gian thực). Bạn thấy được cả đội agent và bốn ô việc — hiện 43 việc đang theo dõi, khoảng 40 việc hoàn tất mỗi tuần. Mở ra tự kiểm chứng: đây là hệ đang vận hành thật, không phải minh hoạ.
Ảnh thật bảng điều phối STATE Eisenhower của Eroca Thanh — bốn ô việc (Làm ngay · Chiến lược · Chờ · Chưa rõ) với các thẻ việc và agent phụ trách

Ảnh thật bảng điều phối — chụp 15/6; xem cập nhật thời gian thực tại lich.erocathanh.com

CLAUDE.md không chỉ là một file

Luật xếp tầng khắp máy — mỗi nơi một CLAUDE.md

Ở phần đầu, CLAUDE.md là một file cho một dự án. Khi cả máy có hàng chục dự án, Thanh đặt CLAUDE.md ở nhiều tầng — và chúng tự xếp chồng lên nhau theo vị trí bạn đang làm việc. Đây là "hiến pháp" của cả cỗ máy.

Ba tầng, từ chung đến riêng:

~/
├── CLAUDE.md                  # TẦNG GỐC — nội quy chung, MỌI phiên đều đọc
│                              #   (cách xưng hô, bố cục thư mục, vòng đời, luật cứng)
├── idea/inbox/                # nháp        → chỉ gốc + per-project (không cần luật miền)
│   └── /CLAUDE.md
├── Development/               # đang build  → chỉ gốc + per-project
│   └── /CLAUDE.md
├── Projects/                  # repo chính
│   ├── CLAUDE.md              # TẦNG MIỀN — brand, giọng, bản đồ repo
│   └── /CLAUDE.md       # TẦNG DỰ ÁN — stack, quy ước riêng repo
├── Operations/               # vận hành
│   └── CLAUDE.md              # TẦNG MIỀN — luật bảng việc / khoá / sổ đăng ký
└── Documents/EROCA_WIKI/     # kho tri thức
    └── CLAUDE.md              # TẦNG MIỀN — luật kho tri thức

Cách nối: Claude tự đọc CLAUDE.md ở thư mục bạn đang đứng, rồi lần ngược lên tận thư mục nhà. Mở phiên ở một repo trong Projects, Claude nhận chồng ba lớp: luật repo + luật miền Projects + nội quy gốc. Ở thư mục nháp thì chỉ hai lớp (dự án + gốc). Mục "trỏ đường" cuối mỗi file dẫn tiếp xuống chi tiết — thành một mạng có điều hướng, không rời rạc.

Điểm tinh ý: không phải tầng nào cũng cần file luật miền. Chỉ ba nơi thật sự có luật riêng mới đặt (Projects, Operations, kho tri thức); tầng nháp thì gốc lo là đủ. Ở máy Thanh: 1 file gốc + 3 file tầng miền + 21 file cấp dự án — đặt đúng chỗ cần, không thừa.

Vì sao xếp tầng thay vì một file khổng lồ

📍

Tự nhận luật theo vị trí

Mở ở thư mục nào, Claude tự đọc đúng luật chỗ đó cộng luật chung — bạn không phải dặn lại mỗi lần.

🎯

Mỗi luật sống đúng một chỗ

Luật chung ở gốc, luật miền ở tầng miền, luật riêng ở dự án — không trùng lặp, không lệch nhau theo thời gian.

🪶

Nhẹ và tiết kiệm

Mỗi phiên chỉ nạp lớp liên quan tới vị trí, phần chi tiết để lại "trỏ đường" gọi khi cần — không nuốt một file nặng.

🧩

Thêm dự án rất dễ

Dự án mới = thêm một CLAUDE.md của nó; nó tự thừa kế luật gốc + luật miền, khỏi chép lại.

🔗

Một mạng nối nhau

Gốc trỏ xuống tầng miền và bộ nhớ; agent luôn biết tìm luật "chính chủ" ở đâu, không đoán.

💡 Đây là khác biệt âm thầm mà lớn: hầu hết người dùng có đúng một CLAUDE.md. Khi bạn để luật xếp tầng theo vị trí, cả cỗ máy nhiều dự án vẫn nhất quán mà không ai phải nhắc — đó là nền cho mọi thứ phía trên chạy trơn.

Bộ nhớ tự lớn & vòng đời dự án

Để Claude nhớ thật và mọi dự án có chỗ đứng

Hai mảnh cuối của hệ: một bộ nhớ tự lớn theo thời gian (thay cho một file ghi chú phẳng), và một vòng đời rõ ràng để dự án không trôi nổi lung tung.

📁 Bộ nhớ hai tầng — thay vì một file phẳng

Nhớ ở nửa đầu trang, CLAUDE.local.md là một file ghi chú? Khi điều cần nhớ nhiều lên, một file phẳng sẽ vỡ: quá dài để đọc mỗi phiên, khó tìm, dễ trùng. Thanh thay bằng một kho bộ nhớ hiện có 141 file (mỗi mẩu một file) cộng một thư mục chờ duyệt, điều hướng bằng một mục lục hai tầng:

memory/
├── MEMORY.md          # mục lục gọn (≤40 dòng) — chỉ trỏ đường
├── *_INDEX.md         # 5 mục lục con, nạp khi cần đúng mảng đó
├── ... 141 file mẩu nhớ (mỗi mẩu 1 việc)
└── _pending/          # mẩu mới chờ tôi duyệt trước khi lưu

Mỗi phiên Claude chỉ đọc mục lục gọn rồi mở đúng 1–5 file cần thiết — không phải nuốt cả kho. Và bộ nhớ không tự ghi bừa: cuối phiên hệ thống đề xuất "điều này có đáng nhớ không", Thanh duyệt rồi mới lưu.

🔄 Vòng đời ba bậc cho mọi dự án

Mỗi dự án đi theo một đường rõ ràng, không vứt lung tung trên màn hình:

1

Ý tưởng nháp → hộp ý tưởng

Mọi thứ mới bắt đầu ở khu nháp, thoải mái thử và xoá.

2

Đã quyết làm → khu phát triển

Khi quyết làm thật, dự án chuyển sang khu build — được giữ, không bị dọn.

3

Đã lên mạng → khu dự án chính thức

Có repo, có bản trên mạng thì vào khu chính thức (đồng bộ với GitHub).

Bên cạnh là một khu riêng cho việc vận hành (bảng việc, lịch, nhật ký) — không bao giờ bị dọn — và một kho kiến thức gốc. Mỗi thứ có đúng một chỗ.

💡 Gộp lại, sáu mảnh — hệ nhiều agent, bảng việc có chủ, kênh trao đổi, khoá chống đè, bộ nhớ tự lớn, vòng đời ba bậc — biến Claude từ "trợ lý trả lời" thành một hệ vận hành chạy thật mỗi ngày. Muốn dựng cho riêng mình từ con số không, Thanh hướng dẫn từng bước trong buổi workshop AIBOSS AUTO CONTENT.
Vào Workshop AIBOSS AUTO CONTENT →