ai-developer-skill-os 9.1.2 → 9.3.0

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 (63) hide show
  1. package/.agents/AGENTS.md +139 -42
  2. package/.agents/DEV_PROFILE.md +95 -0
  3. package/.agents/registry/capability-graph.yml +171 -334
  4. package/.agents/registry/graph.json +37 -19
  5. package/.agents/registry/index.yaml +59 -13
  6. package/.agents/registry/skills-index.yml +204 -447
  7. package/.agents/rules/coding.md +23 -0
  8. package/.agents/rules/global.md +44 -30
  9. package/.agents/skills/_template/SKILL.md +2 -377
  10. package/.agents/skills/qk-access-policy/SKILL.md +98 -473
  11. package/.agents/skills/qk-agent-observability/SKILL.md +3 -439
  12. package/.agents/skills/qk-ai-builder/SKILL.md +132 -565
  13. package/.agents/skills/qk-api-consumer/SKILL.md +256 -0
  14. package/.agents/skills/qk-api-consumer/capability.yaml +21 -0
  15. package/.agents/skills/qk-api-consumer/evals/scorecard.yaml +29 -0
  16. package/.agents/skills/qk-api-lifecycle/SKILL.md +133 -456
  17. package/.agents/skills/qk-bug-resolution/SKILL.md +128 -561
  18. package/.agents/skills/qk-code-review/SKILL.md +142 -420
  19. package/.agents/skills/qk-context-loader/SKILL.md +99 -471
  20. package/.agents/skills/qk-data-engineer/SKILL.md +119 -340
  21. package/.agents/skills/qk-data-lifecycle/SKILL.md +89 -488
  22. package/.agents/skills/qk-db-optimizer/SKILL.md +102 -488
  23. package/.agents/skills/qk-design-system-engineering/SKILL.md +76 -461
  24. package/.agents/skills/qk-devops-platform/SKILL.md +77 -463
  25. package/.agents/skills/qk-docs/SKILL.md +88 -494
  26. package/.agents/skills/qk-engineering-standard/SKILL.md +4 -588
  27. package/.agents/skills/qk-fe-api-integration/SKILL.md +343 -343
  28. package/.agents/skills/qk-fe-api-integration/evals/scorecard.yaml +29 -29
  29. package/.agents/skills/qk-feature-delivery/SKILL.md +137 -445
  30. package/.agents/skills/qk-feature-delivery/evals/scorecard.yaml +1 -1
  31. package/.agents/skills/qk-frontend-architecture/SKILL.md +5 -479
  32. package/.agents/skills/qk-help/evals/scorecard.yaml +13 -13
  33. package/.agents/skills/qk-orchestrator/SKILL.md +63 -502
  34. package/.agents/skills/qk-orchestrator/references/routing-table.md +10 -14
  35. package/.agents/skills/qk-product-specification/SKILL.md +70 -479
  36. package/.agents/skills/qk-production-release/SKILL.md +80 -537
  37. package/.agents/skills/qk-project-audit/SKILL.md +174 -0
  38. package/.agents/skills/qk-project-bootstrap/SKILL.md +243 -471
  39. package/.agents/skills/qk-project-health/SKILL.md +97 -496
  40. package/.agents/skills/qk-project-memory/SKILL.md +76 -21
  41. package/.agents/skills/qk-refactor/SKILL.md +167 -384
  42. package/.agents/skills/qk-security-audit/SKILL.md +141 -463
  43. package/.agents/skills/qk-security-audit/capability.yaml +1 -2
  44. package/.agents/skills/qk-system-evolution/SKILL.md +343 -343
  45. package/.agents/skills/qk-system-evolution/evals/scorecard.yaml +26 -26
  46. package/.agents/skills/qk-test-engineering/SKILL.md +119 -509
  47. package/.agents/skills/qk-ui-audit/SKILL.md +73 -537
  48. package/.agents/skills/qk-ui-builder/SKILL.md +521 -482
  49. package/.agents/skills/qk-ui-system-builder/SKILL.md +68 -514
  50. package/.agents/skills/qk-upgrade/SKILL.md +301 -0
  51. package/.agents/skills/qk-upgrade/capability.yaml +24 -0
  52. package/.agents/skills/qk-upgrade/evals/scorecard.yaml +26 -0
  53. package/.agents/skills/qk-validation-gate/SKILL.md +4 -603
  54. package/.agents/skills/qk-web-quality-gate/SKILL.md +85 -463
  55. package/.agents/workflows/bug-resolution.yml +6 -6
  56. package/.agents/workflows/context-discovery.yml +94 -0
  57. package/.agents/workflows/feature-delivery.yml +8 -4
  58. package/.agents/workflows/refactor.yml +6 -3
  59. package/.agents/workflows/shared/quality-gate.yml +94 -0
  60. package/.agents/workflows/skin-governance.yml +115 -0
  61. package/README.md +152 -67
  62. package/package.json +2 -2
  63. package/tooling/build-registry.js +30 -8
