@anhth2/spec-driven-dev-plugin 0.11.0 → 0.12.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 +5 -0
- package/commands/define-product.md +5 -0
- package/commands/dev-gen-test.md +5 -0
- package/commands/dev-run-test.md +5 -0
- package/commands/dev-smoke-test.md +5 -0
- package/commands/fix-bug.md +41 -6
- package/commands/fix-bug.tmpl +36 -6
- package/commands/generate-bdd.md +9 -2
- package/commands/generate-bdd.tmpl +4 -2
- package/commands/generate-code.md +5 -0
- package/commands/generate-design-spec.md +5 -0
- package/commands/generate-prd.md +5 -0
- package/commands/generate-spec-manifest.md +5 -0
- package/commands/generate-tech-docs.md +5 -0
- package/commands/learn.md +5 -0
- package/commands/propose-scenario.md +36 -11
- package/commands/propose-scenario.tmpl +31 -11
- package/commands/qc-analyze.md +25 -5
- package/commands/qc-analyze.tmpl +20 -5
- package/commands/qc-design-test.md +8 -3
- package/commands/qc-design-test.tmpl +3 -3
- package/commands/qc-plan.md +8 -3
- package/commands/qc-plan.tmpl +3 -3
- package/commands/qc-report.md +18 -1
- package/commands/qc-report.tmpl +13 -1
- package/commands/qc-review.md +7 -2
- package/commands/qc-review.tmpl +2 -2
- package/commands/qc-run-test.md +13 -2
- package/commands/qc-run-test.tmpl +8 -2
- package/commands/refine-prd.md +5 -0
- package/commands/report-bug.md +21 -2
- package/commands/report-bug.tmpl +16 -2
- package/commands/review-code.md +5 -0
- package/commands/review-context.md +5 -0
- package/commands/review-tech-docs.md +5 -0
- package/commands/sync.md +12 -9
- package/commands/sync.tmpl +12 -9
- package/commands/validate-traces.md +15 -2
- package/commands/validate-traces.tmpl +10 -2
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +5 -0
- package/core/commands/define-product.md +5 -0
- package/core/commands/dev-gen-test.md +5 -0
- package/core/commands/dev-run-test.md +5 -0
- package/core/commands/dev-smoke-test.md +5 -0
- package/core/commands/fix-bug.md +41 -6
- package/core/commands/generate-bdd.md +9 -2
- package/core/commands/generate-code.md +5 -0
- package/core/commands/generate-design-spec.md +5 -0
- package/core/commands/generate-prd.md +5 -0
- package/core/commands/generate-spec-manifest.md +5 -0
- package/core/commands/generate-tech-docs.md +5 -0
- package/core/commands/learn.md +5 -0
- package/core/commands/propose-scenario.md +36 -11
- package/core/commands/qc-analyze.md +25 -5
- package/core/commands/qc-design-test.md +8 -3
- package/core/commands/qc-plan.md +8 -3
- package/core/commands/qc-report.md +18 -1
- package/core/commands/qc-review.md +7 -2
- package/core/commands/qc-run-test.md +13 -2
- package/core/commands/refine-prd.md +5 -0
- package/core/commands/report-bug.md +21 -2
- package/core/commands/review-code.md +5 -0
- package/core/commands/review-context.md +5 -0
- package/core/commands/review-tech-docs.md +5 -0
- package/core/commands/sync.md +12 -9
- package/core/commands/validate-traces.md +15 -2
- package/core/modules/qc-playwright/stack-profile.yaml +3 -3
- package/core/skills/code/SKILL.md +5 -0
- package/core/skills/debug/SKILL.md +5 -0
- package/core/skills/design-spec/SKILL.md +5 -0
- package/core/skills/discovery/SKILL.md +5 -0
- 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/test/SKILL.md +10 -0
- package/core/steps/context-loader.md +5 -0
- package/core/templates/project-context.yaml +19 -1
- package/docs/01-getting-started/installation.md +3 -1
- package/docs/02-guides/developer/commands.md +1 -1
- package/docs/02-guides/developer/workflow.md +2 -0
- package/docs/02-guides/qc-automation.md +66 -1
- package/docs/02-guides/tester/README.md +2 -0
- package/docs/02-guides/tester/bug-reporting.md +1 -1
- package/docs/02-guides/tester/workflow.md +4 -3
- package/docs/03-concepts/architecture.md +2 -0
- package/docs/03-concepts/pipeline.md +19 -6
- package/docs/03-concepts/traceability.md +2 -1
- package/docs/04-operations/bug-flow.md +45 -4
- package/docs/04-operations/sync-and-update.md +38 -1
- package/docs/05-reference/commands.md +11 -11
- package/docs/05-reference/modules.md +2 -2
- package/docs/05-reference/trace-schema.md +18 -12
- package/modules/qc-playwright/stack-profile.yaml +3 -3
- package/package.json +1 -1
- package/skills/code/SKILL.md +5 -0
- package/skills/debug/SKILL.md +5 -0
- package/skills/design-spec/SKILL.md +5 -0
- package/skills/discovery/SKILL.md +5 -0
- 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/test/SKILL.md +10 -0
- package/steps/context-loader.md +5 -0
- package/templates/project-context.yaml +19 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
# /propose-scenario — Propose a New BDD Scenario (Tester-Facing)
|
|
1
|
+
# /propose-scenario — Propose a New BDD Scenario (Tester & QC-Facing)
|
|
2
2
|
|
|
3
|
-
For **testers** who discover an edge case not covered by existing BDD.
|
|
4
|
-
into a **proposals area** for
|
|
3
|
+
For **testers and QC** who discover an edge case not covered by existing BDD (e.g. a `DOC_GAPS`
|
|
4
|
+
missing-coverage gap from `/qc-analyze`). Drafts a Gherkin scenario into a **proposals area** for
|
|
5
|
+
PO/Dev to review and promote.
|
|
5
6
|
|
|
6
7
|
**Does NOT edit the canonical `.feature` file.** BDD is owned by PO/Dev — this command only writes
|
|
7
8
|
a proposal. Promotion into the real BDD is a PO/Dev action.
|
|
@@ -134,6 +135,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
134
135
|
- `paths.specs_dir` → BDD specs root
|
|
135
136
|
- `paths.prd_dir` → PRD documents root
|
|
136
137
|
- `paths.refinement_dir` → findings/review output dir
|
|
138
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
139
|
+
- `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)
|
|
137
140
|
- `paths.product_definitions_dir` → product definitions root
|
|
138
141
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
139
142
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -146,6 +149,8 @@ If `paths` section is absent, use these defaults:
|
|
|
146
149
|
- `specs_dir` = `specs/bdd`
|
|
147
150
|
- `prd_dir` = `specs/prd`
|
|
148
151
|
- `refinement_dir` = `.agent/review`
|
|
152
|
+
- `qc_dir` = `docs`
|
|
153
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
149
154
|
- `product_definitions_dir` = `specs/product-definition`
|
|
150
155
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
151
156
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -190,6 +195,7 @@ If `services` section is present:
|
|
|
190
195
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
191
196
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
192
197
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
198
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
193
199
|
|
|
194
200
|
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
195
201
|
|
|
@@ -410,15 +416,28 @@ A BDD scenario must trace to a PRD acceptance criterion. Determine which case ap
|
|
|
410
416
|
→ This is a coverage gap. Proceed to draft the scenario (Step 3), mapped to that AC.
|
|
411
417
|
|
|
412
418
|
**Case B — behavior is NOT in any AC** (genuinely new requirement):
|
|
413
|
-
→
|
|
414
|
-
|
|
419
|
+
→ Do **not** draft a BDD proposal (a scenario would have nothing to trace to). Instead **write a
|
|
420
|
+
PRD change request file** so the PO actually sees it on `/sync` (do not just print it):
|
|
421
|
+
|
|
422
|
+
Write to `{paths.prd_change_requests_dir}/{UC-ID}-{slug}.md` (resolved to
|
|
423
|
+
`{spec_source}/feedback/prd-change-requests/` in umbrella mode; create dir if needed):
|
|
415
424
|
```
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
425
|
+
# PRD Change Request — {UC-ID}: {short title}
|
|
426
|
+
|
|
427
|
+
> ⚠️ New requirement found in test — NOT covered by any PRD AC (not a coverage gap).
|
|
428
|
+
| Field | Value |
|
|
429
|
+
|---|---|
|
|
430
|
+
| UC / Ticket | {UC-ID} |
|
|
431
|
+
| PRD | {prd_path} (v{prd_version}) |
|
|
432
|
+
| Source | {BUG-ID if any | tester/QC observation} |
|
|
433
|
+
| Requested by | tester/QC |
|
|
434
|
+
| Status | Open |
|
|
435
|
+
|
|
436
|
+
**Requested behavior:** {description}
|
|
437
|
+
**Suggested AC (draft for PO):** "{draft AC text}"
|
|
438
|
+
**Route to PO:** add/extend an AC in {prd_path} → `/refine-prd` → re-run `/generate-bdd` → dev `/generate-code`.
|
|
420
439
|
```
|
|
421
|
-
Then
|
|
440
|
+
Then go to Step 5 (handoff applies to this file too). Skip Step 3–4 (no BDD scenario for Case B).
|
|
422
441
|
|
|
423
442
|
If unsure which case → show the AC list and ask the tester which AC this maps to, or confirm it's new.
|
|
424
443
|
|
|
@@ -447,7 +466,13 @@ git push # → PO/Dev see it on their next /sync
|
|
|
447
466
|
```
|
|
448
467
|
|
|
449
468
|
- No push rights to the spec repo → open a PR / MR instead. Print this fallback.
|
|
450
|
-
- For a **PRD change request** (Case B),
|
|
469
|
+
- For a **PRD change request** (Case B), commit the request file instead:
|
|
470
|
+
```bash
|
|
471
|
+
cd {spec_source}
|
|
472
|
+
git add feedback/prd-change-requests/{UC-ID}-{slug}.md
|
|
473
|
+
git commit -m "qa(prd-change): {UC-ID} — {title}"
|
|
474
|
+
git push
|
|
475
|
+
```
|
|
451
476
|
|
|
452
477
|
> PO/Dev are notified through their normal routine: `/sync` lists newly-pulled proposals.
|
|
453
478
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
# /propose-scenario — Propose a New BDD Scenario (Tester-Facing)
|
|
1
|
+
# /propose-scenario — Propose a New BDD Scenario (Tester & QC-Facing)
|
|
2
2
|
|
|
3
|
-
For **testers** who discover an edge case not covered by existing BDD.
|
|
4
|
-
into a **proposals area** for
|
|
3
|
+
For **testers and QC** who discover an edge case not covered by existing BDD (e.g. a `DOC_GAPS`
|
|
4
|
+
missing-coverage gap from `/qc-analyze`). Drafts a Gherkin scenario into a **proposals area** for
|
|
5
|
+
PO/Dev to review and promote.
|
|
5
6
|
|
|
6
7
|
**Does NOT edit the canonical `.feature` file.** BDD is owned by PO/Dev — this command only writes
|
|
7
8
|
a proposal. Promotion into the real BDD is a PO/Dev action.
|
|
@@ -34,15 +35,28 @@ A BDD scenario must trace to a PRD acceptance criterion. Determine which case ap
|
|
|
34
35
|
→ This is a coverage gap. Proceed to draft the scenario (Step 3), mapped to that AC.
|
|
35
36
|
|
|
36
37
|
**Case B — behavior is NOT in any AC** (genuinely new requirement):
|
|
37
|
-
→
|
|
38
|
-
|
|
38
|
+
→ Do **not** draft a BDD proposal (a scenario would have nothing to trace to). Instead **write a
|
|
39
|
+
PRD change request file** so the PO actually sees it on `/sync` (do not just print it):
|
|
40
|
+
|
|
41
|
+
Write to `{paths.prd_change_requests_dir}/{UC-ID}-{slug}.md` (resolved to
|
|
42
|
+
`{spec_source}/feedback/prd-change-requests/` in umbrella mode; create dir if needed):
|
|
39
43
|
```
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
# PRD Change Request — {UC-ID}: {short title}
|
|
45
|
+
|
|
46
|
+
> ⚠️ New requirement found in test — NOT covered by any PRD AC (not a coverage gap).
|
|
47
|
+
| Field | Value |
|
|
48
|
+
|---|---|
|
|
49
|
+
| UC / Ticket | {UC-ID} |
|
|
50
|
+
| PRD | {prd_path} (v{prd_version}) |
|
|
51
|
+
| Source | {BUG-ID if any | tester/QC observation} |
|
|
52
|
+
| Requested by | tester/QC |
|
|
53
|
+
| Status | Open |
|
|
54
|
+
|
|
55
|
+
**Requested behavior:** {description}
|
|
56
|
+
**Suggested AC (draft for PO):** "{draft AC text}"
|
|
57
|
+
**Route to PO:** add/extend an AC in {prd_path} → `/refine-prd` → re-run `/generate-bdd` → dev `/generate-code`.
|
|
44
58
|
```
|
|
45
|
-
Then
|
|
59
|
+
Then go to Step 5 (handoff applies to this file too). Skip Step 3–4 (no BDD scenario for Case B).
|
|
46
60
|
|
|
47
61
|
If unsure which case → show the AC list and ask the tester which AC this maps to, or confirm it's new.
|
|
48
62
|
|
|
@@ -71,7 +85,13 @@ git push # → PO/Dev see it on their next /sync
|
|
|
71
85
|
```
|
|
72
86
|
|
|
73
87
|
- No push rights to the spec repo → open a PR / MR instead. Print this fallback.
|
|
74
|
-
- For a **PRD change request** (Case B),
|
|
88
|
+
- For a **PRD change request** (Case B), commit the request file instead:
|
|
89
|
+
```bash
|
|
90
|
+
cd {spec_source}
|
|
91
|
+
git add feedback/prd-change-requests/{UC-ID}-{slug}.md
|
|
92
|
+
git commit -m "qa(prd-change): {UC-ID} — {title}"
|
|
93
|
+
git push
|
|
94
|
+
```
|
|
75
95
|
|
|
76
96
|
> PO/Dev are notified through their normal routine: `/sync` lists newly-pulled proposals.
|
|
77
97
|
|
package/commands/qc-analyze.md
CHANGED
|
@@ -133,6 +133,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
133
133
|
- `paths.specs_dir` → BDD specs root
|
|
134
134
|
- `paths.prd_dir` → PRD documents root
|
|
135
135
|
- `paths.refinement_dir` → findings/review output dir
|
|
136
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
137
|
+
- `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)
|
|
136
138
|
- `paths.product_definitions_dir` → product definitions root
|
|
137
139
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
138
140
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -145,6 +147,8 @@ If `paths` section is absent, use these defaults:
|
|
|
145
147
|
- `specs_dir` = `specs/bdd`
|
|
146
148
|
- `prd_dir` = `specs/prd`
|
|
147
149
|
- `refinement_dir` = `.agent/review`
|
|
150
|
+
- `qc_dir` = `docs`
|
|
151
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
148
152
|
- `product_definitions_dir` = `specs/product-definition`
|
|
149
153
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
150
154
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -189,6 +193,7 @@ If `services` section is present:
|
|
|
189
193
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
190
194
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
191
195
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
196
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
192
197
|
|
|
193
198
|
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
194
199
|
|
|
@@ -405,7 +410,7 @@ Boundary vs `/qc-plan`: you answer *"what is the requirement?"*; qc-plan answers
|
|
|
405
410
|
the risk, what to ask dev?"*. When something is ambiguous/missing, record it as a gap and
|
|
406
411
|
hand off to qc-plan — never invent an answer.
|
|
407
412
|
|
|
408
|
-
## Skills (`
|
|
413
|
+
## Skills (`{paths.qc_skills_dir}/qa-analyst/`)
|
|
409
414
|
|
|
410
415
|
Load only the file for the step you are doing (each is self-contained):
|
|
411
416
|
- `spec-breakdown.md` — break a spec/PRD/user story into structure.
|
|
@@ -424,15 +429,29 @@ tests with `@trace.verifies` and write `qc_status` per scenario.
|
|
|
424
429
|
|
|
425
430
|
## DOC_GAPS (mandatory)
|
|
426
431
|
|
|
427
|
-
Always produce a gaps file following `
|
|
432
|
+
Always produce a gaps file following `{paths.qc_skills_dir}/qa-analyst/DOC_GAPS.template.md`:
|
|
428
433
|
- Each gap `GAP-xx`, classified MISSING / AMBIGUOUS / CONTRADICTORY / ASSUMPTION / OPEN QUESTION, with severity (🔴 Blocker → 🟢 Low) and the affected function/BR/AC.
|
|
429
434
|
- Never fabricate answers; mark assumptions as `ASSUMPTION` for PO/dev to confirm.
|
|
430
435
|
- Any `🔴 Blocker` still `Open` ⇒ the UC is not ready for qc-design-test — hand off to qc-plan.
|
|
436
|
+
- **Push genuine SPEC defects to the PO (not just keep them local).** A blocker that is a real
|
|
437
|
+
flaw in the official spec — `AMBIGUOUS` / `CONTRADICTORY` / `MISSING` in PRD/BDD — must reach
|
|
438
|
+
the PO via the feedback flow, not sit only in `DOC_GAPS.md`: file `/report-bug {UC-ID} {desc}`
|
|
439
|
+
(its BUG_FLOW classifies PRD vs BDD), or `/propose-scenario {UC-ID}` if the gap is missing test
|
|
440
|
+
coverage. `ASSUMPTION` / `OPEN QUESTION` gaps are confirmed via qc-plan's questions-for-dev — not filed as bugs.
|
|
431
441
|
|
|
432
442
|
## Output
|
|
433
443
|
|
|
434
|
-
Write
|
|
435
|
-
|
|
444
|
+
Write **exactly TWO files** under `{paths.qc_dir}/{UC-ID}/` — do **not** split the analysis
|
|
445
|
+
into one-file-per-step (no separate spec-breakdown / business-rules / data-flow / AC files):
|
|
446
|
+
|
|
447
|
+
1. **`{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md`** — the single consolidated analysis.
|
|
448
|
+
Sections in order: requirement breakdown → business-rule table (`BR-xx`) → data-flow →
|
|
449
|
+
acceptance-criteria (`AC-xx`), each `BR`/`AC` mapped to its owning `{UC-ID}-SC{N}`.
|
|
450
|
+
2. **`{paths.qc_dir}/{UC-ID}/DOC_GAPS.md`** — the gaps file (per `{paths.qc_skills_dir}/qa-analyst/DOC_GAPS.template.md`).
|
|
451
|
+
|
|
452
|
+
`{paths.qc_dir}` is a VISIBLE top-level folder in the QC repo (default `docs/`, **not** the
|
|
453
|
+
hidden `.agent/review/`) so the QC team can open and process the output easily. The official
|
|
454
|
+
spec stays in the PO spec submodule — do not write analysis there.
|
|
436
455
|
|
|
437
456
|
## Report
|
|
438
457
|
|
|
@@ -507,7 +526,8 @@ Next : {suggested command with example arguments}
|
|
|
507
526
|
|
|
508
527
|
```
|
|
509
528
|
/qc-analyze Complete — {UC-ID}
|
|
510
|
-
|
|
529
|
+
Files: {paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md + DOC_GAPS.md (2 files)
|
|
530
|
+
Gaps: {N} ({blockers} blocker) ← spec-defect blocker? → /report-bug {UC-ID} | coverage gap → /propose-scenario {UC-ID}
|
|
511
531
|
SC mapping: {M} BR/AC mapped to {K} scenarios
|
|
512
532
|
Next: /qc-plan {UC-ID} ← risk / what-if / questions-for-dev
|
|
513
533
|
(resolve 🔴 Blocker gaps with PO/Dev first)
|
package/commands/qc-analyze.tmpl
CHANGED
|
@@ -29,7 +29,7 @@ Boundary vs `/qc-plan`: you answer *"what is the requirement?"*; qc-plan answers
|
|
|
29
29
|
the risk, what to ask dev?"*. When something is ambiguous/missing, record it as a gap and
|
|
30
30
|
hand off to qc-plan — never invent an answer.
|
|
31
31
|
|
|
32
|
-
## Skills (`
|
|
32
|
+
## Skills (`{paths.qc_skills_dir}/qa-analyst/`)
|
|
33
33
|
|
|
34
34
|
Load only the file for the step you are doing (each is self-contained):
|
|
35
35
|
- `spec-breakdown.md` — break a spec/PRD/user story into structure.
|
|
@@ -48,15 +48,29 @@ tests with `@trace.verifies` and write `qc_status` per scenario.
|
|
|
48
48
|
|
|
49
49
|
## DOC_GAPS (mandatory)
|
|
50
50
|
|
|
51
|
-
Always produce a gaps file following `
|
|
51
|
+
Always produce a gaps file following `{paths.qc_skills_dir}/qa-analyst/DOC_GAPS.template.md`:
|
|
52
52
|
- Each gap `GAP-xx`, classified MISSING / AMBIGUOUS / CONTRADICTORY / ASSUMPTION / OPEN QUESTION, with severity (🔴 Blocker → 🟢 Low) and the affected function/BR/AC.
|
|
53
53
|
- Never fabricate answers; mark assumptions as `ASSUMPTION` for PO/dev to confirm.
|
|
54
54
|
- Any `🔴 Blocker` still `Open` ⇒ the UC is not ready for qc-design-test — hand off to qc-plan.
|
|
55
|
+
- **Push genuine SPEC defects to the PO (not just keep them local).** A blocker that is a real
|
|
56
|
+
flaw in the official spec — `AMBIGUOUS` / `CONTRADICTORY` / `MISSING` in PRD/BDD — must reach
|
|
57
|
+
the PO via the feedback flow, not sit only in `DOC_GAPS.md`: file `/report-bug {UC-ID} {desc}`
|
|
58
|
+
(its BUG_FLOW classifies PRD vs BDD), or `/propose-scenario {UC-ID}` if the gap is missing test
|
|
59
|
+
coverage. `ASSUMPTION` / `OPEN QUESTION` gaps are confirmed via qc-plan's questions-for-dev — not filed as bugs.
|
|
55
60
|
|
|
56
61
|
## Output
|
|
57
62
|
|
|
58
|
-
Write
|
|
59
|
-
|
|
63
|
+
Write **exactly TWO files** under `{paths.qc_dir}/{UC-ID}/` — do **not** split the analysis
|
|
64
|
+
into one-file-per-step (no separate spec-breakdown / business-rules / data-flow / AC files):
|
|
65
|
+
|
|
66
|
+
1. **`{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md`** — the single consolidated analysis.
|
|
67
|
+
Sections in order: requirement breakdown → business-rule table (`BR-xx`) → data-flow →
|
|
68
|
+
acceptance-criteria (`AC-xx`), each `BR`/`AC` mapped to its owning `{UC-ID}-SC{N}`.
|
|
69
|
+
2. **`{paths.qc_dir}/{UC-ID}/DOC_GAPS.md`** — the gaps file (per `{paths.qc_skills_dir}/qa-analyst/DOC_GAPS.template.md`).
|
|
70
|
+
|
|
71
|
+
`{paths.qc_dir}` is a VISIBLE top-level folder in the QC repo (default `docs/`, **not** the
|
|
72
|
+
hidden `.agent/review/`) so the QC team can open and process the output easily. The official
|
|
73
|
+
spec stays in the PO spec submodule — do not write analysis there.
|
|
60
74
|
|
|
61
75
|
## Report
|
|
62
76
|
|
|
@@ -64,7 +78,8 @@ breakdown, BR table, data-flow, AC list with SC mapping, and `DOC_GAPS.md`).
|
|
|
64
78
|
|
|
65
79
|
```
|
|
66
80
|
/qc-analyze Complete — {UC-ID}
|
|
67
|
-
|
|
81
|
+
Files: {paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md + DOC_GAPS.md (2 files)
|
|
82
|
+
Gaps: {N} ({blockers} blocker) ← spec-defect blocker? → /report-bug {UC-ID} | coverage gap → /propose-scenario {UC-ID}
|
|
68
83
|
SC mapping: {M} BR/AC mapped to {K} scenarios
|
|
69
84
|
Next: /qc-plan {UC-ID} ← risk / what-if / questions-for-dev
|
|
70
85
|
(resolve 🔴 Blocker gaps with PO/Dev first)
|
|
@@ -92,7 +92,7 @@ Wait for explicit "Y" or "N" from the user before continuing.
|
|
|
92
92
|
- "N" → stop and ask what the user wants to change.
|
|
93
93
|
|
|
94
94
|
|
|
95
|
-
*Note: For this command, the target in Step 1 is a UC-ID. Read the qc-analyze + qc-plan outputs from `{paths.
|
|
95
|
+
*Note: For this command, the target in Step 1 is a UC-ID. Read the qc-analyze + qc-plan outputs (`REQUIREMENT_ANALYSIS.md`, `DOC_GAPS.md`, `TEST_PLAN.md`) from `{paths.qc_dir}/{UC-ID}/` and the official `.feature` (with `@trace.scenario` per scenario).*
|
|
96
96
|
|
|
97
97
|
## Context
|
|
98
98
|
# Context Loader — Load All Project Context
|
|
@@ -133,6 +133,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
133
133
|
- `paths.specs_dir` → BDD specs root
|
|
134
134
|
- `paths.prd_dir` → PRD documents root
|
|
135
135
|
- `paths.refinement_dir` → findings/review output dir
|
|
136
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
137
|
+
- `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)
|
|
136
138
|
- `paths.product_definitions_dir` → product definitions root
|
|
137
139
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
138
140
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -145,6 +147,8 @@ If `paths` section is absent, use these defaults:
|
|
|
145
147
|
- `specs_dir` = `specs/bdd`
|
|
146
148
|
- `prd_dir` = `specs/prd`
|
|
147
149
|
- `refinement_dir` = `.agent/review`
|
|
150
|
+
- `qc_dir` = `docs`
|
|
151
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
148
152
|
- `product_definitions_dir` = `specs/product-definition`
|
|
149
153
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
150
154
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -189,6 +193,7 @@ If `services` section is present:
|
|
|
189
193
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
190
194
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
191
195
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
196
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
192
197
|
|
|
193
198
|
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
194
199
|
|
|
@@ -400,7 +405,7 @@ You are the **QC Designer** — stage 3. Produce/maintain test-case Markdown fil
|
|
|
400
405
|
(`.Test.md`) from the analyzed requirement + plan. Output feeds qc-run-test (Python) and
|
|
401
406
|
qc-review. You do **not** write Python.
|
|
402
407
|
|
|
403
|
-
## Skills — pick the layer, load ONE file (`
|
|
408
|
+
## Skills — pick the layer, load ONE file (`{paths.qc_skills_dir}/qa-designer/`)
|
|
404
409
|
|
|
405
410
|
| Layer | File |
|
|
406
411
|
|---|---|
|
|
@@ -429,7 +434,7 @@ qc-run-test write `qc_status` per scenario.
|
|
|
429
434
|
|
|
430
435
|
## Output
|
|
431
436
|
|
|
432
|
-
Write `.Test.md` files under `{paths.
|
|
437
|
+
Write `.Test.md` files under `{paths.qc_dir}/{UC-ID}/test-cases/`.
|
|
433
438
|
|
|
434
439
|
## Report
|
|
435
440
|
|
|
@@ -11,7 +11,7 @@ ported_from: ai-automation-qc-base
|
|
|
11
11
|
## Gate
|
|
12
12
|
{{include:steps/gate.md}}
|
|
13
13
|
|
|
14
|
-
*Note: For this command, the target in Step 1 is a UC-ID. Read the qc-analyze + qc-plan outputs from `{paths.
|
|
14
|
+
*Note: For this command, the target in Step 1 is a UC-ID. Read the qc-analyze + qc-plan outputs (`REQUIREMENT_ANALYSIS.md`, `DOC_GAPS.md`, `TEST_PLAN.md`) from `{paths.qc_dir}/{UC-ID}/` and the official `.feature` (with `@trace.scenario` per scenario).*
|
|
15
15
|
|
|
16
16
|
## Context
|
|
17
17
|
{{include:steps/context-loader.md}}
|
|
@@ -24,7 +24,7 @@ You are the **QC Designer** — stage 3. Produce/maintain test-case Markdown fil
|
|
|
24
24
|
(`.Test.md`) from the analyzed requirement + plan. Output feeds qc-run-test (Python) and
|
|
25
25
|
qc-review. You do **not** write Python.
|
|
26
26
|
|
|
27
|
-
## Skills — pick the layer, load ONE file (`
|
|
27
|
+
## Skills — pick the layer, load ONE file (`{paths.qc_skills_dir}/qa-designer/`)
|
|
28
28
|
|
|
29
29
|
| Layer | File |
|
|
30
30
|
|---|---|
|
|
@@ -53,7 +53,7 @@ qc-run-test write `qc_status` per scenario.
|
|
|
53
53
|
|
|
54
54
|
## Output
|
|
55
55
|
|
|
56
|
-
Write `.Test.md` files under `{paths.
|
|
56
|
+
Write `.Test.md` files under `{paths.qc_dir}/{UC-ID}/test-cases/`.
|
|
57
57
|
|
|
58
58
|
## Report
|
|
59
59
|
|
package/commands/qc-plan.md
CHANGED
|
@@ -92,7 +92,7 @@ Wait for explicit "Y" or "N" from the user before continuing.
|
|
|
92
92
|
- "N" → stop and ask what the user wants to change.
|
|
93
93
|
|
|
94
94
|
|
|
95
|
-
*Note: For this command, the target in Step 1 is a UC-ID. Read the qc-analyze output (
|
|
95
|
+
*Note: For this command, the target in Step 1 is a UC-ID. Read the qc-analyze output (`REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`) from `{paths.qc_dir}/{UC-ID}/` and the official `.feature` for the UC.*
|
|
96
96
|
|
|
97
97
|
## Context
|
|
98
98
|
# Context Loader — Load All Project Context
|
|
@@ -133,6 +133,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
133
133
|
- `paths.specs_dir` → BDD specs root
|
|
134
134
|
- `paths.prd_dir` → PRD documents root
|
|
135
135
|
- `paths.refinement_dir` → findings/review output dir
|
|
136
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
137
|
+
- `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)
|
|
136
138
|
- `paths.product_definitions_dir` → product definitions root
|
|
137
139
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
138
140
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -145,6 +147,8 @@ If `paths` section is absent, use these defaults:
|
|
|
145
147
|
- `specs_dir` = `specs/bdd`
|
|
146
148
|
- `prd_dir` = `specs/prd`
|
|
147
149
|
- `refinement_dir` = `.agent/review`
|
|
150
|
+
- `qc_dir` = `docs`
|
|
151
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
148
152
|
- `product_definitions_dir` = `specs/product-definition`
|
|
149
153
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
150
154
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -189,6 +193,7 @@ If `services` section is present:
|
|
|
189
193
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
190
194
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
191
195
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
196
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
192
197
|
|
|
193
198
|
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
194
199
|
|
|
@@ -401,7 +406,7 @@ risk analysis, what-if scenarios, test scope/strategy per layer, and `questions-
|
|
|
401
406
|
for any open/blocker gaps. You answer *"where is the risk, what must we ask?"* — you do not
|
|
402
407
|
design concrete test cases (that is qc-design-test).
|
|
403
408
|
|
|
404
|
-
## Skills (`
|
|
409
|
+
## Skills (`{paths.qc_skills_dir}/qa-planner/`)
|
|
405
410
|
|
|
406
411
|
- `test-plan.md` — self-contained: risk matrix, what-if, scope by test layer
|
|
407
412
|
(functional / integration / e2e / non-functional), entry/exit criteria, and the
|
|
@@ -409,7 +414,7 @@ design concrete test cases (that is qc-design-test).
|
|
|
409
414
|
|
|
410
415
|
## Output
|
|
411
416
|
|
|
412
|
-
Write the test plan to `{paths.
|
|
417
|
+
Write the test plan to `{paths.qc_dir}/{UC-ID}/TEST_PLAN.md`. Scope the plan to
|
|
413
418
|
the UC's scenarios (`{UC-ID}-SC{N}` from the `.feature`) so qc-design-test can design
|
|
414
419
|
cases per scenario.
|
|
415
420
|
|
package/commands/qc-plan.tmpl
CHANGED
|
@@ -11,7 +11,7 @@ ported_from: ai-automation-qc-base
|
|
|
11
11
|
## Gate
|
|
12
12
|
{{include:steps/gate.md}}
|
|
13
13
|
|
|
14
|
-
*Note: For this command, the target in Step 1 is a UC-ID. Read the qc-analyze output (
|
|
14
|
+
*Note: For this command, the target in Step 1 is a UC-ID. Read the qc-analyze output (`REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`) from `{paths.qc_dir}/{UC-ID}/` and the official `.feature` for the UC.*
|
|
15
15
|
|
|
16
16
|
## Context
|
|
17
17
|
{{include:steps/context-loader.md}}
|
|
@@ -25,7 +25,7 @@ risk analysis, what-if scenarios, test scope/strategy per layer, and `questions-
|
|
|
25
25
|
for any open/blocker gaps. You answer *"where is the risk, what must we ask?"* — you do not
|
|
26
26
|
design concrete test cases (that is qc-design-test).
|
|
27
27
|
|
|
28
|
-
## Skills (`
|
|
28
|
+
## Skills (`{paths.qc_skills_dir}/qa-planner/`)
|
|
29
29
|
|
|
30
30
|
- `test-plan.md` — self-contained: risk matrix, what-if, scope by test layer
|
|
31
31
|
(functional / integration / e2e / non-functional), entry/exit criteria, and the
|
|
@@ -33,7 +33,7 @@ design concrete test cases (that is qc-design-test).
|
|
|
33
33
|
|
|
34
34
|
## Output
|
|
35
35
|
|
|
36
|
-
Write the test plan to `{paths.
|
|
36
|
+
Write the test plan to `{paths.qc_dir}/{UC-ID}/TEST_PLAN.md`. Scope the plan to
|
|
37
37
|
the UC's scenarios (`{UC-ID}-SC{N}` from the `.feature`) so qc-design-test can design
|
|
38
38
|
cases per scenario.
|
|
39
39
|
|
package/commands/qc-report.md
CHANGED
|
@@ -133,6 +133,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
133
133
|
- `paths.specs_dir` → BDD specs root
|
|
134
134
|
- `paths.prd_dir` → PRD documents root
|
|
135
135
|
- `paths.refinement_dir` → findings/review output dir
|
|
136
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
137
|
+
- `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)
|
|
136
138
|
- `paths.product_definitions_dir` → product definitions root
|
|
137
139
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
138
140
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -145,6 +147,8 @@ If `paths` section is absent, use these defaults:
|
|
|
145
147
|
- `specs_dir` = `specs/bdd`
|
|
146
148
|
- `prd_dir` = `specs/prd`
|
|
147
149
|
- `refinement_dir` = `.agent/review`
|
|
150
|
+
- `qc_dir` = `docs`
|
|
151
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
148
152
|
- `product_definitions_dir` = `specs/product-definition`
|
|
149
153
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
150
154
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -189,6 +193,7 @@ If `services` section is present:
|
|
|
189
193
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
190
194
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
191
195
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
196
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
192
197
|
|
|
193
198
|
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
194
199
|
|
|
@@ -398,7 +403,7 @@ Proceed to the next step of the calling command.
|
|
|
398
403
|
|
|
399
404
|
You are the **QC Report** stage — turn the latest run into a shareable report + evidence.
|
|
400
405
|
|
|
401
|
-
## Skill (`
|
|
406
|
+
## Skill (`{paths.qc_skills_dir}/qa-runner/report/`)
|
|
402
407
|
|
|
403
408
|
- `report.md` — self-contained: pytest-html (`--html=reports/<feature>/report.html
|
|
404
409
|
--self-contained-html`) + Playwright Trace (`test-results/<nodeid>/trace.zip`, viewed via
|
|
@@ -411,6 +416,12 @@ You are the **QC Report** stage — turn the latest run into a shareable report
|
|
|
411
416
|
FAIL/SKIP has a trace + screenshot attached.
|
|
412
417
|
3. Summarize TOTAL / PASS / FAIL / SKIP; for each FAIL include the `show-trace` command and
|
|
413
418
|
whether it was classified script-bug or product-gap.
|
|
419
|
+
4. **Hand off product-gaps to the specs (prompted).** For every FAIL classified **product-gap**
|
|
420
|
+
(a real defect, impl ≠ spec — not a script-bug), print a ready-to-run
|
|
421
|
+
`/report-bug {UC-ID} {one-line expected-vs-actual}` so QC files it to the shared spec repo.
|
|
422
|
+
`/report-bug`'s BUG_FLOW then routes the root cause (Code / BDD / PRD / Design / Env). Never
|
|
423
|
+
fake-pass a product-gap — it stays FAIL in `qc_status` until fixed + re-run. **script-bugs are
|
|
424
|
+
NOT filed** (QC fixes the script and re-runs). List the commands; do not auto-create the reports.
|
|
414
425
|
|
|
415
426
|
## Report
|
|
416
427
|
|
|
@@ -487,5 +498,11 @@ Next : {suggested command with example arguments}
|
|
|
487
498
|
/qc-report Complete — {UC-ID}
|
|
488
499
|
Report: reports/<feature>/report.html (TOTAL {N} · PASS {p} · FAIL {f} · SKIP {s})
|
|
489
500
|
Trace : test-results/<nodeid>/trace.zip (python3 -m playwright show-trace <file>)
|
|
501
|
+
|
|
502
|
+
Product-gaps to file ({g}): ← run these so PO/Dev see them on /sync (script-bugs excluded)
|
|
503
|
+
/report-bug {UC-ID} {gap 1 — expected vs actual}
|
|
504
|
+
/report-bug {UC-ID} {gap 2 …}
|
|
505
|
+
(none → skip)
|
|
506
|
+
|
|
490
507
|
Next: /validate-traces {UC-ID} ← refresh Living Docs (qc_status), then create PR
|
|
491
508
|
```
|
package/commands/qc-report.tmpl
CHANGED
|
@@ -22,7 +22,7 @@ ported_from: ai-automation-qc-base
|
|
|
22
22
|
|
|
23
23
|
You are the **QC Report** stage — turn the latest run into a shareable report + evidence.
|
|
24
24
|
|
|
25
|
-
## Skill (`
|
|
25
|
+
## Skill (`{paths.qc_skills_dir}/qa-runner/report/`)
|
|
26
26
|
|
|
27
27
|
- `report.md` — self-contained: pytest-html (`--html=reports/<feature>/report.html
|
|
28
28
|
--self-contained-html`) + Playwright Trace (`test-results/<nodeid>/trace.zip`, viewed via
|
|
@@ -35,6 +35,12 @@ You are the **QC Report** stage — turn the latest run into a shareable report
|
|
|
35
35
|
FAIL/SKIP has a trace + screenshot attached.
|
|
36
36
|
3. Summarize TOTAL / PASS / FAIL / SKIP; for each FAIL include the `show-trace` command and
|
|
37
37
|
whether it was classified script-bug or product-gap.
|
|
38
|
+
4. **Hand off product-gaps to the specs (prompted).** For every FAIL classified **product-gap**
|
|
39
|
+
(a real defect, impl ≠ spec — not a script-bug), print a ready-to-run
|
|
40
|
+
`/report-bug {UC-ID} {one-line expected-vs-actual}` so QC files it to the shared spec repo.
|
|
41
|
+
`/report-bug`'s BUG_FLOW then routes the root cause (Code / BDD / PRD / Design / Env). Never
|
|
42
|
+
fake-pass a product-gap — it stays FAIL in `qc_status` until fixed + re-run. **script-bugs are
|
|
43
|
+
NOT filed** (QC fixes the script and re-runs). List the commands; do not auto-create the reports.
|
|
38
44
|
|
|
39
45
|
## Report
|
|
40
46
|
|
|
@@ -44,5 +50,11 @@ You are the **QC Report** stage — turn the latest run into a shareable report
|
|
|
44
50
|
/qc-report Complete — {UC-ID}
|
|
45
51
|
Report: reports/<feature>/report.html (TOTAL {N} · PASS {p} · FAIL {f} · SKIP {s})
|
|
46
52
|
Trace : test-results/<nodeid>/trace.zip (python3 -m playwright show-trace <file>)
|
|
53
|
+
|
|
54
|
+
Product-gaps to file ({g}): ← run these so PO/Dev see them on /sync (script-bugs excluded)
|
|
55
|
+
/report-bug {UC-ID} {gap 1 — expected vs actual}
|
|
56
|
+
/report-bug {UC-ID} {gap 2 …}
|
|
57
|
+
(none → skip)
|
|
58
|
+
|
|
47
59
|
Next: /validate-traces {UC-ID} ← refresh Living Docs (qc_status), then create PR
|
|
48
60
|
```
|
package/commands/qc-review.md
CHANGED
|
@@ -92,7 +92,7 @@ Wait for explicit "Y" or "N" from the user before continuing.
|
|
|
92
92
|
- "N" → stop and ask what the user wants to change.
|
|
93
93
|
|
|
94
94
|
|
|
95
|
-
*Note: For this command, the target in Step 1 is a UC-ID. Detect review mode from `$ARGUMENTS`/context: review test-case `.Test.md` (after design) or review Python scripts (after run). Read artifacts from `{paths.
|
|
95
|
+
*Note: For this command, the target in Step 1 is a UC-ID. Detect review mode from `$ARGUMENTS`/context: review test-case `.Test.md` (after design) or review Python scripts (after run). Read artifacts from `{paths.qc_dir}/{UC-ID}/` and the generated test/page-object source.*
|
|
96
96
|
|
|
97
97
|
## Context
|
|
98
98
|
# Context Loader — Load All Project Context
|
|
@@ -133,6 +133,8 @@ Read `.agent/project-context.yaml`. Extract and store:
|
|
|
133
133
|
- `paths.specs_dir` → BDD specs root
|
|
134
134
|
- `paths.prd_dir` → PRD documents root
|
|
135
135
|
- `paths.refinement_dir` → findings/review output dir
|
|
136
|
+
- `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
|
|
137
|
+
- `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)
|
|
136
138
|
- `paths.product_definitions_dir` → product definitions root
|
|
137
139
|
- `paths.domain_knowledge_dir` → domain knowledge root
|
|
138
140
|
- `paths.business_dictionary` → path to business-dictionary.md
|
|
@@ -145,6 +147,8 @@ If `paths` section is absent, use these defaults:
|
|
|
145
147
|
- `specs_dir` = `specs/bdd`
|
|
146
148
|
- `prd_dir` = `specs/prd`
|
|
147
149
|
- `refinement_dir` = `.agent/review`
|
|
150
|
+
- `qc_dir` = `docs`
|
|
151
|
+
- `qc_skills_dir` = `.agent/skills/qc`
|
|
148
152
|
- `product_definitions_dir` = `specs/product-definition`
|
|
149
153
|
- `domain_knowledge_dir` = `specs/domain-knowledge`
|
|
150
154
|
- `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
|
|
@@ -189,6 +193,7 @@ If `services` section is present:
|
|
|
189
193
|
- Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
|
|
190
194
|
- Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
|
|
191
195
|
- Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
|
|
196
|
+
- Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
|
|
192
197
|
|
|
193
198
|
> **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
|
|
194
199
|
|
|
@@ -403,7 +408,7 @@ You are the **QC Reviewer** — the shared review gate, run twice in the pipelin
|
|
|
403
408
|
Detect mode: if the target artifacts are `.Test.md` → test-case review; if Python test/PO
|
|
404
409
|
files exist for the UC and are newer → script review. If ambiguous, ask.
|
|
405
410
|
|
|
406
|
-
## Skills (`
|
|
411
|
+
## Skills (`{paths.qc_skills_dir}/qa-reviewer/`)
|
|
407
412
|
|
|
408
413
|
Pick by mode + layer, load ONE file:
|
|
409
414
|
- Test-case review: `test-case/{functional,e2e,integration,non-functional,exploratory}.md`
|
package/commands/qc-review.tmpl
CHANGED
|
@@ -11,7 +11,7 @@ ported_from: ai-automation-qc-base
|
|
|
11
11
|
## Gate
|
|
12
12
|
{{include:steps/gate.md}}
|
|
13
13
|
|
|
14
|
-
*Note: For this command, the target in Step 1 is a UC-ID. Detect review mode from `$ARGUMENTS`/context: review test-case `.Test.md` (after design) or review Python scripts (after run). Read artifacts from `{paths.
|
|
14
|
+
*Note: For this command, the target in Step 1 is a UC-ID. Detect review mode from `$ARGUMENTS`/context: review test-case `.Test.md` (after design) or review Python scripts (after run). Read artifacts from `{paths.qc_dir}/{UC-ID}/` and the generated test/page-object source.*
|
|
15
15
|
|
|
16
16
|
## Context
|
|
17
17
|
{{include:steps/context-loader.md}}
|
|
@@ -27,7 +27,7 @@ You are the **QC Reviewer** — the shared review gate, run twice in the pipelin
|
|
|
27
27
|
Detect mode: if the target artifacts are `.Test.md` → test-case review; if Python test/PO
|
|
28
28
|
files exist for the UC and are newer → script review. If ambiguous, ask.
|
|
29
29
|
|
|
30
|
-
## Skills (`
|
|
30
|
+
## Skills (`{paths.qc_skills_dir}/qa-reviewer/`)
|
|
31
31
|
|
|
32
32
|
Pick by mode + layer, load ONE file:
|
|
33
33
|
- Test-case review: `test-case/{functional,e2e,integration,non-functional,exploratory}.md`
|