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,9 +1,9 @@
1
- ---
1
+ ---
2
2
  # ── Identity ───────────────────────────────────────────────
3
3
  name: qk-bug-resolution
4
- version: 9.1.0
4
+ version: 9.2.0
5
5
  status: stable
6
- description: "Sửa lỗi (bugs) bằng chu trình khép kín: Quan sátGiả thuyếtBằng chứng Sửa."
6
+ description: "Sửa lỗi (bugs) bằng chu trình khép kín: Observe Hypothesize Evidence Fix Verify. Dùng skill này khi user nhắc đến: fix bug, sửa lỗi, crash, error, exception, not working, bị lỗi, debug — kể cả khi chỉ paste stack trace hoặc mô tả triệu chứng không nói rõ là \"bug\"."
7
7
  platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
8
8
 
9
9
  # ── V9: Classification ─────────────────────────────────────
@@ -22,12 +22,16 @@ complexity:
22
22
  has_external_dependency: false
23
23
  has_breaking_change: false
24
24
 
25
- triggers:
26
- - "fix bug"
27
- - "sửa lỗi"
28
- - "crash"
29
- - "error"
30
- - "not working"
25
+ triggers:
26
+ - "fix bug"
27
+ - "sửa lỗi"
28
+ - "crash"
29
+ - "error"
30
+ - "exception"
31
+ - "not working"
32
+ - "bị lỗi"
33
+ - "debug"
34
+
31
35
 
32
36
  selection:
33
37
  priority: high
@@ -46,7 +50,7 @@ tools:
46
50
 
47
51
  related_skills:
48
52
  - qk-context-loader
49
- - qk-validation-gate
53
+ - qk-test-engineering
50
54
 
51
55
  knowledge_scope:
52
56
  owns:
@@ -82,609 +86,172 @@ token_budget:
82
86
  max_shell_commands: 2
83
87
  stop_early: true
84
88
 
85
- exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
89
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
86
90
  ---
87
91
 
88
92
  # qk-bug-resolution — Diagnose & Repair
89
93
 
90
94
  > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
91
95
 
96
+ Chịu trách nhiệm chẩn đoán và khắc phục lỗi mã nguồn theo chu trình khép kín: **Observe (Quan sát) → Hypothesize (Giả thuyết) → Evidence (Bằng chứng) → Fix (Sửa chữa) → Verify (Xác thực)**. Tuyệt đối không đoán mò hoặc áp dụng "quick-hack" làm che giấu lỗi gốc.
97
+
92
98
  ---
93
99
 
