Tiêu chuẩn code
Ngắn, và máy giữ được thì có gate. Một luật chỉ nằm trong văn xuôi là luật phụ thuộc vào trí nhớ của phiên đang làm.
| # | Luật | Máy giữ |
|---|---|---|
| 1 | File code mới tối đa 500 dòng; dữ liệu và nội dung ở JSON hoặc DB, không trong .ts | gate kích thước file (chỉ xét file thêm mới) |
| 2 | TypeScript strict, không any, không @ts-ignore | typecheck, ratchet |
| 3 | Dữ liệu từ ngoài vào (body, query, webhook, JSON từ DB, object storage, API ngoài) kiểm tại cửa bằng Zod; bên trong tin kiểu | review |
| 4 | Tra tài liệu thư viện bằng Context7 (MCP trong .mcp.json) trước khi viết; ghim phiên bản; một thư viện UI và một thư viện animation | gate design stack, gate deps |
| 5 | Test hành vi qua request thật trên DB dựng từ migration; cấm test regex trên mã nguồn | review |
| 6 | Lưu trữ: git chỉ chứa code nhỏ, docs, asset nhỏ (ảnh ≤ 300 KB, file ≤ 1 MB); media lên R2, nội dung lên DB | gate lưu trữ, xem Quy tắc lưu trữ |
| 7 | App dùng chung package đăng nhập phải có biến môi trường công khai bắt buộc | gate kiểm .env.production |
Vì sao 500 dòng
File lớn là chỗ các phiên song song đụng nhau, và là chỗ agent dễ mất mạch. File cũ không bị chặn (grandfathered); chúng nhỏ đi dần mỗi khi được sửa.
Context7 không quét code
Context7 cho agent đọc tài liệu đúng phiên bản của thư viện. Nó không kiểm code đã viết. Quét code là typecheck, lint, gate, Knip.
Ở Conan hôm nay
| # | Ở Conan |
|---|---|
| 1 | Chỉ mốc huge-file (> 1.000 dòng, 12 file, lớn nhất 3.623 dòng). Chưa có giới hạn cho file mới. |
| 2 | Mốc any-cast 1.806 (từ 2.033 ngày 10.10), ts-suppress 0, mốc chỉ được hạ. tsc là cổng tuyệt đối ở api. |
| 3 | Zod ở 25/284 file src của api, qua @hono/zod-openapi. |
| 4 | Context7 trong .mcp.json; hook deps-docs-guard buộc tra trước khi đổi phiên bản. |
| 5 | 14 test api, 3 file test tool-plane; 4 test tích hợp api không chạy ở đâu. |
| 6 | Chưa có gate lưu trữ. check-media-r2 chỉ chặn 57 ảnh đã chuyển R2 quay lại cây. |
| 7 | Không áp dụng: tokyo gọi api qua proxy /api cùng origin. |
Xem Audit, mục 7.