Bạn đã bao giờ cảm thấy mệt mỏi vì phải liên tục nhắc đi nhắc lại một yêu cầu cho AI Coding Agent? Chẳng hạn như việc luôn phải nhắc AI sử dụng const, let thay vì var, hay AI thường xuyên “quên” TypeScript và tự động viết bằng JavaScript? Nếu bạn đang gặp tình trạng này, điều đó chứng tỏ dự án của bạn đang thiếu đi một thành phần cốt lõi: Rules (Quy tắc).

Bài viết này sẽ hướng dẫn bạn cách thiết lập và viết Rules chuẩn mực nhất, giúp AI hoạt động ổn định, đồng nhất và đặc biệt là tiết kiệm một lượng lớn token lãng phí.

Tại sao cần phải viết Rules cho AI Coding Agent?

Mỗi khi bạn mở một phiên làm việc (session) mới, theo mặc định, các AI Coding Agent không thể nhớ gì về các cuộc hội thoại trước đó của bạn. Hệ quả là AI sẽ tự làm việc theo cách suy luận mặc định của nó, dẫn đến sự thiếu đồng nhất trong code, như việc quên áp dụng Tailwind CSS thay vì CSS thuần.

Hãy hình dung AI Agent giống như một lập trình viên Junior mới vào team nhưng lại có… trí nhớ rất kém. Mỗi sáng đến làm việc, họ lại quên hết quy trình và bạn phải nhắc lại từ đầu. Việc viết Rules giống như bạn đưa cho người Junior này một “cuốn sổ tay quy tắc”. Mỗi khi làm việc, họ chỉ cần mở sổ ra là hiểu ngay dự án cần dùng Functional Component, phải xử lý lỗi với try-catch đầy đủ, hay đặt file đúng trong folder quy định. Điều này không chỉ giúp kết quả chính xác hơn mà còn giúp bạn không tốn token để gõ lại prompt (câu lệnh) thủ công mỗi ngày.

Các cấp độ hoạt động của Rules

Tùy thuộc vào công cụ bạn đang dùng, điển hình như Cursor, Rules thường được chia thành 3 cấp độ cơ bản:

  • Cấp độ Global (Toàn cầu): Đây là những tùy chỉnh mang phong cách cá nhân của Developer, được lưu trữ trên máy tính và áp dụng cho mọi project mà bạn mở.
  • Cấp độ Project (Dự án): Áp dụng riêng cho từng project cụ thể. Nó thường là các file Markdown (ví dụ .mdc – Markdown Cursor) được commit trực tiếp vào mã nguồn để chia sẻ cho toàn bộ team cùng sử dụng.
  • Cấp độ Contextual (Ngữ cảnh): Đây là tầng kiểm soát chi tiết nhất. Thông qua cấu hình globs (nhóm đường dẫn) và alwaysApply, bạn có thể quy định Rule nào chỉ được kích hoạt ở thư mục nào (ví dụ: chỉ áp dụng cho folder components với đuôi .tsx).

Phân loại các chế độ kích hoạt rules

Khi sử dụng định dạng .mdc (Markdown Cursor), phần khai báo (frontmatter) ở đầu file sẽ quyết định cách AI kích hoạt Rule:

  1. Always (Luôn luôn): Khi thiết lập alwaysApply: true. Rule sẽ tự động inject vào mọi đoạn hội thoại. Thích hợp cho các luật bất di bất dịch như: Luôn dùng TypeScript Strict Mode, bắt buộc có Error Handling cho mọi hàm, hoặc tuân thủ Conventional Commits.
  2. Auto Attach (Đính kèm tự động): Thiết lập theo domain cụ thể để context gọn gàng hơn. Ví dụ: Khi bạn sửa file trong folder Components, AI mới lấy các luật về React ra dùng.
  3. Agent Request: Bỏ trống phần `globs` và đặt alwaysApply: false. Lúc này AI sẽ tự động đọc mô tả (description) để quyết định xem tác vụ hiện tại (như Database Migration, Security Audit) có cần dùng Rule này không.
  4. Manual (Thủ công): Dùng phím @ để gọi trực tiếp tên của Rule trong khung chat khi thực sự cần.

Phân biệt “Rules” (Quy tắc) và “Skills” (Kỹ năng)

