ai-developer-skill-os 9.3.0 → 10.1.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 +60 -40
- package/.agents/DEV_PROFILE.md +36 -2
- package/.agents/registry/graph.json +95 -342
- package/.agents/registry/index.yaml +61 -237
- package/.agents/rules/coding.md +30 -12
- package/.agents/rules/command-safety.md +19 -8
- package/.agents/rules/global.md +234 -28
- package/.agents/rules/prompt-compiler.md +170 -0
- package/.agents/skills/qk-api-data-discovery/SKILL.md +470 -0
- package/.agents/skills/qk-backend-data/SKILL.md +190 -0
- package/.agents/skills/qk-bug-resolution/SKILL.md +176 -248
- package/.agents/skills/qk-code-cleaner/SKILL.md +250 -0
- package/.agents/skills/qk-code-review/SKILL.md +126 -247
- package/.agents/skills/qk-devops-release/SKILL.md +145 -0
- package/.agents/skills/qk-feature-delivery/SKILL.md +179 -247
- package/.agents/skills/qk-orchestrator/SKILL.md +100 -151
- package/.agents/skills/qk-product-spec/SKILL.md +113 -0
- package/.agents/skills/qk-prompt-compiler/SKILL.md +321 -0
- package/.agents/skills/qk-ui-engineer/SKILL.md +137 -0
- package/.agents/workflows/feature-delivery.yml +1 -1
- package/.agents/workflows/production-release.yml +1 -1
- package/.agents/workflows/spec-driven-development.yml +109 -87
- package/CHANGELOG.md +54 -0
- package/README.md +125 -184
- package/bin/install.js +337 -329
- package/package.json +2 -2
- package/.agents/README.md +0 -90
- package/.agents/docs/CHI_TIET_SKILLS.md +0 -126
- package/.agents/docs/HUONG_DAN_SU_DUNG.md +0 -120
- package/.agents/docs/MIGRATION-CLEANUP-V8.1.3.md +0 -36
- package/.agents/docs/MIGRATION-STATUS.md +0 -35
- package/.agents/docs/MIGRATION-V8.md +0 -10
- package/.agents/docs/ROADMAP-V8.2.md +0 -78
- package/.agents/docs/V8-CERTIFICATION.md +0 -27
- package/.agents/skills/qk-access-policy/SKILL.md +0 -206
- package/.agents/skills/qk-access-policy/capability.yaml +0 -23
- package/.agents/skills/qk-access-policy/evals/scorecard.yaml +0 -36
- package/.agents/skills/qk-agent-observability/SKILL.md +0 -108
- package/.agents/skills/qk-agent-observability/capability.yaml +0 -29
- package/.agents/skills/qk-agent-observability/evals/scorecard.yaml +0 -29
- package/.agents/skills/qk-agent-observability/references/scorecard.yaml +0 -80
- package/.agents/skills/qk-ai-builder/SKILL.md +0 -254
- package/.agents/skills/qk-ai-builder/capability.yaml +0 -23
- package/.agents/skills/qk-ai-builder/evals/scorecard.yaml +0 -30
- package/.agents/skills/qk-api-consumer/SKILL.md +0 -256
- package/.agents/skills/qk-api-consumer/capability.yaml +0 -21
- package/.agents/skills/qk-api-consumer/evals/scorecard.yaml +0 -29
- package/.agents/skills/qk-api-lifecycle/SKILL.md +0 -251
- package/.agents/skills/qk-api-lifecycle/capability.yaml +0 -23
- package/.agents/skills/qk-api-lifecycle/evals/scorecard.yaml +0 -29
- package/.agents/skills/qk-bug-resolution/capability.yaml +0 -25
- package/.agents/skills/qk-code-review/capability.yaml +0 -23
- package/.agents/skills/qk-context-loader/SKILL.md +0 -198
- package/.agents/skills/qk-context-loader/capability.yaml +0 -23
- package/.agents/skills/qk-context-loader/evals/scorecard.yaml +0 -28
- package/.agents/skills/qk-data-engineer/SKILL.md +0 -253
- package/.agents/skills/qk-data-lifecycle/SKILL.md +0 -197
- package/.agents/skills/qk-data-lifecycle/capability.yaml +0 -23
- package/.agents/skills/qk-data-lifecycle/evals/scorecard.yaml +0 -29
- package/.agents/skills/qk-db-optimizer/SKILL.md +0 -210
- package/.agents/skills/qk-db-optimizer/capability.yaml +0 -22
- package/.agents/skills/qk-db-optimizer/evals/scorecard.yaml +0 -28
- package/.agents/skills/qk-design-system-engineering/SKILL.md +0 -193
- package/.agents/skills/qk-design-system-engineering/capability.yaml +0 -25
- package/.agents/skills/qk-design-system-engineering/evals/scorecard.yaml +0 -27
- package/.agents/skills/qk-devops-platform/SKILL.md +0 -198
- package/.agents/skills/qk-devops-platform/capability.yaml +0 -29
- package/.agents/skills/qk-devops-platform/evals/scorecard.yaml +0 -28
- package/.agents/skills/qk-docs/SKILL.md +0 -193
- package/.agents/skills/qk-docs/capability.yaml +0 -23
- package/.agents/skills/qk-docs/evals/scorecard.yaml +0 -27
- package/.agents/skills/qk-engineering-standard/SKILL.md +0 -89
- package/.agents/skills/qk-engineering-standard/capability.yaml +0 -23
- package/.agents/skills/qk-engineering-standard/evals/scorecard.yaml +0 -28
- package/.agents/skills/qk-engineering-standard/references/anti-patterns.md +0 -121
- package/.agents/skills/qk-engineering-standard/rules/backend.md +0 -122
- package/.agents/skills/qk-engineering-standard/rules/database.md +0 -3
- package/.agents/skills/qk-engineering-standard/rules/frontend.md +0 -152
- package/.agents/skills/qk-engineering-standard/rules/security.md +0 -3
- package/.agents/skills/qk-engineering-standard/rules/testing.md +0 -3
- package/.agents/skills/qk-fe-api-integration/SKILL.md +0 -704
- package/.agents/skills/qk-fe-api-integration/capability.yaml +0 -21
- package/.agents/skills/qk-fe-api-integration/evals/scorecard.yaml +0 -29
- package/.agents/skills/qk-feature-delivery/capability.yaml +0 -24
- package/.agents/skills/qk-frontend-architecture/SKILL.md +0 -127
- package/.agents/skills/qk-frontend-architecture/capability.yaml +0 -28
- package/.agents/skills/qk-frontend-architecture/evals/scorecard.yaml +0 -28
- package/.agents/skills/qk-help/SKILL.md +0 -107
- package/.agents/skills/qk-help/capability.yaml +0 -20
- package/.agents/skills/qk-help/evals/scorecard.yaml +0 -13
- package/.agents/skills/qk-orchestrator/capability.yaml +0 -22
- package/.agents/skills/qk-product-specification/SKILL.md +0 -187
- package/.agents/skills/qk-product-specification/capability.yaml +0 -27
- package/.agents/skills/qk-product-specification/evals/scorecard.yaml +0 -27
- package/.agents/skills/qk-production-release/SKILL.md +0 -188
- package/.agents/skills/qk-production-release/capability.yaml +0 -27
- package/.agents/skills/qk-production-release/evals/scorecard.yaml +0 -28
- package/.agents/skills/qk-project-audit/SKILL.md +0 -174
- package/.agents/skills/qk-project-bootstrap/SKILL.md +0 -372
- package/.agents/skills/qk-project-bootstrap/capability.yaml +0 -23
- package/.agents/skills/qk-project-bootstrap/evals/scorecard.yaml +0 -28
- package/.agents/skills/qk-project-health/SKILL.md +0 -202
- package/.agents/skills/qk-project-health/capability.yaml +0 -23
- package/.agents/skills/qk-project-health/evals/scorecard.yaml +0 -27
- package/.agents/skills/qk-project-memory/SKILL.md +0 -303
- package/.agents/skills/qk-project-memory/capability.yaml +0 -23
- package/.agents/skills/qk-project-memory/evals/scorecard.yaml +0 -27
- package/.agents/skills/qk-refactor/SKILL.md +0 -243
- package/.agents/skills/qk-refactor/capability.yaml +0 -26
- package/.agents/skills/qk-refactor/evals/scorecard.yaml +0 -27
- package/.agents/skills/qk-security-audit/SKILL.md +0 -280
- package/.agents/skills/qk-security-audit/capability.yaml +0 -29
- package/.agents/skills/qk-security-audit/evals/scorecard.yaml +0 -27
- package/.agents/skills/qk-system-evolution/SKILL.md +0 -625
- package/.agents/skills/qk-system-evolution/capability.yaml +0 -24
- package/.agents/skills/qk-system-evolution/evals/scorecard.yaml +0 -26
- package/.agents/skills/qk-test-engineering/SKILL.md +0 -215
- package/.agents/skills/qk-test-engineering/capability.yaml +0 -28
- package/.agents/skills/qk-test-engineering/evals/scorecard.yaml +0 -26
- package/.agents/skills/qk-ui-audit/SKILL.md +0 -175
- package/.agents/skills/qk-ui-audit/capability.yaml +0 -23
- package/.agents/skills/qk-ui-audit/evals/scorecard.yaml +0 -26
- package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
- package/.agents/skills/qk-ui-builder/SKILL.md +0 -521
- package/.agents/skills/qk-ui-builder/capability.yaml +0 -29
- package/.agents/skills/qk-ui-builder/evals/scorecard.yaml +0 -26
- package/.agents/skills/qk-ui-builder/references/anti-patterns.md +0 -295
- package/.agents/skills/qk-ui-builder/references/color.md +0 -115
- package/.agents/skills/qk-ui-builder/references/component-cookbook.md +0 -458
- package/.agents/skills/qk-ui-builder/references/copy.md +0 -250
- package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +0 -115
- package/.agents/skills/qk-ui-builder/references/layout-and-space.md +0 -111
- package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +0 -48
- package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +0 -50
- package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +0 -51
- package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +0 -49
- package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +0 -44
- package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +0 -50
- package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +0 -51
- package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +0 -50
- package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +0 -50
- package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +0 -49
- package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +0 -49
- package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +0 -49
- package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +0 -48
- package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +0 -48
- package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +0 -51
- package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +0 -48
- package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +0 -48
- package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +0 -50
- package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +0 -48
- package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +0 -45
- package/.agents/skills/qk-ui-builder/references/macrostructures.md +0 -38
- package/.agents/skills/qk-ui-builder/references/motion.md +0 -95
- package/.agents/skills/qk-ui-builder/references/responsive.md +0 -115
- package/.agents/skills/qk-ui-builder/references/slop-test.md +0 -135
- package/.agents/skills/qk-ui-builder/references/structure.md +0 -280
- package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +0 -53
- package/.agents/skills/qk-ui-builder/references/themes/carnival.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/editorial.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/garden.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/hum.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/lumen.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/midnight.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/playful.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/specimen.md +0 -52
- package/.agents/skills/qk-ui-builder/references/themes/terminal.md +0 -52
- package/.agents/skills/qk-ui-builder/references/typography.md +0 -129
- package/.agents/skills/qk-ui-system-builder/SKILL.md +0 -183
- package/.agents/skills/qk-ui-system-builder/capability.yaml +0 -25
- package/.agents/skills/qk-ui-system-builder/evals/scorecard.yaml +0 -26
- package/.agents/skills/qk-upgrade/SKILL.md +0 -301
- package/.agents/skills/qk-upgrade/capability.yaml +0 -24
- package/.agents/skills/qk-upgrade/evals/scorecard.yaml +0 -26
- package/.agents/skills/qk-validation-gate/SKILL.md +0 -88
- package/.agents/skills/qk-validation-gate/capability.yaml +0 -23
- package/.agents/skills/qk-validation-gate/evals/scorecard.yaml +0 -26
- package/.agents/skills/qk-web-quality-gate/SKILL.md +0 -197
- package/.agents/skills/qk-web-quality-gate/capability.yaml +0 -24
- package/.agents/skills/qk-web-quality-gate/evals/scorecard.yaml +0 -26
- package/.agents/workflows/research.yml +0 -75
- package/.agents/workflows/skill-evolution.yml +0 -97
- package/tooling/fix-refactor.js +0 -8
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qk-devops-release
|
|
3
|
+
version: 10.1.0
|
|
4
|
+
status: stable
|
|
5
|
+
subtitle: "DevOps, CI/CD & Deploy"
|
|
6
|
+
description: "Vận hành Nền tảng, Tự động hóa CI/CD, Cổng kiểm soát phát hành 8-Gate Production, Đồng bộ tài liệu kỹ thuật, Bộ nhớ dự án (.ai-local/) và Kỹ nghệ AI/RAG. Dùng khi: ci/cd, deployment, pipeline, docker, dockerfile, devops, github actions, deploy production, release checklist, go live, rollout, viết docs, readme, swagger, lưu context, project memory, /learn, build ai, rag pipeline, prompt engineering — TUYỆT ĐỐI KHÔNG dùng khi debug lỗi logic ứng dụng (dùng qk-bug-resolution)."
|
|
7
|
+
tools:
|
|
8
|
+
- filesystem
|
|
9
|
+
- terminal
|
|
10
|
+
rules:
|
|
11
|
+
- global
|
|
12
|
+
- platform
|
|
13
|
+
- security
|
|
14
|
+
- safety
|
|
15
|
+
workflow: production-release
|
|
16
|
+
triggers:
|
|
17
|
+
- "ci/cd"
|
|
18
|
+
- "deployment"
|
|
19
|
+
- "pipeline"
|
|
20
|
+
- "docker"
|
|
21
|
+
- "dockerfile"
|
|
22
|
+
- "devops"
|
|
23
|
+
- "github actions"
|
|
24
|
+
- "deploy production"
|
|
25
|
+
- "release checklist"
|
|
26
|
+
- "go live"
|
|
27
|
+
- "rollout"
|
|
28
|
+
- "viết docs"
|
|
29
|
+
- "readme"
|
|
30
|
+
- "swagger"
|
|
31
|
+
- "lưu context"
|
|
32
|
+
- "project memory"
|
|
33
|
+
- "/learn"
|
|
34
|
+
- "build ai"
|
|
35
|
+
- "rag pipeline"
|
|
36
|
+
- "prompt engineering"
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
# qk-devops-release — DevOps, CI/CD & Deploy (Platform, Release Gate & Memory Engine)
|
|
40
|
+
|
|
41
|
+
> **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 1. Nguyên Tắc Cốt Lõi & Luật Chống Over-Engineering
|
|
46
|
+
|
|
47
|
+
> **Core Principle:** Right-size infrastructure. Do not design a Kubernetes cluster for a static site. Automation must be dependable, reproducible, and guarded by strict safety gates.
|
|
48
|
+
> **Release Principle:** PASS is a verified conclusion, never a target. Zero fake green gates.
|
|
49
|
+
|
|
50
|
+
### 🛡️ Anti-Overengineering Rule (KHÔNG PHỨC TẠP HÓA HẠ TẦNG)
|
|
51
|
+
- **Tương xứng quy mô hạ tầng:** Nếu dự án chỉ là web app vừa và nhỏ, Docker Compose hoặc single-stage container là đủ. Tuyệt đối KHÔNG tự ý đề xuất setup Kubernetes, Helm, Istio service mesh phức tạp hóa trừ khi người dùng yêu cầu rõ ràng.
|
|
52
|
+
- **Tài liệu ngắn gọn, thực chiến:** README chỉ cần 3 bước chuẩn (Prerequisites → Setup → Run). Không viết lan man hàng trang lý thuyết không ai đọc.
|
|
53
|
+
|
|
54
|
+
### 🔒 No Unrelated Changes Rule (CẤM SỬA LAN MAN)
|
|
55
|
+
- Chỉ can thiệp vào Dockerfile, CI/CD pipeline, deploy scripts hoặc docs được yêu cầu.
|
|
56
|
+
- **CẤM** nhân tiện sửa code nghiệp vụ của ứng dụng trong cùng một commit hạ tầng.
|
|
57
|
+
- Nếu phát hiện code lỗi trong app: **Chuyển giao quyền** cho `qk-bug-resolution`, không tự ý sửa.
|
|
58
|
+
|
|
59
|
+
### 🛡️ Anti-Fake-Pass Rule (CẤM ÉP PASS ẢO - R-G-14.5)
|
|
60
|
+
- **CẤM** thêm cờ bỏ qua lỗi (`|| true`, `--no-verify`, `continue-on-error: true`) vào CI pipeline chỉ để ép build xanh.
|
|
61
|
+
- **CẤM** hardcode secret hoặc credentials vào Dockerfile/Compose chỉ để test cho nhanh.
|
|
62
|
+
- **CẤM** tự ý đánh dấu PASS cho 8 Gates nếu thiếu bằng chứng thực tế.
|
|
63
|
+
|
|
64
|
+
### ⚖️ Verify Before Claim Rule (XÁC MINH TRƯỚC KHI BÁO CÁO - R-G-14.7)
|
|
65
|
+
- **Cấm tuyên bố 8 Cổng Đạt nếu chưa chạy lệnh:** Phải chạy test suite và build trước khi tick xanh các cổng Gate 1 và Gate 2.
|
|
66
|
+
- **Báo cáo trung thực:** Nếu không có Docker daemon chạy cục bộ hoặc không có quyền truy cập CI runner, AI phải ghi rõ: `"Trạng thái: NOT VERIFIED — Đã kiểm tra cú pháp Dockerfile/CI tĩnh. Chưa build image thực tế trong môi trường này"`.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 2. Ranh Giới & Phạm Vi Kỹ Thuật (Hard Boundaries)
|
|
71
|
+
|
|
72
|
+
### ✅ Việc skill này BẮT BUỘC làm:
|
|
73
|
+
- **Production-Ready Dockerfile:** Multi-stage build, Non-root user (`USER node/appuser`), layer caching tối ưu, và healthcheck directive.
|
|
74
|
+
- **8-Gate Production Gatekeeper:** Rà soát nghiêm ngặt 8 cổng an toàn trước khi deploy. **Chỉ cần 1 cổng đỏ = CHẶN release ngay lập tức**.
|
|
75
|
+
- **Accurate Documentation (Code-First Truth):** Viết tài liệu khớp 100% với code thực tế đang chạy.
|
|
76
|
+
- **Institutional Memory (`.ai-local/`, `/learn`):** Ghi nhớ các quyết định kiến trúc và bài học fix bug phức tạp vào `.ai-local/knowledge/` (đã gitignore).
|
|
77
|
+
|
|
78
|
+
### ❌ Việc skill này TUYỆT ĐỐI KHÔNG làm (Chuyển giao quyền):
|
|
79
|
+
- Viết API endpoint hay logic truy vấn database ứng dụng → Chuyển sang `qk-backend-data`.
|
|
80
|
+
- Điều tra bug crash logic trong mã nguồn → Chuyển sang `qk-bug-resolution`.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 3. 8 Cổng Kiểm Soát Phát Hành Production (8-Gate Checklist)
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Gate 1: Test Suite Green ── 100% tests pass (Verify bằng lệnh thực tế)
|
|
88
|
+
Gate 2: Security Clean ── 0 lỗ hổng Critical/High, 0 secret leak trong commit
|
|
89
|
+
Gate 3: Safe DB Migrations ── Migration có tính tương thích ngược và có down script
|
|
90
|
+
Gate 4: Environment Variables ── Mọi biến mới đã được khai báo trong .env.example
|
|
91
|
+
Gate 5: Rapid Rollback Plan ── Quy trình rollback được xác định rõ ràng (< 5 phút)
|
|
92
|
+
Gate 6: Smoke Test Plan ── Danh sách 3-5 endpoints then chốt để test ngay sau deploy
|
|
93
|
+
Gate 7: SemVer & Git Tag ── Đã bump version đúng chuẩn Semantic Versioning
|
|
94
|
+
Gate 8: Release Notes Ready ── Bản tóm tắt thay đổi sẵn sàng
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 4. Xử Lý Sự Cố Khi Release Gate Thất Bại (Failure Path)
|
|
100
|
+
|
|
101
|
+
Nếu bất kỳ cổng nào trong 8 cổng không đạt:
|
|
102
|
+
1. **CHẶN RELEASE NGAY:** Không nhắm mắt làm ngơ cho deploy.
|
|
103
|
+
2. **Nêu rõ cổng thất bại:** Báo cáo chi tiết lý do cổng bị chặn (ví dụ: Gate 1 fail do 2 unit test đỏ; Gate 4 fail do biến `STRIPE_SECRET_KEY` chưa có trong `.env.example`).
|
|
104
|
+
3. **Kế hoạch khôi phục khi deploy dở dang:** Kích hoạt rollback ngay lập tức:
|
|
105
|
+
```bash
|
|
106
|
+
git revert <commit_hash>
|
|
107
|
+
# hoặc pull lại container image tag an toàn trước đó
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 5. Thích Ứng Theo Role Kỹ Thuật (Role Adaptation)
|
|
113
|
+
|
|
114
|
+
| Role | Trọng tâm khi chạy DevOps & Release | Hành vi kỹ thuật đặc thù |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| `devops` | Dockerfile, CI/CD pipeline, Kubernetes/Helm, secrets management | Tối ưu image size, caching layers, rollback automation |
|
|
117
|
+
| `ai-engineer` | RAG architecture, vector db, prompt template, evaluation metrics | Chunking strategy, reranking, scorecard eval |
|
|
118
|
+
| `pm` | Release notes, changelog, feature readiness, user impact | Viết release notes tóm tắt giá trị cho người dùng |
|
|
119
|
+
| `fullstack` | Docker-compose cho local dev, đồng bộ env vars, verify smoke test | Cập nhật `.env.example`, kiểm tra build bundle size |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 6. Báo Cáo Nghiệm Thu Chuẩn Xác (Truth-First Report)
|
|
124
|
+
|
|
125
|
+
```markdown
|
|
126
|
+
🚀 DevOps & Release Summary [Role: <role> | Task: <Deploy / CI-CD / Docs>]
|
|
127
|
+
─────────────────────────────────────────────────────────────────────
|
|
128
|
+
Mục tiêu thực hiện: [Cấu hình CI/CD / 8-Gate Release Check / Sync Docs]
|
|
129
|
+
Trạng thái: [SẴN SÀNG RELEASE / BỊ CHẶN (RELEASE BLOCKED) / ĐÃ CẤU HÌNH]
|
|
130
|
+
|
|
131
|
+
Chi tiết kỹ thuật:
|
|
132
|
+
• [Docker] [Dockerfile](file:///<workspace-root>/Dockerfile): Multi-stage, Non-root
|
|
133
|
+
• [CI/CD] [.github/workflows/ci.yml](file:///<workspace-root>/.github/workflows/ci.yml)
|
|
134
|
+
• [Documentation] [README.md](file:///<workspace-root>/README.md): Đồng bộ với code thực tế
|
|
135
|
+
|
|
136
|
+
Tình trạng 8 Cổng An Toàn (Truth-First):
|
|
137
|
+
• Gate 1 (Tests): [Pass 100% (Đã chạy thực tế) / Chưa verify]
|
|
138
|
+
• Gate 2 (Security): [0 Critical / Cần quét]
|
|
139
|
+
• Gate 3 (Migration): [Tương thích ngược / Không có migration]
|
|
140
|
+
• Gate 4 (Env Vars): [Đã cập nhật .env.example]
|
|
141
|
+
• Gate 5 (Rollback): [Sẵn sàng lệnh revert]
|
|
142
|
+
• Gate 6 (Smoke Test): [Đã có 3 endpoints kiểm tra]
|
|
143
|
+
• Gate 7 (SemVer): [Bump vX.Y.Z]
|
|
144
|
+
• Gate 8 (Changelog): [Sẵn sàng Release Notes]
|
|
145
|
+
```
|
|
@@ -1,251 +1,183 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
description: "Phát triển tính năng mới end-to-end:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
- implementation
|
|
16
|
-
|
|
17
|
-
complexity:
|
|
18
|
-
level: high
|
|
19
|
-
criteria:
|
|
20
|
-
files_affected: "5+"
|
|
21
|
-
has_behavior_change: true
|
|
22
|
-
has_external_dependency: true
|
|
23
|
-
has_breaking_change: false
|
|
24
|
-
|
|
2
|
+
name: qk-feature-delivery
|
|
3
|
+
version: 10.1.0
|
|
4
|
+
status: stable
|
|
5
|
+
subtitle: "Build Feature mới"
|
|
6
|
+
description: "Phát triển tính năng mới end-to-end: Thiết lập Contract kiểu dữ liệu, tích hợp gọi API, xử lý trọn vẹn 4 trạng thái UI (Loading/Success/Empty/Error) và tuân thủ YAGNI/SOLID. Dùng khi: add feature, phát triển tính năng mới, tạo mới, build new, thêm chức năng, tích hợp api, fetch data, consume api, bind data, state management — TUYỆT ĐỐI KHÔNG dùng cho việc fix bug (dùng qk-bug-resolution) hoặc dọn dẹp code cũ (dùng qk-code-cleaner)."
|
|
7
|
+
tools:
|
|
8
|
+
- filesystem
|
|
9
|
+
- terminal
|
|
10
|
+
rules:
|
|
11
|
+
- global
|
|
12
|
+
- coding-standards
|
|
13
|
+
- safety
|
|
14
|
+
workflow: feature-delivery
|
|
25
15
|
triggers:
|
|
26
16
|
- "add feature"
|
|
27
|
-
- "
|
|
28
|
-
- "
|
|
29
|
-
- "
|
|
30
|
-
- "tạo mới"
|
|
17
|
+
- "phát triển tính năng mới"
|
|
18
|
+
- "tạo mới tính năng"
|
|
19
|
+
- "build new feature"
|
|
31
20
|
- "thêm chức năng"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
#
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
```
|
|
195
|
-
→ AI phân tích: intersection observer vs scroll event, React Query `useInfiniteQuery`,
|
|
196
|
-
cache invalidation, skeleton vs spinner, bundle impact của thư viện.
|
|
197
|
-
|
|
198
|
-
**role: be**
|
|
199
|
-
```
|
|
200
|
-
Tính năng: API pagination cho /products với cursor-based paging
|
|
201
|
-
Màn hình: GET /api/products — route đã có nhưng chỉ trả toàn bộ
|
|
202
|
-
Done khi: Trả { data, nextCursor, hasMore }, tối đa 20 items/page
|
|
203
|
-
Edge cases: cursor không hợp lệ → 400, không có data → { data: [], hasMore: false }
|
|
204
|
-
Không được: Không đổi response shape của existing fields
|
|
205
|
-
```
|
|
206
|
-
→ AI phân tích: cursor vs offset trade-off, index strategy trên DB,
|
|
207
|
-
validation middleware, backward compatibility của response schema.
|
|
208
|
-
|
|
209
|
-
**role: fullstack**
|
|
210
|
-
```
|
|
211
|
-
Tính năng: Thêm chức năng export danh sách đơn hàng ra CSV
|
|
212
|
-
Màn hình: /orders — có table hiện tại, cần thêm nút Export
|
|
213
|
-
Done khi: Click Export → tải file CSV với đúng cột, chỉ export filtered data
|
|
214
|
-
Edge cases: > 10k rows → stream response, không có data → disable button
|
|
215
|
-
Không được: Không thêm dependency mới nếu native API đủ dùng
|
|
216
|
-
```
|
|
217
|
-
→ AI phân tích: FE trigger + progress UX, BE streaming response vs buffer,
|
|
218
|
-
type-safe contract giữa FE-BE, memory safety khi dataset lớn.
|
|
219
|
-
|
|
220
|
-
**role: data**
|
|
221
|
-
```
|
|
222
|
-
Tính năng: Pipeline load daily sales data từ PostgreSQL → BigQuery
|
|
223
|
-
Màn hình: DAG mới trong Airflow — incremental load
|
|
224
|
-
Done khi: Chạy hàng ngày 2AM, chỉ load data của ngày hôm trước, idempotent
|
|
225
|
-
Edge cases: Re-run phải cho kết quả giống nhau, source schema thay đổi → alert
|
|
226
|
-
Không được: Không truncate table, chỉ upsert
|
|
227
|
-
```
|
|
228
|
-
→ AI phân tích: watermark strategy, partition pruning, schema evolution handling,
|
|
229
|
-
idempotency key design, data quality assertion trước khi load.
|
|
230
|
-
|
|
231
|
-
**role: ai-engineer**
|
|
232
|
-
```
|
|
233
|
-
Tính năng: RAG pipeline trả lời câu hỏi từ tài liệu nội bộ
|
|
234
|
-
Màn hình: Chat UI mới — /chat route
|
|
235
|
-
Done khi: User hỏi → AI trả lời có citation từ đúng document
|
|
236
|
-
Edge cases: Câu hỏi ngoài scope → "Tôi không tìm thấy thông tin liên quan"
|
|
237
|
-
Không được: Không hallucinate khi không có context
|
|
238
|
-
```
|
|
239
|
-
→ AI phân tích: chunking strategy, embedding model choice, retrieval (BM25 vs dense),
|
|
240
|
-
reranking, context stuffing vs summarization, eval metrics (faithfulness, relevance).
|
|
241
|
-
|
|
242
|
-
**role: devops**
|
|
243
|
-
```
|
|
244
|
-
Tính năng: CI pipeline tự động chạy test + deploy lên staging khi merge PR
|
|
245
|
-
Màn hình: .github/workflows/ — chưa có file nào
|
|
246
|
-
Done khi: PR merge → test pass → deploy staging → notify Slack
|
|
247
|
-
Edge cases: Test fail → stop pipeline, notify người tạo PR
|
|
248
|
-
Không được: Không auto-deploy production
|
|
249
|
-
```
|
|
250
|
-
→ AI phân tích: workflow triggers, secrets management, caching strategy,
|
|
251
|
-
environment isolation, rollback mechanism, notification integration.
|
|
21
|
+
- "tích hợp api"
|
|
22
|
+
- "consume api"
|
|
23
|
+
- "bind data"
|
|
24
|
+
- "state management"
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# qk-feature-delivery — Build Feature mới (End-to-End Delivery Engine)
|
|
28
|
+
|
|
29
|
+
> **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 1. Nguyên Tắc Cốt Lõi & Luật Chống Over-Engineering
|
|
34
|
+
|
|
35
|
+
> **Core Principle:** YAGNI (You Aren't Gonna Need It). Build the simplest, cleanest solution that fully satisfies today's requirement. Do not write tomorrow's abstractions today.
|
|
36
|
+
> **Verification Principle:** PASS is evidence, not an objective. Never claim pass without concrete execution proof.
|
|
37
|
+
|
|
38
|
+
### 🛡️ Anti-Overengineering Rule (CẤM VẼ VOI)
|
|
39
|
+
- **Không tạo kiến trúc cồng kềnh cho tính năng đơn giản:** Nếu một tính năng chỉ cần 1 endpoint và 1 component, TUYỆT ĐỐI KHÔNG tạo ra cả một hệ thống 5 tầng (không Factory, không Adapter, không 3 lớp Repository trung gian) nếu dự án chưa yêu cầu.
|
|
40
|
+
- **Tận dụng tối đa code có sẵn:** Tái sử dụng các hooks, UI components, và utilities đang chạy tốt trong repo. Tránh viết lại những gì đã tồn tại.
|
|
41
|
+
|
|
42
|
+
### 🔒 No Unrelated Changes Rule (CẤM SỬA LAN MAN)
|
|
43
|
+
Chỉ sửa các file, dependencies, cấu hình và code paths thực sự cần thiết trực tiếp cho tính năng được yêu cầu:
|
|
44
|
+
- **CẤM** reformat hoặc format lại các file không liên quan.
|
|
45
|
+
- **CẤM** đổi tên biến, hàm, hoặc file ngoài phạm vi tính năng.
|
|
46
|
+
- **CẤM** tự tiện nâng cấp thư viện hoặc sửa build script lân cận.
|
|
47
|
+
- **CẤM** "tiện tay" refactor hoặc clean up code xung quanh nếu người dùng không yêu cầu.
|
|
48
|
+
- Nếu phát hiện vấn đề hoặc code smell ngoài phạm vi: **Chỉ ghi nhận vào báo cáo tổng kết**, tuyệt đối không tự ý chạm vào.
|
|
49
|
+
|
|
50
|
+
### ⚖️ Verify Before Claim Rule (XÁC MINH TRƯỚC KHI BÁO CÁO)
|
|
51
|
+
- **Kiểm tra build và types thật:** Phải chạy `tsc --noEmit`, linter, hoặc build check trước khi tuyên bố tính năng hoàn thành.
|
|
52
|
+
- **Phân định rõ bằng chứng (Evidence-Based Status):**
|
|
53
|
+
- `PASS`: Đã chạy lệnh kiểm tra thực tế và kết quả đạt yêu cầu.
|
|
54
|
+
- `FAIL`: Đã chạy và phát hiện lỗi.
|
|
55
|
+
- `BLOCKED`: Không thể chạy do thiếu database/staging/external service.
|
|
56
|
+
- `NOT RUN / PARTIAL`: Chưa chạy lệnh hoặc chỉ mới kiểm tra tĩnh (Cần ghi rõ: *"Trạng thái: Đã bind code logic & types. Cần user test giao diện trực tiếp trên trình duyệt"*).
|
|
57
|
+
- **TUYỆT ĐỐI KHÔNG CHUYỂN BLOCKED/NOT RUN THÀNH PASS!**
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 2. Ranh Giới & Phạm Vi Kỹ Thuật (Hard Boundaries)
|
|
62
|
+
|
|
63
|
+
### ✅ Việc skill này BẮT BUỘC làm:
|
|
64
|
+
- **Scoped Contract-First Implementation:** Đối với các tính năng có tương tác dữ liệu ngoài, API boundaries, database persistence, hoặc untrusted input: BẮT BUỘC định nghĩa Types/DTOs và Validation Schemas (Zod/Pydantic) trước logic nghiệp vụ. Với UI nội bộ (button, modal, local UI state), không ép buộc sinh schema nếu không có ranh giới dữ liệu.
|
|
65
|
+
- **UI State Rule (Không tạo Empty giả tạo):**
|
|
66
|
+
- **Data-fetching views (Danh sách / màn hình tải dữ liệu):** BẮT BUỘC xử lý đủ 4 trạng thái: `Loading (Skeleton loader)`, `Success (Render data)`, `Empty (Minh họa ngữ cảnh + Nút Call-to-action)`, và `Error (Message lỗi + Nút Thử Lại/Retry)`.
|
|
67
|
+
- **Mutations & Actions (Login, logout, xóa item, upload file, submit form):** Xử lý các trạng thái tương tác phù hợp thực tế: `Idle`, `Submitting/Pending`, `Success`, và `Error`. TUYỆT ĐỐI KHÔNG tạo `Empty state` giả tạo cho các hành động không có ý nghĩa danh sách rỗng.
|
|
68
|
+
- **Planning Gate & Exceptions:** Với tính năng mới ảnh hưởng ≥ 2 files hoặc tác động kiến trúc, BẮT BUỘC lập `implementation_plan.md` với `RequestFeedback: true` và dừng lại chờ phê duyệt trước khi tạo/sửa files.
|
|
69
|
+
- **Ngoại lệ bỏ qua Planning Gate:**
|
|
70
|
+
- Thay đổi chỉ nằm trong đúng 1 file (Single-file change).
|
|
71
|
+
- Chỉnh sửa UI/text đơn giản (Trivial UI/text change).
|
|
72
|
+
- Thay đổi thuần tài liệu (Documentation-only).
|
|
73
|
+
- Người dùng chỉ định rõ ràng yêu cầu thực thi ngay lập tức mà không cần qua gate.
|
|
74
|
+
|
|
75
|
+
### ❌ Việc skill này TUYỆT ĐỐI KHÔNG làm (Chuyển giao quyền):
|
|
76
|
+
- Điều tra các lỗi crash cũ có sẵn từ trước trong codebase → Chuyển sang `qk-bug-resolution`.
|
|
77
|
+
- Tự tiện thay đổi cấu trúc bảng cơ sở dữ liệu lớn → Chuyển sang `qk-backend-data`.
|
|
78
|
+
- Tái cấu trúc các module cũ không liên quan đến feature → Chuyển sang `qk-code-cleaner`.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 3. Quy Trình Phát Triển 4 Bước Tuần Tự (Sequential Procedure)
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
[Bước 1: Contract & Plan] ── Định nghĩa Types/Schemas (nếu có API/DB), lập plan (nếu ≥ 2 files)
|
|
86
|
+
│
|
|
87
|
+
▼
|
|
88
|
+
[Bước 2: Service & Logic] ── Xây dựng API Caller & State Handler (caching chỉ khi cần thiết)
|
|
89
|
+
│
|
|
90
|
+
▼
|
|
91
|
+
[Bước 3: UI & State Bind] ── Gắn Component, Skeleton (nếu fetching), Action feedback (nếu mutation)
|
|
92
|
+
│
|
|
93
|
+
▼
|
|
94
|
+
[Bước 4: Verification Gate] ── Chạy Typecheck/Lint thật. Nếu FAIL ──► Kích hoạt Failure Path
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Chi tiết các bước:
|
|
98
|
+
1. **Contract & Plan:** Thiết lập interface chuẩn cho request/response hoặc persistence model. Lập kế hoạch các files sẽ tạo mới (nếu đa file).
|
|
99
|
+
2. **Service & Logic:** Viết hàm gọi API độc lập với component, xử lý lỗi có ngữ cảnh. Chỉ tích hợp caching, state store hoặc optimistic updates khi tính năng hoặc kiến trúc dự án thực sự yêu cầu.
|
|
100
|
+
3. **UI & State Bind:** Gắn dữ liệu vào JSX/Template. Đảm bảo Skeleton loader không làm nhảy giật layout (chống CLS). Đảm bảo action có loading spinner/disable button chống double-submit.
|
|
101
|
+
4. **Verification Gate:** Kiểm tra type-check và lint thực tế. Xác minh không vi phạm nguyên tắc YAGNI hay sinh ra God file (> 300 dòng).
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 4. Xử Lý Sự Cố Khi Build Gãy & Cấm Ép Pass (Failure Path Protocol)
|
|
106
|
+
|
|
107
|
+
Nếu trong quá trình triển khai gặp lỗi biên dịch, lint, hoặc kiểm thử:
|
|
108
|
+
1. **Dừng lại ngay (Failure Analysis Gate):** Không tiếp tục viết thêm code nếu tầng Contract hoặc Types đang bị đỏ.
|
|
109
|
+
2. **Xác định Root Cause:** Đọc call-stack và thông báo lỗi thực tế để tìm nguyên nhân gốc rễ.
|
|
110
|
+
3. **CẤM CHE GIẤU LỖI (Zero Workarounds):**
|
|
111
|
+
- CẤM dùng `as any` hoặc `@ts-ignore` / `@ts-expect-error` để né lỗi type.
|
|
112
|
+
- CẤM disable linter rule hoặc comment bỏ qua lint.
|
|
113
|
+
- CẤM dùng `catch (e) {}` rỗng để nuốt lỗi cho code khỏi crash.
|
|
114
|
+
- CẤM sửa hoặc làm yếu assertion của test case chỉ để ép pass.
|
|
115
|
+
4. **Revert có kiểm soát:** Nếu bước làm trước đó làm gãy toàn bộ build của dự án:
|
|
116
|
+
```bash
|
|
117
|
+
git restore <các_file_vừa_tạo_hoặc_sửa>
|
|
118
|
+
```
|
|
119
|
+
5. **Báo cáo Blocked:** Nếu thiếu endpoint từ phía backend hoặc thiếu dữ liệu bắt buộc từ 3rd party, dừng lại và thông báo rõ contract bị thiếu cho user với trạng thái `Status: BLOCKED`.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 5. Mẫu Kế Hoạch Chuẩn (Implementation Plan Skeleton)
|
|
124
|
+
|
|
125
|
+
Khi khởi tạo `implementation_plan.md`:
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
# Implementation Plan: [Tên Tính Năng Mới]
|
|
129
|
+
|
|
130
|
+
## 1. Yêu cầu & Trải nghiệm người dùng
|
|
131
|
+
- Tính năng: [Mô tả ngắn gọn giá trị mang lại]
|
|
132
|
+
- Điểm chạm UI: [Vị trí màn hình / nút bấm mới]
|
|
133
|
+
|
|
134
|
+
## 2. Hợp đồng dữ liệu (API / Boundary Contract)
|
|
135
|
+
- Endpoint: `POST /api/v1/orders` (hoặc N/A nếu thuần UI)
|
|
136
|
+
- Input Schema: `{ items: Array<{ id: string, quantity: number }> }`
|
|
137
|
+
- Output Schema: `{ orderId: string, totalAmount: number, status: string }`
|
|
138
|
+
|
|
139
|
+
## 3. Danh sách files sẽ thay đổi (Laser Focus)
|
|
140
|
+
- [ ] [NEW] [types.ts](file:///<workspace-root>/src/types/...): Khai báo models & Schema
|
|
141
|
+
- [ ] [NEW] [useOrderService.ts](file:///<workspace-root>/src/services/...): API caller
|
|
142
|
+
- [ ] [NEW] [OrderForm.tsx](file:///<workspace-root>/src/components/...): Component UI
|
|
143
|
+
|
|
144
|
+
## 4. Kiểm soát trạng thái UI
|
|
145
|
+
- Data Fetching: Loading (Skeleton) | Success | Empty (CTA) | Error (Retry)
|
|
146
|
+
- Hoặc Mutation: Idle | Submitting (Spinner) | Success (Redirect/Toast) | Error (Alert)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 6. Thích Ứng Theo Role Kỹ Thuật (Role Adaptation)
|
|
152
|
+
|
|
153
|
+
| Role | Trọng tâm khi Build Feature | Hành vi kỹ thuật đặc thù |
|
|
154
|
+
|---|---|---|
|
|
155
|
+
| `frontend` | Component hierarchy, Accessibility, responsive layout, interaction feedback | Tạo custom hook quản lý state, tái sử dụng component có sẵn, skeleton loader |
|
|
156
|
+
| `backend` | API route handler, controller, business domain service, query DB | Áp dụng input validation middleware, dependency injection, unit test service |
|
|
157
|
+
| `fullstack` | Đồng bộ 100% từ Database đến giao diện người dùng | Tạo migration nhỏ (nếu cần), tạo endpoint, sinh types, bind vào UI component |
|
|
158
|
+
| `data` | Ingestion job mới, schema validation, data pipeline task | Tạo incremental dbt model, thêm schema test trong `.yml`, SLA logging |
|
|
159
|
+
| `devops` | Cấu hình biến môi trường mới, service connection, helm values | Cập nhật `.env.example`, thêm secret config, healthcheck endpoint |
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 7. Báo Cáo Nghiệm Thu Chuẩn Xác (Truth-First Report)
|
|
164
|
+
|
|
165
|
+
```markdown
|
|
166
|
+
🚀 Feature Delivery Summary [Role: <role> | Feature: <Tên tính năng>]
|
|
167
|
+
─────────────────────────────────────────────────────────────────────
|
|
168
|
+
Phạm vi thực tế: [N files created / modified]
|
|
169
|
+
Trạng thái: [Hoàn thành sẵn sàng test | Cần cấu hình thêm env | BLOCKED]
|
|
170
|
+
|
|
171
|
+
Các tệp mã nguồn mới/sửa đổi:
|
|
172
|
+
• [NEW] [TênFile.tsx](file:///<workspace-root>/path): [Mô tả vai trò]
|
|
173
|
+
|
|
174
|
+
Kiểm soát trạng thái giao diện:
|
|
175
|
+
• Fetching: [Loading / Success / Empty / Error] hoặc [N/A]
|
|
176
|
+
• Mutation: [Idle / Submitting / Success / Error] hoặc [N/A]
|
|
177
|
+
|
|
178
|
+
Kiểm chứng thực tế (Verify Before Claim):
|
|
179
|
+
• Type-check: [tsc Clean / mypy Pass / Chưa chạy (Nêu lý do)]
|
|
180
|
+
• Lint check: [0 errors / Chưa chạy]
|
|
181
|
+
• YAGNI: ✅ Giữ giải pháp tối giản, không sinh abstraction thừa
|
|
182
|
+
• Zero Hack: ✅ Không dùng any, @ts-ignore, hay silent catch
|
|
183
|
+
```
|