94
- ## Memory Workflow
95
-
96
- ### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
97
- - 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:
98
- - **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.
99
- - **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.
100
-
101
- ---
102
-
103
- ### Pre-flight Retrieve (Trước khi thực thi)
104
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
105
- bắt buộc tra cứu:
106
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
107
-
108
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
109
- - Architecture
110
- - Hard Bug
111
- - Convention
112
- - Pattern
113
- - Tech Debt Pattern
114
- - 👉 *Domain Focus:* Hard Bug (vd: lỗi memory leak, race condition, lỗi thư viện tương tự từng gặp).
115
-
116
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
117
- Không được xem Memory là Source of Truth.
118
- 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.
119
-
120
- ---
121
-
122
- ### Learning Flow (AI tự học có kiểm soát)
123
- - 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:
124
- - Hard Bug có khả năng tái diễn.
125
- - Pattern làm việc lặp lại trong dự án.
126
- - Convention hoặc quy tắc kiến trúc mới.
127
- - Quyết định Architecture quan trọng.
128
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
129
- - 👉 *Domain Harvest:* Hard Bug mới có khả năng tái diễn (vd: nguyên nhân sâu xa của crash/leak để phòng ngừa).
130
-
131
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
132
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
133
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
134
-
135
- ---
136
-
137
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
138
- Sau khi hoàn thành task:
139
- - AI đánh giá các Candidate Memory đã tạo.
140
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
141
- - Đề xuất người dùng xem xét.
142
- - Gửi yêu cầu phê duyệt thông qua:
143
- - `/learn`
144
- - `qk-project-memory`
145
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
146
-
147
- ```
148
- .ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
149
- ```
150
-
151
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
152
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
153
-
154
- ---
155
-
156
- ### Ignore (Không đưa vào Memory)
157
- Không lưu:
158
- - Trace log của một session đơn lẻ.
159
- - Temporary debugging data.
160
- - Output của một lần chạy test/scan.
161
- - Report health tạm thời của một đợt kiểm tra.
162
- - Lỗi nhỏ chỉ xảy ra một lần.
163
- - Thông tin không có khả năng tái sử dụng.
164
- - 👉 *Domain Ignore:* Lỗi nhỏ chỉ xảy ra một lần (vd: typo, quên import, thiếu ngoặc đơn giản).
165
-
166
- ---
167
-
168
- ### Golden Rule
169
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
170
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
171
-
172
- ---
173
-
174
-
175
-
176
- ### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
177
- - 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:
178
- - **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.
179
- - **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.
180
-
181
- ---
182
-
183
- ### Pre-flight Retrieve (Trước khi thực thi)
184
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
185
- bắt buộc tra cứu:
186
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
187
-
188
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
189
- - Architecture
190
- - Hard Bug
191
- - Convention
192
- - Pattern
193
- - Tech Debt Pattern
194
- - 👉 *Domain Focus:* Hard Bug (vd: lỗi memory leak, race condition, lỗi thư viện tương tự từng gặp).
195
-
196
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
197
- Không được xem Memory là Source of Truth.
198
- 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.
199
-
200
- ---
201
-
202
- ### Learning Flow (AI tự học có kiểm soát)
203
- - 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:
204
- - Hard Bug có khả năng tái diễn.
205
- - Pattern làm việc lặp lại trong dự án.
206
- - Convention hoặc quy tắc kiến trúc mới.
207
- - Quyết định Architecture quan trọng.
208
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
209
- - 👉 *Domain Harvest:* Hard Bug mới có khả năng tái diễn (vd: nguyên nhân sâu xa của crash/leak để phòng ngừa).
210
-
211
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
212
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
213
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
214
-
215
- ---
216
-
217
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
218
- Sau khi hoàn thành task:
219
- - AI đánh giá các Candidate Memory đã tạo.
220
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
221
- - Đề xuất người dùng xem xét.
222
- - Gửi yêu cầu phê duyệt thông qua:
223
- - `/learn`
224
- - `qk-project-memory`
225
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
226
-
227
- ```
228
- .ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
229
- ```
230
-
231
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
232
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
233
-
234
- ---
235
-
236
- ### Ignore (Không đưa vào Memory)
237
- Không lưu:
238
- - Trace log của một session đơn lẻ.
239
- - Temporary debugging data.
240
- - Output của một lần chạy test/scan.
241
- - Report health tạm thời của một đợt kiểm tra.
242
- - Lỗi nhỏ chỉ xảy ra một lần.
243
- - Thông tin không có khả năng tái sử dụng.
244
- - 👉 *Domain Ignore:* Lỗi nhỏ chỉ xảy ra một lần (vd: typo, quên import, thiếu ngoặc đơn giản).
245
-
246
- ---
247
-
248
- ### Golden Rule
249
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
250
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
251
-
252
- ---
253
-
254
-
255
-
256
- ### Pre-flight Retrieve (Trước khi thực thi)
257
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
258
- bắt buộc tra cứu:
259
- - `.agents/knowledge/index.yaml` (Shared Project Knowledge)
260
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
261
-
262
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
263
- - Architecture
264
- - Hard Bug
265
- - Convention
266
- - Pattern
267
- - Tech Debt Pattern
268
- - 👉 *Domain Focus:* Hard Bug (vd: lỗi memory leak, race condition, lỗi thư viện tương tự từng gặp).
269
-
270
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
271
- Không được xem Memory là Source of Truth.
272
- 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.
273
-
274
- ---
275
-
276
- ### Learning Flow (AI tự học có kiểm soát)
277
- - 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:
278
- - Hard Bug có khả năng tái diễn.
279
- - Pattern làm việc lặp lại trong dự án.
280
- - Convention hoặc quy tắc kiến trúc mới.
281
- - Quyết định Architecture quan trọng.
282
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
283
- - 👉 *Domain Harvest:* Hard Bug mới có khả năng tái diễn (vd: nguyên nhân sâu xa của crash/leak để phòng ngừa).
284
-
285
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
286
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
287
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
288
-
289
- ---
290
-
291
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
292
- Sau khi hoàn thành task:
293
- - AI đánh giá các Candidate Memory đã tạo.
294
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
295
- - Đề xuất người dùng xem xét.
296
- - Gửi yêu cầu phê duyệt thông qua:
297
- - `/learn`
298
- - `qk-project-memory`
299
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
300
-
301
- ```
302
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
303
- ```
304
-
305
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
306
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
307
-
308
- ---
309
-
310
- ### Ignore (Không đưa vào Memory)
311
- Không lưu:
312
- - Trace log của một session đơn lẻ.
313
- - Temporary debugging data.
314
- - Output của một lần chạy test/scan.
315
- - Report health tạm thời của một đợt kiểm tra.
316
- - Lỗi nhỏ chỉ xảy ra một lần.
317
- - Thông tin không có khả năng tái sử dụng.
318
- - 👉 *Domain Ignore:* Lỗi nhỏ chỉ xảy ra một lần (vd: typo, quên import, thiếu ngoặc đơn giản).
319
-
320
- ---
321
-
322
- ### Golden Rule
323
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
324
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
325
-
326
- ---
327
- ---
328
-
329
- ### Learning Flow (AI tự học có kiểm soát)
330
- - 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:
331
- - Hard Bug có khả năng tái diễn.
332
- - Pattern làm việc lặp lại trong dự án.
333
- - Convention hoặc quy tắc kiến trúc mới.
334
- - Quyết định Architecture quan trọng.
335
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
336
- - 👉 *Domain Harvest:* Hard Bug mới có khả năng tái diễn (vd: nguyên nhân sâu xa của crash/leak để phòng ngừa).
337
-
338
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
339
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
340
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
341
-
342
- ---
343
-
344
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
345
- Sau khi hoàn thành task:
346
- - AI đánh giá các Candidate Memory đã tạo.
347
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
348
- - Đề xuất người dùng xem xét.
349
- - Gửi yêu cầu phê duyệt thông qua:
350
- - `/learn`
351
- - `qk-project-memory`
352
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
353
-
354
- ```
355
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
356
- ```
357
-
358
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
359
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
360
-
361
- ---
362
-
363
- ### Ignore (Không đưa vào Memory)
364
- Không lưu:
365
- - Trace log của một session đơn lẻ.
366
- - Temporary debugging data.
367
- - Output của một lần chạy test/scan.
368
- - Report health tạm thời của một đợt kiểm tra.
369
- - Lỗi nhỏ chỉ xảy ra một lần.
370
- - Thông tin không có khả năng tái sử dụng.
371
- - 👉 *Domain Ignore:* Lỗi nhỏ chỉ xảy ra một lần (vd: typo, quên import, thiếu ngoặc đơn giản).
372
-
373
- ---
374
-
375
- ### Golden Rule
376
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
377
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
378
-
379
- ---
380
- ---
381
-
382
- ### Learning Flow (AI tự học có kiểm soát)
383
- - 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:
384
- - Hard Bug có khả năng tái diễn.
385
- - Pattern làm việc lặp lại trong dự án.
386
- - Convention hoặc quy tắc kiến trúc mới.
387
- - Quyết định Architecture quan trọng.
388
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
389
- - 👉 *Domain Harvest:* Hard Bug mới có khả năng tái diễn (vd: nguyên nhân sâu xa của crash/leak để phòng ngừa).
390
-
391
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
392
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
393
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
394
-
395
- ---
396
-
397
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
398
- Sau khi hoàn thành task:
399
- - AI đánh giá các Candidate Memory đã tạo.
400
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
401
- - Đề xuất người dùng xem xét.
402
- - Gửi yêu cầu phê duyệt thông qua:
403
- - `/learn`
404
- - `qk-project-memory`
405
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
406
-
407
- ```
408
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
409
- ```
410
-
411
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
412
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
413
-
414
- ---
415
-
416
- ### Ignore (Không đưa vào Memory)
417
- Không lưu:
418
- - Trace log của một session đơn lẻ.
419
- - Temporary debugging data.
420
- - Output của một lần chạy test/scan.
421
- - Report health tạm thời của một đợt kiểm tra.
422
- - Lỗi nhỏ chỉ xảy ra một lần.
423
- - Thông tin không có khả năng tái sử dụng.
424
- - 👉 *Domain Ignore:* Lỗi nhỏ chỉ xảy ra một lần (vd: typo, quên import, thiếu ngoặc đơn giản).
425
-
426
- ---
427
-
428
- ### Golden Rule
429
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
430
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
431
-
432
- ---
433
- ---
434
- ---
435
- ---
436
-
437
100
  ## Preconditions