Mặc dù nghe có vẻ giống nhau, nhưng Rules và Skills có mục đích sử dụng hoàn toàn khác biệt:

  • Rules: Là các luật lệ, ràng buộc cụ thể mà AI bắt buộc phải tuân theo (ví dụ: dùng named export, dùng TypeScript).
  • Skills: Thiên về quy trình làm việc (workflow). Chẳng hạn kỹ năng “Review Pull Request”. AI sẽ tự biết phải chạy qua 3 bước: fetch diff -> chạy test -> so sánh convention mà không cần bạn phải chỉ bảo từng bước.

Thiết lập Rules cho một số công cụ phổ biến (Claude Code & Các Agent Khác)

Nếu bạn sử dụng Claude Code, file cấu hình chính có tên là CLAUDE.md. Bạn có thể khởi tạo file này bằng lệnh shared init để Claude tự tìm hiểu dự án và tạo ra file instruction (hướng dẫn). Bạn có thể tạo CLAUDE.md ở thư mục gốc, thư mục con (như src/components/CLAUDE.md) hoặc file .claude.local (nhớ đưa vào .gitignore) nếu chỉ muốn dùng cho riêng mình.

Ngoài ra, còn có tiêu chuẩn agents.md. Đây là định dạng đề xuất chung được hợp tác bởi Vercel, OpenAI, Google và Cursor. Một file agents.md sẽ cung cấp cái nhìn tổng quan về tech stack (Next.js, App Router) cho mọi loại Agent mà team bạn sử dụng, đảm bảo tính đồng nhất dù mỗi người trong team dùng một công cụ AI khác nhau.

5 Nguyên tắc vàng (Best Practices) để viết Rules tối ưu, tiết kiệm token

#1. Viết cực kỳ cụ thể và mang tính hành động

Tránh viết những quy tắc chung chung như “Hãy viết code đẹp và dễ đọc”. AI không thể hiểu “như thế nào là đẹp”. Thay vào đó, hãy viết rõ: “Dùng functional component với TypeScript, tên biến và hàm phải dùng định dạng camelCase, không được dùng any, nếu không chắc chắn hãy dùng unknown.

#2. Phải kèm theo ngữ cảnh (Context) của dự án

Đừng chỉ cấm AI làm gì, hãy giải thích lý do. Chẳng hạn thay vì viết: “Không gọi API từ Client Component”, hãy viết: “Không gọi API từ Client Component bởi vì Backend của chúng ta có CSRF token chỉ cấp qua Server Action. Nếu gọi từ Client sẽ bị lỗi 403. Nếu cần fetch data hãy dùng Server Component”.

#3. Luôn cung cấp ví dụ Tốt (Good) và Xấu (Bad)

Khi yêu cầu AI tuân theo Conventional Commit, hãy ghi rõ định dạng kèm ví dụ.
Good: feature(auth): add Google OAuth login hoặc fix(api): handle timeout error.
Bad: update code, fix bug, work in progress (những mô tả không rõ ràng).

#4. Chia nhỏ Rules theo Domain (Chia để trị)

Việc nhồi nhét 800 dòng luật vào một file chung và liên tục tải nó vào Context Window ở mọi phiên làm việc là hành động vô cùng lãng phí token. Hãy chia nhỏ Rules ra thành các file theo từng folder (domain). Khi AI sửa API thì chỉ tải Rules của API, khi sửa React Component thì tải Rules của Component thông qua globs pattern. Điều này giúp cửa sổ ngữ cảnh sạch sẽ và tiết kiệm token hiệu quả nhất.

#5. Liên tục cập nhật (Update) quy tắc

Quá trình làm việc với AI là quá trình liên tục cải tiến. Nếu bạn thấy AI lặp đi lặp lại một lỗi từ 2-3 lần (ví dụ cứ cố chấp dùng var chuẩn ES5 thay vì const hay let), hãy ngay lập tức mở file Rules General ra và bổ sung thêm điều khoản cấm dùng var.


Tạm Kết: Bằng cách thiết lập cấu trúc Rules thông minh, chia nhỏ theo ngữ cảnh, và liên tục bổ sung dựa trên thực tế, AI Coding Agent của bạn sẽ ngày càng thông minh, phản hồi chính xác và tiết kiệm lượng token khổng lồ. Hãy bắt tay vào tạo file Rules cho dự án của bạn ngay hôm nay!