@relipa/ai-flow-kit 0.1.3 → 0.1.4

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 (66) hide show
  1. package/README.md +253 -91
  2. package/bin/aiflow.js +49 -1
  3. package/custom/skills/ba-skills/skill-ba-phan-tich-ban-dau-v1.md +44 -0
  4. package/custom/skills/ba-skills/skill-ba-prototype-v1.md +35 -0
  5. package/custom/skills/ba-skills/skill-ba-qa-template-v1.md +21 -0
  6. package/custom/skills/ba-skills/skill-ba-qa-v1.md +35 -0
  7. package/custom/skills/ba-skills/skill-ba-template-phan-tich-ban-dau-v1.md +30 -0
  8. package/custom/skills/ba-skills/skill-ba-template-uc-v1.md +83 -0
  9. package/custom/skills/ba-skills/skill-ba-ve-luong-mermaid-v1.md +35 -0
  10. package/custom/skills/ba-skills/skill-ba-viet-spec-uc-v1.md +38 -0
  11. package/custom/skills/ba-skills/skill-ba-xay-dung-business-rules-v1.md +39 -0
  12. package/custom/skills/execute-flow/SKILL.md +27 -36
  13. package/custom/skills/gate-review/SKILL.md +119 -0
  14. package/custom/skills/generate-test-report/SKILL.md +1 -1
  15. package/custom/skills/generate-testcase/SKILL.md +50 -11
  16. package/custom/skills/generate-testcase/templates/testcase.md +50 -59
  17. package/custom/skills/test-analysis/SKILL.md +37 -3
  18. package/custom/skills/test-skills/categories/00-core/00.01.requirement-analysis.md +111 -0
  19. package/custom/skills/test-skills/categories/00-core/00.02.risk-analysis.md +24 -0
  20. package/custom/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md +90 -0
  21. package/custom/skills/test-skills/categories/00-core/00.04.testcase-review.md +68 -0
  22. package/custom/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md +30 -0
  23. package/custom/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md +27 -0
  24. package/custom/skills/test-skills/categories/01-test-design/01.03.decision-table.md +26 -0
  25. package/custom/skills/test-skills/categories/01-test-design/01.04.state.transition.md +26 -0
  26. package/custom/skills/test-skills/categories/01-test-design/01.05.pairwise.md +25 -0
  27. package/custom/skills/test-skills/categories/01-test-design/01.06.error-guessing.md +28 -0
  28. package/custom/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md +29 -0
  29. package/custom/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md +57 -0
  30. package/custom/skills/test-skills/categories/02-ui-testing/02.03.navigation.md +27 -0
  31. package/custom/skills/test-skills/categories/02-ui-testing/02.04.localization.md +27 -0
  32. package/custom/skills/test-skills/categories/02-ui-testing/02.05.accessibility.md +27 -0
  33. package/custom/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md +51 -0
  34. package/custom/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md +44 -0
  35. package/custom/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md +41 -0
  36. package/custom/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md +40 -0
  37. package/custom/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md +43 -0
  38. package/custom/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md +44 -0
  39. package/custom/skills/test-skills/categories/04-data-testing/04.01.database-testing.md +43 -0
  40. package/custom/skills/test-skills/categories/04-data-testing/04.02.import-export-testing.md +43 -0
  41. package/custom/skills/test-skills/categories/04-data-testing/04.03.data-mapping.md +39 -0
  42. package/custom/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md +39 -0
  43. package/custom/skills/test-skills/categories/04-data-testing/04.05.migration.md +42 -0
  44. package/custom/skills/test-skills/categories/05-integration/05.01.API-testing.md +37 -0
  45. package/custom/skills/test-skills/categories/05-integration/05.02.third-party-integration.md +36 -0
  46. package/custom/skills/test-skills/categories/05-integration/05.03.batch-processing.md +38 -0
  47. package/custom/skills/test-skills/categories/05-integration/05.04.file-upload-download.md +40 -0
  48. package/custom/skills/test-skills/categories/08-domain-skills/CMS.md +34 -0
  49. package/custom/skills/test-skills/categories/08-domain-skills/Ecommerce.md +35 -0
  50. package/custom/skills/test-skills/categories/99-review/99.01.coverage-review.md +35 -0
  51. package/custom/skills/test-skills/categories/99-review/99.02.knowledge-learning.md +34 -0
  52. package/custom/skills/test-skills/categories/99-review/99.03.repository-update.md +33 -0
  53. package/custom/skills/test-skills/categories/99-review/99.04.change-history.md +38 -0
  54. package/custom/skills/test-skills/rules/Directory_and_Naming_Convention.md +257 -0
  55. package/custom/skills/test-skills/rules/QA_Writing_Standards.md +49 -0
  56. package/custom/skills/test-skills/template/template_testcase.md +83 -0
  57. package/custom/templates/shared/create-spec-workflow.md +435 -0
  58. package/custom/templates/shared/create-testcase-workflow.md +470 -0
  59. package/custom/templates/shared/gate-workflow.md +122 -16
  60. package/docs/common/CHANGELOG.md +47 -0
  61. package/package.json +2 -2
  62. package/scripts/create-score-excel.js +17 -7
  63. package/scripts/init.js +48 -1
  64. package/scripts/review.js +128 -0
  65. package/scripts/update.js +4 -1
  66. package/scripts/use.js +22 -16
