@ngocsangairvds/vsaf 3.0.11 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/gitnexus/gitnexus-cli/SKILL.md +1 -1
- package/.claude/skills/graphify/SKILL.md +1 -1303
- package/.claude/skills/vsaf-build/SKILL.md +52 -16
- package/.claude/skills/vsaf-discover/SKILL.md +92 -0
- package/.claude/skills/vsaf-doc/SKILL.md +11 -42
- package/.claude/skills/vsaf-doc-prd/SKILL.md +57 -0
- package/.claude/skills/vsaf-doc-srs/SKILL.md +169 -0
- package/.claude/skills/vsaf-docs/SKILL.md +81 -0
- package/.claude/skills/vsaf-onboard/SKILL.md +4 -6
- package/.claude/skills/vsaf-plan/SKILL.md +20 -15
- package/.claude/skills/vsaf-ship/SKILL.md +36 -18
- package/.claude/skills/vsaf-sprint/SKILL.md +111 -0
- package/.claude/skills/vsaf-test/SKILL.md +29 -7
- package/README.md +91 -26
- package/_bmad/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md +669 -0
- package/_bmad/bmm/1-analysis/bmad-document-project/templates/srs-system-template.md +430 -0
- package/assets/templates/CLAUDE.md +8 -29
- package/package.json +1 -1
- package/src/workflow.js +7 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vsaf-build
|
|
3
|
-
description: Implement code theo SRS + testcase đã có. Dùng sau /vsaf-doc và /vsaf-test.
|
|
3
|
+
description: Implement code theo SRS + testcase đã có. Dùng sau /vsaf-doc-srs và /vsaf-test.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# VSAF Build
|
|
@@ -9,32 +9,66 @@ description: Implement code theo SRS + testcase đã có. Dùng sau /vsaf-doc v
|
|
|
9
9
|
Implement code đúng theo SRS và testcase, từng task một, với TDD — đảm bảo mỗi commit có tests pass.
|
|
10
10
|
|
|
11
11
|
## Điều kiện tiên quyết
|
|
12
|
-
- Đã chạy `/vsaf-doc` và có SRS được approve
|
|
13
|
-
- Đã chạy `/vsaf-test` và có testcase docs
|
|
12
|
+
- Đã chạy `/vsaf-doc-srs` và có SRS được approve
|
|
13
|
+
- Đã chạy `/vsaf-test` và có testcase docs (implementation readiness = PASS)
|
|
14
14
|
- User đã xác nhận phạm vi implement
|
|
15
15
|
|
|
16
16
|
## Các bước thực hiện
|
|
17
17
|
|
|
18
|
-
### Bước
|
|
19
|
-
-
|
|
20
|
-
-
|
|
18
|
+
### Bước 0 — Kiểm tra Superpowers (bắt buộc kiểm tra)
|
|
19
|
+
- Kiểm tra xem Superpowers plugin đã được cài trong Claude Code chưa
|
|
20
|
+
- Nếu **chưa cài** → hiển thị:
|
|
21
|
+
```
|
|
22
|
+
⚠️ Superpowers chưa được cài đặt.
|
|
23
|
+
Superpowers giúp tăng chất lượng implement (TDD execution, plan execution, debugging, code review).
|
|
24
|
+
Để cài, chạy trong Claude Code:
|
|
25
|
+
/plugin install superpowers@claude-plugins-official
|
|
26
|
+
Sau đó restart Claude Code.
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
→ Tiếp tục build không có Superpowers (fallback mode).
|
|
29
|
+
```
|
|
30
|
+
- Nếu **đã cài** → ghi nhận `HAS_SUPERPOWERS = true`, hiển thị:
|
|
31
|
+
```
|
|
32
|
+
✓ Superpowers available — sẽ sử dụng: execute-plan, test-driven-development, code-review
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Bước 1 — Đọc SRS + testcase
|
|
23
36
|
- Đọc file SRS trong `docs/project/srs/`
|
|
24
37
|
- Đọc file testcase trong `docs/project/testcases/`
|
|
25
38
|
- Xác nhận mapping FR/NFR -> testcase trước khi bắt đầu
|
|
26
39
|
|
|
40
|
+
### Bước 2 — Sinh plan từ SRS (có/không Superpowers)
|
|
41
|
+
- **Nếu HAS_SUPERPOWERS**: dùng `superpowers:write-plan` để sinh atomic task list từ SRS + testcase
|
|
42
|
+
- **Nếu không**: tự tạo task list thủ công từ FR/NFR → testcase mapping
|
|
43
|
+
- Mỗi task phải có verification step rõ ràng
|
|
44
|
+
|
|
27
45
|
### Bước 3 — Implement từng task (TDD)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
-
|
|
46
|
+
- **Nếu HAS_SUPERPOWERS**: dùng `superpowers:execute-plan` — tự động chạy TDD cycles (RED → GREEN → REFACTOR) theo plan
|
|
47
|
+
- Superpowers sẽ gọi `superpowers:test-driven-development` cho mỗi task
|
|
48
|
+
- Nếu plan lớn (20+ tasks): dùng `superpowers:subagent-driven-development` để dispatch song song
|
|
49
|
+
- **Nếu không**: implement thủ công theo TDD:
|
|
50
|
+
1. **RED**: Viết test trước, chạy test → phải fail
|
|
51
|
+
2. **GREEN**: Viết code tối thiểu để test pass
|
|
52
|
+
3. **REFACTOR**: Clean up code, giữ test vẫn pass
|
|
53
|
+
- Sau mỗi task: chạy `mcp__gitnexus__detect_changes` để verify chỉ đúng files thay đổi
|
|
54
|
+
- Commit: `git commit -m "<type>: <task description>"`
|
|
55
|
+
|
|
56
|
+
### Bước 3.5 — Checkpoint review (mỗi 3-5 tasks)
|
|
57
|
+
- Sau mỗi 3-5 tasks hoàn thành: dùng skill `bmad-checkpoint-preview`
|
|
58
|
+
- Mục đích: human-in-the-loop review — "walk me through changes so far"
|
|
59
|
+
- Checkpoint sẽ:
|
|
60
|
+
- Tóm tắt: đã làm gì, files nào thay đổi, tests status
|
|
61
|
+
- Highlight: điểm cần chú ý, potential issues
|
|
62
|
+
- Hỏi user: tiếp tục / điều chỉnh / dừng?
|
|
63
|
+
- **Bỏ qua checkpoint nếu**: plan < 5 tasks tổng (chỉ checkpoint cuối)
|
|
64
|
+
|
|
65
|
+
### Bước 4 — Xử lý khi fail hoặc scope drift
|
|
66
|
+
- **Nếu HAS_SUPERPOWERS**: dùng `superpowers:systematic-debugging` — bắt buộc hypothesis → experiment → conclusion
|
|
67
|
+
- **Nếu không**: thử approach khác thủ công
|
|
37
68
|
- Fail 3 lần cùng 1 task: DỪNG, báo user, quay lại `/vsaf-plan`
|
|
69
|
+
- **Nếu phát hiện scope drift** (feature cần thay đổi lớn so với SRS):
|
|
70
|
+
- Dùng skill `bmad-correct-course` để đánh giá impact + đề xuất điều chỉnh
|
|
71
|
+
- DỪNG và trình bày cho user: tiếp tục với điều chỉnh / quay lại `/vsaf-plan` re-plan
|
|
38
72
|
|
|
39
73
|
### Bước 5 — Output sau mỗi task
|
|
40
74
|
```
|
|
@@ -42,6 +76,8 @@ Với mỗi nhóm testcase:
|
|
|
42
76
|
- Files changed: [danh sách]
|
|
43
77
|
- Tests: [X passed]
|
|
44
78
|
- Commit: [hash]
|
|
79
|
+
- Superpowers: [used/not available]
|
|
80
|
+
- Checkpoint: [due at task N+X / completed]
|
|
45
81
|
```
|
|
46
82
|
|
|
47
83
|
## Lưu ý
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vsaf-discover
|
|
3
|
+
description: Product discovery — nghiên cứu domain, market, feasibility trước khi plan feature. Dùng khi bắt đầu dự án mới hoặc explore hướng phát triển sản phẩm.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# VSAF Discover
|
|
7
|
+
|
|
8
|
+
## Mục tiêu
|
|
9
|
+
Hiểu rõ domain, market, user needs, và technical feasibility trước khi commit vào bất kỳ feature nào. Đảm bảo build đúng thứ.
|
|
10
|
+
|
|
11
|
+
## Input
|
|
12
|
+
`$ARGUMENTS` — mô tả product/domain cần khám phá (ví dụ: "nền tảng quản lý đơn hàng cho SME")
|
|
13
|
+
|
|
14
|
+
## Khi nào dùng
|
|
15
|
+
- Bắt đầu dự án mới (chưa có PRD/SRS)
|
|
16
|
+
- Explore hướng phát triển sản phẩm mới
|
|
17
|
+
- Trước khi chạy `/vsaf-plan` cho feature lớn mà chưa hiểu rõ domain
|
|
18
|
+
|
|
19
|
+
## Các bước thực hiện
|
|
20
|
+
|
|
21
|
+
### Bước 1 — Domain Research
|
|
22
|
+
- Dùng skill `bmad-domain-research` để deep dive domain/industry
|
|
23
|
+
- Output: terminology, business rules, regulatory constraints, domain patterns
|
|
24
|
+
- Lưu vào `docs/project/planning-artifacts/domain-research-[topic].md`
|
|
25
|
+
|
|
26
|
+
### Bước 2 — Market Research
|
|
27
|
+
- Dùng skill `bmad-market-research` để phân tích:
|
|
28
|
+
- Competition landscape: ai đang làm gì, strengths/weaknesses
|
|
29
|
+
- Customer needs: pain points, underserved segments
|
|
30
|
+
- Market trends: hướng đi nào đang tăng trưởng
|
|
31
|
+
- Lưu vào `docs/project/planning-artifacts/market-research-[topic].md`
|
|
32
|
+
|
|
33
|
+
### Bước 3 — Technical Feasibility
|
|
34
|
+
- Dùng skill `bmad-technical-research` để đánh giá:
|
|
35
|
+
- Tech stack options + trade-offs
|
|
36
|
+
- Integration constraints
|
|
37
|
+
- Performance/scale requirements
|
|
38
|
+
- Build vs buy decisions
|
|
39
|
+
- Lưu vào `docs/project/planning-artifacts/tech-research-[topic].md`
|
|
40
|
+
|
|
41
|
+
### Bước 4 — Product Brief
|
|
42
|
+
- Dùng skill `bmad-product-brief` để tổng hợp findings thành product brief
|
|
43
|
+
- Product brief = bản tóm tắt: vấn đề gì, cho ai, giải pháp gì, tại sao bây giờ
|
|
44
|
+
- Lưu vào `docs/project/planning-artifacts/product-brief-[name].md`
|
|
45
|
+
|
|
46
|
+
### Bước 5 — PRFAQ Challenge (Working Backwards)
|
|
47
|
+
- Dùng skill `bmad-prfaq` để stress-test product concept
|
|
48
|
+
- Viết press release giả lập: nếu product thành công, bài báo sẽ nói gì?
|
|
49
|
+
- Viết FAQ: internal FAQ (team hỏi gì) + external FAQ (customer hỏi gì)
|
|
50
|
+
- Mục đích: phát hiện concept yếu **trước khi** đầu tư thời gian code
|
|
51
|
+
|
|
52
|
+
### Bước 6 — Tạo PRD (Product Requirements Document)
|
|
53
|
+
- Dùng skill `bmad-agent-pm` (John) để dẫn dắt quá trình tạo PRD
|
|
54
|
+
- John sẽ gọi skill `bmad-create-prd` để sinh PRD chuẩn từ product brief
|
|
55
|
+
- PRD bao gồm: vision, goals, FRs, NFRs, epics, user stories, success metrics
|
|
56
|
+
- Sau khi tạo xong: dùng skill `bmad-validate-prd` để validate PRD đạt chuẩn
|
|
57
|
+
- Nếu validate FAIL: John sẽ dùng `bmad-edit-prd` để fix issues ngay
|
|
58
|
+
- Lưu vào `docs/project/planning-artifacts/prd-[name].md`
|
|
59
|
+
|
|
60
|
+
### Bước 7 — Multi-agent Review (Party Mode)
|
|
61
|
+
- Dùng skill `bmad-party-mode` để tổ chức roundtable:
|
|
62
|
+
- PM (John) trình bày PRD
|
|
63
|
+
- Analyst (Mary) challenge requirements
|
|
64
|
+
- Architect (Winston) challenge feasibility
|
|
65
|
+
- Ghi nhận consensus và open questions
|
|
66
|
+
|
|
67
|
+
### Bước 8 — Output cho user
|
|
68
|
+
```
|
|
69
|
+
## Discovery Complete: [product/domain]
|
|
70
|
+
|
|
71
|
+
### Research artifacts
|
|
72
|
+
- Domain research: docs/project/planning-artifacts/domain-research-[topic].md
|
|
73
|
+
- Market research: docs/project/planning-artifacts/market-research-[topic].md
|
|
74
|
+
- Tech research: docs/project/planning-artifacts/tech-research-[topic].md
|
|
75
|
+
- Product brief: docs/project/planning-artifacts/product-brief-[name].md
|
|
76
|
+
- PRD: docs/project/planning-artifacts/prd-[name].md
|
|
77
|
+
|
|
78
|
+
### Key findings
|
|
79
|
+
- [3-5 bullet points tóm tắt]
|
|
80
|
+
|
|
81
|
+
### Open questions
|
|
82
|
+
- [Những gì cần validate thêm]
|
|
83
|
+
|
|
84
|
+
### Recommended next steps
|
|
85
|
+
- Chạy /vsaf-sprint để break PRD thành epics + stories
|
|
86
|
+
- Hoặc: chạy /vsaf-plan <first-feature> để bắt đầu feature đầu tiên
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Lưu ý
|
|
90
|
+
- Flow này **không sinh code** — chỉ research + document
|
|
91
|
+
- Nếu domain quá rộng: đề nghị focus vào 1 vertical/segment trước
|
|
92
|
+
- Commit docs sau mỗi bước: `git commit -m "docs: discovery [topic]"`
|
|
@@ -1,53 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vsaf-doc
|
|
3
|
-
description:
|
|
3
|
+
description: DEPRECATED — Đã được tách thành 2 lệnh riêng. Dùng /vsaf-doc-prd để viết PRD, sau đó /vsaf-doc-srs để viết SRS.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# VSAF Doc
|
|
6
|
+
# VSAF Doc — DEPRECATED
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
Chuyển kết quả plan thành tài liệu chính thức: SRS có traceability rõ ràng để làm testcase và implementation.
|
|
8
|
+
Skill này đã được tách thành 2 lệnh riêng biệt:
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
1. `/vsaf-doc-prd` — Viết PRD (Product Requirements Document) từ kết quả `/vsaf-plan`
|
|
11
|
+
2. `/vsaf-doc-srs` — Viết SRS (Software Requirements Specification) từ PRD đã có
|
|
13
12
|
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
### Bước 1 — Search MemPalace
|
|
17
|
-
- Gọi `mcp__mempalace__mempalace_search` với keyword từ feature hiện tại
|
|
18
|
-
- Kiểm tra có decision cũ nào cần reference không?
|
|
19
|
-
|
|
20
|
-
### Bước 2 — Sinh SRS
|
|
21
|
-
- Viết tài liệu SRS từ output `/vsaf-plan`
|
|
22
|
-
- SRS phải bao gồm: scope, FRs, NFRs, assumptions, out-of-scope, acceptance criteria
|
|
23
|
-
- Thêm traceability ID cho FR/NFR để map sang testcase
|
|
24
|
-
- Lưu vào `docs/project/srs/[feature].md`
|
|
25
|
-
|
|
26
|
-
### Bước 3 — Chuẩn hoá implement notes
|
|
27
|
-
- Tạo implement notes bám SRS: module ảnh hưởng, ràng buộc kỹ thuật, rollout notes
|
|
28
|
-
- Không viết code trong bước này
|
|
29
|
-
|
|
30
|
-
### Bước 4 — Lưu architecture decision (MemPalace)
|
|
31
|
-
- Gọi `mcp__mempalace__mempalace_add_drawer` để lưu decision quan trọng
|
|
32
|
-
- Nội dung: approach được chọn, lý do, alternatives đã bỏ qua
|
|
33
|
-
|
|
34
|
-
### Bước 5 — Output cho user
|
|
35
|
-
Thông báo các file đã tạo:
|
|
13
|
+
## Quy trình mới
|
|
36
14
|
|
|
37
15
|
```
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
### Architecture Decision
|
|
44
|
-
- Đã lưu vào MemPalace
|
|
45
|
-
|
|
46
|
-
## Next step
|
|
47
|
-
Chạy /vsaf-test docs/project/srs/[feature].md để sinh testcase
|
|
16
|
+
/vsaf-plan <requirement> # scope + impact + approach
|
|
17
|
+
/vsaf-doc-prd # viết PRD từ approved scope
|
|
18
|
+
/vsaf-doc-srs # viết SRS từ PRD
|
|
19
|
+
/vsaf-test <path/to/srs> # sinh testcase từ SRS
|
|
48
20
|
```
|
|
49
21
|
|
|
50
|
-
|
|
51
|
-
- Không bắt đầu code trong bước này
|
|
52
|
-
- Nếu scope quá lớn (>3 modules): đề nghị split thành nhiều PRs
|
|
53
|
-
- Commit docs trước khi chuyển sang build: `git commit -m "docs: plan for <feature>"`
|
|
22
|
+
Vui lòng dùng `/vsaf-doc-prd` hoặc `/vsaf-doc-srs` thay cho skill này.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vsaf-doc-prd
|
|
3
|
+
description: Viết tài liệu PRD (Product Requirements Document) từ kết quả /vsaf-plan. Dùng sau /vsaf-plan khi đã có scope và approach rõ ràng.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# VSAF Doc PRD
|
|
7
|
+
|
|
8
|
+
## Mục tiêu
|
|
9
|
+
Chuyển kết quả plan thành PRD chính thức: vision, goals, FRs, NFRs, epics, user stories, success metrics.
|
|
10
|
+
|
|
11
|
+
## Điều kiện tiên quyết
|
|
12
|
+
Phải đã chạy `/vsaf-plan` và có output trước khi chạy skill này.
|
|
13
|
+
|
|
14
|
+
## Các bước thực hiện
|
|
15
|
+
|
|
16
|
+
### Bước 0 — Xác định mode: Tạo mới hay Chỉnh sửa
|
|
17
|
+
- Kiểm tra xem đã có PRD trong `docs/project/planning-artifacts/` cho feature này chưa
|
|
18
|
+
- **Nếu chưa có** → Mode: CREATE (tạo mới từ đầu)
|
|
19
|
+
- **Nếu đã có** → Mode: EDIT (chỉnh sửa dựa trên feedback/changes)
|
|
20
|
+
- Hỏi user: "PRD đã tồn tại. Bạn muốn tạo mới hoàn toàn hay chỉnh sửa?"
|
|
21
|
+
|
|
22
|
+
### Bước 1 — Sinh hoặc Chỉnh sửa PRD
|
|
23
|
+
|
|
24
|
+
#### Mode CREATE:
|
|
25
|
+
- Dùng skill `bmad-agent-pm` (John) để dẫn dắt quá trình tạo PRD từ output `/vsaf-plan`
|
|
26
|
+
- John sẽ gọi skill `bmad-create-prd` để sinh PRD chuẩn
|
|
27
|
+
- PRD phải bao gồm: vision, goals, FRs, NFRs, epics, user stories, success metrics, scope, out-of-scope, assumptions
|
|
28
|
+
- Lưu vào `docs/project/planning-artifacts/prd-[feature].md`
|
|
29
|
+
|
|
30
|
+
#### Mode EDIT:
|
|
31
|
+
- Dùng skill `bmad-edit-prd` để chỉnh sửa PRD đã có
|
|
32
|
+
- Giữ nguyên structure và IDs đã có — chỉ thêm/sửa/xoá sections cần thiết
|
|
33
|
+
- Nếu thay đổi lớn: cảnh báo user rằng SRS và testcases cần re-run
|
|
34
|
+
|
|
35
|
+
### Bước 2 — Validate PRD (BMAD validate)
|
|
36
|
+
- Dùng skill `bmad-validate-prd` để validate PRD vừa sinh/sửa
|
|
37
|
+
- Kiểm tra: FRs đủ rõ ràng? NFRs đo lường được? Acceptance criteria kiểm chứng được?
|
|
38
|
+
- Nếu có issues: fix ngay trong PRD, không chờ đến build
|
|
39
|
+
- Ghi nhận validation result (PASS/FAIL + findings)
|
|
40
|
+
|
|
41
|
+
### Bước 3 — Output cho user
|
|
42
|
+
```
|
|
43
|
+
## PRD đã tạo/cập nhật
|
|
44
|
+
|
|
45
|
+
### File
|
|
46
|
+
- docs/project/planning-artifacts/prd-[feature].md
|
|
47
|
+
- Mode: [CREATE / EDIT]
|
|
48
|
+
- Validation: [PASS / FAIL — chi tiết nếu fail]
|
|
49
|
+
|
|
50
|
+
## Next step
|
|
51
|
+
Chạy /vsaf-doc-srs để viết tài liệu SRS từ PRD này
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Lưu ý
|
|
55
|
+
- Không bắt đầu code trong bước này
|
|
56
|
+
- Nếu scope quá lớn (>3 modules): đề nghị split thành nhiều PRs
|
|
57
|
+
- Commit docs trước khi chuyển sang SRS: `git commit -m "docs: prd for <feature>"`
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vsaf-doc-srs
|
|
3
|
+
description: Viết tài liệu SRS (Software Requirements Specification) từ PRD đã có. Dùng sau /vsaf-doc-prd. Theo workflow BA chuẩn với template SRS feature-level.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# VSAF Doc SRS
|
|
7
|
+
|
|
8
|
+
## Mục tiêu
|
|
9
|
+
Phân tích PRD và viết tài liệu SRS feature-level theo template chuẩn — đảm bảo truy xuất được từ PRD → Use Cases → Màn hình → Epic/Story.
|
|
10
|
+
|
|
11
|
+
**Your Role:** Business Analyst chuyên nghiệp — viết SRS theo quy trình chuẩn.
|
|
12
|
+
|
|
13
|
+
## Điều kiện tiên quyết
|
|
14
|
+
- Phải đã chạy `/vsaf-doc-prd` và có PRD được approve trước khi chạy skill này.
|
|
15
|
+
|
|
16
|
+
## Cấu hình
|
|
17
|
+
```yaml
|
|
18
|
+
outputDir: docs/project/srs
|
|
19
|
+
featureTemplate: _bmad/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md
|
|
20
|
+
systemTemplate: _bmad/bmm/1-analysis/bmad-document-project/templates/srs-system-template.md
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Các bước thực hiện
|
|
24
|
+
|
|
25
|
+
### Bước 0 — Kiểm tra đầu vào
|
|
26
|
+
|
|
27
|
+
Trước khi bắt đầu, kiểm tra xem user đã cung cấp đủ thông tin chưa:
|
|
28
|
+
|
|
29
|
+
**Yêu cầu bắt buộc:**
|
|
30
|
+
- [ ] Tài liệu PRD (file path hoặc nội dung) — thường ở `docs/project/planning-artifacts/prd-[feature].md`
|
|
31
|
+
- [ ] Figma link (URL figma.com/design/...) — nếu có
|
|
32
|
+
|
|
33
|
+
Nếu thiếu PRD, **dừng lại ngay** và yêu cầu user cung cấp:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Để viết tài liệu SRS, tôi cần bạn cung cấp:
|
|
37
|
+
|
|
38
|
+
❌ [liệt kê những gì còn thiếu]
|
|
39
|
+
|
|
40
|
+
Vui lòng cung cấp:
|
|
41
|
+
1. File PRD: đường dẫn file hoặc paste nội dung vào đây
|
|
42
|
+
2. Figma link (nếu có): URL dạng https://www.figma.com/design/...
|
|
43
|
+
3. Flow/Feature cần viết SRS (VD: FR-1, FR-2,...)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Chỉ tiếp tục khi đã có đủ PRD.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### Bước 1 — Xác định mode: Tạo mới hay Chỉnh sửa
|
|
51
|
+
- Kiểm tra xem đã có SRS trong `docs/project/srs/` cho feature này chưa
|
|
52
|
+
- **Nếu chưa có** → Mode: CREATE
|
|
53
|
+
- **Nếu đã có** → Mode: EDIT
|
|
54
|
+
- Hỏi user: "SRS đã tồn tại. Bạn muốn tạo mới hoàn toàn hay chỉnh sửa?"
|
|
55
|
+
- Mode EDIT: dùng skill `bmad-edit-prd` để chỉnh sửa SRS đã có
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### Bước 2 — Đọc & phân tích PRD
|
|
60
|
+
|
|
61
|
+
Đọc toàn bộ tài liệu PRD. Trích xuất và tổ chức thông tin theo cấu trúc:
|
|
62
|
+
|
|
63
|
+
**2.1 Mục tiêu dự án**
|
|
64
|
+
- Business objective, Problem statement, Success criteria
|
|
65
|
+
|
|
66
|
+
**2.2 Phạm vi (Scope)**
|
|
67
|
+
- In-scope features / Sub-FRs, Out-of-scope, Các module/màn hình chính
|
|
68
|
+
|
|
69
|
+
**2.3 Actors & Use Cases**
|
|
70
|
+
- Danh sách các actor (vai trò người dùng), User stories / use cases đã đề cập
|
|
71
|
+
|
|
72
|
+
**2.4 Business Rules**
|
|
73
|
+
- Quy tắc nghiệp vụ quan trọng, Constraints & assumptions
|
|
74
|
+
|
|
75
|
+
**2.5 Non-functional Requirements**
|
|
76
|
+
- Performance, security, scalability, v.v. (nếu có)
|
|
77
|
+
|
|
78
|
+
Sau bước này, xuất ra **"Tóm tắt PRD"** để user xác nhận trước khi sang bước 3.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### Bước 3 — So sánh PRD với Figma (nếu có Figma)
|
|
83
|
+
|
|
84
|
+
Nếu có Figma link, dùng Figma MCP tools để đọc design:
|
|
85
|
+
1. Gọi `get_figma_data` để lấy danh sách pages/frames
|
|
86
|
+
2. Download screenshots cho từng màn hình chính
|
|
87
|
+
|
|
88
|
+
So sánh và ghi nhận:
|
|
89
|
+
|
|
90
|
+
| Hạng mục | PRD nói | Figma thiết kế | Trạng thái |
|
|
91
|
+
|---|---|---|---|
|
|
92
|
+
| [Feature/Screen] | ... | ... | ✅ Khớp / ⚠️ Khác biệt / ❓ Chưa rõ |
|
|
93
|
+
|
|
94
|
+
**Phân tích gap:**
|
|
95
|
+
- **Gap 1 — Thiếu trong Figma:** Features có trong PRD nhưng không thấy trong design
|
|
96
|
+
- **Gap 2 — Thêm trong Figma:** UI elements trong Figma nhưng không đề cập trong PRD
|
|
97
|
+
- **Gap 3 — Mâu thuẫn:** Thông tin không nhất quán giữa hai nguồn
|
|
98
|
+
|
|
99
|
+
Nếu không có Figma: ghi rõ "Chưa có Figma design — cần UX team cung cấp" tại mục 2 của SRS.
|
|
100
|
+
|
|
101
|
+
Sau bước này, xuất ra **"Báo cáo Gap Analysis"** và hỏi user có muốn clarify gap nào trước khi viết SRS không.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### Bước 4 — Viết tài liệu SRS theo Feature Template
|
|
106
|
+
|
|
107
|
+
Đọc template tại `_bmad/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md` và viết SRS **đúng theo cấu trúc template**, bao gồm đầy đủ 12 sections (0–11):
|
|
108
|
+
|
|
109
|
+
0. **Preamble** — Thông tin tài liệu, bảng ghi nhận thay đổi, bảng phê duyệt
|
|
110
|
+
1. **Introduction** — Mục tiêu, phạm vi, tài liệu tham chiếu
|
|
111
|
+
2. **Business Context** — Business objective, actors, use cases tổng quan
|
|
112
|
+
3. **System Overview** — High-Level Activity Diagram + Architecture
|
|
113
|
+
4. **Data Model** — Entity tables, ER diagram, Kafka Events, API Endpoints
|
|
114
|
+
5. **Functional Requirements** — Đặc tả Use Cases chi tiết. Mỗi UC gồm:
|
|
115
|
+
- **Màn hình** — Bảng chi tiết controls từng màn hình thuộc UC
|
|
116
|
+
- **Luồng nghiệp vụ** — Sequence diagram (PlantUML) + Activity diagram (PlantUML, nếu cần)
|
|
117
|
+
- Màn hình dùng chung: đặt bảng đầy đủ tại UC đầu tiên, UC sau ghi tham chiếu
|
|
118
|
+
6. **State & Behavioral Models** — State diagrams (Mermaid stateDiagram-v2), entity lifecycle
|
|
119
|
+
7. **Business Rules & Validation** — BR table + Validation Rules + Error Codes
|
|
120
|
+
8. **NFR** — Non-functional requirements đặc thù cho flow
|
|
121
|
+
9. **Constraints** — Constraints, assumptions, dependencies, transition requirements
|
|
122
|
+
10. **RTM** — Ma trận truy xuất: PRD FR → UC → Màn hình → Epic/Story → BR → AC → Test Case
|
|
123
|
+
11. **Appendix** — Figma Mapping tables, Screen List, Chức năng ảnh hưởng, Gap Analysis
|
|
124
|
+
|
|
125
|
+
**Quy tắc viết:**
|
|
126
|
+
- Viết bằng **tiếng Việt** trừ khi user yêu cầu tiếng Anh
|
|
127
|
+
- Giữ nguyên business rules từ PRD, không tự ý thay đổi logic nghiệp vụ
|
|
128
|
+
- Mỗi Use Case phải có: Precondition, Main flow, Alternative flow, Exception flow, Postcondition
|
|
129
|
+
- Activity/Flow diagrams dùng Mermaid `flowchart TD`; State diagrams dùng `stateDiagram-v2`; ER dùng `erDiagram`
|
|
130
|
+
- Nếu thông tin chưa đủ → ghi `{{Cần bổ sung}}` và liệt kê ở phần Gap Analysis
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### Bước 5 — Validate SRS (BMAD validate)
|
|
135
|
+
- Dùng skill `bmad-validate-prd` để validate SRS vừa sinh/sửa
|
|
136
|
+
- Kiểm tra: FRs đủ rõ ràng? NFRs đo lường được? Acceptance criteria kiểm chứng được?
|
|
137
|
+
- Nếu có issues: fix ngay trong SRS, không chờ đến build
|
|
138
|
+
- Ghi nhận validation result (PASS/FAIL + findings)
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### Bước 6 — Lưu file SRS
|
|
143
|
+
Lưu tài liệu SRS vào: `docs/project/srs/SRS-[tên-dự-án]-[FR-ID]-[tên-feature]-v1.0.md`
|
|
144
|
+
|
|
145
|
+
### Bước 7 — Output cho user
|
|
146
|
+
```
|
|
147
|
+
## SRS đã tạo/cập nhật
|
|
148
|
+
|
|
149
|
+
### File
|
|
150
|
+
- docs/project/srs/SRS-[tên-dự-án]-[FR-ID]-[tên-feature]-v1.0.md
|
|
151
|
+
- Mode: [CREATE / EDIT]
|
|
152
|
+
- Use Cases viết: [N]
|
|
153
|
+
- Validation: [PASS / FAIL — chi tiết nếu fail]
|
|
154
|
+
|
|
155
|
+
### Gaps cần confirm
|
|
156
|
+
- [Danh sách gaps quan trọng cần team confirm]
|
|
157
|
+
|
|
158
|
+
### Phần chưa hoàn thiện
|
|
159
|
+
- [Các phần SRS còn {{...}} cần bổ sung thêm]
|
|
160
|
+
|
|
161
|
+
## Next step
|
|
162
|
+
Chạy /vsaf-test docs/project/srs/SRS-[...].md để sinh testcase
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Lưu ý
|
|
166
|
+
- Không bắt đầu code trong bước này
|
|
167
|
+
- Nếu scope quá lớn (>3 modules): đề nghị split thành nhiều PRs
|
|
168
|
+
- Commit docs: `git commit -m "docs: srs for <feature>"`
|
|
169
|
+
- Nếu mode EDIT và testcases cũ bị ảnh hưởng: cảnh báo user re-run `/vsaf-test`
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vsaf-docs
|
|
3
|
+
description: Documentation & knowledge sync — cập nhật docs, sinh project context, build wiki. Dùng sau /vsaf-ship hoặc cuối sprint để đảm bảo knowledge không bị mất.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# VSAF Docs
|
|
7
|
+
|
|
8
|
+
## Mục tiêu
|
|
9
|
+
Đảm bảo documentation luôn cập nhật và AI agents có đủ context.
|
|
10
|
+
|
|
11
|
+
## Input
|
|
12
|
+
`$ARGUMENTS` — scope cần document:
|
|
13
|
+
- *(không có argument)* — full documentation refresh
|
|
14
|
+
- `<module>` — document module cụ thể
|
|
15
|
+
- `context` — chỉ sinh project-context.md
|
|
16
|
+
|
|
17
|
+
## Khi nào dùng
|
|
18
|
+
- Sau mỗi sprint (batch update)
|
|
19
|
+
- Sau ship feature lớn (>3 modules thay đổi)
|
|
20
|
+
- Khi onboard team member mới
|
|
21
|
+
- Khi AI agent gặp khó hiểu codebase
|
|
22
|
+
|
|
23
|
+
## Các bước thực hiện
|
|
24
|
+
|
|
25
|
+
### Bước 1 — Scan current state
|
|
26
|
+
- Dùng `mcp__gitnexus__query` để scan codebase hiện tại
|
|
27
|
+
- So sánh: docs hiện tại vs code hiện tại — tìm docs lạc hậu
|
|
28
|
+
|
|
29
|
+
### Bước 2 — Generate project documentation
|
|
30
|
+
- Dùng skill `bmad-document-project` để sinh/cập nhật project docs
|
|
31
|
+
- Output: mô tả architecture, module breakdown, API endpoints, data flows
|
|
32
|
+
- Lưu vào `docs/project/`
|
|
33
|
+
|
|
34
|
+
### Bước 3 — Generate project context for AI
|
|
35
|
+
- Dùng skill `bmad-generate-project-context` để tạo `project-context.md`
|
|
36
|
+
- File này = instructions cho AI agents: conventions, patterns, do/don't
|
|
37
|
+
- Lưu tại root project
|
|
38
|
+
|
|
39
|
+
### Bước 4 — Tech writing review
|
|
40
|
+
- Dùng skill `bmad-agent-tech-writer` (Paige) để review docs vừa sinh
|
|
41
|
+
- Paige sẽ: fix unclear sections, add missing context, ensure consistency
|
|
42
|
+
|
|
43
|
+
### Bước 5 — Editorial polish
|
|
44
|
+
- Dùng skill `bmad-editorial-review-prose` — clean up writing quality
|
|
45
|
+
- Fix: passive voice, jargon, ambiguity, grammar
|
|
46
|
+
- Dùng skill `bmad-editorial-review-structure` — improve doc organization
|
|
47
|
+
- Fix: duplicated content, poor ordering, missing sections
|
|
48
|
+
|
|
49
|
+
### Bước 6 — Distill for LLM consumption
|
|
50
|
+
- Dùng skill `bmad-distillator` với docs dài (>500 lines)
|
|
51
|
+
- Tạo phiên bản compressed — giữ nguyên thông tin, giảm token count
|
|
52
|
+
- Lưu distilled version cạnh original: `[name].distilled.md`
|
|
53
|
+
|
|
54
|
+
### Bước 7 — Index all docs
|
|
55
|
+
- Dùng skill `bmad-index-docs` cho mỗi folder trong `docs/`
|
|
56
|
+
- Sinh/cập nhật `index.md` — mục lục tất cả files + mô tả ngắn
|
|
57
|
+
|
|
58
|
+
### Bước 8 — Output cho user
|
|
59
|
+
```
|
|
60
|
+
## Documentation Sync Complete
|
|
61
|
+
|
|
62
|
+
### Updated
|
|
63
|
+
- Project docs: [N files updated]
|
|
64
|
+
- Project context: project-context.md [created/updated]
|
|
65
|
+
- Distilled docs: [N files compressed]
|
|
66
|
+
- Doc indexes: [N index.md files]
|
|
67
|
+
|
|
68
|
+
### Quality checks
|
|
69
|
+
- Prose review: PASS
|
|
70
|
+
- Structure review: PASS
|
|
71
|
+
- Stale docs found: [N — list]
|
|
72
|
+
|
|
73
|
+
### Next step
|
|
74
|
+
Documentation is current. Continue with /vsaf-plan or /vsaf-sprint.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Lưu ý
|
|
78
|
+
- Flow này **không sửa code** — chỉ documentation
|
|
79
|
+
- Chạy ít nhất 1 lần mỗi sprint hoặc sau mỗi major ship
|
|
80
|
+
- Commit tất cả docs: `git commit -m "docs: sync documentation [sprint N]"`
|
|
81
|
+
- Nếu docs >1000 lines: luôn tạo distilled version
|
|
@@ -16,11 +16,10 @@ Xây dựng full mental model về dự án trước khi chạm vào bất kỳ
|
|
|
16
16
|
- Nếu cần drill-down symbol cụ thể: dùng `mcp__gitnexus__context` với param `name` là tên symbol đó
|
|
17
17
|
- Tóm tắt: execution flows quan trọng, symbols có nhiều dependencies nhất
|
|
18
18
|
|
|
19
|
-
### Bước 2 —
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
- Tóm tắt: các quyết định kiến trúc quan trọng team đã đưa ra
|
|
19
|
+
### Bước 2 — Đọc tài liệu dự án
|
|
20
|
+
- Đọc `docs/project/planning-artifacts/` để tìm PRD, ADR, architecture docs
|
|
21
|
+
- Đọc `docs/project/srs/` để tìm SRS đã có
|
|
22
|
+
- Tóm tắt: các quyết định kiến trúc quan trọng đã document
|
|
24
23
|
|
|
25
24
|
### Bước 3 — Output cho user
|
|
26
25
|
Trình bày tóm tắt theo format:
|
|
@@ -44,5 +43,4 @@ Trình bày tóm tắt theo format:
|
|
|
44
43
|
|
|
45
44
|
## Lưu ý
|
|
46
45
|
- KHÔNG sửa bất kỳ file nào trong bước này
|
|
47
|
-
- Nếu bộ nhớ MemPalace trống: thông báo user chạy `vsaf mine` để populate
|
|
48
46
|
- Sau khi hoàn thành: gợi ý user dùng `/vsaf-plan <feature>` để bắt đầu task
|
|
@@ -13,38 +13,37 @@ Hiểu đầy đủ yêu cầu, phân tích impact, và xác định chiến lư
|
|
|
13
13
|
|
|
14
14
|
## Các bước thực hiện
|
|
15
15
|
|
|
16
|
-
### Bước 1 —
|
|
17
|
-
- Gọi `mcp__mempalace__mempalace_search` với keyword từ `$ARGUMENTS`
|
|
18
|
-
- Tìm kiếm: past decisions, architectural patterns, previous attempts
|
|
19
|
-
- Tóm tắt: có decision nào liên quan không?
|
|
20
|
-
|
|
21
|
-
### Bước 2 — Clarify scope (BMAD analyst)
|
|
16
|
+
### Bước 1 — Clarify scope (BMAD analyst)
|
|
22
17
|
- Dùng skill `bmad-agent-analyst` để phân tích yêu cầu
|
|
23
18
|
- Xác định: FRs, NFRs, edge cases, assumptions, out-of-scope
|
|
24
19
|
- DỪNG và hỏi user nếu còn điểm chưa rõ
|
|
25
20
|
|
|
26
|
-
### Bước
|
|
21
|
+
### Bước 2 — Impact analysis (GitNexus)
|
|
27
22
|
- Dùng `mcp__gitnexus__impact` với target là module/symbol liên quan
|
|
28
23
|
- Dùng `mcp__gitnexus__query` để tìm code liên quan
|
|
29
24
|
- Báo cáo blast radius: bao nhiêu module bị ảnh hưởng, risk level
|
|
30
25
|
- Nếu risk HIGH/CRITICAL: DỪNG, báo user trước khi tiếp tục
|
|
31
26
|
|
|
32
|
-
### Bước
|
|
33
|
-
- Nếu cần trace path giữa 2 services: dùng `/graphify path ServiceA ServiceB`
|
|
34
|
-
- Xác định: integration points, shared dependencies
|
|
35
|
-
|
|
36
|
-
### Bước 5 — Architecture decision (BMAD architect)
|
|
27
|
+
### Bước 3 — Architecture decision (BMAD architect)
|
|
37
28
|
- Dùng skill `bmad-agent-architect` để đề xuất architecture approach
|
|
38
29
|
- So sánh alternatives, chọn approach phù hợp nhất
|
|
30
|
+
- **Nếu risk HIGH hoặc > 3 modules**: dùng skill `bmad-create-architecture` để tạo ADR (Architecture Decision Record) chính thức
|
|
31
|
+
- Lưu vào `docs/project/planning-artifacts/adr-[feature].md`
|
|
39
32
|
|
|
40
|
-
### Bước
|
|
33
|
+
### Bước 4 — Brainstorm (BMAD Brainstorming)
|
|
41
34
|
- Dùng skill `bmad-brainstorming` để explore alternatives và uncover hidden risks
|
|
42
35
|
- Facilitator sẽ dẫn dắt session với các kỹ thuật sáng tạo đa dạng
|
|
43
36
|
- Đặt câu hỏi: "What if...", "What could go wrong...", "What are we missing?"
|
|
44
37
|
- Mục tiêu: tối thiểu 20 ý tưởng/alternatives trước khi tổ chức lại
|
|
45
38
|
- bmad-brainstorming sẽ load config từ `_bmad/bmm/config.yaml`
|
|
46
39
|
|
|
47
|
-
### Bước
|
|
40
|
+
### Bước 5 — Challenge approach (BMAD Advanced Elicitation)
|
|
41
|
+
- Dùng skill `bmad-advanced-elicitation` để challenge approach đã chọn
|
|
42
|
+
- Chạy **pre-mortem**: "Giả sử approach này fail sau 3 tháng — vì sao?"
|
|
43
|
+
- Chạy **red team**: tìm điểm yếu, attack vectors, failure modes
|
|
44
|
+
- Nếu phát hiện risk nghiêm trọng: quay lại Bước 3 để điều chỉnh approach
|
|
45
|
+
|
|
46
|
+
### Bước 6 — Output cho user
|
|
48
47
|
Trình bày kết quả theo format:
|
|
49
48
|
|
|
50
49
|
```
|
|
@@ -62,11 +61,17 @@ Trình bày kết quả theo format:
|
|
|
62
61
|
## Approach được chọn
|
|
63
62
|
[Mô tả architecture approach]
|
|
64
63
|
|
|
64
|
+
## Pre-mortem findings
|
|
65
|
+
[Những risk đã identify và mitigation plan]
|
|
66
|
+
|
|
65
67
|
## Alternatives đã xem xét
|
|
66
68
|
[Tại sao không chọn]
|
|
67
69
|
|
|
70
|
+
## ADR
|
|
71
|
+
[Đã tạo / Không cần (risk LOW)]
|
|
72
|
+
|
|
68
73
|
## Next step
|
|
69
|
-
Chạy /vsaf-doc để viết tài liệu
|
|
74
|
+
Chạy /vsaf-doc-prd để viết tài liệu PRD
|
|
70
75
|
```
|
|
71
76
|
|
|
72
77
|
## Lưu ý
|