438
- - [ ] A specific symptom is provided (error message, wrong behavior, crash)
439
- - [ ] The affected file or feature area is identifiable
440
- - [ ] Reproduction steps or stack trace provided
441
101
 
442
- ```
443
- On missing precondition:
444
- EXIT: BLOCKED
445
- Message: "Cần thêm thông tin: [error message / stack trace / bước tái hiện lỗi]"
446
- ```
102
+ Trước khi sửa bất kỳ dòng code nào, AI BẮT BUỘC kiểm tra:
103
+
104
+ - [ ] Thu thập đầy đủ triệu chứng lỗi: error message, stack trace, hoặc mô tả hành vi sai lệch (reproduction steps).
105
+ - [ ] Xác định file/hàm nghi vấn đọc source code thực tế.
106
+ - [ ] Tái hiện hoặc tìm được bằng chứng trực tiếp xác nhận nguyên nhân gốc (root cause).
107
+ - [ ] Nếu không có đủ thông tin hoặc không thể xác định được nguyên nhân:
108
+ → **EXIT: BLOCKED**
109
+ → Báo cáo user yêu cầu bổ sung context, logs hoặc reproduction steps.
447
110
 
448
111
  ---
449
112
 
450
113
  ## Scope
451
- - ✅ Diagnose existing defects with concrete evidence
452
- - ✅ Apply minimal targeted patches directly to source files
453
- - ✅ Verify fix with evidence (static or runtime)
454
-
455
- ## Non-Goals
456
- - ❌ Refactor code outside the buggy area
457
- - ❌ Bypass ranh giới bảo mật Zero-Trust (R-SEC-04) chỉ để "làm cho chạy được".
458
- - ❌ Create Node.js/Python/shell scripts to apply patches — edit source files directly
459
- - ❌ Read entire files > 150 lines — use `grep_search` or targeted `view_file[StartLine:EndLine]`
460
- - ❌ Run shell commands > 2 times per cycle
461
- - ❌ Guess root cause without concrete evidence
462
- - ❌ Mark as done without verifying the fix
463
- - ❌ Proceed with MEDIUM confidence — only HIGH confidence is acceptable for fix
464
- - ❌ Use `?.` or `!` to silence errors instead of fixing root cause
465
-
466
- ---
467
114
 
