Từ AI assistant thành development partner. Giải thích cơ chế hoạt động của Claude và hướng dẫn Engineer Kit với real-world use cases và best/bad practices.
Claude Code là môi trường coding agentic từ Anthropic — không chỉ là chatbot trả lời câu hỏi, mà là AI có thể đọc files, chạy commands, sửa code, và tự động giải quyết vấn đề trong khi bạn quan sát hoặc đi làm việc khác.
| Traditional AI | Claude Code |
|---|---|
| Bạn viết code, AI review | Bạn mô tả ý tưởng, AI implement |
| Copy-paste từng đoạn | AI tự đọc/sửa files trực tiếp |
| Phải hướng dẫn từng bước | AI tự explore, plan, execute |
| Không có tool use | Full access: bash, git, file system |
Claude Code có context window chứa toàn bộ conversation: messages, files đã đọc, command outputs. Performance giảm khi context đầy — đây là constraint quan trọng nhất cần quản lý.
Giải pháp: /clear thường xuyên giữa các tasks không liên quan.
ClaudeKit là bộ workflow templates cho Claude Code, gồm 2 kits:
ClaudeKit là paid product. Mình highly recommend bộ kit này vì độ hiệu quả cũng như sự active trong việc maintenance của các maintainer — giúp tiết kiệm rất nhiều thời gian thay vì phải research quá nhiều configs, workflows đang đầy rẫy trên internet.
Mua ClaudeKit (giảm 20%)Engineer Kit (claudekit-engineer) biến Claude Code từ AI assistant thành development partner. Không phải app độc lập — là folder .claude/ bạn drop vào project.
Install CLI trước (1 lần duy nhất cho cả máy):
Nếu folder .claude/.claude\ đã tồn tại, backup hoặc merge files thủ công trước khi init.
ck init
project/ ├── CLAUDE.md Template (customize after) ├── AGENTS.md Agent definitions ├── .gitignore ├── .repomixignore Repomix ignore patterns ├── release-manifest.json Kit version manifest ├── plans/ Plans directory ├── .opencode/ OpenCode compatibility └── .claude/ ClaudeKit config ├── .ck.json Kit metadata ├── settings.json Claude Code settings ├── metadata.json Deletion patterns ├── statusline.cjs Statusline config ├── .env.example Environment template ├── .mcp.json.example MCP config template ├── agents/ 14+ definitions ├── hooks/ 22+ hooks ├── rules/ Workflow rules ├── skills/ 90+ commands ├── scripts/ Utility scripts ├── schemas/ JSON schemas ├── output-styles/ Response formats └── session-state/ Session tracking
ck new và ck init (mặc định "Update everything: Yes") tự động tạo CLAUDE.md template. Chỉ khi chọn "Update everything: No", CK mới bỏ qua file này.
Sau khi CK tạo template, bạn có thể tuỳ chỉnh thêm theo project:
/init trong Claude Code để regenerate từ codebase (nếu CLAUDE.md đã tồn tại, /init chỉ suggest improvements, không overwrite) Giữ dưới 200 dòng. File dài tốn context và khiến Claude dễ bỏ sót rule (adherence giảm — tức mức độ tuân thủ chỉ dẫn kém đi). Chỉ ghi những gì quan trọng: build commands, coding standards, quy ước chính. Nếu instructions phình ra, tách bớt sang @import hoặc file trong .claude/rules/.
Trong Claude Code session, chạy command /ck:coding-level (không có tham số) để mở interactive selector chọn 1 trong 6 levels. Hoặc set trực tiếp: /ck:coding-level 3.
Alternative — Output Styles (native): Claude Code có feature Output styles riêng — chạy /config → chọn "Output style" → pick từ menu. Đây là feature độc lập của Claude Code, tình cờ có một số style naming tương tự CK coding levels.
Khác biệt mechanism:
/ck:coding-level ghi vào .ck.json, guidelines inject qua SessionStart hook mỗi lần mở session.outputStyle trong .claude/settings.local.json, có hiệu lực từ session kế tiếp để giữ prompt cache ổn định). Chọn 1 trong 2 — dùng /ck:coding-level hoặc native Output styles, không nên bật cả hai cùng lúc để tránh guidelines chồng chéo.
| Level | Name | Style |
|---|---|---|
| 0 | ELI5 | Giải thích như nói với người không biết code |
| 1 | Junior | Explains WHY, mentor style |
| 2 | Mid-level | Design patterns, system thinking |
| 3 | Senior | Trade-offs, architecture decisions |
| 4 | Tech Lead | Risk & business impact |
| 5 | God Mode | Zero hand-holding (default, cho 15+ năm kinh nghiệm) |
God Mode giả định bạn là expert (15+ năm hoặc domain specialist) — biết trước câu trả lời, chỉ cần validation/second opinion/fast typing. Claude hoạt động như force multiplier, không phải teacher.
Nếu mới học Claude Code, set level 1 hoặc 2 để có explanations. God Mode tối ưu velocity nhưng giả định bạn tự debug được khi Claude sai.
.claude/rules/Với projects lớn, split instructions thành nhiều file nhỏ trong .claude/rules/ thay vì nhét tất cả vào một CLAUDE.md. Rules có thể scope theo file paths qua YAML frontmatter — chỉ load vào context khi Claude đụng files match pattern, tiết kiệm context space.
.claude/ directoryRules chỉ là 1 phần — .claude/ chứa nhiều loại config. Tóm tắt Project scope (shared với team qua git) vs Global scope (personal, per-machine):
./CLAUDE.md # project instructions (hoặc ./.claude/CLAUDE.md) ./CLAUDE.local.md # personal — gitignored ./.mcp.json # MCP servers (team-shared) ./.worktreeinclude # copy gitignored files vào worktree mới (optional) ./.claude/ ├── settings.json # permissions, hooks, model ├── settings.local.json # personal — auto-gitignored ├── rules/*.md # topic rules (path-scopable) ├── skills/<name>/ # /skill-name + bundles ├── commands/*.md # /command (legacy — prefer skills) ├── agents/*.md # subagents ├── agent-memory/ # project subagent memory (memory: project) └── output-styles/*.md # system-prompt styles
.\CLAUDE.md # project instructions (hoặc .\.claude\CLAUDE.md) .\CLAUDE.local.md # personal — gitignored .\.mcp.json # MCP servers (team-shared) .\.worktreeinclude # copy gitignored files vào worktree mới (optional) .\.claude\ ├── settings.json # permissions, hooks, model ├── settings.local.json # personal — auto-gitignored ├── rules\*.md # topic rules (path-scopable) ├── skills\<name>\ # /skill-name + bundles ├── commands\*.md # /command (legacy — prefer skills) ├── agents\*.md # subagents ├── agent-memory\ # project subagent memory (memory: project) └── output-styles\*.md # system-prompt styles
~/.claude.json # app state, personal MCP, UI prefs ~/.claude/ ├── CLAUDE.md # global instructions ├── settings.json # default settings ├── keybindings.json # custom shortcuts ├── rules/*.md # user-level rules ├── skills/ # personal skills ├── commands/ # personal commands ├── agents/ # personal subagents ├── agent-memory/ # subagent memory (memory: user) ├── output-styles/ # personal styles ├── plugins/ # installed plugins (auto-managed) └── projects/<project>/memory/ # auto-memory (Claude tự ghi)
%USERPROFILE%\.claude.json # app state, MCP, UI prefs %USERPROFILE%\.claude\ ├── CLAUDE.md # global instructions ├── settings.json # default settings ├── keybindings.json # custom shortcuts ├── rules\*.md # user-level rules ├── skills\ # personal skills ├── commands\ # personal commands ├── agents\ # personal subagents ├── agent-memory\ # subagent memory (memory: user) ├── output-styles\ # personal styles ├── plugins\ # installed plugins (auto-managed) └── projects\<project>\memory\ # auto-memory (Claude tự ghi)
Thêm YAML frontmatter vào đầu file rule để giới hạn phạm vi áp dụng. Claude chỉ nạp rule vào context khi đang thao tác với files match glob pattern — giảm context bloat mà vẫn giữ guidance chuyên biệt cho từng domain (auth, db, UI, tests…).
Rules (và CLAUDE.md) là instructions Claude đọc, không phải config Claude Code enforce. Claude có thể không follow nếu instructions mâu thuẫn hoặc mơ hồ. Cho behavior guaranteed, dùng:
settings.json) — scripts chạy trước/sau tool calls| CLAUDE.md + rules | settings.json |
|---|---|
| Concatenated vào context — cả global + project + local đều được đọc | Key-level override — project override global, local override project |
| Khi conflict: file load sau thắng (last read) | Arrays (permissions.allow) combine; scalars (model) lấy giá trị specific nhất |
skills/<name>/SKILL.md — bundle SKILL.md + supporting files (checklist, scripts, reference docs). Nếu skill và command trùng tên, skill thắng.~/.claude/projects/<project>/memory/MEMORY.md (first 200 dòng / 25KB loaded mỗi session). Topic files lazy-load. Toggle: /memory hoặc autoMemoryEnabled setting.| CLAUDE.md | .claude/rules/*.md |
|---|---|
| Instructions chung cho toàn project | Instructions modular, chia theo topic/path |
| Luôn load vào context từ launch | Không paths: load từ launch · Có paths: lazy-load khi match files |
| Target: under 200 dòng | Mỗi file một topic (code-style.md, testing.md...) |
| Build commands, conventions tổng quan | Domain rules: API, frontend, security, DB... |
| Một file duy nhất | Nhiều file, subdirectories recursive |
Dùng YAML frontmatter với field paths để rule chỉ active khi Claude đụng files match:
Rules không có paths field load unconditionally. Có paths thì trigger khi Claude read files match pattern.
.claude/rules/i18n-rules.md cho app đa ngôn ngữ.Khi mở một session, Claude đọc các file memory theo thứ tự từ trên xuống, rồi nối (concatenate) tất cả vào context — không ghi đè lẫn nhau.
Rules có paths frontmatter chỉ kích hoạt khi Claude đụng file khớp pattern — không nạp lúc khởi động. Nhờ vậy bạn có thể viết rule riêng cho từng thư mục mà không làm CLAUDE.md phình ra.
Anthropic khuyến nghị CLAUDE.md nên dưới 200 dòng. File dài hơn sẽ làm adherence giảm — nghĩa là Claude bỏ sót hoặc lờ đi rule của bạn nhiều hơn vì phải đọc quá nhiều thông tin. File rule cũng nên giữ ngắn. Khi CLAUDE.md sắp chạm 200 dòng, hãy tách ra .claude/rules/ theo chủ đề (ví dụ api-design.md, testing.md, security.md). Đặt tên file mô tả rõ nội dung để cả team và chính Claude tìm nhanh bằng Grep.
Khi project lớn hoặc muốn chia sẻ rule giữa nhiều repo, bạn có 4 cơ chế mở rộng context. Sơ đồ dưới cho thấy mỗi cơ chế kéo thêm file vào CLAUDE.md gốc như thế nào.
@import syntax
Nhúng file khác thẳng vào CLAUDE.md
Trong CLAUDE.md, viết @docs/coding-standards.md hoặc @~/.claude/my-prefs.md để nhúng nội dung file đó vào đúng vị trí. Claude hỗ trợ cả đường dẫn tương đối lẫn tuyệt đối, độ sâu tối đa 5 lần nhúng lồng nhau (hop). Dùng để tách content dài ra file riêng mà vẫn giữ CLAUDE.md gọn.
--add-dir flag
Mở thêm thư mục làm việc trong cùng session
Thông thường Claude Code chỉ đọc file trong thư mục bạn khởi chạy (working directory). Flag --add-dir cho phép mở thêm thư mục khác vào cùng một session — tiện khi làm monorepo hoặc cần tham chiếu thư mục ../shared, ../design-system bên ngoài project hiện tại.
Ba cách kích hoạt đều tương đương: flag --add-dir khi chạy lệnh, slash command /add-dir ngay trong session, hoặc khai báo additionalDirectories trong settings.json.
Lưu ý quan trọng: mặc định Claude không nạp file CLAUDE.md hay CLAUDE.local.md từ các thư mục thêm qua --add-dir — để giữ tương thích ngược với project cũ. Nếu muốn Claude áp dụng memory từ những thư mục đó, bật biến môi trường sau trước khi chạy:
Sau khi bật, mọi CLAUDE.md hoặc CLAUDE.local.md trong thư mục được thêm sẽ được nạp cùng với project chính, giúp Claude hiểu quy ước riêng của từng workspace trong cùng một session. Tính năng này có từ phiên bản 2.1.20 và để opt-in vì lý do tương thích ngược.
CLAUDE.local.md
Ghi chú cá nhân, không commit vào git
File dành cho sở thích riêng của bạn trong project (URL sandbox, tài khoản test, lệnh debug cá nhân). Thêm CLAUDE.local.md vào .gitignore để không lẫn vào commit. Claude nạp file này cùng với CLAUDE.md nhưng chỉ hiển thị với máy bạn — team khác không thấy.
Thư mục .claude/rules/ hỗ trợ symlink — bạn giữ bộ rule chuẩn của team ở một nơi duy nhất rồi link vào từng project. Khi cập nhật rule, mọi project đều nhận cùng lúc. Claude tự phát hiện symlink vòng (circular) và bỏ qua, không bị kẹt.
--fast: Skip research | --auto: Skip all review gates
Single highest-leverage tip.
/ck:cook đã bao gồm testing. Dùng /ck:test [path] riêng khi cần test specific folder.
Dùng /ck:plan trực tiếp khi:
Dùng /ck:brainstorm trước khi: chưa biết approach nào tốt nhất, cần trade-off analysis (WebSockets vs SSE), feature mới chưa có tiền lệ.
Với UI-heavy features, thêm bước mockup để review trước:
Mockup HTML với mock data nhanh hơn implement thật. Catch design issues sớm, tránh rework.
Khi nào cần /clear:
Fix: /clear giữa mỗi task không liên quan
Fix: After 2 failed corrections → /clear và viết prompt tốt hơn
Fix: /ck:plan --fast cho lightweight planning
Fix: /ck:test + manual testing + code review → then ship
Fix: Specific symptom + location + expected behavior
Cheat sheet này chỉ liệt kê 14 lệnh thường dùng. Xem bảng tra cứu đầy đủ, cú pháp chi tiết và ví dụ thực tế cho mọi command tại vividkit.dev/guides/commands.
| Situation | Command |
|---|---|
| Explore options | /ck:brainstorm [question] |
| Plan feature | /ck:plan [description] |
| Implement feature | /ck:cook [description] |
| Quick small fix | /ck:cook --fast [fix] |
| Fix bug | /ck:fix [symptom] |
| Technical question | /ck:ask [question] |
| Run tests | /ck:test [path] |
| Explore codebase | /ck:scout [path] |
| Code review | /ck:code-review [path|--pr N] |
| Review changes | /ck:watzup |
| Commit | /ck:git cm "message" |
| Full ship pipeline | /ck:ship |
| Clear context | /clear |
| Set beginner mode | /ck:coding-level 1 |