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-data-lifecycle
4
- version: 9.1.0
4
+ version: 9.2.0
5
5
  status: stable
6
- description: "Quản lý Schema, Migrations an toàn — schema freeze backward-compat migration cleanup."
6
+ description: "Quản lý Schema Migration cơ sở dữ liệu an toàn — schema freeze, backward-compatible migrations, data transformation, zero-downtime deployment. Dùng skill này khi user nhắc đến: sửa schema, migration, database model, db schema, cập nhật database, đổi model, thêm cột, alter table — kể cả khi chỉ nói 'thêm trường phone vào bảng users'."
7
7
  platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
8
8
 
9
9
  # ── V9: Classification ─────────────────────────────────────
@@ -21,11 +21,16 @@ complexity:
21
21
  has_external_dependency: true
22
22
  has_breaking_change: false
23
23
 
24
- triggers:
25
- - "sửa schema"
26
- - "cập nhật database"
27
- - "tạo migration"
28
- - "đổi model"
24
+ triggers:
25
+ - "sửa schema"
26
+ - "migration"
27
+ - "database model"
28
+ - "db schema"
29
+ - "cập nhật database"
30
+ - "đổi model"
31
+ - "thêm cột"
32
+ - "alter table"
33
+
29
34
 
30
35
  # ── V8: References ─────────────────────────────────────────
31
36
  workflow: feature-delivery
@@ -33,6 +38,7 @@ workflow: feature-delivery
33
38
  rules:
34
39
  - global
35
40
  - coding
41
+ - safety
36
42
 
37
43
  tools:
38
44
  - filesystem
@@ -40,11 +46,13 @@ tools:
40
46
 
41
47
  related_skills:
42
48
  - qk-db-optimizer
49
+ - qk-api-lifecycle
43
50
 
44
51
  knowledge_scope:
45
52
  owns:
46
53
  - schema
47
54
  - migrations
55
+ - data-contracts
48
56
  references:
49
57
  - architecture
50
58
  - security
@@ -72,525 +80,118 @@ produces: [code, schema]
72
80
  consumes: [context-graph, user-description]
73
81
 
74
82
  token_budget:
75
- max_files_read: 4
76
- max_lines_per_read: 100
77
- max_shell_commands: 1
83
+ max_files_read: 5
84
+ max_lines_per_read: 150
85
+ max_shell_commands: 2
78
86
  stop_early: true
79
87
 
80
- exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
88
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
81
89
  ---
82
90
 
83
- # qk-data-lifecycle — Database Schema & Repository Manager
91
+ # qk-data-lifecycle — Database Schema & Migration Guardian
84
92
 
85
93
  > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
86
94
 
95
+ Chịu trách nhiệm quản lý vòng đời Schema DB và Migration an toàn theo nguyên tắc: **Freeze schema → Backward-compatible migration (Expand & Contract) → Cleanup**. Tuyệt đối không làm đứt gãy runtime hoặc gây mất mát dữ liệu live.
96
+
87
97
  ---
88
98
 
