@relipa/ai-flow-kit 0.1.2 → 0.1.4-beta.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.
Files changed (94) hide show
  1. package/README.md +139 -0
  2. package/bin/aiflow.js +89 -2
  3. package/custom/harness/playwright/.env.example +10 -0
  4. package/custom/harness/playwright/playwright.config.ts +34 -0
  5. package/custom/harness/playwright/tests/e2e/auth.setup.ts +25 -0
  6. package/custom/harness/playwright/tests/e2e/fixtures/test.ts +6 -0
  7. package/custom/harness/playwright/tests/e2e/pages/BasePage.ts +9 -0
  8. package/custom/harness/playwright/tests/e2e/support/auth.ts +5 -0
  9. package/custom/mcp-presets/playwright.json +8 -0
  10. package/custom/rules/test-patterns.md +70 -0
  11. package/custom/skills/automation-testing/SKILL.md +239 -0
  12. package/custom/skills/automation-testing/templates/BasePage.ts +29 -0
  13. package/custom/skills/automation-testing/templates/PageObject.example.ts +29 -0
  14. package/custom/skills/automation-testing/templates/playwright.config.ts +39 -0
  15. package/custom/skills/automation-testing/templates/spec.example.ts +29 -0
  16. package/custom/skills/ba-skills/skill-ba-phan-tich-ban-dau-v1.md +44 -0
  17. package/custom/skills/ba-skills/skill-ba-prototype-v1.md +35 -0
  18. package/custom/skills/ba-skills/skill-ba-qa-template-v1.md +21 -0
  19. package/custom/skills/ba-skills/skill-ba-qa-v1.md +35 -0
  20. package/custom/skills/ba-skills/skill-ba-template-phan-tich-ban-dau-v1.md +30 -0
  21. package/custom/skills/ba-skills/skill-ba-template-uc-v1.md +83 -0
  22. package/custom/skills/ba-skills/skill-ba-ve-luong-mermaid-v1.md +35 -0
  23. package/custom/skills/ba-skills/skill-ba-viet-spec-uc-v1.md +38 -0
  24. package/custom/skills/ba-skills/skill-ba-xay-dung-business-rules-v1.md +39 -0
  25. package/custom/skills/coverage-check/SKILL.md +202 -0
  26. package/custom/skills/evidence-aggregation/SKILL.md +246 -0
  27. package/custom/skills/execute-flow/SKILL.md +499 -0
  28. package/custom/skills/execute-flow/templates/playwright.config.ts +39 -0
  29. package/custom/skills/gate-review/SKILL.md +195 -0
  30. package/custom/skills/generate-test-report/SKILL.md +99 -0
  31. package/custom/skills/generate-test-report/templates/test-report.md +58 -0
  32. package/custom/skills/generate-testcase/SKILL.md +350 -0
  33. package/custom/skills/generate-testcase/templates/testcase.md +88 -0
  34. package/custom/skills/log-bug/SKILL.md +131 -0
  35. package/custom/skills/pr-impact-analysis/SKILL.md +180 -0
  36. package/custom/skills/retest-orchestration/SKILL.md +191 -0
  37. package/custom/skills/script-sync/SKILL.md +208 -0
  38. package/custom/skills/test-analysis/SKILL.md +300 -0
  39. package/custom/skills/test-skills/categories/00-core/00.01.requirement-analysis.md +111 -0
  40. package/custom/skills/test-skills/categories/00-core/00.02.risk-analysis.md +24 -0
  41. package/custom/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md +90 -0
  42. package/custom/skills/test-skills/categories/00-core/00.04.testcase-review.md +68 -0
  43. package/custom/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md +30 -0
  44. package/custom/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md +27 -0
  45. package/custom/skills/test-skills/categories/01-test-design/01.03.decision-table.md +26 -0
  46. package/custom/skills/test-skills/categories/01-test-design/01.04.state.transition.md +26 -0
  47. package/custom/skills/test-skills/categories/01-test-design/01.05.pairwise.md +25 -0
  48. package/custom/skills/test-skills/categories/01-test-design/01.06.error-guessing.md +28 -0
  49. package/custom/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md +29 -0
  50. package/custom/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md +57 -0
  51. package/custom/skills/test-skills/categories/02-ui-testing/02.03.navigation.md +27 -0
  52. package/custom/skills/test-skills/categories/02-ui-testing/02.04.localization.md +27 -0
  53. package/custom/skills/test-skills/categories/02-ui-testing/02.05.accessibility.md +27 -0
  54. package/custom/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md +51 -0
  55. package/custom/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md +44 -0
  56. package/custom/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md +41 -0
  57. package/custom/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md +40 -0
  58. package/custom/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md +43 -0
  59. package/custom/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md +44 -0
  60. package/custom/skills/test-skills/categories/04-data-testing/04.01.database-testing.md +43 -0
  61. package/custom/skills/test-skills/categories/04-data-testing/04.02.import-export-testing.md +43 -0
  62. package/custom/skills/test-skills/categories/04-data-testing/04.03.data-mapping.md +39 -0
  63. package/custom/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md +39 -0
  64. package/custom/skills/test-skills/categories/04-data-testing/04.05.migration.md +42 -0
  65. package/custom/skills/test-skills/categories/05-integration/05.01.API-testing.md +37 -0
  66. package/custom/skills/test-skills/categories/05-integration/05.02.third-party-integration.md +36 -0
  67. package/custom/skills/test-skills/categories/05-integration/05.03.batch-processing.md +38 -0
  68. package/custom/skills/test-skills/categories/05-integration/05.04.file-upload-download.md +40 -0
  69. package/custom/skills/test-skills/categories/08-domain-skills/CMS.md +34 -0
  70. package/custom/skills/test-skills/categories/08-domain-skills/Ecommerce.md +35 -0
  71. package/custom/skills/test-skills/categories/99-review/99.01.coverage-review.md +35 -0
  72. package/custom/skills/test-skills/categories/99-review/99.02.knowledge-learning.md +34 -0
  73. package/custom/skills/test-skills/categories/99-review/99.03.repository-update.md +33 -0
  74. package/custom/skills/test-skills/categories/99-review/99.04.change-history.md +38 -0
  75. package/custom/skills/test-skills/rules/Directory_and_Naming_Convention.md +257 -0
  76. package/custom/skills/test-skills/rules/QA_Writing_Standards.md +49 -0
  77. package/custom/skills/test-skills/template/template_testcase.md +92 -0
  78. package/custom/templates/shared/create-spec-workflow.md +441 -0
  79. package/custom/templates/shared/create-testcase-workflow.md +470 -0
  80. package/custom/templates/shared/gate-workflow.md +421 -11
  81. package/docs/common/CHANGELOG.md +52 -0
  82. package/docs/common/QUICK_START.md +30 -0
  83. package/docs/common/cli-reference.md +48 -7
  84. package/package.json +2 -2
  85. package/scripts/create-score-excel.js +37 -14
  86. package/scripts/detect.js +10 -0
  87. package/scripts/guide.js +9 -0
  88. package/scripts/init.js +48 -1
  89. package/scripts/prompt.js +36 -0
  90. package/scripts/review.js +91 -0
  91. package/scripts/scaffold-playwright.js +106 -0
  92. package/scripts/task.js +21 -7
  93. package/scripts/update.js +127 -124
  94. package/scripts/use.js +36 -12
