vi/03-skills/refactor/SKILL.md
Refactor code có hệ thống dựa trên phương pháp luận của Martin Fowler. Sử dụng khi người dùng yêu cầu refactor code, cải thiện cấu trúc code, giảm nợ kỹ thuật, dọn code legacy, loại bỏ code smells, hoặc cải thiện khả năng duy trì code. Skill này hướng dẫn qua cách tiếp theo từng giai đoạn với nghiên cứu, lập kế hoạch, và triển khai tăng dần an toàn.
npx skillsauth add luongnv89/claude-howto code-refactorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Một cách tiếp có hệ thống để refactor code dựa trên Refactoring: Improving the Design of Existing Code (ấn bản 2) của Martin Fowler. Skill này nhấn mạnh các thay đổi tăng dần, an toàn được hỗ trợ bởi tests.
"Refactoring là quá trình thay đổi một hệ thống phần mềm theo cách mà nó không làm thay đổi hành vi bên ngoài của code nhưng cải thiện cấu trúc nội bộ của nó." — Martin Fowler
Giai Đoạn 1: Nghiên Cứu & Phân Tích
↓
Giai Đoạn 2: Đánh Giá Phủ Vùng Test
↓
Giai Đoạn 3: Xác Định Code Smell
↓
Giai Đoạn 4: Tạo Kế Hoạch Refactoring
↓
Giai Đoạn 5: Triển Khai Tăng Dần
↓
Giai Đoạn 6: Review & Lặp Lại
Trước khi bắt đầu, làm rõ:
Trình bày phát hiện cho người dùng:
"Refactoring mà không có tests giống như lái xe mà không có thắt dây an toàn." — Martin Fowler
Tests là bật dụng chính của refactoring an toàn. Không có chúng, bạn có nguy cơ giới thiệu bugs.
Kiểm tra các test hiện có
# Tìm các file test
find . -name "*test*" -o -name "*spec*" | head -20
Chạy các test hiện có
# JavaScript/TypeScript
npm test
# Python
pytest -v
# Java
mvn test
Kiểm tra phủ vùng (nếu có)
# JavaScript
npm run test:coverage
# Python
pytest --cov=.
Nếu tests tồn tại và pass:
Nếu tests bị thiếu hoặc không hoàn chỉnh: Trình bày các tùy chọn:
Nếu tests đang fail:
Đối với mỗi hàm được refactor, đảm bảo tests bao phủ:
Sử dụng chu trình "red-green-refactor":
Các triệu chứng của các vấn đề sâu hơn trong code. Chúng không phải là bugs, nhưng là các chỉ báo rằng code có thể được cải thiện.
Xem references/code-smells.md để có danh sách đầy đủ.
| Smell | Dấu Hiệu | Tác Động | |-------|-------|--------| | Long Method | Methods > 30-50 dòng | Khó hiểu, test, duy trì | | Duplicated Code | Cùng logic ở nhiều nơi | Cần sửa lỗi ở nhiều nơi | | Large Class | Class với quá nhiều trách nhiệm | Vi phạm Single Responsibility | | Feature Envy | Method sử dụng dữ liệu class khác nhiều | Đóng gói kém | | Primitive Obsession | Lạm dụng primitives thay vì objects | Thiếu các khái niệm domain | | Long Parameter List | Methods với 4+ parameters | Khó gọi đúng | | Data Clumps | Cùng dữ liệu xuất hiện cùng nhau | Thiếu abstraction | | Switch Statements | Switch/if-else chains phức tạp | Khó mở rộng | | Speculative Generality | Code "trường hợp" | Độ phức tạp không cần thiết | | Dead Code | Code không sử dụng | Nhầm lẫn, gánh nặng duy trì |
Phân Tích Tự Động (nếu scripts có sẵn)
python scripts/detect-smells.py <file>
Review Thủ Công
Ưu Tiên Tập trung vào các smells mà:
Trình bày cho người dùng:
Đối với mỗi smell, chọn một refactoring phù hợp từ catalog.
Xem references/refactoring-catalog.md để có danh sách đầy đủ.
| Code Smell | Refactoring Khuyến Nghị | |------------|---------------------------| | Long Method | Extract Method, Replace Temp with Query | | Duplicated Code | Extract Method, Pull Up Method, Form Template Method | | Large Class | Extract Class, Extract Subclass | | Feature Envy | Move Method, Move Field | | Primitive Obsession | Replace Primitive with Object, Replace Type Code with Class | | Long Parameter List | Introduce Parameter Object, Preserve Whole Object | | Data Clumps | Extract Class, Introduce Parameter Object | | Switch Statements | Replace Conditional with Polymorphism | | Speculative Generality | Collapse Hierarchy, Inline Class, Remove Dead Code | | Dead Code | Remove Dead Code |
Sử dụng mẫu tại templates/refactoring-plan.md.
Đối với mỗi refactoring:
QUAN TRỌNG: Introduce refactoring tăng dần theo các giai đoạn.
Giai Đoạn A: Quick Wins (Rủi ro thấp, giá trị cao)
Giai Đoạn B: Cải Tiến Cấu Trúc (Rủi ro trung bình)
Giai Đoạn C: Thay Đổi Kiến Trúc (Rủi ro cao hơn)
Trước khi triển khai:
"Thay Đổi → Test → Xanh? → Commit → Bước tiếp theo"
Đối với mỗi bước refactoring:
Kiểm tra trước
Thực hiện MỘT thay đổi nhỏ
Xác Minh
Nếu tests pass (xanh)
Nếu tests fail (đỏ)
Mỗi commit nên là:
Ví dụ thông điệp commit:
refactor: Extract calculateTotal() from processOrder()
refactor: Rename 'x' to 'customerCount' for clarity
refactor: Remove unused validateOldFormat() method
Sau mỗi sub-giai đoạn, báo cáo cho người dùng:
Chạy phân tích độ phức tạp trước và sau:
python scripts/analyze-complexity.py <file>
Trình bày cải tiến:
Trình bày kết quả cuối cùng:
Thảo luận với người dùng:
Luôn dừng lại và tham khảo người dùng khi:
Trước:
function processOrder(order) {
// 150 dòng code với:
// - Logic xác thực trùng lặp
// - Tính toán nội tuyến
// - Trách nhiệm hỗn hợp
}
Các Bước Refactoring:
Sau:
function processOrder(order) {
validateOrder(order);
const total = calculateOrderTotal(order);
notifyCustomer(order, total);
return { order, total };
}
scripts/analyze-complexity.py - Phân tích metrics độ phức tạp codescripts/detect-smells.py - Phát hiện smell tự độngdata-ai
<!-- i18n-source: 03-skills/brand-voice/SKILL.md --> <!-- i18n-source-sha: a6380d8 --> <!-- i18n-date: 2026-04-27 --> --- name: brand-voice description: すべてのコミュニケーションがブランドボイスとトーンのガイドラインに沿うことを保証する。マーケティングコピー、顧客向け連絡、公開コンテンツの作成時、またはブランドボイス、トーン、文体について言及がある場合に使用する。 user-invocable: false --- # ブランドボイス・スキル ## 概要 このスキルは、すべてのコミュニケーションにおいて一貫したブランドボイス、トーン、メッセージングを維持する。 ## ブランドアイデンティティ ### ミッション チームが AI で開発ワークフローを自動化することを支援する ### バリュー - **シンプリシティ**: 複雑なものをシンプルにする - **信頼性**: 揺るぎない実行 - **エンパワーメント**: 人間の
tools
确保所有沟通内容都符合品牌语气和风格指南。适用于撰写营销文案、客户沟通、对外内容,或用户提到品牌语气、tone、写作风格的场景。
data-ai
Đảm bảo tất cả các truyền thông phù hợp với hướng dẫn giọng điệu và phong cách thương hiệu. Sử dụng khi tạo bản sao marketing, truyền thông khách hàng, nội dung công khai, hoặc khi người dùng đề cập đến giọng điệu thương hiệu, ngữ điệu, hoặc phong cách viết.
tools
Забезпечення відповідності всіх комунікацій голосу та тону бренду. Використовуйте при створенні маркетингових текстів, клієнтських комунікацій, публічного контенту, або коли користувачі згадують голос бренду, тон чи стиль написання.