89
- ## Memory Workflow
90
-
91
- ### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
92
- - 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:
93
- - **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.
94
- - **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.
95
-
96
- ---
97
-
98
- ### Pre-flight Retrieve (Trước khi thực thi)
99
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
100
- bắt buộc tra cứu:
101
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
102
-
103
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
104
- - Architecture
105
- - Hard Bug
106
- - Convention
107
- - Pattern
108
- - Tech Debt Pattern
109
- - 👉 *Domain Focus:* Convention / Architecture (vd: chiến lược migration backward-compatible, quy định FK).
110
-
111
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
112
- Không được xem Memory là Source of Truth.
113
- 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.
114
-
115
- ---
116
-
117
- ### Learning Flow (AI tự học có kiểm soát)
118
- - 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:
119
- - Hard Bug có khả năng tái diễn.
120
- - Pattern làm việc lặp lại trong dự án.
121
- - Convention hoặc quy tắc kiến trúc mới.
122
- - Quyết định Architecture quan trọng.
123
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
124
- - 👉 *Domain Harvest:* Quyết định Architecture quan trọng (vd: chuẩn index CSDL, quy tắc phân trang mới).
125
-
126
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
127
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
128
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
129
-
130
- ---
131
-
132
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
133
- Sau khi hoàn thành task:
134
- - AI đánh giá các Candidate Memory đã tạo.
135
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
136
- - Đề xuất người dùng xem xét.
137
- - Gửi yêu cầu phê duyệt thông qua:
138
- - `/learn`
139
- - `qk-project-memory`
140
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
141
-
142
- ```
143
- .ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
144
- ```
145
-
146
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
147
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
148
-
149
- ---
150
-
151
- ### Ignore (Không đưa vào Memory)
152
- Không lưu:
153
- - Trace log của một session đơn lẻ.
154
- - Temporary debugging data.
155
- - Output của một lần chạy test/scan.
156
- - Report health tạm thời của một đợt kiểm tra.
157
- - Lỗi nhỏ chỉ xảy ra một lần.
158
- - Thông tin không có khả năng tái sử dụng.
159
- - 👉 *Domain Ignore:* Thao tác thêm trường đơn giản hoặc temporary database fix.
160
-
161
- ---
162
-
163
- ### Golden Rule
164
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
165
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
166
-
167
- ---
168
-
169
-
170
-
171
- ### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
172
- - 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:
173
- - **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.
174
- - **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.
175
-
176
- ---
177
-
178
- ### Pre-flight Retrieve (Trước khi thực thi)
179
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
180
- bắt buộc tra cứu:
181
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
182
-
183
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
184
- - Architecture
185
- - Hard Bug
186
- - Convention
187
- - Pattern
188
- - Tech Debt Pattern
189
- - 👉 *Domain Focus:* Convention / Architecture (vd: chiến lược migration backward-compatible, quy định FK).
190
-
191
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
192
- Không được xem Memory là Source of Truth.
193
- 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.
194
-
195
- ---
196
-
197
- ### Learning Flow (AI tự học có kiểm soát)
198
- - 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:
199
- - Hard Bug có khả năng tái diễn.
200
- - Pattern làm việc lặp lại trong dự án.
201
- - Convention hoặc quy tắc kiến trúc mới.
202
- - Quyết định Architecture quan trọng.
203
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
204
- - 👉 *Domain Harvest:* Quyết định Architecture quan trọng (vd: chuẩn index CSDL, quy tắc phân trang mới).
205
-
206
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
207
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
208
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
209
-
210
- ---
211
-
212
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
213
- Sau khi hoàn thành task:
214
- - AI đánh giá các Candidate Memory đã tạo.
215
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
216
- - Đề xuất người dùng xem xét.
217
- - Gửi yêu cầu phê duyệt thông qua:
218
- - `/learn`
219
- - `qk-project-memory`
220
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
221
-
222
- ```
223
- .ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
224
- ```
225
-
226
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
227
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
228
-
229
- ---
230
-
231
- ### Ignore (Không đưa vào Memory)
232
- Không lưu:
233
- - Trace log của một session đơn lẻ.
234
- - Temporary debugging data.
235
- - Output của một lần chạy test/scan.
236
- - Report health tạm thời của một đợt kiểm tra.
237
- - Lỗi nhỏ chỉ xảy ra một lần.
238
- - Thông tin không có khả năng tái sử dụng.
239
- - 👉 *Domain Ignore:* Thao tác thêm trường đơn giản hoặc temporary database fix.
240
-
241
- ---
242
-
243
- ### Golden Rule
244
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
245
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
246
-
247
- ---
248
-
249
-
250
-
251
- ### Pre-flight Retrieve (Trước khi thực thi)
252
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
253
- bắt buộc tra cứu:
254
- - `.agents/knowledge/index.yaml` (Shared Project Knowledge)
255
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
256
-
257
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
258
- - Architecture
259
- - Hard Bug
260
- - Convention
261
- - Pattern
262
- - Tech Debt Pattern
263
- - 👉 *Domain Focus:* Convention / Architecture (vd: chiến lược migration backward-compatible, quy định FK).
264
-
265
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
266
- Không được xem Memory là Source of Truth.
267
- 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.
268
-
269
- ---
270
-
271
- ### Learning Flow (AI tự học có kiểm soát)
272
- - 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:
273
- - Hard Bug có khả năng tái diễn.
274
- - Pattern làm việc lặp lại trong dự án.
275
- - Convention hoặc quy tắc kiến trúc mới.
276
- - Quyết định Architecture quan trọng.
277
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
278
- - 👉 *Domain Harvest:* Quyết định Architecture quan trọng (vd: chuẩn index CSDL, quy tắc phân trang mới).
279
-
280
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
281
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
282
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
283
-
284
- ---
285
-
286
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
287
- Sau khi hoàn thành task:
288
- - AI đánh giá các Candidate Memory đã tạo.
289
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
290
- - Đề xuất người dùng xem xét.
291
- - Gửi yêu cầu phê duyệt thông qua:
292
- - `/learn`
293
- - `qk-project-memory`
294
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
295
-
296
- ```
297
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
298
- ```
299
-
300
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
301
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
302
-
303
- ---
304
-
305
- ### Ignore (Không đưa vào Memory)
306
- Không lưu:
307
- - Trace log của một session đơn lẻ.
308
- - Temporary debugging data.
309
- - Output của một lần chạy test/scan.
310
- - Report health tạm thời của một đợt kiểm tra.
311
- - Lỗi nhỏ chỉ xảy ra một lần.
312
- - Thông tin không có khả năng tái sử dụng.
313
- - 👉 *Domain Ignore:* Thao tác thêm trường đơn giản hoặc temporary database fix.
314
-
315
- ---
316
-
317
- ### Golden Rule
318
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
319
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
320
-
321
- ---
322
- ---
323
-
324
- ### Learning Flow (AI tự học có kiểm soát)
325
- - 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:
326
- - Hard Bug có khả năng tái diễn.
327
- - Pattern làm việc lặp lại trong dự án.
328
- - Convention hoặc quy tắc kiến trúc mới.
329
- - Quyết định Architecture quan trọng.
330
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
331
- - 👉 *Domain Harvest:* Quyết định Architecture quan trọng (vd: chuẩn index CSDL, quy tắc phân trang mới).
332
-
333
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
334
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
335
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
336
-
337
- ---
338
-
339
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
340
- Sau khi hoàn thành task:
341
- - AI đánh giá các Candidate Memory đã tạo.
342
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
343
- - Đề xuất người dùng xem xét.
344
- - Gửi yêu cầu phê duyệt thông qua:
345
- - `/learn`
346
- - `qk-project-memory`
347
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
348
-
349
- ```
350
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
351
- ```
352
-
353
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
354
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
355
-
356
- ---
357
-
358
- ### Ignore (Không đưa vào Memory)
359
- Không lưu:
360
- - Trace log của một session đơn lẻ.
361
- - Temporary debugging data.
362
- - Output của một lần chạy test/scan.
363
- - Report health tạm thời của một đợt kiểm tra.
364
- - Lỗi nhỏ chỉ xảy ra một lần.
365
- - Thông tin không có khả năng tái sử dụng.
366
- - 👉 *Domain Ignore:* Thao tác thêm trường đơn giản hoặc temporary database fix.
367
-
368
- ---
369
-
370
- ### Golden Rule
371
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
372
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
373
-
374
- ---
375
- ---
376
-
377
- ### Learning Flow (AI tự học có kiểm soát)
378
- - 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:
379
- - Hard Bug có khả năng tái diễn.
380
- - Pattern làm việc lặp lại trong dự án.
381
- - Convention hoặc quy tắc kiến trúc mới.
382
- - Quyết định Architecture quan trọng.
383
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
384
- - 👉 *Domain Harvest:* Quyết định Architecture quan trọng (vd: chuẩn index CSDL, quy tắc phân trang mới).
385
-
386
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
387
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
388
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
389
-
390
- ---
391
-
392
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
393
- Sau khi hoàn thành task:
394
- - AI đánh giá các Candidate Memory đã tạo.
395
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
396
- - Đề xuất người dùng xem xét.
397
- - Gửi yêu cầu phê duyệt thông qua:
398
- - `/learn`
399
- - `qk-project-memory`
400
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
401
-
402
- ```
403
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
404
- ```
405
-
406
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
407
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
408
-
409
- ---
410
-
411
- ### Ignore (Không đưa vào Memory)
412
- Không lưu:
413
- - Trace log của một session đơn lẻ.
414
- - Temporary debugging data.
415
- - Output của một lần chạy test/scan.
416
- - Report health tạm thời của một đợt kiểm tra.
417
- - Lỗi nhỏ chỉ xảy ra một lần.
418
- - Thông tin không có khả năng tái sử dụng.
419
- - 👉 *Domain Ignore:* Thao tác thêm trường đơn giản hoặc temporary database fix.
420
-
421
- ---
422
-
423
- ### Golden Rule
424
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
425
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
426
-
427
- ---
428
- ---
429
- ---
430
- ---
431
-
432
99
  ## Preconditions
