hero-vibe-kit 0.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/CHANGELOG.md +19 -0
- package/LICENSE +21 -0
- package/README.md +165 -0
- package/bin/hero-vibe-kit.js +62 -0
- package/package.json +35 -0
- package/presets/enterprise.json +6 -0
- package/presets/small-team.json +6 -0
- package/presets/solo.json +6 -0
- package/skills.manifest.json +39 -0
- package/src/detect.cjs +42 -0
- package/src/doctor.cjs +74 -0
- package/src/init.cjs +95 -0
- package/src/integrations.cjs +89 -0
- package/src/links.cjs +37 -0
- package/src/merge.cjs +61 -0
- package/src/render.cjs +27 -0
- package/src/update.cjs +59 -0
- package/src/util.cjs +56 -0
- package/templates/AGENTS.md.tmpl +9 -0
- package/templates/CLAUDE.md.tmpl +11 -0
- package/templates/common/.claude/hooks/git-guard.cjs +55 -0
- package/templates/common/.claude/hooks/stop-reminder.cjs +34 -0
- package/templates/common/.claude/settings.json +25 -0
- package/templates/docs/en/ACTIVE_STATE.md +28 -0
- package/templates/docs/en/AGENCY_WORKFLOW.md +126 -0
- package/templates/docs/en/BRANCHING.md +44 -0
- package/templates/docs/en/COMMUNICATION_PROTOCOL.md +59 -0
- package/templates/docs/en/DEFINITION_OF_DONE.md +60 -0
- package/templates/docs/en/INTERACTION_PATTERNS.md +58 -0
- package/templates/docs/en/PERFORMANCE_STANDARDS.md +31 -0
- package/templates/docs/en/SECURITY_STANDARDS.md +37 -0
- package/templates/docs/en/TEAM_ROSTER.md +35 -0
- package/templates/docs/en/templates/PRD_AI_FEATURE.md +85 -0
- package/templates/docs/vi/ACTIVE_STATE.md +28 -0
- package/templates/docs/vi/AGENCY_WORKFLOW.md +126 -0
- package/templates/docs/vi/BRANCHING.md +44 -0
- package/templates/docs/vi/COMMUNICATION_PROTOCOL.md +59 -0
- package/templates/docs/vi/DEFINITION_OF_DONE.md +60 -0
- package/templates/docs/vi/INTERACTION_PATTERNS.md +58 -0
- package/templates/docs/vi/PERFORMANCE_STANDARDS.md +31 -0
- package/templates/docs/vi/SECURITY_STANDARDS.md +37 -0
- package/templates/docs/vi/TEAM_ROSTER.md +35 -0
- package/templates/docs/vi/templates/PRD_AI_FEATURE.md +85 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Communication Protocol — Human ↔ AI
|
|
2
|
+
|
|
3
|
+
> Hợp đồng giao tiếp giữa **người** (Product Owner / Dev) và **các agent AI** trong dự án. Áp dụng cho **mọi tương tác**, đặc biệt khi **làm rõ yêu cầu** (Phase 1). Là một phần bắt buộc của [AGENCY_WORKFLOW.md](./AGENCY_WORKFLOW.md).
|
|
4
|
+
>
|
|
5
|
+
> Vì sản phẩm này *là* một AI assistant, chất lượng làm rõ yêu cầu quyết định chất lượng sản phẩm — giao thức này nhằm loại bỏ hiểu lầm ngầm.
|
|
6
|
+
|
|
7
|
+
## 1. Ngôn ngữ & phong cách
|
|
8
|
+
- **Tiếng Việt** là ngôn ngữ mặc định khi trao đổi với User; **giữ nguyên thuật ngữ kỹ thuật tiếng Anh** (API, endpoint, prompt, token…).
|
|
9
|
+
- Ngắn gọn, trực diện, không vòng vo. Trình bày phương án quan trọng kèm khuyến nghị rõ ràng.
|
|
10
|
+
- Trích dẫn `file:line` khi nói về code.
|
|
11
|
+
|
|
12
|
+
## 2. Nguyên tắc cốt lõi
|
|
13
|
+
1. **No silent assumptions** — Không bao giờ tự bịa thông tin còn thiếu. Khi thiếu, hoặc **HỎI**, hoặc nêu **giả định tường minh** gắn nhãn `GIẢ ĐỊNH:` để User dễ bác bỏ.
|
|
14
|
+
2. **Phân tầng độ chắc chắn** — Tách bạch rõ:
|
|
15
|
+
- ✅ **Chắc chắn** (đã đọc code/tài liệu, có bằng chứng)
|
|
16
|
+
- 🤔 **Suy đoán** (suy luận hợp lý nhưng chưa kiểm chứng)
|
|
17
|
+
- ❓ **Cần xác nhận** (phụ thuộc quyết định của User)
|
|
18
|
+
3. **Sự thật trên sự đồng thuận** — AI phản biện khi thấy yêu cầu mâu thuẫn/rủi ro, không "gật cho xong". (Chiều ngược lại: khi nhận feedback, dùng skill `receiving-code-review` — kiểm chứng kỹ thuật, không đồng ý hình thức.)
|
|
19
|
+
4. **Bằng chứng trước khẳng định** — Không tuyên bố "đã xong/đã pass" khi chưa chạy lệnh kiểm chứng (xem `verification-before-completion`).
|
|
20
|
+
|
|
21
|
+
## 3. Giao thức làm rõ yêu cầu
|
|
22
|
+
### 3.1. Phân loại câu hỏi
|
|
23
|
+
| Loại | Định nghĩa | Cách xử lý |
|
|
24
|
+
|------|-----------|-----------|
|
|
25
|
+
| **Blocking** | Không có câu trả lời thì KHÔNG thể đi tiếp đúng hướng (vd: phạm vi, đối tượng dùng, ràng buộc cứng) | Phải hỏi & chờ User trả lời |
|
|
26
|
+
| **Non-blocking** | Có giá trị mặc định hợp lý | AI **tự quyết theo default**, nêu rõ `GIẢ ĐỊNH:` đã dùng để User chỉnh sau |
|
|
27
|
+
|
|
28
|
+
> Mục tiêu: không chặn tiến độ vì những thứ có default hợp lý; chỉ chặn ở những điều thực sự cần quyết định của người.
|
|
29
|
+
|
|
30
|
+
### 3.2. Cách hỏi
|
|
31
|
+
- **Câu hỏi độc lập** → gom lại hỏi một lượt qua **`AskUserQuestion`** (tối đa ~4 câu, mỗi câu có option + khuyến nghị).
|
|
32
|
+
- **Câu hỏi thăm dò / phụ thuộc nhau** → hỏi **tuần tự, một câu mỗi lần** (theo skill `brainstorming`) để câu sau dựa trên câu trước.
|
|
33
|
+
- Ưu tiên câu hỏi dạng lựa chọn hơn câu mở khi có thể.
|
|
34
|
+
|
|
35
|
+
### 3.3. Kết thúc mỗi vòng làm rõ
|
|
36
|
+
Mỗi lượt làm rõ phải khép lại bằng 3 mục:
|
|
37
|
+
1. **Tóm tắt hiểu biết hiện tại** (1 đoạn ngắn — để User soi sai sót).
|
|
38
|
+
2. **Câu hỏi còn mở** (blocking nào chưa trả lời).
|
|
39
|
+
3. **Giả định đang giữ** (assumptions register — danh sách `GIẢ ĐỊNH:` đang dùng).
|
|
40
|
+
|
|
41
|
+
## 4. Xác nhận, sign-off & sửa hiểu lầm
|
|
42
|
+
- **Gate = Plan Mode thật**: chốt PRD/TDD qua `EnterPlanMode → ExitPlanMode`, không phải câu chữ "chờ duyệt".
|
|
43
|
+
- **Đóng vòng khi hiểu sai (loop repair)**: khi User sửa/đính chính → AI **nhắc lại cách hiểu MỚI bằng lời của mình** và **chờ User xác nhận** trước khi tiếp tục. Không âm thầm "tự hiểu lại".
|
|
44
|
+
- Sau khi User duyệt, coi đó là **commitment** — nếu muốn đổi, mở lại gate, không tự ý đổi hướng.
|
|
45
|
+
|
|
46
|
+
## 5. Decision log & Assumptions register
|
|
47
|
+
Mỗi feature ghi trong PRD (xem template):
|
|
48
|
+
- **Decision Log**: `| Ngày | Câu hỏi/Vấn đề | Quyết định | Người quyết | Lý do |` — để sau này biết "vì sao hồi đó chọn thế".
|
|
49
|
+
- **Assumptions Register**: danh sách giả định đang giữ + trạng thái (`chờ xác nhận` / `đã xác nhận` / `đã bác bỏ`).
|
|
50
|
+
|
|
51
|
+
## 6. Quy tắc cho sub-agent (đa agent)
|
|
52
|
+
- **Sub-agent KHÔNG giao tiếp trực tiếp với User.** Nếu thiếu thông tin / gặp quyết định cần người → **báo Main Agent**, Main Agent tổng hợp rồi mới hỏi User. Tránh nhiều agent hỏi loạn, mâu thuẫn.
|
|
53
|
+
- Main Agent là **một cửa giao tiếp duy nhất** với User.
|
|
54
|
+
- Prompt giao cho sub-agent phải **self-contained** (xem [TEAM_ROSTER.md](./TEAM_ROSTER.md)) — gồm cả các giả định/quyết định liên quan đã chốt với User.
|
|
55
|
+
|
|
56
|
+
## 7. Liên quan
|
|
57
|
+
- [AGENCY_WORKFLOW.md](./AGENCY_WORKFLOW.md) — Phase 1 áp dụng giao thức này.
|
|
58
|
+
- [templates/PRD_AI_FEATURE.md](./templates/PRD_AI_FEATURE.md) — các chiều cần làm rõ cho feature AI.
|
|
59
|
+
- [INTERACTION_PATTERNS.md](./INTERACTION_PATTERNS.md) — cách *sản phẩm* giao tiếp với end-user (khác với tài liệu này: đây là người↔AI trong quá trình phát triển).
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Definition of Done (DoD)
|
|
2
|
+
|
|
3
|
+
> Tiêu chí hoàn thành **đo được**. Một thay đổi chỉ được coi là "xong" khi thỏa DoD của path tương ứng. Path do [AGENCY_WORKFLOW.md §1](./AGENCY_WORKFLOW.md#1-bảng-phân-loại-task--workflow-router) quyết định.
|
|
4
|
+
|
|
5
|
+
## ⚙️ Placeholder cần điền khi chốt tech stack
|
|
6
|
+
Stack chưa chốt — điền các giá trị sau ở PRD/TDD đầu tiên rồi cập nhật file này:
|
|
7
|
+
|
|
8
|
+
| Biến | Giá trị | Ví dụ |
|
|
9
|
+
|------|---------|-------|
|
|
10
|
+
| `<TEST_CMD>` | lệnh chạy test | `npm test` / `pytest` |
|
|
11
|
+
| `<LINT_CMD>` | lệnh lint + format check | `npm run lint` / `ruff check .` |
|
|
12
|
+
| `<BUILD_CMD>` | lệnh build | `npm run build` / `—` |
|
|
13
|
+
| `<COVERAGE_MIN>` | ngưỡng coverage tối thiểu | `80%` |
|
|
14
|
+
| `<TYPECHECK_CMD>` | type check (nếu có) | `tsc --noEmit` / `mypy .` |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Checklist theo path
|
|
19
|
+
|
|
20
|
+
### Read-only (Q&A / Explain)
|
|
21
|
+
- [ ] Trả lời đúng trọng tâm câu hỏi.
|
|
22
|
+
- [ ] Có trích dẫn `file:line` cho mọi khẳng định về code.
|
|
23
|
+
- [ ] Không tạo branch / không commit / không sửa file.
|
|
24
|
+
|
|
25
|
+
### Fast path (Chore / Docs / Config / Bugfix nhỏ / Hotfix)
|
|
26
|
+
- [ ] Đúng tiền tố branch ([BRANCHING.md](./BRANCHING.md)).
|
|
27
|
+
- [ ] `<TEST_CMD>` xanh · `<LINT_CMD>` xanh · `<BUILD_CMD>` xanh.
|
|
28
|
+
- [ ] **Bugfix/Hotfix:** có test tái hiện bug, đã chuyển từ ĐỎ → XANH; regression suite không hỏng.
|
|
29
|
+
- [ ] **Chore/Docs:** không thay đổi hành vi runtime.
|
|
30
|
+
- [ ] Commit theo Conventional Commits; MR mô tả ngắn gọn *what + why*.
|
|
31
|
+
- [ ] Đã chạy `gitnexus_detect_changes` (khi đã có code) — phạm vi đúng dự kiến.
|
|
32
|
+
- [ ] **Security (nhẹ):** không commit secret mới (xem [SECURITY_STANDARDS.md](./SECURITY_STANDARDS.md) §5). **Performance (nhẹ):** không gây hồi quy rõ rệt / không thêm N+1 ([PERFORMANCE_STANDARDS.md](./PERFORMANCE_STANDARDS.md) §4).
|
|
33
|
+
|
|
34
|
+
### Standard path (Sửa logic / Refactor)
|
|
35
|
+
Bao gồm toàn bộ Fast path, cộng thêm:
|
|
36
|
+
- [ ] Đã qua **Gate** (Plan Mode) và User đã duyệt cách tiếp cận.
|
|
37
|
+
- [ ] `gitnexus_impact` (upstream) đã chạy & **blast radius + mức rủi ro được báo cáo**; rủi ro HIGH/CRITICAL đã được User chấp thuận.
|
|
38
|
+
- [ ] `<TYPECHECK_CMD>` xanh (nếu áp dụng).
|
|
39
|
+
- [ ] **Refactor:** cùng bộ test pass trước & sau (hành vi không đổi); rename dùng `gitnexus_rename`, không find-replace tay.
|
|
40
|
+
- [ ] **Sửa logic:** regression test cũ còn xanh + có test mới cho hành vi mới.
|
|
41
|
+
- [ ] QA sub-agent đã review (`code-review`); `security-review` nếu chạm bề mặt nhạy cảm.
|
|
42
|
+
- [ ] **Security (Standard):** input validation cho code chạm + kiểm quyền nếu chạm authz ([SECURITY_STANDARDS.md](./SECURITY_STANDARDS.md) §5). **Performance (Standard):** bench trước/sau cho hot-path; (AI) prompt caching còn nguyên ([PERFORMANCE_STANDARDS.md](./PERFORMANCE_STANDARDS.md) §4).
|
|
43
|
+
|
|
44
|
+
### Full path (Feature mới)
|
|
45
|
+
Bao gồm toàn bộ Standard path, cộng thêm:
|
|
46
|
+
- [ ] **PRD** đã được duyệt (Gate 1) và có link trong ACTIVE_STATE.
|
|
47
|
+
- [ ] **TDD** đã được duyệt (Gate 2): có threat model nhẹ + API/interface contract.
|
|
48
|
+
- [ ] Coverage ≥ `<COVERAGE_MIN>` cho code mới.
|
|
49
|
+
- [ ] Đáp ứng toàn bộ acceptance criteria trong PRD.
|
|
50
|
+
- [ ] `security-review` đã chạy, không có finding mới chưa xử lý.
|
|
51
|
+
- [ ] **Security standards (Full):** đạt [SECURITY_STANDARDS.md](./SECURITY_STANDARDS.md) §5; feature AI đã kiểm OWASP LLM Top 10 (§2) gồm ca lạm dụng.
|
|
52
|
+
- [ ] **Performance standards (Full):** đạt budget [PERFORMANCE_STANDARDS.md](./PERFORMANCE_STANDARDS.md) §1; feature AI đạt token/latency ceiling §2; có số đo tải cho luồng chính.
|
|
53
|
+
- [ ] **Handover:** CLAUDE.md cập nhật quyết định kiến trúc mới (nếu có); retro 3 dòng đã ghi; Serena memory cập nhật (con trỏ); task `completed` + ACTIVE_STATE cập nhật.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Quy tắc bất biến (mọi path)
|
|
58
|
+
1. **Không claim "đã xong/đã pass" mà chưa chạy lệnh kiểm chứng** — bằng chứng trước, khẳng định sau (`verification-before-completion`).
|
|
59
|
+
2. **Test phải thực sự kiểm thử hành vi**, không phải test rỗng/mock toàn bộ để qua cho có.
|
|
60
|
+
3. **ACTIVE_STATE.md được cập nhật** khi trạng thái công việc đổi.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Interaction Patterns — Assistant ↔ End-User (Product Layer)
|
|
2
|
+
|
|
3
|
+
> Thư viện **pattern giao tiếp của SẢN PHẨM với người dùng cuối**. Khác với [COMMUNICATION_PROTOCOL.md](./COMMUNICATION_PROTOCOL.md) (người↔AI trong lúc *phát triển*) — đây là cách *assistant đã build* nói chuyện với *end-user*.
|
|
4
|
+
>
|
|
5
|
+
> Là **tài sản dùng lại**: mỗi PRD feature AI (mục §3, §5, §8 của [template](./templates/PRD_AI_FEATURE.md)) tham chiếu các pattern ở đây thay vì thiết kế lại từ đầu. Ngưỡng/ chi tiết cụ thể (`<TBD>`) chốt ở từng PRD.
|
|
6
|
+
|
|
7
|
+
## Nguyên tắc nền
|
|
8
|
+
1. **Người dùng luôn nắm quyền kiểm soát** — assistant hỗ trợ, không tự ý thay người quyết định việc khó đảo ngược.
|
|
9
|
+
2. **Minh bạch giới hạn** — nói rõ khi không chắc, không biết, hoặc không làm được; không bịa.
|
|
10
|
+
3. **Chi phí lỗi định hình hành vi** — việc rủi ro thấp → cứ làm; rủi ro cao/khó đảo ngược → xác nhận trước.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## P1 — Clarification (làm rõ ý định)
|
|
15
|
+
- **Khi nào hỏi lại:** intent mơ hồ, thiếu tham số bắt buộc, hoặc nhiều cách hiểu dẫn tới kết quả rất khác.
|
|
16
|
+
- **Khi nào KHÔNG hỏi:** có default an toàn/rõ ràng → cứ làm và **nêu giả định đã dùng** ("Mình hiểu là X, nếu không đúng cho mình biết nhé").
|
|
17
|
+
- **Cách hỏi:** một câu hỏi trọng tâm, kèm 2–4 lựa chọn nếu được; không tra tấn bằng chuỗi câu hỏi.
|
|
18
|
+
- **Ngưỡng:** tối đa `<TBD>` câu trước khi đưa ra nỗ lực tốt nhất.
|
|
19
|
+
|
|
20
|
+
## P2 — Confirmation (xác nhận trước hành động)
|
|
21
|
+
- **Bắt buộc xác nhận** trước hành động: khó đảo ngược, ảnh hưởng dữ liệu/tiền/người khác, hoặc ra ngoài (gửi mail, public…).
|
|
22
|
+
- **Không cần** với hành động đọc/không phá hủy.
|
|
23
|
+
- Nêu rõ **việc sắp làm + hệ quả** rồi mới hỏi đồng ý.
|
|
24
|
+
|
|
25
|
+
## P3 — Uncertainty / Low-confidence (thể hiện độ chắc)
|
|
26
|
+
- Khi không chắc → **nói rõ mức độ chắc** + đề nghị kiểm chứng, thay vì khẳng định chắc nịch.
|
|
27
|
+
- Trích nguồn/grounding khi có. Phân biệt "mình biết" vs "mình suy đoán".
|
|
28
|
+
|
|
29
|
+
## P4 — Error & Graceful Degradation (lỗi & suy giảm mượt)
|
|
30
|
+
- Lỗi → giải thích **bằng ngôn ngữ người dùng** (không nuốt lỗi, không đổ stack trace).
|
|
31
|
+
- Ưu tiên **kết quả một phần + nêu phần thiếu** hơn là fail trắng.
|
|
32
|
+
- Gợi ý bước tiếp theo / cách thử lại.
|
|
33
|
+
|
|
34
|
+
## P5 — Refusal (từ chối an toàn)
|
|
35
|
+
- Cấu trúc: **từ chối ngắn gọn + lý do + (nếu có) hướng thay thế hợp lệ**.
|
|
36
|
+
- Giữ giọng tôn trọng, không phán xét; không tiết lộ chi tiết nội bộ về cách lọc.
|
|
37
|
+
- Phân biệt "không được phép" vs "không làm được" vs "cần thêm thông tin".
|
|
38
|
+
|
|
39
|
+
## P6 — Handoff to Human (chuyển người thật)
|
|
40
|
+
- Khi nào escalate: vượt phạm vi, rủi ro cao, người dùng yêu cầu, hoặc lặp lại thất bại.
|
|
41
|
+
- Chuyển kèm **tóm tắt ngữ cảnh** để người tiếp nhận không phải hỏi lại từ đầu.
|
|
42
|
+
|
|
43
|
+
## P7 — Conversation Repair (sửa khi hiểu sai)
|
|
44
|
+
- Người dùng nói "không phải vậy" → assistant **nhận lỗi gọn, nhắc lại cách hiểu mới, xác nhận** rồi mới tiếp.
|
|
45
|
+
- Không lặp lại cùng câu trả lời sai; không phòng thủ.
|
|
46
|
+
|
|
47
|
+
## P8 — Memory & Privacy (ghi nhớ & riêng tư)
|
|
48
|
+
- Nói rõ assistant **nhớ gì / không nhớ gì**; cho người dùng cách xem/xoá.
|
|
49
|
+
- Không phơi dữ liệu nhạy cảm trong phản hồi/log; tuân chính sách PII ở PRD §5.
|
|
50
|
+
|
|
51
|
+
## P9 — Tone & Consistency (giọng điệu nhất quán)
|
|
52
|
+
- Một persona thống nhất xuyên các feature (chốt ở [TEAM_ROSTER.md](./TEAM_ROSTER.md) §3 / PRD §4).
|
|
53
|
+
- Ngắn gọn mặc định; chi tiết khi người dùng cần.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Cách dùng
|
|
58
|
+
Trong PRD feature AI: ở §3 (mơ hồ) trỏ **P1**; §5 (safety) trỏ **P5/P8**; §8 (fallback) trỏ **P4/P6/P7**; §4 (tone) trỏ **P9**. Mỗi pattern điền ngưỡng/chi tiết cụ thể cho feature đó.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Performance Standards
|
|
2
|
+
|
|
3
|
+
> Budget hiệu năng **đo được** cho {{PROJECT_NAME}}. Là một phần của [DEFINITION_OF_DONE.md](./DEFINITION_OF_DONE.md) và được xét ở **Phase 2 (đặt budget)** + **Phase 4 (kiểm)** trong [AGENCY_WORKFLOW.md](./AGENCY_WORKFLOW.md).
|
|
4
|
+
>
|
|
5
|
+
> Điền `<TBD>` theo yêu cầu sản phẩm khi chốt ở PRD/TDD đầu tiên.
|
|
6
|
+
|
|
7
|
+
## 1. Budget chung (parameter hoá)
|
|
8
|
+
- **Latency**: API p95 ≤ `<TBD>` ms, p99 ≤ `<TBD>` ms.
|
|
9
|
+
- **Throughput**: ≥ `<TBD>` req/s ở tải mục tiêu.
|
|
10
|
+
- **Kích thước**: payload/response ≤ `<TBD>`; bundle frontend (nếu có) ≤ `<TBD>` KB.
|
|
11
|
+
- **Database**: không N+1; số query mỗi request ≤ `<TBD>`; có index cho truy vấn nóng.
|
|
12
|
+
- **Memory/CPU**: không leak; mức nền ≤ `<TBD>`.
|
|
13
|
+
|
|
14
|
+
## 2. AI-specific (bắt buộc cho feature AI)
|
|
15
|
+
> Tham chiếu chéo `templates/PRD_AI_FEATURE.md §9`.
|
|
16
|
+
- **Prompt caching — BẮT BUỘC**: tận dụng caching của Claude cho phần prompt tĩnh (system, tài liệu nền) để giảm chi phí & độ trễ. Đây là đòn bẩy lớn nhất.
|
|
17
|
+
- **Chọn model theo task**: dùng model nhẹ nhất đủ dùng (Haiku → Sonnet → Opus); không mặc định model mạnh nhất cho mọi việc.
|
|
18
|
+
- **Token/cost ceiling**: trần token & chi phí mỗi request `<TBD>`; cảnh báo khi vượt.
|
|
19
|
+
- **Streaming**: stream phản hồi dài để giảm thời gian chờ cảm nhận.
|
|
20
|
+
- **Context discipline**: chỉ nạp context cần thiết; tránh nhồi toàn bộ tài liệu vào mỗi lượt.
|
|
21
|
+
- **Batching**: gộp khi xử lý khối lượng lớn không cần realtime.
|
|
22
|
+
|
|
23
|
+
## 3. Gate hồi quy hiệu năng
|
|
24
|
+
- **`change/` + `refactor/` chạm hot-path**: đo **bench trước & sau**, không để xấu đi quá `<TBD>`%.
|
|
25
|
+
- **Feature** (Full path): có ít nhất 1 phép đo/đánh giá tải cho luồng quan trọng trước khi merge.
|
|
26
|
+
- **Observability**: theo dõi p95/p99, token/cost, error rate sau khi lên prod (xem PRD §10).
|
|
27
|
+
|
|
28
|
+
## 4. Checklist theo path (đưa vào DoD)
|
|
29
|
+
- **Fast path**: không gây hồi quy hiệu năng rõ rệt; không thêm N+1.
|
|
30
|
+
- **Standard path**: + bench trước/sau cho code chạm hot-path; + (AI) prompt caching còn nguyên/được áp dụng.
|
|
31
|
+
- **Full path**: + đạt budget §1; + (feature AI) đạt token/latency ceiling §2; + có số đo tải cho luồng chính.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Security Standards
|
|
2
|
+
|
|
3
|
+
> Baseline bảo mật **đo được** cho {{PROJECT_NAME}}. Là tiêu chí mà `security-review` (Phase 4) chấm theo và là một phần của [DEFINITION_OF_DONE.md](./DEFINITION_OF_DONE.md). Shift-left: phần lớn được xét ngay ở **threat modeling Phase 2** ([AGENCY_WORKFLOW.md](./AGENCY_WORKFLOW.md)).
|
|
4
|
+
>
|
|
5
|
+
> Điền các `<TBD>` theo stack/quy định cụ thể khi chốt ở PRD/TDD đầu tiên.
|
|
6
|
+
|
|
7
|
+
## 1. Baseline chung (mọi project)
|
|
8
|
+
- **Secrets**: KHÔNG hardcode secret/khoá/API token trong code hay log. Dùng biến môi trường / secret manager. `.env` phải nằm trong `.gitignore`. Bật secret-scanning (xem §4).
|
|
9
|
+
- **Dependency & supply-chain**: khoá phiên bản (lockfile); chạy `<AUDIT_CMD>` (vd `npm audit` / `pip-audit`); bật cập nhật tự động (Dependabot/Renovate); chỉ thêm dependency có nguồn tin cậy.
|
|
10
|
+
- **Input validation & output encoding**: validate mọi input từ ngoài (user, API, file); encode output theo ngữ cảnh (chống XSS/SQLi/command injection). Dùng parameterized query, không nối chuỗi.
|
|
11
|
+
- **AuthN/AuthZ**: xác thực rõ ràng; **least privilege** cho mọi vai trò/khoá/tài nguyên; kiểm tra quyền ở phía server, không tin client.
|
|
12
|
+
- **Transport & data at rest**: TLS cho mọi traffic; mã hoá dữ liệu nhạy cảm khi lưu nếu cần.
|
|
13
|
+
- **Logging**: log đủ để điều tra nhưng **không lộ secret/PII**; không in stack trace/nội bộ ra cho người dùng cuối.
|
|
14
|
+
- **Error handling**: thông báo lỗi cho user không tiết lộ chi tiết hệ thống (path, version, query…).
|
|
15
|
+
|
|
16
|
+
## 2. AI-specific — OWASP LLM Top 10 (bắt buộc cho feature AI)
|
|
17
|
+
> Tham chiếu chéo `templates/PRD_AI_FEATURE.md §5`.
|
|
18
|
+
- **Prompt injection**: tách bạch **system prompt** với **nội dung không tin cậy** (input user, dữ liệu fetch, tool output). KHÔNG thực thi/đi theo lệnh nằm trong dữ liệu không tin cậy một cách mù quáng.
|
|
19
|
+
- **Sensitive information disclosure**: không để model rò rỉ secret/PII/dữ liệu khách khác; lọc đầu ra; tối thiểu hoá dữ liệu đưa vào context.
|
|
20
|
+
- **Excessive agency**: giới hạn **quyền của tool/agent** (chỉ cấp tool thực sự cần); hành động khó đảo ngược phải có xác nhận/human-in-the-loop (xem [INTERACTION_PATTERNS.md](./INTERACTION_PATTERNS.md) P2/P6).
|
|
21
|
+
- **Insecure output handling**: coi đầu ra của model như **dữ liệu không tin cậy** — validate/sanitize trước khi render HTML, chạy code, hay truyền xuống hệ thống khác.
|
|
22
|
+
- **Guardrails & refusal**: chính sách từ chối nội dung cấm (PRD §5); chống lạm dụng/jailbreak.
|
|
23
|
+
- **Supply chain của model/plugin**: chỉ dùng model/MCP/plugin từ nguồn tin cậy; ghi rõ phiên bản.
|
|
24
|
+
|
|
25
|
+
## 3. An toàn quy trình (đã enforce một phần qua hook)
|
|
26
|
+
- `main` được bảo vệ; vào qua MR ([BRANCHING.md](./BRANCHING.md)). Hook `git-guard` chặn force-push, `commit --no-verify`, `reset --hard`.
|
|
27
|
+
- Không bỏ qua hook/CI để "cho nhanh".
|
|
28
|
+
|
|
29
|
+
## 4. Tool tự động (tùy chọn — degrade nếu thiếu)
|
|
30
|
+
- **Secret scanning**: vd `gitleaks` (có thể chạy như pre-commit hook để **chặn**). `<TBD: bật/tắt>`
|
|
31
|
+
- **`<AUDIT_CMD>`** trong CI / lệnh `doctor`.
|
|
32
|
+
- **SAST** (tùy stack): `<TBD>`.
|
|
33
|
+
|
|
34
|
+
## 5. Checklist theo path (đưa vào DoD)
|
|
35
|
+
- **Fast path**: không secret mới bị commit; `<AUDIT_CMD>` không lỗi nghiêm trọng mới.
|
|
36
|
+
- **Standard path**: + input validation cho code chạm; + kiểm quyền nếu chạm authz.
|
|
37
|
+
- **Full path**: + threat model (Phase 2) đã xử lý; + `security-review` pass; + (feature AI) toàn bộ §2 đã kiểm, gồm ca lạm dụng.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Team Roster & Agent Personas
|
|
2
|
+
|
|
3
|
+
> Persona là **lăng kính tư duy**, không phải nghi thức bắt buộc cho mọi task. Quy trình & các path: xem [AGENCY_WORKFLOW.md](./AGENCY_WORKFLOW.md) (SSOT).
|
|
4
|
+
|
|
5
|
+
## 1. Main Agent (Lead)
|
|
6
|
+
Giữ session, nói chuyện với User, điều phối sub-agent. Luân phiên đội mũ:
|
|
7
|
+
- **BA** — `brainstorming`: làm rõ yêu cầu, viết PRD, lấy sign-off (Gate 1).
|
|
8
|
+
- **System Architect** — `gitnexus_exploring` + `gitnexus_impact`: thiết kế, viết TDD, chốt API contract + threat model, chia task (Gate 2).
|
|
9
|
+
- **Scrum Master** — quản lý [ACTIVE_STATE.md](./ACTIVE_STATE.md), cập nhật CLAUDE.md & Serena memory.
|
|
10
|
+
|
|
11
|
+
## 2. Sub-agents (Dev / QA)
|
|
12
|
+
Spawn qua `Agent` tool khi việc đủ lớn (Standard/Full path).
|
|
13
|
+
|
|
14
|
+
> ⚠️ **Sub-agent KHÔNG tự kế thừa hội thoại, skill, hay context của Main Agent.** Vì vậy **mọi prompt spawn phải SELF-CONTAINED**, gồm:
|
|
15
|
+
> 1. Link file **PRD/TDD** cụ thể cần đọc.
|
|
16
|
+
> 2. Persona + **tên skill cần invoke** (nêu rõ, vd "dùng skill `test-driven-development`").
|
|
17
|
+
> 3. **Tiêu chí Done** (trỏ path tương ứng trong [DEFINITION_OF_DONE.md](./DEFINITION_OF_DONE.md)).
|
|
18
|
+
> 4. Danh sách file/khu vực liên quan + ràng buộc (API contract).
|
|
19
|
+
|
|
20
|
+
| Vai | Skills/Tools | Nhiệm vụ |
|
|
21
|
+
|-----|--------------|----------|
|
|
22
|
+
| **Frontend Dev** | design direction đã chốt (xem §3), test-driven-development | Implement UI theo TDD, bám design system |
|
|
23
|
+
| **Backend Dev** | test-driven-development | Logic / API / DB schema, an toàn & hiệu quả |
|
|
24
|
+
| **Code Reviewer** (`code-reviewer`) | code-review, simplify | Review diff: correctness, security, cleanliness |
|
|
25
|
+
| **QA / Security** | security-review, systematic-debugging, verification-before-completion, verify | Phá code, tìm bug, đảm bảo execution flow nguyên vẹn |
|
|
26
|
+
|
|
27
|
+
## 3. Design direction — CHỌN MỘT
|
|
28
|
+
Repo có nhiều design skill (`design-taste-frontend`, `minimalist-ui`, `industrial-brutalist-ui`, `high-end-visual-design`, `gpt-taste`, `brandkit`…). **Chỉ chốt MỘT direction cho {{PROJECT_NAME}}** (quyết ở PRD/TDD đầu tiên), định nghĩa tokens/type scale/spacing một lần, rồi Frontend bám theo đó.
|
|
29
|
+
- Design direction đã chốt: **`<TBD — điền khi có feature UI đầu tiên>`**
|
|
30
|
+
- KHÔNG gọi nhiều design skill cùng lúc trong một feature → tránh UI mỗi nơi một kiểu.
|
|
31
|
+
|
|
32
|
+
## 4. Delegation rules
|
|
33
|
+
1. **Không tự code phần lớn ở main thread** nếu việc lớn → delegate sub-agent.
|
|
34
|
+
2. **Parallelize có điều kiện**: chỉ spawn FE & BE song song **sau khi API contract đã chốt ở Phase 2**.
|
|
35
|
+
3. **Worktree**: dùng `isolation: "worktree"` khi nhiều agent có thể sửa file chồng nhau.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# PRD — <Tên feature AI>
|
|
2
|
+
|
|
3
|
+
> Template PRD **dành riêng cho tính năng AI/assistant**. Mục đích: ép làm rõ những chiều mà phần mềm tất định thường bỏ sót. Điền hết; mục chưa biết → ghi `GIẢ ĐỊNH:` hoặc `<TBD>` (không để trống ngầm). Tuân [COMMUNICATION_PROTOCOL.md](../COMMUNICATION_PROTOCOL.md).
|
|
4
|
+
>
|
|
5
|
+
> Copy file này vào `docs/specs/YYYY-MM-DD-<feature>.md` khi bắt đầu Phase 1.
|
|
6
|
+
|
|
7
|
+
**Trạng thái:** Draft | In Review | Approved
|
|
8
|
+
**Ngày:** YYYY-MM-DD · **Product Owner:** · **Path (router):** Full / Standard
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Bối cảnh & mục tiêu
|
|
13
|
+
- **Vấn đề người dùng:** <feature giải quyết đau gì?>
|
|
14
|
+
- **Mục tiêu đo được:** <vd: giảm X% thời gian, đạt Y% câu trả lời đúng>
|
|
15
|
+
- **Persona / đối tượng dùng:**
|
|
16
|
+
|
|
17
|
+
## 2. Intent & Scope của assistant ⭐
|
|
18
|
+
- **LÀM gì (in-scope):** <những việc assistant phải làm được>
|
|
19
|
+
- **KHÔNG làm gì (out-of-scope, tường minh):** <ranh giới — quan trọng để chống scope creep & hành vi ngoài ý muốn>
|
|
20
|
+
- **Use cases chính (ưu tiên):**
|
|
21
|
+
|
|
22
|
+
## 3. Hành vi khi MƠ HỒ / thiếu thông tin ⭐
|
|
23
|
+
> Đây là quyết định cốt lõi của một assistant. Tham chiếu [INTERACTION_PATTERNS.md](../INTERACTION_PATTERNS.md).
|
|
24
|
+
- Khi intent người dùng không rõ → assistant **hỏi lại / đoán-rồi-nêu / từ chối**? <chọn & nêu lý do>
|
|
25
|
+
- **Ngưỡng confidence** để hành động vs hỏi lại: `<TBD>`
|
|
26
|
+
- Số câu hỏi tối đa trước khi phải hành động: `<TBD>`
|
|
27
|
+
|
|
28
|
+
## 4. Tone & Persona
|
|
29
|
+
- Giọng điệu (formal/thân thiện/ngắn gọn…):
|
|
30
|
+
- Điều assistant **không bao giờ** nói/làm về mặt phong cách:
|
|
31
|
+
- Ngôn ngữ hỗ trợ:
|
|
32
|
+
|
|
33
|
+
## 5. Guardrails & Safety ⭐
|
|
34
|
+
> Tuân [SECURITY_STANDARDS.md](../SECURITY_STANDARDS.md) — đặc biệt §2 (OWASP LLM Top 10).
|
|
35
|
+
- **Refusal policy:** loại yêu cầu nào phải từ chối + cách từ chối (xem pattern Refusal trong INTERACTION_PATTERNS).
|
|
36
|
+
- **Dữ liệu nhạy cảm / PII:** thu thập gì, lưu gì, ẩn/mask thế nào, tuân quy định nào.
|
|
37
|
+
- **Prompt injection / lạm dụng:** biện pháp phòng (tách system/user content, kiểm tra đầu ra…).
|
|
38
|
+
- **Nội dung cấm / giới hạn:**
|
|
39
|
+
|
|
40
|
+
## 6. Định nghĩa "ĐÚNG" (vì output phi xác định) ⭐
|
|
41
|
+
> Không thể dùng một `assertEquals` cho output AI. Phải định nghĩa *thế nào là tốt*.
|
|
42
|
+
- **Rubric đánh giá** (tiêu chí + thang điểm): vd đúng-sự-thật / bám-yêu-cầu / an-toàn / giọng-điệu.
|
|
43
|
+
- **Golden examples** (input → hành vi/đầu ra mong đợi): ≥ 5–10 ví dụ đại diện, gồm cả ca khó/biên.
|
|
44
|
+
| Input | Hành vi/đầu ra mong đợi | Vì sao |
|
|
45
|
+
|-------|-------------------------|--------|
|
|
46
|
+
| | | |
|
|
47
|
+
|
|
48
|
+
## 7. Eval strategy ⭐
|
|
49
|
+
- **Bộ eval tự động** chạy trên golden set (chấm theo rubric §6) — coi như "test" của feature AI.
|
|
50
|
+
- **Regression prompt:** khi đổi prompt/model → chạy lại eval, so điểm trước/sau.
|
|
51
|
+
- Ngưỡng đậu: `<TBD>` (vd điểm rubric trung bình ≥ X, không ca an-toàn nào fail).
|
|
52
|
+
- Quan hệ với DoD: bổ sung vào [DEFINITION_OF_DONE.md](../DEFINITION_OF_DONE.md) cho feature AI.
|
|
53
|
+
|
|
54
|
+
## 8. Fallback & Human-in-the-loop ⭐
|
|
55
|
+
- Khi model **fail / timeout / low-confidence** → assistant làm gì? (xin lỗi + gợi ý / trả kết quả một phần / chuyển người thật).
|
|
56
|
+
- **Điểm cần con người** (HITL): hành động nào cần người duyệt trước khi thực thi?
|
|
57
|
+
- Hành vi khi tool/API phụ thuộc lỗi.
|
|
58
|
+
|
|
59
|
+
## 9. Model, chi phí & hiệu năng
|
|
60
|
+
> Tuân [PERFORMANCE_STANDARDS.md](../PERFORMANCE_STANDARDS.md) §2 (AI-specific).
|
|
61
|
+
- Model dùng (vd Claude Opus/Sonnet/Haiku) + lý do; **prompt caching BẮT BUỘC** cho phần prompt tĩnh.
|
|
62
|
+
- Token budget / chi phí mục tiêu mỗi request (ceiling).
|
|
63
|
+
- Latency mục tiêu (p95).
|
|
64
|
+
|
|
65
|
+
## 10. Observability
|
|
66
|
+
- Log gì (có ẩn PII), cách đánh giá chất lượng *sau khi* lên prod (thu feedback, sample review).
|
|
67
|
+
- Metric theo dõi (tỉ lệ refusal, confidence, độ hài lòng…).
|
|
68
|
+
|
|
69
|
+
## 11. Acceptance Criteria
|
|
70
|
+
- [ ] <tiêu chí 1 — đo được>
|
|
71
|
+
- [ ] Eval đạt ngưỡng §7
|
|
72
|
+
- [ ] Guardrails §5 đã kiểm thử (gồm ca lạm dụng)
|
|
73
|
+
|
|
74
|
+
## 12. API / Interface contract (cho parallelize)
|
|
75
|
+
> Bắt buộc chốt trước khi spawn FE & BE song song (xem AGENCY_WORKFLOW Phase 2/3).
|
|
76
|
+
|
|
77
|
+
## 13. Decision Log
|
|
78
|
+
| Ngày | Câu hỏi/Vấn đề | Quyết định | Người quyết | Lý do |
|
|
79
|
+
|------|----------------|-----------|-------------|-------|
|
|
80
|
+
| | | | | |
|
|
81
|
+
|
|
82
|
+
## 14. Assumptions Register
|
|
83
|
+
| Giả định | Trạng thái (chờ/đã xác nhận/bác bỏ) |
|
|
84
|
+
|----------|-------------------------------------|
|
|
85
|
+
| | |
|