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.
- package/.agents/AGENTS.md +139 -42
- package/.agents/DEV_PROFILE.md +95 -0
- package/.agents/registry/capability-graph.yml +171 -334
- package/.agents/registry/graph.json +37 -19
- package/.agents/registry/index.yaml +59 -13
- package/.agents/registry/skills-index.yml +204 -447
- package/.agents/rules/coding.md +23 -0
- package/.agents/rules/global.md +44 -30
- package/.agents/skills/_template/SKILL.md +2 -377
- package/.agents/skills/qk-access-policy/SKILL.md +98 -473
- package/.agents/skills/qk-agent-observability/SKILL.md +3 -439
- package/.agents/skills/qk-ai-builder/SKILL.md +132 -565
- package/.agents/skills/qk-api-consumer/SKILL.md +256 -0
- package/.agents/skills/qk-api-consumer/capability.yaml +21 -0
- package/.agents/skills/qk-api-consumer/evals/scorecard.yaml +29 -0
- package/.agents/skills/qk-api-lifecycle/SKILL.md +133 -456
- package/.agents/skills/qk-bug-resolution/SKILL.md +128 -561
- package/.agents/skills/qk-code-review/SKILL.md +142 -420
- package/.agents/skills/qk-context-loader/SKILL.md +99 -471
- package/.agents/skills/qk-data-engineer/SKILL.md +119 -340
- package/.agents/skills/qk-data-lifecycle/SKILL.md +89 -488
- package/.agents/skills/qk-db-optimizer/SKILL.md +102 -488
- package/.agents/skills/qk-design-system-engineering/SKILL.md +76 -461
- package/.agents/skills/qk-devops-platform/SKILL.md +77 -463
- package/.agents/skills/qk-docs/SKILL.md +88 -494
- package/.agents/skills/qk-engineering-standard/SKILL.md +4 -588
- package/.agents/skills/qk-fe-api-integration/SKILL.md +343 -343
- package/.agents/skills/qk-fe-api-integration/evals/scorecard.yaml +29 -29
- package/.agents/skills/qk-feature-delivery/SKILL.md +137 -445
- package/.agents/skills/qk-feature-delivery/evals/scorecard.yaml +1 -1
- package/.agents/skills/qk-frontend-architecture/SKILL.md +5 -479
- package/.agents/skills/qk-help/evals/scorecard.yaml +13 -13
- package/.agents/skills/qk-orchestrator/SKILL.md +63 -502
- package/.agents/skills/qk-orchestrator/references/routing-table.md +10 -14
- package/.agents/skills/qk-product-specification/SKILL.md +70 -479
- package/.agents/skills/qk-production-release/SKILL.md +80 -537
- package/.agents/skills/qk-project-audit/SKILL.md +174 -0
- package/.agents/skills/qk-project-bootstrap/SKILL.md +243 -471
- package/.agents/skills/qk-project-health/SKILL.md +97 -496
- package/.agents/skills/qk-project-memory/SKILL.md +76 -21
- package/.agents/skills/qk-refactor/SKILL.md +167 -384
- package/.agents/skills/qk-security-audit/SKILL.md +141 -463
- package/.agents/skills/qk-security-audit/capability.yaml +1 -2
- package/.agents/skills/qk-system-evolution/SKILL.md +343 -343
- package/.agents/skills/qk-system-evolution/evals/scorecard.yaml +26 -26
- package/.agents/skills/qk-test-engineering/SKILL.md +119 -509
- package/.agents/skills/qk-ui-audit/SKILL.md +73 -537
- package/.agents/skills/qk-ui-builder/SKILL.md +521 -482
- package/.agents/skills/qk-ui-system-builder/SKILL.md +68 -514
- package/.agents/skills/qk-upgrade/SKILL.md +301 -0
- package/.agents/skills/qk-upgrade/capability.yaml +24 -0
- package/.agents/skills/qk-upgrade/evals/scorecard.yaml +26 -0
- package/.agents/skills/qk-validation-gate/SKILL.md +4 -603
- package/.agents/skills/qk-web-quality-gate/SKILL.md +85 -463
- package/.agents/workflows/bug-resolution.yml +6 -6
- package/.agents/workflows/context-discovery.yml +94 -0
- package/.agents/workflows/feature-delivery.yml +8 -4
- package/.agents/workflows/refactor.yml +6 -3
- package/.agents/workflows/shared/quality-gate.yml +94 -0
- package/.agents/workflows/skin-governance.yml +115 -0
- package/README.md +152 -67
- package/package.json +2 -2
- package/tooling/build-registry.js +30 -8
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: qk-refactor
|
|
3
|
-
version: 9.
|
|
3
|
+
version: 9.2.0
|
|
4
4
|
status: stable
|
|
5
|
-
description: "Tái cấu trúc
|
|
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
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
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-
|
|
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
|
|
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
|
-
|
|
434
|
-
|
|
435
|
-
|
|
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 rõ 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
|
-
|
|
439
|
-
|
|
440
|
-
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
-
|
|
444
|
-
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
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.
|