@edupia-tutor/spec-driven-docs 0.14.5 → 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 +16 -2
- package/commands/generate-bdd.tmpl +15 -1
- 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 +19 -10
- package/commands/refine-prd.tmpl +18 -9
- package/commands/report-bug.md +1 -1
- package/commands/review-code.md +1 -1
- package/commands/review-context.md +124 -34
- package/commands/review-context.tmpl +87 -33
- 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 +16 -2
- 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 +19 -10
- package/core/commands/report-bug.md +1 -1
- package/core/commands/review-code.md +1 -1
- package/core/commands/review-context.md +124 -34
- 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
|
|
@@ -52,15 +52,15 @@ Rồi:
|
|
|
52
52
|
- 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
|
|
53
53
|
- Skip: `.trace/` (theo service, sống cạnh code trong mỗi service submodule)
|
|
54
54
|
- Sinh `CLAUDE.md` tối thiểu chỉ với §1 (project overview) và §7 (git conventions)
|
|
55
|
-
- 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
|
|
55
|
+
- 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
|
|
56
56
|
- Thông báo:
|
|
57
57
|
- Lệnh cho PO repo: `/define-product`, `/generate-prd`, `/review-context`, `/generate-design-spec`
|
|
58
|
-
- **Quan trọng cho handoff team dev:** Mọi PRD phải có
|
|
59
|
-
-
|
|
58
|
+
- **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.
|
|
59
|
+
- Bảng Metadata PRD (do `/generate-prd` điền sẵn theo template):
|
|
60
60
|
```
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
| **Domain** | {domain} | ← phải khớp một key trong services config của team dev
|
|
62
|
+
| **Ticket** | {TICKET-ID} |
|
|
63
|
+
| **Status** | draft | approved |
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
## Step 1 — Tạo cấu trúc thư mục
|
|
@@ -322,7 +322,7 @@ Next:
|
|
|
322
322
|
Next:
|
|
323
323
|
1. Review .agent/project-context.yaml:
|
|
324
324
|
- Cập nhật services[].path khớp tên thư mục submodule thực tế
|
|
325
|
-
- Cập nhật domain key của services khớp
|
|
325
|
+
- Cập nhật domain key của services khớp row `Domain` (bảng Metadata) trong các file PRD
|
|
326
326
|
- Xác nhận path spec_source đúng
|
|
327
327
|
|
|
328
328
|
2. Chạy /sync — một lệnh lo mọi thứ còn lại:
|
|
@@ -341,7 +341,7 @@ Next:
|
|
|
341
341
|
```
|
|
342
342
|
Next:
|
|
343
343
|
1. Điền .agent/project-context.yaml:
|
|
344
|
-
- domains: [liệt kê mọi business domain — chúng thành
|
|
344
|
+
- domains: [liệt kê mọi business domain — chúng thành row `Domain` (bảng Metadata) trong PRD]
|
|
345
345
|
- project.name, project.description
|
|
346
346
|
2. Điền specs/domain-knowledge/business-dictionary.md ← canonical terms
|
|
347
347
|
3. Điền specs/domain-knowledge/core-entities.md ← entity glossary
|
|
@@ -351,7 +351,7 @@ Next:
|
|
|
351
351
|
6. /define-product để bắt đầu feature đầu tiên
|
|
352
352
|
|
|
353
353
|
⚠️ Nhắc handoff team dev:
|
|
354
|
-
- Mỗi PRD phải có
|
|
354
|
+
- Mỗi PRD phải có row `Domain` (bảng Metadata) khớp một trong domains list của bạn
|
|
355
355
|
- Khi team dev setup umbrella repo của họ, họ map các tên domain này
|
|
356
356
|
tới path service submodule trong section services của project-context.yaml
|
|
357
357
|
- Chia sẻ tên domain với team dev trước khi họ cấu hình umbrella
|
package/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 |
|
package/core/FRAMEWORK_VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.14.
|
|
1
|
+
0.14.7
|
package/core/commands/debug.md
CHANGED
|
@@ -672,7 +672,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
672
672
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
673
673
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
674
674
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
675
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
675
|
+
| /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) |
|
|
676
676
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
677
677
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
678
678
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -670,7 +670,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
670
670
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
671
671
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
672
672
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
673
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
673
|
+
| /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) |
|
|
674
674
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
675
675
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
676
676
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -960,7 +960,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
960
960
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
961
961
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
962
962
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
963
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
963
|
+
| /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) |
|
|
964
964
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
965
965
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
966
966
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -684,7 +684,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
684
684
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
685
685
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
686
686
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
687
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
687
|
+
| /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) |
|
|
688
688
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
689
689
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
690
690
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -658,7 +658,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
658
658
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
659
659
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
660
660
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
661
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
661
|
+
| /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) |
|
|
662
662
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
663
663
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
664
664
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
package/core/commands/fix-bug.md
CHANGED
|
@@ -693,7 +693,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
693
693
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
694
694
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
695
695
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
696
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
696
|
+
| /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) |
|
|
697
697
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
698
698
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
699
699
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -405,6 +405,20 @@ Tiếp tục sang bước kế tiếp của lệnh đang gọi.
|
|
|
405
405
|
|
|
406
406
|
---
|
|
407
407
|
|
|
408
|
+
## Guard — PRD đã duyệt chưa
|
|
409
|
+
|
|
410
|
+
Đọc `| **Status** |` từ bảng Metadata của PRD nguồn:
|
|
411
|
+
- `Status: approved` → tiếp tục bình thường.
|
|
412
|
+
- `Status: draft` (hoặc khác `approved`) → **CHECKPOINT cảnh báo mềm** (không chặn cứng — cho phép prototype):
|
|
413
|
+
```
|
|
414
|
+
⚠️ PRD đang ở Status: {status} (chưa duyệt). BDD sinh từ PRD chưa chốt có thể phải làm lại.
|
|
415
|
+
Khuyến nghị: PO review xong đặt `| **Status** | approved |` rồi mới sinh BDD.
|
|
416
|
+
Vẫn sinh BDD bây giờ? (Y/N)
|
|
417
|
+
```
|
|
418
|
+
Chỉ tiếp tục khi người dùng chọn Y.
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
408
422
|
## Phát hiện Repo Mode
|
|
409
423
|
|
|
410
424
|
Sau khi nạp context, xác định chế độ hoạt động:
|
|
@@ -641,7 +655,7 @@ Trước khi sinh, kiểm tra các file `.feature` có sẵn cho PRD này:
|
|
|
641
655
|
- So với version PRD hiện tại.
|
|
642
656
|
- Nếu **giống** → hỏi: "BDD đã sinh từ PRD v{version}. Gen lại? (Y/N)"
|
|
643
657
|
- Nếu **khác** (PRD đã cập nhật):
|
|
644
|
-
1. Đọc
|
|
658
|
+
1. Đọc `# Change Log` từ PRD — trích tất cả row mới hơn `@trace.prd_version` của BDD hiện có.
|
|
645
659
|
2. Hiện CHECKPOINT:
|
|
646
660
|
```
|
|
647
661
|
⚠️ Phát hiện PRD version drift
|
|
@@ -989,7 +1003,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
989
1003
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
990
1004
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
991
1005
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
992
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
1006
|
+
| /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) |
|
|
993
1007
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
994
1008
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
995
1009
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -802,7 +802,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
802
802
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
803
803
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
804
804
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
805
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
805
|
+
| /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) |
|
|
806
806
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
807
807
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
808
808
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -412,6 +412,20 @@ Tiếp tục sang bước kế tiếp của lệnh đang gọi.
|
|
|
412
412
|
|
|
413
413
|
---
|
|
414
414
|
|
|
415
|
+
## Guard — PRD đã duyệt chưa
|
|
416
|
+
|
|
417
|
+
Đọc `| **Status** |` từ bảng Metadata của Business PRD nguồn:
|
|
418
|
+
- `Status: approved` → tiếp tục bình thường.
|
|
419
|
+
- `Status: draft` (hoặc khác `approved`) → **CHECKPOINT cảnh báo mềm** (không chặn cứng — cho phép prototype song song):
|
|
420
|
+
```
|
|
421
|
+
⚠️ Business PRD đang ở Status: {status} (chưa duyệt). Design Spec dựng trên PRD chưa chốt có thể phải làm lại theo PRD.
|
|
422
|
+
Khuyến nghị: PO duyệt PRD (đặt `| **Status** | approved |`) rồi mới sinh Design Spec.
|
|
423
|
+
Vẫn sinh Design Spec bây giờ? (Y/N)
|
|
424
|
+
```
|
|
425
|
+
Chỉ tiếp tục khi người dùng chọn Y.
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
415
429
|
## Platform Check
|
|
416
430
|
|
|
417
431
|
Dùng `active_module` và `platform_type` suy ra từ context loading:
|
|
@@ -895,7 +909,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
895
909
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
896
910
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
897
911
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
898
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
912
|
+
| /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) |
|
|
899
913
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
900
914
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
901
915
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -851,7 +851,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
851
851
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
852
852
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
853
853
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
854
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
854
|
+
| /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) |
|
|
855
855
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
856
856
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
857
857
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -901,4 +901,5 @@ Output Artifacts:
|
|
|
901
901
|
Pipeline : Discovery → [PRD ◀ bạn ở đây] → Design Spec → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
902
902
|
Next : /refine-prd {paths.specs_dir}/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
903
903
|
→ rồi /review-context {prd-file} ← kiểm tra chất lượng PRD trước khi sinh BDD
|
|
904
|
+
→ khi sạch critical, PO đặt | **Status** | approved | (PRD mới sinh đang draft) → /generate-bdd
|
|
904
905
|
```
|
|
@@ -595,7 +595,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
595
595
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
596
596
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
597
597
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
598
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
598
|
+
| /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) |
|
|
599
599
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
600
600
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
601
601
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -798,7 +798,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
798
798
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
799
799
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
800
800
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
801
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
801
|
+
| /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) |
|
|
802
802
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
803
803
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
804
804
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
package/core/commands/learn.md
CHANGED
|
@@ -579,7 +579,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
579
579
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
580
580
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
581
581
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
582
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
582
|
+
| /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) |
|
|
583
583
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
584
584
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
585
585
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -526,7 +526,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
526
526
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
527
527
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
528
528
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
529
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
529
|
+
| /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) |
|
|
530
530
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
531
531
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
532
532
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -556,7 +556,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
556
556
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
557
557
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
558
558
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
559
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
559
|
+
| /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) |
|
|
560
560
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
561
561
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
562
562
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -530,7 +530,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
530
530
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
531
531
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
532
532
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
533
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
533
|
+
| /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) |
|
|
534
534
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
535
535
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
536
536
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -515,7 +515,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
515
515
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
516
516
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
517
517
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
518
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
518
|
+
| /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) |
|
|
519
519
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
520
520
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
521
521
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
package/core/commands/qc-plan.md
CHANGED
|
@@ -496,7 +496,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
496
496
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
497
497
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
498
498
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
499
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
499
|
+
| /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) |
|
|
500
500
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
501
501
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
502
502
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -501,7 +501,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
501
501
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
502
502
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
503
503
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
504
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
504
|
+
| /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) |
|
|
505
505
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
506
506
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
507
507
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -499,7 +499,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
499
499
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
500
500
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
501
501
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
502
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
502
|
+
| /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) |
|
|
503
503
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
504
504
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
505
505
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -555,7 +555,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
555
555
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
556
556
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
557
557
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
558
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
558
|
+
| /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) |
|
|
559
559
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
560
560
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
561
561
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -631,7 +631,9 @@ Chạy review qua **Quy trình Review** ở trên (`steps/review-fanout.md`).
|
|
|
631
631
|
- **Tồn tại** + có `--full` → **FULL**: bỏ qua findings cũ, không truyền `CHANGED_SCOPE` (ép quét lại toàn bộ).
|
|
632
632
|
- **Tồn tại** + KHÔNG có `--full` → so `prd_version` trong findings cũ với `| **Version** |` của PRD hiện tại:
|
|
633
633
|
- **Bằng nhau** (PRD chưa đổi từ lần review trước) → DỪNG, báo: `"PRD chưa đổi từ v{X} (lần review gần nhất). Không có gì để review lại — dùng --full nếu vẫn muốn quét toàn bộ."`
|
|
634
|
-
- **Khác**
|
|
634
|
+
- **Khác** → kiểm tra `applied_to_version` trong findings cũ (version mà lần `--resume` gần nhất của CHÍNH lệnh này đã bump PRD tới) để biết ai gây ra thay đổi:
|
|
635
|
+
- **`applied_to_version` có mặt VÀ `==` version PRD hiện tại** → PRD đổi đúng bằng phần lệnh này tự áp, không actor khác động vào → **DELTA**: `CHANGED_SCOPE` = { `uc_id`/`section` của các finding `status: applied` trong findings cũ } ∪ { UC có trong PRD hiện tại nhưng chưa từng xuất hiện ở findings cũ }. Truyền `CHANGED_SCOPE` này vào Quy trình Review.
|
|
636
|
+
- **`applied_to_version` vắng mặt HOẶC `≠` version hiện tại** → PRD đã bị sửa bởi **actor khác** (lệnh `/review-context`, sửa tay…) sau lần resume này → KHÔNG tin được phạm vi hẹp → **FULL** (KHÔNG truyền `CHANGED_SCOPE`), kèm cảnh báo: `"PRD đổi ngoài tầm theo dõi của findings (applied_to_version={A} ≠ hiện tại={C}); quét lại toàn bộ để khỏi sót UC do người/lệnh khác sửa."`
|
|
635
637
|
|
|
636
638
|
**DIMENSIONS** = 4 lăng kính dưới đây — fan out một sub-agent cho mỗi lăng kính, mỗi cái quét
|
|
637
639
|
toàn bộ PRD qua đúng lăng kính của nó:
|
|
@@ -663,6 +665,7 @@ Ghi `{paths.refinement_dir}/{prd-slug}-findings.yaml`:
|
|
|
663
665
|
```yaml
|
|
664
666
|
prd_source: "{paths.specs_dir}/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md"
|
|
665
667
|
prd_version: "{đọc | **Version** | từ metadata PRD lúc sinh findings — dùng để chọn full/delta lần chạy sau}"
|
|
668
|
+
applied_to_version: "" # để trống lúc phân tích; --resume sẽ ghi version PRD vừa bump tới. Lần delta sau: nếu version PRD hiện tại ≠ giá trị này → PRD bị actor khác sửa → fallback FULL (xem "Chọn full vs delta")
|
|
666
669
|
generated_at: "{ISO datetime}"
|
|
667
670
|
status: "pending_review"
|
|
668
671
|
|
|
@@ -684,14 +687,19 @@ findings:
|
|
|
684
687
|
# true = AI tự tin cao vào suggestion này; Review Board có thể hiển thị nút "quick accept"
|
|
685
688
|
# false = cần human đọc kỹ và ghi quyết định trước khi accept
|
|
686
689
|
# Resume Mode luôn áp dụng theo status (accepted|modified), bất kể auto_fixable.
|
|
690
|
+
# LƯU Ý: /refine-prd CỐ Ý không có `--fix` mode (khác /review-context) — finding 4 lăng kính
|
|
691
|
+
# là phán đoán QA/DEV/SA/PO, phải qua người duyệt ở Board; auto_fixable ở đây CHỈ là gợi ý
|
|
692
|
+
# quick-accept cho Board, KHÔNG để máy tự áp.
|
|
687
693
|
status: "pending"
|
|
688
|
-
|
|
694
|
+
applied_via: ""
|
|
695
|
+
# Vòng đời finding-level (CHUNG với /review-context — Review Board đọc cả hai loại file nên enum phải khớp):
|
|
689
696
|
# pending → finding mới, chưa được review
|
|
690
697
|
# accepted → reviewer chấp nhận suggestion gốc → Resume sẽ apply
|
|
691
698
|
# modified → reviewer đã sửa suggestion trong Review Board → Resume dùng suggestion đã sửa
|
|
692
699
|
# rejected → reviewer bác bỏ, không apply
|
|
693
|
-
# needs_discussion → hai suggestion xung đột,
|
|
694
|
-
#
|
|
700
|
+
# needs_discussion → hai suggestion xung đột, CHẶN --resume (bỏ qua + cảnh báo) tới khi con người quyết
|
|
701
|
+
# deferred → cố ý hoãn (không chặn), bỏ qua lượt này, xem lại sau
|
|
702
|
+
# applied → đã áp vào PRD; applied_via ghi cách áp: "resume" (qua --resume) — /review-context còn dùng "fix" (qua --fix)
|
|
695
703
|
|
|
696
704
|
summary:
|
|
697
705
|
total_findings: {N}
|
|
@@ -781,7 +789,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
781
789
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
782
790
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
783
791
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
784
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
792
|
+
| /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) |
|
|
785
793
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
786
794
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
787
795
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -834,7 +842,7 @@ Pipeline : Discovery → [PRD ◀ bạn ở đây] → Design Spec → BDD → T
|
|
|
834
842
|
Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
|
|
835
843
|
Next : Mở trong Review Board (chuột phải vào file) → Cập nhật PRD
|
|
836
844
|
→ /review-context {prd-file} ← kiểm tra chất lượng PRD trước khi sinh BDD
|
|
837
|
-
→ /generate-bdd {prd-file}
|
|
845
|
+
→ khi sạch critical, PO đặt | **Status** | approved | → /generate-bdd {prd-file}
|
|
838
846
|
```
|
|
839
847
|
|
|
840
848
|
Nếu có finding nào có `status: "needs_discussion"`, thêm warning block sau footer:
|
|
@@ -884,7 +892,7 @@ Với mỗi finding được chấp nhận, theo thứ tự severity (critical
|
|
|
884
892
|
### Phase 2.5 — Cập nhật file findings
|
|
885
893
|
|
|
886
894
|
Với mỗi finding đã áp dụng (status là `accepted` hoặc `modified`):
|
|
887
|
-
- Đặt `status: "applied"` trong `{paths.refinement_dir}/{prd-slug}-findings.yaml`.
|
|
895
|
+
- Đặt `status: "applied"` + `applied_via: "resume"` trong `{paths.refinement_dir}/{prd-slug}-findings.yaml`.
|
|
888
896
|
|
|
889
897
|
Cập nhật `status: "applied"` ở **root level** của file findings (không phải `summary.status`).
|
|
890
898
|
# Lifecycle file-level: pending_review → applied | partially_applied
|
|
@@ -901,10 +909,11 @@ Cập nhật `status: "applied"` ở **root level** của file findings (không
|
|
|
901
909
|
- `| **Version** | {new_version} |`
|
|
902
910
|
- `| **Updated** | {today YYYY-MM-DD} |`
|
|
903
911
|
- `| **Status** | draft |` ← reset về draft, phải được duyệt lại
|
|
904
|
-
5. Thêm một row mới lên đầu
|
|
912
|
+
5. Thêm một row mới lên đầu `# Change Log` ở cuối PRD:
|
|
905
913
|
```
|
|
906
914
|
| {new_version} | {today} | {tóm tắt súc tích mọi thay đổi đã áp dụng} |
|
|
907
915
|
```
|
|
916
|
+
6. Ghi `applied_to_version: "{new_version}"` ở **root level** của findings — đóng dấu "PRD đổi tới version này là do lệnh này áp", để lần review delta sau phân biệt được thay đổi của chính mình với thay đổi do actor khác (xem "Chọn full vs delta").
|
|
908
917
|
|
|
909
918
|
### Phase 4 — Report
|
|
910
919
|
|
|
@@ -918,7 +927,7 @@ Changes :
|
|
|
918
927
|
|
|
919
928
|
💡 Vừa áp {N} phương án (gồm bản PO tự sửa) → chạy lại /refine-prd {prd-file}
|
|
920
929
|
(delta tự động) để lòi edge case mà các phương án vừa áp có thể tạo ra.
|
|
921
|
-
⚠️ BDD có thể đã lỗi thời. Chạy:
|
|
930
|
+
⚠️ Status đã reset về draft (sửa rồi phải duyệt lại). BDD có thể đã lỗi thời. Chạy:
|
|
922
931
|
/review-context {prd-file} ← kiểm tra chất lượng PRD trước
|
|
923
|
-
→ /generate-bdd {prd-file}
|
|
932
|
+
→ PO đặt | **Status** | approved | khi hài lòng → /generate-bdd {prd-file}
|
|
924
933
|
```
|
|
@@ -566,7 +566,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
566
566
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
567
567
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
568
568
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
569
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
569
|
+
| /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) |
|
|
570
570
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
571
571
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
572
572
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
@@ -515,7 +515,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
|
515
515
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
516
516
|
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
517
517
|
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
518
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
518
|
+
| /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) |
|
|
519
519
|
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
520
520
|
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
521
521
|
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|