ai-developer-skill-os 9.1.1 → 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 +52 -18
- package/.agents/registry/index.yaml +66 -12
- 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 -300
- package/.agents/skills/qk-access-policy/SKILL.md +98 -393
- package/.agents/skills/qk-agent-observability/SKILL.md +3 -359
- package/.agents/skills/qk-ai-builder/SKILL.md +132 -485
- 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 -376
- package/.agents/skills/qk-bug-resolution/SKILL.md +128 -481
- package/.agents/skills/qk-code-review/SKILL.md +142 -340
- package/.agents/skills/qk-context-loader/SKILL.md +99 -391
- package/.agents/skills/qk-data-engineer/SKILL.md +253 -0
- package/.agents/skills/qk-data-lifecycle/SKILL.md +89 -408
- package/.agents/skills/qk-db-optimizer/SKILL.md +102 -408
- package/.agents/skills/qk-design-system-engineering/SKILL.md +76 -381
- package/.agents/skills/qk-devops-platform/SKILL.md +77 -383
- package/.agents/skills/qk-docs/SKILL.md +88 -414
- package/.agents/skills/qk-engineering-standard/SKILL.md +4 -508
- package/.agents/skills/qk-fe-api-integration/SKILL.md +343 -263
- package/.agents/skills/qk-fe-api-integration/evals/scorecard.yaml +29 -29
- package/.agents/skills/qk-feature-delivery/SKILL.md +137 -365
- package/.agents/skills/qk-feature-delivery/evals/scorecard.yaml +1 -1
- package/.agents/skills/qk-frontend-architecture/SKILL.md +5 -399
- package/.agents/skills/qk-help/evals/scorecard.yaml +13 -13
- package/.agents/skills/qk-orchestrator/SKILL.md +63 -422
- package/.agents/skills/qk-orchestrator/references/routing-table.md +10 -14
- package/.agents/skills/qk-product-specification/SKILL.md +70 -399
- package/.agents/skills/qk-production-release/SKILL.md +80 -457
- package/.agents/skills/qk-project-audit/SKILL.md +174 -0
- package/.agents/skills/qk-project-bootstrap/SKILL.md +244 -392
- package/.agents/skills/qk-project-health/SKILL.md +97 -416
- package/.agents/skills/qk-project-memory/SKILL.md +76 -21
- package/.agents/skills/qk-refactor/SKILL.md +167 -304
- package/.agents/skills/qk-security-audit/SKILL.md +141 -383
- package/.agents/skills/qk-security-audit/capability.yaml +1 -2
- package/.agents/skills/qk-system-evolution/SKILL.md +343 -263
- package/.agents/skills/qk-system-evolution/evals/scorecard.yaml +26 -26
- package/.agents/skills/qk-test-engineering/SKILL.md +119 -429
- package/.agents/skills/qk-ui-audit/SKILL.md +73 -457
- package/.agents/skills/qk-ui-builder/SKILL.md +521 -482
- package/.agents/skills/qk-ui-system-builder/SKILL.md +68 -434
- 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 -523
- package/.agents/skills/qk-web-quality-gate/SKILL.md +85 -383
- 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-project-memory
|
|
4
|
-
version: 9.
|
|
4
|
+
version: 9.2.0
|
|
5
5
|
status: stable
|
|
6
|
-
description: "Quản trị Tri thức và Bộ nhớ dự án V1 (Local Private Mode) — Quản lý tại .ai-local/ như source code: tự động khởi tạo, bảo mật gitignore, có thể review, cập nhật và luôn có con người phê duyệt."
|
|
6
|
+
description: "Quản trị Tri thức và Bộ nhớ dự án V1 (Local Private Mode) — Quản lý tại .ai-local/ như source code: tự động khởi tạo, bảo mật gitignore, có thể review, cập nhật và luôn có con người phê duyệt. Dùng skill này khi user nhắc đến: lưu context, project memory, ghi nhớ, /learn, lưu vào bộ nhớ, nhớ lại, tìm lại fact, lưu tri thức dự án — kể cả khi chỉ nói 'nhớ lại lỗi này để sau không mắc lại'."
|
|
7
7
|
platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
|
|
8
8
|
|
|
9
9
|
# ── V9: Classification ─────────────────────────────────────
|
|
@@ -24,11 +24,13 @@ complexity:
|
|
|
24
24
|
|
|
25
25
|
triggers:
|
|
26
26
|
- "lưu context"
|
|
27
|
-
- "nhớ lại"
|
|
28
27
|
- "project memory"
|
|
28
|
+
- "ghi nhớ"
|
|
29
|
+
- "/learn"
|
|
29
30
|
- "lưu vào bộ nhớ"
|
|
31
|
+
- "nhớ lại"
|
|
30
32
|
- "tìm lại fact"
|
|
31
|
-
- "
|
|
33
|
+
- "lưu tri thức dự án"
|
|
32
34
|
|
|
33
35
|
# ── V9: References ─────────────────────────────────────────
|
|
34
36
|
workflow: documentation
|
|
@@ -42,19 +44,19 @@ tools:
|
|
|
42
44
|
|
|
43
45
|
related_skills:
|
|
44
46
|
- qk-context-loader
|
|
45
|
-
- qk-
|
|
47
|
+
- qk-docs
|
|
46
48
|
|
|
47
49
|
knowledge_scope:
|
|
48
50
|
owns:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
- project-facts
|
|
52
|
+
- verified-context
|
|
53
|
+
- patterns
|
|
54
|
+
- hard-bugs
|
|
53
55
|
references:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
- architecture
|
|
57
|
+
- convention
|
|
58
|
+
- pattern
|
|
59
|
+
- hard-bug
|
|
58
60
|
|
|
59
61
|
# ── V9: Verification ───────────────────────────────────────
|
|
60
62
|
verification:
|
|
@@ -78,7 +80,7 @@ produces: [knowledge-update]
|
|
|
78
80
|
consumes: [source-code, task-outcome]
|
|
79
81
|
|
|
80
82
|
token_budget:
|
|
81
|
-
max_files_read:
|
|
83
|
+
max_files_read: 3
|
|
82
84
|
max_lines_per_read: 150
|
|
83
85
|
max_shell_commands: 0
|
|
84
86
|
stop_early: true
|
|
@@ -88,13 +90,43 @@ exit_codes: [SUCCESS, BLOCKED, DISMISSED, FAILED]
|
|
|
88
90
|
|
|
89
91
|
# qk-project-memory — Project Knowledge Management V1
|
|
90
92
|
|
|
93
|
+
> **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
|
|
94
|
+
|
|
91
95
|
> **Kim chỉ nam tối thượng:** *"Knowledge phải được quản lý giống như source code: đơn giản, có thể xem xét (review), có thể cập nhật, có thể loại bỏ và luôn có con người chịu trách nhiệm phê duyệt."*
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Preconditions
|
|
100
|
+
|
|
101
|
+
Trước khi đọc hoặc ghi vào bộ nhớ dự án:
|
|
102
|
+
|
|
103
|
+
- [ ] Kiểm tra xem thư mục `.ai-local/` đã tồn tại chưa:
|
|
104
|
+
- Nếu **chưa có**: Tự động tạo `.ai-local/AGENTS.md` và `.ai-local/knowledge/index.yaml` (Self-Init Protocol), đồng thời đảm bảo `.ai-local/` đã nằm trong `.gitignore`.
|
|
105
|
+
- [ ] Xác định thao tác: **Tra cứu (Retrieve)** hay **Học/Ghi nhớ (/learn)**.
|
|
106
|
+
- [ ] Với thao tác Ghi nhớ: Tri thức BẮT BUỘC phải thuộc 1 trong 4 danh mục cốt lõi:
|
|
107
|
+
1. `Architecture` (Cấu trúc nền tảng)
|
|
108
|
+
2. `Convention` (Quy ước viết code bất di bất dịch)
|
|
109
|
+
3. `Pattern` (Mẫu giải pháp lặp lại nhiều bước)
|
|
110
|
+
4. `Hard Bug` (Lỗi tốn nhiều thời gian xử lý)
|
|
111
|
+
- [ ] Nếu là lỗi typo, format CSS vặt vãnh, hoặc CRUD tầm thường:
|
|
112
|
+
→ **EXIT: DISMISSED** (Bỏ qua để giữ sạch bộ nhớ).
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Scope
|
|
117
|
+
|
|
118
|
+
✅ Skill này làm:
|
|
119
|
+
- Khởi tạo và duy trì bộ nhớ cục bộ an toàn tại `.ai-local/` (tách biệt khỏi git commit chung).
|
|
120
|
+
- Tra cứu nhanh các quyết định kiến trúc, patterns và cách fix bug cũ trước khi giải quyết task mới.
|
|
121
|
+
- Đề xuất bản thảo tri thức mới (Draft Proposal) dưới chuẩn YAML súc tích.
|
|
122
|
+
- Xin phê duyệt rõ ràng từ lập trình viên (Human Approval Gate) trước khi lưu vĩnh viễn.
|
|
123
|
+
- Lưu vết lịch sử theo cơ chế Zero-Overwrite (Chuyển trạng thái cũ sang `Archived` thay vì xóa mất dữ liệu).
|
|
124
|
+
|
|
125
|
+
❌ Skill này KHÔNG làm:
|
|
126
|
+
- Tự động ghi ngầm tri thức mà không có sự đồng ý của con người.
|
|
127
|
+
- Lưu trữ nhật ký hội thoại ("Hôm nay user bảo làm X...").
|
|
128
|
+
- Dùng đường dẫn tuyệt đối máy cá nhân (`C:/...`, `D:/...`).
|
|
129
|
+
- Thay thế mã nguồn thật (Memory chỉ là Navigator hỗ trợ định vị).
|
|
98
130
|
|
|
99
131
|
---
|
|
100
132
|
|
|
@@ -208,7 +240,7 @@ knowledge:
|
|
|
208
240
|
|
|
209
241
|
---
|
|
210
242
|
|
|
211
|
-
##
|
|
243
|
+
## Execution Steps — The `/learn` Lifecycle
|
|
212
244
|
|
|
213
245
|
Bất kỳ lúc nào người dùng gõ `/learn`, `./qk-project-memory`, hoặc sau khi hoàn tất một task phức tạp có tham số yêu cầu ghi nhớ, Agent PHẢI tuân thủ theo 4 bước khép kín:
|
|
214
246
|
|
|
@@ -246,3 +278,26 @@ Trình bày rõ trước người dùng trên chat:
|
|
|
246
278
|
| BLOCKED | Đề xuất tri thức bị Người dùng từ chối (Hoặc thiếu quyền truy xuất file) | Không thay đổi bộ nhớ |
|
|
247
279
|
| DISMISSED | Thao tác không thỏa mãn 4 tiêu chí lọc V1 (Chỉ là typo, css vặt) | Bỏ qua ghi nhớ nhằm sạch hệ thống |
|
|
248
280
|
| FAILED | File bộ nhớ sai định dạng cú pháp YAML hoặc vi phạm giới hạn 100 dòng | Yêu cầu sửa/reset cấu trúc file |
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Prompt Template
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
Lệnh: [/learn hoặc tra cứu tri thức]
|
|
288
|
+
Tri thức: [Tóm tắt pattern, convention, kiến trúc, hoặc hard bug vừa xử lý]
|
|
289
|
+
File liên quan:[Đường dẫn tương đối: vd: src/services/apiClient.ts]
|
|
290
|
+
Mục đích: [Giúp AI trong tương lai không lặp lại lỗi hoặc mở đúng file]
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### Ví dụ thao tác:
|
|
294
|
+
|
|
295
|
+
**Lưu một Hard Bug vừa xử lý xong**
|
|
296
|
+
```
|
|
297
|
+
Lệnh: /learn
|
|
298
|
+
Tri thức: Hard Bug: Lỗi hydration mismatch trong Next.js do dùng new Date() trực tiếp trong component render.
|
|
299
|
+
Khắc phục: Dùng useEffect để set client date hoặc dùng thư viện suppressHydrationWarning.
|
|
300
|
+
File: src/components/HeaderClock.tsx
|
|
301
|
+
```
|
|
302
|
+
→ AI chuẩn bị bản draft YAML đề xuất theo chuẩn `index.yaml` và hỏi người dùng phê duyệt trước khi commit vào `.ai-local/knowledge/index.yaml`.
|
|
303
|
+
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: qk-refactor
|
|
3
|
-
version: 9.
|
|
3
|
+
version: 9.2.0
|
|
4
4
|
status: stable
|
|
5
|
-
description: "Tái cấu trúc
|
|
5
|
+
description: "Tái cấu trúc code để dễ bảo trì, dễ test hơn — không thay đổi external behavior. Dùng skill này khi user nhắc đến: refactor, tái cấu trúc, tách file, extract function/component/module, clean code, reduce complexity, file quá dài, God class, quá nhiều responsibilities — kể cả khi chỉ nói \"file này lộn xộn quá\"."
|
|
6
6
|
platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
|
|
7
7
|
|
|
8
8
|
type: capability
|
|
@@ -20,13 +20,17 @@ complexity:
|
|
|
20
20
|
has_external_dependency: false
|
|
21
21
|
has_breaking_change: false
|
|
22
22
|
|
|
23
|
-
triggers:
|
|
24
|
-
- refactor
|
|
25
|
-
- tái cấu trúc
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
23
|
+
triggers:
|
|
24
|
+
- "refactor"
|
|
25
|
+
- "tái cấu trúc"
|
|
26
|
+
- "tách file"
|
|
27
|
+
- "extract function/component/module"
|
|
28
|
+
- "clean code"
|
|
29
|
+
- "reduce complexity"
|
|
30
|
+
- "file quá dài"
|
|
31
|
+
- "God class"
|
|
32
|
+
- "quá nhiều responsibilities"
|
|
33
|
+
|
|
30
34
|
|
|
31
35
|
selection:
|
|
32
36
|
priority: medium
|
|
@@ -44,7 +48,7 @@ tools:
|
|
|
44
48
|
- terminal
|
|
45
49
|
|
|
46
50
|
related_skills:
|
|
47
|
-
- qk-
|
|
51
|
+
- qk-code-review
|
|
48
52
|
- qk-project-health
|
|
49
53
|
|
|
50
54
|
knowledge_scope:
|
|
@@ -76,305 +80,164 @@ token_budget:
|
|
|
76
80
|
max_shell_commands: 2
|
|
77
81
|
stop_early: true
|
|
78
82
|
|
|
79
|
-
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
83
|
+
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
80
84
|
---
|
|
81
85
|
|
|
82
86
|
# qk-refactor - Safe Refactor
|
|
83
87
|
|
|
84
|
-
> Language rule
|
|
88
|
+
> **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
|
|
89
|
+
|
|
90
|
+
Chịu trách nhiệm tái cấu trúc mã nguồn để tăng khả năng bảo trì, giảm độ phức tạp và tăng tính kiểm thử mà **TUYỆT ĐỐI KHÔNG làm thay đổi hành vi bên ngoài (External Behavior)**.
|
|
91
|
+
|
|
92
|
+
---
|
|
85
93
|
|
|
86
|
-
## Memory Workflow
|
|
87
|
-
|
|
88
|
-
### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
|
|
89
|
-
- Trước khi tra cứu hoặc lưu trữ tri thức, BẮT BUỘC kiểm tra sự tồn tại của thư mục `.ai-local/` tại gốc dự án:
|
|
90
|
-
- **Tự động tạo mới:** Nếu `.ai-local/` chưa tồn tại, AI phải tự động tạo cấu trúc thư mục `.ai-local/knowledge/` (và file `index.yaml` nếu cần thiết) cùng `.ai-local/candidates/`. Tuyệt đối không ngưng chạy hay hỏi ý kiến người dùng về thao tác khởi tạo tiêu chuẩn này.
|
|
91
|
-
- **Bảo mật Gitignore:** BẮT BUỘC kiểm tra file `.gitignore` của dự án, nếu chưa có dòng `.ai-local/` thì phải tự động thêm vào để tuyệt đối bảo mật tri thức cá nhân và tránh lộ lọt lên Git.
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
### Pre-flight Retrieve (Trước khi thực thi)
|
|
96
|
-
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
97
|
-
bắt buộc tra cứu:
|
|
98
|
-
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
99
|
-
|
|
100
|
-
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
101
|
-
- Architecture
|
|
102
|
-
- Hard Bug
|
|
103
|
-
- Convention
|
|
104
|
-
- Pattern
|
|
105
|
-
- Tech Debt Pattern
|
|
106
|
-
- 👉 *Domain Focus:* Pattern / Convention (vd: chiến lược tách file anti-slop, bảo toàn public contract).
|
|
107
|
-
|
|
108
|
-
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
|
|
109
|
-
Không được xem Memory là Source of Truth.
|
|
110
|
-
Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
115
|
-
- Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
|
|
116
|
-
- Hard Bug có khả năng tái diễn.
|
|
117
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
118
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
119
|
-
- Quyết định Architecture quan trọng.
|
|
120
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
121
|
-
- 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
|
|
122
|
-
|
|
123
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
124
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
125
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
130
|
-
Sau khi hoàn thành task:
|
|
131
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
132
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
133
|
-
- Đề xuất người dùng xem xét.
|
|
134
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
135
|
-
- `/learn`
|
|
136
|
-
- `qk-project-memory`
|
|
137
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
.ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
144
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
### Ignore (Không đưa vào Memory)
|
|
149
|
-
Không lưu:
|
|
150
|
-
- Trace log của một session đơn lẻ.
|
|
151
|
-
- Temporary debugging data.
|
|
152
|
-
- Output của một lần chạy test/scan.
|
|
153
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
154
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
155
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
156
|
-
- 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
### Golden Rule
|
|
161
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
162
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
### Pre-flight Retrieve (Trước khi thực thi)
|
|
169
|
-
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
170
|
-
bắt buộc tra cứu:
|
|
171
|
-
- `.agents/knowledge/index.yaml` (Shared Project Knowledge)
|
|
172
|
-
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
173
|
-
|
|
174
|
-
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
175
|
-
- Architecture
|
|
176
|
-
- Hard Bug
|
|
177
|
-
- Convention
|
|
178
|
-
- Pattern
|
|
179
|
-
- Tech Debt Pattern
|
|
180
|
-
- 👉 *Domain Focus:* Pattern / Convention (vd: chiến lược tách file anti-slop, bảo toàn public contract).
|
|
181
|
-
|
|
182
|
-
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
|
|
183
|
-
Không được xem Memory là Source of Truth.
|
|
184
|
-
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.
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
189
|
-
- 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:
|
|
190
|
-
- Hard Bug có khả năng tái diễn.
|
|
191
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
192
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
193
|
-
- Quyết định Architecture quan trọng.
|
|
194
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
195
|
-
- 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
|
|
196
|
-
|
|
197
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
198
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
199
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
204
|
-
Sau khi hoàn thành task:
|
|
205
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
206
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
207
|
-
- Đề xuất người dùng xem xét.
|
|
208
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
209
|
-
- `/learn`
|
|
210
|
-
- `qk-project-memory`
|
|
211
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
212
|
-
|
|
213
|
-
```
|
|
214
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
218
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
### Ignore (Không đưa vào Memory)
|
|
223
|
-
Không lưu:
|
|
224
|
-
- Trace log của một session đơn lẻ.
|
|
225
|
-
- Temporary debugging data.
|
|
226
|
-
- Output của một lần chạy test/scan.
|
|
227
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
228
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
229
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
230
|
-
- 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
|
|
231
|
-
|
|
232
|
-
---
|
|
233
|
-
|
|
234
|
-
### Golden Rule
|
|
235
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
236
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
242
|
-
- 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:
|
|
243
|
-
- Hard Bug có khả năng tái diễn.
|
|
244
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
245
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
246
|
-
- Quyết định Architecture quan trọng.
|
|
247
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
248
|
-
- 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
|
|
249
|
-
|
|
250
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
251
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
252
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
257
|
-
Sau khi hoàn thành task:
|
|
258
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
259
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
260
|
-
- Đề xuất người dùng xem xét.
|
|
261
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
262
|
-
- `/learn`
|
|
263
|
-
- `qk-project-memory`
|
|
264
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
265
|
-
|
|
266
|
-
```
|
|
267
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
271
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
### Ignore (Không đưa vào Memory)
|
|
276
|
-
Không lưu:
|
|
277
|
-
- Trace log của một session đơn lẻ.
|
|
278
|
-
- Temporary debugging data.
|
|
279
|
-
- Output của một lần chạy test/scan.
|
|
280
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
281
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
282
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
283
|
-
- 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
|
|
284
|
-
|
|
285
|
-
---
|
|
286
|
-
|
|
287
|
-
### Golden Rule
|
|
288
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
289
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
### Learning Flow (AI tự học có kiểm soát)
|
|
295
|
-
- 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:
|
|
296
|
-
- Hard Bug có khả năng tái diễn.
|
|
297
|
-
- Pattern làm việc lặp lại trong dự án.
|
|
298
|
-
- Convention hoặc quy tắc kiến trúc mới.
|
|
299
|
-
- Quyết định Architecture quan trọng.
|
|
300
|
-
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
301
|
-
- 👉 *Domain Harvest:* Pattern tái cấu trúc mã nguồn hiệu quả (vd: bẻ gẫy god-file thành module O(1)).
|
|
302
|
-
|
|
303
|
-
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
|
|
304
|
-
- Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
|
|
305
|
-
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
310
|
-
Sau khi hoàn thành task:
|
|
311
|
-
- AI đánh giá các Candidate Memory đã tạo.
|
|
312
|
-
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
313
|
-
- Đề xuất người dùng xem xét.
|
|
314
|
-
- Gửi yêu cầu phê duyệt thông qua:
|
|
315
|
-
- `/learn`
|
|
316
|
-
- `qk-project-memory`
|
|
317
|
-
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
318
|
-
|
|
319
|
-
```
|
|
320
|
-
.ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
- Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
|
|
324
|
-
- Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
|
|
325
|
-
|
|
326
|
-
---
|
|
327
|
-
|
|
328
|
-
### Ignore (Không đưa vào Memory)
|
|
329
|
-
Không lưu:
|
|
330
|
-
- Trace log của một session đơn lẻ.
|
|
331
|
-
- Temporary debugging data.
|
|
332
|
-
- Output của một lần chạy test/scan.
|
|
333
|
-
- Report health tạm thời của một đợt kiểm tra.
|
|
334
|
-
- Lỗi nhỏ chỉ xảy ra một lần.
|
|
335
|
-
- Thông tin không có khả năng tái sử dụng.
|
|
336
|
-
- 👉 *Domain Ignore:* Các thao tác đổi tên biến (rename) hoặc format đơn giản.
|
|
337
|
-
|
|
338
|
-
---
|
|
339
|
-
|
|
340
|
-
### Golden Rule
|
|
341
|
-
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
342
|
-
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
343
|
-
|
|
344
|
-
---
|
|
345
|
-
---
|
|
346
|
-
---
|
|
347
|
-
---
|
|
348
|
-
|
|
349
94
|
## Preconditions
|
|
350
|
-
- [ ] Target file(s) or module(s) are specified
|
|
351
|
-
- [ ] Tests exist for the target code (or can be created)
|
|
352
95
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
96
|
+
Trước khi tái cấu trúc bất kỳ file nào, AI BẮT BUỘC kiểm tra:
|
|
97
|
+
|
|
98
|
+
- [ ] Xác định rõ mục tiêu refactor (tách file, giảm cognitive complexity, khử duplication, áp dụng Design Pattern).
|
|
99
|
+
- [ ] Xác định public contracts (functions, classes, API routes, props) cần giữ nguyên vẹn.
|
|
100
|
+
- [ ] Kiểm tra hệ thống test hiện có: có tests để verify behavior không?
|
|
101
|
+
- [ ] Nếu yêu cầu refactor kèm theo thay đổi nghiệp vụ hoặc đổi behavior:
|
|
102
|
+
→ **EXIT: BLOCKED**
|
|
103
|
+
→ Báo cáo user: Tách riêng việc refactor (qk-refactor) và việc đổi tính năng (qk-feature-delivery).
|
|
104
|
+
|
|
105
|
+
---
|
|
356
106
|
|
|
357
107
|
## Scope
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
-
|
|
364
|
-
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
108
|
+
|
|
109
|
+
✅ Skill này làm:
|
|
110
|
+
- Trích xuất hàm, component, custom hooks hoặc helper modules (Extract method/module).
|
|
111
|
+
- Giảm độ phức tạp cyclomatic (lồng if/else sâu, switch case khổng lồ).
|
|
112
|
+
- Khử trùng lặp mã nguồn (DRY) mà không tạo ra over-abstraction gượng ép.
|
|
113
|
+
- Tối ưu đặt tên biến, hàm theo đúng quy ước sạch (Clean Code).
|
|
114
|
+
- Bảo đảm 100% backward compatibility với các consumer của module.
|
|
115
|
+
|
|
116
|
+
❌ Skill này KHÔNG làm:
|
|
117
|
+
- Sửa đổi business logic hoặc thay đổi đầu ra mong đợi của hệ thống.
|
|
118
|
+
- Viết tính năng mới ngoài lề trong quá trình refactor.
|
|
119
|
+
- Tự ý thay đổi schema cơ sở dữ liệu (→ `qk-data-lifecycle`).
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Execution Steps
|
|
124
|
+
|
|
125
|
+
### Step 1 — Current State & Contract Lock
|
|
126
|
+
```
|
|
127
|
+
Inputs: Mã nguồn mục tiêu, Public interface
|
|
128
|
+
Actions:
|
|
129
|
+
- Phân tích luồng thực thi và các điểm vào/ra (inputs/outputs, exceptions).
|
|
130
|
+
- Khóa (lock) contract công khai: không thay đổi signature của exported functions/components.
|
|
131
|
+
- Kiểm tra test coverage hiện có (nếu có).
|
|
132
|
+
Output: Refactor Safety Boundary
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Step 2 — Incremental Transformation
|
|
136
|
+
```
|
|
137
|
+
Inputs: Target code, Safety boundary
|
|
138
|
+
Actions:
|
|
139
|
+
- Tách nhỏ từng phần (baby steps): trích xuất hàm con, module độc lập.
|
|
140
|
+
- Thay thế cấu trúc lồng ghép bằng Guard Clauses (early return).
|
|
141
|
+
- Di chuyển các helper/utility sang vị trí phù hợp theo kiến trúc dự án.
|
|
142
|
+
Output: Refactored code
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Step 3 — Verification & Equivalence Check
|
|
146
|
+
```
|
|
147
|
+
Inputs: Refactored code, Original tests
|
|
148
|
+
Actions:
|
|
149
|
+
- Chạy linter và typecheck: 0 type errors, 0 lint warnings.
|
|
150
|
+
- Chạy tests để xác nhận tính tương đương hành vi (behavior equivalence).
|
|
151
|
+
- So sánh diff để đảm bảo không xóa nhầm logic hay import.
|
|
152
|
+
Exit: SUCCESS nếu code sạch hơn, pass linter/types và giữ nguyên behavior.
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Prompt Template
|
|
158
|
+
|
|
159
|
+
AI đọc `DEV_PROFILE.md` để biết conventions. Mô tả vấn đề — AI đọc code thật trước khi refactor.
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
Target: [File / module / function cần refactor — đường dẫn cụ thể]
|
|
163
|
+
Vấn đề: [Code đang gây ra vấn đề gì — quá dài / khó test / lặp lại / ...]
|
|
164
|
+
Mục tiêu: [Muốn đạt được gì sau refactor]
|
|
165
|
+
Giữ nguyên: [Public interface / behavior / test cases không được đổi]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### Theo Role — AI refactor theo chiều sâu khác nhau:
|
|
171
|
+
|
|
172
|
+
**role: fe**
|
|
173
|
+
```
|
|
174
|
+
Target: src/pages/CheckoutPage.tsx (380 dòng)
|
|
175
|
+
Vấn đề: Một file trộn lẫn: form state, API calls, validation, UI rendering,
|
|
176
|
+
cart calculation — không test được, không reuse được
|
|
177
|
+
Mục tiêu: Tách thành: CheckoutPage (UI) + useCheckout (logic hook) +
|
|
178
|
+
checkoutSchema (validation) + cartUtils (calculation)
|
|
179
|
+
Giữ nguyên: Props interface của CheckoutPage không đổi, behavior submit không đổi
|
|
180
|
+
```
|
|
181
|
+
→ AI refactor: custom hook extraction pattern, co-location vs separation of concerns,
|
|
182
|
+
memoization opportunities (useMemo/useCallback), type narrowing sau khi tách.
|
|
183
|
+
|
|
184
|
+
**role: be**
|
|
185
|
+
```
|
|
186
|
+
Target: src/services/OrderService.ts (420 dòng)
|
|
187
|
+
Vấn đề: God class — xử lý: tạo order, tính giá, gửi email, update inventory,
|
|
188
|
+
generate invoice — vi phạm SRP, unit test không isolate được
|
|
189
|
+
Mục tiêu: Tách ra theo domain: PricingService, InventoryService, NotificationService,
|
|
190
|
+
OrderService chỉ orchestrate
|
|
191
|
+
Giữ nguyên: Public method signatures của OrderService, không đổi DB transactions
|
|
192
|
+
```
|
|
193
|
+
→ AI refactor: dependency injection pattern, service boundary design,
|
|
194
|
+
transaction scope sau khi tách (vẫn cần atomic), interface extraction cho testability.
|
|
195
|
+
|
|
196
|
+
**role: fullstack**
|
|
197
|
+
```
|
|
198
|
+
Target: src/features/products/ (toàn bộ folder)
|
|
199
|
+
Vấn đề: Feature folder có: API route, DB query, FE component, type definitions
|
|
200
|
+
— tất cả trong cùng 1 file products.ts (550 dòng)
|
|
201
|
+
Mục tiêu: Feature-based architecture: products/api.ts, products/db.ts,
|
|
202
|
+
products/components/, products/types.ts, products/hooks.ts
|
|
203
|
+
Giữ nguyên: Import paths của các file khác đang dùng products types
|
|
204
|
+
```
|
|
205
|
+
→ AI refactor: barrel exports để preserve import paths, layer separation
|
|
206
|
+
(presentation/business/data), shared types location, circular dependency check.
|
|
207
|
+
|
|
208
|
+
**role: data**
|
|
209
|
+
```
|
|
210
|
+
Target: transforms/order_metrics.sql (250 dòng)
|
|
211
|
+
Vấn đề: SQL monolith — một query tính tất cả metrics, không reusable,
|
|
212
|
+
debug khó, CTE lồng nhau 6 cấp
|
|
213
|
+
Mục tiêu: Tách thành dbt models: stg_orders, int_order_items, fct_order_metrics
|
|
214
|
+
Mỗi model làm đúng một việc
|
|
215
|
+
Giữ nguyên: Output schema của fct_order_metrics không đổi (downstream depends on it)
|
|
216
|
+
```
|
|
217
|
+
→ AI refactor: dbt model layering (staging/intermediate/mart), ref() dependencies,
|
|
218
|
+
incremental model strategy, documentation + schema.yml generation.
|
|
219
|
+
|
|
220
|
+
**role: ai-engineer**
|
|
221
|
+
```
|
|
222
|
+
Target: agents/rag_agent.py (300 dòng)
|
|
223
|
+
Vấn đề: Monolithic RAG function — embed + retrieve + rerank + generate
|
|
224
|
+
tất cả trong 1 hàm, không thể A/B test từng component
|
|
225
|
+
Mục tiêu: Tách thành pipeline: Retriever, Reranker, Generator — mỗi class
|
|
226
|
+
có interface rõ ràng, swap được implementation
|
|
227
|
+
Giữ nguyên: Input/output interface của rag_agent() không đổi
|
|
228
|
+
```
|
|
229
|
+
→ AI refactor: Strategy pattern cho từng pipeline stage, dependency injection
|
|
230
|
+
cho model/embedding, eval hooks tại từng stage, config-driven pipeline.
|
|
231
|
+
|
|
232
|
+
**role: devops**
|
|
233
|
+
```
|
|
234
|
+
Target: .github/workflows/deploy.yml (200 dòng)
|
|
235
|
+
Vấn đề: Một workflow file làm tất cả: test + build + push image + deploy staging
|
|
236
|
+
+ deploy prod + notify — không reusable, khó debug khi fail
|
|
237
|
+
Mục tiêu: Tách thành reusable workflows: test.yml, build-push.yml,
|
|
238
|
+
deploy.yml (reusable), notify.yml — orchestrated từ main.yml
|
|
239
|
+
Giữ nguyên: Trigger conditions và environment variables không đổi
|
|
240
|
+
```
|
|
241
|
+
→ AI refactor: GitHub reusable workflows pattern (workflow_call),
|
|
242
|
+
matrix strategy cho multi-env deploy, secret scoping per environment,
|
|
243
|
+
concurrency groups để tránh parallel deploys.
|