468
- ## Priority Order
115
+ Skill này làm:
116
+ - Phân tích stack traces, server logs, console errors.
117
+ - Điều tra nguyên nhân gốc rễ (Root Cause Analysis) tại tầng logic, type mismatch, hoặc concurrency.
118
+ - Đưa ra giải pháp khắc phục triệt để (surgical fix) nhắm đúng nguyên nhân gốc.
119
+ - Thêm hoặc cập nhật test cases để tái hiện bug và ngăn chặn hiện tượng hồi quy (regression).
120
+ - Bảo toàn hành vi ban đầu của các tính năng không liên quan.
469
121
 
470
- | Priority | Check | Skip Threshold |
471
- |----------|-------|----------------|
472
- | P1 | Identify exact file:line of failure | Never |
473
- | P2 | Trace data flow to root cause | Budget < 30% EXIT: BLOCKED |
474
- | P3 | Check adjacent code for similar bugs | Budget < 50% |
475
- | P4 | Suggest regression test | Budget < 70% |
122
+ Skill này KHÔNG làm:
123
+ - Viết lại toàn bộ module hoặc đổi kiến trúc lớn chỉ để sửa 1 bug (→ `qk-refactor`).
124
+ - Xây dựng thêm tính năng mới chưa từng tồn tại (→ `qk-feature-delivery`).
125
+ - Tự động thay đổi DB schema nếu chưa đánh giá tính tương thích ngược (→ `qk-data-lifecycle`).
476
126
 
