Rules theo đường dẫn cho việc nạp quy ước có điều kiện
Những điều bạn cần biết
Rules theo đường dẫn là cơ chế áp dụng quy ước có điều kiện dựa trên việc bạn đang chỉnh sửa file nào. Chúng giải quyết một vấn đề mà cả CLAUDE.md ở gốc lẫn CLAUDE.md cấp thư mục đều xử lý không tốt: các quy ước phải áp dụng cho một loại file cụ thể nằm rải rác trên nhiều thư mục.
Rules theo đường dẫn hoạt động như thế nào
Các file rule nằm trong thư mục .claude/rules/. Mỗi file chứa frontmatter YAML với trường paths chỉ định các glob pattern. Các rule bên trong file chỉ nạp khi bạn đang chỉnh sửa các file khớp với những pattern đó.
yamlCopy
---
paths: ["terraform/**/*"]
---
# Terraform Conventions
- Use snake_case for all resource names
- Tag every resource with environment and team labels
- Never hardcode AMI IDs — use data sources
- All modules must have a variables.tf, outputs.tf, and README.mdKhi bạn chỉnh sửa một file khớp terraform/**/*, các rule này tự động nạp. Khi bạn chỉnh sửa một component React hay một handler API, chúng không nạp. Các rule vô hình cho đến khi liên quan.
Glob pattern khớp trên toàn bộ codebase
Đây là ưu điểm then chốt. Một glob pattern như **/*.test.tsx bắt được mọi file test trong codebase, bất kể nó nằm ở thư mục nào. Xét một cấu trúc dự án điển hình:
src/ components/ Button.tsx Button.test.tsx api/ auth.ts auth.test.ts utils/ format.ts format.test.ts pages/ dashboard/ Dashboard.tsx Dashboard.test.tsx
Các file test nằm cạnh file nguồn của chúng trên bốn thư mục khác nhau. Một rule theo đường dẫn với paths: ["**/*.test.tsx", "**/*.test.ts"] áp dụng cùng quy ước test cho tất cả các file này, một cách tự động.
Tại sao không dùng CLAUDE.md cấp thư mục?
Một CLAUDE.md cấp thư mục chỉ áp dụng cho các file trong thư mục đó. Để áp dụng quy ước test cho các file test nằm rải rác trên 50+ thư mục, bạn sẽ phải đặt một file CLAUDE.md trong từng thư mục chứa test. Điều đó có nghĩa là:
- 50+ bản sao của cùng một bộ quy ước
- Mỗi thư mục mới có test lại cần thêm một bản sao
- Bất kỳ thay đổi quy ước nào cũng đòi hỏi cập nhật cả 50+ file
- Sự lệch pha là điều không tránh khỏi khi một số bản sao bị bỏ sót
Rules theo đường dẫn với glob pattern loại bỏ hoàn toàn vấn đề này. Một file, một pattern, bao phủ toàn bộ.
Tại sao không dùng CLAUDE.md ở gốc?
CLAUDE.md ở gốc nạp cho mọi phiên, bất kể bạn đang chỉnh sửa file nào. Nếu các quy ước Terraform của bạn nằm trong CLAUDE.md ở gốc, chúng vẫn tiêu tốn token ngay cả khi bạn đang chỉnh sửa các component React. Nếu các quy ước test của bạn nằm ở gốc, chúng vẫn nạp khi bạn đang viết handler API.
Khái niệm chính
Rules theo phạm vi đường dẫn tiết kiệm token hơn CLAUDE.md ở gốc vì chúng CHỈ nạp khi chỉnh sửa các file khớp. Điều này giảm context không liên quan và giữ cho model tập trung vào các quy ước thực sự áp dụng cho công việc hiện tại. Trong các dự án lớn với nhiều loại quy ước, mức tiết kiệm này rất đáng kể.
Ví dụ thực tế về file rule
Quy ước test trên toàn bộ codebase:
yamlCopy
---
paths: ["**/*.test.ts", "**/*.test.tsx", "**/*.spec.ts", "**/*.spec.tsx"]
---
# Test Conventions
- Use describe/it blocks with descriptive names that read as sentences
- Each test file must have at least one happy path and one error case
- Use factory functions for test data, not inline object literals
- Mock external services at the module boundary, not individual functions
- Assert behaviour, not implementation detailsQuy ước API cho mọi route handler:
yamlCopy
---
paths: ["src/api/**/*", "**/routes/**/*", "**/*.controller.ts"]
---
# API Conventions
- All endpoints return { data, error, metadata } response shape
- Use Zod schemas for request validation at the handler boundary
- Log request ID on every error response
- Rate limiting configuration must be explicit, not inherited from defaultsQuy ước infrastructure-as-code:
yamlCopy
---
paths: ["terraform/**/*", "**/*.tf", "infrastructure/**/*"]
---
# Infrastructure Conventions
- State files must reference remote backends, never local
- Use workspaces for environment separation
- Every module must be versioned with a CHANGELOGKhi nào dùng cách tiếp cận nào
| Tình huống | Cách tiếp cận tốt nhất |
|---|---|
| Chuẩn chung của nhóm áp dụng cho toàn bộ code | CLAUDE.md ở gốc |
| Quy ước cho một thư mục package cụ thể | CLAUDE.md cấp thư mục |
| Quy ước cho một loại file rải rác trên nhiều thư mục | Rules theo đường dẫn với glob pattern |
| Workflow theo tác vụ cụ thể, được gọi khi cần | Skills trong .claude/skills/ |
Đề thi thường xuyên đưa ra kịch bản file test nằm cạnh file nguồn trên nhiều thư mục. Câu trả lời luôn là rules theo đường dẫn với glob pattern.
Bẫy thi
Bẫy thi: Chọn CLAUDE.md cấp thư mục thay vì rules theo đường dẫn cho các quy ước xuyên nhiều thư mục
Khi các quy ước phải áp dụng cho các file rải rác trên 50+ thư mục (như các file test nằm cùng chỗ với source), rules theo đường dẫn với glob pattern là lựa chọn đúng. CLAUDE.md cấp thư mục sẽ đòi hỏi đặt một file trong mỗi thư mục — một gánh nặng bảo trì khổng lồ.
Bẫy thi: Đặt quy ước riêng cho một loại file vào CLAUDE.md ở gốc
CLAUDE.md ở gốc nạp cho mọi phiên bất kể bạn đang chỉnh sửa file nào. Các quy ước Terraform vẫn tiêu tốn token khi chỉnh sửa component React. Rules theo đường dẫn chỉ nạp khi chỉnh sửa file khớp, giữ nguyên ngân sách token.
Bẫy thi: Nhầm lẫn giữa skill và rules theo đường dẫn cho việc tự động áp dụng quy ước
Cả skill lẫn .claude/rules/ đều có thể tự động kích hoạt qua frontmatter paths, nhưng chúng phục vụ mục đích khác nhau. Rules ở lại trong context như hướng dẫn nền — được nạp khi Claude đọc một file khớp — nên chúng định hình mọi lần chỉnh sửa. Skills nạp khi cần theo kiểu workflow tác vụ, được kích hoạt bởi việc model khớp ý định hoặc bởi lời gọi tường minh. Khi câu hỏi hỏi về việc tự động nạp quy ước luôn-bật cho một loại file, rules theo đường dẫn là câu trả lời đúng.
Tình huống luyện tập
Không tìm thấy câu hỏi luyện tập "q-3-3-001".
Bài tập thực hành
Cấu hình Rules theo đường dẫn với Glob Pattern
Bạn sẽ học được gì
- Viết frontmatter YAML với glob pattern để nạp rule có điều kiện
- Áp dụng rules theo đường dẫn cho các file rải rác trên nhiều thư mục
- Hiểu tại sao rules theo đường dẫn tiết kiệm token hơn CLAUDE.md ở gốc
- Phân biệt khi nào dùng rules theo đường dẫn so với CLAUDE.md cấp thư mục
- Xác minh hành vi nạp có điều kiện bằng lệnh /memory
Các bước
Vì sao: Rules theo đường dẫn với glob pattern là giải pháp đúng cho các quy ước áp dụng cho một loại file rải rác trên nhiều thư mục. Kịch bản yêu thích của đề thi là các file test nằm cạnh file nguồn trên 50+ thư mục.
Bạn sẽ thấy: Một file tại .claude/rules/testing.md với frontmatter YAML chứa một mảng paths gồm các glob pattern. Nội dung chứa ít nhất ba quy ước test bao gồm đặt tên, assertion, và mock.
Vì sao: Tách quy ước API vào rule riêng theo phạm vi đường dẫn nghĩa là chúng chỉ nạp khi chỉnh sửa file API. Điều này tránh tiêu tốn token với context không liên quan khi làm việc trên code frontend hoặc infrastructure.
Bạn sẽ thấy: Một file tại .claude/rules/api-conventions.md với frontmatter YAML paths nhắm đến các thư mục API. Nội dung chứa ít nhất ba quy ước API.
Vì sao: Các quy ước infrastructure hoàn toàn không liên quan khi chỉnh sửa code ứng dụng. Rules theo phạm vi đường dẫn đảm bảo các rule Terraform không bao giờ tiêu tốn token trong các phiên phát triển React hay API.
Bạn sẽ thấy: Một file tại .claude/rules/terraform.md với frontmatter YAML paths khớp các file Terraform. Nội dung chứa các quy ước riêng cho infrastructure.
Vì sao: Điều này chứng minh cơ chế nạp có điều kiện hoạt động. Đề thi kiểm tra xem bạn có hiểu rằng rules theo đường dẫn chỉ nạp cho các file khớp hay không, và /memory là công cụ chẩn đoán để xác minh điều đó.
Bạn sẽ thấy: Khi chỉnh sửa một file .test.ts, output của /memory liệt kê .claude/rules/testing.md là đã nạp. Các file .claude/rules/api-conventions.md và .claude/rules/terraform.md KHÔNG xuất hiện trong output của /memory.
Vì sao: Đây là bước xác minh bổ sung. Việc chuyển đổi ngữ cảnh sẽ hoán đổi rule nào được nạp, xác nhận rằng các glob pattern giới hạn phạm vi đúng cho từng file rule.
Bạn sẽ thấy: Khi chỉnh sửa một file trong src/api/, output của /memory liệt kê .claude/rules/api-conventions.md là đã nạp. Các file rule test và Terraform KHÔNG xuất hiện.
Vì sao: Hiệu quả token là một khái niệm then chốt trong đề thi. CLAUDE.md ở gốc nạp toàn bộ quy ước cho mọi phiên bất kể mức độ liên quan. Rules theo đường dẫn chỉ nạp tập con liên quan, giảm context không cần thiết và bảo toàn ngân sách token cho công việc thực tế.
Bạn sẽ thấy: Với tất cả quy ước trong CLAUDE.md ở gốc, /memory hiển thị toàn bộ bộ quy ước đã nạp ngay cả khi chỉnh sửa một file tiện ích đơn giản. Với rules theo đường dẫn, /memory chỉ hiển thị tập con liên quan. Số lượng token cho cấu hình đã nạp thấp hơn rõ rệt khi dùng rules theo đường dẫn cho các phiên chỉnh sửa có mục tiêu cụ thể.