@anhth2/spec-driven-dev-plugin 0.11.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/debug.md +47 -7
- package/commands/define-product.md +47 -7
- package/commands/dev-gen-test.md +65 -17
- package/commands/dev-run-test.md +66 -18
- package/commands/dev-run-test.tmpl +1 -1
- package/commands/dev-smoke-test.md +47 -7
- package/commands/fix-bug.md +83 -13
- package/commands/fix-bug.tmpl +36 -6
- package/commands/generate-bdd.md +74 -21
- package/commands/generate-bdd.tmpl +9 -4
- package/commands/generate-code.md +118 -35
- package/commands/generate-code.tmpl +53 -18
- package/commands/generate-design-spec.md +47 -7
- package/commands/generate-prd.md +47 -7
- package/commands/generate-spec-manifest.md +47 -7
- package/commands/generate-tech-docs.md +234 -20
- package/commands/generate-tech-docs.tmpl +187 -13
- package/commands/learn.md +47 -7
- package/commands/map-testids.md +564 -0
- package/commands/map-testids.tmpl +81 -0
- package/commands/propose-scenario.md +78 -18
- package/commands/propose-scenario.tmpl +31 -11
- package/commands/qc-analyze.md +67 -12
- package/commands/qc-analyze.tmpl +20 -5
- package/commands/qc-design-test.md +51 -10
- package/commands/qc-design-test.tmpl +4 -3
- package/commands/qc-plan.md +50 -10
- package/commands/qc-plan.tmpl +3 -3
- package/commands/qc-report.md +60 -8
- package/commands/qc-report.tmpl +13 -1
- package/commands/qc-review.md +49 -9
- package/commands/qc-review.tmpl +2 -2
- package/commands/qc-run-test.md +75 -20
- package/commands/qc-run-test.tmpl +10 -3
- package/commands/refine-prd.md +47 -7
- package/commands/report-bug.md +63 -9
- package/commands/report-bug.tmpl +16 -2
- package/commands/review-code.md +47 -7
- package/commands/review-context.md +47 -7
- package/commands/review-tech-docs.md +50 -9
- package/commands/review-tech-docs.tmpl +3 -2
- package/commands/setup-ai-first.md +37 -4
- package/commands/setup-ai-first.tmpl +2 -2
- package/commands/sync.md +47 -11
- package/commands/sync.tmpl +12 -9
- package/commands/update-framework.md +35 -2
- package/commands/validate-traces.md +98 -40
- package/commands/validate-traces.tmpl +51 -33
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +47 -7
- package/core/commands/define-product.md +47 -7
- package/core/commands/dev-gen-test.md +65 -17
- package/core/commands/dev-run-test.md +66 -18
- package/core/commands/dev-smoke-test.md +47 -7
- package/core/commands/fix-bug.md +83 -13
- package/core/commands/generate-bdd.md +74 -21
- package/core/commands/generate-code.md +118 -35
- package/core/commands/generate-design-spec.md +47 -7
- package/core/commands/generate-prd.md +47 -7
- package/core/commands/generate-spec-manifest.md +47 -7
- package/core/commands/generate-tech-docs.md +234 -20
- package/core/commands/learn.md +47 -7
- package/core/commands/map-testids.md +564 -0
- package/core/commands/propose-scenario.md +78 -18
- package/core/commands/qc-analyze.md +67 -12
- package/core/commands/qc-design-test.md +51 -10
- package/core/commands/qc-plan.md +50 -10
- package/core/commands/qc-report.md +60 -8
- package/core/commands/qc-review.md +49 -9
- package/core/commands/qc-run-test.md +75 -20
- package/core/commands/refine-prd.md +47 -7
- package/core/commands/report-bug.md +63 -9
- package/core/commands/review-code.md +47 -7
- package/core/commands/review-context.md +47 -7
- package/core/commands/review-tech-docs.md +50 -9
- package/core/commands/setup-ai-first.md +37 -4
- package/core/commands/sync.md +47 -11
- package/core/commands/update-framework.md +35 -2
- package/core/commands/validate-traces.md +98 -40
- package/core/modules/qc-playwright/stack-profile.yaml +4 -3
- package/core/skills/code/SKILL.md +82 -9
- package/core/skills/debug/SKILL.md +117 -11
- package/core/skills/design-spec/SKILL.md +47 -7
- package/core/skills/discovery/SKILL.md +47 -7
- package/core/skills/prd/SKILL.md +70 -4
- package/core/skills/qc/qa-analyst/acceptance-criteria.md +5 -1
- package/core/skills/qc/qa-analyst/business-rules.md +6 -2
- package/core/skills/qc/qa-analyst/data-flow.md +6 -2
- package/core/skills/qc/qa-analyst/spec-breakdown.md +7 -3
- package/core/skills/qc/qa-designer/e2e/journey.md +1 -1
- package/core/skills/qc/qa-designer/exploratory/charter.md +2 -2
- package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +1 -1
- package/core/skills/qc/qa-designer/functional/api.md +1 -1
- package/core/skills/qc/qa-designer/functional/gui-feature.md +1 -1
- package/core/skills/qc/qa-designer/functional/gui-screen.md +1 -1
- package/core/skills/qc/qa-designer/integration/api.md +1 -1
- package/core/skills/qc/qa-designer/integration/db.md +1 -1
- package/core/skills/qc/qa-designer/integration/gui.md +1 -1
- package/core/skills/qc/qa-designer/integration/kafka.md +1 -1
- package/core/skills/qc/qa-designer/non-functional.md +1 -1
- package/core/skills/qc/qa-planner/test-plan.md +4 -4
- package/core/skills/qc/qa-runner/exploratory/session.md +2 -2
- package/core/skills/setup-ai-first/SKILL.md +35 -2
- package/core/skills/spec/SKILL.md +70 -4
- package/core/skills/test/SKILL.md +129 -16
- package/core/steps/context-loader.md +12 -5
- package/core/steps/report-footer.md +35 -2
- package/core/steps/trace-mirror.md +18 -10
- package/core/templates/project-context.yaml +27 -6
- package/docs/01-getting-started/core-concepts.md +7 -7
- package/docs/01-getting-started/installation.md +4 -2
- package/docs/01-getting-started/quickstart.md +1 -1
- package/docs/02-guides/README.md +1 -2
- package/docs/02-guides/developer/README.md +1 -1
- package/docs/02-guides/developer/bdd-and-trace.md +10 -8
- package/docs/02-guides/developer/commands.md +4 -4
- package/docs/02-guides/developer/scenarios.md +26 -14
- package/docs/02-guides/developer/workflow.md +81 -19
- package/docs/02-guides/product-owner/README.md +6 -4
- package/docs/02-guides/product-owner/commands.md +1 -1
- package/docs/02-guides/product-owner/scenarios.md +80 -1
- package/docs/02-guides/tester/README.md +13 -10
- package/docs/02-guides/tester/bug-reporting.md +2 -2
- package/docs/02-guides/tester/qc-automation.md +165 -0
- package/docs/02-guides/tester/reading-specs.md +4 -4
- package/docs/02-guides/tester/scenarios.md +5 -5
- package/docs/02-guides/tester/spec-manifest.md +17 -12
- package/docs/02-guides/tester/test-checklist.md +3 -3
- package/docs/02-guides/tester/workflow.md +12 -14
- package/docs/03-concepts/architecture.md +7 -4
- package/docs/03-concepts/pipeline.md +37 -12
- package/docs/03-concepts/traceability.md +19 -18
- package/docs/04-operations/README.md +1 -1
- package/docs/04-operations/bug-flow.md +46 -5
- package/docs/04-operations/sync-and-update.md +186 -24
- package/docs/05-reference/README.md +3 -0
- package/docs/05-reference/command-cheatsheet.md +147 -0
- package/docs/05-reference/commands.md +73 -70
- package/docs/05-reference/modules.md +4 -4
- package/docs/05-reference/trace-schema.md +23 -16
- package/docs/README.md +3 -5
- package/modules/qc-playwright/stack-profile.yaml +4 -3
- package/package.json +1 -1
- package/skills/code/SKILL.md +82 -9
- package/skills/debug/SKILL.md +117 -11
- package/skills/design-spec/SKILL.md +47 -7
- package/skills/discovery/SKILL.md +47 -7
- package/skills/prd/SKILL.md +70 -4
- package/skills/qc/qa-analyst/acceptance-criteria.md +5 -1
- package/skills/qc/qa-analyst/business-rules.md +6 -2
- package/skills/qc/qa-analyst/data-flow.md +6 -2
- package/skills/qc/qa-analyst/spec-breakdown.md +7 -3
- package/skills/qc/qa-designer/e2e/journey.md +1 -1
- package/skills/qc/qa-designer/exploratory/charter.md +2 -2
- package/skills/qc/qa-designer/exploratory/explore-to-functional.md +1 -1
- package/skills/qc/qa-designer/functional/api.md +1 -1
- package/skills/qc/qa-designer/functional/gui-feature.md +1 -1
- package/skills/qc/qa-designer/functional/gui-screen.md +1 -1
- package/skills/qc/qa-designer/integration/api.md +1 -1
- package/skills/qc/qa-designer/integration/db.md +1 -1
- package/skills/qc/qa-designer/integration/gui.md +1 -1
- package/skills/qc/qa-designer/integration/kafka.md +1 -1
- package/skills/qc/qa-designer/non-functional.md +1 -1
- package/skills/qc/qa-planner/test-plan.md +4 -4
- package/skills/qc/qa-runner/exploratory/session.md +2 -2
- package/skills/setup-ai-first/SKILL.md +35 -2
- package/skills/spec/SKILL.md +70 -4
- package/skills/test/SKILL.md +129 -16
- package/steps/context-loader.md +12 -5
- package/steps/report-footer.md +35 -2
- package/steps/trace-mirror.md +18 -10
- package/templates/project-context.yaml +27 -6
- package/docs/02-guides/qc-automation.md +0 -92
package/steps/context-loader.md
CHANGED
|
@@ -36,6 +36,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
36
36
|
- `paths.specs_dir` → BDD specs root
|
|
37
37
|
- `paths.prd_dir` → PRD documents root
|
|
38
38
|
- `paths.refinement_dir` → findings/review output dir
|
|
39
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
40
|
+
- `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
|
|
39
41
|
- `paths.product_definitions_dir` → product definitions root
|
|
40
42
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
41
43
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -48,6 +50,8 @@ If `paths` section is absent, use these defaults:
|
|
|
48
50
|
- `specs_dir` = `specs/bdd`
|
|
49
51
|
- `prd_dir` = `specs/prd`
|
|
50
52
|
- `refinement_dir` = `.agent/review`
|
|
53
|
+
- `qc_dir` = `docs`
|
|
54
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
51
55
|
- `product_definitions_dir` = `specs/product-definition`
|
|
52
56
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
53
57
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -73,7 +77,7 @@ If `services` section is present:
|
|
|
73
77
|
- If `$ARGUMENTS` contains a path, extract the segment after `prd_dir`
|
|
74
78
|
|
|
75
79
|
**2. Route to service** — if active domain matches a key in `services`:
|
|
76
|
-
- Override `paths.specs_dir` → `services.{domain}.specs_dir`
|
|
80
|
+
- Override `paths.specs_dir` → `services.{domain}.specs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, ALL BDD (web/app/**system**) is a shared cross-team artifact → leave `specs_dir` for step 4 to route to the spec repo; do NOT pin it per-service here.
|
|
77
81
|
- Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, the tech-design (API contract) is a cross-team artifact and must live in the shared spec repo (handled in step 4), so leave `tech_docs_dir` for step 4 to route — do NOT pin it per-service here.
|
|
78
82
|
- Store `active_service` = `services.{domain}.path`
|
|
79
83
|
- Store `active_service_module` = `services.{domain}.module`
|
|
@@ -84,6 +88,7 @@ If `services` section is present:
|
|
|
84
88
|
- Set `active_service = unresolved`
|
|
85
89
|
|
|
86
90
|
**4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
|
|
91
|
+
- Override `paths.specs_dir` → `{spec_source}/specs/bdd` — **always when `spec_source` is set.** All BDD (web/app/**system**) lives in the shared spec repo so every umbrella (FE/App/BE) reads the same scenarios; the FE tech-design gate + `/generate-code --phase=ui`/`--phase=integration` resolve the `system/` BDD here. *(Per-service `specs/bdd` only when there is no `spec_source`.)*
|
|
87
92
|
- Override `paths.prd_dir` → `{spec_source}/specs/prd`
|
|
88
93
|
- Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
|
|
89
94
|
- Override `paths.tech_docs_dir` → `{spec_source}/specs/tech-docs` — **always when `spec_source` is set** (step 2 no longer pins tech-docs per-service in this case). The tech-design IS the cross-team API contract: BE authors it here, and FE/App read it from the same spec submodule at `/generate-code --phase=integration`. *(Per-service tech-docs only happen when there is no `spec_source` — a pure multi-service BE repo with no shared spec module.)*
|
|
@@ -92,8 +97,10 @@ If `services` section is present:
|
|
|
92
97
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
93
98
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
94
99
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
100
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
101
|
+
- Override `paths.trace_dir` → `{spec_source}/.trace` — **always when `spec_source` is set.** Trace TSVs are consolidated in the spec repo (single authoritative location, no per-service split) so the PM/PO has one place to manage status. Code-side commands (`/generate-code`, `/dev-run-test`, `/qc-run-test`) run from `service_root` but **write their trace row into `{spec_source}/.trace`** — like they already push `feedback/` there. *(Per-service `.trace` only when there is no `spec_source`.)*
|
|
95
102
|
|
|
96
|
-
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**,
|
|
103
|
+
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, **all BDD (web/app/system)**, the **API contract (tech-docs)**, tester feedback, **and the `.trace/` coverage state** are all **cross-team artifacts** — they live in the **shared spec repo** so every umbrella (FE/App/BE) and the PM read one source via `/sync`. The service submodule holds only **code** (+ build/test tooling). `.trace/` and `feedback/` are the dev/QC **write areas** in the spec repo (the PRD/BDD/design-spec/tech-docs there stay read-only for dev/QC — only PO edits those). In single-service mode (no `spec_source`), everything defaults under the repo root — still one repo.
|
|
97
104
|
|
|
98
105
|
---
|
|
99
106
|
|
|
@@ -113,12 +120,12 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
|
|
|
113
120
|
|----------|--------|
|
|
114
121
|
| `conventions.test_command` | service's `conventions.test_command` |
|
|
115
122
|
| `conventions.build_command` | service's `conventions.build_command` |
|
|
116
|
-
| `paths.trace_dir` | `{active_service}/{service paths.trace_dir}`
|
|
117
|
-
| `paths.specs_dir` | `{active_service}/{service paths.specs_dir}`
|
|
123
|
+
| `paths.trace_dir` | **If `spec_source` is set → keep the Step 4 spec-repo route (`{spec_source}/.trace`); ignore any service-level `trace_dir`.** Only when there is no `spec_source`: `{active_service}/{service paths.trace_dir}` (default `{active_service}/.trace`). |
|
|
124
|
+
| `paths.specs_dir` | **If `spec_source` is set → keep the Step 4 spec-repo route (`{spec_source}/specs/bdd`); ignore any service-level `specs_dir`** (BDD is cross-team, never per-service in this mode). Only when there is no `spec_source`: `{active_service}/{service paths.specs_dir}` if set, else the Step 1.5 override. |
|
|
118
125
|
|
|
119
126
|
**3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
|
|
120
127
|
- Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
|
|
121
|
-
-
|
|
128
|
+
- **Source/test files** are written relative to `service_root`; **trace TSVs** are written to `{paths.trace_dir}` (the spec repo when `spec_source` is set — a cross-repo write, committed/pushed to the spec submodule like `feedback/`).
|
|
122
129
|
|
|
123
130
|
**4. If service config not found** — keep umbrella defaults, still set `service_root = {active_service}` (path anchor is always needed even without a config override).
|
|
124
131
|
|
package/steps/report-footer.md
CHANGED
|
@@ -20,6 +20,36 @@ Output Artifacts:
|
|
|
20
20
|
|
|
21
21
|
If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
|
|
22
22
|
|
|
23
|
+
## Pipeline Position
|
|
24
|
+
|
|
25
|
+
Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
|
|
26
|
+
so the user always sees where this command sits in the end-to-end flow:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Find the current command in this phase legend and mark **its** phase in the map above:
|
|
33
|
+
|
|
34
|
+
| Phase | Commands |
|
|
35
|
+
|-------|----------|
|
|
36
|
+
| Discovery | `/define-product` |
|
|
37
|
+
| PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
38
|
+
| Design Spec | `/generate-design-spec` |
|
|
39
|
+
| BDD | `/generate-bdd` · `/review-context` (BDD) |
|
|
40
|
+
| Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
|
|
41
|
+
| Code | `/generate-code` · `/review-code` |
|
|
42
|
+
| Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
|
|
43
|
+
| QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
|
|
44
|
+
| Trace Audit | `/validate-traces` |
|
|
45
|
+
|
|
46
|
+
For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
|
|
47
|
+
`Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
|
|
48
|
+
|
|
49
|
+
**Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
|
|
50
|
+
`/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
|
|
51
|
+
**omit the Pipeline line entirely** for these (do not force-fit them onto the map).
|
|
52
|
+
|
|
23
53
|
## Next Command Suggestion
|
|
24
54
|
|
|
25
55
|
Suggest the logical next command based on workflow phase:
|
|
@@ -61,7 +91,10 @@ Suggest the logical next command based on workflow phase:
|
|
|
61
91
|
Format the footer as:
|
|
62
92
|
```
|
|
63
93
|
---
|
|
64
|
-
Status
|
|
94
|
+
Status : {badge}
|
|
65
95
|
{Output Artifacts block}
|
|
66
|
-
|
|
96
|
+
Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
97
|
+
(review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
|
|
98
|
+
Next : {suggested command with example arguments}
|
|
67
99
|
```
|
|
100
|
+
*(Omit the `Pipeline` line for cross-cutting commands listed above.)*
|
package/steps/trace-mirror.md
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
# Refresh Living Docs panel mirror *(local, umbrella mode)*
|
|
2
2
|
|
|
3
3
|
*Skip entirely in single-service mode (no `services` and no `setup.spec_source`) — there
|
|
4
|
-
the
|
|
4
|
+
the repo's own `.trace/` IS the panel location, so nothing to mirror.*
|
|
5
5
|
|
|
6
|
-
After updating the authoritative
|
|
6
|
+
After updating the authoritative TSV(s) at `{paths.trace_dir}`:
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
**When `setup.spec_source` is set (consolidated trace — the common case):**
|
|
9
|
+
`{paths.trace_dir}` resolves to `{spec_source}/.trace` — the single authoritative location.
|
|
10
|
+
This command runs from `service_root`, so the write is **cross-repo into the spec submodule**;
|
|
11
|
+
commit/push the spec submodule for the trace update (same as `feedback/`).
|
|
12
|
+
1. Resolve `panel_mirror = ./.trace` at the **current workspace root**.
|
|
9
13
|
2. If `panel_mirror` resolves to a different path than `{paths.trace_dir}`, copy each
|
|
10
|
-
just-updated `{UC-ID}.tsv` → `{panel_mirror}/{
|
|
11
|
-
|
|
14
|
+
just-updated `{UC-ID}.tsv` → `{panel_mirror}/{UC-ID}.tsv` (create the dir; overwrite).
|
|
15
|
+
No per-service namespacing — there is one trace set; the owning service is carried in each
|
|
16
|
+
row's `@trace.service`.
|
|
17
|
+
|
|
18
|
+
**Legacy (no `spec_source` — per-service trace):**
|
|
19
|
+
Copy each just-updated `{UC-ID}.tsv` → `{panel_mirror}/{service-name}/{UC-ID}.tsv`
|
|
20
|
+
(namespaced by `active_service`).
|
|
12
21
|
|
|
13
22
|
This keeps the open workspace's Living Docs panel current **between syncs** — it is a
|
|
14
|
-
**local convenience mirror only**. The
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
after all sub-agents return — not inside each sub-agent.
|
|
23
|
+
**local convenience mirror only**. The merged `trace-report.json` (canonical, in
|
|
24
|
+
`{spec_source}/.living-docs/`) is rebuilt by `/sync` or `/validate-traces`. For orchestrated
|
|
25
|
+
commands, do this once in the orchestrator after all sub-agents return — not inside each
|
|
26
|
+
sub-agent.
|
|
@@ -36,6 +36,21 @@ paths:
|
|
|
36
36
|
prd_template: "specs/templates/prd.template.md"
|
|
37
37
|
refinement_dir: ".agent/review"
|
|
38
38
|
|
|
39
|
+
# QC's OWN analysis/design working docs (qc-analyze/plan/design-test outputs:
|
|
40
|
+
# REQUIREMENT_ANALYSIS.md, DOC_GAPS.md, TEST_PLAN.md, test-cases/*.Test.md).
|
|
41
|
+
# One subfolder per UC: {qc_dir}/{UC-ID}/. Default "docs" (the QC team's own
|
|
42
|
+
# convention), VISIBLE — not hidden under .agent/. NOTE: specs (PRD / .feature /
|
|
43
|
+
# design-spec) are NOT here — they come from the PO spec submodule (spec_source).
|
|
44
|
+
qc_dir: "docs"
|
|
45
|
+
|
|
46
|
+
# WHERE the qc-* commands LOAD their skills from (qa-analyst / qa-designer / qa-planner
|
|
47
|
+
# / qa-reviewer / qa-runner + DOC_GAPS.template.md). Default = the framework-bundled
|
|
48
|
+
# copy at .agent/skills/qc (works standalone). The QC team OWNS these skills in their
|
|
49
|
+
# canonical repo (ai-automation-qc-base) — point this at that repo/submodule (e.g.
|
|
50
|
+
# "qc-base/.claude/skills") so the skills evolve INDEPENDENTLY and are NOT overwritten
|
|
51
|
+
# by framework upgrade (--init / upgrade.sh rewrite only .agent/, never this path).
|
|
52
|
+
qc_skills_dir: ".agent/skills/qc"
|
|
53
|
+
|
|
39
54
|
# Product Definitions
|
|
40
55
|
product_definitions_dir: "specs/product-definition"
|
|
41
56
|
product_definition_template: "specs/templates/product-definition.template.md"
|
|
@@ -61,11 +76,14 @@ paths:
|
|
|
61
76
|
# Trace
|
|
62
77
|
trace_dir: ".trace"
|
|
63
78
|
|
|
64
|
-
# Tester feedback (written by /report-bug and /propose-scenario).
|
|
79
|
+
# Tester / QC feedback (written by /report-bug and /propose-scenario).
|
|
65
80
|
# These live in the SHARED spec repo so PO/Dev see them on their next /sync.
|
|
66
81
|
# In umbrella mode, context-loader auto-resolves them under {spec_source}/feedback/.
|
|
67
82
|
bug_reports_dir: "feedback/bug-reports"
|
|
68
83
|
bdd_proposals_dir: "feedback/bdd-proposals"
|
|
84
|
+
# PRD change requests (new requirement found in test, not covered by any AC) —
|
|
85
|
+
# written by /propose-scenario Case B so the PO can add/extend an AC then re-/generate-bdd.
|
|
86
|
+
prd_change_requests_dir: "feedback/prd-change-requests"
|
|
69
87
|
|
|
70
88
|
tech_stack:
|
|
71
89
|
language: "{{LANGUAGE}}" # e.g., Java 17 / TypeScript / C# / Go
|
|
@@ -93,19 +111,22 @@ domains:
|
|
|
93
111
|
# mode: umbrella # "umbrella" | "single" (default: single)
|
|
94
112
|
# spec_source: "{{SPEC_SUBMODULE_PATH}}" # path to PO spec submodule, e.g. "free-trial-specs"
|
|
95
113
|
#
|
|
96
|
-
# When spec_source is set, context-loader auto-derives
|
|
114
|
+
# When spec_source is set, context-loader auto-derives (ALL specs live in the spec repo;
|
|
115
|
+
# service submodules hold only code + .trace/):
|
|
116
|
+
# specs_dir → {spec_source}/specs/bdd # ALL BDD (web/app/system) — cross-team
|
|
97
117
|
# prd_dir → {spec_source}/specs/prd
|
|
98
118
|
# design_spec_dir → {spec_source}/specs/design-spec
|
|
99
|
-
# tech_docs_dir → {spec_source}/specs/tech-docs
|
|
119
|
+
# tech_docs_dir → {spec_source}/specs/tech-docs # BE API contract + FE tech-design
|
|
100
120
|
# domain_knowledge_dir → {spec_source}/specs/domain-knowledge
|
|
101
121
|
# (You can still override these manually in paths: section below.)
|
|
102
122
|
#
|
|
103
123
|
# services: # domain → service submodule routing
|
|
104
124
|
# {{DOMAIN_1}}: # must match @trace.domain in PRD files
|
|
105
|
-
# path: "{{SERVICE_SUBMODULE_DIR}}" # relative path to service submodule
|
|
125
|
+
# path: "{{SERVICE_SUBMODULE_DIR}}" # relative path to service submodule (code + .trace/)
|
|
106
126
|
# module: "{{STACK_MODULE}}" # e.g., java-spring, nextjs, flutter
|
|
107
|
-
#
|
|
108
|
-
# tech_docs_dir
|
|
127
|
+
# # NOTE: with spec_source set, BDD + tech-docs are cross-team and live in the spec repo —
|
|
128
|
+
# # do NOT pin per-service specs_dir / tech_docs_dir here (they would be ignored).
|
|
129
|
+
# # Per-service specs_dir / tech_docs_dir apply ONLY when there is no spec_source.
|
|
109
130
|
#
|
|
110
131
|
# IMPORTANT — per-service CLAUDE.md:
|
|
111
132
|
# Each service submodule should have its OWN CLAUDE.md ({path}/CLAUDE.md) defining its
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
[📚 Docs](../README.md) › [Guides](README.md) › QC Automation
|
|
2
|
-
|
|
3
|
-
# Hướng Dẫn QC Automation — Spec-Driven Dev
|
|
4
|
-
|
|
5
|
-
Pipeline QC automation **chính thức** của framework — được port từ agent của team QC (reference repo `ai-automation-qc-base`) vào ngay trong framework. Nó sinh và chạy automation **Playwright/pytest** từ BDD `.feature` chính thức, rồi ghi tín hiệu **`qc_status`** (authoritative) vào trace TSV → Living Docs.
|
|
6
|
-
|
|
7
|
-
## Mục Lục
|
|
8
|
-
|
|
9
|
-
- [Hai luồng test: dev self-check vs QC chính thức](#hai-luồng-test-dev-self-check-vs-qc-chính-thức)
|
|
10
|
-
- [Pipeline 6 bước](#pipeline-6-bước)
|
|
11
|
-
- [Stack — module qc-playwright](#stack--module-qc-playwright)
|
|
12
|
-
- [Trace join: qc_status đến Living Docs như thế nào](#trace-join-qc_status-đến-living-docs-như-thế-nào)
|
|
13
|
-
- [Entry point](#entry-point)
|
|
14
|
-
- [Skills theo layer](#skills-theo-layer)
|
|
15
|
-
|
|
16
|
-
## Hai Luồng Test: Dev Self-Check vs QC Chính Thức
|
|
17
|
-
|
|
18
|
-
Pipeline QC này **khác** với developer **self-check** (`/dev-gen-test`, `/dev-run-test`, `/dev-smoke-test`):
|
|
19
|
-
|
|
20
|
-
| Signal | Owner | Command | Ý nghĩa |
|
|
21
|
-
|--------|-------|---------|---------|
|
|
22
|
-
| `dev_selftest` | Dev | `/dev-run-test` | smoke check của riêng dev (KHÔNG authoritative) |
|
|
23
|
-
| `qc_status` | QC | `/qc-run-test` | kết quả QC automation **chính thức** |
|
|
24
|
-
|
|
25
|
-
Cả hai hiển thị **cạnh nhau** trong Living Docs; không cái nào ghi đè cái nào. `dev_selftest: pass` chỉ nghĩa "dev đã tự smoke qua"; coverage chính thức nằm ở `qc_status`.
|
|
26
|
-
|
|
27
|
-
## Pipeline 6 Bước
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
/qc-analyze → /qc-plan → /qc-design-test → /qc-review → /qc-run-test → /qc-report
|
|
31
|
-
(requirement (risk/plan (test-case (review (gen+run (report +
|
|
32
|
-
breakdown) + Q-for-dev) .Test.md) gate) Python → evidence)
|
|
33
|
-
qc_status)
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
| Command | Vai trò | Output |
|
|
37
|
-
|---------|---------|--------|
|
|
38
|
-
| `/qc-analyze` | bóc tách spec chính thức thành requirement + BR/AC + data-flow + `DOC_GAPS` | `{refinement_dir}/qc/{UC-ID}/` |
|
|
39
|
-
| `/qc-plan` | risk / what-if / questions-for-dev + test plan | `TEST_PLAN.md` |
|
|
40
|
-
| `/qc-design-test` | thiết kế test case (Markdown `.Test.md`), tag `@trace.verifies={UC-ID}-SC{N}` | `test-cases/` |
|
|
41
|
-
| `/qc-review` | cổng review hai chiều: review test case (sau design) và script (sau run) | findings |
|
|
42
|
-
| `/qc-run-test` | sinh + chạy Python pytest-playwright; **ghi `qc_status`** per scenario | `{trace_dir}/{UC-ID}.tsv` |
|
|
43
|
-
| `/qc-report` | report pytest-html + Playwright trace + evidence | `reports/<feature>/report.html` |
|
|
44
|
-
|
|
45
|
-
## Stack — Module qc-playwright
|
|
46
|
-
|
|
47
|
-
`/qc-run-test` và `/qc-report` dùng stack module `qc-playwright`
|
|
48
|
-
(`.agent/modules/qc-playwright/stack-profile.yaml`): **Python + pytest-playwright + Page
|
|
49
|
-
Object** (slim `BasePage`, 3-layer), **Playwright Trace + pytest-html** (KHÔNG Allure). Stack
|
|
50
|
-
này độc lập với module implementation của dev (java-spring, react, flutter, …).
|
|
51
|
-
|
|
52
|
-
Per-layer guides chi tiết nằm trong `skills/qc/<stage>/` (port từ skills của agent QC):
|
|
53
|
-
functional / integration / e2e / non-functional / exploratory.
|
|
54
|
-
|
|
55
|
-
## Trace Join: qc_status Đến Living Docs Như Thế Nào
|
|
56
|
-
|
|
57
|
-
1. `.feature` chính thức định nghĩa scenario là `@trace.scenario={UC-ID}-SC{N}`.
|
|
58
|
-
2. `/qc-design-test` ghi SC mà test case thuộc về; `/qc-run-test` tag mỗi pytest test
|
|
59
|
-
`# @trace.verifies={UC-ID}-SC{N}`.
|
|
60
|
-
3. `/qc-run-test` ghi `qc_status` (`pass|fail|skip|not_run`) + `qc_run_at` vào trace TSV của
|
|
61
|
-
service (authoritative), rồi refresh panel mirror local.
|
|
62
|
-
4. `/validate-traces` (hoặc `/sync`) tổng hợp các TSV thành report Living Docs tại
|
|
63
|
-
`{spec_source}/.living-docs/` — dashboard hiển thị `qc_status` cạnh `dev_selftest`.
|
|
64
|
-
|
|
65
|
-
## Entry Point
|
|
66
|
-
|
|
67
|
-
Pipeline QC bắt đầu ngay khi BDD của một UC được approved (`/review-context (BDD)` APPROVED):
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
/qc-analyze {UC-ID} → … → /qc-report {UC-ID} → /validate-traces {UC-ID}
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Skills Theo Layer
|
|
74
|
-
|
|
75
|
-
Các skill chi tiết theo từng giai đoạn QC nằm trong `skills/qc/`:
|
|
76
|
-
|
|
77
|
-
| Stage skill | Vai trò |
|
|
78
|
-
|---|---|
|
|
79
|
-
| `qa-analyst` | phân tích requirement, sinh `DOC_GAPS` |
|
|
80
|
-
| `qa-planner` | test plan, risk, questions-for-dev |
|
|
81
|
-
| `qa-designer` | thiết kế test case `.Test.md` theo layer (functional / integration / e2e / non-functional / exploratory) |
|
|
82
|
-
| `qa-reviewer` | cổng review test case và script |
|
|
83
|
-
| `qa-runner` | sinh + chạy Python pytest-playwright, sinh report (Playwright Trace + pytest-html) |
|
|
84
|
-
|
|
85
|
-
Mỗi skill **tự chứa** (self-contained) và có version frontmatter để theo dõi khi nâng cấp.
|
|
86
|
-
|
|
87
|
-
## Xem Thêm
|
|
88
|
-
|
|
89
|
-
- [Guide › Tester](tester/README.md) — vai trò tester, spec-manifest, `/report-bug`, `/propose-scenario`
|
|
90
|
-
- [Concepts › Traceability](../03-concepts/traceability.md) — trace TSV, dev_selftest vs qc_status
|
|
91
|
-
- [Reference › Modules](../05-reference/modules.md) — chi tiết module `qc-playwright`
|
|
92
|
-
- [Reference › Commands](../05-reference/commands.md) — danh mục đầy đủ mọi command
|