433
- - [ ] Existing schema is identified (ORM model files)
434
- - [ ] Change intent is clear (add field / modify field / drop field)
435
-
436
- ```
437
- On missing precondition:
438
- EXIT: BLOCKED
439
- Message: "Cần xác định: schema hiện tại + loại thay đổi (add/modify/drop)."
440
- ```
441
-
442
- ---
443
100
 
444
- ## Scope
445
- - ✅ Define strict schema BEFORE writing repository code
446
- - ✅ Always backward-compatible migrations (never destructive in first pass)
447
- - ✅ Separate schema (models) from business logic (services)
101
+ Trước khi thay đổi bất kỳ file schema hay migration nào, AI BẮT BUỘC kiểm tra:
448
102
 
449
- ## Non-Goals
450
- - DROP columns without deprecation phase first
451
- - Write complex business logic inside repositories
452
- - Dynamic queries without schema definitions
103
+ - [ ] Xác định ORM/Tool đang dùng từ `DEV_PROFILE.md` (Prisma, Drizzle, TypeORM, Alembic, Knex, v.v.).
104
+ - [ ] Xác định Database engine (PostgreSQL, MySQL, SQLite, MongoDB).
105
+ - [ ] **Destructive check**: Thay đổi có chứa thao tác xóa/đổi tên cột (`DROP COLUMN`, `RENAME COLUMN`, thay đổi type thu hẹp dữ liệu) không?
106
+ - [ ] Nếu thay đổi Destructive:
107
+ → **EXIT: BLOCKED**
108
+ → Báo cáo user: Cảnh báo rủi ro downtime và đề xuất áp dụng **Expand & Contract Pattern** thay vì drop/rename trực tiếp.
453
109
 