@@ -1,8 +1,8 @@
1
- ---
1
+ ---
2
2
  name: qk-refactor
3
- version: 9.1.0
3
+ version: 9.2.0
4
4
  status: stable
5
- description: "Tái cấu trúc dọn dẹp nguồn để dễ bảo trì hơn không làm thay đổi logic hoạt động bên ngoài."
5
+ description: "Tái cấu trúc code để dễ bảo trì, dễ test hơn không thay đổi external behavior. Dùng skill này khi user nhắc đến: refactor, tái cấu trúc, tách file, extract function/component/module, clean code, reduce complexity, file quá dài, God class, quá nhiều responsibilities — kể cả khi chỉ nói \"file này lộn xộn quá\"."
6
6
  platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
7
7
 
8
8
  type: capability
@@ -20,13 +20,17 @@ complexity:
20
20
  has_external_dependency: false
21
21
  has_breaking_change: false
22
22
 
23
- triggers:
24
- - refactor
25
- - tái cấu trúc
26
- - clean up this code
27
- - simplify
28
- - reduce complexity
29
- - dẫn cấu trúc code
23
+ triggers:
24
+ - "refactor"
25
+ - "tái cấu trúc"
26
+ - "tách file"
27
+ - "extract function/component/module"
28
+ - "clean code"
29
+ - "reduce complexity"
30
+ - "file quá dài"
31
+ - "God class"
32
+ - "quá nhiều responsibilities"
33
+
30
34
 
31
35
  selection:
32
36
  priority: medium
@@ -44,7 +48,7 @@ tools:
44
48
  - terminal
45
49
 
46
50
  related_skills:
47
- - qk-engineering-standard
51
+ - qk-code-review
48
52
  - qk-project-health
49
53
 
50
54
  knowledge_scope:
@@ -76,385 +80,164 @@ token_budget:
76
80
  max_shell_commands: 2
77
81
  stop_early: true
78
82
 
79
- exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
83
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
80
84
  ---
81
85
 
82
86
  # qk-refactor - Safe Refactor
83
87
 
84
- > Language rule: Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
88
+ > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
89
+
90
+ Chịu trách nhiệm tái cấu trúc mã nguồn để tăng khả năng bảo trì, giảm độ phức tạp và tăng tính kiểm thử mà **TUYỆT ĐỐI KHÔNG làm thay đổi hành vi bên ngoài (External Behavior)**.
91
+
92
+ ---
85
93
 
