@ngocsangairvds/vsaf 5.1.5 → 5.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/cli/dist/adapters/antigravity.d.ts.map +1 -1
- package/packages/cli/dist/adapters/antigravity.js +14 -30
- package/packages/cli/dist/adapters/antigravity.js.map +1 -1
- package/packages/cli/dist/adapters/claude.d.ts.map +1 -1
- package/packages/cli/dist/adapters/claude.js +8 -10
- package/packages/cli/dist/adapters/claude.js.map +1 -1
- package/packages/cli/dist/adapters/codex.d.ts.map +1 -1
- package/packages/cli/dist/adapters/codex.js +6 -9
- package/packages/cli/dist/adapters/codex.js.map +1 -1
- package/packages/cli/dist/adapters/cursor.d.ts.map +1 -1
- package/packages/cli/dist/adapters/cursor.js +22 -24
- package/packages/cli/dist/adapters/cursor.js.map +1 -1
- package/packages/cli/dist/commands/init.d.ts.map +1 -1
- package/packages/cli/dist/commands/init.js +7 -19
- package/packages/cli/dist/commands/init.js.map +1 -1
- package/packages/cli/dist/commands/install.d.ts +3 -6
- package/packages/cli/dist/commands/install.d.ts.map +1 -1
- package/packages/cli/dist/commands/install.js +27 -10
- package/packages/cli/dist/commands/install.js.map +1 -1
- package/packages/cli/dist/commands/skill.d.ts.map +1 -1
- package/packages/cli/dist/commands/skill.js +40 -16
- package/packages/cli/dist/commands/skill.js.map +1 -1
- package/packages/cli/dist/index.js +2 -2
- package/packages/cli/dist/index.js.map +1 -1
- package/packages/cli/dist/install/orchestrator.d.ts +0 -8
- package/packages/cli/dist/install/orchestrator.d.ts.map +1 -1
- package/packages/cli/dist/install/orchestrator.js +3 -54
- package/packages/cli/dist/install/orchestrator.js.map +1 -1
- package/packages/cli/dist/server/routes/runs.d.ts.map +1 -1
- package/packages/cli/dist/server/routes/runs.js +81 -3
- package/packages/cli/dist/server/routes/runs.js.map +1 -1
- package/packages/cli/dist/server/routes/workflows.d.ts.map +1 -1
- package/packages/cli/dist/server/routes/workflows.js +76 -17
- package/packages/cli/dist/server/routes/workflows.js.map +1 -1
- package/packages/cli/dist/server/services/execution-manager.d.ts +11 -1
- package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
- package/packages/cli/dist/server/services/execution-manager.js +88 -17
- package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
- package/packages/cli/dist/server/static.d.ts.map +1 -1
- package/packages/cli/dist/server/static.js +4 -1
- package/packages/cli/dist/server/static.js.map +1 -1
- package/packages/cli/dist/server/workflow-path.d.ts +3 -0
- package/packages/cli/dist/server/workflow-path.d.ts.map +1 -0
- package/packages/cli/dist/server/workflow-path.js +25 -0
- package/packages/cli/dist/server/workflow-path.js.map +1 -0
- package/packages/core/dist/store/recovery.d.ts.map +1 -1
- package/packages/core/dist/store/recovery.js +12 -1
- package/packages/core/dist/store/recovery.js.map +1 -1
- package/packages/core/dist/store/run-store.d.ts +3 -0
- package/packages/core/dist/store/run-store.d.ts.map +1 -1
- package/packages/core/dist/store/run-store.js +33 -0
- package/packages/core/dist/store/run-store.js.map +1 -1
- package/packages/core/dist/store/types.d.ts +2 -2
- package/packages/core/dist/store/types.d.ts.map +1 -1
- package/packages/core/dist/store/types.js.map +1 -1
- package/packages/core/dist/store/wal.js +1 -1
- package/packages/core/dist/store/wal.js.map +1 -1
- package/packages/web/dist/web/3rdpartylicenses.txt +26 -26
- package/packages/web/dist/web/browser/chunk-4YPNNQ2T.js +4 -0
- package/packages/web/dist/web/browser/chunk-E227ZHPJ.js +1 -0
- package/packages/web/dist/web/browser/chunk-JFBK3MNW.js +1 -0
- package/packages/web/dist/web/browser/chunk-L2VOQBBI.js +1 -0
- package/packages/web/dist/web/browser/chunk-OJJM5VOH.js +1 -0
- package/packages/web/dist/web/browser/chunk-U2H3QYAG.js +5 -0
- package/packages/web/dist/web/browser/chunk-VA7KFQOR.js +1 -0
- package/packages/web/dist/web/browser/chunk-WV3C6DNH.js +1 -0
- package/packages/web/dist/web/browser/index.html +2 -2
- package/packages/web/dist/web/browser/main-THGFWXYL.js +1 -0
- package/packages/web/dist/web/browser/{styles-JBPZVY54.css → styles-PWTTI45T.css} +1 -1
- package/skills/sdlc/architecture/current-state/SKILL.md +10 -0
- package/skills/sdlc/architecture/current-state/step.md +13 -0
- package/skills/sdlc/architecture/decision/SKILL.md +10 -0
- package/skills/sdlc/architecture/decision/step.md +21 -0
- package/skills/sdlc/architecture/epics/SKILL.md +10 -0
- package/skills/sdlc/architecture/epics/step.md +34 -0
- package/skills/sdlc/architecture/grill/SKILL.md +10 -0
- package/skills/sdlc/architecture/grill/step.md +26 -0
- package/skills/sdlc/architecture/prereq/SKILL.md +10 -0
- package/skills/sdlc/architecture/prereq/step.md +16 -0
- package/skills/sdlc/architecture/readiness/SKILL.md +10 -0
- package/skills/sdlc/architecture/readiness/step.md +76 -0
- package/skills/sdlc/complete/context/SKILL.md +10 -0
- package/skills/sdlc/complete/context/step.md +14 -0
- package/skills/sdlc/complete/knowledge/SKILL.md +10 -0
- package/skills/sdlc/complete/knowledge/step.md +22 -0
- package/skills/sdlc/complete/prereq/SKILL.md +10 -0
- package/skills/sdlc/complete/prereq/step.md +16 -0
- package/skills/sdlc/complete/reindex/SKILL.md +10 -0
- package/skills/sdlc/complete/reindex/step.md +24 -0
- package/skills/sdlc/complete/status/SKILL.md +10 -0
- package/skills/sdlc/complete/status/step.md +52 -0
- package/skills/sdlc/discovery/brainstorm/SKILL.md +10 -0
- package/skills/sdlc/discovery/brainstorm/step.md +27 -0
- package/skills/sdlc/discovery/domain/SKILL.md +10 -0
- package/skills/sdlc/discovery/domain/step.md +13 -0
- package/skills/sdlc/discovery/grill/SKILL.md +10 -0
- package/skills/sdlc/discovery/grill/step.md +22 -0
- package/skills/sdlc/discovery/prereq/SKILL.md +10 -0
- package/skills/sdlc/discovery/prereq/step.md +16 -0
- package/skills/sdlc/discovery/prfaq/SKILL.md +10 -0
- package/skills/sdlc/discovery/prfaq/step.md +68 -0
- package/skills/sdlc/discovery/system/SKILL.md +10 -0
- package/skills/sdlc/discovery/system/step.md +19 -0
- package/skills/sdlc/hotfix/analyze/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/entry/step.md +15 -0
- package/skills/sdlc/hotfix/analyze/exit/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/exit/step.md +19 -0
- package/skills/sdlc/hotfix/analyze/fix-strategy/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/fix-strategy/step.md +15 -0
- package/skills/sdlc/hotfix/analyze/gitnexus/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/gitnexus/step.md +17 -0
- package/skills/sdlc/hotfix/analyze/grill/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/grill/step.md +23 -0
- package/skills/sdlc/hotfix/analyze/reasoning/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/reasoning/step.md +29 -0
- package/skills/sdlc/hotfix/analyze/write/SKILL.md +10 -0
- package/skills/sdlc/hotfix/analyze/write/step.md +45 -0
- package/skills/sdlc/hotfix/implement/branch/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/branch/step.md +15 -0
- package/skills/sdlc/hotfix/implement/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/entry/step.md +20 -0
- package/skills/sdlc/hotfix/implement/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/gate/step.md +104 -0
- package/skills/sdlc/hotfix/implement/impact/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/impact/step.md +15 -0
- package/skills/sdlc/hotfix/implement/sonar/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/sonar/step.md +27 -0
- package/skills/sdlc/hotfix/implement/tdd/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/tdd/step.md +33 -0
- package/skills/sdlc/hotfix/implement/verify/SKILL.md +10 -0
- package/skills/sdlc/hotfix/implement/verify/step.md +27 -0
- package/skills/sdlc/hotfix/prd/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/entry/step.md +20 -0
- package/skills/sdlc/hotfix/prd/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/gate/step.md +32 -0
- package/skills/sdlc/hotfix/prd/requirements/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/requirements/step.md +19 -0
- package/skills/sdlc/hotfix/prd/validate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/validate/step.md +19 -0
- package/skills/sdlc/hotfix/prd/write/SKILL.md +10 -0
- package/skills/sdlc/hotfix/prd/write/step.md +38 -0
- package/skills/sdlc/hotfix/review/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/entry/step.md +13 -0
- package/skills/sdlc/hotfix/review/gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/gate/step.md +51 -0
- package/skills/sdlc/hotfix/review/impact/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/impact/step.md +22 -0
- package/skills/sdlc/hotfix/review/minimality/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/minimality/step.md +18 -0
- package/skills/sdlc/hotfix/review/test-quality/SKILL.md +10 -0
- package/skills/sdlc/hotfix/review/test-quality/step.md +16 -0
- package/skills/sdlc/hotfix/ship/commit-pr/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/commit-pr/step.md +58 -0
- package/skills/sdlc/hotfix/ship/entry/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/entry/step.md +20 -0
- package/skills/sdlc/hotfix/ship/exit/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/exit/step.md +31 -0
- package/skills/sdlc/hotfix/ship/gitignore/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/gitignore/step.md +22 -0
- package/skills/sdlc/hotfix/ship/report/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/report/step.md +47 -0
- package/skills/sdlc/hotfix/ship/test-gate/SKILL.md +10 -0
- package/skills/sdlc/hotfix/ship/test-gate/step.md +17 -0
- package/skills/sdlc/implement/build-run/SKILL.md +10 -0
- package/skills/sdlc/implement/build-run/step.md +85 -0
- package/skills/sdlc/implement/checkpoint/SKILL.md +10 -0
- package/skills/sdlc/implement/checkpoint/step.md +20 -0
- package/skills/sdlc/implement/debug/SKILL.md +10 -0
- package/skills/sdlc/implement/debug/step.md +25 -0
- package/skills/sdlc/implement/impact/SKILL.md +10 -0
- package/skills/sdlc/implement/impact/step.md +12 -0
- package/skills/sdlc/implement/plan/SKILL.md +10 -0
- package/skills/sdlc/implement/plan/step.md +13 -0
- package/skills/sdlc/implement/prereq/SKILL.md +10 -0
- package/skills/sdlc/implement/prereq/step.md +21 -0
- package/skills/sdlc/implement/subagents/SKILL.md +10 -0
- package/skills/sdlc/implement/subagents/step.md +38 -0
- package/skills/sdlc/implement/tdd/SKILL.md +10 -0
- package/skills/sdlc/implement/tdd/step.md +24 -0
- package/skills/sdlc/init/SKILL.md +7 -0
- package/skills/sdlc/onboard-code/SKILL.md +7 -0
- package/skills/sdlc/onboard-docs/SKILL.md +7 -0
- package/skills/sdlc/pack.yaml +83 -16
- package/skills/sdlc/prd/blast-radius/SKILL.md +10 -0
- package/skills/sdlc/prd/blast-radius/step.md +76 -0
- package/skills/sdlc/prd/create/SKILL.md +10 -0
- package/skills/sdlc/prd/create/step.md +21 -0
- package/skills/sdlc/prd/elicitation/SKILL.md +10 -0
- package/skills/sdlc/prd/elicitation/step.md +12 -0
- package/skills/sdlc/prd/prereq/SKILL.md +10 -0
- package/skills/sdlc/prd/prereq/step.md +16 -0
- package/skills/sdlc/prd/validate/SKILL.md +10 -0
- package/skills/sdlc/prd/validate/step.md +24 -0
- package/skills/sdlc/review/code/SKILL.md +10 -0
- package/skills/sdlc/review/code/step.md +45 -0
- package/skills/sdlc/review/debate/SKILL.md +10 -0
- package/skills/sdlc/review/debate/step.md +84 -0
- package/skills/sdlc/review/impact/SKILL.md +10 -0
- package/skills/sdlc/review/impact/step.md +14 -0
- package/skills/sdlc/review/prereq/SKILL.md +10 -0
- package/skills/sdlc/review/prereq/step.md +18 -0
- package/skills/sdlc/review/verification/SKILL.md +10 -0
- package/skills/sdlc/review/verification/step.md +16 -0
- package/skills/sdlc/ship/commit/SKILL.md +10 -0
- package/skills/sdlc/ship/commit/step.md +23 -0
- package/skills/sdlc/ship/gitignore/SKILL.md +10 -0
- package/skills/sdlc/ship/gitignore/step.md +22 -0
- package/skills/sdlc/ship/pr/SKILL.md +10 -0
- package/skills/sdlc/ship/pr/step.md +34 -0
- package/skills/sdlc/ship/prereq/SKILL.md +10 -0
- package/skills/sdlc/ship/prereq/step.md +16 -0
- package/skills/sdlc/ship/report/SKILL.md +10 -0
- package/skills/sdlc/ship/report/step.md +74 -0
- package/skills/sdlc/srs/interface/SKILL.md +10 -0
- package/skills/sdlc/srs/interface/step.md +44 -0
- package/skills/sdlc/srs/prereq/SKILL.md +10 -0
- package/skills/sdlc/srs/prereq/step.md +19 -0
- package/skills/sdlc/srs/validate/SKILL.md +10 -0
- package/skills/sdlc/srs/validate/step.md +23 -0
- package/skills/sdlc/srs/write/SKILL.md +10 -0
- package/skills/sdlc/srs/write/step.md +19 -0
- package/skills/sdlc/test-design/boundary/SKILL.md +10 -0
- package/skills/sdlc/test-design/boundary/step.md +12 -0
- package/skills/sdlc/test-design/cases/SKILL.md +10 -0
- package/skills/sdlc/test-design/cases/step.md +22 -0
- package/skills/sdlc/test-design/coverage/SKILL.md +10 -0
- package/skills/sdlc/test-design/coverage/step.md +63 -0
- package/skills/sdlc/test-design/prereq/SKILL.md +10 -0
- package/skills/sdlc/test-design/prereq/step.md +15 -0
- package/{skills/sdlc/workflows → workflows/sdlc}/hotfix-tdd.yaml +2 -1
- package/{skills/sdlc/workflows → workflows/sdlc}/hotfix.yaml +8 -4
- package/workflows/sdlc/master-sdlc.yaml +64 -0
- package/workflows/sdlc/sdlc-architecture.yaml +43 -0
- package/workflows/sdlc/sdlc-build.yaml +51 -0
- package/workflows/sdlc/sdlc-design.yaml +61 -0
- package/workflows/sdlc/sdlc-discovery.yaml +43 -0
- package/workflows/sdlc/sdlc-feature-complete.yaml +36 -0
- package/workflows/sdlc/sdlc-hotfix-analyze.yaml +43 -0
- package/workflows/sdlc/sdlc-hotfix-implement.yaml +43 -0
- package/workflows/sdlc/sdlc-hotfix-prd.yaml +31 -0
- package/workflows/sdlc/sdlc-hotfix-review.yaml +31 -0
- package/workflows/sdlc/sdlc-hotfix-ship.yaml +37 -0
- package/workflows/sdlc/sdlc-implement.yaml +60 -0
- package/workflows/sdlc/sdlc-prd.yaml +36 -0
- package/workflows/sdlc/sdlc-qa.yaml +91 -0
- package/workflows/sdlc/sdlc-review.yaml +36 -0
- package/workflows/sdlc/sdlc-ship.yaml +36 -0
- package/workflows/sdlc/sdlc-srs.yaml +29 -0
- package/workflows/sdlc/sdlc-test-design.yaml +29 -0
- package/workflows/sdlc/sdlc-testcase.yaml +25 -0
- package/workflows/sdlc/sdlc-thinking.yaml +67 -0
- package/packages/web/dist/web/browser/chunk-IPMFXW6N.js +0 -1
- package/packages/web/dist/web/browser/chunk-IX2QWMX2.js +0 -1
- package/packages/web/dist/web/browser/chunk-QMAH5NZC.js +0 -1
- package/packages/web/dist/web/browser/chunk-RGFLNLPM.js +0 -1
- package/packages/web/dist/web/browser/chunk-RKWDHBN3.js +0 -5
- package/packages/web/dist/web/browser/chunk-XGYEZIV4.js +0 -1
- package/packages/web/dist/web/browser/main-IIUZVPMI.js +0 -1
- package/skills/sdlc/architecture/SKILL.md +0 -218
- package/skills/sdlc/discovery/SKILL.md +0 -197
- package/skills/sdlc/feature-complete/SKILL.md +0 -159
- package/skills/sdlc/hotfix-analyze/SKILL.md +0 -198
- package/skills/sdlc/hotfix-implement/SKILL.md +0 -272
- package/skills/sdlc/hotfix-prd/SKILL.md +0 -161
- package/skills/sdlc/hotfix-review/SKILL.md +0 -153
- package/skills/sdlc/hotfix-ship/SKILL.md +0 -221
- package/skills/sdlc/implement/SKILL.md +0 -264
- package/skills/sdlc/prd/SKILL.md +0 -182
- package/skills/sdlc/review/SKILL.md +0 -210
- package/skills/sdlc/ship/SKILL.md +0 -194
- package/skills/sdlc/srs/SKILL.md +0 -148
- package/skills/sdlc/test-design/SKILL.md +0 -132
- package/skills/sdlc/workflows/master-sdlc.yaml +0 -35
- package/skills/sdlc/workflows/sdlc-build.yaml +0 -18
- package/skills/sdlc/workflows/sdlc-design.yaml +0 -14
- package/skills/sdlc/workflows/sdlc-qa.yaml +0 -20
- package/skills/sdlc/workflows/sdlc-testcase.yaml +0 -8
- package/skills/sdlc/workflows/sdlc-thinking.yaml +0 -12
- /package/{skills/sdlc/workflows → workflows/sdlc}/onboarding.yaml +0 -0
package/skills/sdlc/srs/SKILL.md
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-srs
|
|
3
|
-
description: "Phase 4 — SRS via sdlc-write-srs template + sdlc-validate-srs 8-dimension validation + GitNexus interface verification"
|
|
4
|
-
version: 2.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 4: SRS (Software Requirements Specification)
|
|
9
|
-
|
|
10
|
-
You are a Senior Business Analyst. Your mission: write a detailed SRS using the v4 template, validate it across 8 quality dimensions, and verify interface contracts.
|
|
11
|
-
|
|
12
|
-
## Language Rule
|
|
13
|
-
|
|
14
|
-
All output documents (05-srs.md) MUST be written in Vietnamese. Section headers, requirements, use cases, analysis — all in Vietnamese. Only keep English for: IDs (FR-001, NFR-001, UC-XX-01), technical terms (API, database, endpoint), and code references (class names, method signatures).
|
|
15
|
-
|
|
16
|
-
## Index Protection
|
|
17
|
-
|
|
18
|
-
⛔ **DO NOT modify** `graphify-out/` or `.gitnexus/` — READ only, never WRITE.
|
|
19
|
-
|
|
20
|
-
## Scope sizing — full vs lite
|
|
21
|
-
|
|
22
|
-
Pick the SRS depth before writing, to avoid over-spending on small features:
|
|
23
|
-
|
|
24
|
-
- **Explicit override (highest priority):** if `$ARGUMENTS` contains `--lite` → lite; `--full` → full.
|
|
25
|
-
- **Force FULL (hard overrides) — pick `full` regardless of FR count if ANY apply:**
|
|
26
|
-
| Trigger | Why |
|
|
27
|
-
|---|---|
|
|
28
|
-
| Touches auth / security / authorization | a spec gap here is high-cost |
|
|
29
|
-
| Data migration / schema change | irreversible, needs full rigor |
|
|
30
|
-
| New public/external API or interface contract (FE / third-party) | downstream consumers depend on it |
|
|
31
|
-
| ≥ 3 modules affected, OR GitNexus blast-radius HIGH/CRITICAL | wide blast = expensive mistakes |
|
|
32
|
-
- **Otherwise auto-detect:** **lite** when ALL of — **≤ 8 functional requirements** AND ≤ ~5 files / single module AND GitNexus blast-radius LOW/MEDIUM AND none of the Force-FULL triggers above. **full** otherwise.
|
|
33
|
-
> FR count alone is a weak signal (a 3-FR auth change still needs full; a 12-FR read-only change can be lite) — the Force-FULL triggers and blast-radius decide first; the ≤ 8 FR line is only the tie-breaker for low-risk features.
|
|
34
|
-
- **Lite mode:** write the SRS sections that apply, then run `sdlc-validate-srs` in lite mode (core dimensions only — completeness, consistency, testability; skip the heavy 8-dimension weighted scoring). Note `Mode: LITE` at the top of `05-srs.md`.
|
|
35
|
-
- **Full mode:** write all 12 sections and run the full 8-dimension validation. Note `Mode: FULL`.
|
|
36
|
-
|
|
37
|
-
State which mode you chose and why in one line before writing.
|
|
38
|
-
|
|
39
|
-
## Phase Entry Protocol
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
[SRS] [1/4] Checking input artifacts... ⏳
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
1. Input:
|
|
46
|
-
- `.vsaf/docs/features/{feature-name}/02-prd.md`
|
|
47
|
-
- `.vsaf/docs/features/{feature-name}/03-adr.md`
|
|
48
|
-
- `.vsaf/docs/features/{feature-name}/04-epics.md`
|
|
49
|
-
2. Verify 02-prd.md AND 03-adr.md exist (04-epics.md optional):
|
|
50
|
-
- Any required file missing → Ask: "File not found. Have you run Phase 2 (PRD) and Phase 3 (Architecture)?"
|
|
51
|
-
3. Read `.vsaf/docs/STATUS.md`
|
|
52
|
-
4. Read `CONTEXT.md`
|
|
53
|
-
5. Query `graph.json` for code structure + business mapping (if exists)
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
[SRS] [1/4] Checking input artifacts... ✅
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Tasks
|
|
60
|
-
|
|
61
|
-
### Step 2: Write SRS
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
[SRS] [2/4] Writing SRS from PRD + ADR + Epics... ⏳
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Use `/sdlc-write-srs` — write SRS following the v4 template (12 sections) from PRD + Architecture + Epics.
|
|
68
|
-
|
|
69
|
-
Input:
|
|
70
|
-
- `02-prd.md` as PRD source
|
|
71
|
-
- `03-adr.md` as architecture context
|
|
72
|
-
- `04-epics.md` as epic breakdown (optional)
|
|
73
|
-
- Figma link from `CONTEXT.md` (optional)
|
|
74
|
-
|
|
75
|
-
Output: `.vsaf/docs/features/{feature-name}/05-srs.md`
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
[SRS] [2/4] Writing SRS from PRD + ADR + Epics... ✅
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Step 3: Validate SRS
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
[SRS] [3/4] Validating SRS (8 dimensions)... ⏳
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Use `/sdlc-validate-srs` — validate SRS across 8 dimensions with weighted scoring.
|
|
88
|
-
|
|
89
|
-
- Scope: single file (`05-srs.md`)
|
|
90
|
-
- Cross-validate against: `02-prd.md`, `03-adr.md`
|
|
91
|
-
- Output: `.vsaf/docs/features/{feature-name}/05-srs-validation-report.md`
|
|
92
|
-
|
|
93
|
-
**Decision handling:**
|
|
94
|
-
|
|
95
|
-
| Validation Result | Action |
|
|
96
|
-
|---|---|
|
|
97
|
-
| **GO** (≥80%, no CRITICAL) | Print score summary, proceed to Step 4 |
|
|
98
|
-
| **CONDITIONAL GO** (60-79% or HIGH findings) | Print warnings + finding summary. Ask user: "Proceed despite warnings? (Y/N)" |
|
|
99
|
-
| **NO-GO** (<60% or CRITICAL findings) | **STOP.** Print CRITICAL findings. Ask user to fix 05-srs.md and re-run `/sdlc-srs` |
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
[SRS] [3/4] Validating SRS (8 dimensions)... ✅
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Step 4: Interface Verification
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
[SRS] [4/4] Interface verification via GitNexus... ⏳
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Use GitNexus `shape_check` — verify code structure matches SRS assumptions.
|
|
112
|
-
Append results to `05-srs.md` §Interface Contracts.
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
[SRS] [4/4] Interface verification via GitNexus... ✅
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
## Gate
|
|
119
|
-
|
|
120
|
-
Human must approve SRS. Write `## Gate: APPROVED` at the end of the file.
|
|
121
|
-
|
|
122
|
-
**Automated mode (opt-in):** when the environment has `VSAF_CI=1` or `VSAF_AUTO_APPROVE=1`, write the Gate yourself as `## Gate: APPROVED (auto · VSAF_CI · rationale: <one line>)` and proceed — the one-line rationale is REQUIRED for audit. Without the env flag, a human must approve (default).
|
|
123
|
-
|
|
124
|
-
## Output
|
|
125
|
-
|
|
126
|
-
- `.vsaf/docs/features/{feature-name}/05-srs.md` — SRS document (v4 template format)
|
|
127
|
-
- `.vsaf/docs/features/{feature-name}/05-srs-validation-report.md` — Validation report with scores
|
|
128
|
-
|
|
129
|
-
## Phase Exit Protocol
|
|
130
|
-
|
|
131
|
-
In PHASE REPORT:
|
|
132
|
-
- Output files: `05-srs.md`, `05-srs-validation-report.md`
|
|
133
|
-
- Validation score: {overall_score}% ({GO/CONDITIONAL GO/NO-GO})
|
|
134
|
-
- Suggestions: [1] Phase 5 Test Design (`/sdlc-test-design`) [2] Save artifacts
|
|
135
|
-
|
|
136
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
137
|
-
|
|
138
|
-
**Notify the user:**
|
|
139
|
-
> Artifacts have been saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
140
|
-
|
|
141
|
-
## Rules
|
|
142
|
-
|
|
143
|
-
- Every FR/NFR MUST have a unique traceability ID
|
|
144
|
-
- DO NOT use vague language: "should", "might", "optionally" → replace with "MUST", "MUST NOT"
|
|
145
|
-
- All terms MUST exist in CONTEXT.md
|
|
146
|
-
- Every FR MUST be testable (have clear pass/fail criteria)
|
|
147
|
-
- SRS MUST follow the v4 template structure (12 sections)
|
|
148
|
-
- ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-test-design
|
|
3
|
-
description: Phase 5 — Test Design via BMAD QA + edge case hunter + GitNexus coverage mapping
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 5: Test Design
|
|
9
|
-
|
|
10
|
-
You are a QA Lead. Your mission: design test cases FROM the SRS (spec), NOT from code. Tests BEFORE code (#2 TDD).
|
|
11
|
-
|
|
12
|
-
## Index Protection
|
|
13
|
-
|
|
14
|
-
⛔ **DO NOT modify** `graphify-out/` or `.gitnexus/` — READ only, never WRITE.
|
|
15
|
-
|
|
16
|
-
## Phase Entry Protocol
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
[TEST-DESIGN] [1/4] Checking input artifacts... ⏳
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
1. Input: `.vsaf/docs/features/{feature-name}/05-srs.md`
|
|
23
|
-
2. Verify file exists + **check Gate: APPROVED**
|
|
24
|
-
- No Gate → Stop: "SRS has not been approved"
|
|
25
|
-
3. Read `.vsaf/docs/STATUS.md`
|
|
26
|
-
4. Read `CONTEXT.md`
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
[TEST-DESIGN] [1/4] Checking input artifacts... ✅
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Tasks
|
|
33
|
-
|
|
34
|
-
### Step 1: Generate Test Cases
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
[TEST-DESIGN] [2/4] Generating test cases from SRS... ⏳
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Use `/bmad-qa-generate-e2e-tests` — generate test cases from SRS FRs/NFRs.
|
|
41
|
-
|
|
42
|
-
For each requirement, ensure ≥1 test case with:
|
|
43
|
-
|
|
44
|
-
1. **Unique ID** — TC-001 (sequential)
|
|
45
|
-
2. **Traceability** — TC → FR/NFR → PRD user story (US-xxx)
|
|
46
|
-
3. **Type** — unit / integration / e2e (based on requirement scope)
|
|
47
|
-
4. **Precondition** — system state before test
|
|
48
|
-
5. **Steps** — exact actions to execute
|
|
49
|
-
6. **Expected result** — concrete, verifiable outcome (not "should work")
|
|
50
|
-
|
|
51
|
-
Prioritize: happy path first, then error paths, then edge cases.
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
[TEST-DESIGN] [2/4] Generating test cases from SRS... ✅
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Step 2: Boundary Tests
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
[TEST-DESIGN] [3/4] Boundary & edge case tests... ⏳
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Use `/bmad-review-edge-case-hunter` — add boundary tests.
|
|
64
|
-
Race conditions, null/empty, overflow, concurrent access.
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
[TEST-DESIGN] [3/4] Boundary & edge case tests... ✅
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Step 3: Coverage Map
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
[TEST-DESIGN] [4/4] Coverage mapping via GitNexus... ⏳
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Use GitNexus `detect_changes` — predict files that will be modified.
|
|
77
|
-
Map test cases → files requiring coverage.
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
[TEST-DESIGN] [4/4] Coverage mapping via GitNexus... ✅
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Output
|
|
84
|
-
|
|
85
|
-
Write file: `.vsaf/docs/features/{feature-name}/06-testcases.md`
|
|
86
|
-
|
|
87
|
-
```markdown
|
|
88
|
-
# Test Cases: {feature-name}
|
|
89
|
-
|
|
90
|
-
## TC-001 → FR-001 → US-003
|
|
91
|
-
- Type: unit
|
|
92
|
-
- File target: src/user/user.service.ts
|
|
93
|
-
- Precondition: ...
|
|
94
|
-
- Steps: ...
|
|
95
|
-
- Expected: ...
|
|
96
|
-
|
|
97
|
-
## TC-002 → FR-001 (edge case: empty input)
|
|
98
|
-
- Type: unit
|
|
99
|
-
- Precondition: ...
|
|
100
|
-
- Steps: ...
|
|
101
|
-
- Expected: ...
|
|
102
|
-
|
|
103
|
-
## Coverage Map
|
|
104
|
-
- src/user/user.service.ts → TC-001, TC-002
|
|
105
|
-
- src/user/user.controller.ts → TC-005, TC-006
|
|
106
|
-
|
|
107
|
-
## Traceability Matrix
|
|
108
|
-
| FR/NFR | Test Cases | Coverage |
|
|
109
|
-
|--------|-----------|----------|
|
|
110
|
-
| FR-001 | TC-001, TC-002 | ✓ |
|
|
111
|
-
| FR-002 | TC-003 | ✓ |
|
|
112
|
-
| NFR-001 | TC-010 | ✓ |
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Phase Exit Protocol
|
|
116
|
-
|
|
117
|
-
In PHASE REPORT:
|
|
118
|
-
- Output files: `.vsaf/docs/features/{feature-name}/06-testcases.md`
|
|
119
|
-
- Suggestions: [1] Phase 6 Implementation (`/sdlc-implement`) [2] Save artifacts
|
|
120
|
-
|
|
121
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
122
|
-
|
|
123
|
-
**Notify the user:**
|
|
124
|
-
> Artifacts have been saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
125
|
-
|
|
126
|
-
## Rules
|
|
127
|
-
|
|
128
|
-
- Test cases derive from SRS (spec), NEVER from code
|
|
129
|
-
- Every FR/NFR MUST have ≥1 test case
|
|
130
|
-
- Traceability chain is mandatory: TC → FR → US
|
|
131
|
-
- DO NOT read source code when writing test cases
|
|
132
|
-
- ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
name: master-sdlc
|
|
2
|
-
description: "Full SDLC pipeline — Thinking → Design → Testcase → Build → QA"
|
|
3
|
-
nodes:
|
|
4
|
-
- id: thinking
|
|
5
|
-
description: "Thinking: Discovery → PRD"
|
|
6
|
-
bash: |
|
|
7
|
-
vsaf run sdlc/sdlc-thinking $ARGUMENTS
|
|
8
|
-
workspace: false
|
|
9
|
-
|
|
10
|
-
- id: design
|
|
11
|
-
description: "Design: Architecture → SRS"
|
|
12
|
-
bash: |
|
|
13
|
-
vsaf run sdlc/sdlc-design $ARGUMENTS
|
|
14
|
-
depends_on: [thinking]
|
|
15
|
-
workspace: false
|
|
16
|
-
|
|
17
|
-
- id: testcase
|
|
18
|
-
description: "Testcase: generate test cases from SRS"
|
|
19
|
-
bash: |
|
|
20
|
-
vsaf run sdlc/sdlc-testcase $ARGUMENTS
|
|
21
|
-
depends_on: [design]
|
|
22
|
-
workspace: false
|
|
23
|
-
|
|
24
|
-
- id: build
|
|
25
|
-
description: "Build: Implement → Test Gate"
|
|
26
|
-
bash: |
|
|
27
|
-
vsaf run sdlc/sdlc-build $ARGUMENTS
|
|
28
|
-
depends_on: [testcase]
|
|
29
|
-
|
|
30
|
-
- id: qa
|
|
31
|
-
description: "QA: Review → Feature Complete → Ship"
|
|
32
|
-
bash: |
|
|
33
|
-
vsaf run sdlc/sdlc-qa $ARGUMENTS
|
|
34
|
-
depends_on: [build]
|
|
35
|
-
workspace: false
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
name: sdlc-build
|
|
2
|
-
description: "Sub-flow: Implement → Test Gate — TDD code + automated test verification"
|
|
3
|
-
|
|
4
|
-
nodes:
|
|
5
|
-
- id: implement
|
|
6
|
-
description: "Implement: TDD implementation per vertical slice"
|
|
7
|
-
command: sdlc-implement
|
|
8
|
-
depends_on: []
|
|
9
|
-
|
|
10
|
-
- id: test-gate
|
|
11
|
-
description: "Test Gate: run automated tests to verify implementation"
|
|
12
|
-
bash: |
|
|
13
|
-
npm test 2>&1
|
|
14
|
-
depends_on: [implement]
|
|
15
|
-
loop:
|
|
16
|
-
on_fail: implement
|
|
17
|
-
max_retries: 3
|
|
18
|
-
inject_error: true
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
name: sdlc-design
|
|
2
|
-
description: "Sub-flow: Architecture → SRS — design solution and write detailed spec"
|
|
3
|
-
|
|
4
|
-
nodes:
|
|
5
|
-
- id: architecture
|
|
6
|
-
description: "Architecture: design solution architecture and write ADR + epic breakdown"
|
|
7
|
-
command: sdlc-architecture
|
|
8
|
-
workspace: false
|
|
9
|
-
|
|
10
|
-
- id: srs
|
|
11
|
-
description: "SRS: write Software Requirements Specification with API contracts"
|
|
12
|
-
command: sdlc-srs
|
|
13
|
-
depends_on: [architecture]
|
|
14
|
-
workspace: false
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
name: sdlc-qa
|
|
2
|
-
description: "Sub-flow: Review → Feature Complete → Ship — quality gate + knowledge update + deploy"
|
|
3
|
-
|
|
4
|
-
nodes:
|
|
5
|
-
- id: review
|
|
6
|
-
description: "Review: code review against SRS, architecture, and best practices"
|
|
7
|
-
command: sdlc-review
|
|
8
|
-
workspace: false
|
|
9
|
-
|
|
10
|
-
- id: complete
|
|
11
|
-
description: "Feature Complete: update knowledge base and project documentation"
|
|
12
|
-
command: sdlc-feature-complete
|
|
13
|
-
depends_on: [review]
|
|
14
|
-
workspace: false
|
|
15
|
-
|
|
16
|
-
- id: ship
|
|
17
|
-
description: "Ship: create PR, final checks, deploy"
|
|
18
|
-
command: sdlc-ship
|
|
19
|
-
depends_on: [complete]
|
|
20
|
-
workspace: false
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
name: sdlc-testcase
|
|
2
|
-
description: "Sub-flow: Test Design — generate test cases from SRS (tests before code)"
|
|
3
|
-
|
|
4
|
-
nodes:
|
|
5
|
-
- id: test-design
|
|
6
|
-
description: "Test Design: generate test cases from SRS (tests before code)"
|
|
7
|
-
command: sdlc-test-design
|
|
8
|
-
workspace: false
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
name: sdlc-thinking
|
|
2
|
-
description: "Sub-flow: Discovery → PRD — understand the problem space before designing"
|
|
3
|
-
|
|
4
|
-
nodes:
|
|
5
|
-
- id: discovery
|
|
6
|
-
command: sdlc-discovery
|
|
7
|
-
workspace: false
|
|
8
|
-
|
|
9
|
-
- id: prd
|
|
10
|
-
command: sdlc-prd
|
|
11
|
-
depends_on: [discovery]
|
|
12
|
-
workspace: false
|
|
File without changes
|