454
110
  ---
455
111
 
456
- ## Priority Order
457
- | P | Task | Skip Threshold |
458
- |---|------|----------------|
459
- | P1 | Read existing schema | Never |
460
- | P2 | Design migration (backward-compat) | Never |
461
- | P3 | Write migration file | Never |
462
- | P4 | Update repository layer | Budget < 30% |
463
- | P5 | Update affected service layer | Budget < 50% |
112
+ ## Scope
464
113
 
465
- ---
114
+ ✅ Skill này làm:
115
+ - Cập nhật file định nghĩa Schema (ví dụ `schema.prisma`, `schema.ts`, model files).
116
+ - Tạo migration scripts (SQL hoặc ORM-generated) có tính lũy tiến, an toàn.
117
+ - Thiết kế chiến lược **Expand & Contract** khi đổi tên cột hoặc tách bảng (Giai đoạn 1: Thêm cột mới + dual write; Giai đoạn 2: Backfill data; Giai đoạn 3: Deprecate & remove cột cũ).
118
+ - Đảm bảo các cột mới có `DEFAULT` value hoặc `NULLABLE` để tránh khóa bảng (table lock) hoặc lỗi insert từ code cũ đang chạy.
119
+ - Cập nhật types/interfaces tương ứng trong ứng dụng.
466
120
 