86
- ## Memory Workflow
87
-
88
- ### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
89
- - Trước khi tra cứu hoặc lưu trữ tri thức, BẮT BUỘC kiểm tra sự tồn tại của thư mục `.ai-local/` tại gốc dự án:
90
- - **Tự động tạo mới:** Nếu `.ai-local/` chưa tồn tại, AI phải tự động tạo cấu trúc thư mục `.ai-local/knowledge/` (và file `index.yaml` nếu cần thiết) cùng `.ai-local/candidates/`. Tuyệt đối không ngưng chạy hay hỏi ý kiến người dùng về thao tác khởi tạo tiêu chuẩn này.
91
- - **Bảo mật Gitignore:** BẮT BUỘC kiểm tra file `.gitignore` của dự án, nếu chưa có dòng `.ai-local/` thì phải tự động thêm vào để tuyệt đối bảo mật tri thức cá nhân và tránh lộ lọt lên Git.
92
-
93
- ---
94
-
95
- ### Pre-flight Retrieve (Trước khi thực thi)
96
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
97
- bắt buộc tra cứu:
98
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
99
-
100
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
101
- - Architecture
102
- - Hard Bug
103
- - Convention
104
- - Pattern
105
- - Tech Debt Pattern
106
- - 👉 *Domain Focus:* Pattern / Convention (vd: chiến lược tách file anti-slop, bảo toàn public contract).
107
-
108
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
109
- Không được xem Memory là Source of Truth.
110
- Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
111
-
112
- ---
113
-
114
- ### Learning Flow (AI tự học có kiểm soát)
115
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
116
- - Hard Bug có khả năng tái diễn.
117
- - Pattern làm việc lặp lại trong dự án.
118
- - Convention hoặc quy tắc kiến trúc mới.
119
- - Quyết định Architecture quan trọng.
120
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
121
- - 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
122
-
123
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
124
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
125
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
126
-
127
- ---
128
-
129
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
130
- Sau khi hoàn thành task:
131
- - AI đánh giá các Candidate Memory đã tạo.
132
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
133
- - Đề xuất người dùng xem xét.
134
- - Gửi yêu cầu phê duyệt thông qua:
135
- - `/learn`
136
- - `qk-project-memory`
137
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
138
-
139
- ```
140
- .ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
141
- ```
142
-
143
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
144
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
145
-
146
- ---
147
-
148
- ### Ignore (Không đưa vào Memory)
149
- Không lưu:
150
- - Trace log của một session đơn lẻ.
151
- - Temporary debugging data.
152
- - Output của một lần chạy test/scan.
153
- - Report health tạm thời của một đợt kiểm tra.
154
- - Lỗi nhỏ chỉ xảy ra một lần.
155
- - Thông tin không có khả năng tái sử dụng.
156
- - 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
157
-
158
- ---
159
-
160
- ### Golden Rule
161
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
162
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
163
-
164
- ---
165
-
166
-
167
-
168
- ### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
169
- - Trước khi tra cứu hoặc lưu trữ tri thức, BẮT BUỘC kiểm tra sự tồn tại của thư mục `.ai-local/` tại gốc dự án:
170
- - **Tự động tạo mới:** Nếu `.ai-local/` chưa tồn tại, AI phải tự động tạo cấu trúc thư mục `.ai-local/knowledge/` (và file `index.yaml` nếu cần thiết) cùng `.ai-local/candidates/`. Tuyệt đối không ngưng chạy hay hỏi ý kiến người dùng về thao tác khởi tạo tiêu chuẩn này.
171
- - **Bảo mật Gitignore:** BẮT BUỘC kiểm tra file `.gitignore` của dự án, nếu chưa có dòng `.ai-local/` thì phải tự động thêm vào để tuyệt đối bảo mật tri thức cá nhân và tránh lộ lọt lên Git.
172
-
173
- ---
174
-
175
- ### Pre-flight Retrieve (Trước khi thực thi)
176
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
177
- bắt buộc tra cứu:
178
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
179
-
180
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
181
- - Architecture
182
- - Hard Bug
183
- - Convention
184
- - Pattern
185
- - Tech Debt Pattern
186
- - 👉 *Domain Focus:* Pattern / Convention (vd: chiến lược tách file anti-slop, bảo toàn public contract).
187
-
188
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
189
- Không được xem Memory là Source of Truth.
190
- Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
191
-
192
- ---
193
-
194
- ### Learning Flow (AI tự học có kiểm soát)
195
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
196
- - Hard Bug có khả năng tái diễn.
197
- - Pattern làm việc lặp lại trong dự án.
198
- - Convention hoặc quy tắc kiến trúc mới.
199
- - Quyết định Architecture quan trọng.
200
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
201
- - 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
202
-
203
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
204
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
205
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
206
-
207
- ---
208
-
209
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
210
- Sau khi hoàn thành task:
211
- - AI đánh giá các Candidate Memory đã tạo.
212
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
213
- - Đề xuất người dùng xem xét.
214
- - Gửi yêu cầu phê duyệt thông qua:
215
- - `/learn`
216
- - `qk-project-memory`
217
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
218
-
219
- ```
220
- .ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
221
- ```
222
-
223
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
224
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
225
-
226
- ---
227
-
228
- ### Ignore (Không đưa vào Memory)
229
- Không lưu:
230
- - Trace log của một session đơn lẻ.
231
- - Temporary debugging data.
232
- - Output của một lần chạy test/scan.
233
- - Report health tạm thời của một đợt kiểm tra.
234
- - Lỗi nhỏ chỉ xảy ra một lần.
235
- - Thông tin không có khả năng tái sử dụng.
236
- - 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
237
-
238
- ---
239
-
240
- ### Golden Rule
241
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
242
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
243
-
244
- ---
245
-
246
-
247
-
248
- ### Pre-flight Retrieve (Trước khi thực thi)
249
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
250
- bắt buộc tra cứu:
251
- - `.agents/knowledge/index.yaml` (Shared Project Knowledge)
252
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
253
-
254
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
255
- - Architecture
256
- - Hard Bug
257
- - Convention
258
- - Pattern
259
- - Tech Debt Pattern
260
- - 👉 *Domain Focus:* Pattern / Convention (vd: chiến lược tách file anti-slop, bảo toàn public contract).
261
-
262
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
263
- Không được xem Memory là Source of Truth.
264
- Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
265
-
266
- ---
267
-
268
- ### Learning Flow (AI tự học có kiểm soát)
269
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
270
- - Hard Bug có khả năng tái diễn.
271
- - Pattern làm việc lặp lại trong dự án.
272
- - Convention hoặc quy tắc kiến trúc mới.
273
- - Quyết định Architecture quan trọng.
274
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
275
- - 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
276
-
277
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
278
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
279
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
280
-
281
- ---
282
-
283
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
284
- Sau khi hoàn thành task:
285
- - AI đánh giá các Candidate Memory đã tạo.
286
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
287
- - Đề xuất người dùng xem xét.
288
- - Gửi yêu cầu phê duyệt thông qua:
289
- - `/learn`
290
- - `qk-project-memory`
291
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
292
-
293
- ```
294
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
295
- ```
296
-
297
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
298
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
299
-
300
- ---
301
-
302
- ### Ignore (Không đưa vào Memory)
303
- Không lưu:
304
- - Trace log của một session đơn lẻ.
305
- - Temporary debugging data.
306
- - Output của một lần chạy test/scan.
307
- - Report health tạm thời của một đợt kiểm tra.
308
- - Lỗi nhỏ chỉ xảy ra một lần.
309
- - Thông tin không có khả năng tái sử dụng.
310
- - 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
311
-
312
- ---
313
-
314
- ### Golden Rule
315
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
316
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
317
-
318
- ---
319
- ---
320
-
321
- ### Learning Flow (AI tự học có kiểm soát)
322
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
323
- - Hard Bug có khả năng tái diễn.
324
- - Pattern làm việc lặp lại trong dự án.
325
- - Convention hoặc quy tắc kiến trúc mới.
326
- - Quyết định Architecture quan trọng.
327
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
328
- - 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
329
-
330
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
331
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
332
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
333
-
334
- ---
335
-
336
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
337
- Sau khi hoàn thành task:
338
- - AI đánh giá các Candidate Memory đã tạo.
339
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
340
- - Đề xuất người dùng xem xét.
341
- - Gửi yêu cầu phê duyệt thông qua:
342
- - `/learn`
343
- - `qk-project-memory`
344
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
345
-
346
- ```
347
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
348
- ```
349
-
350
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
351
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
352
-
353
- ---
354
-
355
- ### Ignore (Không đưa vào Memory)
356
- Không lưu:
357
- - Trace log của một session đơn lẻ.
358
- - Temporary debugging data.
359
- - Output của một lần chạy test/scan.
360
- - Report health tạm thời của một đợt kiểm tra.
361
- - Lỗi nhỏ chỉ xảy ra một lần.
362
- - Thông tin không có khả năng tái sử dụng.
363
- - 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
364
-
365
- ---
366
-
367
- ### Golden Rule
368
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
369
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
370
-
371
- ---
372
- ---
373
-
374
- ### Learning Flow (AI tự học có kiểm soát)
375
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
376
- - Hard Bug có khả năng tái diễn.
377
- - Pattern làm việc lặp lại trong dự án.
378
- - Convention hoặc quy tắc kiến trúc mới.
379
- - Quyết định Architecture quan trọng.
380
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
381
- - 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
382
-
383
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
384
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
385
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
386
-
387
- ---
388
-
389
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
390
- Sau khi hoàn thành task:
391
- - AI đánh giá các Candidate Memory đã tạo.
392
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
393
- - Đề xuất người dùng xem xét.
394
- - Gửi yêu cầu phê duyệt thông qua:
395
- - `/learn`
396
- - `qk-project-memory`
397
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
398
-
399
- ```
400
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
401
- ```
402
-
403
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
404
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
405
-
406
- ---
407
-
408
- ### Ignore (Không đưa vào Memory)
409
- Không lưu:
410
- - Trace log của một session đơn lẻ.
411
- - Temporary debugging data.
412
- - Output của một lần chạy test/scan.
413
- - Report health tạm thời của một đợt kiểm tra.
414
- - Lỗi nhỏ chỉ xảy ra một lần.
415
- - Thông tin không có khả năng tái sử dụng.
416
- - 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
417
-
418
- ---
419
-
420
- ### Golden Rule
421
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
422
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
423
-
424
- ---
425
- ---
426
- ---
427
- ---
428
-
429
94
  ## Preconditions