@@ -0,0 +1,44 @@
1
+ # Skill: Phân tích yêu cầu ban đầu (BA Analyst) - Phiên bản v1
2
+
3
+ ## 1. Mục đích (Purpose)
4
+ Kỹ năng này giúp Business Analyst (hoặc Agent) quét, đọc hiểu và cấu trúc hóa các yêu cầu thô được cung cấp bởi khách hàng hoặc các stakeholders. Mục tiêu là phân tách rõ ràng giữa các thông tin thực tế (Facts) và các giả định (Assumptions), phát hiện các khoảng trống nghiệp vụ (Gaps), và tạo cơ sở cho việc lập danh sách câu hỏi làm rõ (Q&A) cũng như dự thảo spec ban đầu.
5
+
6
+ ## 2. Kiến thức cần có (Prerequisite Knowledge)
7
+ - **Tư duy phân tích (Analytical Thinking):** Khả năng chia nhỏ một yêu cầu lớn thành các luồng nghiệp vụ nhỏ và các thành phần cấu thành.
8
+ - **Phân biệt Fact vs. Assumption:**
9
+ - *Fact (Sự thật):* Thông tin được ghi rõ ràng trong tài liệu, được khẳng định từ khách hàng.
10
+ - *Assumption (Giả định):* Những giả thiết do BA đưa ra dựa trên kinh nghiệm hoặc ngữ cảnh mà chưa được khách hàng xác nhận bằng văn bản.
11
+ - **Kỹ thuật Gap Analysis:** Kỹ thuật nhận diện các điểm chưa thống nhất, các thông tin bị thiếu (ví dụ: thiếu thông báo lỗi khi validate thất bại, thiếu quy tắc lưu trữ vào cơ sở dữ liệu, thiếu mô tả quyền truy cập).
12
+ - **Thuật ngữ phần mềm cơ bản:** Khách hàng (Client), Người dùng (User), Tác nhân (Actor), Ràng buộc (Constraints), Luồng chính (Happy Path), Trường hợp ngoại lệ (Edge cases).
13
+
14
+ ## 3. Quy trình thực hiện (Step-by-step Process)
15
+ - **Bước 1: Tiếp nhận và đọc quét (Read & Scan):**
16
+ Đọc toàn bộ tài liệu đầu vào (ví dụ trong folder `TÀI LIỆU/input/`) ít nhất 2 lần để nắm bức tranh tổng thể và ngữ cảnh nghiệp vụ.
17
+ Sau đó đọc source code liên quan (nếu workspace có source repos):
18
+ - Ưu tiên đọc: data models/entity, API endpoints hiện tại, service/business logic
19
+ - Mục đích: hiểu hệ thống đang tồn tại, tìm constraints kỹ thuật, tránh đề xuất mâu thuẫn architecture
20
+ - Nếu GitNexus MCP có sẵn: dùng `gitnexus: query()` / `gitnexus: context()` thay vì đọc file trực tiếp
21
+ - **Bước 2: Phân loại thông tin (Categorize):**
22
+ Trích xuất các thông tin theo các cấu trúc:
23
+ - Mục tiêu của chức năng.
24
+ - Các tác nhân tham gia vào luồng.
25
+ - Các yêu cầu chức năng (các hành động, nút bấm, trường thông tin).
26
+ - Các yêu cầu phi chức năng (bảo mật, hiệu năng, nền tảng hệ điều hành/trình duyệt).
27
+ - **Bước 3: Nhận diện và ghi nhận Gap (Identify Gaps):**
28
+ Đối chiếu từng yêu cầu chức năng với các câu hỏi:
29
+ - Dữ liệu đầu vào của trường này có giới hạn độ dài/định dạng không?
30
+ - Nếu để trống thì hệ thống xử lý thế nào? Có thông báo lỗi gì không?
31
+ - Có quy tắc nghiệp vụ (Business rules) ngầm định nào không?
32
+ - Luồng thay thế (Alternative flows) hoặc luồng lỗi (Exception flows) là gì?
33
+ - **Bước 4: Soạn dự thảo Kết quả phân tích ban đầu:**
34
+ Áp dụng template phân tích ban đầu (`skill-ba-template-phan-tich-ban-dau-v1.md`) để điền thông tin và lập bảng Gap/Assumption.
35
+
36
+ ## 4. Checklist kiểm tra (Checklist for Verification)
37
+ - [ ] Đã xác định rõ Mục tiêu hệ thống/chức năng chưa? (Hệ thống giải quyết bài toán gì?)
38
+ - [ ] Đã làm rõ tất cả các Tác nhân (Actors) tham gia chưa?
39
+ - [ ] Đã bóc tách hết các trường thông tin (Inputs) được liệt kê trong tài liệu thô chưa?
40
+ - [ ] Đã ghi nhận rõ ràng danh sách các điểm mơ hồ hoặc thiếu thông tin dưới dạng **Gap/Assumption** chưa?
41
+ - [ ] Không tự tiện bổ sung các tính năng ngoài phạm vi yêu cầu của khách hàng khi chưa có thảo luận/Q&A.
42
+
43
+ ## 5. Output mong đợi (Expected Output)
44
+ - File tài liệu phân tích ban đầu định dạng markdown, cấu trúc thống nhất dựa theo `@skill-ba-template-phan-tich-ban-dau-v1.md`, đặt tên theo chuẩn: `Tên chức năng_Kết quả phân tích(n).md` trong thư mục `TÀI LIỆU/output/Kết quả phân tích/`.
@@ -0,0 +1,35 @@
1
+ # Skill: Thiết kế Layout và Prototype HTML/CSS - Phiên bản v1
2
+
3
+ ## 1. Mục đích (Purpose)
4
+ Kỹ năng này hướng dẫn BA thiết kế và hiện thực hóa giao diện người dùng (UI mockup/prototype) dưới dạng mã nguồn HTML/CSS tự chứa (self-contained). Prototype giúp khách hàng hình dung trực quan luồng đi của màn hình, đồng thời giúp lập trình viên và kiểm thử viên xác định chính xác cấu trúc trang, ID của các phần tử và vị trí hiển thị lỗi.
5
+
6
+ ## 2. Kiến thức cần có (Prerequisite Knowledge)
7
+ - **HTML5 Semantic Tags:** Sử dụng các thẻ ngữ nghĩa như `<header>`, `<main>`, `<section>`, `<nav>`, `<form>`, `<input>`, `<button>`, `<label>` để trang web có cấu trúc chuẩn SEO và dễ kiểm thử.
8
+ - **Vanilla CSS Layouts:** Thành thạo Flexbox và CSS Grid để dựng bố cục nhanh chóng, đáp ứng tốt trên các kích thước màn hình khác nhau (Responsive).
9
+ - **Nguyên lý UX/UI cơ bản:**
10
+ - *Primary Flow & Visual Hierarchy:* Làm nổi bật các thành phần quan trọng bằng kích thước, màu sắc và độ tương phản (ví dụ: nút bấm chính).
11
+ - *Bố cục F-pattern & Z-pattern:* Đặt tiêu đề, logo ở góc trên bên trái, thông tin quan trọng chạy ngang và chéo xuống nút bấm thực thi ở góc dưới bên phải.
12
+ - *Khoảng trắng (Whitespace):* Giữ khoảng cách hợp lý giữa các nhóm thông tin (Chunking) để tránh rối mắt.
13
+
14
+ ## 3. Quy trình thực hiện (Step-by-step Process)
15
+ - **Bước 1: Phân tích các thành phần (Wireframing mentally):**
16
+ Dựa trên tài liệu phân tích, liệt kê tất cả các phần tử UI cần có (ví dụ: Logo, Tiêu đề, Ô nhập ID, Ô nhập Password, Nút Đăng nhập, Link Quên mật khẩu, Vùng hiển thị lỗi).
17
+ - **Bước 2: Dựng khung HTML:**
18
+ - Viết mã HTML chuẩn. Bắt buộc đặt các thuộc tính `id`, `name`, `type`, `placeholder` rõ ràng cho các ô nhập liệu (ví dụ: `<input type="text" id="username" name="username"...>`).
19
+ - Đưa các thông báo lỗi (Error message) vào đúng vị trí dưới các ô nhập liệu, gán class dạng `.error-message` hoặc `.inline-error` và tạm ẩn đi bằng CSS (`display: none;` hoặc thông qua trạng thái ẩn) nhưng vẫn có mặt trong mã nguồn để Tester biết vị trí hiển thị.
20
+ - **Bước 3: Tạo kiểu dáng CSS:**
21
+ - Sử dụng thẻ `<style>` nội bộ nằm ngay trong file HTML (để file HTML tự chứa tất cả tài nguyên, dễ chia sẻ và import vào tài liệu spec).
22
+ - Sử dụng bảng màu hiện đại (tránh màu đỏ/xanh lá gốc, dùng các màu trung tính, dịu mắt phối hợp hiệu ứng hover cho các nút bấm).
23
+ - Đảm bảo thiết kế responsive cơ bản bằng media queries nếu cần.
24
+ - **Bước 4: Kiểm tra và lưu trữ:**
25
+ Mở file HTML trên trình duyệt để kiểm tra trực quan. Lưu vào thư mục `TÀI LIỆU/output/design/`.
26
+
27
+ ## 4. Checklist kiểm tra (Checklist for Verification)
28
+ - [ ] File HTML có tự chứa toàn bộ CSS không? (Không liên kết tới file CSS bên ngoài trừ font chữ hệ thống).
29
+ - [ ] Tất cả các trường nhập liệu đã có thẻ `<label>` tương ứng và thuộc tính `id`, `name` chưa?
30
+ - [ ] Vị trí các thông báo lỗi (Alert và Inline error) đã được dựng sẵn trong code và định dạng rõ ràng chưa?
31
+ - [ ] Giao diện có hiển thị cân đối trên cả màn hình Desktop và Mobile không?
32
+ - [ ] Các phần tử tương tác (Button, Link, Input) có hiệu ứng trực quan khi hover hoặc focus không?
33
+
34
+ ## 5. Output mong đợi (Expected Output)
35
+ - Một file HTML độc lập chứa đầy đủ code HTML và CSS nội bộ, đặt tên theo chuẩn: `Tên chức năng_design.html` trong thư mục `TÀI LIỆU/output/design/`.
@@ -0,0 +1,21 @@
1
+ # Skill: Template Q&A - Phiên bản v1
2
+
3
+ Mẫu tài liệu dùng để trình bày danh sách câu hỏi Q&A và theo dõi phản hồi từ khách hàng.
4
+
5
+ ---
6
+
7
+ # Tài liệu Q&A: [Tên Chức Năng]
8
+
9
+ *Tài liệu này dùng để theo dõi các vấn đề nghiệp vụ cần làm rõ giữa đội ngũ dự án và khách hàng. Trạng thái bao gồm: **Open** (Đang chờ phản hồi), **Confirmed** (Đã thống nhất).*
10
+
11
+ ## Danh sách câu hỏi Q&A
12
+
13
+ | ID | Chức năng / Màn hình | Nội dung yêu cầu hiện tại | Câu hỏi / Điểm chưa rõ | Đề xuất giải pháp (Options) | Câu trả lời của Khách hàng | Trạng thái |
14
+ | :-: | :--- | :--- | :--- | :--- | :--- | :-: |
15
+ | **QA-01** | *Đăng nhập* | *Có text link đổi mật khẩu* | *Text link này sẽ dẫn sang URL cụ thể nào? Hệ thống tự sinh OTP gửi mail hay chuyển sang màn nhập email?* | *- Option A: Chuyển sang URL `/forgot-password` để nhập Email nhận link reset.<br>- Option B: Hiển thị popup nhập SĐT nhận OTP.* | *Khách hàng phản hồi: Chọn Option A, link URL là `/forgot-password`* | **Confirmed** |
16
+ | **QA-02** | | | | | | **Open** |
17
+
18
+ ---
19
+ ## Lịch sử cập nhật tài liệu
20
+ *Sau mỗi lần nhận phản hồi, BA cập nhật bảng trên và ghi nhận lịch sử tại đây:*
21
+ - **Ngày [dd/mm/yyyy]:** Nhận phản hồi lần 1 từ khách hàng cho câu hỏi QA-01. Cập nhật trạng thái sang **Confirmed** và chỉnh sửa tài liệu Phân tích bản đầu tương ứng.
@@ -0,0 +1,35 @@
1
+ # Skill: Xử lý và Thiết kế Q&A (Q&A Specification) - Phiên bản v1
2
+
3
+ ## 1. Mục đích (Purpose)
4
+ Kỹ năng này giúp BA thiết kế các câu hỏi rõ ràng, khách quan và chuyên nghiệp để gửi tới khách hàng/stakeholders nhằm làm rõ các khoảng trống nghiệp vụ (Gaps). Đồng thời, hướng dẫn cách tiếp nhận câu trả lời để cập nhật tài liệu phân tích một cách nhất quán, tránh hiểu sai hoặc tự ý giả định thông tin.
5
+
6
+ ## 2. Kiến thức cần có (Prerequisite Knowledge)
7
+ - **Kỹ năng giao tiếp bằng văn bản (Written Communication):** Sử dụng câu từ ngắn gọn, lịch sự, đi thẳng vào vấn đề.
8
+ - **Kỹ thuật đặt câu hỏi mở và đóng:**
9
+ - Tránh câu hỏi mập mờ (ví dụ: "Hệ thống có cần khóa tài khoản không?").
10
+ - Nên đưa ra các tùy chọn rõ ràng (ví dụ: "Khi nhập sai mật khẩu liên tiếp, hệ thống sẽ xử lý thế nào? Tùy chọn A: Khóa tài khoản sau 5 lần sai trong 30 phút. Tùy chọn B: Chỉ hiển thị thông báo lỗi mà không khóa tài khoản. Tùy chọn C: Ý kiến khác...").
11
+ - **Tư duy kiểm thử (Testing Mindset):** Đứng dưới góc nhìn của Tester để hỏi về các biên dữ liệu, các trường hợp lỗi mạng, mất kết nối cơ sở dữ liệu, hoặc dữ liệu không hợp lệ.
12
+
13
+ ## 3. Quy trình thực hiện (Step-by-step Process)
14
+ - **Bước 1: Chuyển đổi Gap thành câu hỏi Q&A:**
15
+ Từ danh sách khoảng trống phát hiện ở bước Phân tích ban đầu, chuyển mỗi dòng thành một câu hỏi Q&A cụ thể.
16
+ - **Bước 2: Chuẩn hóa câu hỏi theo mẫu `@skill-ba-qa-template-v1.md`:**
17
+ - Xác định phân vùng nghiệp vụ (Module/Screen).
18
+ - Trích dẫn yêu cầu hiện tại (Current Status/Requirement).
19
+ - Nêu rõ vấn đề mơ hồ.
20
+ - Đưa ra các giải pháp đề xuất (Options) cùng giả định của BA.
21
+ - **Bước 3: Nhận phản hồi và Cập nhật (Process Responses):**
22
+ - Khi nhận được câu trả lời từ khách hàng: Đọc kỹ để đảm bảo câu trả lời đã giải quyết triệt để câu hỏi. Nếu câu trả lời vẫn chưa rõ ràng, tiếp tục duy trì trạng thái "Open" và hỏi lại ở version tiếp theo.
23
+ - Nếu đã rõ ràng: Đánh dấu "Resolved" và cập nhật thông tin đó trực tiếp vào tài liệu phân tích hiện tại (`Kết quả phân tích(n).md`).
24
+ - Ghi nhận lịch sử thay đổi để Dev/Test nắm được lý do thay đổi logic.
25
+
26
+ ## 4. Checklist kiểm tra (Checklist for Verification)
27
+ - [ ] Mỗi câu hỏi có chỉ rõ phần màn hình/tính năng liên quan không?
28
+ - [ ] Câu hỏi có sử dụng từ ngữ trung lập, không mang tính áp đặt ý kiến chủ quan của BA không?
29
+ - [ ] Có đưa ra các phương án gợi ý (Option A, Option B...) cho các vấn đề phức tạp để khách hàng dễ lựa chọn không?
30
+ - [ ] Các thuật ngữ viết tắt trong câu hỏi có được giải thích rõ không?
31
+ - [ ] Đã cập nhật đúng và đầy đủ tất cả câu trả lời của khách hàng vào tài liệu phân tích chưa? (Không bỏ sót bất kỳ điểm chốt nào).
32
+
33
+ ## 5. Output mong đợi (Expected Output)
34
+ - File danh sách câu hỏi Q&A định dạng markdown, cấu trúc thống nhất dựa theo `@skill-ba-qa-template-v1.md`, đặt tên theo chuẩn: `Tên chức năng_Q&A(m).md` trong thư mục `TÀI LIỆU/output/QA/`.
35
+ - Tài liệu phân tích được cập nhật tương ứng với phiên bản mới tăng dần `(n+1)`.
@@ -0,0 +1,30 @@
1
+ # Skill: Template Phân Tích Ban Đầu - Phiên bản v1
2
+
3
+ Mẫu tài liệu này được sử dụng để trình bày kết quả phân tích yêu cầu ban đầu sau khi bóc tách từ tài liệu thô.
4
+
5
+ ---
6
+
7
+ # Tài liệu Phân Tích Yêu Cầu Ban Đầu: [Tên Chức Năng]
8
+
9
+ ## 1. Mục tiêu chức năng
10
+ *Mô tả ngắn gọn chức năng này dùng để làm gì? Giải quyết nhu cầu gì của doanh nghiệp hoặc người dùng?*
11
+
12
+ ## 2. Các tác nhân chính (Actors)
13
+ *Liệt kê danh sách các tác nhân (User, Admin, Manager...) sẽ tương tác trực tiếp hoặc gián tiếp với chức năng.*
14
+
15
+ ## 3. Yêu cầu chức năng chi tiết (Functional Requirements)
16
+ *Bóc tách chi tiết các tính năng nhỏ, các nút bấm, các hành động mà hệ thống phải xử lý.*
17
+ - **Giao diện/Trường thông tin:** Liệt kê các trường dữ liệu cần hiển thị hoặc nhập liệu.
18
+ - **Quy tắc nhập liệu sơ bộ:** Định dạng, bắt buộc hay không (Required/Optional).
19
+
20
+ ## 4. Yêu cầu phi chức năng (Non-Functional Requirements)
21
+ *Các yêu cầu về bảo mật, hiệu suất, khả năng tương thích, hoặc giao diện UX/UI đặc thù.*
22
+
23
+ ## 5. Bảng Phân Tích Khoảng Trống & Giả Định (Gap & Assumption Analysis)
24
+
25
+ | # | Tính năng/Luồng nghiệp vụ | Hiện trạng mô tả thô | Khoảng trống (Gap) / Sự mơ hồ phát hiện | Giả định của BA (Assumption) | Đề xuất giải pháp / Q&A ID tương ứng |
26
+ | :-: | :--- | :--- | :--- | :--- | :--- |
27
+ | 1 | *Ví dụ: Nhập Password* | *Mật khẩu được che giấu* | *Có nút show/hide mật khẩu hay không? Đăng nhập sai bao nhiêu lần thì khóa?* | *Mặc định không hiển thị nút show/hide. Cho phép nhập sai tối đa 5 lần.* | *Xem Q&A_01* |
28
+ | 2 | | | | | |
29
+
30
+ *Lưu ý: Bảng này là cơ sở quan trọng nhất để tạo ra danh sách câu hỏi Q&A chuẩn xác cho khách hàng.*
@@ -0,0 +1,83 @@
1
+ # Skill: Template Đặc tả Use Case (Use Case Spec) - Phiên bản v1
2
+
3
+ Cấu trúc chuẩn của một tài liệu đặc tả Use Case hoàn chỉnh dùng để chuyển giao cho Dev/Test.
4
+
5
+ ---
6
+
7
+ # Tài liệu Đặc Tả Use Case: Chức năng [Tên Chức Năng]
8
+
9
+ ## 1. Thông tin chung (General Information)
10
+
11
+ | Thuộc tính | Mô tả chi tiết |
12
+ | :--- | :--- |
13
+ | **Tên chức năng (Function Name)** | [Tên chức năng chính xác] |
14
+ | **Mô tả (Description)** | [Tóm tắt mục đích và giá trị nghiệp vụ của chức năng] |
15
+ | **Tác nhân (Actors)** | [Danh sách các tác nhân sử dụng hoặc bị tác động] |
16
+ | **Tác nhân kích hoạt (Trigger)** | [Sự kiện kích hoạt luồng xử lý này] |
17
+ | **Điều kiện tiên quyết (Pre-Conditions)** | [Các điều kiện hệ thống hoặc trạng thái dữ liệu bắt buộc phải có trước khi thực hiện] |
18
+ | **Điều kiện sau xử lý (Post-Conditions)** | [Trạng thái của hệ thống và dữ liệu sau khi kết thúc thành công] |
19
+
20
+ ### Luồng xử lý chính (Main Flow)
21
+
22
+ | Bước | Tác nhân (Actor Action) | Hệ thống (System Response) |
23
+ | :-: | :--- | :--- |
24
+ | 1 | Người dùng kích hoạt sự kiện... | Hệ thống hiển thị giao diện... |
25
+ | 2 | Người dùng nhập các thông tin... | |
26
+ | 3 | Người dùng nhấn nút... | Hệ thống kiểm tra và thực hiện... |
27
+ | 4 | | Hệ thống thông báo thành công và chuyển hướng... |
28
+
29
+ ### Các luồng thay thế / ngoại lệ (Alternative / Exception Flows)
30
+
31
+ - **Alternative Flow A: [Tên luồng thay thế]**
32
+ - Thực hiện từ bước [X] của Luồng chính:
33
+ - Các bước xử lý: ...
34
+ - **Exception Flow B: [Tên luồng lỗi]**
35
+ - Thực hiện khi xảy ra lỗi: ...
36
+ - Các bước xử lý: ...
37
+
38
+ ---
39
+
40
+ ## 2. Mô tả màn hình (Screen Description)
41
+ *Nhúng code HTML của màn hình prototype hoặc ảnh chụp mockup tại đây:*
42
+
43
+ ```html
44
+ <!-- Dán code HTML/CSS prototype ở đây -->
45
+ ```
46
+
47
+ ---
48
+
49
+ ## 3. Mô tả thành phần giao diện (UI Components Description)
50
+
51
+ | # | Tên Component | Loại Component | Cho phép sửa | Bắt buộc | Giá trị mặc định | Quy tắc định dạng & Giới hạn dữ liệu | Mô tả hành vi & tương tác |
52
+ | :-: | :--- | :--- | :-: | :-: | :--- | :--- | :--- |
53
+ | 1 | `ログインID` | Textbox | Yes | Yes | None | Độ dài: 3-20 ký tự. Chỉ chữ và số. Không chứa khoảng trắng. | Ô nhập tên tài khoản của người dùng. |
54
+ | 2 | `ログイン` | Button | N/A | N/A | N/A | N/A | Nhấn để gửi thông tin đăng nhập lên hệ thống. |
55
+ | 3 | | | | | | | |
56
+
57
+ ---
58
+
59
+ ## 4. Sơ đồ luồng hoạt động (Activity Flow Diagram)
60
+ *Sử dụng biểu đồ Mermaid để trực quan hóa quy trình xử lý.*
61
+
62
+ ```mermaid
63
+ graph TD
64
+ %% Viết mã nguồn Mermaid tại đây
65
+ ```
66
+
67
+ ---
68
+
69
+ ## 5. Quy tắc nghiệp vụ (Business Rules)
70
+
71
+ ### BR1: Quy tắc kiểm tra dữ liệu đầu vào (Validation Rules)
72
+ *Định nghĩa các lỗi khi người dùng nhập dữ liệu sai hoặc để trống.*
73
+ - **[BR1.1] Trống dữ liệu bắt buộc:** Nếu bất kỳ trường bắt buộc nào bị trống khi nhấn nút thực thi:
74
+ - Hệ thống dừng xử lý.
75
+ - Hiển thị lỗi tương ứng: `[Tên thông báo lỗi]` dưới ô nhập liệu bị trống.
76
+ - **[BR1.2] Định dạng dữ liệu không hợp lệ:** ...
77
+
78
+ ### BR2: Quy tắc lưu trữ dữ liệu (Saving Rules)
79
+ *Định nghĩa cách dữ liệu được ghi nhận vào cơ sở dữ liệu.*
80
+ - **[BR2.1]** Hệ thống ghi nhận thời gian đăng nhập vào bảng `user_logs` với các trường: `user_id`, `login_time`, `status`.
81
+
82
+ ### BR3: Quy tắc phân quyền & Bảo mật (Authorization & Security Rules)
83
+ - **[BR3.1]** Sau 5 lần nhập sai mật khẩu liên tiếp, tài khoản tự động bị khóa trong 30 phút.
@@ -0,0 +1,35 @@
1
+ # Skill: Vẽ luồng hoạt động bằng Mermaid (Mermaid Charting) - Phiên bản v1
2
+
3
+ ## 1. Mục đích (Purpose)
4
+ Kỹ năng này giúp BA chuyển đổi các đặc tả luồng nghiệp vụ văn bản (Main flow, Alternative flows, Exception flows) thành một sơ đồ hoạt động trực quan (Activity Diagram) sử dụng mã nguồn Mermaid. Sơ đồ này giúp lập trình viên nắm bắt luồng đi tổng thể của hệ thống một cách tức thì và giúp kiểm thử viên xác minh các nhánh rẽ của kịch bản.
5
+
6
+ ## 2. Kiến thức cần có (Prerequisite Knowledge)
7
+ - **Cấu trúc biểu đồ Flowchart trong Mermaid:**
8
+ - Khai báo hướng biểu đồ: Dùng `graph TD` (Top-Down - từ trên xuống) hoặc `graph LR` (Left-to-Right - từ trái sang phải). Đối với quy trình nghiệp vụ phần mềm, khuyến nghị dùng `graph TD`.
9
+ - **Ký pháp hình khối chuẩn:**
10
+ - Khởi đầu/Kết thúc (Start/End): Dùng hình elip/bo góc `([Bắt đầu / Trang chủ])`.
11
+ - Hành động/Xử lý (Process/Action): Dùng hình chữ nhật `[Hành động của Actor hoặc xử lý của System]`.
12
+ - Điểm quyết định/Rẽ nhánh (Decision): Dùng hình thoi `{Điều kiện kiểm tra}`.
13
+ - Hiển thị thông tin/Thông báo lỗi: Dùng hình chữ nhật bo góc hoặc hình bình hành.
14
+ - **Liên kết nhánh (Arrows & Labels):** Sử dụng `-->|Nhãn nhánh rẽ|` để nối các khối và đặt tên cho các đường đi (ví dụ: `-->|Hợp lệ|`, `-->|Không hợp lệ|`).
15
+
16
+ ## 3. Quy trình thực hiện (Step-by-step Process)
17
+ - **Bước 1: Xác định điểm bắt đầu và kết thúc:**
18
+ Điểm bắt đầu thường là trigger của Use Case (ví dụ: Người dùng nhấn nút mở trang, hoặc vào link URL). Điểm kết thúc là các Post-conditions (thành công hoặc dừng luồng lỗi).
19
+ - **Bước 2: Vẽ luồng chính trước (Happy Path):**
20
+ Nối các bước xử lý bình thường từ đầu đến cuối mà không có lỗi xảy ra. Sử dụng các mũi tên thẳng xuống.
21
+ - **Bước 3: Thêm các điểm rẽ nhánh (Alternative/Exception branches):**
22
+ Tại các bước hệ thống kiểm tra thông tin, chèn các khối hình thoi `{Điều kiện}`. Vẽ nhánh thành công tiếp tục đi xuống luồng chính, và các nhánh lỗi quay ngược lại form nhập liệu hoặc đi tới kết thúc lỗi.
23
+ - **Bước 4: Tinh chỉnh cú pháp Mermaid để tránh lỗi render:**
24
+ - Tránh sử dụng các ký tự đặc biệt như ngoặc đơn `()`, ngoặc vuông `[]`, dấu nháy kép bên trong nhãn của nút bấm trừ khi nhãn được bọc hoàn toàn trong dấu nháy kép. Ví dụ đúng: `A["Hiển thị thông báo (Lỗi 404)"]`.
25
+ - Đảm bảo mỗi khối có ID định danh độc nhất (ví dụ: `A`, `B`, `C`, `Step1`, `Check1`).
26
+
27
+ ## 4. Checklist kiểm tra (Checklist for Verification)
28
+ - [ ] Biểu đồ có bắt đầu bằng `graph TD` không?
29
+ - [ ] Tất cả các điểm quyết định (các câu lệnh IF/THEN hoặc kiểm tra hợp lệ) có sử dụng hình thoi `{}` không?
30
+ - [ ] Các nhánh đi ra khỏi hình thoi có được gán nhãn rõ ràng (ví dụ: Đúng/Sai, Có/Không) không?
31
+ - [ ] Có nhánh lỗi nào bị "treo" (không dẫn đi đâu) không? Mọi nhánh phải dẫn về một bước thao tác tiếp theo hoặc kết thúc luồng.
32
+ - [ ] Nhãn của các khối chứa ký tự đặc biệt đã được bọc trong dấu nháy kép `""` chưa để tránh lỗi biên dịch Mermaid?
33
+
34
+ ## 5. Output mong đợi (Expected Output)
35
+ - Một đoạn mã nguồn Mermaid hợp lệ, nằm trong khối ```mermaid và được nhúng trực tiếp vào Mục 4 của tài liệu Đặc tả Use Case.
@@ -0,0 +1,38 @@
1
+ # Skill: Viết Đặc tả Use Case (Use Case Specification) - Phiên bản v1
2
+
3
+ ## 1. Mục đích (Purpose)
4
+ Kỹ năng này giúp BA chuyển hóa toàn bộ các thông tin yêu cầu nghiệp vụ đã được thống nhất sau quá trình Q&A thành một tài liệu Đặc tả Use Case (Use Case Spec) hoàn chỉnh. Tài liệu này là "nguồn sự thật duy nhất" (Single Source of Truth) giúp đội ngũ Dev lập trình chính xác và đội ngũ Test thiết kế toàn bộ kịch bản kiểm thử (Test Cases/Scripts).
5
+
6
+ ## 2. Kiến thức cần có (Prerequisite Knowledge)
7
+ - **Cấu trúc Use Case chuẩn:** Hiểu rõ các thành phần của một Use Case Spec bao gồm: Thông tin chung, Mô tả màn hình, Mô tả thành phần UI, Luồng hoạt động (Activity Flow) và Quy tắc nghiệp vụ (Business Rules).
8
+ - **Cách mô tả Luồng xử lý (Flow):**
9
+ - Phân biệt hành động của Tác nhân (Actor Action) và phản hồi của Hệ thống (System Response).
10
+ - Trình bày mạch lạc theo các bước đánh số thứ tự (1, 2, 3...).
11
+ - **Tính liên kết logic:** Đảm bảo mã lỗi, thông báo lỗi trong Business Rules phải khớp với các mô tả thành phần UI và vị trí hiển thị lỗi trên Prototype.
12
+
13
+ ## 3. Quy trình thực hiện (Step-by-step Process)
14
+ - **Bước 1: Điền thông tin chung (General Information):**
15
+ Xác định chính xác Function Name, Description, Actors, Trigger, Pre-Conditions, Main Flow tóm tắt, và Post-Conditions.
16
+ - **Bước 2: Tích hợp thiết kế màn hình:**
17
+ Nhúng mã nguồn HTML/CSS (hoặc đường dẫn liên kết) của màn hình thiết kế tương ứng vào mục Screen Description.
18
+ - **Bước 3: Mô tả các thành phần UI (UI Components):**
19
+ Lập bảng chi tiết tất cả các control trên giao diện (các input fields, buttons, links, labels). Đối với mỗi thành phần, cần làm rõ:
20
+ - Kiểu dữ liệu nhập vào (Text, Number, Date...).
21
+ - Độ dài giới hạn (Min/Max length).
22
+ - Tính bắt buộc (Mandatory: Yes/No).
23
+ - Giá trị mặc định (Default Value).
24
+ - Mô tả hành vi (Description).
25
+ - **Bước 4: Thiết kế sơ đồ Mermaid (Activity Flow):**
26
+ Áp dụng kỹ năng `@skill-ba-ve-luong-mermaid-v1.md` để vẽ và nhúng biểu đồ Mermaid.
27
+ - **Bước 5: Đặc tả Business Rules (Quy tắc nghiệp vụ):**
28
+ Áp dụng kỹ năng `@skill-ba-xay-dung-business-rules-v1.md` để viết chi tiết các điều kiện kiểm tra, validation logic và câu thông báo lỗi đi kèm.
29
+
30
+ ## 4. Checklist kiểm tra (Checklist for Verification)
31
+ - [ ] Luồng đi (Flow) có mô tả rõ ràng sự tương tác qua lại giữa Actor và System chưa?
32
+ - [ ] Bảng mô tả UI Components có bị bỏ sót bất kỳ thành phần nào trên prototype HTML không?
33
+ - [ ] Các Business Rules (BR) đã được đánh mã số rõ ràng (BR1, BR2, BR3...) để dễ tham chiếu chưa?
34
+ - [ ] Mọi trường hợp báo lỗi đều có câu thông báo lỗi (Error message) đi kèm chi tiết chưa?
35
+ - [ ] Tài liệu có sử dụng định dạng markdown chuẩn và cấu trúc thống nhất theo mẫu `@skill-ba-template-uc-v1.md` chưa?
36
+
37
+ ## 5. Output mong đợi (Expected Output)
38
+ - Một tài liệu đặc tả Use Case hoàn chỉnh định dạng markdown, đặt tên theo chuẩn: `Tên chức năng_UC.md` trong thư mục `TÀI LIỆU/output/UC/`.
@@ -0,0 +1,39 @@
1
+ # Skill: Phân tích và Xây dựng Business Rules (Quy tắc nghiệp vụ) - Phiên bản v1
2
+
3
+ ## 1. Mục đích (Purpose)
4
+ Kỹ năng này giúp BA bóc tách, chuẩn hóa và đặc tả các quy tắc nghiệp vụ (Business Rules - BR) của hệ thống một cách chặt chẽ nhất. Các quy tắc nghiệp vụ được định nghĩa chi tiết tại đây sẽ là căn cứ trực tiếp để lập trình viên viết code logic (backend/frontend) và kiểm thử viên viết các kịch bản kiểm thử (Test Cases), đảm bảo bao phủ toàn bộ các trường hợp biên và ngoại lệ.
5
+
6
+ ## 2. Kiến thức cần có (Prerequisite Knowledge)
7
+ - **Các loại Business Rules phổ biến:**
8
+ - *Validation Rules (Quy tắc kiểm tra dữ liệu):* Bao gồm kiểm tra rỗng (Required), kiểm tra định dạng (Format - Regex, Email, số điện thoại), kiểm tra độ dài/giới hạn (Length/Range), và kiểm tra ràng buộc chéo giữa các trường (Dependency validation - ví dụ: Ngày kết thúc phải sau Ngày bắt đầu).
9
+ - *Processing/Calculation Rules (Quy tắc xử lý và tính toán):* Các công thức toán học, thuật toán phân chia logic (ví dụ: công thức tính thuế, logic tính điểm thưởng).
10
+ - *Database/Saving Rules (Quy tắc lưu trữ và ghi nhận dữ liệu):* Các hành động xảy ra trong DB sau khi nghiệp vụ hoàn thành (ví dụ: lưu vào bảng log hệ thống, cập nhật trạng thái đơn hàng từ Draft sang Pending).
11
+ - *Authorization & Security Rules (Quy tắc phân quyền và bảo mật):* Ai được phép thao tác? Khi nào tài khoản bị khóa?
12
+ - **Cách phân tích Giá trị Biên (Boundary Value Analysis) & Phân vùng tương đương (Equivalence Partitioning):** Tư duy chia dữ liệu để phát hiện điểm thiếu logic (ví dụ: Quy định nhập từ 3-20 ký tự thì phải xác định rõ các biên 2, 3, 20, 21 ký tự sẽ xử lý thế nào).
13
+
14
+ ## 3. Quy trình thực hiện (Step-by-step Process)
15
+ - **Bước 1: Xác định các điểm cần áp dụng Quy tắc nghiệp vụ:**
16
+ Duyệt qua danh sách các trường thông tin (Inputs) và các nút thao tác chính (Actions) trên giao diện.
17
+ - **Bước 2: Phân loại và phân nhóm các Business Rules:**
18
+ Đặt mã định danh duy nhất cho từng quy tắc dưới định dạng: `[BR<Nhóm>.<Số thứ tự>]`
19
+ - Nhóm 1: Validation (ví dụ: `[BR1.1]`, `[BR1.2]`)
20
+ - Nhóm 2: Processing & Saving (ví dụ: `[BR2.1]`)
21
+ - Nhóm 3: Authorization & Security (ví dụ: `[BR3.1]`)
22
+ - **Bước 3: Chi tiết hóa từng quy tắc nghiệp vụ:**
23
+ Mỗi quy tắc cần ghi rõ:
24
+ - **Điều kiện kích hoạt (Trigger/Condition):** Khi người dùng làm gì hoặc khi dữ liệu đạt trạng thái nào?
25
+ - **Logic kiểm tra (Logic/Calculation):** Hệ thống so sánh, tính toán như thế nào?
26
+ - **Kết quả trả về khi kiểm tra thất bại (Failure Action):** Hệ thống hiển thị câu thông báo lỗi (Error message) cụ thể là gì? Ở vị trí nào? Màu sắc ra sao?
27
+ - **Kết quả trả về khi kiểm tra thành công (Success Action):** Hệ thống lưu trữ vào bảng nào? Chuyển hướng đi đâu?
28
+ - **Bước 4: Rà soát tính đầy đủ cùng Tester:**
29
+ Đảm bảo mọi lỗi phát sinh đều có thông báo lỗi tương ứng và không bị chồng chéo logic.
30
+
31
+ ## 4. Checklist kiểm tra (Checklist for Verification)
32
+ - [ ] Tất cả các trường dữ liệu bắt buộc (Mandatory fields) đã có quy tắc xử lý khi để trống chưa?
33
+ - [ ] Đã chỉ định chính xác vị trí hiển thị và nội dung chi tiết của các thông báo lỗi chưa? (Ví dụ: Hiển thị inline ngay dưới ô nhập liệu hay hiển thị popup cảnh báo?)
34
+ - [ ] Đã làm rõ logic đối với các ký tự đặc biệt, khoảng trắng (space) và chữ hoa/chữ thường chưa?
35
+ - [ ] Quy tắc lưu trữ đã chỉ ra các bảng cơ sở dữ liệu bị tác động trực tiếp chưa?
36
+ - [ ] Phân quyền thao tác cho từng tác nhân (Actor) đã được mô tả rõ chưa?
37
+
38
+ ## 5. Output mong đợi (Expected Output)
39
+ - Mục 5 (Business rules) của tài liệu đặc tả Use Case chứa danh sách các quy tắc nghiệp vụ được cấu trúc hóa rõ ràng, ký hiệu hóa khoa học theo chuẩn `[BR...]`, có kèm theo nội dung text thông báo lỗi chi tiết.
@@ -71,6 +71,26 @@ Chờ tester trả lời rồi mới tiếp tục.
71
71
 
72
72
  Nếu nhiều màn hình khác repo → hỏi từng màn hình một.
73
73
 
74
+ ### Bước 1b: Đọc Source Code (nếu workspace có source repos)
75
+
76
+ Chạy ngay sau khi xác định được `Repo`, trước khi extract TCs.
77
+
78
+ Nếu workspace mở dạng parent folder chứa cả `ak docs` lẫn source code repos:
79
+
80
+ 1. **Nếu GitNexus MCP có sẵn** (`.mcp.json` có entry `gitnexus`):
81
+ - `gitnexus: query("tên màn hình {ScreenID}")` → tìm component, page, form liên quan
82
+ - `gitnexus: context("ComponentName")` → xem toàn bộ component/template
83
+ 2. **Nếu không có GitNexus**: đọc trực tiếp trong `{repo}/`:
84
+ - Component / Page / View của màn hình — tìm `data-testid`, `id`, `name` của các element
85
+ - Form / Input structure — hiểu hierarchy của DOM
86
+ - Route / path mapping — xác nhận URL path của màn hình
87
+ 3. Lưu lại thông tin để Gate 2 (Script Sync) sử dụng:
88
+ - Danh sách `data-testid` / `id` của các element tương tác
89
+ - Cấu trúc form (fieldset, section, tab nếu có)
90
+ - URL path chính xác của màn hình
91
+
92
+ > Mục đích: Giúp `script-sync` (Gate 2) viết Playwright scripts với selectors chính xác hơn, giảm phụ thuộc vào browser snapshot khi app chưa chạy.
93
+
74
94
  ### Bước 2: Extract TCs từ Section 3
75
95
 
76
96
  Đọc tất cả rows trong các bảng Section 3.x, extract:
@@ -139,18 +159,16 @@ Nhận về: danh sách kết quả per TC.
139
159
 
140
160
  ### Hiển thị kết quả
141
161
 
142
- ```
143
162
  ⏸️ GATE 2: SCRIPT SYNC COMPLETE
