ai-developer-skill-os 8.1.5 → 8.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.agents/CHANGELOG.md +113 -70
  2. package/.agents/README.md +44 -58
  3. package/.agents/skills/qk-code-review/SKILL.md +189 -0
  4. package/.agents/skills/qk-code-review/references/ai/ai-anti-patterns.md +28 -0
  5. package/.agents/skills/qk-code-review/references/ai/v8-schema-validation.md +65 -0
  6. package/.agents/skills/qk-code-review/references/cross-cutting/architecture-review-guide.md +212 -0
  7. package/.agents/skills/qk-code-review/references/cross-cutting/async-concurrency-patterns.md +515 -0
  8. package/.agents/skills/qk-code-review/references/cross-cutting/code-quality-universal.md +358 -0
  9. package/.agents/skills/qk-code-review/references/cross-cutting/code-review-best-practices.md +136 -0
  10. package/.agents/skills/qk-code-review/references/cross-cutting/common-bugs-checklist.md +124 -0
  11. package/.agents/skills/qk-code-review/references/cross-cutting/error-handling-principles.md +492 -0
  12. package/.agents/skills/qk-code-review/references/cross-cutting/n-plus-one-queries.md +309 -0
  13. package/.agents/skills/qk-code-review/references/cross-cutting/performance-review-guide.md +387 -0
  14. package/.agents/skills/qk-code-review/references/cross-cutting/security-review-guide.md +318 -0
  15. package/.agents/skills/qk-code-review/references/cross-cutting/sql-injection-prevention.md +308 -0
  16. package/.agents/skills/qk-code-review/references/cross-cutting/xss-prevention.md +264 -0
  17. package/.agents/skills/qk-code-review/references/languages/angular.md +768 -0
  18. package/.agents/skills/qk-code-review/references/languages/c.md +890 -0
  19. package/.agents/skills/qk-code-review/references/languages/cpp.md +893 -0
  20. package/.agents/skills/qk-code-review/references/languages/csharp.md +519 -0
  21. package/.agents/skills/qk-code-review/references/languages/css-less-sass.md +661 -0
  22. package/.agents/skills/qk-code-review/references/languages/django.md +985 -0
  23. package/.agents/skills/qk-code-review/references/languages/fastapi.md +580 -0
  24. package/.agents/skills/qk-code-review/references/languages/go.md +993 -0
  25. package/.agents/skills/qk-code-review/references/languages/java.md +409 -0
  26. package/.agents/skills/qk-code-review/references/languages/java8.md +586 -0
  27. package/.agents/skills/qk-code-review/references/languages/kotlin.md +1018 -0
  28. package/.agents/skills/qk-code-review/references/languages/nestjs.md +593 -0
  29. package/.agents/skills/qk-code-review/references/languages/php.md +684 -0
  30. package/.agents/skills/qk-code-review/references/languages/python.md +1073 -0
  31. package/.agents/skills/qk-code-review/references/languages/qt.md +757 -0
  32. package/.agents/skills/qk-code-review/references/languages/react.md +871 -0
  33. package/.agents/skills/qk-code-review/references/languages/ruby.md +964 -0
  34. package/.agents/skills/qk-code-review/references/languages/rust.md +846 -0
  35. package/.agents/skills/qk-code-review/references/languages/svelte.md +1064 -0
  36. package/.agents/skills/qk-code-review/references/languages/swift.md +936 -0
  37. package/.agents/skills/qk-code-review/references/languages/typescript.md +1016 -0
  38. package/.agents/skills/qk-code-review/references/languages/vue.md +924 -0
  39. package/.agents/skills/qk-code-review/references/languages/zig.md +440 -0
  40. package/CHANGELOG.md +22 -0
  41. package/README.md +3 -3
  42. package/bin/install.js +5 -2
  43. package/package.json +1 -1
