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-api-lifecycle
|
|
4
|
-
version: 9.
|
|
4
|
+
version: 9.2.0
|
|
5
5
|
status: stable
|
|
6
|
-
description: "Thiết
|
|
6
|
+
description: "Thiết kế và implement API endpoint mới với Zero-Trust — contract trước, code sau. Dùng skill này khi user nhắc đến: viết api, tạo endpoint, thiết kế api, build api, rest, graphql, trpc, route handler, controller, request/response schema — kể cả khi chỉ hỏi \"API này nên nhận input gì, trả output gì\"."
|
|
7
7
|
platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
|
|
8
8
|
|
|
9
9
|
# ── V9: Classification ─────────────────────────────────────
|
|
@@ -21,11 +21,18 @@ complexity:
|
|
|
21
21
|
has_external_dependency: true
|
|
22
22
|
has_breaking_change: false
|
|
23
23
|
|
|
24
|
-
triggers:
|
|
25
|
-
- "viết api"
|
|
26
|
-
- "tạo endpoint"
|
|
27
|
-
- "
|
|
28
|
-
- "
|
|
24
|
+
triggers:
|
|
25
|
+
- "viết api"
|
|
26
|
+
- "tạo endpoint"
|
|
27
|
+
- "thiết kế api"
|
|
28
|
+
- "build api"
|
|
29
|
+
- "rest"
|
|
30
|
+
- "graphql"
|
|
31
|
+
- "trpc"
|
|
32
|
+
- "route handler"
|
|
33
|
+
- "controller"
|
|
34
|
+
- "request/response schema"
|
|
35
|
+
|
|
29
36
|
|
|
30
37
|
# ── V8: References ─────────────────────────────────────────
|
|
31
38
|
workflow: feature-delivery
|
|
@@ -77,498 +84,168 @@ token_budget:
|
|
|
77
84
|
max_shell_commands: 1
|
|
78
85
|
stop_early: true
|
|
79
86
|
|
|
80
|
-
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
87
|
+
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
81
88
|
---
|
|
82
89
|
|
|
83
90
|
# qk-api-lifecycle — API Design & Implementation
|
|
84
91
|
|
|
85
92
|
> **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
|
|
86
93
|
|
|
94
|
+
Chịu trách nhiệm thiết kế và triển khai API endpoints mới hoặc nâng cấp endpoint hiện hữu theo triết lý **Zero-Trust: Contract First (Schema & Validation) → Route/Controller → Service/Business Logic → Error Handling & Documentation**.
|
|
95
|
+
|
|
87
96
|
---
|
|
88
97
|
|
|
89
|
-
## Memory Workflow
|
|
90
|
-
|
|
91
|
-
### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
|
|
92
|
-
- Trước khi tra cứu hoặc lưu trữ tri thức, BẮT BUỘC kiểm tra sự tồn tại của thư mục `.ai-local/` tại gốc dự án:
|
|
93
|
-
- **Tự động tạo mới:** Nếu `.ai-local/` chưa tồn tại, AI phải tự động tạo cấu trúc thư mục `.ai-local/knowledge/` (và file `index.yaml` nếu cần thiết) cùng `.ai-local/candidates/`. Tuyệt đối không ngưng chạy hay hỏi ý kiến người dùng về thao tác khởi tạo tiêu chuẩn này.
|
|
94
|
-
- **Bảo mật Gitignore:** BẮT BUỘC kiểm tra file `.gitignore` của dự án, nếu chưa có dòng `.ai-local/` thì phải tự động thêm vào để tuyệt đối bảo mật tri thức cá nhân và tránh lộ lọt lên Git.
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
### Pre-flight Retrieve (Trước khi thực thi)
|
|
99
|
-
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
100
|
-
bắt buộc tra cứu:
|
|
101
|
-
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
102
|
-
|
|
103
|
-
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
104
|
-
- Architecture
|
|
105
|
-
- Hard Bug
|
|
106
|
-
- Convention
|
|
107
|
-
- Pattern
|
|
108
|
-
- Tech Debt Pattern
|
|
109
|
-
- 👉 *Domain Focus:* Convention/Pattern (vd: cấu trúc wrapper { status, data, error }, pagination format).
|
|
110
|
-
|
|
111
|
-
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
|
|
112
|
-
Không được xem Memory là Source of Truth.
|
|
113
|
-
Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
118
|
-
- Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
|
|
119
|
-
- Hard Bug có khả năng tái diễn.
|
|
120
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
121
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
122
|
-
- Quyết định Architecture quan trọng.
|
|
123
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
124
|
-
- 👉 *Domain Harvest:* Pattern hoặc Convention mới của dự án (vd: chuẩn xử lý lỗi API mới, rate limiting).
|
|
125
|
-
|
|
126
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
127
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
128
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
133
|
-
Sau khi hoàn thành task:
|
|
134
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
135
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
136
|
-
- Đề xuất người dùng xem xét.
|
|
137
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
138
|
-
- `/learn`
|
|
139
|
-
- `qk-project-memory`
|
|
140
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
.ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
147
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
148
|
-
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
### Ignore (Không đưa vào Memory)
|
|
152
|
-
Không lưu:
|
|
153
|
-
- Trace log của một session đơn lẻ.
|
|
154
|
-
- Temporary debugging data.
|
|
155
|
-
- Output của một lần chạy test/scan.
|
|
156
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
157
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
158
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
159
|
-
- 👉 *Domain Ignore:* Thao tác thêm 1 CRUD endpoint thông thường theo Hợp đồng sẵn có.
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
### Golden Rule
|
|
164
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
165
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
|
|
172
|
-
- Trước khi tra cứu hoặc lưu trữ tri thức, BẮT BUỘC kiểm tra sự tồn tại của thư mục `.ai-local/` tại gốc dự án:
|
|
173
|
-
- **Tự động tạo mới:** Nếu `.ai-local/` chưa tồn tại, AI phải tự động tạo cấu trúc thư mục `.ai-local/knowledge/` (và file `index.yaml` nếu cần thiết) cùng `.ai-local/candidates/`. Tuyệt đối không ngưng chạy hay hỏi ý kiến người dùng về thao tác khởi tạo tiêu chuẩn này.
|
|
174
|
-
- **Bảo mật Gitignore:** BẮT BUỘC kiểm tra file `.gitignore` của dự án, nếu chưa có dòng `.ai-local/` thì phải tự động thêm vào để tuyệt đối bảo mật tri thức cá nhân và tránh lộ lọt lên Git.
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
### Pre-flight Retrieve (Trước khi thực thi)
|
|
179
|
-
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
180
|
-
bắt buộc tra cứu:
|
|
181
|
-
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
182
|
-
|
|
183
|
-
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
184
|
-
- Architecture
|
|
185
|
-
- Hard Bug
|
|
186
|
-
- Convention
|
|
187
|
-
- Pattern
|
|
188
|
-
- Tech Debt Pattern
|
|
189
|
-
- 👉 *Domain Focus:* Convention/Pattern (vd: cấu trúc wrapper { status, data, error }, pagination format).
|
|
190
|
-
|
|
191
|
-
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
|
|
192
|
-
Không được xem Memory là Source of Truth.
|
|
193
|
-
Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
198
|
-
- Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
|
|
199
|
-
- Hard Bug có khả năng tái diễn.
|
|
200
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
201
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
202
|
-
- Quyết định Architecture quan trọng.
|
|
203
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
204
|
-
- 👉 *Domain Harvest:* Pattern hoặc Convention mới của dự án (vd: chuẩn xử lý lỗi API mới, rate limiting).
|
|
205
|
-
|
|
206
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
207
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
208
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
213
|
-
Sau khi hoàn thành task:
|
|
214
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
215
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
216
|
-
- Đề xuất người dùng xem xét.
|
|
217
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
218
|
-
- `/learn`
|
|
219
|
-
- `qk-project-memory`
|
|
220
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
221
|
-
|
|
222
|
-
```
|
|
223
|
-
.ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
227
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
### Ignore (Không đưa vào Memory)
|
|
232
|
-
Không lưu:
|
|
233
|
-
- Trace log của một session đơn lẻ.
|
|
234
|
-
- Temporary debugging data.
|
|
235
|
-
- Output của một lần chạy test/scan.
|
|
236
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
237
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
238
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
239
|
-
- 👉 *Domain Ignore:* Thao tác thêm 1 CRUD endpoint thông thường theo Hợp đồng sẵn có.
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
### Golden Rule
|
|
244
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
245
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
### Pre-flight Retrieve (Trước khi thực thi)
|
|
252
|
-
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
253
|
-
bắt buộc tra cứu:
|
|
254
|
-
- `.agents/knowledge/index.yaml` (Shared Project Knowledge)
|
|
255
|
-
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
256
|
-
|
|
257
|
-
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
258
|
-
- Architecture
|
|
259
|
-
- Hard Bug
|
|
260
|
-
- Convention
|
|
261
|
-
- Pattern
|
|
262
|
-
- Tech Debt Pattern
|
|
263
|
-
- 👉 *Domain Focus:* Convention/Pattern (vd: cấu trúc wrapper { status, data, error }, pagination format).
|
|
264
|
-
|
|
265
|
-
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
|
|
266
|
-
Không được xem Memory là Source of Truth.
|
|
267
|
-
Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
|
|
268
|
-
|
|
269
|
-
---
|
|
270
|
-
|
|
271
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
272
|
-
- Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
|
|
273
|
-
- Hard Bug có khả năng tái diễn.
|
|
274
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
275
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
276
|
-
- Quyết định Architecture quan trọng.
|
|
277
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
278
|
-
- 👉 *Domain Harvest:* Pattern hoặc Convention mới của dự án (vd: chuẩn xử lý lỗi API mới, rate limiting).
|
|
279
|
-
|
|
280
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
281
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
282
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
283
|
-
|
|
284
|
-
---
|
|
285
|
-
|
|
286
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
287
|
-
Sau khi hoàn thành task:
|
|
288
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
289
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
290
|
-
- Đề xuất người dùng xem xét.
|
|
291
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
292
|
-
- `/learn`
|
|
293
|
-
- `qk-project-memory`
|
|
294
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
295
|
-
|
|
296
|
-
```
|
|
297
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
301
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
### Ignore (Không đưa vào Memory)
|
|
306
|
-
Không lưu:
|
|
307
|
-
- Trace log của một session đơn lẻ.
|
|
308
|
-
- Temporary debugging data.
|
|
309
|
-
- Output của một lần chạy test/scan.
|
|
310
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
311
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
312
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
313
|
-
- 👉 *Domain Ignore:* Thao tác thêm 1 CRUD endpoint thông thường theo Hợp đồng sẵn có.
|
|
314
|
-
|
|
315
|
-
---
|
|
316
|
-
|
|
317
|
-
### Golden Rule
|
|
318
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
319
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
---
|
|
323
|
-
|
|
324
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
325
|
-
- Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
|
|
326
|
-
- Hard Bug có khả năng tái diễn.
|
|
327
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
328
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
329
|
-
- Quyết định Architecture quan trọng.
|
|
330
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
331
|
-
- 👉 *Domain Harvest:* Pattern hoặc Convention mới của dự án (vd: chuẩn xử lý lỗi API mới, rate limiting).
|
|
332
|
-
|
|
333
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
334
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
335
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
336
|
-
|
|
337
|
-
---
|
|
338
|
-
|
|
339
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
340
|
-
Sau khi hoàn thành task:
|
|
341
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
342
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
343
|
-
- Đề xuất người dùng xem xét.
|
|
344
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
345
|
-
- `/learn`
|
|
346
|
-
- `qk-project-memory`
|
|
347
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
348
|
-
|
|
349
|
-
```
|
|
350
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
354
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
355
|
-
|
|
356
|
-
---
|
|
357
|
-
|
|
358
|
-
### Ignore (Không đưa vào Memory)
|
|
359
|
-
Không lưu:
|
|
360
|
-
- Trace log của một session đơn lẻ.
|
|
361
|
-
- Temporary debugging data.
|
|
362
|
-
- Output của một lần chạy test/scan.
|
|
363
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
364
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
365
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
366
|
-
- 👉 *Domain Ignore:* Thao tác thêm 1 CRUD endpoint thông thường theo Hợp đồng sẵn có.
|
|
367
|
-
|
|
368
|
-
---
|
|
369
|
-
|
|
370
|
-
### Golden Rule
|
|
371
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
372
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
373
|
-
|
|
374
|
-
---
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
378
|
-
- Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
|
|
379
|
-
- Hard Bug có khả năng tái diễn.
|
|
380
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
381
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
382
|
-
- Quyết định Architecture quan trọng.
|
|
383
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
384
|
-
- 👉 *Domain Harvest:* Pattern hoặc Convention mới của dự án (vd: chuẩn xử lý lỗi API mới, rate limiting).
|
|
385
|
-
|
|
386
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
387
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
388
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
389
|
-
|
|
390
|
-
---
|
|
391
|
-
|
|
392
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
393
|
-
Sau khi hoàn thành task:
|
|
394
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
395
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
396
|
-
- Đề xuất người dùng xem xét.
|
|
397
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
398
|
-
- `/learn`
|
|
399
|
-
- `qk-project-memory`
|
|
400
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
401
|
-
|
|
402
|
-
```
|
|
403
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
407
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
408
|
-
|
|
409
|
-
---
|
|
410
|
-
|
|
411
|
-
### Ignore (Không đưa vào Memory)
|
|
412
|
-
Không lưu:
|
|
413
|
-
- Trace log của một session đơn lẻ.
|
|
414
|
-
- Temporary debugging data.
|
|
415
|
-
- Output của một lần chạy test/scan.
|
|
416
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
417
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
418
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
419
|
-
- 👉 *Domain Ignore:* Thao tác thêm 1 CRUD endpoint thông thường theo Hợp đồng sẵn có.
|
|
420
|
-
|
|
421
|
-
---
|
|
422
|
-
|
|
423
|
-
### Golden Rule
|
|
424
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
425
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
426
|
-
|
|
427
|
-
---
|
|
428
|
-
---
|
|
429
|
-
---
|
|
430
|
-
---
|
|
431
|
-
|
|
432
98
|
## Preconditions
|
|
433
|
-
- [ ] API purpose and resource name are defined
|
|
434
|
-
- [ ] Request/response shape is specified (or sample JSON provided)
|
|
435
99
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
100
|
+
Trước khi viết code API mới, AI BẮT BUỘC kiểm tra:
|
|
101
|
+
|
|
102
|
+
- [ ] Xác định backend framework và routing pattern từ `.agents/DEV_PROFILE.md` (Express, Next.js API Routes, FastAPI, NestJS, Go Fiber, v.v.).
|
|
103
|
+
- [ ] Xác định cơ chế Authentication & Authorization cần thiết (Public, JWT, Session, API Key, RBAC).
|
|
104
|
+
- [ ] Định nghĩa rõ ràng Request schema (headers, params, body) và Response schema (success + error cases).
|
|
105
|
+
- [ ] Nếu vi phạm quy ước REST/HTTP status codes hoặc thiếu validation schema:
|
|
106
|
+
→ **EXIT: BLOCKED**
|
|
107
|
+
→ Báo cáo user đề xuất chuẩn hóa contract trước khi implement.
|
|
441
108
|
|
|
442
109
|
---
|
|
443
110
|
|
|
444
111
|
## Scope
|
|
445
|
-
- ✅ Define OpenAPI/Swagger contract BEFORE writing code
|
|
446
|
-
- ✅ Implement endpoint strictly to contract
|
|
447
|
-
- ✅ Validate all inputs, handle all error cases
|
|
448
|
-
- ✅ Ensure backward compatibility
|
|
449
|
-
|
|
450
|
-
## Non-Goals
|
|
451
|
-
- ❌ Introduce breaking changes without versioning
|
|
452
|
-
- ❌ Bypass auth checks
|
|
453
|
-
- ❌ Guess external API shapes without evidence
|
|
454
|
-
|
|
455
|
-
---
|
|
456
112
|
|
|
457
|
-
|
|
113
|
+
✅ Skill này làm:
|
|
114
|
+
- Thiết kế Request/Response DTO và validation schema (Zod, Joi, Pydantic, Class-validator).
|
|
115
|
+
- Cài đặt Route handlers, Controllers, Middlewares xử lý request.
|
|
116
|
+
- Tích hợp Service layer và xử lý logic nghiệp vụ an toàn.
|
|
117
|
+
- Chuẩn hóa HTTP status codes (200, 201, 400, 401, 403, 404, 422, 500) và error response envelope.
|
|
118
|
+
- Đảm bảo sanitized inputs chống SQL Injection, XSS, mass assignment.
|
|
458
119
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
| P3 | Input validation middleware | Never |
|
|
464
|
-
| P4 | Error responses (400, 401, 404, 422, 500) | Budget < 30% |
|
|
465
|
-
| P5 | Documentation (JSDoc or OpenAPI annotation) | Budget < 60% |
|
|
120
|
+
❌ Skill này KHÔNG làm:
|
|
121
|
+
- Thay đổi cấu trúc bảng database hoặc migration (→ `qk-data-lifecycle`).
|
|
122
|
+
- Viết giao diện Frontend để gọi API này (→ `qk-api-consumer`).
|
|
123
|
+
- Tối ưu câu query SQL bên dưới (→ `qk-db-optimizer`).
|
|
466
124
|
|
|
467
125
|
---
|
|
468
126
|
|
|
469
|
-
##
|
|
470
|
-
|
|
471
|
-
### Phase 1 — Contract Definition
|
|
472
|
-
1. Define TypeScript interfaces for Request + Response
|
|
473
|
-
2. Specify HTTP method, route, status codes
|
|
474
|
-
3. Document error cases
|
|
127
|
+
## Execution Steps
|
|
475
128
|
|
|
476
|
-
|
|
129
|
+
### Step 1 — Contract & Schema Definition
|
|
477
130
|
```
|
|
478
|
-
|
|
479
|
-
|
|
131
|
+
Inputs: Yêu cầu endpoint từ user, DEV_PROFILE.md
|
|
132
|
+
Actions:
|
|
133
|
+
- Khai báo Schema cho Request (Path params, Query params, Request body).
|
|
134
|
+
- Khai báo Schema cho Response (Success payload, Error payload).
|
|
135
|
+
- Áp dụng các rules kiểm tra tính hợp lệ dữ liệu đầu vào.
|
|
136
|
+
Output: Type-safe Schema definitions
|
|
480
137
|
```
|
|
481
138
|
|
|
482
|
-
###
|
|
483
|
-
1. Build route handler strictly matching contract
|
|
484
|
-
2. Add input validation (zod/yup/class-validator). **BẮT BUỘC tuân thủ R-SEC-04 (Zero-Trust Boundary): Mọi endpoint phải validate payload ở cổng vào, và sanitize/mask response ở cổng ra.**
|
|
485
|
-
3. Handle all error cases with correct HTTP status
|
|
486
|
-
|
|
487
|
-
### Phase 3 — Verification
|
|
488
|
-
1. Read implemented code vs defined contract
|
|
489
|
-
2. Verify: method, route, response shape, error codes match
|
|
490
|
-
|
|
491
|
-
**Decision:**
|
|
139
|
+
### Step 2 — Route & Middleware Setup
|
|
492
140
|
```
|
|
493
|
-
|
|
494
|
-
|
|
141
|
+
Inputs: Schema definitions
|
|
142
|
+
Actions:
|
|
143
|
+
- Khai báo route path và HTTP method tương ứng.
|
|
144
|
+
- Gắn các middlewares bảo vệ: Auth, Rate-limiting, Input validation.
|
|
145
|
+
Output: Secure Route registration
|
|
495
146
|
```
|
|
496
147
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
## Confidence Model
|
|
500
|
-
| Level | Condition | Action |
|
|
501
|
-
|-------|-----------|--------|
|
|
502
|
-
| HIGH | Contract defined, implementation matches | Report SUCCESS |
|
|
503
|
-
| MEDIUM | Contract inferred from context | Note assumption |
|
|
504
|
-
| LOW | No contract, guessing from usage | EXIT: BLOCKED |
|
|
505
|
-
|
|
506
|
-
---
|
|
507
|
-
|
|
508
|
-
## Evidence Format
|
|
148
|
+
### Step 3 — Controller & Service Implementation
|
|
509
149
|
```
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
150
|
+
Inputs: Validated input data
|
|
151
|
+
Actions:
|
|
152
|
+
- Gọi Service/Repository để xử lý nghiệp vụ.
|
|
153
|
+
- Bọc trong khối try/catch hoặc error boundary trung tâm của framework.
|
|
154
|
+
- Tuyệt đối không để lộ sensitive data (passwords, tokens, internal stack traces) ra client.
|
|
155
|
+
Output: Completed API endpoint
|
|
514
156
|
```
|
|
515
157
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
## Handoff Contract
|
|
519
|
-
### Consumes
|
|
520
|
-
```json
|
|
521
|
-
{ "from": "user", "required_fields": ["resource_name", "request_shape", "response_shape"] }
|
|
158
|
+
### Step 4 — Verification & Contract Testing
|
|
522
159
|
```
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
160
|
+
Inputs: Endpoint implementation
|
|
161
|
+
Actions:
|
|
162
|
+
- Kiểm tra status codes trả về ứng với từng kịch bản (success, missing field, unauthorized).
|
|
163
|
+
- Chạy linter và typecheck.
|
|
164
|
+
Exit: SUCCESS nếu endpoint tuân thủ 100% schema contract và coding standards.
|
|
526
165
|
```
|
|
527
166
|
|
|
528
167
|
---
|
|
529
168
|
|
|
530
|
-
##
|
|
531
|
-
| Code | Meaning | When |
|
|
532
|
-
|------|---------|------|
|
|
533
|
-
| SUCCESS | Contract defined, implemented, verified | Implementation matches contract |
|
|
534
|
-
| PARTIAL | Implemented but missing error cases or docs | Core logic done, edge cases missing |
|
|
535
|
-
| BLOCKED | No contract defined — cannot code | Missing payload/schema |
|
|
536
|
-
| FAILED | Implementation breaks existing contract | Backward incompatibility |
|
|
169
|
+
## Prompt Template
|
|
537
170
|
|
|
538
|
-
|
|
171
|
+
AI đọc `DEV_PROFILE.md` để biết backend stack + auth pattern. Mô tả API contract — AI lo phần còn lại.
|
|
539
172
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
173
|
+
```
|
|
174
|
+
Endpoint: [Method + Path — vd: POST /api/orders]
|
|
175
|
+
Mục đích: [API này làm gì trong business context]
|
|
176
|
+
Auth: [Public / user JWT / admin only / service-to-service]
|
|
177
|
+
Input: [Request body / query params / path params]
|
|
178
|
+
Output: [Response shape khi success + khi lỗi]
|
|
179
|
+
Rules: [Business rules, validation, side effects quan trọng]
|
|
180
|
+
```
|
|
547
181
|
|
|
548
182
|
---
|
|
549
183
|
|
|
550
|
-
|
|
184
|
+
### Theo Role — AI thiết kế theo chiều sâu khác nhau:
|
|
185
|
+
|
|
186
|
+
**role: be**
|
|
551
187
|
```
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
188
|
+
Endpoint: POST /api/orders
|
|
189
|
+
Mục đích: Tạo đơn hàng mới, trừ stock, gửi email xác nhận
|
|
190
|
+
Auth: User JWT (phải login)
|
|
191
|
+
Input: { items: [{ productId, quantity }], shippingAddressId, paymentMethod }
|
|
192
|
+
Output: 201 { orderId, totalAmount, estimatedDelivery }
|
|
193
|
+
400 nếu product hết hàng, 404 nếu product không tồn tại
|
|
194
|
+
Rules: Transaction: trừ stock + tạo order phải atomic. Stock < 0 thì rollback.
|
|
195
|
+
Email gửi async (không block response). Idempotency key từ client.
|
|
556
196
|
```
|
|
197
|
+
→ AI thiết kế: DB transaction scope, optimistic vs pessimistic locking cho stock,
|
|
198
|
+
idempotency key pattern, async job queue cho email, error taxonomy (4xx vs 5xx),
|
|
199
|
+
OpenAPI spec trước khi code.
|
|
557
200
|
|
|
558
|
-
|
|
201
|
+
**role: fullstack**
|
|
202
|
+
```
|
|
203
|
+
Endpoint: GET /api/dashboard/stats
|
|
204
|
+
Mục đích: Trả thống kê cho dashboard — revenue, orders, users hôm nay
|
|
205
|
+
Auth: Admin JWT
|
|
206
|
+
Input: ?from=2024-01-01&to=2024-01-31&timezone=Asia/Ho_Chi_Minh
|
|
207
|
+
Output: { revenue: number, orders: number, newUsers: number, topProducts: [] }
|
|
208
|
+
Rules: Cache 5 phút. Timezone-aware aggregation. Chỉ admin mới gọi được.
|
|
209
|
+
```
|
|
210
|
+
→ AI thiết kế: query aggregation strategy, DB index cho date range,
|
|
211
|
+
timezone handling (store UTC, convert at query time), cache layer (Redis vs in-memory),
|
|
212
|
+
type-safe response contract cho FE (zod schema hoặc OpenAPI codegen).
|
|
559
213
|
|
|
560
|
-
|
|
214
|
+
**role: fe** *(khi FE cần hiểu API để tích hợp đúng)*
|
|
561
215
|
```
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
1. Payload gửi lên (Request) có những field gì?
|
|
568
|
-
2. Payload trả về (Response) có cấu trúc thế nào?
|
|
569
|
-
Recommended Assumptions:
|
|
570
|
-
- Default JSON response with `{ data, message }` wrapper
|
|
216
|
+
Endpoint: GET /api/products (đã có — cần hiểu contract để tích hợp)
|
|
217
|
+
Mục đích: Lấy danh sách sản phẩm với filter + pagination
|
|
218
|
+
Input: ?page=1&limit=20&category=shoes&minPrice=100&sort=price_asc
|
|
219
|
+
Output: { data: Product[], total: number, page: number, hasNextPage: boolean }
|
|
220
|
+
Rules: Cần biết: khi nào trả 404 vs data rỗng? Error shape là gì?
|
|
571
221
|
```
|
|
222
|
+
→ AI phân tích: type generation từ API response, error boundary design,
|
|
223
|
+
loading state granularity, stale-while-revalidate strategy, mock data cho dev.
|
|
572
224
|
|
|
573
|
-
|
|
225
|
+
**role: data** *(API nhận dữ liệu từ pipeline)*
|
|
226
|
+
```
|
|
227
|
+
Endpoint: POST /api/ingest/events (webhook từ data pipeline)
|
|
228
|
+
Mục đích: Nhận batch events từ Kafka consumer, validate và lưu vào DB
|
|
229
|
+
Auth: Service-to-service API key
|
|
230
|
+
Input: { events: [{ type, payload, timestamp, source }], batchId }
|
|
231
|
+
Output: 202 { accepted: N, rejected: M, errors: [] }
|
|
232
|
+
Rules: Idempotent theo batchId. Reject invalid schema nhưng không fail toàn batch.
|
|
233
|
+
Rate limit: 1000 events/request, 100 req/min.
|
|
234
|
+
```
|
|
235
|
+
→ AI thiết kế: bulk insert strategy, partial failure handling,
|
|
236
|
+
schema validation per-row vs batch-level, idempotency key indexing,
|
|
237
|
+
backpressure mechanism khi DB chậm.
|
|
574
238
|
|
|
239
|
+
**role: devops** *(API health + observability endpoints)*
|
|
240
|
+
```
|
|
241
|
+
Endpoint: GET /health, GET /metrics, GET /ready
|
|
242
|
+
Mục đích: Kubernetes liveness/readiness probe + Prometheus scraping
|
|
243
|
+
Auth: Internal only (không expose ra public)
|
|
244
|
+
Output: /health: { status: "ok", uptime, version }
|
|
245
|
+
/metrics: Prometheus format
|
|
246
|
+
/ready: 200 nếu DB connected, 503 nếu không
|
|
247
|
+
Rules: /health không check DB (liveness). /ready check DB (readiness).
|
|
248
|
+
/metrics không cần auth nhưng chỉ bind localhost.
|
|
249
|
+
```
|
|
250
|
+
→ AI thiết kế: liveness vs readiness semantics, graceful shutdown handling,
|
|
251
|
+
metric naming convention (RED method), scrape security, k8s probe config.
|