@ngocsangairvds/vsaf 5.1.5 → 5.1.6
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 +7 -2
- package/packages/cli/dist/adapters/antigravity.js.map +1 -1
- package/packages/cli/dist/adapters/codex.js +1 -1
- package/packages/cli/dist/adapters/codex.js.map +1 -1
- package/packages/cli/dist/adapters/cursor.js +1 -1
- package/packages/cli/dist/adapters/cursor.js.map +1 -1
- package/packages/cli/dist/commands/install.d.ts.map +1 -1
- package/packages/cli/dist/commands/install.js +21 -1
- 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 +5 -2
- package/packages/cli/dist/commands/skill.js.map +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/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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## Phase Entry Protocol
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[REVIEW] [1/5] Checking prerequisites... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
1. Input:
|
|
8
|
+
- `.vsaf/docs/features/{feature-name}/05-srs.md`
|
|
9
|
+
- Code diff on feature branch
|
|
10
|
+
2. Check that SRS file exists
|
|
11
|
+
3. Check that feature branch exists
|
|
12
|
+
4. Read `.vsaf/docs/STATUS.md`
|
|
13
|
+
5. Read `CONTEXT.md`
|
|
14
|
+
6. Query `graph.json` for impact verification
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
[REVIEW] [1/5] Checking prerequisites... ✅
|
|
18
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
### Step 2: System Verification
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[REVIEW] [2/5] System verification — build, tests, scope... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use `/superpowers:verification-before-completion`:
|
|
8
|
+
- Build passes
|
|
9
|
+
- All tests GREEN
|
|
10
|
+
- No uncommitted files
|
|
11
|
+
- Scope matches SRS
|
|
12
|
+
Write to `08-review.md` §Verification.
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
[REVIEW] [2/5] System verification... ✅
|
|
16
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
### Step 3: Merge Strategy + Commit
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SHIP] [3/5] Commit source code + .vsaf/docs/... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use `/superpowers:finishing-a-development-branch`:
|
|
8
|
+
- Decide merge strategy (merge commit / squash / rebase)
|
|
9
|
+
- Resolve conflicts if any
|
|
10
|
+
- Verify final build passes
|
|
11
|
+
|
|
12
|
+
**Commit scope — ONLY commit:**
|
|
13
|
+
- Source code changes (implementation / fix)
|
|
14
|
+
- `.vsaf/docs/` folder (artifacts, CONTEXT.md, KNOWLEDGE.md, STATUS.md)
|
|
15
|
+
- `.gitignore` (if updated)
|
|
16
|
+
|
|
17
|
+
**DO NOT commit:**
|
|
18
|
+
- `graphify-out/` — local graph index
|
|
19
|
+
- `.gitnexus/` — local code index
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
[SHIP] [3/5] Commit source code + .vsaf/docs/... ✅
|
|
23
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
### Step 2: .gitignore Enforcement
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SHIP] [2/5] Checking .gitignore — ensuring index files are not committed... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
**MANDATORY** — MUST verify before committing:
|
|
8
|
+
|
|
9
|
+
1. Check that `.gitignore` contains:
|
|
10
|
+
```
|
|
11
|
+
graphify-out/
|
|
12
|
+
.gitnexus/
|
|
13
|
+
```
|
|
14
|
+
2. If MISSING → **AUTOMATICALLY add to `.gitignore`** and notify user
|
|
15
|
+
3. Verify with `git status` — `graphify-out/` and `.gitnexus/` DO NOT appear in staged/unstaged files
|
|
16
|
+
4. If they still appear → `git rm --cached -r graphify-out/ .gitnexus/` before committing
|
|
17
|
+
|
|
18
|
+
⚠️ **ABSOLUTELY DO NOT commit `graphify-out/` or `.gitnexus/`** — these are local indexes, each machine builds its own.
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
[SHIP] [2/5] Checking .gitignore... ✅
|
|
22
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
### Step 4: Push + PR
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SHIP] [4/5] Push branch + create PR... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Generate PR description from review artifacts:
|
|
8
|
+
- Read the review file from `{artifact-dir}` — summary, impact, test results
|
|
9
|
+
- Create a structured PR description
|
|
10
|
+
- Open PR (or suggest command if multi-repo)
|
|
11
|
+
|
|
12
|
+
**Branch naming:** `feat/{feature-name}`
|
|
13
|
+
|
|
14
|
+
**Single repo:**
|
|
15
|
+
```bash
|
|
16
|
+
git push -u origin {branch}
|
|
17
|
+
gh pr create --title "{title}" --body "{description}"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Multi-repo:**
|
|
21
|
+
```
|
|
22
|
+
For each repo with code changes:
|
|
23
|
+
cd {repo} && git push -u origin {branch}
|
|
24
|
+
gh pr create --title "{title}" --body "{description}"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Add note to PR description:**
|
|
28
|
+
```
|
|
29
|
+
> **Note for reviewer:** After pulling the code, run `npx gitnexus analyze` and `/graphify` to re-index locally.
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
[SHIP] [4/5] Push branch + create PR... ✅
|
|
34
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Phase Entry Protocol
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SHIP] [1/5] Checking prerequisites... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
1. Input: `.vsaf/docs/features/{feature-name}/08-review.md`
|
|
8
|
+
2. Check that the file exists + **check for Gate: APPROVED**
|
|
9
|
+
- No Gate → Stop: "Review has not been approved"
|
|
10
|
+
3. Check `.vsaf/docs/STATUS.md` — feature must be in "Knowledge Updated" status
|
|
11
|
+
- If not → Stop: "Feature has not passed feature-complete. Run `/sdlc-feature-complete` first."
|
|
12
|
+
4. Read `CONTEXT.md`
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
[SHIP] [1/5] Checking prerequisites... ✅
|
|
16
|
+
```
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
### Step 5: Ship Report
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SHIP] [5/5] Writing ship report... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Write file: `.vsaf/docs/features/{feature-name}/09-ship.md`
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
[SHIP] [5/5] Writing ship report... ✅
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Output
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
# Ship Report: {feature-name}
|
|
17
|
+
|
|
18
|
+
## PR
|
|
19
|
+
- {repo}: PR #{number} — {url}
|
|
20
|
+
|
|
21
|
+
## Merge Strategy
|
|
22
|
+
{merge commit / squash / rebase}
|
|
23
|
+
|
|
24
|
+
## Commit Scope
|
|
25
|
+
- Source code: {N} files
|
|
26
|
+
- .vsaf/docs/: {M} files (artifacts + knowledge)
|
|
27
|
+
- Excluded: graphify-out/, .gitnexus/ (local index)
|
|
28
|
+
|
|
29
|
+
## Final Status
|
|
30
|
+
- Build: PASS
|
|
31
|
+
- Tests: all GREEN
|
|
32
|
+
- Review: APPROVED
|
|
33
|
+
- Knowledge: UPDATED (feature-complete done)
|
|
34
|
+
|
|
35
|
+
## Traceability
|
|
36
|
+
US-001 → FR-001 → TC-001 → impl ✓
|
|
37
|
+
US-002 → FR-002 → TC-003 → impl ✓
|
|
38
|
+
|
|
39
|
+
## Post-pull Setup
|
|
40
|
+
After pulling the code, run:
|
|
41
|
+
- `npx gitnexus analyze` — re-index code
|
|
42
|
+
- `/graphify` — rebuild knowledge graph
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Phase Exit Protocol
|
|
46
|
+
|
|
47
|
+
Print PHASE REPORT:
|
|
48
|
+
```
|
|
49
|
+
═══════════════════════════════════════════
|
|
50
|
+
SHIP COMPLETE: {feature-name}
|
|
51
|
+
═══════════════════════════════════════════
|
|
52
|
+
Phase: 9 (Ship — final phase)
|
|
53
|
+
|
|
54
|
+
PR: #{number} — {url}
|
|
55
|
+
Commit: source code + .vsaf/docs/ only
|
|
56
|
+
Excluded: graphify-out/, .gitnexus/
|
|
57
|
+
|
|
58
|
+
Phases completed: 1→2→3→4→5→6→7→8→9
|
|
59
|
+
Artifacts: .vsaf/docs/features/{feature-name}/ (9 files)
|
|
60
|
+
|
|
61
|
+
Feature DONE.
|
|
62
|
+
═══════════════════════════════════════════
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Update `.vsaf/docs/STATUS.md` → move to "Completed Features".
|
|
66
|
+
|
|
67
|
+
## Rules
|
|
68
|
+
|
|
69
|
+
- DO NOT review code — that is the review phase's job
|
|
70
|
+
- Only ship code that is APPROVED + knowledge UPDATED (feature-complete done)
|
|
71
|
+
- PR description MUST be self-contained (reading the PR alone should be enough to understand the feature without reading artifacts)
|
|
72
|
+
- **ABSOLUTELY DO NOT commit `graphify-out/` or `.gitnexus/`** — verify .gitignore first
|
|
73
|
+
- **ONLY commit source code + `.vsaf/docs/`**
|
|
74
|
+
- Add re-index note to PR description for team members
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
### Step 4: Interface Verification
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SRS] [4/4] Interface verification via GitNexus... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use GitNexus `shape_check` — verify code structure matches SRS assumptions.
|
|
8
|
+
Append results to `05-srs.md` §Interface Contracts.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
[SRS] [4/4] Interface verification via GitNexus... ✅
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Gate
|
|
15
|
+
|
|
16
|
+
Human must approve SRS. Write `## Gate: APPROVED` at the end of the file.
|
|
17
|
+
|
|
18
|
+
**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).
|
|
19
|
+
|
|
20
|
+
## Output
|
|
21
|
+
|
|
22
|
+
- `.vsaf/docs/features/{feature-name}/05-srs.md` — SRS document (v4 template format)
|
|
23
|
+
- `.vsaf/docs/features/{feature-name}/05-srs-validation-report.md` — Validation report with scores
|
|
24
|
+
|
|
25
|
+
## Phase Exit Protocol
|
|
26
|
+
|
|
27
|
+
In PHASE REPORT:
|
|
28
|
+
- Output files: `05-srs.md`, `05-srs-validation-report.md`
|
|
29
|
+
- Validation score: {overall_score}% ({GO/CONDITIONAL GO/NO-GO})
|
|
30
|
+
- Suggestions: [1] Phase 5 Test Design (`/sdlc-test-design`) [2] Save artifacts
|
|
31
|
+
|
|
32
|
+
Update `.vsaf/docs/STATUS.md`.
|
|
33
|
+
|
|
34
|
+
**Notify the user:**
|
|
35
|
+
> Artifacts have been saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
36
|
+
|
|
37
|
+
## Rules
|
|
38
|
+
|
|
39
|
+
- Every FR/NFR MUST have a unique traceability ID
|
|
40
|
+
- DO NOT use vague language: "should", "might", "optionally" → replace with "MUST", "MUST NOT"
|
|
41
|
+
- All terms MUST exist in CONTEXT.md
|
|
42
|
+
- Every FR MUST be testable (have clear pass/fail criteria)
|
|
43
|
+
- SRS MUST follow the v4 template structure (12 sections)
|
|
44
|
+
- ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## Phase Entry Protocol
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SRS] [1/4] Checking input artifacts... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
1. Input:
|
|
8
|
+
- `.vsaf/docs/features/{feature-name}/02-prd.md`
|
|
9
|
+
- `.vsaf/docs/features/{feature-name}/03-adr.md`
|
|
10
|
+
- `.vsaf/docs/features/{feature-name}/04-epics.md`
|
|
11
|
+
2. Verify 02-prd.md AND 03-adr.md exist (04-epics.md optional):
|
|
12
|
+
- Any required file missing → Ask: "File not found. Have you run Phase 2 (PRD) and Phase 3 (Architecture)?"
|
|
13
|
+
3. Read `.vsaf/docs/STATUS.md`
|
|
14
|
+
4. Read `CONTEXT.md`
|
|
15
|
+
5. Query `graph.json` for code structure + business mapping (if exists)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
[SRS] [1/4] Checking input artifacts... ✅
|
|
19
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
### Step 3: Validate SRS
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SRS] [3/4] Validating SRS (8 dimensions)... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use `/sdlc-validate-srs` — validate SRS across 8 dimensions with weighted scoring.
|
|
8
|
+
|
|
9
|
+
- Scope: single file (`05-srs.md`)
|
|
10
|
+
- Cross-validate against: `02-prd.md`, `03-adr.md`
|
|
11
|
+
- Output: `.vsaf/docs/features/{feature-name}/05-srs-validation-report.md`
|
|
12
|
+
|
|
13
|
+
**Decision handling:**
|
|
14
|
+
|
|
15
|
+
| Validation Result | Action |
|
|
16
|
+
|---|---|
|
|
17
|
+
| **GO** (≥80%, no CRITICAL) | Print score summary, proceed to Step 4 |
|
|
18
|
+
| **CONDITIONAL GO** (60-79% or HIGH findings) | Print warnings + finding summary. Ask user: "Proceed despite warnings? (Y/N)" |
|
|
19
|
+
| **NO-GO** (<60% or CRITICAL findings) | **STOP.** Print CRITICAL findings. Ask user to fix 05-srs.md and re-run `/sdlc-srs` |
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
[SRS] [3/4] Validating SRS (8 dimensions)... ✅
|
|
23
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
### Step 2: Write SRS
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[SRS] [2/4] Writing SRS from PRD + ADR + Epics... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use `/sdlc-write-srs` — write SRS following the v4 template (12 sections) from PRD + Architecture + Epics.
|
|
8
|
+
|
|
9
|
+
Input:
|
|
10
|
+
- `02-prd.md` as PRD source
|
|
11
|
+
- `03-adr.md` as architecture context
|
|
12
|
+
- `04-epics.md` as epic breakdown (optional)
|
|
13
|
+
- Figma link from `CONTEXT.md` (optional)
|
|
14
|
+
|
|
15
|
+
Output: `.vsaf/docs/features/{feature-name}/05-srs.md`
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
[SRS] [2/4] Writing SRS from PRD + ADR + Epics... ✅
|
|
19
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
### Step 2: Boundary Tests
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[TEST-DESIGN] [3/4] Boundary & edge case tests... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use `/bmad-review-edge-case-hunter` — add boundary tests.
|
|
8
|
+
Race conditions, null/empty, overflow, concurrent access.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
[TEST-DESIGN] [3/4] Boundary & edge case tests... ✅
|
|
12
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
### Step 1: Generate Test Cases
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[TEST-DESIGN] [2/4] Generating test cases from SRS... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use `/bmad-qa-generate-e2e-tests` — generate test cases from SRS FRs/NFRs.
|
|
8
|
+
|
|
9
|
+
For each requirement, ensure ≥1 test case with:
|
|
10
|
+
|
|
11
|
+
1. **Unique ID** — TC-001 (sequential)
|
|
12
|
+
2. **Traceability** — TC → FR/NFR → PRD user story (US-xxx)
|
|
13
|
+
3. **Type** — unit / integration / e2e (based on requirement scope)
|
|
14
|
+
4. **Precondition** — system state before test
|
|
15
|
+
5. **Steps** — exact actions to execute
|
|
16
|
+
6. **Expected result** — concrete, verifiable outcome (not "should work")
|
|
17
|
+
|
|
18
|
+
Prioritize: happy path first, then error paths, then edge cases.
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
[TEST-DESIGN] [2/4] Generating test cases from SRS... ✅
|
|
22
|
+
```
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
### Step 3: Coverage Map
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[TEST-DESIGN] [4/4] Coverage mapping via GitNexus... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Use GitNexus `detect_changes` — predict files that will be modified.
|
|
8
|
+
Map test cases → files requiring coverage.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
[TEST-DESIGN] [4/4] Coverage mapping via GitNexus... ✅
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Output
|
|
15
|
+
|
|
16
|
+
Write file: `.vsaf/docs/features/{feature-name}/06-testcases.md`
|
|
17
|
+
|
|
18
|
+
```markdown
|
|
19
|
+
# Test Cases: {feature-name}
|
|
20
|
+
|
|
21
|
+
## TC-001 → FR-001 → US-003
|
|
22
|
+
- Type: unit
|
|
23
|
+
- File target: src/user/user.service.ts
|
|
24
|
+
- Precondition: ...
|
|
25
|
+
- Steps: ...
|
|
26
|
+
- Expected: ...
|
|
27
|
+
|
|
28
|
+
## TC-002 → FR-001 (edge case: empty input)
|
|
29
|
+
- Type: unit
|
|
30
|
+
- Precondition: ...
|
|
31
|
+
- Steps: ...
|
|
32
|
+
- Expected: ...
|
|
33
|
+
|
|
34
|
+
## Coverage Map
|
|
35
|
+
- src/user/user.service.ts → TC-001, TC-002
|
|
36
|
+
- src/user/user.controller.ts → TC-005, TC-006
|
|
37
|
+
|
|
38
|
+
## Traceability Matrix
|
|
39
|
+
| FR/NFR | Test Cases | Coverage |
|
|
40
|
+
|--------|-----------|----------|
|
|
41
|
+
| FR-001 | TC-001, TC-002 | ✓ |
|
|
42
|
+
| FR-002 | TC-003 | ✓ |
|
|
43
|
+
| NFR-001 | TC-010 | ✓ |
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Phase Exit Protocol
|
|
47
|
+
|
|
48
|
+
In PHASE REPORT:
|
|
49
|
+
- Output files: `.vsaf/docs/features/{feature-name}/06-testcases.md`
|
|
50
|
+
- Suggestions: [1] Phase 6 Implementation (`/sdlc-implement`) [2] Save artifacts
|
|
51
|
+
|
|
52
|
+
Update `.vsaf/docs/STATUS.md`.
|
|
53
|
+
|
|
54
|
+
**Notify the user:**
|
|
55
|
+
> Artifacts have been saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
56
|
+
|
|
57
|
+
## Rules
|
|
58
|
+
|
|
59
|
+
- Test cases derive from SRS (spec), NEVER from code
|
|
60
|
+
- Every FR/NFR MUST have ≥1 test case
|
|
61
|
+
- Traceability chain is mandatory: TC → FR → US
|
|
62
|
+
- DO NOT read source code when writing test cases
|
|
63
|
+
- ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
## Phase Entry Protocol
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
[TEST-DESIGN] [1/4] Checking input artifacts... ⏳
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
1. Input: `.vsaf/docs/features/{feature-name}/05-srs.md`
|
|
8
|
+
2. Verify file exists + **check Gate: APPROVED**
|
|
9
|
+
- No Gate → Stop: "SRS has not been approved"
|
|
10
|
+
3. Read `.vsaf/docs/STATUS.md`
|
|
11
|
+
4. Read `CONTEXT.md`
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
[TEST-DESIGN] [1/4] Checking input artifacts... ✅
|
|
15
|
+
```
|
|
@@ -4,7 +4,8 @@ description: "Sub-flow: Hotfix Implement (TDD) → Test Gate"
|
|
|
4
4
|
nodes:
|
|
5
5
|
- id: implement
|
|
6
6
|
description: "Implement — TDD (RED → GREEN → REFACTOR), SonarQube-in-loop"
|
|
7
|
-
|
|
7
|
+
bash: |
|
|
8
|
+
vsaf run sdlc/sdlc-hotfix-implement $ARGUMENTS
|
|
8
9
|
depends_on: []
|
|
9
10
|
|
|
10
11
|
- id: test-gate
|
|
@@ -4,18 +4,21 @@ description: "Hotfix — Analyze → PRD → Implement (TDD) → Ship"
|
|
|
4
4
|
nodes:
|
|
5
5
|
- id: analyze
|
|
6
6
|
description: "Analyze — grill user, GitNexus impact, root cause, blast radius"
|
|
7
|
-
|
|
7
|
+
bash: |
|
|
8
|
+
vsaf run sdlc/sdlc-hotfix-analyze $ARGUMENTS
|
|
8
9
|
workspace: false
|
|
9
10
|
|
|
10
11
|
- id: prd
|
|
11
12
|
description: "PRD — fix requirements, acceptance criteria, scope boundary"
|
|
12
|
-
|
|
13
|
+
bash: |
|
|
14
|
+
vsaf run sdlc/sdlc-hotfix-prd $ARGUMENTS
|
|
13
15
|
depends_on: [analyze]
|
|
14
16
|
workspace: false
|
|
15
17
|
|
|
16
18
|
- id: implement
|
|
17
19
|
description: "Implement — TDD (RED → GREEN → REFACTOR), SonarQube-in-loop"
|
|
18
|
-
|
|
20
|
+
bash: |
|
|
21
|
+
vsaf run sdlc/sdlc-hotfix-implement $ARGUMENTS
|
|
19
22
|
depends_on: [prd]
|
|
20
23
|
|
|
21
24
|
- id: test-gate
|
|
@@ -30,6 +33,7 @@ nodes:
|
|
|
30
33
|
|
|
31
34
|
- id: ship
|
|
32
35
|
description: "Ship — commit, PR on hotfix branch"
|
|
33
|
-
|
|
36
|
+
bash: |
|
|
37
|
+
vsaf run sdlc/sdlc-hotfix-ship $ARGUMENTS
|
|
34
38
|
depends_on: [test-gate]
|
|
35
39
|
workspace: false
|