477
127
  ---
478
128
 
479
- ## Workflow
480
-
481
- ### Phase 1 — Triage (Read Only)
482
-
483
- **Steps:**
484
- 1. `grep_search` — search for error message, function name, or symptom keyword
485
- 2. `view_file[StartLine:EndLine]` — read ONLY the relevant section (≤ 150 lines)
486
- 3. Identify the exact file and approximate line of failure
129
+ ## Execution Steps
487
130
 
488
- **Exit When:**
489
- - Exact file:line identified → go to Phase 2
490
- - `max_files_read` (3) reached without exact identification → EXIT: BLOCKED
491
-
492
- **Decision:**
131
+ ### Step 1 — Observe & Reproduce
493
132
  ```
494
- IF stack trace provided
495
- → Parse top frame inside project code → go to Phase 2
496
-
497
- ELSE IF error message provided
498
- grep_search for error string → go to Phase 2
499
-
500
- ELSE
501
- → EXIT: BLOCKED — ask for reproduction steps
133
+ Inputs: Error logs, Stack trace, Mô tả từ user
134
+ Actions:
135
+ - Phân tích vị trí file, dòng code gây lỗi.
136
+ - Xác định điều kiện biên (edge cases) hoặc trạng thái dữ liệu kích hoạt bug.
137
+ Output: Symptom breakdown & Target files
502
138
  ```
503
139
 
504
- **On Blocked:**
140
+ ### Step 2 — Hypothesize & Evidence Gathering
505
141
  ```
506
- EXIT: BLOCKED
507
- Missing: Reproduction steps or error output
508
- Questions:
509
- 1. Lỗi xảy ra bước nào? (URL / action / input)
510
- 2. Error message hoặc stack trace cụ thể gì?
511
- Recommended Assumptions: none — cannot proceed without this
142
+ Inputs: Target code, Runtime environment
143
+ Actions:
144
+ - Đặt giả thuyết về nguyên nhân cốt lõi (null pointer, race condition, state mutation, network failure).
145
+ - Đọc code liên quan để kiểm chứng giả thuyết (xem callers, callees, data flow).
146
+ Exit: BLOCKED nếu giả thuyết không bằng chứng logic chứng minh.
512
147
  ```
513
148
 
