Files
antigravity-skills-reference/docs/vietnamese/skills/clean-code/SKILL.vi.md

8.1 KiB

name, description, allowed-tools, version, priority
name description allowed-tools version priority
clean-code Tiêu chuẩn code thực dụng - súc tích, trực tiếp, không kỹ thuật quá mức, không có comments thừa thãi. Read, Write, Edit 2.0 CRITICAL

Clean Code - Tiêu chuẩn Coding AI Thực dụng

KỸ NĂNG QUAN TRỌNG - Hãy súc tích, trực tiếp và tập trung vào giải pháp.


Các Nguyên tắc Cốt lõi

Nguyên tắc Quy tắc
SRP Trách nhiệm Duy nhất (Single Responsibility) - mỗi hàm/lớp làm MỘT việc
DRY Đừng Lặp lại Chính mình (Don't Repeat Yourself) - trích xuất phần trùng lặp, tái sử dụng
KISS Giữ nó Đơn giản (Keep It Simple) - giải pháp đơn giản nhất có thể hoạt động
YAGNI Bạn Sẽ Không Cần Nó Đâu (You Aren't Gonna Need It) - đừng xây dựng tính năng chưa dùng đến
Hướng đạo sinh Để lại code sạch hơn lúc bạn tìm thấy nó

Quy tắc Đặt tên

Thành phần Quy ước
Biến Bộc lộ ý định: userCount không phải n
Hàm Động từ + danh từ: getUserById() không phải user()
Booleans Dạng câu hỏi: isActive, hasPermission, canEdit
Hằng số SCREAMING_SNAKE: MAX_RETRY_COUNT

Quy tắc: Nếu bạn cần comment để giải thích tên, hãy đổi tên nó.


Quy tắc Hàm (Function)

Quy tắc Mô tả
Nhỏ Tối đa 20 dòng, lý tưởng là 5-10 dòng
Một việc Làm một việc, làm tốt việc đó
Một cấp độ Một cấp độ trừu tượng trên mỗi hàm
Ít tham số Tối đa 3 tham số, ưu tiên 0-2
Không tác dụng phụ Không thay đổi đầu vào một cách bất ngờ

Cấu trúc Code

Mẫu Áp dụng
Guard Clauses Return sớm cho các trường hợp biên
Phẳng > Lồng nhau Tránh lồng nhau sâu (tối đa 2 cấp)
Kết hợp (Composition) Các hàm nhỏ kết hợp lại với nhau
Đặt cùng nhau (Colocation) Giữ code liên quan ở gần nhau

Phong cách Coding của AI

Tình huống Hành động
Người dùng yêu cầu tính năng Viết nó trực tiếp
Người dùng báo lỗi Sửa nó, đừng giải thích lòng vòng
Không rõ yêu cầu Hỏi, đừng giả định

Anti-Patterns (KHÔNG NÊN)

Mẫu Cách sửa
Comment mỗi dòng Xóa comment hiển nhiên
Helper cho code 1 dòng Viết thẳng code (Inline)
Factory cho 2 objects Khởi tạo trực tiếp
utils.ts với 1 hàm Đặt code ở nơi sử dụng
"Đầu tiên chúng ta import..." Chỉ viết code thôi
Lồng nhau sâu Dùng Guard clauses
Số ma thuật (Magic numbers) Dùng hằng số có tên
Hàm thần thánh (God functions) Tách nhỏ theo trách nhiệm

🔴 Trước khi Sửa BẤT KỲ File nào (HÃY NGHĨ TRƯỚC!)

Trước khi thay đổi một file, hãy tự hỏi:

Câu hỏi Tại sao
Cái gì import file này? Chúng có thể bị hỏng
File này import cái gì? Thay đổi Interface
Test nào bao phủ file này? Test có thể fail
Đây có phải component chia sẻ? Nhiều nơi bị ảnh hưởng

Kiểm tra Nhanh:

File cần sửa: UserService.ts
└── Ai import nó? → UserController.ts, AuthController.ts
└── Họ có cần thay đổi không? → Kiểm tra chữ ký hàm (function signatures)

🔴 Quy tắc: Sửa file + tất cả các file phụ thuộc trong CÙNG một task. 🔴 Không bao giờ để lại import hỏng hoặc thiếu cập nhật.


Tóm tắt

Nên Không Nên
Viết code trực tiếp Viết hướng dẫn (tutorials)
Để code tự tài liệu hóa Thêm comment hiển nhiên
Sửa lỗi ngay lập tức Giải thích cách sửa trước
Inline những thứ nhỏ Tạo file không cần thiết
Đặt tên rõ ràng Dùng viết tắt
Giữ hàm nhỏ Viết hàm dài hơn 100 dòng

Hãy nhớ: Người dùng muốn code chạy được, không phải một bài học lập trình.


🔴 Tự Kiểm tra Trước khi Hoàn thành (BẮT BUỘC)

Trước khi nói "nhiệm vụ hoàn tất", hãy xác minh:

Kiểm tra Câu hỏi
Đạt mục tiêu? Tôi đã làm chính xác những gì người dùng yêu cầu chưa?
File đã sửa? Tôi đã sửa tất cả file cần thiết chưa?
Code chạy được? Tôi đã test/xác minh thay đổi chưa?
Không lỗi? Lint và TypeScript pass chứ?
Không quên gì? Có bỏ sót trường hợp biên nào không?

🔴 Quy tắc: Nếu BẤT KỲ kiểm tra nào thất bại, hãy sửa nó trước khi hoàn thành.


Script Xác minh (BẮT BUỘC)

🔴 QUAN TRỌNG: Mỗi agent CHỈ chạy script thuộc skill của mình sau khi hoàn thành công việc.

Ánh xạ Agent → Script

Agent Script Lệnh
frontend-specialist UX Audit python ~/.claude/skills/frontend-design/scripts/ux_audit.py .
frontend-specialist A11y Check python ~/.claude/skills/frontend-design/scripts/accessibility_checker.py .
backend-specialist API Validator python ~/.claude/skills/api-patterns/scripts/api_validator.py .
mobile-developer Mobile Audit python ~/.claude/skills/mobile-design/scripts/mobile_audit.py .
database-architect Schema Validate python ~/.claude/skills/database-design/scripts/schema_validator.py .
security-auditor Security Scan python ~/.claude/skills/vulnerability-scanner/scripts/security_scan.py .
seo-specialist SEO Check python ~/.claude/skills/seo-fundamentals/scripts/seo_checker.py .
seo-specialist GEO Check python ~/.claude/skills/geo-fundamentals/scripts/geo_checker.py .
performance-optimizer Lighthouse python ~/.claude/skills/performance-profiling/scripts/lighthouse_audit.py <url>
test-engineer Test Runner python ~/.claude/skills/testing-patterns/scripts/test_runner.py .
test-engineer Playwright python ~/.claude/skills/webapp-testing/scripts/playwright_runner.py <url>
Mọi agent Lint Check python ~/.claude/skills/lint-and-validate/scripts/lint_runner.py .
Mọi agent Type Coverage python ~/.claude/skills/lint-and-validate/scripts/type_coverage.py .
Mọi agent i18n Check python ~/.claude/skills/i18n-localization/scripts/i18n_checker.py .

SAI: test-engineer chạy ux_audit.py ĐÚNG: frontend-specialist chạy ux_audit.py


🔴 Xử lý Đầu ra Script (ĐỌC → TÓM TẮT → HỎI)

Khi chạy một script xác minh, bạn PHẢI:

  1. Chạy script và bắt TOÀN BỘ đầu ra
  2. Phân tích đầu ra - xác định lỗi, cảnh báo và cái đã pass
  3. Tóm tắt cho người dùng theo định dạng này:
## Script Results: [script_name.py]

### ❌ Errors Found (X items)
- [File:Line] Error description 1
- [File:Line] Error description 2

### ⚠️ Warnings (Y items)
- [File:Line] Warning description

### ✅ Passed (Z items)
- Check 1 passed
- Check 2 passed

**Tôi có nên sửa X lỗi này không?**
  1. Đợi xác nhận của người dùng trước khi sửa
  2. Sau khi sửa → Chạy lại script để xác nhận

🔴 VI PHẠM: Chạy script và phớt lờ đầu ra = thất bại nhiệm vụ. 🔴 VI PHẠM: Tự động sửa mà không hỏi = Không cho phép. 🔴 Quy tắc: Luôn ĐỌC đầu ra → TÓM TẮT → HỎI → rồi mới sửa.