@relipa/ai-flow-kit 0.2.0-beta.0 → 0.2.0-beta.1
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/bin/aiflow.js +56 -0
- package/custom/rules/output-language.md +36 -0
- package/custom/skills/automation-testing/SKILL.md +1 -1
- package/custom/skills/ba-skills/skill-ba-build-business-rules-v1.md +2 -0
- package/custom/skills/ba-skills/skill-ba-initial-analysis-v1.md +2 -0
- package/custom/skills/ba-skills/skill-ba-mermaid-flowchart-v1.md +2 -0
- package/custom/skills/ba-skills/skill-ba-qna-v1.md +2 -0
- package/custom/skills/ba-skills/skill-ba-ui-prototype-v1.md +2 -0
- package/custom/skills/ba-skills/skill-ba-write-uc-spec-v1.md +2 -0
- package/custom/skills/coverage-check/SKILL.md +2 -0
- package/custom/skills/create-system-requirement/SKILL.md +11 -7
- package/custom/skills/deploy-model/SKILL.md +2 -0
- package/custom/skills/design-experiment/SKILL.md +2 -0
- package/custom/skills/evaluate-model/SKILL.md +2 -0
- package/custom/skills/evidence-aggregation/SKILL.md +2 -0
- package/custom/skills/execute-flow/SKILL.md +2 -0
- package/custom/skills/explore-data/SKILL.md +2 -0
- package/custom/skills/frame-ml-problem/SKILL.md +2 -0
- package/custom/skills/gate-review/SKILL.md +2 -0
- package/custom/skills/generate-spec/SKILL.md +2 -0
- package/custom/skills/generate-test-report/SKILL.md +2 -0
- package/custom/skills/generate-testcase/SKILL.md +2 -0
- package/custom/skills/impact-analysis/SKILL.md +2 -0
- package/custom/skills/improve-algorithm/SKILL.md +2 -0
- package/custom/skills/ingest-data/SKILL.md +116 -2
- package/custom/skills/log-bug/SKILL.md +2 -0
- package/custom/skills/pr-impact-analysis/SKILL.md +2 -0
- package/custom/skills/read-study-requirement/SKILL.md +13 -7
- package/custom/skills/report-customer/SKILL.md +6 -2
- package/custom/skills/retest-orchestration/SKILL.md +2 -0
- package/custom/skills/review-plan/SKILL.md +2 -0
- package/custom/skills/script-sync/SKILL.md +1 -1
- package/custom/skills/test-analysis/SKILL.md +2 -0
- package/custom/skills/test-skills/rules/qa-writing-standards.md +2 -2
- package/custom/skills/train-model/SKILL.md +2 -0
- package/custom/templates/shared/create-testcase-workflow.md +32 -1
- package/custom/templates/shared/gate-workflow.md +15 -0
- package/docs/common/CHANGELOG.md +13 -0
- package/package.json +1 -1
- package/scripts/create-score-excel.js +4 -111
- package/scripts/init.js +24 -1
- package/scripts/link-resolver.js +93 -0
- package/scripts/ticket-writer.js +247 -0
- package/scripts/use.js +141 -0
package/bin/aiflow.js
CHANGED
|
@@ -22,6 +22,7 @@ const { record } = require('../scripts/telemetry/record');
|
|
|
22
22
|
const { updateTaskGateState } = require('../scripts/task');
|
|
23
23
|
const scaffoldPlaywrightCommand = require('../scripts/scaffold-playwright');
|
|
24
24
|
const docsBranchCommand = require('../scripts/docs-branch');
|
|
25
|
+
const ticketWriterCommand = require('../scripts/ticket-writer');
|
|
25
26
|
const semver = require('semver');
|
|
26
27
|
const { execSync: execSyncChild, spawnSync } = require('child_process');
|
|
27
28
|
|
|
@@ -238,6 +239,61 @@ Exit codes:
|
|
|
238
239
|
}
|
|
239
240
|
});
|
|
240
241
|
|
|
242
|
+
// ── backlog-projects ─────────────────────────────────────────
|
|
243
|
+
program
|
|
244
|
+
.command('backlog-projects')
|
|
245
|
+
.description('List Backlog projects in the configured space, and which one is the default for manually-created tasks')
|
|
246
|
+
.option('--json', 'output as JSON (for headless callers, e.g. the VS Code extension)')
|
|
247
|
+
.action((options) => {
|
|
248
|
+
useCommand.listBacklogProjectsCommand(options);
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// ── backlog-set-default-project ──────────────────────────────
|
|
252
|
+
program
|
|
253
|
+
.command('backlog-set-default-project <id> <key>')
|
|
254
|
+
.description('Set the default Backlog project for tasks created manually (ak use --manual)')
|
|
255
|
+
.action((id, key) => {
|
|
256
|
+
useCommand.setDefaultBacklogProjectCommand(id, key);
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
// ── jira-projects ─────────────────────────────────────────────
|
|
260
|
+
program
|
|
261
|
+
.command('jira-projects')
|
|
262
|
+
.description('List Jira projects visible to the configured account, and the default for task-creation')
|
|
263
|
+
.option('--json', 'output as JSON (for headless callers, e.g. the VS Code extension)')
|
|
264
|
+
.action((options) => {
|
|
265
|
+
useCommand.listJiraProjectsCommand(options);
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
// ── jira-set-default-project ─────────────────────────────────
|
|
269
|
+
program
|
|
270
|
+
.command('jira-set-default-project <key>')
|
|
271
|
+
.description('Set the default Jira project for tasks created from Meeting Minutes/QnA (ingest-data Gate 3)')
|
|
272
|
+
.action((key) => {
|
|
273
|
+
useCommand.setDefaultJiraProjectCommand(key);
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
// ── tasks (Vấn đề 5 — sinh task từ feedback/meeting minutes) ──
|
|
277
|
+
const tasksCmd = program.command('tasks').description('Turn an AI-proposed, PM-approved task list into real tickets (ingest-data Gate 3)');
|
|
278
|
+
|
|
279
|
+
tasksCmd
|
|
280
|
+
.command('create-tickets <file>')
|
|
281
|
+
.description('Create Backlog/Jira tickets from a JSON task list — see scripts/ticket-writer.js for the input shape')
|
|
282
|
+
.option('--json', 'machine-readable output only')
|
|
283
|
+
.action((file, options) => {
|
|
284
|
+
ticketWriterCommand.createTicketsCommand(file, options);
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
// ── credentials ───────────────────────────────────────────────
|
|
288
|
+
const credentialsCmd = program.command('credentials').description('Manage supplementary credentials (WRITE keys, default projects) not covered by `ak init --adapter`');
|
|
289
|
+
|
|
290
|
+
credentialsCmd
|
|
291
|
+
.command('set <key> <value>')
|
|
292
|
+
.description(`Save a credential value (allowed keys: ${ticketWriterCommand.SETTABLE_CREDENTIAL_KEYS.join(', ')})`)
|
|
293
|
+
.action((key, value) => {
|
|
294
|
+
ticketWriterCommand.setCredentialCommand(key, value);
|
|
295
|
+
});
|
|
296
|
+
|
|
241
297
|
// ── prompt ────────────────────────────────────────────────────
|
|
242
298
|
program
|
|
243
299
|
.command('prompt [type]')
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Ngôn ngữ Output — Auto-detect theo Input
|
|
2
|
+
|
|
3
|
+
> File này là quy tắc dùng chung cho **tất cả** các skill trong `custom/skills/` (BA, Dev, QA, ML) có sinh file markdown output (requirement, plan, test-analysis, checklist, testcase, report, review, UC Spec, v.v.).
|
|
4
|
+
> Mọi skill sinh markdown output PHẢI đọc file này trước khi viết, thay cho việc mặc định cố định tiếng Anh hoặc tiếng Việt.
|
|
5
|
+
|
|
6
|
+
## Quy tắc
|
|
7
|
+
|
|
8
|
+
Ngôn ngữ của output PHẢI khớp với ngôn ngữ của input — không dùng một ngôn ngữ mặc định cố định cho mọi task.
|
|
9
|
+
|
|
10
|
+
**Xác định ngôn ngữ input theo thứ tự ưu tiên** (dùng nguồn đầu tiên có sẵn):
|
|
11
|
+
|
|
12
|
+
1. Tester/dev chỉ định rõ ngôn ngữ output (ví dụ: "viết bằng tiếng Anh giúp tôi") → dùng đúng ngôn ngữ đó, bỏ qua các bước dưới.
|
|
13
|
+
2. Title + description của ticket đang xử lý — từ `.aiflow/context/current.json` (fetch qua Backlog/Jira, hoặc nhập qua `ak use --manual`).
|
|
14
|
+
3. Nếu skill đang mở rộng/tiếp nối một tài liệu đã có sẵn (UC Spec, System Requirement, plan, testcase set của gate trước) và không có ticket text mới — dùng ngôn ngữ của tài liệu đó.
|
|
15
|
+
|
|
16
|
+
**Kết luận:**
|
|
17
|
+
- Input chủ yếu là **tiếng Việt** (có dấu, từ vựng tiếng Việt) → viết **toàn bộ** output bằng tiếng Việt: heading, mô tả, tóm tắt, câu hỏi clarify, nội dung bảng, v.v.
|
|
18
|
+
- Ngược lại (tiếng Anh hoặc ngôn ngữ khác) → **mặc định tiếng Anh**.
|
|
19
|
+
|
|
20
|
+
Nếu một task có nhiều gate (Gate 1 → Gate N) hoặc nhiều phase, ngôn ngữ được xác định **một lần** ở bước đầu tiên (đọc ticket/input) và giữ nguyên xuyên suốt các gate/phase sau, trừ khi tester/dev đổi ý.
|
|
21
|
+
|
|
22
|
+
## Không đổi ngôn ngữ (giữ nguyên bất kể input)
|
|
23
|
+
|
|
24
|
+
- Code, command, file path, tên biến/hàm/class/API.
|
|
25
|
+
- Table column headers / field keys mang tính cấu trúc, dùng để tham chiếu chéo giữa các gate (ví dụ `TC_ID`, `Priority`, `Status`, `Gate N`) — theo quy ước hiện có ở `custom/skills/test-skills/rules/qa-writing-standards.md`.
|
|
26
|
+
- Từ khóa điều khiển flow: `APPROVED`, `RETEST`, tên skill, tên file/thư mục chuẩn (`test-analysis.md`, `checklist.md`, ...).
|
|
27
|
+
- Ticket ID, YAML frontmatter keys.
|
|
28
|
+
|
|
29
|
+
## Cách trích dẫn quy tắc này trong một SKILL.md
|
|
30
|
+
|
|
31
|
+
Thêm 1 dòng ngắn ngay gần bước xác định output đầu tiên của skill:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
Output language: auto-detect từ ticket/task input — xem `custom/rules/output-language.md`
|
|
35
|
+
(input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh).
|
|
36
|
+
```
|
|
@@ -235,5 +235,5 @@ Xem report:
|
|
|
235
235
|
|
|
236
236
|
- **Gate trước khi sinh code** (Phase 2) là bắt buộc — tránh sinh sai hàng loạt.
|
|
237
237
|
- **Selector phải đến từ DOM thật** (Phase 3) — đây là lý do tồn tại của skill này.
|
|
238
|
-
-
|
|
238
|
+
- Tên test, comment viết theo ngôn ngữ của draft test case của tester (xem `custom/rules/output-language.md`) — draft tiếng Việt → tiếng Việt, draft tiếng Anh → tiếng Anh.
|
|
239
239
|
- Nếu app yêu cầu đăng nhập trước, hỏi tester credentials test (đừng hardcode tài khoản thật).
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
## 1. Mục đích (Purpose)
|
|
4
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
5
|
|
|
6
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/task input — xem `custom/rules/output-language.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh).
|
|
7
|
+
|
|
6
8
|
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
9
|
- **Các loại Business Rules phổ biến:**
|
|
8
10
|
- *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).
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
## 1. Mục đích (Purpose)
|
|
4
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
5
|
|
|
6
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/task input — xem `custom/rules/output-language.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh).
|
|
7
|
+
|
|
6
8
|
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
9
|
- **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
10
|
- **Phân biệt Fact vs. Assumption:**
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
## 1. Mục đích (Purpose)
|
|
4
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
5
|
|
|
6
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/task input — xem `custom/rules/output-language.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh).
|
|
7
|
+
|
|
6
8
|
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
9
|
- **Cấu trúc biểu đồ Flowchart trong Mermaid:**
|
|
8
10
|
- 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`.
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
## 1. Mục đích (Purpose)
|
|
4
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
5
|
|
|
6
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/task input — xem `custom/rules/output-language.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh).
|
|
7
|
+
|
|
6
8
|
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
9
|
- **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
10
|
- **Kỹ thuật đặt câu hỏi mở và đóng:**
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
## 1. Mục đích (Purpose)
|
|
4
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
5
|
|
|
6
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/task input — xem `custom/rules/output-language.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh).
|
|
7
|
+
|
|
6
8
|
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
9
|
- **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
10
|
- **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).
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
## 1. Mục đích (Purpose)
|
|
4
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
5
|
|
|
6
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/task input — xem `custom/rules/output-language.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh).
|
|
7
|
+
|
|
6
8
|
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
9
|
- **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
10
|
- **Cách mô tả Luồng xử lý (Flow):**
|
|
@@ -93,6 +93,8 @@ Consolidate toàn bộ TCs (sau khi apply actions) vào **1 file duy nhất**:
|
|
|
93
93
|
|
|
94
94
|
Lưu `test-plan/test-cases/final-testcases.md`:
|
|
95
95
|
|
|
96
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/testcase input — xem `custom/rules/output-language.md` và `custom/skills/test-skills/rules/qa-writing-standards.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh; tiêu đề cột bảng vẫn giữ tiếng Anh).
|
|
97
|
+
|
|
96
98
|
```markdown
|
|
97
99
|
# Final Test Cases — [Feature Name]
|
|
98
100
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: create-system-requirement
|
|
3
|
-
description: Bridges UC Spec (BA, Gate 4) to Dev — investigates source code and translates the UC into System Requirement (Functional/Non-Functional Requirements, Business Rules → Validation Rules, Exception/Error Handling, Acceptance Tests). Runs once per functionId per UC Spec version, BEFORE the first coding ticket.
|
|
3
|
+
description: Bridges UC Spec (BA, Gate 4) to Dev — investigates source code and translates the UC into System Requirement (Functional/Non-Functional Requirements, Business Rules → Validation Rules, Exception/Error Handling, Acceptance Tests). Runs once per functionId per UC Spec version, ideally BEFORE the first coding ticket. Gate 1 (`read-study-requirement`) warns (non-blocking) if this is missing or out of sync with the current UC Spec version — this skill is how DEV closes that gap.
|
|
4
4
|
keywords: system requirement, uc spec, functionId, trace, acceptance test, exception handling, business rule, matching, version sync
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -21,9 +21,10 @@ keywords: system requirement, uc spec, functionId, trace, acceptance test, excep
|
|
|
21
21
|
|
|
22
22
|
**Hand-off from coding Gate 1 Pre-flight** (`read-study-requirement`, Step 0) when:
|
|
23
23
|
- No `System-Requirement_v*.md` exists yet for this `functionId`, **or**
|
|
24
|
-
- The existing one's `UC-Spec-Version` header does not match the UC Spec's current version
|
|
24
|
+
- The existing one's `UC-Spec-Version` header does not match the UC Spec's current version, **or**
|
|
25
|
+
- It exists and matches but its `Status` header is not `✅ Approved`.
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
Any of these → coding Gate 1 shows a ⚠️ non-blocking warning and **continues** (it does not cancel). DEV can close the gap at any point — before or after the current ticket — by starting a new task with `ak use`, picking **"📐 Create System Requirement"** at the Task type prompt, and running it through both gates to APPROVED.
|
|
27
28
|
|
|
28
29
|
---
|
|
29
30
|
|
|
@@ -179,6 +180,8 @@ Save to `AK-Docs/02.BA-Specs/00.Requirements/[functionId]/System-Requirement_v{N
|
|
|
179
180
|
| [YYYY-MM-DD] | — | Initial creation from UC Spec v{N} | |
|
|
180
181
|
```
|
|
181
182
|
|
|
183
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
184
|
+
|
|
182
185
|
---
|
|
183
186
|
|
|
184
187
|
### Step 7: Present for Approval [Gate 2]
|
|
@@ -198,11 +201,12 @@ Coverage:
|
|
|
198
201
|
Open Gaps: [N] ← must be 0 to approve
|
|
199
202
|
|
|
200
203
|
Please review — matching 1-1 with UC Spec v{N} is the point of this document.
|
|
201
|
-
→ Type APPROVED (then run `aiflow task next`) to close this task and
|
|
202
|
-
|
|
204
|
+
→ Type APPROVED (then run `aiflow task next`) to close this task and clear
|
|
205
|
+
the Gate 1 warning for tickets on this functionId
|
|
203
206
|
→ Or provide feedback to update
|
|
204
207
|
|
|
205
|
-
⚠️
|
|
208
|
+
⚠️ Until this task is APPROVED, coding Gate 1 for this functionId will keep
|
|
209
|
+
showing a non-blocking warning (it does not cancel).
|
|
206
210
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
207
211
|
```
|
|
208
212
|
|
|
@@ -245,4 +249,4 @@ This does not bump `System-Requirement-Version` — the version stays tied to th
|
|
|
245
249
|
- ✅ **MUST** read the full UC Spec (Step 1) before drafting anything.
|
|
246
250
|
- ✅ **MUST** investigate source code (Step 2) before drafting Exception/Error Handling or Existing System Context.
|
|
247
251
|
- ✅ **MUST** carry the mandatory `UC-Spec-Version` header on the master file.
|
|
248
|
-
- ✅ **MUST**
|
|
252
|
+
- ✅ **MUST** surface a ⚠️ non-blocking warning (never a cancel) from the Gate 1 Pre-flight check until this skill reaches APPROVED.
|
|
@@ -73,6 +73,8 @@ Update the model card drafted at Gate 4 with:
|
|
|
73
73
|
|
|
74
74
|
The model card is the primary audit document for the deployed model.
|
|
75
75
|
|
|
76
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
77
|
+
|
|
76
78
|
### 6. Create the PR
|
|
77
79
|
|
|
78
80
|
Invoke `superpowers:requesting-code-review`. Open a PR that includes: serving code, model card, monitoring plan, and any pipeline changes. Link the ticket. Reference the eval report and the registered artifact version in the PR description.
|
|
@@ -73,6 +73,8 @@ An open-ended experiment loop with no stopping rule is out of scope for a gated
|
|
|
73
73
|
|
|
74
74
|
Write all of the above to `AK-Docs/04.Coding/02.Plans/[functionId]/[ticketId].md` (see `custom/rules/ml-conventions.md` — do NOT use the legacy `plan/[ticket-id]/` path). The document must be self-contained: a developer who did not attend the framing discussion should be able to reproduce the full experiment sequence from the plan alone.
|
|
75
75
|
|
|
76
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
77
|
+
|
|
76
78
|
---
|
|
77
79
|
|
|
78
80
|
## Completion Checklist
|
|
@@ -78,6 +78,8 @@ Output `AK-Docs/04.Coding/04.Reviews/[functionId]/[ticketId].md` (see `custom/ru
|
|
|
78
78
|
|
|
79
79
|
Draft a model card covering: intended use, training data description, evaluation metrics and their context, known limitations, and owner/contact.
|
|
80
80
|
|
|
81
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
82
|
+
|
|
81
83
|
---
|
|
82
84
|
|
|
83
85
|
## Completion Checklist
|
|
@@ -83,6 +83,8 @@ evidence/
|
|
|
83
83
|
|
|
84
84
|
Với mỗi TC, tạo `evidence/TC_[ID]-[scenario]/result.md`:
|
|
85
85
|
|
|
86
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/testcase input — xem `custom/rules/output-language.md` và `custom/skills/test-skills/rules/qa-writing-standards.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh; tiêu đề cột bảng vẫn giữ tiếng Anh).
|
|
87
|
+
|
|
86
88
|
**Template khi PASS:**
|
|
87
89
|
|
|
88
90
|
```markdown
|
|
@@ -213,6 +213,8 @@ Với mỗi TC:
|
|
|
213
213
|
|
|
214
214
|
Với `kebab-scenario` = Test Case Name lowercase, dấu cách thành `-`, bỏ ký tự đặc biệt.
|
|
215
215
|
|
|
216
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/testcase input — xem `custom/rules/output-language.md` và `custom/skills/test-skills/rules/qa-writing-standards.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh; tiêu đề cột bảng vẫn giữ tiếng Anh).
|
|
217
|
+
|
|
216
218
|
**Copy files từ Playwright output:**
|
|
217
219
|
- Screenshots → `step-NN-{desc}.png`
|
|
218
220
|
- Trace file → `trace.zip`
|
|
@@ -71,6 +71,8 @@ Write the EDA results into the `ml-problem.md` file created by `frame-ml-problem
|
|
|
71
71
|
- Leakage assessment — one paragraph per leakage type stating what was checked and what was found
|
|
72
72
|
- Cleaning actions required before training (drop columns, impute, clip outliers, re-encode)
|
|
73
73
|
|
|
74
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
75
|
+
|
|
74
76
|
---
|
|
75
77
|
|
|
76
78
|
## Completion Checklist
|
|
@@ -86,3 +86,5 @@ If any of the above cannot be answered from the ticket, ask exactly **one questi
|
|
|
86
86
|
- [ ] Success threshold quantified (not "as high as possible")
|
|
87
87
|
- [ ] Constraints listed (latency, memory, interpretability, data volume, compliance)
|
|
88
88
|
- [ ] Findings written to `AK-Docs/04.Coding/01.Requirements/[functionId]/[ticketId].md` (see `custom/rules/ml-conventions.md` — do NOT use the legacy `plan/[ticket-id]/` path)
|
|
89
|
+
|
|
90
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
@@ -57,6 +57,8 @@ When generating the output for a gate (e.g. `requirement.md` or `plan.md`), foll
|
|
|
57
57
|
### Step 2: Write the gate output file
|
|
58
58
|
Write the gate output file (e.g. `AK-Docs/04.Coding/01.Requirements/[functionId]/[ticketId].md`, `AK-Docs/04.Coding/02.Plans/[functionId]/[ticketId].md`, or `docs/ak-[project]/...`) as specified by the gate instructions.
|
|
59
59
|
|
|
60
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
61
|
+
|
|
60
62
|
### Step 3: Display gate pause message
|
|
61
63
|
|
|
62
64
|
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.
|
|
@@ -75,6 +75,8 @@ Create a detailed step-by-step plan based on the requirement document:
|
|
|
75
75
|
```
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
79
|
+
|
|
78
80
|
> For UI tasks, reference the exact node/component from `design-context.md` in the Task column
|
|
79
81
|
> (e.g. "Build UserCard — nodeId 78-910"). Add an image-copy task when the Image Map is non-empty.
|
|
80
82
|
>
|
|
@@ -61,6 +61,8 @@ Tổng hợp per module theo format template (R1/R2 tracking từ testcase files
|
|
|
61
61
|
|
|
62
62
|
Output: `test-plan/test-report.md`
|
|
63
63
|
|
|
64
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/testcase input — xem `custom/rules/output-language.md` và `custom/skills/test-skills/rules/qa-writing-standards.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh; tiêu đề cột bảng vẫn giữ tiếng Anh).
|
|
65
|
+
|
|
64
66
|
---
|
|
65
67
|
|
|
66
68
|
## Gate 4 Display
|
|
@@ -65,6 +65,8 @@ Xác định phạm vi ảnh hưởng thật từ code dev **trước khi** gene
|
|
|
65
65
|
|
|
66
66
|
Liệt kê scenarios theo nhóm, output vào `test-plan/checklist.md`:
|
|
67
67
|
|
|
68
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/testcase input — xem `custom/rules/output-language.md` và `custom/skills/test-skills/rules/qa-writing-standards.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh; tiêu đề cột bảng vẫn giữ tiếng Anh).
|
|
69
|
+
|
|
68
70
|
| ID | Scenario/Checklist Item | Mục đích kiểm tra | Expected Result |
|
|
69
71
|
|
|
70
72
|
**Nhóm cần cover:**
|
|
@@ -91,6 +91,8 @@ List all:
|
|
|
91
91
|
[Specific points QA should pay attention to]
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
95
|
+
|
|
94
96
|
---
|
|
95
97
|
|
|
96
98
|
## Completion Checklist
|
|
@@ -61,6 +61,8 @@ Revert if it does not satisfy the above. Log the failure reason; failed experime
|
|
|
61
61
|
|
|
62
62
|
Repeat steps 3–5 for the next bottleneck. Log every attempt — including reversions — so the improvement story is fully reproducible. The final state must be explainable: "we tried X (failed because Y), then tried Z (improved metric by W%)."
|
|
63
63
|
|
|
64
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
65
|
+
|
|
64
66
|
---
|
|
65
67
|
|
|
66
68
|
## Completion Checklist
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ingest-data
|
|
3
|
-
description: Use when taskType is "ingest-data" — PM/BrSE/Comtor ingesting customer communication (Backlog ticket/comment/Document/Wiki link, Jira link, SharePoint link, or pasted text) into AK-Docs/01.QnA/ logs. Covers fetching the source, classifying it into QnA-Log/Meetings-Log/Confirmations-Log,
|
|
4
|
-
keywords: ingest data, comtor, brse, pm workflow, meeting minutes, qna log, confirmations log, backlog document, backlog wiki, sharepoint, gate 1, gate 2
|
|
3
|
+
description: Use when taskType is "ingest-data" — PM/BrSE/Comtor ingesting customer communication (Backlog ticket/comment/Document/Wiki link, Jira link, SharePoint link, or pasted text) into AK-Docs/01.QnA/ logs. Covers fetching the source, classifying it into QnA-Log/Meetings-Log/Confirmations-Log, drafting the entry for self-review before Gate 2 opens the MR, and — auto right after Gate 2 — analyzing the entry to propose a PM-approved task list that gets created as real Backlog/Jira tickets.
|
|
4
|
+
keywords: ingest data, comtor, brse, pm workflow, meeting minutes, qna log, confirmations log, backlog document, backlog wiki, sharepoint, gate 1, gate 2, gate 3, sinh task, tạo ticket
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Ingest Data — Gate 1 (fetch/classify/draft)
|
|
@@ -110,3 +110,117 @@ Sau khi fetch + phân loại, soạn đúng 1 entry theo template tương ứng
|
|
|
110
110
|
**Không tự ghi file, không tự tạo branch** ở bước này — chỉ hiển thị draft trong hội thoại. Việc ghi file + branch + MR chỉ chạy ở Gate 2, sau khi người dùng gõ **APPROVED**.
|
|
111
111
|
|
|
112
112
|
Nếu người dùng yêu cầu sửa (thêm/bớt ý, đổi log đích, sửa functionId...) → cập nhật lại draft, hiển thị lại toàn bộ, chờ APPROVED lại — lặp cho tới khi được duyệt.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 5. Gate 3 — Sinh & Duyệt Task List, Tạo Ticket (auto, ngay sau Gate 2)
|
|
117
|
+
|
|
118
|
+
> Implement "Vấn đề 5" trong `docs/internal/PM Workflow_v1.0.md`. **Trigger đã chốt: TỰ ĐỘNG** — chạy ngay tiếp theo Gate 2 (MR ingest vừa mở xong), không cần lệnh riêng, không chờ PM merge MR trước (merge MR là việc của PM ở luồng riêng, không block bước này).
|
|
119
|
+
> Gate mechanics chi tiết (khi nào gọi lệnh nào) nằm ở `custom/templates/shared/gate-workflow.md` § "ingest-data Task Type" → GATE 3. File này chỉ mô tả **cách phân tích và đề xuất**.
|
|
120
|
+
|
|
121
|
+
### 5.1 Bước 1 — Đọc lại entry + điều tra phạm vi ảnh hưởng
|
|
122
|
+
|
|
123
|
+
Đọc lại đúng entry vừa ghi ở Gate 2 (Meetings-Log.md / QnA-Log.md / Confirmations-Log.md — nguyên văn nội dung người dùng đã input ở Gate 1, không phải bản tóm tắt). Sau đó:
|
|
124
|
+
|
|
125
|
+
1. Xác định `functionId` liên quan (đã có trong entry, hoặc `general`).
|
|
126
|
+
2. Đọc source code + tài liệu hiện có liên quan đến `functionId` đó (UC Spec ở `AK-Docs/02.BA-Specs/04.UC-Specs/[functionId]/`, code trong repo source, `AK-Docs/04.Coding/00.Overview/_Index.md`) để hiểu **hệ thống hiện tại đang làm gì**, từ đó đánh giá nội dung mới vừa ingest tác động tới đâu.
|
|
127
|
+
3. Nếu nội dung có Action items rõ ràng trong template Meeting Minutes (mục 3.2) — đây là gợi ý mạnh cho danh sách task, không bỏ qua.
|
|
128
|
+
|
|
129
|
+
### 5.2 Bước 2 — Quyết định: có cần task hay không
|
|
130
|
+
|
|
131
|
+
**Không phải mọi entry đều sinh ra task.** Trước khi đề xuất bất kỳ task nào, tự hỏi: nội dung này có yêu cầu một hành động cụ thể (thay đổi spec, code, test, tài liệu...) hay chỉ là thông tin tham khảo/FYI (cập nhật tiến độ, thông tin không đổi hành vi hệ thống, trả lời một câu hỏi đã đóng)?
|
|
132
|
+
|
|
133
|
+
- **Chỉ là tham khảo** → hiển thị: `ℹ️ Nội dung này không phát sinh task — chỉ lưu làm tài liệu tham khảo. Gate 3 kết thúc.` rồi dừng, không hỏi thêm, không chạy `ak gate 3 start`.
|
|
134
|
+
- **Có hành động cụ thể** → tiếp tục Bước 3. Khi không chắc (ví dụ nội dung vừa có FYI vừa có 1 ý cần sửa code) — nghiêng về đề xuất task cho phần cần hành động, bỏ qua phần FYI, không tự bịa task cho phần không rõ.
|
|
135
|
+
|
|
136
|
+
### 5.3 Bước 3 — Đề xuất danh sách task
|
|
137
|
+
|
|
138
|
+
Mỗi task gồm:
|
|
139
|
+
|
|
140
|
+
| Trường | Ghi chú |
|
|
141
|
+
|---|---|
|
|
142
|
+
| `type` | `spec` (tạo/update UC Spec) · `coding` · `test` · `other` (update tài liệu không thuộc BA/QA/Dev, vd Rules) |
|
|
143
|
+
| `title` | Ngắn, hành động rõ (vd "Cập nhật flow OTP theo feedback khách — tăng thời hạn 30s → 90s") |
|
|
144
|
+
| `track` | BA / Dev / QA — để PM biết ai sẽ nhận task này |
|
|
145
|
+
| `description` | Theo đúng template mục 6.1 `PM Workflow_v1.0.md`: |
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
## Nội dung task
|
|
149
|
+
[Mô tả task do AI đề xuất]
|
|
150
|
+
|
|
151
|
+
## Nguồn tham chiếu
|
|
152
|
+
- Văn bản gốc: [<mô tả ngắn>](<url hoặc "pasted text">)
|
|
153
|
+
- Log AK-Docs: AK-Docs/01.QnA/[QnA-Log.md | Meetings-Log.md | Confirmations-Log.md] (entry ngày <ngày>)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Riêng task `type: "spec"` — thêm 2 mục bắt buộc theo mục 6.1, và **hỏi PM xin link hồ sơ cam kết thay đổi nếu chưa có sẵn** (không tự suy luận):
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
## Tổng quan nội dung thay đổi
|
|
160
|
+
[Tóm tắt: thay đổi gì, vì sao thay đổi]
|
|
161
|
+
|
|
162
|
+
## Nguồn tham chiếu
|
|
163
|
+
- Hồ sơ cam kết thay đổi: [<mô tả ngắn>](<URL do PM cung cấp>)
|
|
164
|
+
- Log AK-Docs (nếu có): AK-Docs/01.QnA/Meetings-Log.md (entry ngày <ngày>)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Hiển thị toàn bộ danh sách cho PM xem — đủ cả `type`/`title`/`track`/`description`, không tóm tắt.
|
|
168
|
+
|
|
169
|
+
### 5.4 Bước 4 — PM review, sửa trực tiếp trong hội thoại
|
|
170
|
+
|
|
171
|
+
PM có thể **thêm / sửa / xoá từng task** ngay trong lượt review này (không phải chỉ APPROVED/reject toàn bộ) — cập nhật lại danh sách theo đúng yêu cầu, hiển thị lại toàn bộ, lặp lại cho tới khi PM hài lòng. Task nào type là `spec` mà thiếu "Nguồn tham chiếu" (hồ sơ cam kết thay đổi) → coi như chưa đủ điều kiện, phải hỏi PM bổ sung trước khi cho vào vòng xác nhận tạo ticket ở Bước 5.
|
|
172
|
+
|
|
173
|
+
### 5.5 Bước 5 — Điểm dừng xác nhận tạo ticket
|
|
174
|
+
|
|
175
|
+
Hỏi đúng 1 câu, không tự thêm `--yes`:
|
|
176
|
+
|
|
177
|
+
```text
|
|
178
|
+
Danh sách task như trên (N task) — đồng ý tạo trên [Backlog/Jira]?
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
- Xác định target `backlog`/`jira` theo đúng adapter của ticket/document gốc đã ingest ở Gate 1/2 (Backlog → target backlog; Jira → target jira). Nếu nguồn là pasted text/SharePoint (không rõ adapter) → hỏi PM muốn tạo trên hệ thống nào.
|
|
182
|
+
- **KHÔNG ĐỒNG Ý** → dừng, để PM tự chỉnh sửa rồi yêu cầu lại (quay lại Bước 4).
|
|
183
|
+
- **ĐỒNG Ý** → sang Bước 6.
|
|
184
|
+
|
|
185
|
+
### 5.6 Bước 6 — Xác định project đích
|
|
186
|
+
|
|
187
|
+
Check LOCAL trước, chỉ hỏi khi thật sự chưa biết (Vấn đề 5.1):
|
|
188
|
+
|
|
189
|
+
1. Backlog: kiểm tra `BACKLOG_DEFAULT_PROJECT_ID` đã lưu chưa (chạy `ak backlog-projects --json`, đọc field `defaultProjectId`). Jira: `ak jira-projects --json`, đọc `defaultProjectKey`.
|
|
190
|
+
2. Đã có → dùng luôn, hiển thị rõ cho PM biết đang dùng project nào + nguồn (đã lưu từ lần trước).
|
|
191
|
+
3. Chưa có → hiển thị danh sách project vừa fetch được, PM chọn 1 → lưu lại bằng `ak backlog-set-default-project <id> <key>` hoặc `ak jira-set-default-project <key>` — để lần sau không hỏi lại.
|
|
192
|
+
|
|
193
|
+
### 5.7 Bước 7 — Tạo ticket
|
|
194
|
+
|
|
195
|
+
1. Ghi danh sách task đã duyệt ra 1 file JSON tạm (vd `.aiflow/tmp/tasks-[ticketId].json`), đúng shape mà `ak tasks create-tickets` đọc (xem `scripts/ticket-writer.js`):
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"target": "backlog",
|
|
199
|
+
"tasks": [
|
|
200
|
+
{ "type": "coding", "title": "...", "description": "..." }
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
2. Chạy `ak tasks create-tickets <file> --json`.
|
|
205
|
+
3. Đọc kết quả JSON trả về:
|
|
206
|
+
- `{"error":"missing-write-credentials", "field": "...", "message": "..."}` → **đây không phải lỗi hệ thống** — hiển thị đúng `message` cho PM, hỏi PM nhập giá trị key ngay trong hội thoại (dùng luôn khung chat làm nơi PM "nhập & submit"), nhận giá trị → chạy `ak credentials set <field> "<giá trị PM vừa nhập>"` → chạy lại bước 2 (retry đúng 1 lần; nếu vẫn lỗi, báo PM key có thể sai/chưa đủ quyền, không tự thử lại vô hạn).
|
|
207
|
+
- `{"error":"missing-project", ...}` → quay lại Bước 6 (chưa xác định được project).
|
|
208
|
+
- Thành công (`ok: true`) → mỗi task có `ticketId` + `url` riêng; task nào `ok: false` (lỗi phía Backlog/Jira, vd thiếu field) → báo rõ cho PM, các task khác đã tạo vẫn giữ nguyên (không rollback).
|
|
209
|
+
|
|
210
|
+
### 5.8 Bước 8 — Ghi ngược liên kết + đóng Gate
|
|
211
|
+
|
|
212
|
+
1. Append vào cuối đúng entry gốc (Meetings-Log/QnA-Log/Confirmations-Log) 1 dòng:
|
|
213
|
+
```text
|
|
214
|
+
→ Tasks created: TICKET-101 (coding), TICKET-102 (test)
|
|
215
|
+
```
|
|
216
|
+
Việc sửa file này đi qua đúng branch đang dùng ở Gate 2 (không tạo MR riêng — gộp vào cùng thay đổi, hoặc nếu MR đã mở/merge thì tạo 1 commit nhỏ tiếp theo trên cùng branch/1 MR mới tuỳ trạng thái branch lúc đó).
|
|
217
|
+
2. Hiển thị tổng kết:
|
|
218
|
+
```text
|
|
219
|
+
✅ GATE 3 DONE — Đã tạo N/N ticket trên [Backlog/Jira]:
|
|
220
|
+
- TICKET-101 (coding) — <url>
|
|
221
|
+
- TICKET-102 (test) — <url>
|
|
222
|
+
→ Dev/QA chạy `ak use TICKET-XXX` trên từng ticket để bắt đầu Gate tương ứng (Coding/QA workflow hiện có).
|
|
223
|
+
```
|
|
224
|
+
3. Run: `ak gate 3 approved --ticket [ticket-id]`.
|
|
225
|
+
|
|
226
|
+
> **Telemetry:** Run `ak gate 3 start --ticket [ticket-id]` khi bắt đầu Bước 1 (bỏ qua nếu Bước 2 kết luận không cần task — không start gate cho trường hợp "chỉ tham khảo"). Run `ak gate 3 approved --ticket [ticket-id]` khi Bước 8 xong.
|
|
@@ -44,6 +44,8 @@ Thu thập ngay khi test fail:
|
|
|
44
44
|
**File naming:** `bugs/BUG-[số thứ tự 3 chữ số]-[tên ngắn kebab-case].md`
|
|
45
45
|
**Ví dụ:** `bugs/BUG-001-login-button-not-disabled-on-submit.md`
|
|
46
46
|
|
|
47
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/testcase input — xem `custom/rules/output-language.md` và `custom/skills/test-skills/rules/qa-writing-standards.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh; tiêu đề cột bảng vẫn giữ tiếng Anh).
|
|
48
|
+
|
|
47
49
|
**Dùng template bên dưới.**
|
|
48
50
|
|
|
49
51
|
### Bước 4 — Thông báo TESTER
|
|
@@ -142,6 +142,8 @@ Ngoài TCs gốc của feature, cần test thêm:
|
|
|
142
142
|
| Verify Admin User list không bị cache stale | Shared service thay đổi |
|
|
143
143
|
```
|
|
144
144
|
|
|
145
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/task input — xem `custom/rules/output-language.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh).
|
|
146
|
+
|
|
145
147
|
---
|
|
146
148
|
|
|
147
149
|
## Guard Rails (bắt buộc)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: read-study-requirement
|
|
3
|
-
description: Gate 1 — AI reads ticket from Backlog/Jira + reads source code, then uses collaborative Q&A and solution proposal. Adds impact analysis and effort estimate. Outputs requirement.md for DEV to approve.
|
|
3
|
+
description: Gate 1 — AI reads ticket from Backlog/Jira + reads source code, then uses collaborative Q&A and solution proposal. Adds impact analysis and effort estimate. Outputs requirement.md for DEV to approve. Checks that System Requirement (bridged from UC Spec via `create-system-requirement`) exists and matches the current UC Spec version — shows a non-blocking ⚠️ warning and continues otherwise.
|
|
4
4
|
keywords: ticket, requirement, study, read, context, backlog, jira, analyze, understand, solution, estimate, system requirement, uc spec
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -12,16 +12,20 @@ keywords: ticket, requirement, study, read, context, backlog, jira, analyze, und
|
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
## Step 0: System Requirement
|
|
15
|
+
## Step 0: System Requirement Check (Pre-flight, non-blocking warning — runs before Mode Selection)
|
|
16
16
|
|
|
17
|
-
Before reading the ticket in depth, verify the bridge document from UC Spec
|
|
17
|
+
Before reading the ticket in depth, verify the bridge document from UC Spec — this applies to **every mode**, including Fast Track (it's a 2-file header check, not a heavy investigation). **This check never cancels Gate 1** — any gap only produces a ⚠️ yellow warning; Gate 1 always continues with whatever context is available:
|
|
18
18
|
|
|
19
19
|
1. Resolve `functionId` from `.aiflow/context/current.json` (or ask DEV once if absent).
|
|
20
20
|
2. Locate the current UC Spec: `AK-Docs/02.BA-Specs/04.UC-Specs/[functionId]/UC-Spec_v{N}.md` (highest non-archived version).
|
|
21
|
-
- **Not found** →
|
|
21
|
+
- **Not found** → `⚠️ CẢNH BÁO: Không tìm thấy UC Spec cho [functionId] — Gate 1 tiếp tục chỉ dựa trên ticket/source code, thiếu ngữ cảnh nghiệp vụ BA đã chốt.` Continue to step 3.
|
|
22
22
|
3. Check `AK-Docs/02.BA-Specs/00.Requirements/[functionId]/System-Requirement_v*.md`:
|
|
23
|
-
- **Missing
|
|
24
|
-
- **Exists
|
|
23
|
+
- **Missing** → `⚠️ CẢNH BÁO: Không tìm thấy System Requirement cho [functionId]. Khuyến nghị chạy "ak use" → "📐 Create System Requirement" trước ticket kế tiếp — Gate 1 vẫn tiếp tục ngay bây giờ dựa trên UC Spec/ticket.`
|
|
24
|
+
- **Exists, but its `UC-Spec-Version` header doesn't match the UC Spec found in step 2** → `⚠️ CẢNH BÁO: System Requirement đang trace theo UC Spec v[X], UC Spec hiện tại là v[Y] — nội dung có thể lỗi thời.` Treat its items as Assumption rather than Fact in Step 1.75.
|
|
25
|
+
- **Exists, matches, but its `Status` header is not `✅ Approved`** → `⚠️ CẢNH BÁO: System Requirement cho [functionId] chưa Approved (Status: [giá trị hiện tại]) — nội dung có thể còn thay đổi.`
|
|
26
|
+
- **Exists, matches, and Approved** → continue silently. Keep this file's path — Step 1 must read it as mandatory input.
|
|
27
|
+
|
|
28
|
+
Any warning raised above must also be written into this ticket's requirement doc (Section 1, Facts/Assumptions/Gaps in Step 4) — not just printed and forgotten. If DEV wants the gap closed properly, they can run `ak use` → "📐 Create System Requirement" for `[functionId]` at any point (before or after this ticket) — it's a separate 2-gate task type, not an inline sub-skill here.
|
|
25
29
|
|
|
26
30
|
---
|
|
27
31
|
|
|
@@ -88,6 +92,8 @@ When creating `AK-Docs/04.Coding/04.Reviews/[functionId]/[ticketId].md` during G
|
|
|
88
92
|
| **Total** | **S/M/L** |
|
|
89
93
|
```
|
|
90
94
|
|
|
95
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md` (Vietnamese input → Vietnamese output; otherwise English).
|
|
96
|
+
|
|
91
97
|
5. Display Gate 1 prompt and wait for `APPROVED`.
|
|
92
98
|
|
|
93
99
|
> After APPROVED, proceed to Gate 2.
|
|
@@ -466,7 +472,7 @@ Please review the requirement document.
|
|
|
466
472
|
|
|
467
473
|
## Mandatory Rules
|
|
468
474
|
|
|
469
|
-
- ✅ **MUST** verify System Requirement exists and matches the current UC Spec version (Step 0) before proceeding —
|
|
475
|
+
- ✅ **MUST** verify System Requirement exists and matches the current UC Spec version (Step 0) before proceeding — show a ⚠️ non-blocking warning and continue otherwise (never cancels Gate 1); record the gap in the requirement doc (Step 4).
|
|
470
476
|
- ✅ **MUST** read System Requirement as mandatory input (Step 1) — not optional context.
|
|
471
477
|
- ❌ **DO NOT** restate content already covered in System Requirement — reference its item ID instead.
|
|
472
478
|
- ❌ **DO NOT** silently accept ticket scope that doesn't trace to System Requirement or UC Spec (Step 3.5) — stop and ask instead of guessing.
|
|
@@ -31,7 +31,11 @@ Fill in the structure below. **Use simple language, avoiding technical jargon.**
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
## Standard Structure
|
|
34
|
+
## Standard Structure
|
|
35
|
+
|
|
36
|
+
Output language: auto-detect from the ticket/task input — see `custom/rules/output-language.md`
|
|
37
|
+
(Vietnamese ticket → Vietnamese report; otherwise English). CS can request a specific language
|
|
38
|
+
explicitly, which overrides auto-detect. Structure below is shown in English.
|
|
35
39
|
|
|
36
40
|
```markdown
|
|
37
41
|
## 📋 Incident Verification Report
|
|
@@ -92,4 +96,4 @@ If problems persist, please contact our support hotline..."]
|
|
|
92
96
|
- ❌ Do not blame third parties unless certain
|
|
93
97
|
- ❌ Do not commit to specific deadlines unless certain
|
|
94
98
|
|
|
95
|
-
Present clearly and professionally
|
|
99
|
+
Present clearly and professionally, in the language determined above.
|
|
@@ -84,6 +84,8 @@ BASE_URL=<baseUrl> npx playwright test --grep "AD10_002|AD10_005" --headed
|
|
|
84
84
|
|
|
85
85
|
Invoke `evidence-aggregation` skill cho RETEST results:
|
|
86
86
|
|
|
87
|
+
Ngôn ngữ output: auto-detect theo ngôn ngữ của ticket/testcase input — xem `custom/rules/output-language.md` và `custom/skills/test-skills/rules/qa-writing-standards.md` (input tiếng Việt → output tiếng Việt; ngược lại mặc định tiếng Anh; tiêu đề cột bảng vẫn giữ tiếng Anh).
|
|
88
|
+
|
|
87
89
|
**Không xóa evidence cũ** — tạo subfolder theo run:
|
|
88
90
|
|
|
89
91
|
```
|