144
163
 
145
164
  Gen mới: {N} | Updated: {N} | Skipped: {N}
146
165
  Manual (Untest): {N} TCs
147
166
  Blocked: {N} TCs — xem lý do bên trên
148
167
 
149
- → Review: ak-test/{repo}/scripts/{screenId}/{ScreenID}.spec.ts
168
+ → Review: [ak-test/{repo}/scripts/{screenId}/{ScreenID}.spec.ts](ak-test/{repo}/scripts/{screenId}/{ScreenID}.spec.ts)
150
169
  → Type APPROVED to run tests
151
170
  → Type SKIP: {TC_ID} để đánh dấu Pending và tiếp tục
152
171
  → Or provide feedback to fix scripts
153
- ```
154
172
 
155
173
  Dừng. Chờ APPROVED.
156
174
 
@@ -287,26 +305,7 @@ Với mỗi TC failed, tạo `ak-test/{repo}/results/{screenId}/run-{N}/bugs/BUG
287
305
 
288
306
  BUG số: đếm file trong `bugs/` folder, +1. Format: `001`, `002`,...
289
307
 
290
- ### Bước 6: Cập nhật TC file gốc
291
-
292
- Ghi kết quả vào các cột R1/R2 trong TC file:
293
-
294
- - R1 = lần chạy đầu tiên (run-1). Nếu R1 đã có giá trị → ghi vào R2.
295
- - R1 Tester = `AI-R1`, R2 Tester = `AI-R2`
296
-
297
- ```markdown
298
- | AD10_001 | ... | ✅ Pass | {YYYY-MM-DD} | AI-R1 | | | |
299
- | AD10_005 | ... | ❌ Fail | {YYYY-MM-DD} | AI-R1 | | | |
300
- | AD10_023 | ... | ⏭️ Untest | - | - | | | |
301
- ```
302
-
303
- Cập nhật Section 2 — Test Execution Summary table:
304
-
305
- ```markdown
306
- | Round {N} | {passed} | {failed} | {untest} | {pending} | {total} | {passed/total*100}% |
307
- ```
308
-
309
- ### Bước 7: Hiển thị Gate 3
308
+ ### Bước 6: Hiển thị Gate 3
310
309
 
