@educa-corp/sdd-framework 0.1.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/bin/build.js +230 -0
- package/bin/index.js +609 -0
- package/commands/debug.md +835 -0
- package/commands/debug.tmpl +257 -0
- package/commands/define-product.md +746 -0
- package/commands/define-product.tmpl +191 -0
- package/commands/dev-gen-test.md +1015 -0
- package/commands/dev-gen-test.tmpl +490 -0
- package/commands/dev-run-test.md +749 -0
- package/commands/dev-run-test.tmpl +224 -0
- package/commands/dev-smoke-test.md +716 -0
- package/commands/dev-smoke-test.tmpl +217 -0
- package/commands/fix-bug.md +749 -0
- package/commands/fix-bug.tmpl +171 -0
- package/commands/generate-bdd.md +1144 -0
- package/commands/generate-bdd.tmpl +499 -0
- package/commands/generate-code.md +1038 -0
- package/commands/generate-code.tmpl +513 -0
- package/commands/generate-design-spec.md +1079 -0
- package/commands/generate-design-spec.tmpl +524 -0
- package/commands/generate-prd.md +945 -0
- package/commands/generate-prd.tmpl +166 -0
- package/commands/generate-spec-manifest.md +663 -0
- package/commands/generate-spec-manifest.tmpl +164 -0
- package/commands/generate-tech-docs.md +1249 -0
- package/commands/generate-tech-docs.tmpl +252 -0
- package/commands/learn.md +641 -0
- package/commands/learn.tmpl +63 -0
- package/commands/map-testids.md +580 -0
- package/commands/map-testids.tmpl +81 -0
- package/commands/propose-scenario.md +632 -0
- package/commands/propose-scenario.tmpl +133 -0
- package/commands/qc-analyze.md +611 -0
- package/commands/qc-analyze.tmpl +112 -0
- package/commands/qc-design-test.md +567 -0
- package/commands/qc-design-test.tmpl +68 -0
- package/commands/qc-plan.md +548 -0
- package/commands/qc-plan.tmpl +49 -0
- package/commands/qc-report.md +559 -0
- package/commands/qc-report.tmpl +60 -0
- package/commands/qc-review.md +552 -0
- package/commands/qc-review.tmpl +53 -0
- package/commands/qc-run-test.md +609 -0
- package/commands/qc-run-test.tmpl +84 -0
- package/commands/refine-prd.md +992 -0
- package/commands/refine-prd.tmpl +278 -0
- package/commands/report-bug.md +647 -0
- package/commands/report-bug.tmpl +148 -0
- package/commands/review-code.md +682 -0
- package/commands/review-code.tmpl +104 -0
- package/commands/review-context.md +1202 -0
- package/commands/review-context.tmpl +488 -0
- package/commands/review-tech-docs.md +871 -0
- package/commands/review-tech-docs.tmpl +372 -0
- package/commands/setup-ai-first.md +546 -0
- package/commands/setup-ai-first.tmpl +358 -0
- package/commands/sync.md +451 -0
- package/commands/sync.tmpl +351 -0
- package/commands/update-framework.md +251 -0
- package/commands/update-framework.tmpl +151 -0
- package/commands/validate-traces.md +928 -0
- package/commands/validate-traces.tmpl +429 -0
- package/core/FRAMEWORK_VERSION +1 -0
- package/core/commands/debug.md +835 -0
- package/core/commands/define-product.md +746 -0
- package/core/commands/dev-gen-test.md +1015 -0
- package/core/commands/dev-run-test.md +749 -0
- package/core/commands/dev-smoke-test.md +716 -0
- package/core/commands/fix-bug.md +749 -0
- package/core/commands/generate-bdd.md +1144 -0
- package/core/commands/generate-code.md +1038 -0
- package/core/commands/generate-design-spec.md +1079 -0
- package/core/commands/generate-prd.md +945 -0
- package/core/commands/generate-spec-manifest.md +663 -0
- package/core/commands/generate-tech-docs.md +1249 -0
- package/core/commands/learn.md +641 -0
- package/core/commands/map-testids.md +580 -0
- package/core/commands/propose-scenario.md +632 -0
- package/core/commands/qc-analyze.md +611 -0
- package/core/commands/qc-design-test.md +567 -0
- package/core/commands/qc-plan.md +548 -0
- package/core/commands/qc-report.md +559 -0
- package/core/commands/qc-review.md +552 -0
- package/core/commands/qc-run-test.md +609 -0
- package/core/commands/refine-prd.md +992 -0
- package/core/commands/report-bug.md +647 -0
- package/core/commands/review-code.md +682 -0
- package/core/commands/review-context.md +1202 -0
- package/core/commands/review-tech-docs.md +871 -0
- package/core/commands/setup-ai-first.md +546 -0
- package/core/commands/sync.md +451 -0
- package/core/commands/update-framework.md +251 -0
- package/core/commands/validate-traces.md +928 -0
- package/core/hooks/data-guard.js +141 -0
- package/core/hooks/settings.json +18 -0
- package/core/modules/android-compose/module.yaml +13 -0
- package/core/modules/android-compose/stack-profile.yaml +57 -0
- package/core/modules/angular/architecture-snippets/component-patterns.md +187 -0
- package/core/modules/angular/module.yaml +6 -0
- package/core/modules/angular/stack-profile.yaml +38 -0
- package/core/modules/context-engineering/architecture-snippets/context-design.md +119 -0
- package/core/modules/context-engineering/module.yaml +9 -0
- package/core/modules/context-engineering/stack-profile.yaml +61 -0
- package/core/modules/dotnet/architecture-snippets/clean-arch.md +160 -0
- package/core/modules/dotnet/module.yaml +6 -0
- package/core/modules/dotnet/stack-profile.yaml +50 -0
- package/core/modules/flutter/module.yaml +14 -0
- package/core/modules/flutter/stack-profile.yaml +59 -0
- package/core/modules/golang/architecture-snippets/domain-layout.md +283 -0
- package/core/modules/golang/module.yaml +6 -0
- package/core/modules/golang/stack-profile.yaml +40 -0
- package/core/modules/ios-swiftui/module.yaml +13 -0
- package/core/modules/ios-swiftui/stack-profile.yaml +55 -0
- package/core/modules/java-spring/architecture-snippets/layered-arch.md +201 -0
- package/core/modules/java-spring/module.yaml +15 -0
- package/core/modules/java-spring/stack-profile.yaml +28 -0
- package/core/modules/nextjs/architecture-snippets/app-router-patterns.md +269 -0
- package/core/modules/nextjs/module.yaml +14 -0
- package/core/modules/nextjs/stack-profile.yaml +74 -0
- package/core/modules/nuxt/module.yaml +14 -0
- package/core/modules/nuxt/stack-profile.yaml +58 -0
- package/core/modules/php-laravel/architecture-snippets/service-repository.md +302 -0
- package/core/modules/php-laravel/module.yaml +15 -0
- package/core/modules/php-laravel/stack-profile.yaml +56 -0
- package/core/modules/qc-playwright/stack-profile.yaml +66 -0
- package/core/modules/react/architecture-snippets/hooks-query-patterns.md +254 -0
- package/core/modules/react/module.yaml +14 -0
- package/core/modules/react/stack-profile.yaml +63 -0
- package/core/modules/react-native/module.yaml +14 -0
- package/core/modules/react-native/stack-profile.yaml +56 -0
- package/core/modules/vue/module.yaml +14 -0
- package/core/modules/vue/stack-profile.yaml +65 -0
- package/core/rules/data-protection.md +80 -0
- package/core/rules/workflow.md +44 -0
- package/core/skills/code/SKILL.md +19 -0
- package/core/skills/debug/SKILL.md +19 -0
- package/core/skills/design-spec/SKILL.md +11 -0
- package/core/skills/discovery/SKILL.md +14 -0
- package/core/skills/prd/SKILL.md +19 -0
- package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
- package/core/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
- package/core/skills/qc/qa-analyst/business-rules.md +59 -0
- package/core/skills/qc/qa-analyst/data-flow.md +64 -0
- package/core/skills/qc/qa-analyst/spec-breakdown.md +61 -0
- package/core/skills/qc/qa-designer/e2e/journey.md +41 -0
- package/core/skills/qc/qa-designer/exploratory/charter.md +68 -0
- package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
- package/core/skills/qc/qa-designer/functional/api.md +45 -0
- package/core/skills/qc/qa-designer/functional/gui-feature.md +46 -0
- package/core/skills/qc/qa-designer/functional/gui-screen.md +52 -0
- package/core/skills/qc/qa-designer/integration/api.md +42 -0
- package/core/skills/qc/qa-designer/integration/db.md +39 -0
- package/core/skills/qc/qa-designer/integration/gui.md +40 -0
- package/core/skills/qc/qa-designer/integration/kafka.md +40 -0
- package/core/skills/qc/qa-designer/non-functional.md +40 -0
- package/core/skills/qc/qa-planner/test-plan.md +120 -0
- package/core/skills/qc/qa-reviewer/script/e2e.md +87 -0
- package/core/skills/qc/qa-reviewer/script/exploratory.md +45 -0
- package/core/skills/qc/qa-reviewer/script/functional.md +101 -0
- package/core/skills/qc/qa-reviewer/script/integration.md +91 -0
- package/core/skills/qc/qa-reviewer/script/non-functional.md +126 -0
- package/core/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
- package/core/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
- package/core/skills/qc/qa-reviewer/test-case/functional.md +76 -0
- package/core/skills/qc/qa-reviewer/test-case/integration.md +69 -0
- package/core/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
- package/core/skills/qc/qa-runner/e2e.md +49 -0
- package/core/skills/qc/qa-runner/exploratory/session.md +36 -0
- package/core/skills/qc/qa-runner/functional/api.md +35 -0
- package/core/skills/qc/qa-runner/functional/gui-feature.md +51 -0
- package/core/skills/qc/qa-runner/functional/gui-screen.md +55 -0
- package/core/skills/qc/qa-runner/integration.md +47 -0
- package/core/skills/qc/qa-runner/non-functional.md +49 -0
- package/core/skills/qc/qa-runner/report/report.md +37 -0
- package/core/skills/setup-ai-first/SKILL.md +11 -0
- package/core/skills/spec/SKILL.md +19 -0
- package/core/skills/test/SKILL.md +18 -0
- package/core/steps/business-language.md +56 -0
- package/core/steps/capture-lesson.md +79 -0
- package/core/steps/context-loader.md +311 -0
- package/core/steps/gate.md +88 -0
- package/core/steps/report-footer.md +100 -0
- package/core/steps/review-fanout.md +159 -0
- package/core/steps/spawn-agent.md +129 -0
- package/core/steps/trace-mirror.md +26 -0
- package/core/templates/architecture.template.md +113 -0
- package/core/templates/design-spec.template.md +217 -0
- package/core/templates/feature.template +120 -0
- package/core/templates/platform-guide.template.md +145 -0
- package/core/templates/prd.template.md +224 -0
- package/core/templates/product-definition.template.md +188 -0
- package/core/templates/project-context.yaml +161 -0
- package/core/templates/tech-design.template.md +498 -0
- package/docs/01-getting-started/README.md +19 -0
- package/docs/01-getting-started/core-concepts.md +102 -0
- package/docs/01-getting-started/installation.md +156 -0
- package/docs/01-getting-started/quickstart.md +86 -0
- package/docs/02-guides/README.md +26 -0
- package/docs/02-guides/bdd-input-checklist.md +68 -0
- package/docs/02-guides/developer/README.md +49 -0
- package/docs/02-guides/developer/bdd-and-trace.md +126 -0
- package/docs/02-guides/developer/commands.md +76 -0
- package/docs/02-guides/developer/pr-checklist.md +16 -0
- package/docs/02-guides/developer/scenarios.md +460 -0
- package/docs/02-guides/developer/workflow.md +121 -0
- package/docs/02-guides/prd-input-checklist.md +94 -0
- package/docs/02-guides/product-owner/README.md +81 -0
- package/docs/02-guides/product-owner/commands.md +30 -0
- package/docs/02-guides/product-owner/handoff-checklist.md +42 -0
- package/docs/02-guides/product-owner/prd-writing-rules.md +45 -0
- package/docs/02-guides/product-owner/scenarios.md +438 -0
- package/docs/02-guides/tech-docs-input-checklist.md +109 -0
- package/docs/02-guides/tester/README.md +75 -0
- package/docs/02-guides/tester/bug-reporting.md +117 -0
- package/docs/02-guides/tester/qc-automation.md +165 -0
- package/docs/02-guides/tester/reading-specs.md +79 -0
- package/docs/02-guides/tester/scenarios.md +186 -0
- package/docs/02-guides/tester/spec-manifest.md +130 -0
- package/docs/02-guides/tester/test-checklist.md +31 -0
- package/docs/02-guides/tester/workflow.md +77 -0
- package/docs/03-concepts/README.md +20 -0
- package/docs/03-concepts/architecture.md +248 -0
- package/docs/03-concepts/mechanisms-explained.md +124 -0
- package/docs/03-concepts/pipeline.md +278 -0
- package/docs/03-concepts/traceability.md +152 -0
- package/docs/04-operations/README.md +33 -0
- package/docs/04-operations/bug-flow.md +364 -0
- package/docs/04-operations/publishing.md +154 -0
- package/docs/04-operations/sync-and-update.md +522 -0
- package/docs/05-reference/README.md +34 -0
- package/docs/05-reference/command-cheatsheet.md +147 -0
- package/docs/05-reference/commands.md +234 -0
- package/docs/05-reference/model-selection.md +74 -0
- package/docs/05-reference/modules.md +110 -0
- package/docs/05-reference/trace-schema.md +154 -0
- package/docs/06-commands/README.md +75 -0
- package/docs/06-commands/explain-debug.md +32 -0
- package/docs/06-commands/explain-define-product.md +43 -0
- package/docs/06-commands/explain-dev-gen-test.md +28 -0
- package/docs/06-commands/explain-dev-run-test.md +24 -0
- package/docs/06-commands/explain-dev-smoke-test.md +25 -0
- package/docs/06-commands/explain-fix-bug.md +28 -0
- package/docs/06-commands/explain-generate-bdd.md +45 -0
- package/docs/06-commands/explain-generate-code.md +53 -0
- package/docs/06-commands/explain-generate-design-spec.md +54 -0
- package/docs/06-commands/explain-generate-prd.md +45 -0
- package/docs/06-commands/explain-generate-spec-manifest.md +20 -0
- package/docs/06-commands/explain-generate-tech-docs.md +56 -0
- package/docs/06-commands/explain-learn.md +21 -0
- package/docs/06-commands/explain-map-testids.md +28 -0
- package/docs/06-commands/explain-propose-scenario.md +24 -0
- package/docs/06-commands/explain-qc-analyze.md +22 -0
- package/docs/06-commands/explain-qc-design-test.md +20 -0
- package/docs/06-commands/explain-qc-plan.md +21 -0
- package/docs/06-commands/explain-qc-report.md +23 -0
- package/docs/06-commands/explain-qc-review.md +24 -0
- package/docs/06-commands/explain-qc-run-test.md +27 -0
- package/docs/06-commands/explain-refine-prd.md +51 -0
- package/docs/06-commands/explain-report-bug.md +24 -0
- package/docs/06-commands/explain-review-code.md +45 -0
- package/docs/06-commands/explain-review-context.md +68 -0
- package/docs/06-commands/explain-review-tech-docs.md +45 -0
- package/docs/06-commands/explain-setup-ai-first.md +25 -0
- package/docs/06-commands/explain-sync.md +24 -0
- package/docs/06-commands/explain-update-framework.md +22 -0
- package/docs/06-commands/explain-validate-traces.md +25 -0
- package/docs/README.md +53 -0
- package/docs/t-sample.md +826 -0
- package/hooks/data-guard.js +141 -0
- package/hooks/settings.json +18 -0
- package/modules/android-compose/module.yaml +13 -0
- package/modules/android-compose/stack-profile.yaml +57 -0
- package/modules/angular/architecture-snippets/component-patterns.md +187 -0
- package/modules/angular/module.yaml +6 -0
- package/modules/angular/stack-profile.yaml +38 -0
- package/modules/context-engineering/architecture-snippets/context-design.md +119 -0
- package/modules/context-engineering/module.yaml +9 -0
- package/modules/context-engineering/stack-profile.yaml +61 -0
- package/modules/dotnet/architecture-snippets/clean-arch.md +160 -0
- package/modules/dotnet/module.yaml +6 -0
- package/modules/dotnet/stack-profile.yaml +50 -0
- package/modules/flutter/module.yaml +14 -0
- package/modules/flutter/stack-profile.yaml +59 -0
- package/modules/golang/architecture-snippets/domain-layout.md +283 -0
- package/modules/golang/module.yaml +6 -0
- package/modules/golang/stack-profile.yaml +40 -0
- package/modules/ios-swiftui/module.yaml +13 -0
- package/modules/ios-swiftui/stack-profile.yaml +55 -0
- package/modules/java-spring/architecture-snippets/layered-arch.md +201 -0
- package/modules/java-spring/module.yaml +15 -0
- package/modules/java-spring/stack-profile.yaml +28 -0
- package/modules/nextjs/architecture-snippets/app-router-patterns.md +269 -0
- package/modules/nextjs/module.yaml +14 -0
- package/modules/nextjs/stack-profile.yaml +74 -0
- package/modules/nuxt/module.yaml +14 -0
- package/modules/nuxt/stack-profile.yaml +58 -0
- package/modules/php-laravel/architecture-snippets/service-repository.md +302 -0
- package/modules/php-laravel/module.yaml +15 -0
- package/modules/php-laravel/stack-profile.yaml +56 -0
- package/modules/qc-playwright/stack-profile.yaml +66 -0
- package/modules/react/architecture-snippets/hooks-query-patterns.md +254 -0
- package/modules/react/module.yaml +14 -0
- package/modules/react/stack-profile.yaml +63 -0
- package/modules/react-native/module.yaml +14 -0
- package/modules/react-native/stack-profile.yaml +56 -0
- package/modules/vue/module.yaml +14 -0
- package/modules/vue/stack-profile.yaml +65 -0
- package/package.json +49 -0
- package/readme.txt +1 -0
- package/rules/data-protection.md +80 -0
- package/rules/workflow.md +44 -0
- package/scripts/init.sh +49 -0
- package/scripts/migrate-specs.js +258 -0
- package/scripts/rename-prd-files.js +174 -0
- package/scripts/upgrade.sh +94 -0
- package/skills/code/SKILL.md +19 -0
- package/skills/code/SKILL.tmpl +19 -0
- package/skills/debug/SKILL.md +19 -0
- package/skills/debug/SKILL.tmpl +19 -0
- package/skills/design-spec/SKILL.md +11 -0
- package/skills/design-spec/SKILL.tmpl +11 -0
- package/skills/discovery/SKILL.md +14 -0
- package/skills/discovery/SKILL.tmpl +14 -0
- package/skills/prd/SKILL.md +19 -0
- package/skills/prd/SKILL.tmpl +19 -0
- package/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
- package/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
- package/skills/qc/qa-analyst/business-rules.md +59 -0
- package/skills/qc/qa-analyst/data-flow.md +64 -0
- package/skills/qc/qa-analyst/spec-breakdown.md +61 -0
- package/skills/qc/qa-designer/e2e/journey.md +41 -0
- package/skills/qc/qa-designer/exploratory/charter.md +68 -0
- package/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
- package/skills/qc/qa-designer/functional/api.md +45 -0
- package/skills/qc/qa-designer/functional/gui-feature.md +46 -0
- package/skills/qc/qa-designer/functional/gui-screen.md +52 -0
- package/skills/qc/qa-designer/integration/api.md +42 -0
- package/skills/qc/qa-designer/integration/db.md +39 -0
- package/skills/qc/qa-designer/integration/gui.md +40 -0
- package/skills/qc/qa-designer/integration/kafka.md +40 -0
- package/skills/qc/qa-designer/non-functional.md +40 -0
- package/skills/qc/qa-planner/test-plan.md +120 -0
- package/skills/qc/qa-reviewer/script/e2e.md +87 -0
- package/skills/qc/qa-reviewer/script/exploratory.md +45 -0
- package/skills/qc/qa-reviewer/script/functional.md +101 -0
- package/skills/qc/qa-reviewer/script/integration.md +91 -0
- package/skills/qc/qa-reviewer/script/non-functional.md +126 -0
- package/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
- package/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
- package/skills/qc/qa-reviewer/test-case/functional.md +76 -0
- package/skills/qc/qa-reviewer/test-case/integration.md +69 -0
- package/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
- package/skills/qc/qa-runner/e2e.md +49 -0
- package/skills/qc/qa-runner/exploratory/session.md +36 -0
- package/skills/qc/qa-runner/functional/api.md +35 -0
- package/skills/qc/qa-runner/functional/gui-feature.md +51 -0
- package/skills/qc/qa-runner/functional/gui-screen.md +55 -0
- package/skills/qc/qa-runner/integration.md +47 -0
- package/skills/qc/qa-runner/non-functional.md +49 -0
- package/skills/qc/qa-runner/report/report.md +37 -0
- package/skills/setup-ai-first/SKILL.md +11 -0
- package/skills/setup-ai-first/SKILL.tmpl +11 -0
- package/skills/spec/SKILL.md +19 -0
- package/skills/spec/SKILL.tmpl +19 -0
- package/skills/test/SKILL.md +18 -0
- package/skills/test/SKILL.tmpl +18 -0
- package/steps/business-language.md +56 -0
- package/steps/capture-lesson.md +79 -0
- package/steps/context-loader.md +311 -0
- package/steps/gate.md +88 -0
- package/steps/report-footer.md +100 -0
- package/steps/review-fanout.md +159 -0
- package/steps/spawn-agent.md +129 -0
- package/steps/trace-mirror.md +26 -0
- package/templates/architecture.template.md +113 -0
- package/templates/design-spec.template.md +217 -0
- package/templates/feature.template +120 -0
- package/templates/platform-guide.template.md +145 -0
- package/templates/prd.template.md +224 -0
- package/templates/product-definition.template.md +188 -0
- package/templates/project-context.yaml +161 -0
- package/templates/tech-design.template.md +498 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Dẫn dắt product discovery cho một feature mới qua Q&A có cấu trúc. Trigger when: "/define-product", "khám phá tính năng", "define new feature", "start new feature", "product discovery", "tôi muốn build tính năng mới", "let's define a feature", "begin feature discovery".
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /define-product — Feature Discovery (Q&A theo phase)
|
|
6
|
+
|
|
7
|
+
Lệnh này thực thi **y hệt** `commands/define-product.md` — không nhân bản logic ở đây để tránh lệch cấu trúc / phase / path output.
|
|
8
|
+
|
|
9
|
+
`commands/define-product.md` dẫn PO qua các phase Q&A có checkpoint:
|
|
10
|
+
Knowledge Sync → Feature Definition (Context/Problem/Goal/Actor/In&Out Scope/User Story/Phụ thuộc liên service) → User Flow (kèm Edge Cases) → Clarification Log → Business Rules → Business Logic → Acceptance Criteria → Validation Report.
|
|
11
|
+
|
|
12
|
+
Output ghi `{paths.product_definitions_dir}/{TICKET-ID}-{slug}.md` theo `templates/product-definition.template.md` — input cho `/generate-prd`.
|
|
13
|
+
|
|
14
|
+
→ **Đọc và tuân theo `commands/define-product.md`** với cùng `$ARGUMENTS`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Sinh PRD từ một product definition, hoặc phân tích một PRD có sẵn qua 4 lăng kính review (QA, DEV, SA, PO) để tìm gap và rủi ro. Trigger when: "/generate-prd", "/refine-prd", "tạo PRD", "generate PRD", "phân tích PRD", "review PRD", "refine PRD", "PRD có vấn đề gì không", "check PRD quality".
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# PRD Skills — Generate & Refine
|
|
6
|
+
|
|
7
|
+
Skill này xử lý `/generate-prd` và `/refine-prd`. Để **không lệch logic/schema**, skill KHÔNG nhân bản — mỗi lệnh thực thi **y hệt** command tương ứng.
|
|
8
|
+
|
|
9
|
+
## /generate-prd — Sinh Product Requirements Document
|
|
10
|
+
|
|
11
|
+
→ **Đọc và tuân theo `commands/generate-prd.md`** với cùng `$ARGUMENTS`.
|
|
12
|
+
|
|
13
|
+
Command lo: guard discovery completed · phân giải API Source (existing/greenfield/partner) · Terminology Map · map §1c "Phụ thuộc liên service" + §4b Wireframe · slug kế thừa · template canonical (`templates/prd.template.md`) · Change Log rolling-window.
|
|
14
|
+
|
|
15
|
+
## /refine-prd — Phân tích PRD qua 4 lăng kính review
|
|
16
|
+
|
|
17
|
+
→ **Đọc và tuân theo `commands/refine-prd.md`** với cùng `$ARGUMENTS`.
|
|
18
|
+
|
|
19
|
+
Command lo: 4 lăng kính fan-out đa sub-agent + completeness-critic (findings đầy đủ 1 lần chạy) · schema findings đầy đủ (`uc_id`, `quote`, `auto_fixable`) cho Review Board · Resume Mode (apply → bump version → reset draft → changelog).
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Sinh PRD từ một product definition, hoặc phân tích một PRD có sẵn qua 4 lăng kính review (QA, DEV, SA, PO) để tìm gap và rủi ro. Trigger when: "/generate-prd", "/refine-prd", "tạo PRD", "generate PRD", "phân tích PRD", "review PRD", "refine PRD", "PRD có vấn đề gì không", "check PRD quality".
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# PRD Skills — Generate & Refine
|
|
6
|
+
|
|
7
|
+
Skill này xử lý `/generate-prd` và `/refine-prd`. Để **không lệch logic/schema**, skill KHÔNG nhân bản — mỗi lệnh thực thi **y hệt** command tương ứng.
|
|
8
|
+
|
|
9
|
+
## /generate-prd — Sinh Product Requirements Document
|
|
10
|
+
|
|
11
|
+
→ **Đọc và tuân theo `commands/generate-prd.md`** với cùng `$ARGUMENTS`.
|
|
12
|
+
|
|
13
|
+
Command lo: guard discovery completed · phân giải API Source (existing/greenfield/partner) · Terminology Map · map §1c "Phụ thuộc liên service" + §4b Wireframe · slug kế thừa · template canonical (`templates/prd.template.md`) · Change Log rolling-window.
|
|
14
|
+
|
|
15
|
+
## /refine-prd — Phân tích PRD qua 4 lăng kính review
|
|
16
|
+
|
|
17
|
+
→ **Đọc và tuân theo `commands/refine-prd.md`** với cùng `$ARGUMENTS`.
|
|
18
|
+
|
|
19
|
+
Command lo: 4 lăng kính fan-out đa sub-agent + completeness-critic (findings đầy đủ 1 lần chạy) · schema findings đầy đủ (`uc_id`, `quote`, `auto_fixable`) cho Review Board · Resume Mode (apply → bump version → reset draft → changelog).
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.1
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Gap Analysis – <FEATURE>
|
|
8
|
+
|
|
9
|
+
> File ghi lại các **khoảng trống của tài liệu** mà `qa-analyst` phát hiện sau khi
|
|
10
|
+
> phân tích. Là đầu vào để hỏi dev/BA và cho `qa-planner`. Mỗi gap có ID `GAP-xx`
|
|
11
|
+
> để business rule (BR-xx), acceptance criteria (AC-xx) và test case trace ngược về.
|
|
12
|
+
|
|
13
|
+
| Trường | Giá trị |
|
|
14
|
+
|---|---|
|
|
15
|
+
| Feature | `<FEATURE>` |
|
|
16
|
+
| Project / Service | `<project or service name / domain>` |
|
|
17
|
+
| Tài liệu nguồn | `<đường dẫn / link PRD / user story>` |
|
|
18
|
+
| Người phân tích | qa-analyst |
|
|
19
|
+
| Ngày phân tích | `<YYYY-MM-DD>` |
|
|
20
|
+
| Tổng số gap | `<N>` (Blocker: x · High: y · Medium: z · Low: w) |
|
|
21
|
+
| Trạng thái chung | 🔴 Blocked / 🟡 Cần làm rõ / 🟢 Đủ rõ để thiết kế TC |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Bảng Gap
|
|
26
|
+
|
|
27
|
+
| ID | Loại | Mô tả gap | Vị trí (mục/nguồn) | Ảnh hưởng (chức năng / BR / AC) | Mức độ | Người trả lời | Trạng thái | Câu trả lời |
|
|
28
|
+
|---|---|---|---|---|---|---|---|---|
|
|
29
|
+
| GAP-01 | MISSING | … | spec §x | chức năng A / BR-02 | 🔴 Blocker | Dev/BA | Open | — |
|
|
30
|
+
| GAP-02 | AMBIGUOUS | … | mockup màn hình Y | AC-03 | 🟠 High | BA | Open | — |
|
|
31
|
+
| GAP-03 | CONTRADICTORY | … | §2 vs §5 | BR-04 | 🟠 High | BA | Open | — |
|
|
32
|
+
| GAP-04 | ASSUMPTION | … (giả định AI tự đưa, cần xác nhận) | — | chức năng B | 🟡 Medium | Dev | Open | — |
|
|
33
|
+
|
|
34
|
+
### Loại gap
|
|
35
|
+
- **MISSING** – thông tin/chức năng/field/rule chưa được mô tả.
|
|
36
|
+
- **AMBIGUOUS** – mô tả mơ hồ, có ≥ 2 cách hiểu.
|
|
37
|
+
- **CONTRADICTORY** – các phần tài liệu mâu thuẫn nhau.
|
|
38
|
+
- **ASSUMPTION** – giả định do qa-analyst tự suy ra, cần dev/BA xác nhận.
|
|
39
|
+
- **OPEN QUESTION** – câu hỏi mở cần trả lời trước khi thiết kế/triển khai.
|
|
40
|
+
|
|
41
|
+
### Mức độ
|
|
42
|
+
🔴 Blocker (chặn thiết kế TC) · 🟠 High · 🟡 Medium · 🟢 Low
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Quy ước cập nhật
|
|
47
|
+
- `qa-analyst` tạo & điền gap khi phân tích; **không tự bịa câu trả lời** cho gap Blocker.
|
|
48
|
+
- Khi có phản hồi dev/BA: điền cột *Câu trả lời*, đổi *Trạng thái* → `Answered`.
|
|
49
|
+
- Còn gap 🔴 Blocker `Open` ⇒ **chưa** chuyển sang `qa-designer`; đẩy sang `qa-planner`
|
|
50
|
+
(skill `questions-for-dev`) để chốt câu hỏi.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## ⚠️ Checklist bắt buộc trước khi lưu file
|
|
55
|
+
|
|
56
|
+
Trước khi lưu `DOC_GAPS.md`, kiểm tra **từng hàng** trong bảng gap:
|
|
57
|
+
|
|
58
|
+
- [ ] **9 cột đủ** – đúng thứ tự: `ID | Loại | Mô tả gap | Vị trí (mục/nguồn) | Ảnh hưởng (chức năng / BR / AC) | Mức độ | Người trả lời | Trạng thái | Câu trả lời`
|
|
59
|
+
- [ ] **Cột Vị trí không rỗng** – phải có tham chiếu cụ thể đến mục trong tài liệu nguồn (vd `§3 UC4 BR25`, `Appendix B loại 7`, `§4.b Screen 3`). Đây là cột hay bị bỏ thiếu nhất → gây lệch toàn bộ cột sau.
|
|
60
|
+
- [ ] **Cột Ảnh hưởng = BR/AC references** – KHÔNG phải mức độ severity. Ví dụ đúng: `BR25, BR26 / AC-F01-33`. Nếu thấy "Blocker" / "High" ở đây → đang bị lệch cột.
|
|
61
|
+
- [ ] **Cột Mức độ có emoji** – bắt buộc dùng: `🔴 Blocker` / `🟠 High` / `🟡 Medium` / `🟢 Low`. Không được ghi text thuần.
|
|
62
|
+
- [ ] **Cột Người trả lời = vai trò** (PO / BA / Dev / Design / Content / DPO / QC Lead). Nếu thấy "Open" ở đây → đang bị lệch cột.
|
|
63
|
+
- [ ] **Cột Trạng thái = Open / Answered**. Nếu thấy "—" ở đây → đang bị lệch cột.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Acceptance Criteria — Sinh tiêu chí chấp nhận
|
|
8
|
+
|
|
9
|
+
Chuyển yêu cầu đã phân tích thành acceptance criteria (Given/When/Then) làm cơ sở thiết kế TC.
|
|
10
|
+
|
|
11
|
+
## Khi nào trigger
|
|
12
|
+
- "viết acceptance criteria cho [X]" / "định nghĩa tiêu chí pass"
|
|
13
|
+
- Sau spec-breakdown + business-rules, là bước cuối của qa-analyst
|
|
14
|
+
- Cần điều kiện chấp nhận rõ ràng để qa-designer trace TC ngược về
|
|
15
|
+
|
|
16
|
+
## Khi KHÔNG trigger
|
|
17
|
+
- Cần bóc tách spec → dùng spec-breakdown
|
|
18
|
+
- Cần thiết kế test case chi tiết (steps cụ thể) → dùng qa-designer
|
|
19
|
+
- Cần phân tích rủi ro → dùng qa-planner
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Phase 1 — Tổng hợp
|
|
24
|
+
|
|
25
|
+
Gom đầu vào từ spec-breakdown, business-rules, data-flow:
|
|
26
|
+
- Mỗi chức năng/luồng → một nhóm acceptance criteria.
|
|
27
|
+
- Mỗi business rule (BR-xx) → ít nhất một AC kiểm chứng.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Phase 2 — Viết AC
|
|
32
|
+
|
|
33
|
+
Dùng format Given/When/Then, mỗi AC kiểm chứng MỘT điều:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
AC-01 (chức năng / BR-xx):
|
|
37
|
+
Given <tiền điều kiện>
|
|
38
|
+
When <hành động + dữ liệu cụ thể>
|
|
39
|
+
Then <kết quả mong đợi CỤ THỂ>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Bắt buộc phủ:
|
|
43
|
+
- Happy path (điều kiện hợp lệ).
|
|
44
|
+
- Negative (vi phạm validation / authorization).
|
|
45
|
+
- Boundary (giá trị biên của giới hạn trong business-rules).
|
|
46
|
+
- Alternate flow (luồng phụ trong data-flow).
|
|
47
|
+
|
|
48
|
+
Mỗi AC gắn mã trace: chức năng + BR-xx để TC sau này map 1-1.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Output
|
|
53
|
+
|
|
54
|
+
Ghi vào **mục Acceptance Criteria** của `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md`
|
|
55
|
+
(KHÔNG tạo file riêng — qc-analyze chỉ trả 2 file: `REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`):
|
|
56
|
+
|
|
57
|
+
- Danh sách AC dạng Given/When/Then, có mã trace về chức năng, business rule (BR-xx)
|
|
58
|
+
và scenario chính thức `{UC-ID}-SC{N}` của `.feature`.
|
|
59
|
+
- Bảng ma trận: BR / chức năng × AC để xác nhận không bỏ sót.
|
|
60
|
+
- Đây là đầu vào trực tiếp cho `qa-designer` (mỗi AC → ≥1 test case) và `qa-reviewer` (đối chiếu coverage).
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Business Rules — Trích xuất luật nghiệp vụ
|
|
8
|
+
|
|
9
|
+
Trích xuất và liệt kê toàn bộ business rule, điều kiện và ràng buộc từ yêu cầu.
|
|
10
|
+
|
|
11
|
+
## Khi nào trigger
|
|
12
|
+
- "liệt kê business rule cho [X]" / "feature này có luật nghiệp vụ gì"
|
|
13
|
+
- Sau spec-breakdown, khi cần làm rõ logic điều kiện trước khi thiết kế TC
|
|
14
|
+
- Feature có nhiều điều kiện AND/OR, phân quyền, tính toán, giới hạn
|
|
15
|
+
|
|
16
|
+
## Khi KHÔNG trigger
|
|
17
|
+
- Cần bóc tách tổng thể spec → dùng spec-breakdown
|
|
18
|
+
- Cần luồng dữ liệu → dùng data-flow
|
|
19
|
+
- Cần phân tích rủi ro / lập test plan → thuộc qa-planner (skill test-plan)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Phase 1 — Quét
|
|
24
|
+
|
|
25
|
+
1. Đọc spec đã bóc tách (output của spec-breakdown) hoặc tài liệu gốc.
|
|
26
|
+
2. Quét tìm: điều kiện ("nếu… thì…"), ràng buộc field, giới hạn (min/max, rate limit),
|
|
27
|
+
quy tắc phân quyền, công thức tính, quy tắc trạng thái, default value.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Phase 2 — Cấu trúc hoá
|
|
32
|
+
|
|
33
|
+
Mỗi rule ghi dưới dạng bảng:
|
|
34
|
+
|
|
35
|
+
| ID | Rule | Điều kiện | Kết quả | Nguồn | Ghi chú/Ưu tiên |
|
|
36
|
+
|---|---|---|---|---|---|
|
|
37
|
+
| BR-01 | … | … | … | spec §x | … |
|
|
38
|
+
|
|
39
|
+
Phân loại rule:
|
|
40
|
+
- VALIDATION: ràng buộc input (định dạng, bắt buộc, độ dài, range).
|
|
41
|
+
- AUTHORIZATION: ai được làm gì.
|
|
42
|
+
- CALCULATION: công thức, làm tròn, đơn vị.
|
|
43
|
+
- STATE: điều kiện chuyển trạng thái hợp lệ vs cấm.
|
|
44
|
+
- LIMIT: rate limit, quota, concurrent.
|
|
45
|
+
|
|
46
|
+
Với rule có nhiều điều kiện kết hợp → gợi ý dựng **Decision Table** (đầu vào cho qa-designer).
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Output
|
|
51
|
+
|
|
52
|
+
Ghi vào **mục Business Rules** của `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md`
|
|
53
|
+
(KHÔNG tạo file riêng — qc-analyze chỉ trả 2 file: `REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`):
|
|
54
|
+
|
|
55
|
+
- Bảng business rule có ID (BR-xx) để TC trace ngược về.
|
|
56
|
+
- Gợi ý các rule cần Decision Table / BVA khi sang qa-designer.
|
|
57
|
+
|
|
58
|
+
Rule MÂU THUẪN / KHÔNG RÕ → ghi vào `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md`
|
|
59
|
+
(loại CONTRADICTORY / AMBIGUOUS, cột "Ảnh hưởng" trỏ BR-xx).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Data Flow — Phân tích luồng dữ liệu
|
|
8
|
+
|
|
9
|
+
Phân tích luồng dữ liệu, input/output, state và điểm tích hợp của feature.
|
|
10
|
+
|
|
11
|
+
## Khi nào trigger
|
|
12
|
+
- "phân tích data flow cho [X]" / "dữ liệu đi qua đâu"
|
|
13
|
+
- Feature có nhiều bước, qua nhiều màn hình/API/DB, hoặc tích hợp Kafka/service khác
|
|
14
|
+
- Cần xác định điểm tích hợp trước khi thiết kế integration/e2e TC
|
|
15
|
+
|
|
16
|
+
## Khi KHÔNG trigger
|
|
17
|
+
- Chỉ cần bóc tách spec tổng quan → dùng spec-breakdown
|
|
18
|
+
- Chỉ cần luật nghiệp vụ → dùng business-rules
|
|
19
|
+
- Thiết kế integration TC → dùng qa-designer/integration
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Phase 1 — Lập bản đồ
|
|
24
|
+
|
|
25
|
+
Với mỗi luồng nghiệp vụ, xác định:
|
|
26
|
+
1. ĐIỂM BẮT ĐẦU: actor/sự kiện kích hoạt + dữ liệu đầu vào.
|
|
27
|
+
2. CÁC CHẶNG: UI → API → service → DB → message queue → service ngoài.
|
|
28
|
+
3. BIẾN ĐỔI: dữ liệu được tạo/sửa/xoá/validate ở mỗi chặng.
|
|
29
|
+
4. ĐIỂM KẾT THÚC: output, side-effect (email, notification, audit log).
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Phase 2 — Mô tả
|
|
34
|
+
|
|
35
|
+
Thể hiện luồng dạng bước tuần tự hoặc sơ đồ text:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
[User submit form]
|
|
39
|
+
→ POST /api/... (payload: ...)
|
|
40
|
+
→ Service validate (rule BR-xx)
|
|
41
|
+
→ DB insert bảng X
|
|
42
|
+
→ Kafka topic Y (event Z)
|
|
43
|
+
→ UI hiển thị kết quả / trạng thái
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Đánh dấu cho mỗi chặng:
|
|
47
|
+
- INTEGRATION POINT (nơi cần integration test).
|
|
48
|
+
- STATE CHANGE (dữ liệu/trạng thái thay đổi → cần verify + cleanup).
|
|
49
|
+
- FAILURE POINT (nơi có thể lỗi: timeout, validation fail, partial commit).
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Output
|
|
54
|
+
|
|
55
|
+
Ghi vào **mục Data Flow** của `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md`
|
|
56
|
+
(KHÔNG tạo file riêng — qc-analyze chỉ trả 2 file: `REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`):
|
|
57
|
+
|
|
58
|
+
- Sơ đồ/list luồng dữ liệu cho mỗi kịch bản chính.
|
|
59
|
+
- Danh sách integration point + state change + failure point.
|
|
60
|
+
- Gợi ý loại test cần cho từng điểm (gui-feature / integration / e2e) khi sang qa-designer.
|
|
61
|
+
- Dữ liệu/trạng thái cần chuẩn bị & cleanup → đầu vào fixture cho qa-runner.
|
|
62
|
+
|
|
63
|
+
Chặng nào luồng/hành vi chưa rõ (vd lỗi xử lý ra sao, retry, partial commit) →
|
|
64
|
+
ghi vào `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md` (loại MISSING / OPEN QUESTION).
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Spec Breakdown — Bóc tách yêu cầu
|
|
8
|
+
|
|
9
|
+
Bóc tách spec/PRD/user story thô thành mô tả yêu cầu có cấu trúc cho QC.
|
|
10
|
+
|
|
11
|
+
## Khi nào trigger
|
|
12
|
+
- "phân tích spec/PRD cho feature [X]" / "bóc tách yêu cầu"
|
|
13
|
+
- Nhận tài liệu thô (PRD, user story, mô tả Figma, email) cần làm rõ trước khi thiết kế TC
|
|
14
|
+
- Là bước ĐẦU TIÊN của pipeline, trước qa-planner
|
|
15
|
+
|
|
16
|
+
## Khi KHÔNG trigger
|
|
17
|
+
- Cần phân tích rủi ro / what-if → dùng qa-planner
|
|
18
|
+
- Cần trích riêng business rule → dùng business-rules
|
|
19
|
+
- Cần thiết kế test case → dùng qa-designer
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Phase 1 — Thu thập
|
|
24
|
+
|
|
25
|
+
1. Đọc toàn bộ tài liệu nguồn QC cung cấp (PRD, user story, mockup, ghi chú).
|
|
26
|
+
2. **Bỏ qua văn bản gạch ngang (strikethrough)** — đó là nội dung đã huỷ, KHÔNG đưa
|
|
27
|
+
vào phân tích/BR/AC. Với file Confluence/HTML/MHTML: phát hiện qua thẻ `<s>`,
|
|
28
|
+
`<strike>`, `<del>` hoặc style `text-decoration: line-through`.
|
|
29
|
+
3. Xác định: feature name, actor/role, mục tiêu nghiệp vụ, phạm vi (in/out scope).
|
|
30
|
+
4. Đánh dấu phần MƠ HỒ / THIẾU → ghi vào `DOC_GAPS.md` (gap GAP-xx).
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Phase 2 — Bóc tách
|
|
35
|
+
|
|
36
|
+
Tách yêu cầu thành các khối:
|
|
37
|
+
|
|
38
|
+
A. TỔNG QUAN: mục tiêu, actor, giá trị nghiệp vụ.
|
|
39
|
+
B. CHỨC NĂNG: list từng chức năng (visible + ẩn + integration point).
|
|
40
|
+
C. INPUT/OUTPUT: mỗi chức năng có input gì, output gì, ràng buộc field.
|
|
41
|
+
D. TRẠNG THÁI & LUỒNG: các state, điều kiện chuyển, happy path + alternate flow.
|
|
42
|
+
E. PHỤ THUỘC: hệ thống/API/module liên quan.
|
|
43
|
+
F. GIẢ ĐỊNH & CÂU HỎI MỞ: điều suy ra được vs điều cần dev/BA xác nhận.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
|
|
49
|
+
⚠️ `/qc-analyze` chỉ ghi **ĐÚNG 2 FILE** cho mỗi UC, đặt trong thư mục QC **lộ ra ngoài**
|
|
50
|
+
`{paths.qc_dir}/{UC-ID}/` (mặc định `docs/{UC-ID}/` — KHÔNG để trong `.agent/` ẩn):
|
|
51
|
+
`REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`. KHÔNG tách mỗi bước phân tích thành file riêng.
|
|
52
|
+
|
|
53
|
+
Phần spec-breakdown là **mục đầu tiên** của `REQUIREMENT_ANALYSIS.md`:
|
|
54
|
+
- Bảng chức năng + input/output/constraint
|
|
55
|
+
- Sơ đồ/list luồng chính & phụ
|
|
56
|
+
- Danh sách giả định và câu hỏi mở (đánh dấu rõ điều CHƯA chắc)
|
|
57
|
+
|
|
58
|
+
Đồng thời ghi mọi khoảng trống phát hiện vào `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md`
|
|
59
|
+
(theo `{paths.qc_skills_dir}/qa-analyst/DOC_GAPS.template.md`), mỗi gap có ID `GAP-xx`.
|
|
60
|
+
|
|
61
|
+
Kết thúc bằng gợi ý: feature đã đủ rõ để chuyển sang `qa-planner` (phân tích rủi ro) chưa.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Test Case — E2E Journey
|
|
8
|
+
|
|
9
|
+
Skill **tự chứa** để viết TC end-to-end: hành trình đầu→cuối xuyên nhiều màn/module
|
|
10
|
+
(mở → nhập → submit → verify tạo + định tuyến + đồng bộ + hiển thị). Chỉ cần load file này.
|
|
11
|
+
|
|
12
|
+
## Khi nào trigger
|
|
13
|
+
- "viết E2E cho [feature]" / nở danh sách journey trong TEST_PLAN thành TC chi tiết đầu-cuối
|
|
14
|
+
|
|
15
|
+
## Khi KHÔNG trigger
|
|
16
|
+
- Test 1 màn/field → `functional/*` · test riêng 1 điểm tích hợp → `integration/*`
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Format file TC (bắt buộc)
|
|
21
|
+
- Metadata **list**: Title · Feature · Priority · Status(Draft) · Author(AI) · Tags · **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx](DOC_GAPS.md)`.
|
|
22
|
+
- **Test Data** dạng list (tài khoản/role, dữ liệu lớp/buổi…) · **Steps** `[Action]`/`[Verify]` xuyên các màn ·
|
|
23
|
+
**Expected** 1 bullet = chuỗi verify point (tạo thành công, mã đúng, định tuyến đúng, đồng bộ đúng, hiển thị danh sách).
|
|
24
|
+
- ID journey `E2E-<FEATURE>-NN` · cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
|
|
25
|
+
|
|
26
|
+
## Kỹ thuật áp dụng
|
|
27
|
+
- **Use Case/Scenario:** mỗi journey = main + alternate + exception flow.
|
|
28
|
+
- **Decision Table** để chọn journey đại diện cho mỗi nhánh của **trục bao phủ** (vd Đối tượng × Bộ phận xử lý × lớp/buổi × role × CRM).
|
|
29
|
+
- **Verify points chung** (V1…Vn) áp cho mọi journey · **end-to-end data** (nhập màn A → hiện đúng màn B/DB/hệ thống ngoài).
|
|
30
|
+
|
|
31
|
+
## Phase 1 — Clarify
|
|
32
|
+
Lấy danh sách journey + trục bao phủ + verify points từ TEST_PLAN · mỗi journey: actor/role, tiền điều kiện
|
|
33
|
+
(data + tài khoản), bước chính, kết quả/định tuyến kỳ vọng · journey nào phụ thuộc gap Blocker.
|
|
34
|
+
|
|
35
|
+
## Phase 2 — Write
|
|
36
|
+
Mỗi journey → 1 TC bám Format; Expected = chuỗi verify point; chuẩn bị tiền điều kiện & cleanup, mỗi journey độc lập.
|
|
37
|
+
**Journey phụ thuộc gap vẫn viết + 🚫 Block: GAP-xx**, định tuyến ghi "dự kiến theo BR". Trace BR.
|
|
38
|
+
|
|
39
|
+
## Output
|
|
40
|
+
File TC e2e (hoặc nhóm E2E trong file feature) trong `{paths.qc_dir}/{UC-ID}/test-cases/`.
|
|
41
|
+
In bảng `E2E-ID | Journey | Pri | Trace | Block` + bảng TC block. Bàn giao `qa-reviewer`.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Gen Test Charter — Exploratory
|
|
8
|
+
|
|
9
|
+
Sinh bộ test charter + SFDIPOT test ideas + What-If scenarios cho exploratory session.
|
|
10
|
+
|
|
11
|
+
## Khi nào trigger
|
|
12
|
+
- "generate charter cho [Feature]" / "chuẩn bị exploratory session"
|
|
13
|
+
- Trước khi bắt đầu exploratory session
|
|
14
|
+
- Feature mới chưa ai khám phá, hoặc feature có risk cao
|
|
15
|
+
|
|
16
|
+
## Khi KHÔNG trigger
|
|
17
|
+
- Cần sinh functional TC từ spec → dùng qa-designer-gui-screen / qa-designer-gui-feature
|
|
18
|
+
- Cần khám phá feature rồi CHUYỂN ĐỔI thành functional TC → dùng explore-to-functional
|
|
19
|
+
- Cần review charter đã viết → dùng qa-reviewer/test-case/exploratory
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Phase 1 — Clarify
|
|
24
|
+
|
|
25
|
+
Thu thập:
|
|
26
|
+
1. Feature name + mô tả ngắn
|
|
27
|
+
2. Tester level — junior / mid / senior (ảnh hưởng charter complexity)
|
|
28
|
+
3. Time-box — 30 / 60 / 90 phút
|
|
29
|
+
4. Môi trường — staging / production-like
|
|
30
|
+
5. Đã có functional TC coverage chưa (nếu có → exploratory focus vào edge case NGOÀI spec)
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Phase 2 — Analyze
|
|
35
|
+
|
|
36
|
+
Áp dụng SFDIPOT 7 dimension:
|
|
37
|
+
S - Structure: thành phần/module/page liên quan
|
|
38
|
+
F - Function: chức năng chính + phụ + ẩn
|
|
39
|
+
D - Data: edge data, boundary, empty, max, special chars
|
|
40
|
+
I - Interface: UI, API, integration point
|
|
41
|
+
P - Platform: browser, OS, device, network
|
|
42
|
+
O - Operations: ai dùng, khi nào, tần suất
|
|
43
|
+
T - Time: timeout, expiry, concurrent, timezone
|
|
44
|
+
|
|
45
|
+
Với mỗi dimension: 3-5 test idea CỤ THỂ.
|
|
46
|
+
|
|
47
|
+
Brainstorm 15-20 "What If" scenarios bất thường:
|
|
48
|
+
double click, network drop, 2 tab, back button, idle 2h, emoji input, device rotate...
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Phase 3 — Write
|
|
53
|
+
|
|
54
|
+
Sinh 3-5 charter, mỗi charter gồm:
|
|
55
|
+
- Format: "Explore <target> With <resource> To discover <information>"
|
|
56
|
+
- Whittaker Tour phù hợp (Money/FedEx/Saboteur/Couch Potato/Intellectual/...)
|
|
57
|
+
- Risk level: HIGH / MEDIUM / LOW
|
|
58
|
+
- Time-box: 30 / 60 / 90 phút
|
|
59
|
+
|
|
60
|
+
Sinh 10-15 câu hỏi cho dev/BA (assumptions, edge case, error handling, security)
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Output
|
|
65
|
+
|
|
66
|
+
Charter files: {paths.qc_dir}/exploratory/charters/<feature>_01.md, _02.md...
|
|
67
|
+
Ideas file: {paths.qc_dir}/exploratory/ideas/<feature>.md
|
|
68
|
+
Bảng tổng kết: STT | Charter | Tour | Risk | Time-box
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Explore-to-Functional Pipeline
|
|
8
|
+
|
|
9
|
+
Skill **tự chứa**: khám phá feature (chưa/thiếu spec) → draft TC → QC review → feed
|
|
10
|
+
requirement → chuyển thành functional TC chính thức. Chỉ cần load file này.
|
|
11
|
+
|
|
12
|
+
## Khi nào trigger
|
|
13
|
+
- Feature KHÔNG có tài liệu/spec (legacy, take-over) hoặc spec mơ hồ/thiếu
|
|
14
|
+
- Cần bootstrap bộ TC nhanh cho hệ thống đang chạy · "khám phá [X] rồi tạo TC"
|
|
15
|
+
|
|
16
|
+
## Khi KHÔNG trigger
|
|
17
|
+
- Feature có spec rõ → `functional/gui-screen`/`gui-feature` trực tiếp
|
|
18
|
+
- Chỉ cần charter cho session → `exploratory/charter`
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Phase 1 — Explore (AI tự chạy)
|
|
23
|
+
Dựa trên mô tả feature: list TẤT CẢ chức năng (visible + ẩn + integration point) · mỗi chức năng
|
|
24
|
+
identify input/output/state/side-effect · sinh DRAFT TC (1 happy + 2–3 edge mỗi chức năng) ·
|
|
25
|
+
"what if" mỗi chức năng · list chức năng liên quan QC chưa nêu. → ĐỢI QC phản hồi.
|
|
26
|
+
|
|
27
|
+
## Phase 2 — QC Review + Bổ sung
|
|
28
|
+
Đợi QC confirm đúng/sai, thêm business edge case, cung cấp context → sửa → draft v2. → ĐỢI QC confirm/paste requirement.
|
|
29
|
+
|
|
30
|
+
## Phase 3 — Feed Requirement (nếu có)
|
|
31
|
+
So requirement vs draft: requirement chưa phủ → thêm TC · TC sai logic → sửa expected · thêm Trace BR ·
|
|
32
|
+
chỉnh Priority theo business. Không có requirement → giữ draft Phase 2.
|
|
33
|
+
|
|
34
|
+
## Phase 4 — Convert to Functional (format chuẩn)
|
|
35
|
+
Chuyển draft → TC chính thức bám **format file `TC_<FEATURE>.md`**:
|
|
36
|
+
- Metadata **list**: Title · Feature · Priority(P0/P1/P2) · Status(Draft) · Author(AI) · Tags ·
|
|
37
|
+
**Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có BR → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx]` nếu chặn.
|
|
38
|
+
- **Test Data** dạng list · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet cụ thể.
|
|
39
|
+
- Phân nhóm GUI/Functional · cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
|
|
40
|
+
- Đặt file `{paths.qc_dir}/{UC-ID}/test-cases/TC_<FEATURE>.md`.
|
|
41
|
+
|
|
42
|
+
## Output
|
|
43
|
+
File TC functional + bảng `TC_ID | Title | Priority | Technique | Trace`. Bàn giao `qa-reviewer`.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Test Case — Functional API (không qua UI)
|
|
8
|
+
|
|
9
|
+
Skill **tự chứa** để viết TC kiểm thử một API endpoint ở mức chức năng (request → response).
|
|
10
|
+
Chỉ cần load file này.
|
|
11
|
+
|
|
12
|
+
## Khi nào trigger
|
|
13
|
+
- "viết test case cho API [method] [path]" — verify contract, validation, mã lỗi của endpoint
|
|
14
|
+
|
|
15
|
+
## Khi KHÔNG trigger
|
|
16
|
+
- Test qua giao diện → `functional/gui-screen`/`gui-feature`
|
|
17
|
+
- Luồng dữ liệu API ↔ DB/service khác → `integration/api` · message/event → `integration/kafka`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Format file `TC_<FEATURE>.md` (bắt buộc)
|
|
22
|
+
- 1 file/feature · mỗi TC **1 concept** · metadata **list** (không bảng/emoji): Title · Feature ·
|
|
23
|
+
Priority(P0/P1/P2) · Status(Draft) · Author(AI) · Tags · Trace · 🚫 Block(nếu có).
|
|
24
|
+
- **Trace:** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)`; không có BR → `⚠️ Chưa có Business Rule`.
|
|
25
|
+
- **🚫 Block:** TC phụ thuộc gap vẫn viết đủ + `[GAP-xx](DOC_GAPS.md) — lý do`.
|
|
26
|
+
- **Test Data:** dạng **list** (request cụ thể: method/path/headers/body). **Steps:** `[Action]`/`[Verify]`.
|
|
27
|
+
**Expected:** 1 bullet nêu rõ **status code + field response cần chốt** (không ✅/❌).
|
|
28
|
+
- Cuối file: **Trace matrix** (BR↔TC, ⚠️ TC thiếu BR) + **bảng TC bị block** · bỏ nội dung gạch ngang.
|
|
29
|
+
|
|
30
|
+
## Kỹ thuật áp dụng
|
|
31
|
+
- Mỗi field request → **EP** (phân vùng valid/invalid) + **BVA** (biên độ dài/giá trị).
|
|
32
|
+
- Tổ hợp điều kiện (auth × param × state) → **Decision Table**.
|
|
33
|
+
|
|
34
|
+
## Phase 1 — Clarify
|
|
35
|
+
Endpoint (method/path/auth/role/content-type) · request (path/query/body schema: field, kiểu, bắt buộc, ràng buộc) ·
|
|
36
|
+
response (schema thành công + các mã lỗi 4xx/5xx + body lỗi) · side-effect (nếu cần verify → cân nhắc `integration/api`).
|
|
37
|
+
|
|
38
|
+
## Phase 2 — Write
|
|
39
|
+
- Nhóm TC: happy (200 + schema đúng) → validation (400 từng field, dùng EP/BVA) → auth (401/403)
|
|
40
|
+
→ not found (404) → edge (payload lớn, ký tự đặc biệt, rate limit).
|
|
41
|
+
- Mỗi TC bám khối Format; Expected ghi status code + phần body verify; trace BR; gap chặn → 🚫 Block.
|
|
42
|
+
|
|
43
|
+
## Output
|
|
44
|
+
File TC (`TC_<FEATURE>_API.md` hoặc gộp trong file feature) trong `{paths.qc_dir}/{UC-ID}/test-cases/`.
|
|
45
|
+
In bảng TC + Trace matrix. Bàn giao `qa-reviewer`.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-06-11
|
|
4
|
+
ported_from: ai-automation-qc-base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Test Case — Functional GUI Feature (đa màn hình)
|
|
8
|
+
|
|
9
|
+
Skill **tự chứa** để viết TC functional cho feature có luồng span ≥ 2 màn hình
|
|
10
|
+
(wizard, master-detail, popup→list). Chỉ cần load file này.
|
|
11
|
+
|
|
12
|
+
## Khi nào trigger
|
|
13
|
+
- "viết test case cho feature [X]" mà flow đi qua nhiều màn/route, truyền state giữa bước
|
|
14
|
+
|
|
15
|
+
## Khi KHÔNG trigger
|
|
16
|
+
- Gọn trong 1 màn → `functional/gui-screen` · API thuần → `functional/api`
|
|
17
|
+
- Hành trình nghiệp vụ đầu-cuối + đồng bộ hệ thống → `e2e/journey`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Format file `TC_<FEATURE>.md` (bắt buộc)
|
|
22
|
+
- 1 file/feature · mỗi TC **1 concept** · metadata **list** (không bảng/emoji): Title · Feature ·
|
|
23
|
+
Priority(P0/P1/P2) · Status(Draft) · Author(AI) · Tags · Trace · 🚫 Block(nếu có).
|
|
24
|
+
- **Trace:** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)`; không có BR → `⚠️ Chưa có Business Rule`.
|
|
25
|
+
- **🚫 Block:** TC phụ thuộc gap vẫn viết đủ + `[GAP-xx](DOC_GAPS.md) — lý do`.
|
|
26
|
+
- **Test Data:** dạng **list** (không bảng). **Steps:** `[Action]`/`[Verify]`, không `*Expected:*`/bước. **Expected:** 1 bullet cụ thể.
|
|
27
|
+
- Cuối file: **Trace matrix** (BR↔TC, ⚠️ TC thiếu BR) + **bảng TC bị block** · không `#### Python Test Mapping` · bỏ nội dung gạch ngang.
|
|
28
|
+
|
|
29
|
+
## Kỹ thuật áp dụng
|
|
30
|
+
- **Use Case** cho flow tổng: main (P0) → alternate (P1) → exception (negative).
|
|
31
|
+
- **Decision Table** cho điểm rẽ nhánh (điều kiện qua bước/nhảy màn).
|
|
32
|
+
- **State Transition** nếu có trạng thái xuyên bước (draft→submitted…).
|
|
33
|
+
- **EP/BVA** cho field trên từng màn.
|
|
34
|
+
|
|
35
|
+
## Phase 1 — Clarify
|
|
36
|
+
Liệt kê các màn/route + thứ tự điều hướng · state/dữ liệu truyền giữa màn (giữ/reset khi back) ·
|
|
37
|
+
điểm rẽ nhánh · platform · CRUD scope · cleanup.
|
|
38
|
+
|
|
39
|
+
## Phase 2 — Write
|
|
40
|
+
- Nhóm TC: GUI từng màn → **điều hướng** (forward/back/giữ-reset state, deep-link) → happy path xuyên flow → negative.
|
|
41
|
+
- Đặc biệt phủ: back có mất dữ liệu không, dữ liệu bắt buộc để qua bước sau, hủy giữa flow.
|
|
42
|
+
- Mỗi TC bám khối Format; trace BR; gap chặn → 🚫 Block.
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
File `TC_<FEATURE>.md` trong `{paths.qc_dir}/{UC-ID}/test-cases/`. In bảng TC + Trace matrix + bảng TC block.
|
|
46
|
+
Bàn giao `qa-reviewer` (test-case).
|