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-security-audit
|
|
4
|
-
version: 9.
|
|
4
|
+
version: 9.2.0
|
|
5
5
|
status: experimental
|
|
6
|
-
description: "
|
|
6
|
+
description: "Audit bảo mật ứng dụng theo OWASP: phát hiện lỗ hổng, secret leak, dependency risk, permission model — output là report + remediation plan, KHÔNG tự sửa code. Dùng skill này khi user nhắc đến: security audit, kiểm tra bảo mật, scan lỗ hổng, owasp, tìm secret leak, dependency vulnerability, npm audit, pip audit, lộ api key — kể cả khi chỉ nói 'code này có an toàn không'."
|
|
7
7
|
platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
|
|
8
8
|
|
|
9
9
|
# ── V9: Classification ─────────────────────────────────────
|
|
@@ -19,15 +19,21 @@ complexity:
|
|
|
19
19
|
level: high
|
|
20
20
|
criteria:
|
|
21
21
|
files_affected: "1-10"
|
|
22
|
-
has_behavior_change:
|
|
23
|
-
has_external_dependency:
|
|
22
|
+
has_behavior_change: false
|
|
23
|
+
has_external_dependency: false
|
|
24
24
|
has_breaking_change: false
|
|
25
25
|
|
|
26
|
-
triggers:
|
|
27
|
-
- "
|
|
28
|
-
- "
|
|
29
|
-
- "
|
|
30
|
-
- "
|
|
26
|
+
triggers:
|
|
27
|
+
- "security audit"
|
|
28
|
+
- "kiểm tra bảo mật"
|
|
29
|
+
- "scan lỗ hổng"
|
|
30
|
+
- "owasp"
|
|
31
|
+
- "tìm secret leak"
|
|
32
|
+
- "dependency vulnerability"
|
|
33
|
+
- "npm audit"
|
|
34
|
+
- "pip audit"
|
|
35
|
+
- "lộ api key"
|
|
36
|
+
|
|
31
37
|
|
|
32
38
|
# ── V8: References ─────────────────────────────────────────
|
|
33
39
|
workflow: security-audit
|
|
@@ -66,8 +72,9 @@ decision_boundary:
|
|
|
66
72
|
- penetration testing
|
|
67
73
|
- compliance certification
|
|
68
74
|
conflicts_with: []
|
|
69
|
-
delegates_to:
|
|
70
|
-
|
|
75
|
+
delegates_to: []
|
|
76
|
+
# Note: validation/verify logic nằm trong step 'verify' của workflow security-audit.yml
|
|
77
|
+
# qk-validation-gate đã được downgrade thành workflow step (v9.2.1) — không còn là skill độc lập
|
|
71
78
|
|
|
72
79
|
# ── V8: Verification ───────────────────────────────────────
|
|
73
80
|
verification:
|
|
@@ -107,9 +114,9 @@ learnings: []
|
|
|
107
114
|
execution_mode: deterministic
|
|
108
115
|
cost: medium
|
|
109
116
|
latency: slow
|
|
110
|
-
risk: low
|
|
117
|
+
risk: medium # scan đọc sensitive files (env, config, secrets) — không phải low
|
|
111
118
|
side_effects: read_only
|
|
112
|
-
produces: [report,
|
|
119
|
+
produces: [report, remediation_plan] # read_only = không tự patch code, chỉ báo cáo + đề xuất fix
|
|
113
120
|
consumes: [user-description]
|
|
114
121
|
|
|
115
122
|
token_budget:
|
|
@@ -118,485 +125,156 @@ token_budget:
|
|
|
118
125
|
max_shell_commands: 2
|
|
119
126
|
stop_early: true
|
|
120
127
|
|
|
121
|
-
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
128
|
+
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
122
129
|
---
|
|
123
130
|
|
|
124
131
|
# qk-security-audit — Security Auditor
|
|
125
132
|
|
|
126
133
|
> **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
|
|
127
134
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
|
|
131
|
-
- 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:
|
|
132
|
-
- **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.
|
|
133
|
-
- **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.
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
### Pre-flight Retrieve (Trước khi thực thi)
|
|
138
|
-
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
139
|
-
bắt buộc tra cứu:
|
|
140
|
-
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
141
|
-
|
|
142
|
-
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
143
|
-
- Architecture
|
|
144
|
-
- Hard Bug
|
|
145
|
-
- Convention
|
|
146
|
-
- Pattern
|
|
147
|
-
- Tech Debt Pattern
|
|
148
|
-
- 👉 *Domain Focus:* Hard Bug / Architecture (vd: lỗ hổng OWASP, lộ rò rỉ secret, quy chuẩn Zero-Trust R-SEC-04).
|
|
149
|
-
|
|
150
|
-
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
|
|
151
|
-
Không được xem Memory là Source of Truth.
|
|
152
|
-
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.
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
157
|
-
- 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:
|
|
158
|
-
- Hard Bug có khả năng tái diễn.
|
|
159
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
160
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
161
|
-
- Quyết định Architecture quan trọng.
|
|
162
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
163
|
-
- 👉 *Domain Harvest:* Lỗ hổng bảo mật mới phát hiện (Hard Bug) hoặc chính sách an toàn mới.
|
|
164
|
-
|
|
165
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
166
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
167
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
172
|
-
Sau khi hoàn thành task:
|
|
173
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
174
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
175
|
-
- Đề xuất người dùng xem xét.
|
|
176
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
177
|
-
- `/learn`
|
|
178
|
-
- `qk-project-memory`
|
|
179
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
180
|
-
|
|
181
|
-
```
|
|
182
|
-
.ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
186
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
### Ignore (Không đưa vào Memory)
|
|
191
|
-
Không lưu:
|
|
192
|
-
- Trace log của một session đơn lẻ.
|
|
193
|
-
- Temporary debugging data.
|
|
194
|
-
- Output của một lần chạy test/scan.
|
|
195
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
196
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
197
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
198
|
-
- 👉 *Domain Ignore:* Cảnh báo scanner giả (false positive) đã xác thực.
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
### Golden Rule
|
|
203
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
204
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
|
|
211
|
-
- 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:
|
|
212
|
-
- **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.
|
|
213
|
-
- **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.
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
### Pre-flight Retrieve (Trước khi thực thi)
|
|
218
|
-
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
219
|
-
bắt buộc tra cứu:
|
|
220
|
-
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
221
|
-
|
|
222
|
-
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
223
|
-
- Architecture
|
|
224
|
-
- Hard Bug
|
|
225
|
-
- Convention
|
|
226
|
-
- Pattern
|
|
227
|
-
- Tech Debt Pattern
|
|
228
|
-
- 👉 *Domain Focus:* Hard Bug / Architecture (vd: lỗ hổng OWASP, lộ rò rỉ secret, quy chuẩn Zero-Trust R-SEC-04).
|
|
229
|
-
|
|
230
|
-
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
|
|
231
|
-
Không được xem Memory là Source of Truth.
|
|
232
|
-
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.
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
237
|
-
- 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:
|
|
238
|
-
- Hard Bug có khả năng tái diễn.
|
|
239
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
240
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
241
|
-
- Quyết định Architecture quan trọng.
|
|
242
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
243
|
-
- 👉 *Domain Harvest:* Lỗ hổng bảo mật mới phát hiện (Hard Bug) hoặc chính sách an toàn mới.
|
|
244
|
-
|
|
245
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
246
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
247
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
252
|
-
Sau khi hoàn thành task:
|
|
253
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
254
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
255
|
-
- Đề xuất người dùng xem xét.
|
|
256
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
257
|
-
- `/learn`
|
|
258
|
-
- `qk-project-memory`
|
|
259
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
260
|
-
|
|
261
|
-
```
|
|
262
|
-
.ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
266
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
### Ignore (Không đưa vào Memory)
|
|
271
|
-
Không lưu:
|
|
272
|
-
- Trace log của một session đơn lẻ.
|
|
273
|
-
- Temporary debugging data.
|
|
274
|
-
- Output của một lần chạy test/scan.
|
|
275
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
276
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
277
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
278
|
-
- 👉 *Domain Ignore:* Cảnh báo scanner giả (false positive) đã xác thực.
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
### Golden Rule
|
|
283
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
284
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
### Pre-flight Retrieve (Trước khi thực thi)
|
|
291
|
-
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
292
|
-
bắt buộc tra cứu:
|
|
293
|
-
- `.agents/knowledge/index.yaml` (Shared Project Knowledge)
|
|
294
|
-
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
295
|
-
|
|
296
|
-
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
297
|
-
- Architecture
|
|
298
|
-
- Hard Bug
|
|
299
|
-
- Convention
|
|
300
|
-
- Pattern
|
|
301
|
-
- Tech Debt Pattern
|
|
302
|
-
- 👉 *Domain Focus:* Hard Bug / Architecture (vd: lỗ hổng OWASP, lộ rò rỉ secret, quy chuẩn Zero-Trust R-SEC-04).
|
|
303
|
-
|
|
304
|
-
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
|
|
305
|
-
Không được xem Memory là Source of Truth.
|
|
306
|
-
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.
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
311
|
-
- 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:
|
|
312
|
-
- Hard Bug có khả năng tái diễn.
|
|
313
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
314
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
315
|
-
- Quyết định Architecture quan trọng.
|
|
316
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
317
|
-
- 👉 *Domain Harvest:* Lỗ hổng bảo mật mới phát hiện (Hard Bug) hoặc chính sách an toàn mới.
|
|
318
|
-
|
|
319
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
320
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
321
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
326
|
-
Sau khi hoàn thành task:
|
|
327
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
328
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
329
|
-
- Đề xuất người dùng xem xét.
|
|
330
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
331
|
-
- `/learn`
|
|
332
|
-
- `qk-project-memory`
|
|
333
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
334
|
-
|
|
335
|
-
```
|
|
336
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
340
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
### Ignore (Không đưa vào Memory)
|
|
345
|
-
Không lưu:
|
|
346
|
-
- Trace log của một session đơn lẻ.
|
|
347
|
-
- Temporary debugging data.
|
|
348
|
-
- Output của một lần chạy test/scan.
|
|
349
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
350
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
351
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
352
|
-
- 👉 *Domain Ignore:* Cảnh báo scanner giả (false positive) đã xác thực.
|
|
353
|
-
|
|
354
|
-
---
|
|
355
|
-
|
|
356
|
-
### Golden Rule
|
|
357
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
358
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
359
|
-
|
|
360
|
-
---
|
|
361
|
-
---
|
|
362
|
-
|
|
363
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
364
|
-
- 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:
|
|
365
|
-
- Hard Bug có khả năng tái diễn.
|
|
366
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
367
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
368
|
-
- Quyết định Architecture quan trọng.
|
|
369
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
370
|
-
- 👉 *Domain Harvest:* Lỗ hổng bảo mật mới phát hiện (Hard Bug) hoặc chính sách an toàn mới.
|
|
371
|
-
|
|
372
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
373
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
374
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
375
|
-
|
|
376
|
-
---
|
|
377
|
-
|
|
378
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
379
|
-
Sau khi hoàn thành task:
|
|
380
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
381
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
382
|
-
- Đề xuất người dùng xem xét.
|
|
383
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
384
|
-
- `/learn`
|
|
385
|
-
- `qk-project-memory`
|
|
386
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
387
|
-
|
|
388
|
-
```
|
|
389
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
393
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
394
|
-
|
|
395
|
-
---
|
|
396
|
-
|
|
397
|
-
### Ignore (Không đưa vào Memory)
|
|
398
|
-
Không lưu:
|
|
399
|
-
- Trace log của một session đơn lẻ.
|
|
400
|
-
- Temporary debugging data.
|
|
401
|
-
- Output của một lần chạy test/scan.
|
|
402
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
403
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
404
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
405
|
-
- 👉 *Domain Ignore:* Cảnh báo scanner giả (false positive) đã xác thực.
|
|
406
|
-
|
|
407
|
-
---
|
|
408
|
-
|
|
409
|
-
### Golden Rule
|
|
410
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
411
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
412
|
-
|
|
413
|
-
---
|
|
414
|
-
---
|
|
415
|
-
|
|
416
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
417
|
-
- 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:
|
|
418
|
-
- Hard Bug có khả năng tái diễn.
|
|
419
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
420
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
421
|
-
- Quyết định Architecture quan trọng.
|
|
422
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
423
|
-
- 👉 *Domain Harvest:* Lỗ hổng bảo mật mới phát hiện (Hard Bug) hoặc chính sách an toàn mới.
|
|
424
|
-
|
|
425
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
426
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
427
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
428
|
-
|
|
429
|
-
---
|
|
430
|
-
|
|
431
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
432
|
-
Sau khi hoàn thành task:
|
|
433
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
434
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
435
|
-
- Đề xuất người dùng xem xét.
|
|
436
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
437
|
-
- `/learn`
|
|
438
|
-
- `qk-project-memory`
|
|
439
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
440
|
-
|
|
441
|
-
```
|
|
442
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
446
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
447
|
-
|
|
448
|
-
---
|
|
449
|
-
|
|
450
|
-
### Ignore (Không đưa vào Memory)
|
|
451
|
-
Không lưu:
|
|
452
|
-
- Trace log của một session đơn lẻ.
|
|
453
|
-
- Temporary debugging data.
|
|
454
|
-
- Output của một lần chạy test/scan.
|
|
455
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
456
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
457
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
458
|
-
- 👉 *Domain Ignore:* Cảnh báo scanner giả (false positive) đã xác thực.
|
|
459
|
-
|
|
460
|
-
---
|
|
461
|
-
|
|
462
|
-
### Golden Rule
|
|
463
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
464
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
465
|
-
|
|
466
|
-
---
|
|
467
|
-
---
|
|
468
|
-
---
|
|
469
|
-
---
|
|
470
|
-
|
|
135
|
+
---
|
|
136
|
+
|
|
471
137
|
## Preconditions
|
|
472
|
-
|
|
473
|
-
- [ ]
|
|
138
|
+
|
|
139
|
+
- [ ] Biết scope cần audit: toàn bộ codebase / 1 module / 1 PR / 1 dependency
|
|
140
|
+
→ Nếu chưa biết: hỏi user trước khi bắt đầu scan
|
|
141
|
+
- [ ] Không được ghi vào bất kỳ file nào trong quá trình audit (`side_effects: read_only`)
|
|
142
|
+
- [ ] Nếu phát hiện secret đang live (API key, password): **BLOCKED ngay** — báo user xử lý trước
|
|
143
|
+
- [ ] Output là report + remediation_plan — KHÔNG tự sửa code, KHÔNG tự revoke secret
|
|
144
|
+
|
|
145
|
+
---
|
|
474
146
|
|
|
475
147
|
## Scope
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
-
|
|
479
|
-
-
|
|
480
|
-
-
|
|
481
|
-
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
## Workflow
|
|
498
|
-
|
|
499
|
-
### Phase 1 — Context Loading
|
|
500
|
-
**Steps:**
|
|
501
|
-
1. Read existing configuration and requirements related to Security Vulnerability Detection.
|
|
502
|
-
2. Check for missing preconditions.
|
|
503
|
-
|
|
504
|
-
**Decision:**
|
|
148
|
+
|
|
149
|
+
✅ Skill này làm:
|
|
150
|
+
- Scan OWASP Top 10: injection, broken auth, sensitive data exposure, XSS, IDOR...
|
|
151
|
+
- Detect secret/credential leak trong code, config, commit history pattern
|
|
152
|
+
- Audit dependency vulnerabilities (npm audit / pip audit / cargo audit equivalent)
|
|
153
|
+
- Review permission model: RBAC gaps, over-privileged roles, missing auth checks
|
|
154
|
+
- Phát hiện prompt injection risk (nếu project có AI/LLM component)
|
|
155
|
+
- Output: Severity-ranked finding list + remediation plan cho từng finding
|
|
156
|
+
|
|
157
|
+
❌ Skill này KHÔNG làm:
|
|
158
|
+
- Tự sửa code để fix lỗ hổng (→ dùng `qk-bug-resolution` sau khi có report)
|
|
159
|
+
- Implement RBAC/ABAC (→ `qk-access-policy`)
|
|
160
|
+
- Penetration testing thực sự (cần human expert)
|
|
161
|
+
- Compliance certification (SOC2, ISO27001...)
|
|
162
|
+
- Revoke credentials hay rotate secrets (→ user tự làm)
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Execution Steps
|
|
167
|
+
|
|
168
|
+
### Step 1 — Xác định scope và threat model
|
|
505
169
|
```
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
170
|
+
Inputs: user_description, DEV_PROFILE.md (stack info)
|
|
171
|
+
Actions:
|
|
172
|
+
- Xác định: audit toàn bộ / module cụ thể / diff của PR
|
|
173
|
+
- Xác định attack surface dựa trên stack:
|
|
174
|
+
Web app → injection, XSS, CSRF, auth bypass
|
|
175
|
+
API → broken auth, IDOR, rate limiting, input validation
|
|
176
|
+
Data → SQL injection, data exposure, access control
|
|
177
|
+
AI/LLM → prompt injection, data poisoning, model extraction
|
|
178
|
+
DevOps → secrets in CI, misconfigured IAM, container escape
|
|
179
|
+
- List top 5 risk areas cần ưu tiên
|
|
180
|
+
Outputs: audit_scope, threat_model
|
|
181
|
+
Exit: BLOCKED nếu scope quá rộng mà không có priority
|
|
510
182
|
```
|
|
511
183
|
|
|
512
|
-
###
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
184
|
+
### Step 2 — Scan theo OWASP Top 10
|
|
185
|
+
```
|
|
186
|
+
Actions (đọc có mục tiêu, không dump toàn bộ codebase):
|
|
187
|
+
A01 Broken Access Control:
|
|
188
|
+
- Grep auth middleware: routes có bị skip không
|
|
189
|
+
- Check role check consistency (if admin check ở route nhưng thiếu ở service)
|
|
190
|
+
A02 Cryptographic Failures:
|
|
191
|
+
- Tìm hardcoded secrets: grep pattern (password=, api_key=, secret=, token=)
|
|
192
|
+
- Check password hashing: bcrypt/argon2 hay MD5/SHA1?
|
|
193
|
+
- Check TLS config nếu có
|
|
194
|
+
A03 Injection:
|
|
195
|
+
- SQL: tìm string concatenation trong queries
|
|
196
|
+
- Command injection: exec(), eval(), subprocess với user input
|
|
197
|
+
- Template injection (SSTI)
|
|
198
|
+
A05 Security Misconfiguration:
|
|
199
|
+
- .env.example so sánh với .env (nếu đọc được)
|
|
200
|
+
- CORS config: wildcard origin?
|
|
201
|
+
- Debug mode enabled trong production config?
|
|
202
|
+
A06 Vulnerable Components:
|
|
203
|
+
- Đọc package.json / requirements.txt / go.mod
|
|
204
|
+
- Flag packages có known CVE hoặc deprecated
|
|
205
|
+
A09 Logging Failures:
|
|
206
|
+
- Sensitive data trong logs (password, token, PII)?
|
|
207
|
+
- Missing security event logging (failed login, permission denied)?
|
|
208
|
+
Token budget: max 10 files, 150 lines/file — ưu tiên auth/middleware/config files
|
|
209
|
+
```
|
|
516
210
|
|
|
517
|
-
|
|
211
|
+
### Step 3 — Detect Secret Leak
|
|
518
212
|
```
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
213
|
+
Actions:
|
|
214
|
+
- Grep patterns: (api[_-]?key|secret|password|token|credential)\s*[:=]\s*['"][^'"]{8,}
|
|
215
|
+
- Check: .env files committed? (git ls-files | grep .env)
|
|
216
|
+
- Check config files: database URL có credential?
|
|
217
|
+
- Check source code comments: TODO fix this hardcoded password
|
|
218
|
+
- Check test files: mock credentials có bị copy từ production?
|
|
219
|
+
Exit: BLOCKED ngay nếu tìm thấy live credential — báo user xử lý trước khi tiếp tục
|
|
523
220
|
```
|
|
524
221
|
|
|
525
|
-
###
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
222
|
+
### Step 4 — Output Report
|
|
223
|
+
```
|
|
224
|
+
Format bắt buộc:
|
|
225
|
+
CRITICAL (fix ngay, không deploy):
|
|
226
|
+
[C1] [Tên lỗi] — [File:line] — [Mô tả] — [Remediation]
|
|
529
227
|
|
|
530
|
-
|
|
228
|
+
HIGH (fix trong sprint này):
|
|
229
|
+
[H1] [Tên lỗi] — [File:line] — [Mô tả] — [Remediation]
|
|
531
230
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
| HIGH | All preconditions met, context fully understood | Proceed directly |
|
|
535
|
-
| MEDIUM | Some context missing but safe defaults exist | Proceed and note assumptions |
|
|
536
|
-
| LOW | Core requirements missing | EXIT: BLOCKED |
|
|
231
|
+
MEDIUM (schedule fix):
|
|
232
|
+
[M1] ...
|
|
537
233
|
|
|
538
|
-
|
|
234
|
+
LOW / INFORMATIONAL:
|
|
235
|
+
[L1] ...
|
|
539
236
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
237
|
+
SUMMARY:
|
|
238
|
+
Critical: N | High: N | Medium: N | Low: N
|
|
239
|
+
Most urgent: [top 3 cần fix ngay]
|
|
240
|
+
Recommended next skill: qk-bug-resolution (để fix từng finding)
|
|
241
|
+
qk-access-policy (nếu có RBAC gap)
|
|
242
|
+
```
|
|
546
243
|
|
|
547
|
-
|
|
244
|
+
---
|
|
548
245
|
|
|
549
|
-
|
|
550
|
-
[SEVERITY] Context/File
|
|
551
|
-
Issue: [what was found]
|
|
552
|
-
Confidence: HIGH
|
|
553
|
-
Recommendation: [actionable advice]
|
|
554
|
-
```
|
|
246
|
+
## Prompt Template
|
|
555
247
|
|
|
556
|
-
## Retry Policy
|
|
557
248
|
```
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
249
|
+
Audit scope: [toàn bộ codebase / module X / PR #N / file Y]
|
|
250
|
+
Stack: [đọc từ DEV_PROFILE.md — hoặc ghi rõ nếu chưa có]
|
|
251
|
+
Ưu tiên: [injection / secrets / auth / dependencies / tất cả]
|
|
252
|
+
Context: [sắp deploy production / sau khi thêm auth feature / định kỳ / ...]
|
|
562
253
|
```
|
|
563
254
|
|
|
564
|
-
|
|
255
|
+
### Theo Role:
|
|
565
256
|
|
|
257
|
+
**role: be / fullstack**
|
|
566
258
|
```
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
Questions:
|
|
571
|
-
1. Bạn có thể cung cấp thêm thông tin về yêu cầu này không?
|
|
572
|
-
2. Mục tiêu chính của bạn là gì?
|
|
573
|
-
Recommended Assumptions: none
|
|
259
|
+
Audit scope: src/api/ + src/middleware/
|
|
260
|
+
Ưu tiên: auth bypass, SQL injection, secret leak
|
|
261
|
+
Context: Sắp deploy lên production lần đầu
|
|
574
262
|
```
|
|
263
|
+
→ AI focus: auth middleware completeness, parameterized queries, JWT validation, CORS.
|
|
575
264
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
### Consumes
|
|
579
|
-
```json
|
|
580
|
-
{
|
|
581
|
-
"from": "user or qk-orchestrator",
|
|
582
|
-
"required_fields": ["context"],
|
|
583
|
-
"optional_fields": ["existing_config"]
|
|
584
|
-
}
|
|
265
|
+
**role: devops**
|
|
585
266
|
```
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
{
|
|
590
|
-
"to": "user or downstream skill",
|
|
591
|
-
"output_fields": ["strategy_report", "exit_code"]
|
|
592
|
-
}
|
|
267
|
+
Audit scope: .github/workflows/ + Dockerfile + terraform/
|
|
268
|
+
Ưu tiên: secrets in CI, IAM over-privilege, container security
|
|
269
|
+
Context: Sau khi onboard engineer mới vào team
|
|
593
270
|
```
|
|
271
|
+
→ AI focus: secrets in env vars vs secrets manager, IAM least privilege, base image CVEs.
|
|
594
272
|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
273
|
+
**role: ai-engineer**
|
|
274
|
+
```
|
|
275
|
+
Audit scope: prompts/ + agents/ + retrieval/
|
|
276
|
+
Ưu tiên: prompt injection, data poisoning, PII in context
|
|
277
|
+
Context: RAG system sắp ra production
|
|
278
|
+
```
|
|
279
|
+
→ AI focus: input sanitization trước khi đưa vào prompt, output filtering,
|
|
280
|
+
PII không được persist trong vector DB, guardrails có đủ không.
|