311
310
  ```
312
311
  ⏸️ GATE 3: EXECUTION COMPLETE
@@ -341,8 +340,7 @@ Khi tester gõ `RETEST: AD10_005, AD10_008`:
341
340
  ```
342
341
  3. Xác định run number mới (run-{N+1})
343
342
  4. Tổ chức evidence vào `run-{N+1}/` (không xóa run cũ)
344
- 5. Cập nhật R2 columns trong TC file
345
- 6. Cập nhật bug status:
343
+ 5. Cập nhật bug status:
346
344
  - TC pass sau retest → ghi `RESOLVED` vào bug file: `**Status:** ✅ Resolved`
347
345
  - TC vẫn fail → ghi `**Retest {N}:** Still OPEN` vào bug file
348
346
 
@@ -362,11 +360,7 @@ Chỉ chạy sau Gate 3 APPROVED.
362
360
 
363
361
  Đọc `bugs/BUG-*.md` trong run folder: phân loại severity + status (Open/Resolved).
364
362
 
365
- ### Bước 2: Cập nhật Section 2 trong TC file
366
-
367
- Cập nhật bảng Test Execution Summary với số liệu từ R1 và R2.
368
-
369
- ### Bước 3: Sinh testreport.md
363
+ ### Bước 2: Sinh testreport.md
370
364
 
