@edupia-tutor/spec-driven-docs 0.14.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/debug.md +435 -435
- package/commands/debug.tmpl +111 -111
- package/commands/define-product.md +330 -327
- package/commands/define-product.tmpl +50 -47
- package/commands/dev-gen-test.md +364 -364
- package/commands/dev-gen-test.tmpl +63 -63
- package/commands/dev-run-test.md +375 -375
- package/commands/dev-run-test.tmpl +74 -74
- package/commands/dev-smoke-test.md +340 -340
- package/commands/dev-smoke-test.tmpl +60 -60
- package/commands/fix-bug.md +402 -402
- package/commands/fix-bug.tmpl +78 -78
- package/commands/generate-bdd.md +512 -512
- package/commands/generate-bdd.tmpl +211 -211
- package/commands/generate-code.md +480 -482
- package/commands/generate-code.tmpl +179 -181
- package/commands/generate-design-spec.md +495 -495
- package/commands/generate-design-spec.tmpl +219 -219
- package/commands/generate-prd.md +445 -396
- package/commands/generate-prd.tmpl +45 -198
- package/commands/generate-spec-manifest.md +337 -337
- package/commands/generate-spec-manifest.tmpl +57 -57
- package/commands/generate-tech-docs.md +364 -364
- package/commands/generate-tech-docs.tmpl +84 -84
- package/commands/learn.md +346 -346
- package/commands/learn.tmpl +22 -22
- package/commands/map-testids.md +321 -321
- package/commands/map-testids.tmpl +41 -41
- package/commands/propose-scenario.md +334 -334
- package/commands/propose-scenario.tmpl +54 -54
- package/commands/qc-analyze.md +322 -323
- package/commands/qc-analyze.tmpl +42 -43
- package/commands/qc-design-test.md +303 -303
- package/commands/qc-design-test.tmpl +23 -23
- package/commands/qc-plan.md +296 -296
- package/commands/qc-plan.tmpl +16 -16
- package/commands/qc-report.md +301 -301
- package/commands/qc-report.tmpl +21 -21
- package/commands/qc-review.md +297 -297
- package/commands/qc-review.tmpl +17 -17
- package/commands/qc-run-test.md +336 -336
- package/commands/qc-run-test.tmpl +35 -35
- package/commands/refine-prd.md +426 -428
- package/commands/refine-prd.tmpl +61 -61
- package/commands/report-bug.md +350 -350
- package/commands/report-bug.tmpl +70 -70
- package/commands/review-code.md +363 -363
- package/commands/review-code.tmpl +39 -39
- package/commands/review-context.md +577 -579
- package/commands/review-context.tmpl +212 -212
- package/commands/review-tech-docs.md +426 -426
- package/commands/review-tech-docs.tmpl +146 -146
- package/commands/setup-ai-first.md +237 -237
- package/commands/setup-ai-first.tmpl +131 -131
- package/commands/sync.md +145 -145
- package/commands/sync.tmpl +93 -93
- package/commands/update-framework.md +88 -88
- package/commands/update-framework.tmpl +36 -36
- package/commands/validate-traces.md +379 -379
- package/commands/validate-traces.tmpl +99 -99
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +435 -435
- package/core/commands/define-product.md +330 -327
- package/core/commands/dev-gen-test.md +364 -364
- package/core/commands/dev-run-test.md +375 -375
- package/core/commands/dev-smoke-test.md +340 -340
- package/core/commands/fix-bug.md +402 -402
- package/core/commands/generate-bdd.md +512 -512
- package/core/commands/generate-code.md +480 -482
- package/core/commands/generate-design-spec.md +495 -495
- package/core/commands/generate-prd.md +445 -396
- package/core/commands/generate-spec-manifest.md +337 -337
- package/core/commands/generate-tech-docs.md +364 -364
- package/core/commands/learn.md +346 -346
- package/core/commands/map-testids.md +321 -321
- package/core/commands/propose-scenario.md +334 -334
- package/core/commands/qc-analyze.md +322 -323
- package/core/commands/qc-design-test.md +303 -303
- package/core/commands/qc-plan.md +296 -296
- package/core/commands/qc-report.md +301 -301
- package/core/commands/qc-review.md +297 -297
- package/core/commands/qc-run-test.md +336 -336
- package/core/commands/refine-prd.md +426 -428
- package/core/commands/report-bug.md +350 -350
- package/core/commands/review-code.md +363 -363
- package/core/commands/review-context.md +577 -579
- package/core/commands/review-tech-docs.md +426 -426
- package/core/commands/setup-ai-first.md +237 -237
- package/core/commands/sync.md +145 -145
- package/core/commands/update-framework.md +88 -88
- package/core/commands/validate-traces.md +379 -379
- package/core/skills/code/SKILL.md +388 -388
- package/core/skills/debug/SKILL.md +390 -390
- package/core/skills/design-spec/SKILL.md +316 -316
- package/core/skills/discovery/SKILL.md +7 -547
- package/core/skills/prd/SKILL.md +298 -394
- package/core/skills/setup-ai-first/SKILL.md +79 -79
- package/core/skills/spec/SKILL.md +176 -176
- package/core/skills/test/SKILL.md +602 -602
- package/core/steps/capture-lesson.md +44 -44
- package/core/steps/context-loader.md +174 -174
- package/core/steps/gate.md +54 -54
- package/core/steps/report-footer.md +52 -52
- package/core/steps/review-fanout.md +85 -87
- package/core/steps/spawn-agent.md +45 -45
- package/core/steps/trace-mirror.md +21 -21
- package/core/templates/architecture.template.md +37 -37
- package/core/templates/design-spec.template.md +77 -77
- package/core/templates/platform-guide.template.md +47 -47
- package/core/templates/prd.template.md +106 -231
- package/core/templates/product-definition.template.md +101 -88
- package/docs/04-operations/publishing.md +20 -3
- package/package.json +1 -1
- package/skills/code/SKILL.md +388 -388
- package/skills/code/SKILL.tmpl +56 -56
- package/skills/debug/SKILL.md +390 -390
- package/skills/debug/SKILL.tmpl +60 -60
- package/skills/design-spec/SKILL.md +316 -316
- package/skills/design-spec/SKILL.tmpl +36 -36
- package/skills/discovery/SKILL.md +7 -547
- package/skills/discovery/SKILL.tmpl +7 -140
- package/skills/prd/SKILL.md +298 -394
- package/skills/prd/SKILL.tmpl +40 -151
- package/skills/setup-ai-first/SKILL.md +79 -79
- package/skills/setup-ai-first/SKILL.tmpl +27 -27
- package/skills/spec/SKILL.md +176 -176
- package/skills/spec/SKILL.tmpl +18 -18
- package/skills/test/SKILL.md +602 -602
- package/skills/test/SKILL.tmpl +44 -44
- package/steps/capture-lesson.md +44 -44
- package/steps/context-loader.md +174 -174
- package/steps/gate.md +54 -54
- package/steps/report-footer.md +52 -52
- package/steps/review-fanout.md +85 -87
- package/steps/spawn-agent.md +45 -45
- package/steps/trace-mirror.md +21 -21
- package/templates/architecture.template.md +37 -37
- package/templates/design-spec.template.md +77 -77
- package/templates/platform-guide.template.md +47 -47
- package/templates/prd.template.md +106 -231
- package/templates/product-definition.template.md +101 -88
|
@@ -4,68 +4,68 @@ updated: 2026-06-11
|
|
|
4
4
|
ported_from: ai-automation-qc-base
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# /qc-run-test — QC Script Generation & Run (
|
|
7
|
+
# /qc-run-test — QC Script Generation & Run (ghi qc_status)
|
|
8
8
|
|
|
9
|
-
> Stage 5
|
|
9
|
+
> Stage 5 của QC automation pipeline native (qc-analyze → qc-plan → qc-design-test → qc-review → qc-run-test → qc-report). Port từ qa-runner của team QC. Sinh & chạy Python pytest-playwright từ `.Test.md` đã review, rồi ghi `qc_status` **chính thức** vào trace TSV.
|
|
10
10
|
|
|
11
11
|
## Gate
|
|
12
12
|
{{include:steps/gate.md}}
|
|
13
13
|
|
|
14
|
-
*
|
|
14
|
+
*Lưu ý: Với lệnh này, target ở Bước 1 là một UC-ID. Đọc `.Test.md` đã review từ `{paths.qc_dir}/{UC-ID}/test-cases/`. Lệnh này dùng stack module **qc-playwright** (`.agent/modules/qc-playwright/stack-profile.yaml`) — Python + pytest-playwright + Page Object — độc lập với module implementation của dev.*
|
|
15
15
|
|
|
16
16
|
## Context
|
|
17
17
|
{{include:steps/context-loader.md}}
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
## Role & stack (
|
|
21
|
+
## Role & stack (theo module qc-playwright)
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
pytest-playwright
|
|
23
|
+
Bạn là **QC Runner** — stage 5. Chuyển `.Test.md` đã review thành Python
|
|
24
|
+
pytest-playwright script + Page Object, chạy chúng, và report kết quả theo từng scenario.
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
- Markdown-first:
|
|
28
|
-
- Page Object extends
|
|
29
|
-
- **
|
|
30
|
-
- pytest-playwright
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
26
|
+
Quy tắc stack (BẮT BUỘC — từ `modules/qc-playwright/stack-profile.yaml`):
|
|
27
|
+
- Markdown-first: không bao giờ sinh Python khi chưa có `.Test.md` đã review.
|
|
28
|
+
- Page Object extends `BasePage` gọn, 3 lớp: locator `_x()`, action `verb_noun()`, assertion `assert_x()` dùng `expect()`.
|
|
29
|
+
- **Locator từ test-id contract (không scan runtime).** Đọc bảng *Test Selectors* §2b của FE tech-design tại `{paths.tech_docs_dir}/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design-{platform}.md` (nếu có) và dựng mỗi Page Object locator từ test-id ổn định của nó — web `get_by_test_id("...")`, RN `testID`, Flutter `Key`/`Semantics`, native `accessibilityIdentifier`. **Ưu tiên map; fallback** về role/label/text/CSS (scan chậm hơn) chỉ cho một element có action mà **không** có test-id trong §2b — và ghi chú để gap được thêm vào tech-design.
|
|
30
|
+
- pytest-playwright fixture; mỗi test độc lập; gom theo (role, account) để auth không bao giờ xen kẽ.
|
|
31
|
+
- Không hard-code URL/cred/timeout (dùng `Env.*` / `CONFIG[...]`); không `time.sleep()`; không Allure.
|
|
32
|
+
- Phủ **100%** TC trong file — mỗi TC kết thúc Pass/Fail/Skip (không còn Draft).
|
|
33
|
+
- Phân loại mỗi FAIL: script-bug (fix selector/logic) vs product-gap (giữ FAIL + evidence, không bao giờ fake-pass).
|
|
34
34
|
|
|
35
|
-
## Skills —
|
|
35
|
+
## Skills — chọn layer, nạp MỘT file (`{paths.qc_skills_dir}/qa-runner/`)
|
|
36
36
|
|
|
37
37
|
`functional/{gui-screen,gui-feature,api}.md`, `integration.md`, `e2e.md`,
|
|
38
38
|
`non-functional.md`, `exploratory/session.md`.
|
|
39
39
|
|
|
40
|
-
## Trace tag (
|
|
40
|
+
## Trace tag (bắt buộc)
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
`.Test.md
|
|
42
|
+
Mỗi pytest test được sinh ra mang scenario framework mà nó verify, lấy từ
|
|
43
|
+
Trace matrix của `.Test.md`:
|
|
44
44
|
|
|
45
45
|
```python
|
|
46
46
|
# @trace.verifies={UC-ID}-SC{N}
|
|
47
47
|
def test_TC_<FEATURE>_001_...(...): ...
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
## Write Trace State — qc_status (
|
|
50
|
+
## Write Trace State — qc_status (kết quả QC CHÍNH THỨC)
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
`sc_id`
|
|
52
|
+
Sau khi chạy, cập nhật `{paths.trace_dir}/{domain}/{prd-slug}/{UC-ID}.tsv` (nếu `domain`/`prd_slug` không phân giải được từ spec target, định vị TSV bằng cách glob `{paths.trace_dir}/**/{UC-ID}.tsv` — nó được tạo trước đó bởi `/generate-bdd`) — cho mỗi scenario row (khớp
|
|
53
|
+
`sc_id` qua tag `@trace.verifies={UC-ID}-SC{N}` của test). *(Umbrella + `spec_source`: `trace_dir` là `{spec_source}/.trace` — ghi update `qc_status` vào **spec repo** và commit/push spec submodule, giống `feedback/`.)*
|
|
54
54
|
|
|
55
|
-
|
|
|
55
|
+
| Cột | Giá trị |
|
|
56
56
|
|--------|-------|
|
|
57
|
-
| `qc_status` | `pass`
|
|
58
|
-
| `qc_run_at` |
|
|
59
|
-
| `qc_owner` | **
|
|
60
|
-
| `qc_blocked_by` |
|
|
57
|
+
| `qc_status` | `pass` nếu mọi QC test của SC này pass · `fail` nếu có cái fail · `skip` nếu tất cả skip/xfail · `not_run` nếu không QC test nào phủ nó |
|
|
58
|
+
| `qc_run_at` | hôm nay `YYYY-MM-DD` |
|
|
59
|
+
| `qc_owner` | **SC đang chờ ai** (view "pending" của PM/PO): `dev` nếu FAIL = product-gap (defect thật → dev fix) · `po` nếu `skip`/`not_run` vì một **`DOC_GAPS` 🔴 Blocker đang open** chặn test (PO phải làm rõ PRD/BDD) · `—` nếu `pass`, hoặc FAIL = script-bug (QC tự fix — tạm thời) |
|
|
60
|
+
| `qc_blocked_by` | artifact liên kết: `GAP-{id}` khi bị chặn bởi spec gap (set ở đây) · `BUG-{id}` khi `/report-bug` đã được file cho product-gap (backfill bởi `/report-bug`) · `—` ngược lại |
|
|
61
61
|
|
|
62
|
-
Set `qc_owner`/`qc_blocked_by`
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
Set `qc_owner`/`qc_blocked_by` cùng với `qc_status`. Khi `pass`, **clear** cả hai về `—`.
|
|
63
|
+
Với FAIL product-gap, set `qc_owner=dev` ngay; `BUG-{id}` được backfill vào `qc_blocked_by`
|
|
64
|
+
khi QC chạy `/report-bug` mà `/qc-report` nhắc.
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
(
|
|
68
|
-
|
|
66
|
+
Giữ nguyên mọi cột khác — **không bao giờ** đụng `dev_selftest`/`dev_selftest_at`
|
|
67
|
+
(do `/dev-run-test` sở hữu). `qc_status` (QC chính thức) và `dev_selftest` (dev smoke) là
|
|
68
|
+
hai tín hiệu riêng; cả hai trực giao với `status` (OK/GAP/DRIFT/UNTRACKED = coverage).
|
|
69
69
|
|
|
70
70
|
## Refresh Panel Mirror
|
|
71
71
|
{{include:steps/trace-mirror.md}}
|
|
@@ -78,7 +78,7 @@ separate signals; both are orthogonal to `status` (OK/GAP/DRIFT/UNTRACKED = cove
|
|
|
78
78
|
/qc-run-test Report — {UC-ID} ({qc-playwright})
|
|
79
79
|
QC: ✅ {pass} pass | ❌ {fail} fail | ⏭️ {skip} skip (TCs: {total})
|
|
80
80
|
Trace: {paths.trace_dir}/{domain}/{prd-slug}/{UC-ID}.tsv updated (qc_status, qc_run_at)
|
|
81
|
-
Next: /qc-report {UC-ID} ←
|
|
82
|
-
/qc-review {UC-ID} ← review
|
|
83
|
-
📊 Living Docs:
|
|
81
|
+
Next: /qc-report {UC-ID} ← sinh report + evidence
|
|
82
|
+
/qc-review {UC-ID} ← review script đã sinh trước khi merge
|
|
83
|
+
📊 Living Docs: chạy /validate-traces (hoặc /sync) để push qc_status lên dashboard spec-module.
|
|
84
84
|
```
|