430
- - [ ] Target file(s) or module(s) are specified
431
- - [ ] Tests exist for the target code (or can be created)
432
95
 
433
- On missing precondition:
434
- EXIT: BLOCKED
435
- Message: "Missing: target files or test coverage"
96
+ Trước khi tái cấu trúc bất kỳ file nào, AI BẮT BUỘC kiểm tra:
97
+
98
+ - [ ] Xác định mục tiêu refactor (tách file, giảm cognitive complexity, khử duplication, áp dụng Design Pattern).
99
+ - [ ] Xác định public contracts (functions, classes, API routes, props) cần giữ nguyên vẹn.
100
+ - [ ] Kiểm tra hệ thống test hiện có: có tests để verify behavior không?
101
+ - [ ] Nếu yêu cầu refactor kèm theo thay đổi nghiệp vụ hoặc đổi behavior:
102
+ → **EXIT: BLOCKED**
103
+ → Báo cáo user: Tách riêng việc refactor (qk-refactor) và việc đổi tính năng (qk-feature-delivery).
104
+
105
+ ---
436
106
 
437
107
  ## Scope
438
- - Improve internal code quality without changing external behavior
439
- - Reduce complexity, improve naming, extract functions
440
- - Remove dead code and duplication
441
-
442
- ## Non-Goals
443
- - Add new functionality
444
- - Change public API signatures
445
- - Modify behavior or business logic
446
-
447
- ## Workflow
448
- 1. Establish baseline (current behavior + tests)
449
- 2. Plan refactor steps
450
- 3. Execute step by step
451
- 4. Verify behavior unchanged
452
- 5. Run validation gate
453
-
454
- ## Exit Codes
455
- | Code | Meaning |
456
- |------|---------|
457
- | SUCCESS | Refactor complete, behavior preserved, tests pass |
458
- | PARTIAL | Refactor done, some tests need attention |
459
- | BLOCKED | Missing preconditions |
460
- | FAILED | Behavior changed or tests broken |
108
+
109
+ Skill này làm:
110
+ - Trích xuất hàm, component, custom hooks hoặc helper modules (Extract method/module).
111
+ - Giảm độ phức tạp cyclomatic (lồng if/else sâu, switch case khổng lồ).
112
+ - Khử trùng lặp mã nguồn (DRY) mà không tạo ra over-abstraction gượng ép.
113
+ - Tối ưu đặt tên biến, hàm theo đúng quy ước sạch (Clean Code).
114
+ - Bảo đảm 100% backward compatibility với các consumer của module.
115
+
116
+ ❌ Skill này KHÔNG làm:
117
+ - Sửa đổi business logic hoặc thay đổi đầu ra mong đợi của hệ thống.
118
+ - Viết tính năng mới ngoài lề trong quá trình refactor.
119
+ - Tự ý thay đổi schema cơ sở dữ liệu (→ `qk-data-lifecycle`).
120
+
121
+ ---
122
+
123
+ ## Execution Steps
124
+
125
+ ### Step 1 Current State & Contract Lock
126
+ ```
127
+ Inputs: Mã nguồn mục tiêu, Public interface
128
+ Actions:
129
+ - Phân tích luồng thực thi và các điểm vào/ra (inputs/outputs, exceptions).
130
+ - Khóa (lock) contract công khai: không thay đổi signature của exported functions/components.
131
+ - Kiểm tra test coverage hiện có (nếu có).
132
+ Output: Refactor Safety Boundary
133
+ ```
134
+
135
+ ### Step 2 — Incremental Transformation
136
+ ```
137
+ Inputs: Target code, Safety boundary
138
+ Actions:
139
+ - Tách nhỏ từng phần (baby steps): trích xuất hàm con, module độc lập.
140
+ - Thay thế cấu trúc lồng ghép bằng Guard Clauses (early return).
141
+ - Di chuyển các helper/utility sang vị trí phù hợp theo kiến trúc dự án.
142
+ Output: Refactored code
143
+ ```
144
+
145
+ ### Step 3 — Verification & Equivalence Check
146
+ ```
147
+ Inputs: Refactored code, Original tests
148
+ Actions:
149
+ - Chạy linter và typecheck: 0 type errors, 0 lint warnings.
150
+ - Chạy tests để xác nhận tính tương đương hành vi (behavior equivalence).
151
+ - So sánh diff để đảm bảo không xóa nhầm logic hay import.
152
+ Exit: SUCCESS nếu code sạch hơn, pass linter/types và giữ nguyên behavior.
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Prompt Template
158
+
159
+ AI đọc `DEV_PROFILE.md` để biết conventions. Mô tả vấn đề — AI đọc code thật trước khi refactor.
160
+
161
+ ```
162
+ Target: [File / module / function cần refactor — đường dẫn cụ thể]
163
+ Vấn đề: [Code đang gây ra vấn đề gì — quá dài / khó test / lặp lại / ...]
164
+ Mục tiêu: [Muốn đạt được gì sau refactor]
165
+ Giữ nguyên: [Public interface / behavior / test cases không được đổi]
166
+ ```
167
+
168
+ ---
169
+
170
+ ### Theo Role — AI refactor theo chiều sâu khác nhau:
171
+
172
+ **role: fe**
173
+ ```
174
+ Target: src/pages/CheckoutPage.tsx (380 dòng)
175
+ Vấn đề: Một file trộn lẫn: form state, API calls, validation, UI rendering,
176
+ cart calculation — không test được, không reuse được
177
+ Mục tiêu: Tách thành: CheckoutPage (UI) + useCheckout (logic hook) +
178
+ checkoutSchema (validation) + cartUtils (calculation)
179
+ Giữ nguyên: Props interface của CheckoutPage không đổi, behavior submit không đổi
180
+ ```
181
+ → AI refactor: custom hook extraction pattern, co-location vs separation of concerns,
182
+ memoization opportunities (useMemo/useCallback), type narrowing sau khi tách.
183
+
184
+ **role: be**
185
+ ```
186
+ Target: src/services/OrderService.ts (420 dòng)
187
+ Vấn đề: God class — xử lý: tạo order, tính giá, gửi email, update inventory,
188
+ generate invoice — vi phạm SRP, unit test không isolate được
189
+ Mục tiêu: Tách ra theo domain: PricingService, InventoryService, NotificationService,
190
+ OrderService chỉ orchestrate
191
+ Giữ nguyên: Public method signatures của OrderService, không đổi DB transactions
192
+ ```
193
+ → AI refactor: dependency injection pattern, service boundary design,
194
+ transaction scope sau khi tách (vẫn cần atomic), interface extraction cho testability.
195
+
196
+ **role: fullstack**
197
+ ```
198
+ Target: src/features/products/ (toàn bộ folder)
199
+ Vấn đề: Feature folder có: API route, DB query, FE component, type definitions
200
+ — tất cả trong cùng 1 file products.ts (550 dòng)
201
+ Mục tiêu: Feature-based architecture: products/api.ts, products/db.ts,
202
+ products/components/, products/types.ts, products/hooks.ts
203
+ Giữ nguyên: Import paths của các file khác đang dùng products types
204
+ ```
205
+ → AI refactor: barrel exports để preserve import paths, layer separation
206
+ (presentation/business/data), shared types location, circular dependency check.
207
+
208
+ **role: data**
209
+ ```
210
+ Target: transforms/order_metrics.sql (250 dòng)
211
+ Vấn đề: SQL monolith — một query tính tất cả metrics, không reusable,
212
+ debug khó, CTE lồng nhau 6 cấp
213
+ Mục tiêu: Tách thành dbt models: stg_orders, int_order_items, fct_order_metrics
214
+ Mỗi model làm đúng một việc
215
+ Giữ nguyên: Output schema của fct_order_metrics không đổi (downstream depends on it)
216
+ ```
217
+ → AI refactor: dbt model layering (staging/intermediate/mart), ref() dependencies,
218
+ incremental model strategy, documentation + schema.yml generation.
219
+
220
+ **role: ai-engineer**
221
+ ```
222
+ Target: agents/rag_agent.py (300 dòng)
223
+ Vấn đề: Monolithic RAG function — embed + retrieve + rerank + generate
224
+ tất cả trong 1 hàm, không thể A/B test từng component
225
+ Mục tiêu: Tách thành pipeline: Retriever, Reranker, Generator — mỗi class
226
+ có interface rõ ràng, swap được implementation
227
+ Giữ nguyên: Input/output interface của rag_agent() không đổi
228
+ ```
229
+ → AI refactor: Strategy pattern cho từng pipeline stage, dependency injection
230
+ cho model/embedding, eval hooks tại từng stage, config-driven pipeline.
231
+
232
+ **role: devops**
233
+ ```
234
+ Target: .github/workflows/deploy.yml (200 dòng)
235
+ Vấn đề: Một workflow file làm tất cả: test + build + push image + deploy staging
236
+ + deploy prod + notify — không reusable, khó debug khi fail
237
+ Mục tiêu: Tách thành reusable workflows: test.yml, build-push.yml,
238
+ deploy.yml (reusable), notify.yml — orchestrated từ main.yml
239
+ Giữ nguyên: Trigger conditions và environment variables không đổi
240
+ ```
241
+ → AI refactor: GitHub reusable workflows pattern (workflow_call),
242
+ matrix strategy cho multi-env deploy, secret scoping per environment,
243
+ concurrency groups để tránh parallel deploys.