371
365
  Tạo `ak-test/{repo}/results/{screenId}/run-{N}/testreport.md` theo template chuẩn:
372
366
 
@@ -402,7 +396,7 @@ Tạo `ak-test/{repo}/results/{screenId}/run-{N}/testreport.md` theo template ch
402
396
  - Còn Critical hoặc High Open → No-go
403
397
  - Chỉ còn Medium/Low Open → Conditional go
404
398
 
405
- ### Bước 4: Bug logging flow
399
+ ### Bước 3: Bug logging flow
406
400
 
407
401
  Hỏi từng bug theo thứ tự severity (Critical → High → Medium → Low):
408
402
 
@@ -423,9 +417,8 @@ Nếu tester gõ `Y`:
423
417
 
424
418
  Nếu `n` hoặc `SKIP-BUG`: ghi `Not logged` trong testreport.md Bug Summary.
425
419
 
426
- ### Bước 5: Hiển thị Gate 4
420
+ ### Bước 4: Hiển thị Gate 4
427
421
 
428
- ```
429
422
  ⏸️ GATE 4: REPORT READY
430
423
 
431
424
  Overall: {Pass / Fail / Conditional}
@@ -433,10 +426,9 @@ Passed: {N}/{total} | % hoàn thành: {N}%
433
426
  Bugs logged to Jira: {N}/{total bugs}
434
427
  Recommendation: {Go / No-go / Conditional go}
435
428
 
436
- → Review: ak-test/{repo}/results/{screenId}/run-{N}/testreport.md
429
+ → Review: [ak-test/{repo}/results/{screenId}/run-{N}/testreport.md](ak-test/{repo}/results/{screenId}/run-{N}/testreport.md)
437
430
  → Type APPROVED to sign off
438
431
  → Type NO-GO: {reason} to reject release
439
- ```
440
432
 
