ai-developer-skill-os 9.1.1 → 9.1.2
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/registry/graph.json +18 -2
- package/.agents/registry/index.yaml +9 -1
- package/.agents/skills/_template/SKILL.md +77 -0
- package/.agents/skills/qk-access-policy/SKILL.md +80 -0
- package/.agents/skills/qk-agent-observability/SKILL.md +80 -0
- package/.agents/skills/qk-ai-builder/SKILL.md +80 -0
- package/.agents/skills/qk-api-lifecycle/SKILL.md +80 -0
- package/.agents/skills/qk-bug-resolution/SKILL.md +80 -0
- package/.agents/skills/qk-code-review/SKILL.md +80 -0
- package/.agents/skills/qk-context-loader/SKILL.md +80 -0
- package/.agents/skills/qk-data-engineer/SKILL.md +474 -0
- package/.agents/skills/qk-data-lifecycle/SKILL.md +80 -0
- package/.agents/skills/qk-db-optimizer/SKILL.md +80 -0
- package/.agents/skills/qk-design-system-engineering/SKILL.md +80 -0
- package/.agents/skills/qk-devops-platform/SKILL.md +80 -0
- package/.agents/skills/qk-docs/SKILL.md +80 -0
- package/.agents/skills/qk-engineering-standard/SKILL.md +80 -0
- package/.agents/skills/qk-fe-api-integration/SKILL.md +80 -0
- package/.agents/skills/qk-feature-delivery/SKILL.md +80 -0
- package/.agents/skills/qk-frontend-architecture/SKILL.md +80 -0
- package/.agents/skills/qk-orchestrator/SKILL.md +80 -0
- package/.agents/skills/qk-product-specification/SKILL.md +80 -0
- package/.agents/skills/qk-production-release/SKILL.md +80 -0
- package/.agents/skills/qk-project-bootstrap/SKILL.md +80 -0
- package/.agents/skills/qk-project-health/SKILL.md +80 -0
- package/.agents/skills/qk-refactor/SKILL.md +80 -0
- package/.agents/skills/qk-security-audit/SKILL.md +80 -0
- package/.agents/skills/qk-system-evolution/SKILL.md +80 -0
- package/.agents/skills/qk-test-engineering/SKILL.md +80 -0
- package/.agents/skills/qk-ui-audit/SKILL.md +80 -0
- package/.agents/skills/qk-ui-system-builder/SKILL.md +80 -0
- package/.agents/skills/qk-validation-gate/SKILL.md +80 -0
- package/.agents/skills/qk-web-quality-gate/SKILL.md +80 -0
- package/README.md +4 -4
- package/package.json +1 -1
|
@@ -168,6 +168,86 @@ Không lưu:
|
|
|
168
168
|
|
|
169
169
|
|
|
170
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:* Pattern / Architecture (vd: sơ đồ phụ thuộc mô-đun, biểu đồ ngữ cảnh O(1)).
|
|
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:* Quyết định Architecture hoặc Pattern quan trọng khi ánh xạ dependency.
|
|
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:* Cache đồ thị ngữ cảnh tạm thời của một lệnh tìm kiếm.
|
|
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
|
+
|
|
171
251
|
### Pre-flight Retrieve (Trước khi thực thi)
|
|
172
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:
|
|
173
253
|
bắt buộc tra cứu:
|
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
---
|
|
2
|
+
# ── Identity ───────────────────────────────────────────────
|
|
3
|
+
name: qk-data-engineer
|
|
4
|
+
version: 9.1.0
|
|
5
|
+
status: stable
|
|
6
|
+
description: "Universal Data Engineering Skill — Tự động thích nghi với project context, áp dụng các best practices (Idempotency, Data Quality, Lineage, Security) không giới hạn tech stack."
|
|
7
|
+
platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
|
|
8
|
+
|
|
9
|
+
# ── V9: Classification ─────────────────────────────────────
|
|
10
|
+
type: capability
|
|
11
|
+
|
|
12
|
+
intent:
|
|
13
|
+
- data-pipeline
|
|
14
|
+
- data-modeling
|
|
15
|
+
- data-quality
|
|
16
|
+
- etl-optimization
|
|
17
|
+
|
|
18
|
+
complexity:
|
|
19
|
+
level: high
|
|
20
|
+
criteria:
|
|
21
|
+
files_affected: "1-15"
|
|
22
|
+
has_behavior_change: true
|
|
23
|
+
has_external_dependency: true
|
|
24
|
+
has_breaking_change: false
|
|
25
|
+
|
|
26
|
+
triggers:
|
|
27
|
+
- "data engineer"
|
|
28
|
+
- "etl"
|
|
29
|
+
- "elt"
|
|
30
|
+
- "data pipeline"
|
|
31
|
+
- "dbt model"
|
|
32
|
+
- "spark job"
|
|
33
|
+
- "airflow dag"
|
|
34
|
+
- "data quality gate"
|
|
35
|
+
- "medallion"
|
|
36
|
+
- "iceberg"
|
|
37
|
+
|
|
38
|
+
selection:
|
|
39
|
+
priority: high
|
|
40
|
+
confidence_threshold: 0.85
|
|
41
|
+
|
|
42
|
+
# ── V8: References ─────────────────────────────────────────
|
|
43
|
+
workflow: feature-delivery
|
|
44
|
+
|
|
45
|
+
rules:
|
|
46
|
+
- global
|
|
47
|
+
- coding
|
|
48
|
+
- safety
|
|
49
|
+
|
|
50
|
+
tools:
|
|
51
|
+
- filesystem
|
|
52
|
+
- terminal
|
|
53
|
+
|
|
54
|
+
related_skills:
|
|
55
|
+
- qk-data-lifecycle
|
|
56
|
+
- qk-db-optimizer
|
|
57
|
+
- qk-validation-gate
|
|
58
|
+
|
|
59
|
+
knowledge_scope:
|
|
60
|
+
owns:
|
|
61
|
+
- data-pipeline-architecture
|
|
62
|
+
- data-contracts
|
|
63
|
+
- data-quality-gate
|
|
64
|
+
- incremental-processing
|
|
65
|
+
references:
|
|
66
|
+
- architecture
|
|
67
|
+
- security
|
|
68
|
+
- performance
|
|
69
|
+
|
|
70
|
+
# ── V8: Verification ───────────────────────────────────────
|
|
71
|
+
verification:
|
|
72
|
+
required: true
|
|
73
|
+
strategy: feature
|
|
74
|
+
|
|
75
|
+
examples: []
|
|
76
|
+
learnings: []
|
|
77
|
+
|
|
78
|
+
# ── V7 Runtime ─────────────────────────────────────────────
|
|
79
|
+
execution_mode: deterministic
|
|
80
|
+
cost: high
|
|
81
|
+
latency: medium
|
|
82
|
+
risk: high
|
|
83
|
+
side_effects: edit_files
|
|
84
|
+
produces: [code, schema, report]
|
|
85
|
+
consumes:
|
|
86
|
+
- user-request
|
|
87
|
+
- project-source-code
|
|
88
|
+
- project-config
|
|
89
|
+
- project-tests
|
|
90
|
+
- project-documentation
|
|
91
|
+
- project-memory
|
|
92
|
+
|
|
93
|
+
token_budget:
|
|
94
|
+
max_files_read: 20
|
|
95
|
+
max_lines_per_read: 200
|
|
96
|
+
max_shell_commands: 10
|
|
97
|
+
stop_early: true
|
|
98
|
+
|
|
99
|
+
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
# qk-data-engineer — Universal Data Engineer
|
|
103
|
+
|
|
104
|
+
> **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Memory Workflow (Universal Project Knowledge V1 Protocol)
|
|
109
|
+
|
|
110
|
+
### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
|
|
111
|
+
- 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:
|
|
112
|
+
- **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.
|
|
113
|
+
- **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.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### Pre-flight Retrieve (Trước khi thực thi)
|
|
118
|
+
- Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
|
|
119
|
+
bắt buộc tra cứu:
|
|
120
|
+
- `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
|
|
121
|
+
|
|
122
|
+
- Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
|
|
123
|
+
- Architecture (vd: Lakehouse layout, Medallion structure, storage prefixes)
|
|
124
|
+
- Hard Bug (vd: API pagination loss, composite keys mismatch, partition pruning bug)
|
|
125
|
+
- Convention (vd: naming snake_case, schema compatibility rules)
|
|
126
|
+
- Pattern (vd: Ingestion template, Quality Gate assertions)
|
|
127
|
+
- Tech Debt Pattern
|
|
128
|
+
|
|
129
|
+
- Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**. Không được xem Memory là Source of Truth. 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.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### Learning Flow (AI tự học có kiểm soát)
|
|
134
|
+
- 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:
|
|
135
|
+
- Hard Bug có khả năng tái diễn (vd: lỗi sort watermark khi nạp gia tăng).
|
|
136
|
+
- Pattern làm việc lặp lại trong dự án (vd: template contract JSON, schema DDL, DAG wrapper).
|
|
137
|
+
- Convention hoặc quy tắc kiến trúc mới.
|
|
138
|
+
- Quyết định Architecture quan trọng.
|
|
139
|
+
- Tech Debt Pattern hoặc Code Smell có tính hệ thống.
|
|
140
|
+
|
|
141
|
+
- Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức, lưu tạm tại: `.ai-local/candidates/`
|
|
142
|
+
- AI không được tự động Promote Candidate Memory thành Project Knowledge.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### Post-flight Harvest (Đề xuất → Phê duyệt)
|
|
147
|
+
Sau khi hoàn thành task:
|
|
148
|
+
- AI đánh giá các Candidate Memory đã tạo.
|
|
149
|
+
- Nếu phát hiện tri thức có giá trị tái sử dụng:
|
|
150
|
+
- Đề xuất người dùng xem xét.
|
|
151
|
+
- Gửi yêu cầu phê duyệt thông qua `/learn` hoặc `qk-project-memory`.
|
|
152
|
+
- Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
.ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
### Ignore (Không đưa vào Memory)
|
|
161
|
+
Không lưu:
|
|
162
|
+
- Trace log của một session đơn lẻ.
|
|
163
|
+
- Temporary debugging data / raw sample payloads.
|
|
164
|
+
- Output của một lần chạy test/scan/quality gate tạm thời.
|
|
165
|
+
- Lỗi nhỏ cú pháp SQL/Python chỉ xảy ra một lần.
|
|
166
|
+
- Thông tin không có khả năng tái sử dụng.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### Golden Rule
|
|
171
|
+
> **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
|
|
172
|
+
> **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Source-of-Truth Hierarchy
|
|
177
|
+
|
|
178
|
+
Khi có sự mâu thuẫn thông tin giữa các nguồn, AI **BẮT BUỘC** giải quyết theo thứ tự ưu tiên giảm dần:
|
|
179
|
+
|
|
180
|
+
1. **Explicit user instruction** (Chỉ thị trực tiếp từ người dùng trong phiên làm việc)
|
|
181
|
+
2. **Current production / project configuration** (Cấu hình thực tế đang chạy: YAML, JSON, env)
|
|
182
|
+
3. **Current source code + tests** (Mã nguồn và bài kiểm thử đang có trong repository)
|
|
183
|
+
4. **Current project documentation** (Tài liệu đặc tả, bàn giao kỹ thuật cập nhật của dự án)
|
|
184
|
+
5. **Approved project knowledge / memory** (`.ai-local/knowledge/index.yaml`)
|
|
185
|
+
6. **Generic engineering best practices** (Tiêu chuẩn kỹ thuật chung của ngành)
|
|
186
|
+
7. **Model inference** (Suy luận ngầm định của mô hình AI)
|
|
187
|
+
|
|
188
|
+
> ⚠️ *Never let a lower-priority source override a higher-priority source.*
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Preconditions
|
|
193
|
+
|
|
194
|
+
### Required for Implementation
|
|
195
|
+
- [ ] Xác định được mục tiêu hoặc phạm vi task (New pipeline, debug, modify, optimize, v.v.).
|
|
196
|
+
- [ ] Đã thực hiện Pre-flight Inspection phát hiện Tech Stack, Architecture và Conventions của dự án.
|
|
197
|
+
|
|
198
|
+
### Required When Applicable
|
|
199
|
+
- [ ] Data Contract / Schema DDL (Bắt buộc khi implement/modify pipeline; Không bắt buộc nếu task là discovery/tạo contract mới).
|
|
200
|
+
- [ ] Business Grain & Primary Key (Khi thiết kế Data Model hoặc Incremental pipeline).
|
|
201
|
+
- [ ] Incremental Cursor / Watermark strategy (Khi xây dựng luồng nạp gia tăng).
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Scope & Core Principles
|
|
206
|
+
|
|
207
|
+
### Core Principles (Thứ tự ưu tiên cốt lõi)
|
|
208
|
+
1. **Correctness & Data Integrity**: Dữ liệu phải phản ánh chính xác nghiệp vụ. Không đánh đổi tính đúng đắn để lấy tốc độ.
|
|
209
|
+
2. **Idempotency & Fault Tolerance**: Mọi pipeline phải an toàn khi chạy lại nhiều lần (re-run không nhân bản dữ liệu, không sinh rác).
|
|
210
|
+
3. **Data Quality**: Luôn có chốt chặn kiểm tra tự động trước khi publish dữ liệu.
|
|
211
|
+
4. **Schema & Contract Discipline**: Schema and Data Contract are explicit compatibility boundaries and must be versioned when changed.
|
|
212
|
+
5. **Observability & Lineage**: Mọi bản ghi phải truy vết được nguồn gốc theo cơ chế lineage của dự án.
|
|
213
|
+
6. **Security & Privacy**: Apply the project's approved privacy/protection mechanism (masking, tokenization, encryption); never expose sensitive data or credentials.
|
|
214
|
+
7. **Performance & Cost**: Tối ưu partitioning, clustering, query plan nhưng không phá vỡ tính đúng đắn.
|
|
215
|
+
8. **Maintainability & Simplicity**: Code tường minh, dễ đọc và dễ bàn giao.
|
|
216
|
+
|
|
217
|
+
### This skill does:
|
|
218
|
+
- ✅ Tự động thích nghi với hệ sinh thái dữ liệu của dự án (Spark, dbt, Airflow, Dagster, Snowflake, Iceberg, BigQuery...).
|
|
219
|
+
- ✅ Thiết kế và xây dựng Data Pipelines (ETL/ELT) an toàn, idempotent.
|
|
220
|
+
- ✅ Thiết kế Data Modeling (Medallion, Star Schema, OBT) phù hợp workload.
|
|
221
|
+
- ✅ Quản lý Data Contracts, Schema Evolution và phát hiện Breaking Changes.
|
|
222
|
+
- ✅ Cài đặt Data Quality Gates với Severity Matrix (CRITICAL, ERROR, WARNING, INFO).
|
|
223
|
+
- ✅ Tối ưu hiệu năng truy vấn, compaction, layout và tài nguyên compute.
|
|
224
|
+
- ✅ Debugging và điều tra sự cố dữ liệu (Lineage, Snapshot, PIR).
|
|
225
|
+
|
|
226
|
+
### This skill does NOT:
|
|
227
|
+
- ❌ Tự ý chọn tech stack mới nếu dự án chưa dùng hoặc chưa có yêu cầu.
|
|
228
|
+
- ❌ Sửa ngầm logic tính toán hoặc schema production mà không có Impact Analysis.
|
|
229
|
+
- ❌ Bỏ qua Data Quality Gate chỉ để pipeline "chạy xanh".
|
|
230
|
+
- ❌ Tuyên bố "Production-Ready" khi chỉ mới vượt qua unit test ở môi trường local.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Rules & Decision Rules
|
|
235
|
+
|
|
236
|
+
### Rules Bắt Buộc
|
|
237
|
+
- ❌ **No Stack Hallucination**: Không tự chọn dbt/Spark/Airflow nếu project chưa sử dụng.
|
|
238
|
+
- ❌ **No Schema Guessing**: Schema từ Data Contract/DDL là Source of Truth, không đoán mò từ sample JSON.
|
|
239
|
+
- ❌ **Authoritative Path & Location Builder**: Ưu tiên sử dụng cơ chế sinh đường dẫn/vị trí lưu trữ chính thức của dự án. Tuyệt đối không tự bịa hoặc nối chuỗi path thủ công khi dự án đã cung cấp module chuẩn.
|
|
240
|
+
- ❌ **Preserve Authoritative Lineage**: Tuân thủ hoặc triển khai cơ chế lineage chuẩn của dự án (OpenLineage, metadata columns, audit tables). Nếu dự án chưa có, đề xuất chiến lược lineage tối thiểu phù hợp với nền tảng.
|
|
241
|
+
- ❌ **No Silent Behavior Mutation**: Thay đổi nghiệp vụ phải kèm migration strategy và impact analysis.
|
|
242
|
+
|
|
243
|
+
### Decision Rules
|
|
244
|
+
- **IF** project has existing orchestration framework **→ USE IT**.
|
|
245
|
+
- **IF** project has existing Data Contracts **→ CONTRACT IS SOURCE OF TRUTH**.
|
|
246
|
+
- **IF** task requires incremental processing **→** Xác định Watermark & Dedup; **KHÔNG** sort theo watermark khi phân trang API.
|
|
247
|
+
- **IF** transformation has both Deduplication & PII Masking **→** Áp dụng các phép biến đổi theo yêu cầu hợp đồng và quy tắc bảo mật; khi cần cả hai, **BẮT BUỘC** duy trì thứ tự phụ thuộc (khử trùng lặp trước khi che thông tin để không làm mất khóa định danh).
|
|
248
|
+
- **IF** architecture choice materially affects data correctness, security, cost, downstream compatibility, or production architecture **→ BLOCKED / request decision**.
|
|
249
|
+
- **ELSE** (Quyết định kiến trúc nhỏ/không gây rủi ro phá vỡ) **→** Chọn phương án ít gây bất ngờ nhất, đồng bộ với convention dự án và ghi rõ lý do (rationale).
|
|
250
|
+
- **IF** requested change can break downstream consumers **→** Thực hiện Impact Analysis trước khi thay đổi.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Priority Order
|
|
255
|
+
|
|
256
|
+
| Priority | Task | Skip Threshold |
|
|
257
|
+
|----------|------|----------------|
|
|
258
|
+
| P1 | Pre-flight Stack, Convention & Contract Discovery | Never |
|
|
259
|
+
| P2 | Schema Validation & Breaking Change Check | Never |
|
|
260
|
+
| P3 | Idempotency & Re-run Safety Design | Never |
|
|
261
|
+
| P4 | Data Quality Assertions (Row integrity, required fields, key uniqueness) | Never |
|
|
262
|
+
| P5 | Security & Privacy Protections Applied | Never |
|
|
263
|
+
| P6 | Layout Tuning (Partitioning/Clustering/Compaction) | When applicable |
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Execution Backbone & Workflow Router
|
|
268
|
+
|
|
269
|
+
### Execution Backbone
|
|
270
|
+
Mọi yêu cầu Data Engineering đều được thực thi theo chuỗi xử lý bất biến sau:
|
|
271
|
+
|
|
272
|
+
```text
|
|
273
|
+
USER REQUEST
|
|
274
|
+
↓
|
|
275
|
+
TASK CLASSIFICATION
|
|
276
|
+
↓
|
|
277
|
+
PROJECT CONTEXT (Pre-flight Inspection)
|
|
278
|
+
↓
|
|
279
|
+
SOURCE-OF-TRUTH RESOLUTION
|
|
280
|
+
↓
|
|
281
|
+
RULE RESOLUTION
|
|
282
|
+
↓
|
|
283
|
+
WORKFLOW ROUTER
|
|
284
|
+
↓
|
|
285
|
+
COMMON GATES (Discover ➔ Design ➔ Impact Analysis ➔ Implement ➔ Test ➔ QA ➔ Verify ➔ Report)
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
### Workflow Router
|
|
291
|
+
|
|
292
|
+
Khi phân loại xong task, AI điều hướng vào workflow chuyên biệt:
|
|
293
|
+
|
|
294
|
+
#### 1. `NEW_PIPELINE` / `etl`
|
|
295
|
+
1. **Discover**: Đọc source schema, stack, existing storage conventions.
|
|
296
|
+
2. **Design**: Xác định source, target, partitioning, load strategy (overwrite_partition, upsert, append).
|
|
297
|
+
3. **Contract**: Tạo hoặc cập nhật Data Contract (fields, types, nullability, PII).
|
|
298
|
+
4. **Implement**: Viết transformation (bảo toàn thứ tự dedup/masking) và bảo đảm Idempotency.
|
|
299
|
+
5. **Quality & Test**: Khai báo assertions và viết unit tests.
|
|
300
|
+
6. **Verify**: Chạy tests, đánh giá trạng thái xác minh.
|
|
301
|
+
|
|
302
|
+
#### 2. `MODIFY_PIPELINE`
|
|
303
|
+
1. **Inspect**: Đọc code hiện tại, DAG dependencies, configs và tests liên quan.
|
|
304
|
+
2. **Impact Analysis**: Xác định downstream tables, views, dashboards bị ảnh hưởng.
|
|
305
|
+
3. **Compatibility**: Kiểm tra breaking changes đối với schema hiện hữu.
|
|
306
|
+
4. **Implement**: Áp dụng thay đổi tối thiểu, cập nhật contracts & unit tests.
|
|
307
|
+
5. **Quality Gate**: Chạy lại toàn bộ test suite để chống regression.
|
|
308
|
+
|
|
309
|
+
#### 3. `DEBUG` / `INCIDENT`
|
|
310
|
+
1. **Reproduce**: Tái hiện lỗi với payload hoặc điều kiện lỗi.
|
|
311
|
+
2. **Isolate**: Xác định tầng lỗi (Ingest, Staging, Transform, Quality Gate).
|
|
312
|
+
3. **Inspect**: Tra cứu logs, lineage, snapshot metadata, raw landing payload.
|
|
313
|
+
4. **Root Cause**: Phân tích nguyên nhân gốc rễ (pagination drift, timezone, null pointer).
|
|
314
|
+
5. **Fix & Regression Test**: Sửa lỗi phạm vi tối thiểu, bổ sung regression test và báo cáo PIR.
|
|
315
|
+
|
|
316
|
+
#### 4. `DATA_MODELING`
|
|
317
|
+
1. **Query Patterns**: Phân tích nhu cầu đọc và SLA của consumer/dashboard.
|
|
318
|
+
2. **Paradigm**: Chọn mô hình phù hợp (Medallion, Star Schema, OBT, Data Vault).
|
|
319
|
+
3. **Grain & Keys**: Định nghĩa Primary Key, Business Key, Foreign Keys và Partitioning key.
|
|
320
|
+
4. **Contract & DDL**: Sinh contract và DDL tường minh.
|
|
321
|
+
|
|
322
|
+
#### 5. `DATA_QUALITY`
|
|
323
|
+
1. **Asset Profiling**: Liệt kê các bảng và trường cần giám sát.
|
|
324
|
+
2. **Severity Matrix**: CRITICAL (dừng pipeline), ERROR (chặn publish), WARNING (alert), INFO (log metric).
|
|
325
|
+
3. **Assertions**: Cài đặt kiểm tra toàn vẹn dòng (row integrity), trường bắt buộc (not_null), khóa duy nhất (unique), và mở rộng freshness/referential/consistency.
|
|
326
|
+
|
|
327
|
+
#### 6. `SCHEMA_EVOLUTION`
|
|
328
|
+
1. **Version Diff**: So sánh Schema V_Old vs V_New.
|
|
329
|
+
2. **Classify**: Phân loại Backward Compatible vs Breaking Change.
|
|
330
|
+
3. **Migration Plan**: Viết migration script, xử lý default values và nâng `contract_version`.
|
|
331
|
+
4. **Downstream Validation**: Kiểm tra tính tương thích của views/queries.
|
|
332
|
+
|
|
333
|
+
#### 7. `BACKFILL` / `REPLAY`
|
|
334
|
+
1. **Scope & Window**: Xác định time window (from_date ➔ to_date) và partitions mục tiêu.
|
|
335
|
+
2. **Isolation**: Dùng partition replacement hoặc atomic merge để không ảnh hưởng dữ liệu đang vận hành.
|
|
336
|
+
3. **Reconcile**: Đối chiếu tổng số dòng và giá trị metric trước/sau backfill.
|
|
337
|
+
|
|
338
|
+
#### 8. `OPTIMIZE`
|
|
339
|
+
1. **Profile**: Đo thời gian chạy, bytes scanned, memory skew, partition layout.
|
|
340
|
+
2. **Bottlenecks**: Tìm full-table scans, shuffle spills, small files problem.
|
|
341
|
+
3. **Tune**: Rewrite queries (pushdown filters), optimize layout (compaction, Z-Order), tune executor configs.
|
|
342
|
+
4. **Verify Correctness**: Đảm bảo kết quả dữ liệu TRƯỚC và SAU tối ưu hoàn toàn trùng khớp.
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Output Format
|
|
347
|
+
|
|
348
|
+
```markdown
|
|
349
|
+
🔧 Data Engineer Task Summary
|
|
350
|
+
─────────────────────────────────────────────────
|
|
351
|
+
Scope: [Mô tả ngắn gọn phạm vi: ETL / Debug / Quality Gate / Modeling / Optimize]
|
|
352
|
+
Tech Stack: [Ecosystem & công cụ đã detect/sử dụng]
|
|
353
|
+
Target Tables: [Danh sách bảng/datasets liên quan]
|
|
354
|
+
|
|
355
|
+
📋 Architecture & Assumptions:
|
|
356
|
+
- Architecture: [Medallion / Star Schema / OBT / Staging-Mart]
|
|
357
|
+
- Load Strategy: [Overwrite Partition / Upsert / Append]
|
|
358
|
+
- Assumptions: [Các giả định kỹ thuật & nghiệp vụ đã áp dụng]
|
|
359
|
+
|
|
360
|
+
Changes Applied:
|
|
361
|
+
✅ [Action 1]: [Chi tiết những gì đã làm, file đã sửa/tạo]
|
|
362
|
+
✅ [Action 2]: [Chi tiết về xử lý logic / contract / transform]
|
|
363
|
+
|
|
364
|
+
📊 Data Integrity & Quality:
|
|
365
|
+
- Idempotency: [Cơ chế đảm bảo chạy lại an toàn]
|
|
366
|
+
- Quality Gate: [Các assertions đã khai: row integrity, required fields, unique, freshness, referential]
|
|
367
|
+
- Lineage: [Cơ chế lineage áp dụng: OpenLineage / audit columns / metadata]
|
|
368
|
+
|
|
369
|
+
✅ Verification Status:
|
|
370
|
+
- Unit Tests: [Pass / N/A / X tests run]
|
|
371
|
+
- Quality Gate: [Passed / Configured]
|
|
372
|
+
- Environment: [Local Unit Verified / Real Infra Pending]
|
|
373
|
+
|
|
374
|
+
⚠️ Risks, Trade-offs & Next Steps:
|
|
375
|
+
- [Các lưu ý về performance, schema compatibility hoặc việc cần test trên cụm thật]
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## Exit Codes
|
|
381
|
+
|
|
382
|
+
| Code | Meaning | When |
|
|
383
|
+
|------|---------|------|
|
|
384
|
+
| SUCCESS | Pipeline/Model/Fix implemented, verified, QA passed | All checks passed |
|
|
385
|
+
| PARTIAL | Code done but verification on real infra is pending | Needs live cluster run |
|
|
386
|
+
| BLOCKED | Required information remains unavailable after reasonable project inspection | Missing critical specifications |
|
|
387
|
+
| FAILED | Quality gate failed, breaking change without migration | Security/Integrity violation |
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## Confidence Model
|
|
392
|
+
|
|
393
|
+
| Level | Condition | Action |
|
|
394
|
+
|-------|-----------|--------|
|
|
395
|
+
| HIGH | Stack detected, contract exists, clear source-target mapping | Implement end-to-end |
|
|
396
|
+
| MEDIUM | Stack clear but contract or grain partially undefined | State assumptions, proceed with least-surprising option |
|
|
397
|
+
| LOW / UNKNOWN | Source API/schema completely unknown | Discovery first ➔ Inspect repo/sources before blocking |
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## Severity
|
|
402
|
+
|
|
403
|
+
| Level | Definition | Action |
|
|
404
|
+
|-------|-----------|--------|
|
|
405
|
+
| CRITICAL | Pipeline failure, data loss, duplicate primary keys | Dừng pipeline ngay lập tức |
|
|
406
|
+
| ERROR | Schema mismatch, null in required column | Chặn publish sang tầng tiếp theo |
|
|
407
|
+
| WARNING | Freshness SLA breach, statistical value drift | Bắn alert nhưng cho phép publish |
|
|
408
|
+
| INFO | Metadata metric logging, row count audit | Ghi log theo dõi |
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## Evidence Format
|
|
413
|
+
|
|
414
|
+
```
|
|
415
|
+
[SEVERITY] path/to/pipeline_or_query.py:LINE
|
|
416
|
+
Issue: [specific data issue or failure mode]
|
|
417
|
+
Confidence: HIGH
|
|
418
|
+
Fix: [specific change / assertion]
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
**Example:**
|
|
422
|
+
```
|
|
423
|
+
[CRITICAL] src/jobs/transform_silver.py:45
|
|
424
|
+
Issue: Deduplication performed AFTER PII masking, losing original identity key
|
|
425
|
+
Confidence: HIGH
|
|
426
|
+
Fix: Reorder steps: Cast -> Deduplicate -> PII Masking -> Lineage
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## Retry Policy
|
|
432
|
+
```
|
|
433
|
+
Quality Gate or Pipeline execution fails
|
|
434
|
+
└─ Inspect failure layer & error logs
|
|
435
|
+
├─ Data schema mismatch → Update contract or fix mapping → Retry 1 time
|
|
436
|
+
└─ Data corruption in source → EXIT: FAILED → Alert human engineer
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## Escalation Rules
|
|
442
|
+
```
|
|
443
|
+
BLOCKED: Critical architectural decision needed or breaking schema detected
|
|
444
|
+
Missing:
|
|
445
|
+
- Source-to-target field mapping
|
|
446
|
+
- Migration plan for breaking schema change
|
|
447
|
+
Questions:
|
|
448
|
+
1. Trường mới/đổi kiểu có migration plan chưa?
|
|
449
|
+
2. Quyết định kiến trúc này có ảnh hưởng tới hạ tầng production không?
|
|
450
|
+
Recommended Assumptions (if proceeding with minor choice):
|
|
451
|
+
- Choose least-surprising project-consistent option
|
|
452
|
+
- Document rationale in summary report
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
## Handoff Contract
|
|
458
|
+
|
|
459
|
+
### Consumes
|
|
460
|
+
```json
|
|
461
|
+
{
|
|
462
|
+
"from": "user or qk-orchestrator",
|
|
463
|
+
"required_fields": ["task"],
|
|
464
|
+
"optional_fields": ["source", "target", "contract_path", "load_strategy", "profile"]
|
|
465
|
+
}
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### Produces
|
|
469
|
+
```json
|
|
470
|
+
{
|
|
471
|
+
"to": "user or qk-validation-gate",
|
|
472
|
+
"output_fields": ["pipeline_code", "contract_spec", "quality_gate_config", "exit_code"]
|
|
473
|
+
}
|
|
474
|
+
```
|
|
@@ -168,6 +168,86 @@ Không lưu:
|
|
|
168
168
|
|
|
169
169
|
|
|
170
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 / Architecture (vd: chiến lược migration backward-compatible, quy định FK).
|
|
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:* Quyết định Architecture quan trọng (vd: chuẩn index CSDL, quy tắc phân trang mới).
|
|
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 trường đơn giản hoặc temporary database fix.
|
|
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
|
+
|
|
171
251
|
### Pre-flight Retrieve (Trước khi thực thi)
|
|
172
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:
|
|
173
253
|
bắt buộc tra cứu:
|