@@ -0,0 +1,470 @@
1
+ ## [QA] 4-Gate TestCase Creation Workflow
2
+
3
+ > **For:** `create-testcase`
4
+ > **Persona:** Quality Assurance (QA)
5
+ > **Goal:** Chuyển đổi yêu cầu thô (SRS / Backlog / Jira / Spec file) thành bộ Test Case hoàn chỉnh sẵn sàng thực thi, tuân theo quy trình QA Workflow chuẩn.
6
+ > **Interaction Rules:** Hỏi ONE câu hỏi tại một thời điểm — đợi QA trả lời trước khi tiếp tục. KHÔNG hỏi nhiều câu cùng lúc.
7
+
8
+ ---
9
+
10
+ ### QA Skills
11
+
12
+ Các skill sau đây được cài tự động vào `.claude/skills/test-skills/` khi chạy `ak init` hoặc `ak up`.
13
+
14
+ | Skill | File |
15
+ |---|---|
16
+ | `QA Writing Standards` | `.claude/skills/test-skills/rules/QA_Writing_Standards.md` |
17
+ | `Directory & Naming Convention` | `.claude/skills/test-skills/rules/Directory_and_Naming_Convention.md` |
18
+ | `Template TestCase` | `.claude/skills/test-skills/template/template_testcase.md` |
19
+ | `00.01 Requirement Analysis` | `.claude/skills/test-skills/categories/00-core/00.01.requirement-analysis.md` |
20
+ | `00.02 Risk Analysis` | `.claude/skills/test-skills/categories/00-core/00.02.risk-analysis.md` |
21
+ | `00.03 Test Scenario Builder` | `.claude/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md` |
22
+ | `00.04 TestCase Review` | `.claude/skills/test-skills/categories/00-core/00.04.testcase-review.md` |
23
+ | `01.01 BVA` | `.claude/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md` |
24
+ | `01.02 EP` | `.claude/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md` |
25
+ | `01.03 Decision Table` | `.claude/skills/test-skills/categories/01-test-design/01.03.decision-table.md` |
26
+ | `01.04 State Transition` | `.claude/skills/test-skills/categories/01-test-design/01.04.state.transition.md` |
27
+ | `01.05 Pairwise` | `.claude/skills/test-skills/categories/01-test-design/01.05.pairwise.md` |
28
+ | `01.06 Error Guessing` | `.claude/skills/test-skills/categories/01-test-design/01.06.error-guessing.md` |
29
+ | `02.01 UI Layout` | `.claude/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md` |
30
+ | `02.02 Form Validation` | `.claude/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md` |
31
+ | `02.03 Navigation` | `.claude/skills/test-skills/categories/02-ui-testing/02.03.navigation.md` |
32
+ | `02.04 Localization` | `.claude/skills/test-skills/categories/02-ui-testing/02.04.localization.md` |
33
+ | `03.01 CRUD Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md` |
34
+ | `03.02 Workflow Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md` |
35
+ | `03.03 Permission Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md` |
36
+ | `03.04 Dependency Validation` | `.claude/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md` |
37
+ | `03.05 Notification Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md` |
38
+ | `03.06 Calculation Testing` | `.claude/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md` |
39
+ | `04.01 Database Testing` | `.claude/skills/test-skills/categories/04-data-testing/04.01.database-testing.md` |
40
+ | `04.04 Duplicate Handling` | `.claude/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md` |
41
+ | `05.04 File Upload/Download` | `.claude/skills/test-skills/categories/05-integration/05.04.file-upload-download.md` |
42
+ | `99.01 Coverage Review` | `.claude/skills/test-skills/categories/99-review/99.01.coverage-review.md` |
43
+
44
+ ---
45
+
46
+ ### Cấu trúc thư mục đầu ra
47
+
48
+ ```
49
+ docs/ak-{project}/testcase/
50
+ ├── Result/
51
+ │ ├── [functionId]_01_Requirement_Analysis_Result.md ← Gate 1 tạo
52
+ │ ├── [functionId]_02_Test_Scenarios_Result.md ← Gate 2 tạo
53
+ │ ├── [functionId]_03_Test_Cases_Draft_Result.md ← Gate 3 tạo
54
+ │ └── [functionId]_04_Test_Cases_Final_Result.md ← Gate 4 tạo (đồng thời với TestCase)
55
+ ├── QA/
56
+ │ ├── [functionId]_01_Requirement_Analysis_QA.md ← Gate 1 tạo (nếu có issue)
57
+ │ ├── [functionId]_02_Scenario_Building_QA.md ← Gate 2 tạo (nếu có issue)
58
+ │ ├── [functionId]_03_Test_Design_QA.md ← Gate 3 tạo (nếu có issue)
59
+ │ └── [functionId]_04_Test_Review_QA.md ← Gate 4 tạo
60
+ └── TestCase/
61
+ └── [functionId]_TestCase.md ← Gate 4 tạo đồng thời với 04_Final_Result
62
+ ```
63
+
64
+ Ví dụ: `functionId = AD06`, `project = kcandy` → thư mục gốc là `docs/ak-kcandy/testcase/`
65
+
66
+ ---
67
+
68
+ ### Quy trình tổng quan 4 Gates
69
+
70
+ ```
71
+ (testcase/ = docs/ak-{project}/testcase/ — viết tắt cho ngắn gọn)
72
+
73
+ [Input: SRS / Jira / Backlog / Spec file] → Pre-flight: xác định functionId + thư mục đầu ra
74
+
75
+ Gate 1: Phân tích yêu cầu & Đánh giá rủi ro → testcase/Result/ + testcase/QA/
76
+ ↓ APPROVED
77
+ Gate 2: Xây dựng Kịch bản (Scenario Building) → testcase/Result/ + testcase/QA/
78
+ ↓ APPROVED
79
+ Gate 3: Thiết kế Test Case chi tiết → testcase/Result/ + testcase/QA/
80
+ ↓ APPROVED
81
+ Gate 4: Review & Tối ưu hóa → testcase/Result/ + testcase/QA/
82
+ + testcase/TestCase/[functionId]_TestCase.md
83
+ ↓ APPROVED (Fully / Conditionally)
84
+ Sẵn sàng thực thi kiểm thử
85
+ ```
86
+
87
+ ---
88
+
89
+ ### GATE 1 — Phân tích yêu cầu & Đánh giá rủi ro (auto-start)
90
+
91
+ **Mục tiêu:** Tiếp nhận đầu vào, hiểu nghiệp vụ, xác định phạm vi kiểm thử, nhận diện rủi ro và phát hiện vấn đề cần làm rõ trước khi xây dựng kịch bản.
92
+
93
+ **Đầu ra (Outputs):**
94
+ - `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
95
+ - `docs/ak-{project}/testcase/QA/[functionId]_01_Requirement_Analysis_QA.md` (nếu có issue)
96
+
97
+ **Bước thực hiện:**
98
+
99
+ #### Bước 0: Pre-flight — Xác định functionId và thư mục đầu ra
100
+
101
+ **Xác định `functionId`:**
102
+
103
+ Kiểm tra theo thứ tự ưu tiên:
104
+ 1. Trường `functionId` hoặc `screenId` trong `.aiflow/context/current.json`
105
+ 2. Rút gọn từ `ticketId` — bỏ dấu gạch, giữ ký hiệu (ví dụ: `AD-06` → `AD06`)
106
+ 3. Nếu không tìm thấy → **hỏi QA ngay**:
107
+
108
+ ```
109
+ Không tìm thấy functionId trong context.
110
+ Vui lòng cung cấp mã định danh cho chức năng này (ví dụ: AD06, TC-LOGIN, PM-003):
111
+ ```
112
+
113
+ → Đợi QA trả lời, ghi nhận giá trị, dùng cho toàn bộ workflow.
114
+
115
+ **Xác định `{project}` và thư mục đầu ra:**
116
+
117
+ 1. Lấy `{project}` theo thứ tự ưu tiên:
118
+ - Trường `project` trong `.aiflow/context/current.json`
119
+ - Tên thư mục gốc workspace (chuyển lowercase, thay space bằng `-`)
120
+
121
+ 2. Kiểm tra tồn tại thư mục `docs/ak-{project}/testcase/` trong root dự án:
122
+ - **Tìm thấy** → thông báo xác nhận:
123
+ ```
124
+ ✓ Thư mục đầu ra: docs/ak-{project}/testcase/
125
+ ✓ functionId: [functionId]
126
+ → Bắt đầu Gate 1...
127
+ ```
128
+ - **Không tìm thấy** → **hỏi QA**:
129
+ ```
130
+ Không tìm thấy thư mục docs/ak-{project}/testcase/.
131
+ Tên project là gì? (ví dụ: kcandy, crm-app)
132
+ ```
133
+ → Nhận tên project từ QA → chuyển lowercase → tạo toàn bộ cây thư mục:
134
+ ```
135
+ docs/ak-{project}/testcase/Result/
136
+ docs/ak-{project}/testcase/QA/
137
+ docs/ak-{project}/testcase/TestCase/
138
+ ```
139
+ → Thông báo:
140
+ ```
141
+ ✓ Đã tạo thư mục: docs/ak-{project}/testcase/
142
+ ✓ functionId: [functionId]
143
+ → Bắt đầu Gate 1...
144
+ ```
145
+
146
+ #### Bước 1: Đọc và tổng hợp đầu vào
147
+ - Đọc `.aiflow/context/current.json` — tiêu đề, mô tả, acceptance criteria, liên kết tài liệu
148
+ - Nếu description có URL → chạy `ak fetch-links <url>` để tải nội dung
149
+ - Nếu có `supplementaryContext[]` → đọc từng item (SRS file, Figma link, API spec, spec MD file)
150
+ - Nếu có file yêu cầu thô được chỉ định → đọc file đó
151
+
152
+ #### Bước 2: Phân tích yêu cầu và đánh giá rủi ro
153
+ - **READ skill:** `.claude/skills/test-skills/rules/QA_Writing_Standards.md` — đọc trước để nắm quy ước chung
154
+ - **READ skill:** `.claude/skills/test-skills/categories/00-core/00.01.requirement-analysis.md`
155
+ - **READ skill:** `.claude/skills/test-skills/categories/00-core/00.02.risk-analysis.md`
156
+ - Phân tích đầy đủ **16 mục** theo skill 00.01:
157
+ 1. Module/Màn hình/Feature cụ thể
158
+ 2. Ranh giới scope (In-Scope / Out-of-Scope)
159
+ 3. Feature Overview
160
+ 4. Main Flow (Happy Path)
161
+ 5. Alternative Flows / Ngoại lệ
162
+ 6. User Roles / Permissions
163
+ 7. Business Rules
164
+ 8. Validations (Required, Maxlength, Unique, Format, v.v.)
165
+ 9. State / Status
166
+ 10. API / External System
167
+ 11. Accessibility
168
+ 12. Compatibility (Browser/Device)
169
+ 13. Test Data dependencies
170
+ 14. Third-party integrations
171
+ 15. Risk / điểm dễ lỗi
172
+ 16. Q&A / Out of Scope
173
+ - Đánh giá rủi ro theo skill 00.02: kỹ thuật, dữ liệu, nghiệp vụ, hệ thống
174
+ - **Issue Handling:**
175
+ - Critical/Major → DỪNG, tạo QA artifact, chờ phản hồi (không sinh Result artifact)
176
+ - Minor → Ghi TBD marker (`[TBD — <issue-id>: mô tả]`), tiếp tục, carry-forward sang gate sau
177
+
178
+ #### Bước 3: Soạn thảo kết quả phân tích yêu cầu
179
+ - Artifact đầu ra phải có: Feature Summary, Actor & Persona, Business Rules (16 mục), Risk Matrix, Test Scope
180
+ - Lưu: `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
181
+
182
+ #### Bước 4: Soạn thảo QA Artifact (nếu có issue)
183
+ - Cấu trúc: Metadata, Detected Issues (Severity), Clarification Questions, Assumptions, Resolution Tracking
184
+ - Lưu: `docs/ak-{project}/testcase/QA/[functionId]_01_Requirement_Analysis_QA.md`
185
+
186
+ #### Bước 5: Gate Review & Pause
187
+ - **INVOKE** `gate-review` skill (generate mode) — ghi `.aiflow/review/gate-1-[functionId].md`
188
+ - Hiển thị gate pause message — đợi **APPROVED**
189
+
190
+ **Khi APPROVED:**
191
+ → **INVOKE** `gate-review` skill (verify mode) — chạy `ak review check --gate 1 --ticket [functionId]`
192
+ → Nếu passed: `ak gate 1 approved --ticket [functionId]` → chuyển Gate 2
193
+ → Nếu blocked: làm theo gate-review skill response protocol
194
+
195
+ **Definition of Done:**
196
+ - [ ] `functionId` và `{project}` đã được xác định, thư mục đầu ra đã sẵn sàng
197
+ - [ ] File `01_Requirement_Analysis_Result.md` có đủ 16 mục + Risk Matrix + Test Scope
198
+ - [ ] File `01_Requirement_Analysis_QA.md` đã tạo nếu có issue (Critical/Major đã giải quyết)
199
+ - [ ] Không có giả định nào được tự ý chốt thành fact mà không đưa vào QA
200
+
201
+ > **Telemetry:** Run `ak gate 1 start --ticket [functionId]` khi bắt đầu gate này.
202
+ > Run `ak gate 1 approved --ticket [functionId]` sau khi gate-review verify passed. Run as-is — không thêm shell redirects.
203
+
204
+ ---
205
+
206
+ ### GATE 2 — Xây dựng Kịch bản kiểm thử (Scenario Building)
207
+
208
+ **Mục tiêu:** Phác thảo các kịch bản kiểm thử mức cao (High-level Scenarios) bao phủ toàn bộ luồng nghiệp vụ, trường hợp ngoại lệ và các rủi ro đã nhận diện ở Gate 1.
209
+
210
+ **Điều kiện vào Gate 2:** Gate 1 đã **APPROVED** và `01_Requirement_Analysis_Result.md` đã hoàn chỉnh.
211
+
212
+ **Đầu vào (Inputs):**
213
+ - `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
214
+
215
+ **Đầu ra (Outputs):**
216
+ - `docs/ak-{project}/testcase/Result/[functionId]_02_Test_Scenarios_Result.md`
217
+ - `docs/ak-{project}/testcase/QA/[functionId]_02_Scenario_Building_QA.md` (nếu có issue)
218
+
219
+ **Bước thực hiện:**
220
+
221
+ #### Bước 1: Đọc artifact đầu vào
222
+ - Đọc `[functionId]_01_Requirement_Analysis_Result.md` — nắm toàn bộ 16 mục, Risk Matrix, Business Rules
223
+
224
+ #### Bước 2: Áp dụng skills xây dựng kịch bản (luôn áp dụng)
225
+ - **READ skill:** `.claude/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md`
226
+ - **READ skill:** `.claude/skills/test-skills/categories/01-test-design/01.06.error-guessing.md`
227
+ - **READ skill:** `.claude/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md`
228
+ - Kiểm tra có domain skill applicable: `.claude/skills/test-skills/categories/08-domain-skills/`
229
+ - Xây dựng kịch bản đa chiều:
230
+ - Happy Path (Main Flow)
231
+ - Negative scenarios
232
+ - Boundary conditions
233
+ - Exception scenarios (double-click, timeout, mất mạng)
234
+ - Permission / Role-based scenarios
235
+ - E2E (End-to-End) business flow
236
+
237
+ #### Bước 3: Áp dụng skills có điều kiện
238
+ - **[Nếu có status/lifecycle field]** READ: `.claude/skills/test-skills/categories/01-test-design/01.04.state.transition.md` — thiết kế kịch bản cho mọi transition hợp lệ và không hợp lệ
239
+ - **[Nếu phụ thuộc feature/service khác]** READ: `.claude/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md` — kịch bản khi dependency lỗi
240
+ - **[Nếu có notification trigger]** READ: `.claude/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md`
241
+
242
+ #### Bước 4: Soạn thảo kết quả Scenario Building
243
+ - Bảng Scenarios với format:
244
+ - Scenario ID: `TS_<SCREEN_NUMBER>_<SEQ>` (vd: `TS_06_001` cho AD06)
245
+ - Cột: Scenario ID, Feature/Module, Check List, Scenario Type, Target Req ID, Priority, Test Data
246
+ - Business Flow Mapping (E2E diagram dạng text)
247
+ - Draft RTM (Scenario ID → Requirement ID từ `01_Requirement_Analysis_Result.md`)
248
+ - Lưu: `docs/ak-{project}/testcase/Result/[functionId]_02_Test_Scenarios_Result.md`
249
+
250
+ #### Bước 5: Soạn thảo QA Artifact (nếu có issue)
251
+ - Lưu: `docs/ak-{project}/testcase/QA/[functionId]_02_Scenario_Building_QA.md`
252
+ - Minor issues → TBD marker + carry-forward, tiếp tục workflow
253
+
254
+ #### Bước 6: Gate Review & Pause
255
+ - **INVOKE** `gate-review` skill (generate mode) — ghi `.aiflow/review/gate-2-[functionId].md`
256
+ - Hiển thị gate pause message — đợi **APPROVED**
257
+
258
+ **Khi APPROVED:**
259
+ → **INVOKE** `gate-review` skill (verify mode) — chạy `ak review check --gate 2 --ticket [functionId]`
260
+ → Nếu passed: `ak gate 2 approved --ticket [functionId]` → chuyển Gate 3
261
+ → Nếu blocked: làm theo gate-review skill response protocol
262
+
263
+ **Definition of Done:**
264
+ - [ ] 100% luồng Happy Path từ 16 mục đã bao phủ
265
+ - [ ] Có đủ Negative / Boundary / Exception / Permission scenarios
266
+ - [ ] Scenario ID format `TS_<SCREEN_NUMBER>_<SEQ>` đúng quy ước
267
+ - [ ] Draft RTM mapping Scenario → Requirement ID đầy đủ
268
+ - [ ] Critical/Major issues trong QA file đã giải quyết
269
+
270
+ > **Telemetry:** Run `ak gate 2 start --ticket [functionId]` khi bắt đầu gate này.
271
+ > Run `ak gate 2 approved --ticket [functionId]` sau khi gate-review verify passed. Run as-is — không thêm shell redirects.
272
+
273
+ ---
274
+
275
+ ### GATE 3 — Thiết kế Test Case chi tiết
276
+
277
+ **Mục tiêu:** Cụ thể hóa các kịch bản thành Test Case chi tiết với đầy đủ bước thực hiện, dữ liệu test và kết quả mong đợi cụ thể, đo được — bất kỳ ai cũng có thể thực thi được.
278
+
279
+ **Điều kiện vào Gate 3:** Gate 2 đã **APPROVED** và `02_Test_Scenarios_Result.md` đã hoàn chỉnh.
280
+
281
+ **Đầu vào (Inputs):**
282
+ - `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
283
+ - `docs/ak-{project}/testcase/Result/[functionId]_02_Test_Scenarios_Result.md`
284
+
285
+ **Đầu ra (Outputs):**
286
+ - `docs/ak-{project}/testcase/Result/[functionId]_03_Test_Cases_Draft_Result.md`
287
+ - `docs/ak-{project}/testcase/QA/[functionId]_03_Test_Design_QA.md` (nếu có issue)
288
+
289
+ **Bước thực hiện:**
290
+
291
+ #### Bước 1: Đọc template và quy ước bắt buộc
292
+ - **READ template:** `.claude/skills/test-skills/template/template_testcase.md` — **BẮT BUỘC** tuân thủ 100%
293
+ - **READ skill:** `.claude/skills/test-skills/rules/QA_Writing_Standards.md`
294
+
295
+ #### Bước 2: Áp dụng kỹ thuật thiết kế TC cơ bản (luôn áp dụng)
296
+ - **READ:** `.claude/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md` — BVA cho tất cả trường số/text có giới hạn
297
+ - **READ:** `.claude/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md` — EP phân nhóm giá trị tương đương
298
+ - **READ:** `.claude/skills/test-skills/categories/01-test-design/01.03.decision-table.md` — Decision Table cho logic có nhiều điều kiện
299
+ - **READ:** `.claude/skills/test-skills/categories/01-test-design/01.06.error-guessing.md` — Error Guessing → toàn bộ section 3.5 Exceptions
300
+
301
+ #### Bước 3: Thiết kế TC UI (luôn áp dụng)
302
+ - **READ:** `.claude/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md` — đối chiếu layout, spacing, font với Figma
303
+ - **READ:** `.claude/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md` — **MANDATORY** — ma trận validation TẤT CẢ trường input (cả Required và Optional)
304
+ - **READ:** `.claude/skills/test-skills/categories/02-ui-testing/02.03.navigation.md` — TC truy cập URL, nút Back/Forward, Deep Link
305
+ - **READ:** `.claude/skills/test-skills/categories/02-ui-testing/02.04.localization.md` — TC ký tự Kanji, Halfwidth/Fullwidth, đa ngôn ngữ
306
+
307
+ #### Bước 4: Thiết kế TC Business và Data (luôn áp dụng)
308
+ - **READ:** `.claude/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md` — CRUD flows
309
+ - **READ:** `.claude/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md` — phân quyền theo Actor
310
+ - **READ:** `.claude/skills/test-skills/categories/04-data-testing/04.01.database-testing.md` — xác minh dữ liệu lưu đúng vào DB
311
+ - **READ:** `.claude/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md` — ràng buộc Unique
312
+
313
+ #### Bước 5: Áp dụng skills có điều kiện
314
+ - **[Nếu có file upload field]** READ: `.claude/skills/test-skills/categories/05-integration/05.04.file-upload-download.md` — định dạng, dung lượng, MIME spoofing, drag & drop
315
+ - **[Nếu có status/lifecycle field]** READ: `.claude/skills/test-skills/categories/01-test-design/01.04.state.transition.md`
316
+ - **[Nếu nhiều tham số đầu vào cần tổ hợp]** READ: `.claude/skills/test-skills/categories/01-test-design/01.05.pairwise.md`
317
+ - **[Nếu có notification trigger]** READ: `.claude/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md`
318
+ - **[Nếu có calculated/computed fields]** READ: `.claude/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md`
319
+
320
+ #### Bước 6: Soạn thảo Draft Test Cases
321
+ - Viết TC theo đúng template chuẩn — **không tự định nghĩa cấu trúc mới**
322
+ - TC ID format: `TC-<FEATURE>-<SEQ>` (vd: `TC-TAG-001`, `TC-LOGIN-005`)
323
+ - Naming convention section 3.3 (Validation): TC Name **bắt buộc** bắt đầu bằng `"Kiểm tra trường [Tên Trường]..."`
324
+ - Cấu trúc output theo 5 sections của template:
325
+ - **Section 3.1**: Access & Authorization
326
+ - **Section 3.2**: UI/UX (layout, giao diện)
327
+ - **Section 3.3**: Input Validation (sub-table riêng cho từng field)
328
+ - **Section 3.4**: Business Rules (CRUD, logic nghiệp vụ, DB verify)
329
+ - **Section 3.5**: Exceptions & Systems (Error Guessing cases)
330
+ - Bổ sung: Coverage Matrix (Scenario ID → TC ID), Test Data tổng hợp
331
+ - Ghi TBD marker khi thiếu thông tin: `[TBD — <issue-id>: mô tả ngắn]`
332
+ - Lưu: `docs/ak-{project}/testcase/Result/[functionId]_03_Test_Cases_Draft_Result.md`
333
+
334
+ #### Bước 7: Soạn thảo QA Artifact (nếu có issue)
335
+ - Lưu: `docs/ak-{project}/testcase/QA/[functionId]_03_Test_Design_QA.md`
336
+ - Cấu trúc: Metadata, Detected Issues, Clarification Questions, Assumptions, Resolution Tracking
337
+
338
+ #### Bước 8: Gate Review & Pause
339
+ - **INVOKE** `gate-review` skill (generate mode) — ghi `.aiflow/review/gate-3-[functionId].md`
340
+ - Hiển thị gate pause message — đợi **APPROVED**
341
+
342
+ **Khi APPROVED:**
343
+ → **INVOKE** `gate-review` skill (verify mode) — chạy `ak review check --gate 3 --ticket [functionId]`
344
+ → Nếu passed: `ak gate 3 approved --ticket [functionId]` → chuyển Gate 4
345
+ → Nếu blocked: làm theo gate-review skill response protocol
346
+
347
+ **Definition of Done:**
348
+ - [ ] 100% tuân thủ `template_testcase.md` — không tự định nghĩa cấu trúc mới
349
+ - [ ] Mọi trường input (cả Required và Optional) đã qua ma trận skill 02.02
350
+ - [ ] TC Name section 3.3 bắt đầu bằng `"Kiểm tra trường [Tên Trường]..."`
351
+ - [ ] Coverage Matrix mapping Scenario ID → TC ID đầy đủ
352
+ - [ ] TBD marker ghi đúng format khi thiếu thông tin
353
+ - [ ] Critical/Major issues trong QA file đã giải quyết
354
+
355
+ > **Telemetry:** Run `ak gate 3 start --ticket [functionId]` khi bắt đầu gate này.
356
+ > Run `ak gate 3 approved --ticket [functionId]` sau khi gate-review verify passed. Run as-is — không thêm shell redirects.
357
+
358
+ ---
359
+
360
+ ### GATE 4 — Review & Tối ưu hóa
361
+
362
+ **Mục tiêu:** Chốt chặn chất lượng toàn bộ bộ Test Case — bao phủ 100% yêu cầu, không trùng lặp, loại bỏ out-of-scope, và sinh artifact giao nộp hoàn chỉnh.
363
+
364
+ **Điều kiện vào Gate 4:** Gate 3 đã **APPROVED** và `03_Test_Cases_Draft_Result.md` đã hoàn chỉnh.
365
+
366
+ **Đầu vào (Inputs):**
367
+ - `docs/ak-{project}/testcase/Result/[functionId]_01_Requirement_Analysis_Result.md`
368
+ - `docs/ak-{project}/testcase/Result/[functionId]_03_Test_Cases_Draft_Result.md`
369
+
370
+ **Đầu ra (Outputs) — sinh ĐỒNG THỜI:**
371
+ - `docs/ak-{project}/testcase/Result/[functionId]_04_Test_Cases_Final_Result.md`
372
+ - `docs/ak-{project}/testcase/QA/[functionId]_04_Test_Review_QA.md`
373
+ - `docs/ak-{project}/testcase/TestCase/[functionId]_TestCase.md`
374
+
375
+ > **Quy tắc Gate 4:** Ba artifact trên phải được sinh ĐỒNG THỜI. Không tạo một file mà thiếu file kia.
376
+
377
+ **Bước thực hiện:**
378
+
379
+ #### Bước 1: Review nội dung và đánh giá bao phủ
380
+ - **READ skill:** `.claude/skills/test-skills/categories/00-core/00.04.testcase-review.md`
381
+ - **READ skill:** `.claude/skills/test-skills/categories/99-review/99.01.coverage-review.md`
382
+ - Checklist review bắt buộc:
383
+ - [ ] 100% Requirement (16 mục) có TC tương ứng?
384
+ - [ ] Không có TC test item Out-of-Scope (mục 2 trong 16 mục)?
385
+ - [ ] Steps rõ ràng, có thể reproduce (không mơ hồ)?
386
+ - [ ] Expected Result cụ thể và đo được (tránh "hoạt động đúng")?
387
+ - [ ] Không có TC trùng lặp logic?
388
+ - [ ] TBD markers ghi đúng `[TBD — <issue-ref>: mô tả]`?
389
+ - [ ] Minor issues carry-forward đã ghi nhận vào QA file?
390
+
391
+ #### Bước 2: Tối ưu hóa bộ Test Case
392
+ - Loại bỏ TC trùng lặp, gộp luồng nếu hợp lý
393
+ - Phát hiện TC test item Out-of-Scope → sửa và ghi vào Findings
394
+ - Kiểm tra traceability xuyên suốt: Req ID → Scenario ID → Draft TC ID → Final TC ID
395
+
396
+ #### Bước 3: Soạn thảo Final Result (gồm review metadata)
397
+ - Artifact `[functionId]_04_Test_Cases_Final_Result.md` gồm:
398
+ - Review Summary (số TC tổng, pass/fail trong review)
399
+ - Review Findings (danh sách issue phát hiện)
400
+ - Coverage Validation (đối chiếu Req → TC)
401
+ - Final Test Cases (Approved, đã loại trùng và out-of-scope)
402
+ - RTM Final (Req ID → Scenario ID → TC ID)
403
+ - Sign-off Status (xem bảng bên dưới)
404
+ - Lưu: `docs/ak-{project}/testcase/Result/[functionId]_04_Test_Cases_Final_Result.md`
405
+
406
+ #### Bước 4: Soạn thảo QA Artifact
407
+ - Artifact `[functionId]_04_Test_Review_QA.md` gồm: Metadata, Findings, Issues, Sign-off Status
408
+ - Lưu: `docs/ak-{project}/testcase/QA/[functionId]_04_Test_Review_QA.md`
409
+
410
+ #### Bước 5: Sinh TestCase Artifact — BẮT BUỘC đồng thời với Bước 3 & 4
411
+ - Artifact `[functionId]_TestCase.md` theo `template_testcase.md` — **chỉ gồm:**
412
+ - **Mục 1**: Thông tin chung (điền functionId, ngày tạo)
413
+ - **Mục 2**: Kết quả kiểm thử tổng hợp (reset về 0 chờ execution)
414
+ - **Mục 3**: Danh sách Test Cases Chi Tiết (toàn bộ 5 sections đã Approved)
415
+ - **KHÔNG chứa:** Review Summary, Findings, RTM, Coverage Matrix, Sign-off (thuộc `04_Final_Result.md`)
416
+ - Lưu: `docs/ak-{project}/testcase/TestCase/[functionId]_TestCase.md`
417
+
418
+ #### Bước 6: Xác nhận Sign-off Status
419
+
420
+ | Status | Điều kiện |
421
+ |---|---|
422
+ | ✅ **Fully Approved** | 0 Critical / 0 Major / 0 Minor còn mở, 0 TBD |
423
+ | ✅ **Conditionally Approved** | 0 Critical / 0 Major, còn Minor/TBD — được phép thực thi trừ TC có TBD |
424
+ | ⚠️ **Need Update** | Còn Major issue chưa giải quyết |
425
+ | ❌ **Rejected** | Còn Critical issue, coverage < 100%, hoặc vi phạm template |
426
+
427
+ #### Bước 7: Gate Review & Pause
428
+ - **INVOKE** `gate-review` skill (generate mode) — ghi `.aiflow/review/gate-4-[functionId].md`
429
+ - Hiển thị gate pause message — đợi **APPROVED**
430
+
431
+ **Khi APPROVED:**
432
+ → **INVOKE** `gate-review` skill (verify mode) — chạy `ak review check --gate 4 --ticket [functionId]`
433
+ → Nếu passed: `ak gate 4 approved --ticket [functionId]` → Bộ Test Case hoàn thành, sẵn sàng thực thi
434
+ → Nếu blocked: làm theo gate-review skill response protocol
435
+
436
+ **Definition of Done:**
437
+ - [ ] `[functionId]_04_Test_Cases_Final_Result.md` có đủ Review Summary, Findings, Coverage Validation, RTM Final, Sign-off
438
+ - [ ] `[functionId]_TestCase.md` chỉ chứa Section 1+2+3 theo template chuẩn, không có review metadata
439
+ - [ ] Ba file sinh ĐỒNG THỜI — không tạo một thiếu file kia
440
+ - [ ] Traceability xuyên suốt: Req ID → Scenario ID → Draft TC ID → Final TC ID
441
+ - [ ] Sign-off status đã xác định (Fully / Conditionally / Need Update / Rejected)
442
+
443
+ > **Telemetry:** Run `ak gate 4 start --ticket [functionId]` khi bắt đầu gate này.
444
+ > Run `ak gate 4 approved --ticket [functionId]` sau khi gate-review verify passed. Run as-is — không thêm shell redirects.
445
+
446
+ ---
447
+
448
+ ### Bản đồ Skills theo Gate
449
+
450
+ | Gate | Skills đọc | Output |
451
+ |---|---|---|
452
+ | Gate 1 | `QA_Writing_Standards`, `00.01 Requirement Analysis`, `00.02 Risk Analysis` | `01_Requirement_Analysis_Result.md`, `01_QA.md` |
453
+ | Gate 2 | `00.03 Scenario Builder`, `01.06 Error Guessing`, `03.02 Workflow Testing`, Domain skills | `02_Test_Scenarios_Result.md`, `02_QA.md` |
454
+ | Gate 3 | `template_testcase`, `01.01 BVA`, `01.02 EP`, `01.03 Decision Table`, `01.06 Error Guessing`, `02.01`–`02.04`, `03.01`, `03.03`, `04.01`, `04.04` | `03_Test_Cases_Draft_Result.md`, `03_QA.md` |
455
+ | Gate 4 | `00.04 TC Review`, `99.01 Coverage Review` | `04_Final_Result.md`, `04_QA.md`, `[functionId]_TestCase.md` |
456
+
457
+ ---
458
+
459
+ ### Quy tắc bắt buộc
460
+
461
+ - ❌ **KHÔNG** bỏ qua thứ tự Gate — luôn đi từ Gate 1 → 2 → 3 → 4
462
+ - ❌ **KHÔNG** tự suy diễn nghiệp vụ — ghi rõ Assumption và TBD khi thiếu thông tin
463
+ - ❌ **KHÔNG** sinh `04_Final_Result.md` mà thiếu `[functionId]_TestCase.md` (hoặc ngược lại)
464
+ - ❌ **KHÔNG** tiến gate tiếp theo khi còn issue Critical hoặc Major chưa giải quyết
465
+ - ✅ **BẮT BUỘC** chạy Bước 0 ở Gate 1 — xác nhận `functionId` và thư mục đầu ra trước khi làm bất cứ điều gì
466
+ - ✅ **BẮT BUỘC** đọc skill từ `.claude/skills/test-skills/` — không suy luận từ bộ nhớ
467
+ - ✅ **BẮT BUỘC** invoke `gate-review` cuối mỗi gate và chờ APPROVED
468
+ - ✅ **BẮT BUỘC** tuân thủ 100% `template_testcase.md` ở Gate 3 và Gate 4
469
+ - ✅ **BẮT BUỘC** ba artifact Gate 4 sinh ĐỒNG THỜI
470
+ - ✅ **BẮT BUỘC** Issue Critical/Major phải giải quyết xong trước khi sinh Result artifact