Workflow hoàn chỉnh
Bài 12 — Workflow hoàn chỉnh
#Vấn đề: bạn đã biết nhiều thứ, nhưng chưa ghép lại được
Qua 10 bài trước, bạn đã biết:
- CLAUDE.md là gì và cách viết
- Cách truyền context hiệu quả
- Plan mode, headless mode, multi-agent
- Hooks, MCP server
- Best practices an toàn
Nhưng kiến thức rời rạc không giúp bạn làm việc nhanh hơn. Bạn cần một quy trình lặp lại — mở Claude Code, hoàn thành task, commit, đóng session. Mọi lần, cùng một cách, không bỏ sót.
Bài này ghép tất cả thành một workflow end-to-end. Sau khi hoàn thành, bạn sẽ có một thói quen chuyên nghiệp thay vì "mở đại rồi hỏi đại".
#Scenario thực tế
Bạn nhận task: "Thêm API endpoint cho phép user đổi mật khẩu, có validation và test."
Đây là task điển hình — không quá phức tạp, không quá đơn giản. Chúng ta sẽ đi từ đầu đến cuối.
#Bước 1: Setup CLAUDE.md (nếu chưa có)
Kiểm tra xem dự án đã có CLAUDE.md chưa:
ls CLAUDE.mdNếu chưa có, tạo nhanh:
# Project: User API (Node.js + Express + TypeScript)
## Stack
- Runtime: Node.js 20
- Framework: Express 5
- Database: PostgreSQL with Prisma ORM
- Test: Vitest
- Lint: ESLint + Prettier
## Commands
- Dev: `npm run dev`
- Test: `npm test`
- Lint: `npm run lint`
- Build: `npm run build`
## Conventions
- API routes trong src/routes/, controller trong src/controllers/
- Validation dùng Zod schema
- Error handling: throw AppError class từ src/errors.ts
- Test đặt cạnh file: auth.controller.test.ts
## Structure
- src/routes/ — Express routes
- src/controllers/ — Business logic
- src/middleware/ — Express middleware
- src/validations/ — Zod schemas
- prisma/ — Database schemaCLAUDE.md giúp agent hiểu dự án ngay lập tức — không cần bạn giải thích lại mỗi session.
#Bước 2: Tạo nhánh riêng và commit checkpoint
git checkout -b feat/change-password-api
git add -A && git commit -m "checkpoint: before adding change password API"Nhớ bài 11: luôn ở nhánh riêng, luôn có checkpoint. Đây là thói quen không được bỏ qua.
#Bước 3: Mở Claude Code với task rõ ràng
claudeTask description phải cụ thể và đầy đủ:
Thêm API endpoint POST /api/users/change-password.
Yêu cầu:
- Input: { currentPassword, newPassword, confirmPassword }
- Validation bằng Zod: newPassword >= 8 ký tự, phải có chữ hoa + số
- Kiểm tra currentPassword có đúng không (so sánh hash trong DB)
- Mã hóa newPassword bằng bcrypt trước khi lưu
- Trả về 200 nếu thành công, 400 nếu validation fail, 401 nếu sai mật khẩu hiện tại
- Viết test đầy đủ cho cả 3 trường hợp
Làm theo pattern hiện tại của dự án — xem src/routes/auth.routes.ts và src/controllers/auth.controller.ts để tham khảo.Tại sao task này tốt?
- Rõ ràng: endpoint nào, input gì, output gì
- Có ràng buộc: validation rules cụ thể
- Có reference: chỉ agent xem file hiện có để làm theo pattern
- Có tiêu chí kiểm tra: test cho 3 trường hợp
#Bước 4: Dùng plan mode cho task phức tạp
Trước khi để agent code, yêu cầu nó lập kế hoạch:
Lên plan trước, chưa code. Cho tôi xem bạn sẽ sửa những file nào, tạo file nào, cấu trúc code ra sao.Agent sẽ trả lời something like:
Plan:
1. Tạo src/validations/change-password.validation.ts — Zod schema
2. Tạo src/controllers/change-password.controller.ts — business logic
3. Sửa src/routes/user.routes.ts — thêm route mới
4. Tạo src/controllers/change-password.controller.test.ts — testĐọc plan kỹ. Nếu agent định sửa file bạn không mong đợi — hỏi tại sao. Nếu nó bỏ sót — yêu cầu thêm. Nếu plan ổn — mới cho phép thực thi:
Plan OK, thực hiện đi.Đây là lúc bạn kiểm soát chất lượng trước khi code được viết.
#Bước 5: Agent thực thi — quan sát và duyệt
Agent sẽ lần lượt tạo/sửa file. Ở chế độ mặc định (Ask), nó hỏi trước mỗi lần:
Tôi sẽ tạo file src/validations/change-password.validation.ts với nội dung sau:
[schema code]
Bạn có đồng ý không?Bạn đọc nhanh, chọn Yes/No. Nếu có vấn đề — sửa ngay, đừng để agent tiếp tục sai.
⚠️ Cẩn thận: Đừng bấm "Yes" mù quáng
Khi agent hỏi 5 lần liên tiếp, rất dễ hình thành thói quen bấm Yes nhanh. Đây là lúc lỗi lẻn vào. Mỗi lần bấm Yes, bạn đang chấp nhận code sẽ nằm trong dự án. Dành 10 giây đọc — còn hơn dành 2 giờ debug sau này.
#Bước 6: Review diff toàn diện
Agent hoàn thành. Trước khi commit:
git diff --statOutput:
src/controllers/change-password.controller.ts | 45 +++
src/controllers/change-password.controller.test.ts | 87 +++
src/routes/user.routes.ts | 3 +
src/validations/change-password.validation.ts | 18 +++
4 files changed, 153 insertions(+)Đúng 4 file như plan? Tốt. Tiếp theo đọc chi tiết:
git diff src/controllers/change-password.controller.tsKiểm tra:
- Có import đúng không?
- Có so sánh password bằng bcrypt không?
- Có throw AppError đúng cách không?
- Có try/catch không?
git diff src/validations/change-password.validation.tsKiểm tra:
- Validation rule đúng yêu cầu không?
- Có check confirmPassword match newPassword không?
Nếu có gì sai — yêu cầu agent sửa. Nếu ổn — tiếp tục.
#Bước 7: Chạy test
npm testNếu test pass — tốt. Nếu fail — đọc lỗi và yêu cầu agent fix:
Test fail ở dòng 34: expect 400 nhưng nhận 401.
Kiểm tra validation middleware có chạy trước controller không.Agent sẽ sửa và bạn chạy lại. Lặp cho đến khi pass.
⚠️ Cẩn thận: Đừng commit khi test fail
"Test fail nhưng code chạy được" — đây là bẫy. Nếu bạn commit code có test fail, người khác pull về sẽ nghĩ họ phá test. Hoặc worse: CI pipeline fail và block mọi người. Luôn sửa test trước khi commit.
#Bước 8: Commit và push
git add -A
git commit -m "feat: add change password API endpoint
- POST /api/users/change-password
- Zod validation: minLength 8, uppercase + number
- bcrypt comparison for current password
- Full test coverage for success + validation + auth errors"Push lên remote:
git push origin feat/change-password-api#Bước 9: Dọn dẹp session
Trong Claude Code:
Cảm ơn, task hoàn thành. Tóm tắt lại những gì đã thay đổi.Agent sẽ liệt kê. Lưu ý lại nếu cần. Sau đó thoát session.
# Nếu không cần agent nữa
exit#Quy trình tóm tắt (copy để dùng hàng ngày)
┌─────────────────────────────────────────────────┐
│ 1. CLAUDE.md đã có chưa? (hoặc cập nhật) │
│ 2. git checkout -b feat/xxx │
│ 3. git add -A && git commit -m "checkpoint" │
│ 4. Mở Claude Code, mô tả task cụ thể │
│ 5. Yêu cầu plan trước khi code │
│ 6. Duyệt plan → cho phép thực thi │
│ 7. Review git diff kỹ │
│ 8. Chạy test → fix nếu fail │
│ 9. git commit + push │
│ 10. Đóng session │
└─────────────────────────────────────────────────┘10 bước. Lặp lại mỗi lần. Khi thành thói quen, bạn sẽ mất 30 giây cho setup nhưng tiết kiệm hàng giờ sửa lỗi.
#Tổng kết — và tổng kết cả khóa học
Bạn vừa hoàn thành workflow end-to-end: từ CLAUDE.md đến commit. Quy trình này áp dụng cho mọi task — từ fix bug nhỏ đến refactor lớn. Sự khác biệt giữa dev dùng agent giỏi và dev dùng agent dở không phải ở kiến thức AI — mà ở quy trình.
#Tổng kết khóa học
12 bài, 6 module. Bạn đã đi từ "Claude Code là gì?" đến "làm việc chuyên nghiệp với agent". Đây là bản đồ:
| Module | Bạn đã học |
|---|---|
| Module 1 — Làm quen | Claude Code là gì, cài đặt, session đầu tiên |
| Module 2 — Context | CLAUDE.md, cách truyền context, memory |
| Module 3 — Workflow | Plan mode, headless, multi-agent |
| Module 4 — Tích hợp | Git workflow, hooks, MCP server |
| Module 5 — Mở rộng | Routines, custom slash commands |
| Module 6 — An toàn | Best practices, workflow hoàn chỉnh |
Nhưng khóa học này chỉ là bắt đầu. Claude Code phát triển liên tục — mỗi tháng có tính năng mới. Điều quan trọng nhất bạn mang theo không phải kiến thức cụ thể, mà là cách tư duy: làm việc với agent như mentor junior — hướng dẫn rõ ràng, review kỹ, không bao giờ tin tưởng mù quáng.
#Tiếp theo học gì?
| Chủ đề | Mô tả |
|---|---|
| Claude Agent SDK | Xây agent tùy chỉnh cho workflow riêng — tích hợp vào hệ thống nội bộ |
| GitHub Actions + Claude | Tự động review PR, tạo changelog, chạy CI với agent |
| Routines nâng cao | Tạo workflow phức tạp: multi-step deployment, automated code review |
| Team workflow | Chuẩn hóa CLAUDE.md cho team, chia sẻ hooks và MCP config |
Mở claude lên và bắt đầu. Task đầu tiên: review codebase hiện tại của bạn — tìm 3 chỗ có thể refactor. Agent sẽ chỉ cho bạn thấy những gì bạn đã bỏ lỡ.
Chúc bạn code vui và an toàn.