@edupia-tutor/spec-driven-docs 0.14.6 → 0.14.7
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/index.js +1 -1
- package/commands/debug.md +1 -1
- package/commands/define-product.md +1 -1
- package/commands/dev-gen-test.md +1 -1
- package/commands/dev-run-test.md +1 -1
- package/commands/dev-smoke-test.md +1 -1
- package/commands/fix-bug.md +1 -1
- package/commands/generate-bdd.md +15 -1
- package/commands/generate-bdd.tmpl +14 -0
- package/commands/generate-code.md +1 -1
- package/commands/generate-design-spec.md +15 -1
- package/commands/generate-design-spec.tmpl +14 -0
- package/commands/generate-prd.md +2 -1
- package/commands/generate-prd.tmpl +1 -0
- package/commands/generate-spec-manifest.md +1 -1
- package/commands/generate-tech-docs.md +1 -1
- package/commands/learn.md +1 -1
- package/commands/map-testids.md +1 -1
- package/commands/propose-scenario.md +1 -1
- package/commands/qc-analyze.md +1 -1
- package/commands/qc-design-test.md +1 -1
- package/commands/qc-plan.md +1 -1
- package/commands/qc-report.md +1 -1
- package/commands/qc-review.md +1 -1
- package/commands/qc-run-test.md +1 -1
- package/commands/refine-prd.md +18 -9
- package/commands/refine-prd.tmpl +17 -8
- package/commands/report-bug.md +1 -1
- package/commands/review-code.md +1 -1
- package/commands/review-context.md +39 -21
- package/commands/review-context.tmpl +38 -20
- package/commands/review-tech-docs.md +1 -1
- package/commands/setup-ai-first.md +10 -10
- package/commands/setup-ai-first.tmpl +9 -9
- package/commands/sync.md +1 -1
- package/commands/update-framework.md +1 -1
- package/commands/validate-traces.md +1 -1
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +1 -1
- package/core/commands/define-product.md +1 -1
- package/core/commands/dev-gen-test.md +1 -1
- package/core/commands/dev-run-test.md +1 -1
- package/core/commands/dev-smoke-test.md +1 -1
- package/core/commands/fix-bug.md +1 -1
- package/core/commands/generate-bdd.md +15 -1
- package/core/commands/generate-code.md +1 -1
- package/core/commands/generate-design-spec.md +15 -1
- package/core/commands/generate-prd.md +2 -1
- package/core/commands/generate-spec-manifest.md +1 -1
- package/core/commands/generate-tech-docs.md +1 -1
- package/core/commands/learn.md +1 -1
- package/core/commands/map-testids.md +1 -1
- package/core/commands/propose-scenario.md +1 -1
- package/core/commands/qc-analyze.md +1 -1
- package/core/commands/qc-design-test.md +1 -1
- package/core/commands/qc-plan.md +1 -1
- package/core/commands/qc-report.md +1 -1
- package/core/commands/qc-review.md +1 -1
- package/core/commands/qc-run-test.md +1 -1
- package/core/commands/refine-prd.md +18 -9
- package/core/commands/report-bug.md +1 -1
- package/core/commands/review-code.md +1 -1
- package/core/commands/review-context.md +39 -21
- package/core/commands/review-tech-docs.md +1 -1
- package/core/commands/setup-ai-first.md +10 -10
- package/core/commands/sync.md +1 -1
- package/core/commands/update-framework.md +1 -1
- package/core/commands/validate-traces.md +1 -1
- package/core/skills/code/SKILL.md +2 -2
- package/core/skills/debug/SKILL.md +3 -3
- package/core/skills/design-spec/SKILL.md +1 -1
- package/core/skills/prd/SKILL.md +1 -1
- package/core/skills/setup-ai-first/SKILL.md +1 -1
- package/core/skills/spec/SKILL.md +2 -2
- package/core/skills/test/SKILL.md +3 -3
- package/core/steps/report-footer.md +1 -1
- package/core/templates/project-context.yaml +2 -2
- package/docs/01-getting-started/core-concepts.md +1 -1
- package/docs/02-guides/developer/bdd-and-trace.md +3 -3
- package/docs/02-guides/developer/scenarios.md +2 -2
- package/docs/02-guides/developer/workflow.md +1 -1
- package/docs/02-guides/product-owner/README.md +2 -2
- package/docs/02-guides/product-owner/handoff-checklist.md +5 -5
- package/docs/02-guides/product-owner/scenarios.md +19 -17
- package/docs/03-concepts/traceability.md +3 -3
- package/docs/04-operations/sync-and-update.md +3 -3
- package/docs/05-reference/command-cheatsheet.md +1 -1
- package/package.json +1 -1
- package/skills/code/SKILL.md +2 -2
- package/skills/debug/SKILL.md +3 -3
- package/skills/design-spec/SKILL.md +1 -1
- package/skills/prd/SKILL.md +1 -1
- package/skills/setup-ai-first/SKILL.md +1 -1
- package/skills/spec/SKILL.md +2 -2
- package/skills/test/SKILL.md +3 -3
- package/steps/report-footer.md +1 -1
- package/templates/project-context.yaml +2 -2
|
@@ -140,15 +140,15 @@ Rồi:
|
|
|
140
140
|
- Artifact theo từng feature (`specs/{domain}/{prd-slug}/{ {TICKET-ID}-{prd-slug}.md, bdd/, tech-docs/, design-spec/}`) được tạo on demand bởi các lệnh generate — ĐỪNG tạo trước
|
|
141
141
|
- Skip: `.trace/` (theo service, sống cạnh code trong mỗi service submodule)
|
|
142
142
|
- Sinh `CLAUDE.md` tối thiểu chỉ với §1 (project overview) và §7 (git conventions)
|
|
143
|
-
- Hỏi người dùng: **"Liệt kê các business domain của bạn (vd auth, payment, loyalty):"** — lưu thành domain list cho `project-context.yaml` và nhắc PO các tên này phải được dùng nhất quán
|
|
143
|
+
- Hỏi người dùng: **"Liệt kê các business domain của bạn (vd auth, payment, loyalty):"** — lưu thành domain list cho `project-context.yaml` và nhắc PO các tên này phải được dùng nhất quán ở row `| **Domain** |` của bảng Metadata trong mọi PRD
|
|
144
144
|
- Thông báo:
|
|
145
145
|
- Lệnh cho PO repo: `/define-product`, `/generate-prd`, `/review-context`, `/generate-design-spec`
|
|
146
|
-
- **Quan trọng cho handoff team dev:** Mọi PRD phải có
|
|
147
|
-
-
|
|
146
|
+
- **Quan trọng cho handoff team dev:** Mọi PRD phải có row `| **Domain** | {domain} |` trong **bảng Metadata**. Team dev dùng nó để route BDD/code sinh ra tới đúng service submodule. Tên domain không nhất quán sẽ phá routing.
|
|
147
|
+
- Bảng Metadata PRD (do `/generate-prd` điền sẵn theo template):
|
|
148
148
|
```
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
| **Domain** | {domain} | ← phải khớp một key trong services config của team dev
|
|
150
|
+
| **Ticket** | {TICKET-ID} |
|
|
151
|
+
| **Status** | draft | approved |
|
|
152
152
|
```
|
|
153
153
|
|
|
154
154
|
## Step 1 — Tạo cấu trúc thư mục
|
|
@@ -446,7 +446,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
446
446
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
447
447
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
448
448
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
449
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
449
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
450
450
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
451
451
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
452
452
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -510,7 +510,7 @@ Next:
|
|
|
510
510
|
Next:
|
|
511
511
|
1. Review .agent/project-context.yaml:
|
|
512
512
|
- Cập nhật services[].path khớp tên thư mục submodule thực tế
|
|
513
|
-
- Cập nhật domain key của services khớp
|
|
513
|
+
- Cập nhật domain key của services khớp row `Domain` (bảng Metadata) trong các file PRD
|
|
514
514
|
- Xác nhận path spec_source đúng
|
|
515
515
|
|
|
516
516
|
2. Chạy /sync — một lệnh lo mọi thứ còn lại:
|
|
@@ -529,7 +529,7 @@ Next:
|
|
|
529
529
|
```
|
|
530
530
|
Next:
|
|
531
531
|
1. Điền .agent/project-context.yaml:
|
|
532
|
-
- domains: [liệt kê mọi business domain — chúng thành
|
|
532
|
+
- domains: [liệt kê mọi business domain — chúng thành row `Domain` (bảng Metadata) trong PRD]
|
|
533
533
|
- project.name, project.description
|
|
534
534
|
2. Điền specs/domain-knowledge/business-dictionary.md ← canonical terms
|
|
535
535
|
3. Điền specs/domain-knowledge/core-entities.md ← entity glossary
|
|
@@ -539,7 +539,7 @@ Next:
|
|
|
539
539
|
6. /define-product để bắt đầu feature đầu tiên
|
|
540
540
|
|
|
541
541
|
⚠️ Nhắc handoff team dev:
|
|
542
|
-
- Mỗi PRD phải có
|
|
542
|
+
- Mỗi PRD phải có row `Domain` (bảng Metadata) khớp một trong domains list của bạn
|
|
543
543
|
- Khi team dev setup umbrella repo của họ, họ map các tên domain này
|
|
544
544
|
tới path service submodule trong section services của project-context.yaml
|
|
545
545
|
- Chia sẻ tên domain với team dev trước khi họ cấu hình umbrella
|
package/core/commands/sync.md
CHANGED
|
@@ -364,7 +364,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
364
364
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
365
365
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
366
366
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
367
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
367
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
368
368
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
369
369
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
370
370
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -187,7 +187,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
187
187
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
188
188
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
189
189
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
190
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
190
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
191
191
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
192
192
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
193
193
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -757,7 +757,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
757
757
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
758
758
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
759
759
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
760
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
760
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
761
761
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
762
762
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
763
763
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -572,7 +572,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
572
572
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
573
573
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
574
574
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
575
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
575
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
576
576
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
577
577
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
578
578
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -730,7 +730,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
730
730
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
731
731
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
732
732
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
733
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
733
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
734
734
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
735
735
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
736
736
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -503,7 +503,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
503
503
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
504
504
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
505
505
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
506
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
506
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
507
507
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
508
508
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
509
509
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -687,7 +687,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
687
687
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
688
688
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
689
689
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
690
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
690
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
691
691
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
692
692
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
693
693
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -828,7 +828,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
828
828
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
829
829
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
830
830
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
831
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
831
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
832
832
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
833
833
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
834
834
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -539,7 +539,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
539
539
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
540
540
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
541
541
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
542
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
542
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
543
543
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
544
544
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
545
545
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
package/core/skills/prd/SKILL.md
CHANGED
|
@@ -424,7 +424,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
424
424
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
425
425
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
426
426
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
427
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
427
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
428
428
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
429
429
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
430
430
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -175,7 +175,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
175
175
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
176
176
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
177
177
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
178
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
178
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
179
179
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
180
180
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
181
181
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -244,7 +244,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
244
244
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
245
245
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
246
246
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
247
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
247
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
248
248
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
249
249
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
250
250
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -421,7 +421,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
421
421
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
422
422
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
423
423
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
424
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
424
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
425
425
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
426
426
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
427
427
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -287,7 +287,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
287
287
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
288
288
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
289
289
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
290
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
290
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
291
291
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
292
292
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
293
293
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -763,7 +763,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
763
763
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
764
764
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
765
765
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
766
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
766
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
767
767
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
768
768
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
769
769
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -1257,7 +1257,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
1257
1257
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
1258
1258
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
1259
1259
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
1260
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
1260
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
1261
1261
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
1262
1262
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
1263
1263
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -60,7 +60,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
60
60
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
61
61
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
62
62
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
63
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
63
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
64
64
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
65
65
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
66
66
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
# 3. When a workflow says "→ key.subkey", look up that key
|
|
15
15
|
# and use the resolved value as the actual path
|
|
16
16
|
# 4. All paths are RELATIVE to workspace root
|
|
17
|
-
# 5. For "{domain}", substitute
|
|
17
|
+
# 5. For "{domain}", substitute the feature's domain (PRD: row `Domain` in Metadata / folder path; .feature: @trace.domain)
|
|
18
18
|
# =============================================================
|
|
19
19
|
|
|
20
20
|
project:
|
|
@@ -132,7 +132,7 @@ domains:
|
|
|
132
132
|
# With spec_source set, only ONE override is needed instead of four separate dir vars.
|
|
133
133
|
#
|
|
134
134
|
# services: # domain → service submodule routing
|
|
135
|
-
# {{DOMAIN_1}}: # must match
|
|
135
|
+
# {{DOMAIN_1}}: # must match the PRD's `Domain` (Metadata row) / folder path segment
|
|
136
136
|
# path: "{{SERVICE_SUBMODULE_DIR}}" # relative path to service submodule (code + .trace/)
|
|
137
137
|
# module: "{{STACK_MODULE}}" # e.g., java-spring, nextjs, flutter
|
|
138
138
|
# # NOTE: with spec_source set, BDD + tech-docs are cross-team and live in the spec repo —
|
|
@@ -93,7 +93,7 @@ my-project-umbrella/ ← mở Claude Code ở đây
|
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
- **Spec module** (`{spec_source}/`): chứa PRD, Design Spec, **ALL BDD (web/app/system)**, tech-docs (BE API contract + FE tech-design), domain-knowledge, feedback — shared để mọi umbrella đọc cùng nguồn. Report canonical của Living Docs cũng sinh tại `{spec_source}/.living-docs/`.
|
|
96
|
-
- **Routing:** context-loader đọc
|
|
96
|
+
- **Routing:** context-loader đọc row `Domain` (bảng Metadata) từ PRD → tra trong `services` config → route **code** vào đúng service submodule; **BDD + tech-docs + specs + `.trace/` + feedback** đều ở spec module (cross-team, một chỗ cho PM). PRD phải có row `Domain` khớp một key trong `services`.
|
|
97
97
|
|
|
98
98
|
Setup umbrella đầy đủ, file ownership, two-layer commit, multi-platform → [Operations › Sync & Update §4 Umbrella mode](../04-operations/sync-and-update.md#4-umbrella-mode--git-submodule).
|
|
99
99
|
|
|
@@ -57,11 +57,11 @@ Framework dùng metadata `@trace.*` để liên kết PRD → BDD → Code. (Chi
|
|
|
57
57
|
|
|
58
58
|
| Field | Vị trí | Ý nghĩa |
|
|
59
59
|
|---|---|---|
|
|
60
|
-
|
|
|
60
|
+
| `Domain` | bảng Metadata PRD | Domain của feature (auth, payment, ...) — dùng để route vào đúng service submodule |
|
|
61
61
|
| `@trace.module` | BDD / Tech Doc header | Module trong codebase sẽ implement |
|
|
62
62
|
| `@trace.prd` | BDD / Tech Doc header | Link về PRD gốc |
|
|
63
63
|
| `@trace.bdd` | Code comment / test | Link về BDD scenario |
|
|
64
|
-
|
|
|
64
|
+
| `Status` | bảng Metadata PRD | `draft` / `approved` — chỉ code khi `approved` |
|
|
65
65
|
| `dev_selftest` | Trace TSV | `pass` / `fail` / `not_run` — kết quả dev self-check, set bởi `/dev-run-test`. Surfaced trong Living Docs để QC biết dev đã chạy self-check — **KHÔNG phải coverage chính thức** |
|
|
66
66
|
| `dev_selftest_at` | Trace TSV | Timestamp lần chạy `/dev-run-test` gần nhất |
|
|
67
67
|
| `qc_status` | Trace TSV | `pass` / `fail` / `skip` / `not_run` — kết quả **QC chính thức**, set bởi `/qc-run-test` (do QC chạy, KHÔNG phải dev). Orthogonal với `dev_selftest` và với coverage `status` |
|
|
@@ -70,7 +70,7 @@ Framework dùng metadata `@trace.*` để liên kết PRD → BDD → Code. (Chi
|
|
|
70
70
|
### Ví dụ trace chain hoàn chỉnh
|
|
71
71
|
|
|
72
72
|
```
|
|
73
|
-
specs/auth/login/{TICKET-ID}-login.md ←
|
|
73
|
+
specs/auth/login/{TICKET-ID}-login.md ← Metadata: Domain: auth, Status: approved
|
|
74
74
|
↓
|
|
75
75
|
specs/auth/login/bdd/system/FT-001-UC1-login.feature ← @trace.prd: FT-001 · web/app/system riêng (system tổng hợp từ web+app)
|
|
76
76
|
↓
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
(lấy PRD + BDD mới nhất từ PO)
|
|
22
22
|
|
|
23
23
|
2. /review-context my-project-specs/specs/payment/checkout/{TICKET-ID}-checkout.md
|
|
24
|
-
→ Kiểm tra
|
|
24
|
+
→ Kiểm tra Status = approved (bảng Metadata PRD; không code khi còn draft)
|
|
25
25
|
→ Đọc kỹ AC, UC, BR
|
|
26
26
|
|
|
27
27
|
3. Đọc BDD tương ứng theo platform của mình:
|
|
@@ -343,7 +343,7 @@ code . ← hoặc claude .
|
|
|
343
343
|
# → sync Living Docs panel
|
|
344
344
|
|
|
345
345
|
# 4. Framework tự detect umbrella mode từ project-context.yaml
|
|
346
|
-
# Khi chạy /review-context với PRD có
|
|
346
|
+
# Khi chạy /review-context với PRD có Domain: be (bảng Metadata)
|
|
347
347
|
# → CODE route tới mass-product-be/ · BDD đọc từ spec repo mass-product-spec/specs/{domain}/{prd-slug}/bdd/ (spec_source set)
|
|
348
348
|
```
|
|
349
349
|
|
|
@@ -45,7 +45,7 @@ Nhận thông báo PRD + BDD mới từ PO
|
|
|
45
45
|
│
|
|
46
46
|
▼
|
|
47
47
|
/review-context {prd-file}
|
|
48
|
-
→ Kiểm tra
|
|
48
|
+
→ Kiểm tra Domain, Status = approved (bảng Metadata PRD)
|
|
49
49
|
→ Đọc hiểu AC, UC, BR trong PRD
|
|
50
50
|
→ Đọc BDD tương ứng trong specs/{domain}/{prd-slug}/bdd/{platform}/
|
|
51
51
|
→ Nếu có gì không rõ: hỏi PO TRƯỚC khi tiếp tục
|
|
@@ -32,8 +32,8 @@ PO/BA Dev team
|
|
|
32
32
|
|
|
33
33
|
**PO/BA chịu trách nhiệm:**
|
|
34
34
|
- Đảm bảo PRD platform-agnostic (không chứa UI details hay API specs)
|
|
35
|
-
- Đặt
|
|
36
|
-
- Cập nhật
|
|
35
|
+
- Đặt row `Domain` (bảng Metadata) đúng để dev team routing hoạt động
|
|
36
|
+
- Cập nhật `Status: approved` (bảng Metadata) trước khi handoff
|
|
37
37
|
- **Generate BDD cho tất cả platforms** theo thứ tự **outside-in: web → app → system** — System BDD được **tổng hợp từ web+app BDD** (project chỉ-BE thì system gen thẳng từ PRD). Xem [scenarios](scenarios.md).
|
|
38
38
|
- Thông báo dev team khi có PRD hoặc BDD mới/update
|
|
39
39
|
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
Trước khi thông báo dev team bắt đầu, kiểm tra:
|
|
6
6
|
|
|
7
7
|
**Metadata:**
|
|
8
|
-
- [ ]
|
|
9
|
-
- [ ]
|
|
10
|
-
- [ ]
|
|
11
|
-
- [ ]
|
|
8
|
+
- [ ] Row `Ticket` (bảng Metadata) có và đúng format (vd: FEAT-01)
|
|
9
|
+
- [ ] Row `Domain` có và khớp với domain names đã thống nhất với dev team
|
|
10
|
+
- [ ] Row `Status` = `approved` (không phải draft)
|
|
11
|
+
- [ ] Row `Version` có (vd: 1.0)
|
|
12
12
|
|
|
13
13
|
**Nội dung PRD:**
|
|
14
14
|
- [ ] Tất cả `{{PLACEHOLDER}}` đã được điền
|
|
@@ -23,7 +23,7 @@ Trước khi thông báo dev team bắt đầu, kiểm tra:
|
|
|
23
23
|
- [ ] Không có P3 conflict với PRD khác trong cùng domain
|
|
24
24
|
|
|
25
25
|
**Cho FE/App thêm:**
|
|
26
|
-
- [ ] Design Spec đã tạo và
|
|
26
|
+
- [ ] Design Spec đã tạo và `Status: approved` trong Metadata (không còn `draft`)
|
|
27
27
|
- [ ] Mỗi screen có Figma link node-level (`?node-id=`) — không screen nào bị flag ❌ Missing
|
|
28
28
|
- [ ] Designer đã sign-off (gate này bị BLOCKED nếu còn screen thiếu node-id link)
|
|
29
29
|
|
|
@@ -40,13 +40,13 @@ Mở findings file, xem xét từng finding: `accepted` → apply · `modified`
|
|
|
40
40
|
```
|
|
41
41
|
/review-context specs/auth/FEAT-01-login/FEAT-01-login.md
|
|
42
42
|
```
|
|
43
|
-
Kiểm tra:
|
|
43
|
+
Kiểm tra: `Status`, `Domain` (bảng Metadata), completeness.
|
|
44
44
|
|
|
45
45
|
**Bước 5 — Approve PRD:**
|
|
46
46
|
```yaml
|
|
47
|
-
# Trong
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
# Trong bảng Metadata của PRD, cập nhật:
|
|
48
|
+
# | **Status** | approved |
|
|
49
|
+
# | **Version** | 1.0 |
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
**Bước 6 — Tạo Design Spec (FE/App):**
|
|
@@ -55,7 +55,7 @@ Kiểm tra: `@trace.status`, `@trace.domain`, completeness.
|
|
|
55
55
|
```
|
|
56
56
|
Agent hỏi platform (web / app). PO phải cung cấp **Figma link node-level** (URL chứa `?node-id=`, lấy bằng right-click vào frame → "Copy link to selection") cho **mỗi screen**. Screen nào thiếu link → bị flag ❌ Missing, Status giữ `draft`, `/generate-bdd` bị BLOCKED cho đến khi đủ link.
|
|
57
57
|
|
|
58
|
-
Sau khi Designer review + confirm đủ Figma node-id links →
|
|
58
|
+
Sau khi Designer review + confirm đủ Figma node-id links → đặt `Status: approved` trong Metadata Design Spec.
|
|
59
59
|
|
|
60
60
|
**Bước 7 — Generate BDD:**
|
|
61
61
|
```
|
|
@@ -84,7 +84,7 @@ git push
|
|
|
84
84
|
|
|
85
85
|
```
|
|
86
86
|
/define-product → product definition
|
|
87
|
-
/generate-prd → PRD với
|
|
87
|
+
/generate-prd → PRD với Domain: auth (bảng Metadata)
|
|
88
88
|
/review-context --fix → auto-fix
|
|
89
89
|
/generate-design-spec → design spec cho FE (nếu có designer)
|
|
90
90
|
/generate-bdd → web → specs/auth/FEAT-01-login/bdd/web/
|
|
@@ -115,7 +115,7 @@ git push
|
|
|
115
115
|
```
|
|
116
116
|
Output: `specs/auth/FEAT-01-login/design-spec/FEAT-01-design-spec-web.md`
|
|
117
117
|
|
|
118
|
-
Mỗi screen cần Figma link node-id. Screen thiếu → flag ❌ Missing, BLOCKED. Sau khi Designer review →
|
|
118
|
+
Mỗi screen cần Figma link node-id. Screen thiếu → flag ❌ Missing, BLOCKED. Sau khi Designer review → đặt `Status: approved` trong Metadata Design Spec.
|
|
119
119
|
|
|
120
120
|
**Bước 2 — Generate BDD:**
|
|
121
121
|
```
|
|
@@ -162,7 +162,8 @@ Lặp lại cho đến khi `recommendation: APPROVED`.
|
|
|
162
162
|
|
|
163
163
|
**Bước 1 — Đổi status về draft:**
|
|
164
164
|
```yaml
|
|
165
|
-
|
|
165
|
+
# Trong bảng Metadata PRD:
|
|
166
|
+
# | **Status** | draft |
|
|
166
167
|
```
|
|
167
168
|
|
|
168
169
|
**Bước 2 — Sửa nội dung:**
|
|
@@ -178,9 +179,9 @@ Lặp lại cho đến khi `recommendation: APPROVED`.
|
|
|
178
179
|
|
|
179
180
|
**Bước 4 — Approve và thông báo:**
|
|
180
181
|
```yaml
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
182
|
+
# Trong bảng Metadata PRD:
|
|
183
|
+
# | **Status** | approved |
|
|
184
|
+
# | **Version** | 1.1 | # minor bump (chỉ thêm AC); major (2.0) nếu thay đổi cơ bản
|
|
184
185
|
```
|
|
185
186
|
```bash
|
|
186
187
|
git add specs/auth/FEAT-01-login/FEAT-01-login.md
|
|
@@ -225,7 +226,7 @@ services:
|
|
|
225
226
|
specs_dir: "loyalty-service/specs/bdd"
|
|
226
227
|
```
|
|
227
228
|
|
|
228
|
-
**Bước 3 — Viết PRD bình thường với
|
|
229
|
+
**Bước 3 — Viết PRD bình thường với `Domain: loyalty` (bảng Metadata).**
|
|
229
230
|
|
|
230
231
|
> **Lưu ý:** Nếu dev team chưa cập nhật services config → `/review-context` P0 check sẽ cảnh báo domain không match.
|
|
231
232
|
|
|
@@ -281,7 +282,7 @@ specs/
|
|
|
281
282
|
|
|
282
283
|
```bash
|
|
283
284
|
# Xem nhanh tất cả PRDs và status:
|
|
284
|
-
grep -
|
|
285
|
+
grep -rn "\*\*Status\*\*" specs/ --include="*.md"
|
|
285
286
|
```
|
|
286
287
|
|
|
287
288
|
---
|
|
@@ -290,10 +291,11 @@ grep -r "@trace.status" specs/ --include="*.md"
|
|
|
290
291
|
|
|
291
292
|
**Checklist trước khi thông báo:**
|
|
292
293
|
```yaml
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
294
|
+
# Bảng Metadata PRD:
|
|
295
|
+
# | **Ticket** | FEAT-01 | ✅ có (đúng format)
|
|
296
|
+
# | **Domain** | auth | ✅ khớp services keys của dev team
|
|
297
|
+
# | **Status** | approved | ✅ đã approved
|
|
298
|
+
# | **Version** | 1.0 | ✅ có version number
|
|
297
299
|
```
|
|
298
300
|
|
|
299
301
|
```
|
|
@@ -22,7 +22,7 @@ Mỗi artifact mang `@trace.*` metadata liên kết về artifact trước nó:
|
|
|
22
22
|
|
|
23
23
|
```
|
|
24
24
|
product-definition.md
|
|
25
|
-
└─► PRD.md (
|
|
25
|
+
└─► PRD.md (Domain, Status, Service/Module — đều trong bảng Metadata)
|
|
26
26
|
└─► specs/{domain}/{prd-slug}/bdd/{web|app|system}/{UC-ID}.feature (@trace.prd_version, @trace.module)
|
|
27
27
|
└─► specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design*.md (@trace.bdd_version)
|
|
28
28
|
└─► src/ code — service submodule (@trace.implements)
|
|
@@ -34,8 +34,8 @@ product-definition.md
|
|
|
34
34
|
|
|
35
35
|
| Field | Vị trí | Ý nghĩa |
|
|
36
36
|
|-------|--------|---------|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
37
|
+
| `Domain` | bảng Metadata PRD | Domain của feature (auth, payment, …) — route vào đúng service submodule |
|
|
38
|
+
| `Status` | bảng Metadata PRD | `draft` / `approved` — dev team chỉ code khi `approved` |
|
|
39
39
|
| `@trace.service` / `@trace.module` | BDD / Tech Doc header | Service + module sẽ implement |
|
|
40
40
|
| `@trace.prd_version` / `@trace.bdd_version` | BDD / code / test | Version của spec mà artifact được sinh từ — base cho drift detection |
|
|
41
41
|
| `@trace.implements` | Code comment | Scenario mà code này implement: `={UC-ID}-SC{N}` |
|
|
@@ -256,7 +256,7 @@ Topology giả định cho mọi ví dụ dưới đây:
|
|
|
256
256
|
**① PO — 1 tầng (spec repo)**
|
|
257
257
|
```bash
|
|
258
258
|
cd my-project-specs && git pull
|
|
259
|
-
# /generate-prd · /generate-design-spec · /generate-bdd (web/app/system) · set
|
|
259
|
+
# /generate-prd · /generate-design-spec · /generate-bdd (web/app/system) · set Status: approved (bảng Metadata)
|
|
260
260
|
git add specs/payment/checkout/{TICKET-ID}-checkout.md \
|
|
261
261
|
specs/payment/checkout/design-spec/FT-042-checkout-design.md \
|
|
262
262
|
specs/payment/checkout/bdd/system/FT-042-UC1-checkout-system.feature \
|
|
@@ -400,7 +400,7 @@ git pull
|
|
|
400
400
|
/refine-prd {prd-file} # review 4 lens: QA/DEV/SA/PO
|
|
401
401
|
/review-context {prd-file} # chất lượng + P0 check
|
|
402
402
|
/review-context --fix {prd-file} # auto-fix vấn đề nhỏ
|
|
403
|
-
# → update
|
|
403
|
+
# → update Status: approved (bảng Metadata) khi PRD sẵn sàng
|
|
404
404
|
/generate-design-spec {prd-file} # FE/App
|
|
405
405
|
/generate-bdd {prd-file} # outside-in: web → app → system (System BDD tổng hợp từ web+app)
|
|
406
406
|
|
|
@@ -417,7 +417,7 @@ cd my-project-web
|
|
|
417
417
|
git add my-project-specs && git commit -m "chore: sync specs" && git push
|
|
418
418
|
|
|
419
419
|
/review-context my-project-specs/specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
420
|
-
# → P0:
|
|
420
|
+
# → P0: Domain (bảng Metadata) khớp services config? Status: approved?
|
|
421
421
|
# Đọc Web BDD do PO generate (KHÔNG tự generate BDD):
|
|
422
422
|
# my-project-specs/specs/{domain}/{prd-slug}/bdd/web/{TICKET-ID}-UC*.feature
|
|
423
423
|
|
|
@@ -63,7 +63,7 @@ Có **4 lệnh review** cho **4 loại artifact khác nhau**. Đây là điểm
|
|
|
63
63
|
| Tôi muốn review… | Cách dùng (ví dụ) | Nó kiểm cái gì | Ai chạy |
|
|
64
64
|
|---|---|---|---|
|
|
65
65
|
| **PRD — nội dung & độ đầy đủ** | `/refine-prd specs/auth/login/{TICKET-ID}-login.md` | 4 lens QA·DEV·SA·PO: AC có test được? edge case? scope rõ? | PO |
|
|
66
|
-
| **PRD — chất lượng trước khi approve** | `/review-context specs/auth/login/{TICKET-ID}-login.md` | P-checks: banned term, mơ hồ, mâu thuẫn PRD khác, thiếu section, routing
|
|
66
|
+
| **PRD — chất lượng trước khi approve** | `/review-context specs/auth/login/{TICKET-ID}-login.md` | P-checks: banned term, mơ hồ, mâu thuẫn PRD khác, thiếu section, routing theo `Domain` (bảng Metadata) | PO |
|
|
67
67
|
| **BDD `.feature`** | `/review-context specs/auth/login/bdd/system/FEAT-01-UC1-login.feature` | B-checks: mỗi AC/BR → có ≥1 scenario? Gherkin R1–R10, compliance C1–C5 | SA/Dev |
|
|
68
68
|
| **Tech design** | `/review-tech-docs specs/auth/login/tech-docs/FEAT-01-UC1-tech-design.md` | T-checks: đúng layer/architecture, entity, trace BDD, cross-team API sign-off | Dev/SA |
|
|
69
69
|
| **Code** | `/review-code FEAT-01-UC1` | 4 lens: Security · Performance · Architecture · Test coverage | Dev |
|
package/package.json
CHANGED
package/skills/code/SKILL.md
CHANGED
|
@@ -572,7 +572,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
572
572
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
573
573
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
574
574
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
575
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
575
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
576
576
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
577
577
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
578
578
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -730,7 +730,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
730
730
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
731
731
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
732
732
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
733
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
733
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
734
734
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
735
735
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
736
736
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
package/skills/debug/SKILL.md
CHANGED
|
@@ -503,7 +503,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
503
503
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
504
504
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
505
505
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
506
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
506
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
507
507
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
508
508
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
509
509
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -687,7 +687,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
687
687
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
688
688
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
689
689
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
690
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
690
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
691
691
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
692
692
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
693
693
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -828,7 +828,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
828
828
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
829
829
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
830
830
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
831
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
831
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
832
832
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
833
833
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
834
834
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -539,7 +539,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
539
539
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
540
540
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
541
541
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
542
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
542
|
+
| /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` (→ design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX → sửa PRD (giữ draft) |
|
|
543
543
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
544
544
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
545
545
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|