@ngocsangairvds/vsaf 4.1.24 → 4.1.26
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/commands/install.d.ts +1 -0
- package/packages/cli/dist/commands/install.d.ts.map +1 -1
- package/packages/cli/dist/commands/install.js +32 -6
- package/packages/cli/dist/commands/install.js.map +1 -1
- package/packages/core/dist/engine/node-runner.d.ts +1 -0
- package/packages/core/dist/engine/node-runner.d.ts.map +1 -1
- package/packages/core/dist/engine/node-runner.js +33 -6
- package/packages/core/dist/engine/node-runner.js.map +1 -1
- package/skills/sdlc/ba-validate-srs/SKILL.md +8 -0
- package/skills/sdlc/ba-validate-srs/data/domain-checklists/insurance.yaml +110 -0
- package/skills/sdlc/ba-validate-srs/data/grep-patterns-srs.yaml +158 -0
- package/skills/sdlc/ba-validate-srs/data/srs-review-glossary.md +237 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-01-discovery.md +280 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-02-business-alignment.md +351 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-03-completeness.md +353 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-04-consistency.md +352 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-05-quality.md +347 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-06-system-nfr.md +217 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-07-delivery-readiness.md +288 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-08-risk-analysis.md +283 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-09-user-impact.md +262 -0
- package/skills/sdlc/ba-validate-srs/steps-v/step-v-10-report.md +308 -0
- package/skills/sdlc/ba-validate-srs/workflow.md +269 -0
- package/skills/sdlc/ba-write-srs/SKILL.md +8 -0
- package/skills/sdlc/ba-write-srs/srs-feature-template.md +669 -0
- package/skills/sdlc/ba-write-srs/srs-system-template.md +430 -0
- package/skills/sdlc/ba-write-srs/workflow.md +139 -0
- package/skills/sdlc/pack.yaml +4 -0
- package/skills/sdlc/srs/SKILL.md +44 -55
- package/skills/vds-skill/install-deps.mjs +21 -3
package/skills/sdlc/srs/SKILL.md
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: srs
|
|
3
|
-
description: Phase 4 — SRS via
|
|
4
|
-
version:
|
|
3
|
+
description: "Phase 4 — SRS via ba-write-srs template + ba-validate-srs 8-dimension validation + GitNexus interface verification"
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
author: "@ngocsangairvds/vsaf"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Phase 4: SRS (Software Requirements Specification)
|
|
9
9
|
|
|
10
|
-
You are a Senior Business Analyst. Your mission: write a detailed SRS
|
|
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
11
|
|
|
12
12
|
## Language Rule
|
|
13
13
|
|
|
14
|
-
All output documents (05-srs.md) MUST be written in Vietnamese. Section headers, requirements,
|
|
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
15
|
|
|
16
16
|
## Index Protection
|
|
17
17
|
|
|
@@ -20,71 +20,80 @@ All output documents (05-srs.md) MUST be written in Vietnamese. Section headers,
|
|
|
20
20
|
## Phase Entry Protocol
|
|
21
21
|
|
|
22
22
|
```
|
|
23
|
-
[SRS] [1/
|
|
23
|
+
[SRS] [1/4] Checking input artifacts... ⏳
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
1. Input:
|
|
27
27
|
- `.vsaf/docs/features/{feature-name}/02-prd.md`
|
|
28
28
|
- `.vsaf/docs/features/{feature-name}/03-adr.md`
|
|
29
29
|
- `.vsaf/docs/features/{feature-name}/04-epics.md`
|
|
30
|
-
2. Verify
|
|
31
|
-
- Any file missing → Ask: "File not found. Have you
|
|
30
|
+
2. Verify 02-prd.md AND 03-adr.md exist (04-epics.md optional):
|
|
31
|
+
- Any required file missing → Ask: "File not found. Have you run Phase 2 (PRD) and Phase 3 (Architecture)?"
|
|
32
32
|
3. Read `.vsaf/docs/STATUS.md`
|
|
33
33
|
4. Read `CONTEXT.md`
|
|
34
|
-
5. Query `graph.json` for code structure + business mapping
|
|
34
|
+
5. Query `graph.json` for code structure + business mapping (if exists)
|
|
35
35
|
|
|
36
36
|
```
|
|
37
|
-
[SRS] [1/
|
|
37
|
+
[SRS] [1/4] Checking input artifacts... ✅
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
## Tasks
|
|
41
41
|
|
|
42
|
-
### Step
|
|
42
|
+
### Step 2: Write SRS
|
|
43
43
|
|
|
44
44
|
```
|
|
45
|
-
[SRS] [2/
|
|
45
|
+
[SRS] [2/4] Writing SRS from PRD + ADR + Epics... ⏳
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
Use `/
|
|
48
|
+
Use `/ba-write-srs` — write SRS following the v4 template (12 sections) from PRD + Architecture + Epics.
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
Input:
|
|
51
|
+
- `02-prd.md` as PRD source
|
|
52
|
+
- `03-adr.md` as architecture context
|
|
53
|
+
- `04-epics.md` as epic breakdown (optional)
|
|
54
|
+
- Figma link from `CONTEXT.md` (optional)
|
|
51
55
|
|
|
52
|
-
|
|
53
|
-
2. **Traceability** — trace to PRD user story (US-xxx)
|
|
54
|
-
3. **Input/Output spec** — `{class}.{method}({params}): {return}` or API contract
|
|
55
|
-
4. **Constraints** — performance, security, data validation rules
|
|
56
|
-
5. **Pre/Post conditions** — system state before and after execution
|
|
57
|
-
|
|
58
|
-
Write to `05-srs.md`.
|
|
56
|
+
Output: `.vsaf/docs/features/{feature-name}/05-srs.md`
|
|
59
57
|
|
|
60
58
|
```
|
|
61
|
-
[SRS] [2/
|
|
59
|
+
[SRS] [2/4] Writing SRS from PRD + ADR + Epics... ✅
|
|
62
60
|
```
|
|
63
61
|
|
|
64
|
-
### Step
|
|
62
|
+
### Step 3: Validate SRS
|
|
65
63
|
|
|
66
64
|
```
|
|
67
|
-
[SRS] [
|
|
65
|
+
[SRS] [3/4] Validating SRS (8 dimensions)... ⏳
|
|
68
66
|
```
|
|
69
67
|
|
|
70
|
-
Use `/
|
|
71
|
-
|
|
68
|
+
Use `/ba-validate-srs` — validate SRS across 8 dimensions with weighted scoring.
|
|
69
|
+
|
|
70
|
+
- Scope: single file (`05-srs.md`)
|
|
71
|
+
- Cross-validate against: `02-prd.md`, `03-adr.md`
|
|
72
|
+
- Output: `.vsaf/docs/features/{feature-name}/05-srs-validation-report.md`
|
|
73
|
+
|
|
74
|
+
**Decision handling:**
|
|
75
|
+
|
|
76
|
+
| Validation Result | Action |
|
|
77
|
+
|---|---|
|
|
78
|
+
| **GO** (≥80%, no CRITICAL) | Print score summary, proceed to Step 4 |
|
|
79
|
+
| **CONDITIONAL GO** (60-79% or HIGH findings) | Print warnings + finding summary. Ask user: "Proceed despite warnings? (Y/N)" |
|
|
80
|
+
| **NO-GO** (<60% or CRITICAL findings) | **STOP.** Print CRITICAL findings. Ask user to fix 05-srs.md and re-run `/sdlc-srs` |
|
|
72
81
|
|
|
73
82
|
```
|
|
74
|
-
[SRS] [
|
|
83
|
+
[SRS] [3/4] Validating SRS (8 dimensions)... ✅
|
|
75
84
|
```
|
|
76
85
|
|
|
77
|
-
### Step
|
|
86
|
+
### Step 4: Interface Verification
|
|
78
87
|
|
|
79
88
|
```
|
|
80
|
-
[SRS] [
|
|
89
|
+
[SRS] [4/4] Interface verification via GitNexus... ⏳
|
|
81
90
|
```
|
|
82
91
|
|
|
83
92
|
Use GitNexus `shape_check` — verify code structure matches SRS assumptions.
|
|
84
|
-
|
|
93
|
+
Append results to `05-srs.md` §Interface Contracts.
|
|
85
94
|
|
|
86
95
|
```
|
|
87
|
-
[SRS] [
|
|
96
|
+
[SRS] [4/4] Interface verification via GitNexus... ✅
|
|
88
97
|
```
|
|
89
98
|
|
|
90
99
|
## Gate
|
|
@@ -93,35 +102,14 @@ Human must approve SRS. Write `## Gate: APPROVED` at the end of the file.
|
|
|
93
102
|
|
|
94
103
|
## Output
|
|
95
104
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
```markdown
|
|
99
|
-
# SRS: {feature-name}
|
|
100
|
-
|
|
101
|
-
## FR-001: {requirement}
|
|
102
|
-
- Traces to: PRD §US-{id}
|
|
103
|
-
- Interface: `{class}.{method}({params}): {return}`
|
|
104
|
-
- Constraints: ...
|
|
105
|
-
- Edge cases: EC-001, EC-002
|
|
106
|
-
|
|
107
|
-
## FR-002: ...
|
|
108
|
-
|
|
109
|
-
## NFR-001: ...
|
|
110
|
-
|
|
111
|
-
## Edge Cases
|
|
112
|
-
- EC-001: {boundary condition}
|
|
113
|
-
- EC-002: {race condition / null / overflow}
|
|
114
|
-
|
|
115
|
-
## Interface Contracts
|
|
116
|
-
{GitNexus shape_check result}
|
|
117
|
-
|
|
118
|
-
## Gate: {PENDING / APPROVED by {name} on {date}}
|
|
119
|
-
```
|
|
105
|
+
- `.vsaf/docs/features/{feature-name}/05-srs.md` — SRS document (v4 template format)
|
|
106
|
+
- `.vsaf/docs/features/{feature-name}/05-srs-validation-report.md` — Validation report with scores
|
|
120
107
|
|
|
121
108
|
## Phase Exit Protocol
|
|
122
109
|
|
|
123
110
|
In PHASE REPORT:
|
|
124
|
-
- Output files:
|
|
111
|
+
- Output files: `05-srs.md`, `05-srs-validation-report.md`
|
|
112
|
+
- Validation score: {overall_score}% ({GO/CONDITIONAL GO/NO-GO})
|
|
125
113
|
- Suggestions: [1] Phase 5 Test Design (`/sdlc-test-design`) [2] Save artifacts
|
|
126
114
|
|
|
127
115
|
Update `.vsaf/docs/STATUS.md`.
|
|
@@ -135,4 +123,5 @@ Update `.vsaf/docs/STATUS.md`.
|
|
|
135
123
|
- DO NOT use vague language: "should", "might", "optionally" → replace with "MUST", "MUST NOT"
|
|
136
124
|
- All terms MUST exist in CONTEXT.md
|
|
137
125
|
- Every FR MUST be testable (have clear pass/fail criteria)
|
|
126
|
+
- SRS MUST follow the v4 template structure (12 sections)
|
|
138
127
|
- ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* node install-deps.mjs <projectPath> <packDir> [--force]
|
|
10
10
|
*
|
|
11
11
|
* What it does:
|
|
12
|
-
* 1. Checks Python >= 3.
|
|
12
|
+
* 1. Checks Python >= 3.12
|
|
13
13
|
* 2. Ensures uv is installed
|
|
14
14
|
* 3. Copies runtime to ~/.claude/vds-scripts/
|
|
15
15
|
* 4. Runs uv sync
|
|
@@ -23,7 +23,25 @@ import { homedir } from 'os';
|
|
|
23
23
|
|
|
24
24
|
const IS_WIN = process.platform === 'win32';
|
|
25
25
|
const IS_MAC = process.platform === 'darwin';
|
|
26
|
-
|
|
26
|
+
|
|
27
|
+
let _resolvedPython;
|
|
28
|
+
|
|
29
|
+
function resolvePython() {
|
|
30
|
+
if (_resolvedPython) return _resolvedPython;
|
|
31
|
+
const candidates = IS_WIN
|
|
32
|
+
? ['python3', 'python', 'py']
|
|
33
|
+
: ['python3', 'python'];
|
|
34
|
+
for (const cmd of candidates) {
|
|
35
|
+
try {
|
|
36
|
+
const out = execSync(`${cmd} --version`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
37
|
+
if (out.includes('Python')) { _resolvedPython = cmd; return cmd; }
|
|
38
|
+
} catch { /* not available */ }
|
|
39
|
+
}
|
|
40
|
+
_resolvedPython = IS_WIN ? 'python' : 'python3';
|
|
41
|
+
return _resolvedPython;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const PYTHON = resolvePython();
|
|
27
45
|
const VDS_DIR = join(homedir(), '.claude', 'vds-scripts');
|
|
28
46
|
const ENV_DIR = join(homedir(), '.vds');
|
|
29
47
|
const ENV_FILE = join(ENV_DIR, '.env');
|
|
@@ -37,7 +55,7 @@ function log(icon, msg) {
|
|
|
37
55
|
console.log(` ${icon} ${msg}`);
|
|
38
56
|
}
|
|
39
57
|
|
|
40
|
-
// ── 1. Check Python >= 3.
|
|
58
|
+
// ── 1. Check Python >= 3.12 ──
|
|
41
59
|
|
|
42
60
|
function checkPython() {
|
|
43
61
|
try {
|