514
- ---
515
-
516
- ### Phase 2 — Root Cause Analysis
517
-
518
- **Steps:**
519
- 1. Read the identified file section (`view_file[StartLine:EndLine]`, ≤ 150 lines)
520
- 2. Trace: What condition triggers the failure?
521
- 3. Check context graph for blast radius assessment
522
- 4. Assign confidence level
523
-
524
- **Common Root Cause Categories:**
525
- - Logic error (wrong condition, wrong operator)
526
- - Null / undefined / missing data
527
- - Async timing or race condition
528
- - Type mismatch or stale state
529
- - API contract change
530
-
531
- **Decision:**
149
+ ### Step 3 — Surgical Fix
532
150
  ```
533
- IF root cause found with direct evidence (file:line + stack trace confirms)
534
- → Confidence: HIGH → go to Phase 3
535
-
536
- ELSE IF root cause still unclear after reading identified file
537
- Read 1 more file (budget check)
538
- Still unclear → EXIT: BLOCKED
539
-
540
- ELSE IF root cause inferred from pattern (no direct evidence)
541
- → EXIT: BLOCKED — cannot fix without concrete evidence
151
+ Inputs: Verified root cause
152
+ Actions:
153
+ - Sửa lỗi chính xác tại nơi phát sinh (surgical modification).
154
+ - Đảm bảo xử triệt để các edge cases liên đới.
155
+ - Giữ nguyên coding style quy ước hiện hữu của dự án.
156
+ Output: Targeted code fix
542
157
  ```
543
158
 
544
- ---
545
-
546
- ### Phase 3 — Apply Fix (Direct Edit Only)
547
-
548
- **Steps:**
549
- 1. Apply fix using `replace_file_content` or `multi_replace_file_content`
550
- - **NEVER** create a helper script to do the patching
551
- - Keep the change minimal smallest diff that resolves the issue
552
- 2. Re-read the fixed section to confirm correctness (static verification)
553
- 3. Run shell command ONLY if runtime verification is strictly required (counts toward max 2)
554
-
555
- **Exit When:**
556
- - Fix applied and verified statically → EXIT: SUCCESS
557
- - Fix applied but runtime verification needed and command budget exhausted → EXIT: FAILED — cannot verify
159
+ ### Step 4 — Verify & Prevent Regression
160
+ ```
161
+ Inputs: Targeted code fix
162
+ Actions:
163
+ - Kiểm tra xem lỗi đã được khắc phục hoàn toàn chưa.
164
+ - Chạy linter, typecheck unit tests liên quan.
165
+ - Đề xuất hoặc viết regression test để đảm bảo lỗi không tái diễn.
166
+ Exit: SUCCESS nếu verification pass không phát sinh side effects.
167
+ ```
558
168
 
559
169
  ---
560
170
 
561
- ## Confidence Model
171
+ ## Prompt Template
562
172
 
563
- | Level | Condition | Action |
564
- |-------|-----------|--------|
565
- | HIGH | Direct evidence — exact file:line + stack trace confirms it | Proceed with fix |
566
- | MEDIUM | Inferred from code patterns, similar bugs nearby | EXIT: BLOCKED — collect more evidence |
567
- | LOW | Assumption without code evidence | STOP — ask user before applying fix |
173
+ AI đọc `DEV_PROFILE.md` để biết stack. Paste đúng error — AI sẽ đọc code, không đoán mò.
568
174
 
569
- ---
570
-
571
- ## Severity
572
-
573
- | Level | Definition | Example |
574
- |-------|-----------|---------|
575
- | CRITICAL | Data loss / security / app crash | Hardcoded secret, unhandled null crash on login |
576
- | HIGH | Core feature broken, blocking users | API returns 500, form submission fails |
577
- | MEDIUM | Degraded UX, workaround exists | Wrong label, minor calculation off |
578
- | LOW | Cosmetic, non-blocking | Console.log left in code |
175
+ ```
176
+ Lỗi: [Error message / stack trace đầy đủ — paste nguyên văn]
177
+ Xảy ra khi: [Thao tác / điều kiện / input nào trigger lỗi]
178
+ Tần suất: [Luôn luôn / đôi khi / chỉ trên production / chỉ với user X]
179
+ File nghi ngờ: [Đường dẫn nếu biết]
180
+ Đã thử: [Những gì đã làm — để AI không lặp lại]
181
+ ```
579
182
 
580
183
  ---
581
184
 
582
- ## Evidence Format
185
+ ### Theo Role — AI điều tra theo chiều sâu khác nhau:
583
186
 