467
- ## Migration Safety Rules
468
- ```yaml
469
- add_column:
470
- strategy: nullable OR has default value (never NOT NULL without default)
471
-
472
- modify_column:
473
- strategy: add new column → migrate data → drop old column (3-phase)
474
-
475
- drop_column:
476
- strategy: Phase 1 — mark deprecated (keep in schema)
477
- Phase 2 — next release — remove from queries
478
- Phase 3 — next migration — DROP COLUMN
479
-
480
- rename_table:
481
- strategy: create new table → migrate → drop old (never ALTER TABLE RENAME in prod)
482
-
483
- pii_data:
484
- strategy: Khi add column chứa PII (Personal Identifiable Information), BẮT BUỘC áp dụng cơ chế hashing/encryption tương ứng (tuân thủ R-SEC-04).
485
- ```
121
+ Skill này KHÔNG làm:
122
+ - Chạy lệnh phá hủy tự động (`prisma migrate reset`, `drop database`, `truncate table`).
123
+ - Viết câu query phân tích hiệu năng/EXPLAIN (→ `qk-db-optimizer`).
124
+ - Viết API endpoint xử request/response ( `qk-api-lifecycle`).
486
125
 
487
126
  ---
488
127
 
489
- ## Workflow
490
-
491
- ### Phase 1 — Schema Read
492
- 1. `grep_search` for existing model/entity file
493
- 2. Read current schema (targeted, ≤ 100 lines)
494
- 3. Identify impact of proposed change
128
+ ## Execution Steps
495
129
 
496
- ### Phase 2Migration Design
497
- 1. Choose safety strategy (see Migration Safety Rules)
498
- 2. Write migration file (up + down)
499
- 3. Verify down() is always defined (rollback support)
500
-
501
- ### Phase 3 — Repository Update
502
- 1. Update repository methods to use new schema
503
- 2. Verify no raw queries reference old column names
504
-
505
- **Decision:**
130
+ ### Step 1Phân tích Schema Diff & Đánh giá rủi ro
506
131
  ```
507
- IF migration is backward-compat AND down() defined EXIT: SUCCESS
508
- ELSE IF destructive migration attempted → EXIT: BLOCKED — apply 3-phase strategy
132
+ Inputs: Schema hiện tại, Yêu cầu thay đổi từ user
133
+ Actions:
134
+ - So sánh schema cũ và mới.
135
+ - Phân loại:
136
+ - Safe: Thêm bảng mới, thêm nullable column, thêm column có default an toàn.
137
+ - Caution: Thêm index trên bảng lớn (cần CONCURRENTLY nếu Postgres).
138
+ - Dangerous: Xóa cột, đổi tên cột, đổi kiểu dữ liệu (Int -> String hoặc ngược lại).
139
+ Exit: BLOCKED nếu gặp Dangerous change mà chưa có kế hoạch Expand & Contract
509
140
  ```
510
141
 
511
- ---
512
-
513
- ## Evidence Format
142
+ ### Step 2 — Áp dụng Expand & Contract (nếu có Breaking Change)
514
143
  ```
515
- [SEVERITY] migration: [filename]
516
- Issue: [NOT NULL without default | missing down() | direct DROP]
517
- Confidence: HIGH
518
- Fix: [specific safer strategy]
144
+ Quy trình chuẩn:
145
+ 1. Expand: Thêm cột mới song song (nullable). Code ứng dụng ghi đồng thời cả 2 cột.
146
+ 2. Migrate Data: Chạy batch script chuyển dữ liệu từ cột cũ sang cột mới.
147
+ 3. Contract: Chuyển code đọc từ cột mới. Sau 1 release ổn định mới xóa cột cũ.
519
148
  ```
520
149
 
521
- ---
522
-
523
- ## Exit Codes
524
- | Code | Meaning | When |
525
- |------|---------|------|
526
- | SUCCESS | Schema, migration, and repository complete | Validated execution |
527
- | PARTIAL | Migration generated but untested | Missing DB connection |
528
- | BLOCKED | Fields or relationships ambiguous | Missing entity data |
529
- | FAILED | Migration involves destructive DROP without backup | Architecture violation |
530
-
531
- ---
150
+ ### Step 3 — Sinh Migration Script & Cập nhật ORM
151
+ ```
152
+ Actions:
153
+ - Sửa file schema chính (`schema.prisma`, Drizzle `schema.ts`, SQLAlchemy model).
154
+ - Tạo migration file có timestamp rõ ràng (VD: `20260914_add_phone_to_users.sql`).
155
+ - Đi kèm cả script Rollback (Down migration) nếu framework hỗ trợ.
156
+ - Chạy code generation cho types (VD: `npx prisma generate`).
157
+ ```
532
158
 