441
433
  Dừng. Chờ APPROVED hoặc NO-GO.
442
434
 
@@ -473,7 +465,6 @@ SKIP-BUG: BUG-{NNN} # bỏ qua không log bug này
473
465
 
474
466
  - ✅ Dừng ở mỗi gate, chờ APPROVED trước khi proceed
475
467
  - ✅ `run-{N}` không bao giờ bị xóa hay overwrite — luôn tạo folder mới
476
- - ✅ R1/R2 trong TC file gốc được cập nhật sau mỗi lần chạy
477
468
  - ✅ Hỏi từng bug một — không auto-log toàn bộ
478
469
  - ❌ Không lấy expected result từ PR/code — chỉ từ TC file
479
470
  - ❌ Không skip gate kể cả khi "chỉ có 1 TC"
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: gate-review
3
+ description: Generate a checkbox review file for a gate output and verify it when APPROVED is received. Called at every gate pause point in both dev and tester workflows.
4
+ keywords: gate review, checkbox, review file, approved, mandatory review
5
+ ---
6
+
7
+ # Gate Review — Mandatory Checkbox Protocol
8
+
9
+ > **Purpose:** Prevent blind approval. Every gate output gets a review file with one checkbox per key section. Developer checks off items in VSCode. APPROVED is only accepted after all items are checked.
10
+
11
+ ---
12
+
13
+ ## When to invoke this skill
14
+
15
+ This skill is invoked in **two modes** at every gate pause point:
16
+
17
+ | Mode | When | What AI does |
18
+ |------|------|-------------|
19
+ | `generate` | Immediately after AI finishes gate output | Write `.aiflow/review/gate-N-[ticket].md` |
20
+ | `verify` | When developer types `APPROVED` | Run `ak review check`, interpret result, proceed or block |
21
+
22
+ ---
23
+
24
+ ## File Naming Rules
25
+
26
+ **Standard gates (Dev and Tester):**
27
+
28
+ ```
29
+ .aiflow/review/gate-[N]-[ticket-id].md
30
+ ```
31
+
32
+ **Tester Gate 2 sub-phases only:**
33
+
34
+ Tester Gate 2 produces multiple review files — one per sub-phase. Use a letter suffix instead of the base gate number alone:
35
+
36
+ ```
37
+ .aiflow/review/gate-2a-[ticket-id].md ← first sub-phase
38
+ .aiflow/review/gate-2b-[ticket-id].md ← second sub-phase
39
+ .aiflow/review/gate-2c-[ticket-id].md ← third sub-phase
40
+ (and so on)
41
+ ```
42
+
43
+ > **IMPORTANT:** Do NOT use `gate-2-[ticket].md` for Tester Gate 2 sub-phases. Always use the lettered form (`gate-2a`, `gate-2b`, etc.) so each sub-phase has its own distinct review file and the `ak review check` command can target the correct file.
44
+
45
+ ---
46
+
47
+ ## Mode 1: GENERATE — Prepare Inline Review & Output Document
48
+
49
+ When generating the output for a gate (e.g. `requirement.md` or `plan.md`), follow these steps:
50
+
51
+ ### Step 1: Ensure review directories and comments database exist
52
+
53
+ 1. Always create the directory `.aiflow/review/` if it doesn't exist.
54
+ 2. Check if `.aiflow/review/comments-[ticket-id].json` exists (where `[ticket-id]` comes from `.aiflow/context/current.json` → `ticketId` field).
55
+ 3. If the JSON file does not exist, initialize it by writing an empty array `[]` (or `{ "comments": [] }`) to it. This ensures that the CLI verification commands do not fail due to a missing file when there are no comments.
56
+
57
+ ### Step 2: Write the gate output file
58
+ Write the gate output file (e.g. `plan/[ticket-id]/requirement.md`, `plan/[ticket-id]/plan.md`, or `docs/ak-[project]/...`) as specified by the gate instructions.
59
+
60
+ ### Step 3: Display gate pause message
61
+
62
+ Instruct the user to review the generated document. Tell them that they can hover over any line and add inline comments in VS Code using the native commenting UI, or edit the file to add standard HTML comments `<!-- comment -->` if they are not using the VS Code extension.
63
+
64
+ Display in chat:
65
+
66
+ ```
67
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
68
+ ⏸️ GATE [N] PAUSED — REVIEW REQUIRED
69
+
70
+ 📋 Open in VS Code: [path/to/generated/file.md](path/to/generated/file.md)
71
+
72
+ • Review the generated document content directly.
73
+ • Hover over any line to add specific comments (inline review).
74
+ • Mark comments as "Resolved" in VS Code once addressed.
75
+ • Type APPROVED when done.
76
+
77
+ ⚠️ APPROVED will not be accepted until all inline comments are resolved.
78
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
79
+ ```
80
+
81
+ ---
82
+
83
+ ## Mode 2: VERIFY — Check Comments and Checklist on APPROVED
84
+
85
+ When the developer types `APPROVED`, run this check:
86
+
87
+ ### Step 1: Run CLI check
88
+
89
+ ```bash
90
+ ak review check --gate [N] --ticket [ticket-id]
91
+ ```
92
+
93
+ ### Step 2: Interpret result
94
+
95
+ **Exit code 0 — all checked & resolved:**
96
+ - Gate proceeds normally
97
+ - Run telemetry: `ak gate [N] approved --ticket [ticket-id]`
98
+ - Continue to next gate
99
+
100
+ **Exit code 1 — file missing:**
101
+ - AI response: "The review session files weren't found. Let me prepare them."
102
+ - Re-run Mode 1 (initialize `comments-[ticket-id].json` and output file) and display pause message.
103
+
104
+ **Exit code 1 — items with comments (need revision):**
105
+ If the CLI reports unresolved comments, the AI must:
106
+ 1. Read the unresolved comments returned by the CLI (which include file path, line number, and comment text).
107
+ 2. Read the source file at those line numbers to understand the context.
108
+ 3. Update the specific sections of the document to address the comments.
109
+ 4. Tell the user what was updated, ask them to mark the comment thread as resolved in VS Code, and type `APPROVED`.
110
+
111
+ ---
112
+
113
+ ## Mandatory Rules
114
+
115
+ - ❌ **NEVER** accept `APPROVED` without first running `ak review check`
116
+ - ✅ **ALWAYS** ensure `.aiflow/review/` directory exists (use `mkdir -p`)
117
+ - ✅ **ALWAYS** initialize `.aiflow/review/comments-[ticket-id].json` with `[]` if not present when starting a gate pause.
118
+ - ✅ **ALWAYS** use the ticket ID from `.aiflow/context/current.json` in the file name
119
+ - ✅ **ALWAYS** use lettered suffixes (`gate-2a`, `gate-2b`, …) for Tester Gate 2 sub-phases — never plain `gate-2`
@@ -75,7 +75,7 @@ Coverage: [N]% acceptance criteria covered
75
75
  Recommendation: [Go / No-Go / Conditional go]
76
76
  [Nếu Conditional: điều kiện cụ thể]
77
77
 
78
- → Review: test-plan/test-report.md
78
+ → Review: [test-plan/test-report.md](test-plan/test-report.md)
79
79
  → Type APPROVED to sign off and submit to Backlog/Jira
80
80
  → Type NO-GO: [reason] to reject release
81
81
  ```