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,9 +1,9 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
# ── Identity ───────────────────────────────────────────────
|
|
3
3
|
name: qk-bug-resolution
|
|
4
|
-
version: 9.
|
|
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:
|
|
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 mà 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
|
-
- "
|
|
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-
|
|
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
|
-
|
|
444
|
-
|
|
445
|
-
|
|
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 và đọ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
|
-
|
|
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
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
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
|
-
|
|
140
|
+
### Step 2 — Hypothesize & Evidence Gathering
|
|
505
141
|
```
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
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 có 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
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
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ử lý triệt để các edge cases liên đới.
|
|
155
|
+
- Giữ nguyên coding style và quy ước hiện hữu của dự án.
|
|
156
|
+
Output: Targeted code fix
|
|
542
157
|
```
|
|
543
158
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
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 và 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 và không phát sinh side effects.
|
|
167
|
+
```
|
|
558
168
|
|
|
559
169
|
---
|
|
560
170
|
|
|
561
|
-
##
|
|
171
|
+
## Prompt Template
|
|
562
172
|
|
|
563
|
-
|
|
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
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
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
|
-
|
|
185
|
+
### Theo Role — AI điều tra theo chiều sâu khác nhau:
|
|
583
186
|
|
|
187
|
+
**role: fe**
|
|
584
188
|
```
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
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
|
-
**
|
|
199
|
+
**role: be**
|
|
593
200
|
```
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
201
|
+
Lỗi: PrismaClientKnownRequestError: Unique constraint failed on field `email`
|
|
202
|
+
at POST /api/auth/register — status 500 thay vì 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
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
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
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
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
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
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
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
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.
|