533
- ## Confidence Model
534
- | Level | Condition | Action |
535
- |-------|-----------|--------|
536
- | HIGH | Entity schema completely defined by user | Implement immediately |
537
- | MEDIUM | Schema inferred from JSON or forms | Ask for review before generating migration |
538
- | LOW | "Add database" request with no schema | EXIT: BLOCKED |
159
+ ### Step 4 — Verification
160
+ ```
161
+ Actions:
162
+ - Kiểm tra pháp SQL của migration file.
163
+ - Kiểm tra tính tương thích ngược: Code vẫn insert/query được không crash.
164
+ - Kiểm tra Type definitions trong app bị type error không (chạy tsc/type-check).
165
+ ```
539
166
 
540
167
  ---
541
168
 
542
- ## Severity
543
- | Level | Definition | Example |
544
- |-------|-----------|---------|
545
- | CRITICAL | Data loss risk in migration | Direct `DROP TABLE` without data copy |
546
- | HIGH | Missing index on foreign key | Performance degrade on JOIN |
547
- | MEDIUM | N+1 query vulnerability in repository | Fetching related entities in a loop |
548
- | LOW | Naming convention violation | `userId` instead of `user_id` in DB |
169
+ ## Prompt Template
549
170
 
550
- ---
551
-
552
- ## Retry Policy
553
171
  ```
554
- Migration generation fails
555
- └─ Syntax error in SQL/ORM
556
- ├─ Fix syntax based on engine (Postgres/MySQL)
557
- └─ Do NOT retry more than 1 time — risk of bad migration state
172
+ DB Engine: [PostgreSQL / MySQL / SQLite / MongoDB]
173
+ ORM/Tool: [Prisma / Drizzle / TypeORM / Alembic / Knex]
174
+ Thay đổi: [Thêm bảng mới / Thêm trường / Sửa quan hệ / Đổi kiểu dữ liệu]
175
+ Mục đích: [Mô tả nghiệp vụ cần lưu trữ]
176
+ Dữ liệu live: [Có dữ liệu production đang chạy không?]
558
177
  ```
559
178
 
560
- ---
179
+ ### Ví dụ theo Stack:
561
180
 
562
- ## Escalation Rules
181
+ **Prisma (PostgreSQL)**
563
182
  ```
564
- BLOCKED: Entity schema undefined
565
- Missing:
566
- - List of fields (types, constraints)
567
- - Relationships (1:1, 1:N, M:N)
568
- Questions:
569
- 1. Bảng này cần lưu những trường dữ liệu nào?
570
- 2. Bảng này có liên kết với bảng nào khác không? (ví dụ User)
571
- Recommended Assumptions:
572
- - Add standard created_at, updated_at timestamps
573
- - UUID primary keys
183
+ DB Engine: PostgreSQL
184
+ ORM: Prisma
185
+ Thay đổi: Thêm trường `phoneNumber` vào model `User`, không bắt buộc nhưng phải unique nếu có.
186
+ Dữ liệu live: (hơn 100k users)
574
187
  ```
188
+ → AI cập nhật: `phoneNumber String? @unique` trong `schema.prisma`, sinh migration SQL với `CREATE UNIQUE INDEX CONCURRENTLY` (nếu cần), chạy `prisma generate`.
575
189
 
576
- ---
577
-
578
- ## Handoff Contract
579
- ### Consumes
580
- ```json
581
- {
582
- "from": "user",
583
- "required_fields": ["entity_name", "fields"],
584
- "optional_fields": ["relationships", "db_engine"]
585
- }
190
+ **Drizzle ORM (MySQL)**
586
191
  ```
587
- ### Produces
588
- ```json
589
- {
590
- "to": "user or db-optimizer",
591
- "output_fields": ["schema_file", "migration_file", "repository_file", "exit_code"]
592
- }
192
+ DB Engine: MySQL
193
+ ORM: Drizzle
194
+ Thay đổi: Tạo bảng `AuditLog` lưu lịch sử hành động người dùng (id, userId, action, metadata JSON, createdAt).
593
195
  ```
594
-
595
- ---
196
+ → AI tạo: `auditLogs` table definition trong `src/db/schema.ts`, sinh migration file với Drizzle Kit, export type `AuditLog` và `NewAuditLog`.
596
197