@@ -0,0 +1,212 @@
1
+ # Architecture Review Guide
2
+
3
+ Hướng dẫn đánh giá thiết kế kiến trúc, giúp xác định xem kiến trúc của mã nguồn có hợp lý và thiết kế có chuẩn xác hay không.
4
+
5
+ ## Kiểm tra nguyên tắc SOLID
6
+
7
+ ### S - Single Responsibility Principle (SRP - Nguyên tắc đơn trách nhiệm)
8
+
9
+ **Kiểm tra trọng tâm:**
10
+ - Class/Module này có chỉ duy nhất một lý do để thay đổi không?
11
+ - Các phương thức trong Class có cùng phục vụ cho một mục đích không?
12
+ - Nếu phải mô tả Class này cho một người không rành kỹ thuật, bạn có thể nói rõ trong một câu không?
13
+
14
+ **Dấu hiệu nhận biết (Code Smells):**
15
+ ```text
16
+ ⚠️ Tên Class chứa các từ mang tính chung chung như "And", "Manager", "Handler", "Processor".
17
+ ⚠️ Một Class vượt quá 200-300 dòng code.
18
+ ⚠️ Class có hơn 5-7 phương thức public.
19
+ ⚠️ Các phương thức khác nhau thao tác trên các tập dữ liệu hoàn toàn khác nhau.
20
+ ```
21
+
22
+ **Câu hỏi Review:**
23
+ - "Class này chịu trách nhiệm những việc gì? Có thể chia nhỏ được không?"
24
+ - "Nếu yêu cầu X thay đổi, những phương thức nào cần sửa? Nếu yêu cầu Y thay đổi thì sao?"
25
+
26
+ ### O - Open/Closed Principle (OCP - Nguyên tắc đóng/mở)
27
+
28
+ **Kiểm tra trọng tâm:**
29
+ - Khi thêm tính năng mới, có cần phải sửa đổi code hiện tại không?
30
+ - Có thể thêm hành vi mới thông qua việc mở rộng (inheritance, composition) không?
31
+ - Có tồn tại quá nhiều câu lệnh `if/else` hoặc `switch` để xử lý các type (loại) khác nhau không?
32
+
33
+ **Dấu hiệu nhận biết:**
34
+ ```text
35
+ ⚠️ Chuỗi switch/if-else dài để xử lý các loại (types) khác nhau.
36
+ ⚠️ Thêm tính năng mới đòi hỏi phải sửa đổi core class.
37
+ ⚠️ Rải rác các lệnh kiểm tra kiểu dữ liệu (instanceof, typeof) khắp mọi nơi.
38
+ ```
39
+
40
+ **Câu hỏi Review:**
41
+ - "Nếu muốn thêm một type X mới, chúng ta phải sửa những file nào?"
42
+ - "Khối lệnh switch này có phình to ra khi chúng ta có thêm type mới không?"
43
+
44
+ ### L - Liskov Substitution Principle (LSP - Nguyên tắc thay thế Liskov)
45
+
46
+ **Kiểm tra trọng tâm:**
47
+ - Subclass (lớp con) có thể thay thế hoàn toàn cho Parent class (lớp cha) khi sử dụng không?
48
+ - Subclass có làm thay đổi hành vi dự kiến của các phương thức ở Parent class không?
49
+ - Subclass có throw ra các exception mà Parent class chưa từng khai báo không?
50
+
51
+ **Dấu hiệu nhận biết:**
52
+ ```text
53
+ ⚠️ Ép kiểu tường minh (Explicit casting).
54
+ ⚠️ Phương thức ở Subclass ném ra lỗi `NotImplementedException`.
55
+ ⚠️ Phương thức ở Subclass để trống hoặc chỉ có `return`.
56
+ ⚠️ Nơi sử dụng Base class bắt buộc phải kiểm tra type cụ thể của nó.
57
+ ```
58
+
59
+ **Câu hỏi Review:**
60
+ - "Nếu dùng Subclass thay cho Parent class, đoạn code gọi (caller) có cần phải thay đổi không?"
61
+ - "Hành vi của phương thức này trong Subclass có tuân thủ đúng contract của Parent class không?"
62
+
63
+ ### I - Interface Segregation Principle (ISP - Nguyên tắc phân tách Interface)
64
+
65
+ **Kiểm tra trọng tâm:**
66
+ - Interface đã đủ nhỏ và tập trung chưa?
67
+ - Class implement (thực thi) có bị ép buộc phải code những phương thức mà nó không cần không?
68
+ - Client có phụ thuộc vào những phương thức mà nó không hề dùng tới không?
69
+
70
+ **Dấu hiệu nhận biết:**
71
+ ```text
72
+ ⚠️ Interface có hơn 5-7 phương thức.
73
+ ⚠️ Class implement có các phương thức rỗng hoặc ném `NotImplementedException`.
74
+ ⚠️ Tên Interface quá rộng (IManager, IService).
75
+ ⚠️ Các Client khác nhau chỉ sử dụng một phần phương thức của Interface.
76
+ ```
77
+
78
+ **Câu hỏi Review:**
79
+ - "Tất cả các phương thức của Interface này có thực sự được dùng bởi từng Class implement không?"
80
+ - "Có thể chia Interface lớn này thành các Interface nhỏ, chuyên biệt hơn không?"
81
+
82
+ ### D - Dependency Inversion Principle (DIP - Nguyên tắc đảo ngược phụ thuộc)
83
+
84
+ **Kiểm tra trọng tâm:**
85
+ - Module cấp cao có phụ thuộc vào Abstraction (trừu tượng) thay vì Implementation (thực thi chi tiết) không?
86
+ - Có sử dụng Dependency Injection thay vì trực tiếp `new` Object không?
87
+ - Abstraction có được định nghĩa bởi Module cấp cao thay vì Module cấp thấp không?
88
+
89
+ **Dấu hiệu nhận biết:**
90
+ ```text
91
+ ⚠️ Module cấp cao trực tiếp `new` các Class cụ thể của Module cấp thấp.
92
+ ⚠️ Import thẳng Class thực thi thay vì Interface/Abstract class.
93
+ ⚠️ Cấu hình và chuỗi kết nối (connection strings) bị hardcode trong business logic.
94
+ ⚠️ Rất khó để viết Unit Test cho một Class cụ thể.
95
+ ```
96
+
97
+ **Câu hỏi Review:**
98
+ - "Các phụ thuộc (dependencies) của Class này có thể được mock khi viết test không?"
99
+ - "Nếu muốn đổi sang một Database/API khác, sẽ phải sửa bao nhiêu chỗ?"
100
+
101
+ ---
102
+
103
+ ## Nhận diện các Anti-patterns Kiến trúc
104
+
105
+ ### Các Anti-patterns Chí mạng (Fatal)
106
+
107
+ | Anti-pattern | Dấu hiệu nhận biết (Signals) | Hệ quả |
108
+ |--------|----------|------|
109
+ | **Big Ball of Mud** | Không có ranh giới module rõ ràng, bất kỳ code nào cũng có thể gọi đoạn code khác. | Khó hiểu, khó sửa, khó test. |
110
+ | **God Object** | Một Class gánh quá nhiều trách nhiệm, biết quá nhiều, làm quá nhiều. | Coupling cao, khó tái sử dụng và test. |
111
+ | **Spaghetti Code** | Luồng điều khiển rối rắm, lạm dụng `goto` hoặc lồng (nesting) quá sâu, khó theo dõi đường thực thi. | Khó bảo trì. |
112
+ | **Lava Flow** | Code cổ đại không ai dám đụng vào, thiếu tài liệu và test. | Tích tụ nợ kỹ thuật (Tech Debt). |
113
+
114
+ ### Các Anti-patterns Thiết kế (Design)
115
+
116
+ | Anti-pattern | Dấu hiệu nhận biết (Signals) | Lời khuyên |
117
+ |--------|----------|------|
118
+ | **Golden Hammer** | Dùng chung một công nghệ/design pattern cho tất cả mọi vấn đề. | Chọn giải pháp phù hợp với từng bài toán. |
119
+ | **Gas Factory (Over-engineering)** | Giải quyết vấn đề đơn giản bằng giải pháp phức tạp, lạm dụng Design patterns. | Tuân thủ YAGNI, làm từ đơn giản đến phức tạp. |
120
+ | **Boat Anchor** | Viết code "phòng hờ cho tương lai" nhưng hiện tại không dùng tới. | Xóa code không dùng, khi nào cần thì viết lại. |
121
+ | **Copy-Paste Programming** | Một logic xuất hiện ở nhiều nơi. | Đưa thành phương thức chung hoặc module chung. |
122
+
123
+ ---
124
+
125
+ ## Đánh giá Coupling (Độ kết dính) và Cohesion (Độ gắn kết)
126
+
127
+ ### Các loại Coupling (Từ Tốt đến Xấu)
128
+
129
+ | Loại | Mô tả | Ví dụ |
130
+ |------|------|------|
131
+ | **Message Coupling** ✅ | Truyền dữ liệu qua tham số | `calculate(price, quantity)` |
132
+ | **Data Coupling** ✅ | Chia sẻ cấu trúc dữ liệu đơn giản | `processOrder(orderDTO)` |
133
+ | **Stamp Coupling** ⚠️ | Truyền cấu trúc dữ liệu phức tạp nhưng chỉ xài 1 phần | Truyền cả Object `User` nhưng chỉ dùng `name` |
134
+ | **Control Coupling** ⚠️ | Truyền cờ (flags) điều khiển hành vi | `process(data, isAdmin=true)` |
135
+ | **Common Coupling** ❌ | Chia sẻ biến toàn cục (global state) | Nhiều module cùng đọc/ghi chung một global state |
136
+ | **Content Coupling** ❌ | Truy cập trực tiếp vào bên trong module khác | Thao tác trực tiếp với private properties của class khác |
137
+
138
+ ### Các loại Cohesion (Từ Tốt đến Xấu)
139
+
140
+ | Loại | Mô tả | Đánh giá |
141
+ |------|------|------|
142
+ | **Functional Cohesion** | Mọi thành phần cùng thực hiện MỘT nhiệm vụ duy nhất | ✅ Tốt nhất |
143
+ | **Sequential Cohesion** | Output của bước này là Input của bước sau | ✅ Tốt |
144
+ | **Communicational Cohesion** | Thao tác trên cùng một cấu trúc dữ liệu | ⚠️ Chấp nhận được |
145
+ | **Temporal Cohesion** | Các tác vụ thực thi cùng một thời điểm | ⚠️ Khá kém |
146
+ | **Logical Cohesion** | Có liên quan về mặt logic nhưng khác biệt chức năng | ❌ Kém |
147
+ | **Coincidental Cohesion** | Không hề có sự liên quan nào | ❌ Tệ nhất |
148
+
149
+ ---
150
+
151
+ ## Đánh giá Clean Architecture (Kiến trúc phân lớp)
152
+
153
+ ### Cấu trúc các Lớp
154
+
155
+ ```text
156
+ ┌─────────────────────────────────────┐
157
+ │ Frameworks & Drivers │ ← Lớp ngoài cùng: Web, DB, UI
158
+ ├─────────────────────────────────────┤
159
+ │ Interface Adapters │ ← Controllers, Gateways, Presenters
160
+ ├─────────────────────────────────────┤
161
+ │ Application Layer │ ← Use Cases, Application Services
162
+ ├─────────────────────────────────────┤
163
+ │ Domain Layer │ ← Entities, Domain Services
164
+ └─────────────────────────────────────┘
165
+ ↑ Hướng phụ thuộc (Dependency Rule) CHỈ ĐƯỢC hướng vào trong ↑
166
+ ```
167
+
168
+ ### Quy tắc Phụ thuộc (Dependency Rule)
169
+
170
+ **QUY TẮC CỐT LÕI: Mã nguồn chỉ được phép phụ thuộc hướng vào lớp bên trong.**
171
+
172
+ ```typescript
173
+ // ❌ VI PHẠM: Domain layer phụ thuộc vào Infrastructure
174
+ // domain/User.ts
175
+ import { MySQLConnection } from '../infrastructure/database';
176
+
177
+ // ✅ CHUẨN XÁC: Domain layer định nghĩa Interface, Infrastructure thực thi nó
178
+ // domain/UserRepository.ts (Interface)
179
+ interface UserRepository {
180
+ findById(id: string): Promise<User>;
181
+ }
182
+
183
+ // infrastructure/MySQLUserRepository.ts (Implementation)
184
+ class MySQLUserRepository implements UserRepository {
185
+ findById(id: string): Promise<User> { /* ... */ }
186
+ }
187
+ ```
188
+
189
+ ### Checklist Đánh giá
190
+ - [ ] Lớp **Domain** có dính líu gì tới các phụ thuộc bên ngoài (DB, HTTP, File system) không?
191
+ - [ ] Lớp **Application** có thao tác trực tiếp với DB hay gọi external API không?
192
+ - [ ] Lớp **Controller** có chứa Business Logic không?
193
+ - [ ] Có tồn tại việc gọi vượt lớp (VD: UI gọi thẳng Repository) không?
194
+
195
+ ---
196
+
197
+ ## Checklist Nhanh (5 phút review)
198
+
199
+ ```markdown
200
+ □ Hướng phụ thuộc có chính xác không? (Lớp ngoài gọi lớp trong).
201
+ □ Có bị Dependency Cycle (phụ thuộc vòng tròn) không?
202
+ □ Business Logic cốt lõi đã tách bạch khỏi UI/Framework/Database chưa?
203
+ □ Có vi phạm nguyên tắc SOLID không?
204
+ □ Có các Anti-patterns lộ liễu nào không?
205
+ ```
206
+
207
+ ### Red Flags 🔴 (Bắt buộc sửa)
208
+ - God Object: Class lớn hơn 1000 dòng.
209
+ - Circular Dependency: A → B → C → A.
210
+ - Tầng Domain chứa thư viện của Framework.
211
+ - Hardcode Config / API Keys trong source code.
212
+ - Gọi External Services mà không qua Interface.