187
+ **role: fe**
584
188
  ```
585
- [SEVERITY] path/to/file.ts:LINE
586
- Reason: [why this causes the bug]
587
- Impact: [which modules/users are affected]
588
- Confidence: [HIGH|MEDIUM|LOW]
589
- Fix: [what was changed]
189
+ Lỗi: Uncaught TypeError: Cannot read properties of null (reading 'userId')
190
+ at ProfileCard.tsx:47
191
+ Xảy ra khi: Vào /profile sau khi logout rồi login lại bằng account khác
192
+ Tần suất: Luôn luôn reproduce được
193
+ File nghi ngờ: src/components/ProfileCard.tsx, src/store/authStore.ts
194
+ Đã thử: Thêm null check ở line 47 nhưng lỗi chuyển sang line 52
590
195
  ```
196
+ → AI điều tra: stale state trong Zustand/Redux khi re-login, component lifecycle
197
+ vs store reset timing, race condition giữa auth state và component render.
591
198
 
592
- **Example:**
199
+ **role: be**
593
200
  ```
594
- [HIGH] src/services/auth.service.ts:87
595
- Reason: Missing null check on `user.profile` crashes when profile is not yet loaded
596
- Impact: Affects all login flows; 100% of users hitting this path
597
- Confidence: HIGH
598
- Fix: Added `user.profile?.email ?? ''` guard
201
+ Lỗi: PrismaClientKnownRequestError: Unique constraint failed on field `email`
202
+ at POST /api/auth/registerstatus 500 thay 409
203
+ Xảy ra khi: Register với email đã tồn tại
204
+ Tần suất: Luôn luôn
205
+ File nghi ngờ: src/routes/auth/register.ts
206
+ Đã thử: Chưa thử gì, mới phát hiện
599
207
  ```
208
+ → AI điều tra: missing error type guard cho Prisma errors, HTTP status code mapping,
209
+ idempotency của endpoint, có nên check trước (findUnique) hay catch lỗi.
600
210
 
601
- ---
602
-
603
- ## Retry Policy
604
-
211
+ **role: fullstack**
605
212
  ```
606
- Fix applied
607
- └─ Static verification (re-read fixed section)
608
- ├─ PASS EXIT: SUCCESS
609
- └─ Issue detected attempt 1 correction
610
- └─ Re-verify
611
- ├─ PASS → EXIT: SUCCESS
612
- └─ FAIL → EXIT: FAILED + report both attempts
613
- └─ Do NOT attempt 3rd fix — ESCALATE to user
213
+ Lỗi: Optimistic update trên FE hiện sai data, sau 2s mới sync về đúng
214
+ Xảy ra khi: Xóa item trong danh sách → item biến mất → reload lại → item vẫn còn
215
+ Tần suất: Chỉ xảy ra khi network chậm (> 1s)
216
+ File nghi ngờ: FE: useDeleteItem.ts / BE: DELETE /api/items/:id
217
+ Đã thử: Đã kiểm tra BE trả 200 đúng
614
218
  ```
219
+ → AI điều tra: React Query mutation onMutate/onError/onSettled sequence,
220
+ cache invalidation timing, BE rollback khi constraint violation,
221
+ contract mismatch giữa FE optimistic state và BE response.
615
222
 
616
- ---
617
-
618
- ## Escalation Rules
619
-
223
+ **role: data**
620
224
  ```
621
- BLOCKED: [Specific reason]
622
- Missing:
623
- - [Stack trace / error message / reproduction steps]
624
- Questions:
625
- 1. Lỗi xuất hiện khi nào? (action/URL/input cụ thể)
626
- 2. Lỗi tái hiện được không?
627
- Recommended Assumptions (if proceeding without full info):
628
- - [Safe assumption based on available context]
225
+ Lỗi: DuplicateKeyError trên BigQuery sau khi re-run DAG ngày 2024-01-15
226
+ Job: daily_sales_load — task: load_to_bq
227
+ Xảy ra khi: Manual re-run sau khi pipeline fail giữa chừng
228
+ Tần suất: Mỗi lần re-run partial load
229
+ File nghi ngờ: dags/daily_sales_load.py, transforms/sales_transform.sql
230
+ Đã thử: Xóa data ngày đó trên BQ rồi re-run — OK, nhưng không scalable
629
231
  ```
232
+ → AI điều tra: idempotency gap (thiếu MERGE/UPSERT), partition-based delete trước load,
233
+ task atomicity design, watermark checkpoint bị reset sai.
630
234
 
631
- ---
632
-
633
- ## Handoff Contract
634
-
635
- ### Consumes
636
- ```json
637
- {
638
- "from": "user or qk-orchestrator",
639
- "required_fields": ["symptom_description", "context_graph"],
640
- "optional_fields": ["stack_trace", "error_message", "affected_file"]
641
- }
235
+ **role: ai-engineer**
642
236
  ```
643
-
644
- ### Produces
645
- ```json
646
- {
647
- "to": "user",
648
- "output_fields": ["changed_files", "root_cause", "impact", "severity", "confidence", "exit_code"]
649
- }
237
+ Lỗi: RAG trả lời sai — cite đúng document nhưng nội dung không liên quan
238
+ Xảy ra khi: Câu hỏi có nhiều từ khóa overlap với nhiều document khác nhau
239
+ Tần suất: ~30% queries liên quan đến chủ đề "pricing"
240
+ File nghi ngờ: retrieval/vector_search.py, prompts/rag_system.txt
241
+ Đã thử: Tăng top_k từ 3 lên 5 — không cải thiện
650
242
  ```
243
+ → AI điều tra: embedding model semantic mismatch, chunk boundary cắt mất context,
244
+ thiếu reranking layer, system prompt không enforce grounding,
245
+ cần hybrid search (BM25 + dense) cho domain-specific terms.
651
246
 
652
- ---
653
-
654
- ## Output Format
655
-
247
+ **role: devops**
656
248
  ```
657
- 🐛 Bug Report
658
- ─────────────────────────────────────────────────
659
- Symptom: [What broke + how to reproduce]
660
- Root cause: [file:line exact reason]
661
- Severity: [CRITICAL | HIGH | MEDIUM | LOW]
662
- Confidence: [HIGH | MEDIUM | LOW]
663
- Impact: [Which modules/users affected]
664
-
665
- 🔧 Fix Applied
666
- ─────────────────────────────────────────────────
667
- File: [path/to/file.ts]
668
- Change: [What changed and why it's minimal]
669
-
670
- ✅ Verification
671
- ─────────────────────────────────────────────────
672
- Static: [Re-read section — looks correct]
673
- Runtime: [PASS | SKIPPED — reason]
674
-
675
- Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
249
+ Lỗi: GitHub Actions deploy job fail: "Error: EACCES: permission denied, open '/app/logs'"
250
+ Stage: production — chỉ xảy ra sau khi update Docker base image
251
+ Xảy ra khi: Deploy lên production container
252
+ Tần suất: 100% sau khi merge PR #247
253
+ File nghi ngờ: Dockerfile, docker-compose.prod.yml, .github/workflows/deploy.yml
254
+ Đã thử: Revert base image — OK, nhưng cần base image mới để patch CVE
676
255
  ```
677
-
678
- ---
679
-
680
- ## Exit Codes
681
-
682
- | Code | Meaning | When |
683
- |------|---------|------|
684
- | SUCCESS | Bug fixed and verified | Fix applied + static/runtime check passed |
685
- | PARTIAL | Fix applied, verification inconclusive | Budget exhausted or environment inaccessible |
686
- | BLOCKED | Cannot diagnose without more info | Missing stack trace / reproduction steps |
687
- | FAILED | Fix attempted, issue persists after 2 retries OR budget exhausted without verification | Complex race condition or architectural issue |
688
-
689
- ---
690
-
256
+ → AI điều tra: USER directive trong Dockerfile thay đổi giữa image versions,
257
+ volume mount permission, non-root user setup, security vs functionality trade-off.