@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/prd/SKILL.md
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-prd
|
|
3
|
-
description: Phase 2 — PRD via BMAD elicitation + create + validate + adversarial review + GitNexus impact
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 2: PRD (Product Requirements Document)
|
|
9
|
-
|
|
10
|
-
You are a Principal Product Owner. Mission: write a clear PRD that is validated and has blast radius assessment.
|
|
11
|
-
|
|
12
|
-
## Language Rule
|
|
13
|
-
|
|
14
|
-
All output documents (02-prd.md) MUST be written in Vietnamese. Section headers, user stories, requirements, analysis — all in Vietnamese. Only keep English for: IDs (FR-001, NFR-001, US-001), technical terms (API, database, endpoint), and code references.
|
|
15
|
-
|
|
16
|
-
## Progress Protocol
|
|
17
|
-
|
|
18
|
-
Print progress at each step in this format:
|
|
19
|
-
```
|
|
20
|
-
[PRD] [step/5] description... ⏳
|
|
21
|
-
[PRD] [step/5] description... ✅
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Index Protection
|
|
25
|
-
|
|
26
|
-
⛔ Do NOT modify `graphify-out/` or `.gitnexus/` in this phase.
|
|
27
|
-
|
|
28
|
-
## Phase Entry Protocol
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
[PRD] [1/5] Checking prerequisites... ⏳
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
1. Input: `.vsaf/docs/features/{feature-name}/01-discovery.md`
|
|
35
|
-
2. Check if file exists:
|
|
36
|
-
- Does not exist → Ask: "File not found. Have you run Phase 1 Discovery?"
|
|
37
|
-
3. Read `.vsaf/docs/STATUS.md`
|
|
38
|
-
4. Read `CONTEXT.md`
|
|
39
|
-
5. Query `graph.json` for business domain context
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
[PRD] [1/5] Checking prerequisites... ✅
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Tasks
|
|
46
|
-
|
|
47
|
-
### Step 2: Elicitation (Grill Session)
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
[PRD] [2/5] Grill session — elicitation probing edge cases... ⏳
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Use `/bmad-advanced-elicitation` — grill 40-100 questions probing edge cases.
|
|
54
|
-
Record results in `02-prd.md` §Grill Log.
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
[PRD] [2/5] Grill session — elicitation probing edge cases... ✅
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Step 3: Create PRD
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
[PRD] [3/5] Creating PRD from grill results... ⏳
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Use `/bmad-create-prd` — create structured PRD from grill results (Step 2).
|
|
67
|
-
|
|
68
|
-
Ensure the output covers:
|
|
69
|
-
|
|
70
|
-
1. **Goals** — business goals + success metrics
|
|
71
|
-
2. **User Stories** — each MUST have acceptance criteria (Given/When/Then)
|
|
72
|
-
3. **Functional Requirements** — unique ID per requirement (FR-001, FR-002...)
|
|
73
|
-
4. **Non-Functional Requirements** — unique ID (NFR-001, NFR-002...) — performance, security, scalability
|
|
74
|
-
5. **Success Metrics** — measurable KPIs tied to goals
|
|
75
|
-
|
|
76
|
-
Write to `02-prd.md` §Requirements.
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
[PRD] [3/5] Creating PRD from grill results... ✅
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Step 4: Validate + Adversarial Review
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
[PRD] [4/5] Validate + adversarial review... ⏳
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**4a — Validate PRD:**
|
|
89
|
-
|
|
90
|
-
Use `/bmad-validate-prd` — validate the PRD against BMAD standards:
|
|
91
|
-
- Completeness — all user stories covered by FRs? All FRs traceable to a user story?
|
|
92
|
-
- Clarity — any ambiguous requirements? Can each FR be implemented without guessing?
|
|
93
|
-
- Testability — can each FR be verified with a test case?
|
|
94
|
-
- Consistency — any FRs that contradict each other?
|
|
95
|
-
|
|
96
|
-
Write to `02-prd.md` §Validation. If FAIL → fix inline, re-validate.
|
|
97
|
-
|
|
98
|
-
**4b — Adversarial review:**
|
|
99
|
-
|
|
100
|
-
Use `/bmad-review-adversarial-general` — cynical review to find gaps.
|
|
101
|
-
Write to `02-prd.md` §Adversarial.
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
[PRD] [4/5] Validate + adversarial review... ✅
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Step 5: Blast Radius
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
[PRD] [5/5] Assessing blast radius via GitNexus... ⏳
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Use GitNexus `impact` — assess scope of feature impact.
|
|
114
|
-
Write to `02-prd.md` §Blast Radius.
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
[PRD] [5/5] Assessing blast radius via GitNexus... ✅
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Gate
|
|
121
|
-
|
|
122
|
-
Human must approve the PRD. Write `## Gate: APPROVED` at the end of the file.
|
|
123
|
-
Do NOT proceed to Phase 3 without the Gate marker.
|
|
124
|
-
|
|
125
|
-
**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).
|
|
126
|
-
|
|
127
|
-
## Output
|
|
128
|
-
|
|
129
|
-
Write file: `.vsaf/docs/features/{feature-name}/02-prd.md`
|
|
130
|
-
|
|
131
|
-
```markdown
|
|
132
|
-
# PRD: {feature-name}
|
|
133
|
-
|
|
134
|
-
## Grill Log
|
|
135
|
-
{elicitation Q&A}
|
|
136
|
-
|
|
137
|
-
## Requirements
|
|
138
|
-
### User Stories
|
|
139
|
-
{with acceptance criteria}
|
|
140
|
-
### Functional Requirements
|
|
141
|
-
{FR-001, FR-002...}
|
|
142
|
-
### Non-Functional Requirements
|
|
143
|
-
{NFR-001, NFR-002...}
|
|
144
|
-
|
|
145
|
-
## Validation
|
|
146
|
-
{validate-prd result}
|
|
147
|
-
|
|
148
|
-
## Adversarial
|
|
149
|
-
{adversarial findings}
|
|
150
|
-
|
|
151
|
-
## Blast Radius
|
|
152
|
-
{GitNexus impact result}
|
|
153
|
-
|
|
154
|
-
## Gate: {PENDING / APPROVED by {name} on {date}}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## Artifact Auto-Save
|
|
158
|
-
|
|
159
|
-
After writing the file, print the message:
|
|
160
|
-
|
|
161
|
-
> Artifacts saved. If the session is interrupted, open a new session and run the next phase — data is safe.
|
|
162
|
-
|
|
163
|
-
## Phase Exit Protocol
|
|
164
|
-
|
|
165
|
-
Print PHASE REPORT:
|
|
166
|
-
- Feature: {feature-name}
|
|
167
|
-
- Status: COMPLETED
|
|
168
|
-
- Completed: elicitation, create PRD, validate, adversarial review, blast radius
|
|
169
|
-
- Output files: `.vsaf/docs/features/{feature-name}/02-prd.md`
|
|
170
|
-
- Suggested next steps:
|
|
171
|
-
[1] Phase 3 Architecture → `/sdlc-architecture`
|
|
172
|
-
[2] Save artifacts
|
|
173
|
-
|
|
174
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
175
|
-
|
|
176
|
-
## Rules
|
|
177
|
-
|
|
178
|
-
- ⛔ Do NOT skip elicitation — Shared Understanding is mandatory
|
|
179
|
-
- ⛔ Do NOT modify `graphify-out/` or `.gitnexus/`
|
|
180
|
-
- Every user story MUST have acceptance criteria
|
|
181
|
-
- Every FR/NFR MUST have a unique ID
|
|
182
|
-
- Do NOT proceed if blast radius = HIGH without human approval
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-review
|
|
3
|
-
description: Phase 7 — Review via Superpowers verification + BMAD code review + SonarQube re-check + GitNexus impact + debate
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 7: Review
|
|
9
|
-
|
|
10
|
-
You are Tech Lead + QA Lead. Mission: verify code against SRS, adversarial review, impact assessment.
|
|
11
|
-
|
|
12
|
-
## Progress Protocol
|
|
13
|
-
|
|
14
|
-
Print progress at each step in this format:
|
|
15
|
-
```
|
|
16
|
-
[REVIEW] [step/5] description... ⏳
|
|
17
|
-
[REVIEW] [step/5] description... ✅
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Index Protection
|
|
21
|
-
|
|
22
|
-
⛔ DO NOT modify `graphify-out/` or `.gitnexus/` in this phase.
|
|
23
|
-
|
|
24
|
-
## Artifact Auto-save
|
|
25
|
-
|
|
26
|
-
All artifacts are automatically saved to `.vsaf/docs/features/{feature-name}/` to ensure session continuity. If the session is interrupted, you can resume from the last artifact.
|
|
27
|
-
|
|
28
|
-
## Phase Entry Protocol
|
|
29
|
-
|
|
30
|
-
```
|
|
31
|
-
[REVIEW] [1/5] Checking prerequisites... ⏳
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
1. Input:
|
|
35
|
-
- `.vsaf/docs/features/{feature-name}/05-srs.md`
|
|
36
|
-
- Code diff on feature branch
|
|
37
|
-
2. Check that SRS file exists
|
|
38
|
-
3. Check that feature branch exists
|
|
39
|
-
4. Read `.vsaf/docs/STATUS.md`
|
|
40
|
-
5. Read `CONTEXT.md`
|
|
41
|
-
6. Query `graph.json` for impact verification
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
[REVIEW] [1/5] Checking prerequisites... ✅
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Tasks
|
|
48
|
-
|
|
49
|
-
### Step 2: System Verification
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
[REVIEW] [2/5] System verification — build, tests, scope... ⏳
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Use `/superpowers:verification-before-completion`:
|
|
56
|
-
- Build passes
|
|
57
|
-
- All tests GREEN
|
|
58
|
-
- No uncommitted files
|
|
59
|
-
- Scope matches SRS
|
|
60
|
-
Write to `08-review.md` §Verification.
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
[REVIEW] [2/5] System verification... ✅
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Step 3: Code Review
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
[REVIEW] [3/5] Adversarial code review... ⏳
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Use `/bmad-code-review` — adversarial code review on the feature branch diff with parallel review layers (Blind Hunter, Edge Case Hunter, Acceptance Auditor).
|
|
73
|
-
|
|
74
|
-
Ensure the review covers:
|
|
75
|
-
|
|
76
|
-
1. **Security scan** — SQL injection, XSS, command injection, hardcoded secrets, insecure deserialization
|
|
77
|
-
2. **Data integrity** — null dereference, resource leaks, race conditions, missing transactions
|
|
78
|
-
3. **SOLID violations** — god classes, leaky abstractions, interface segregation
|
|
79
|
-
4. **Naming consistency** — verify against CONTEXT.md terminology
|
|
80
|
-
5. **SRS compliance** — every FR/NFR implemented? Any extra scope not in SRS?
|
|
81
|
-
|
|
82
|
-
Classify each finding: MUST FIX / SHOULD FIX / NOTED.
|
|
83
|
-
Write to `08-review.md` §Code Review.
|
|
84
|
-
|
|
85
|
-
#### Quality Gate Re-check (SonarQube)
|
|
86
|
-
|
|
87
|
-
**IMPORTANT:** SonarQube rules were already applied in Phase 6 (Implementation). The Review phase only RE-CHECKS — confirming that code still meets standards after all changes.
|
|
88
|
-
|
|
89
|
-
Verify that code meets the `sonar-viettel` Quality Gate.
|
|
90
|
-
|
|
91
|
-
> **Standard (single source of truth):** **`.claude/skills/_shared/sdlc/sonar-viettel/quality-gate.md`** — the full New Code + Overall Code tables, the 357-rule parameters, and the importable `sonar-viettel-profile.xml` / `sonar-viettel-gate.json`. This is the **same** file Phase 6 (`/sdlc-implement`) coded against — review only confirms compliance, do not change the numbers.
|
|
92
|
-
|
|
93
|
-
**Hard fails to confirm (summary — see the shared doc for the full gate):**
|
|
94
|
-
- New Code: Issues / Blocker / Critical / Major / Vulnerabilities = **0**; Code Smells **≤ 20**; Security Hotspots Reviewed = **100%**; Duplicated **≤ 45%**; Maintainability / Reliability / Security Rating **≥ A**.
|
|
95
|
-
- Overall Code: Bugs = **0**; Code Smells **≤ 50**; same Blocker/Critical/Major/Vuln/Duplication/rating rules.
|
|
96
|
-
|
|
97
|
-
**How to execute (auto-detect — check whether `sonar-scanner` is on PATH):**
|
|
98
|
-
- SonarQube present → ensure it uses the `sonar-viettel` Profile + Gate (import from the shared folder if missing), run `sonar-scanner`, and check the report
|
|
99
|
-
- SonarQube absent → print `Sonar not found → self-checklist mode` and perform a manual re-check against the shared `quality-gate.md` (a fully supported path — SonarQube is OPTIONAL):
|
|
100
|
-
- Scan for security vulnerabilities (SQL injection, XSS, command injection, hardcoded secrets)
|
|
101
|
-
- Scan for bugs (null dereference, resource leaks, concurrency issues)
|
|
102
|
-
- Scan for code smells (long methods, deep nesting, duplicated blocks)
|
|
103
|
-
- Verify naming conventions, SOLID principles, duplicated blocks
|
|
104
|
-
- Write results to `08-review.md` §Quality Gate
|
|
105
|
-
|
|
106
|
-
**Quality Gate FAIL** → classify each issue as MUST FIX / SHOULD FIX / NOTED per the triage rules below.
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
[REVIEW] [3/5] Adversarial code review + Quality Gate re-check... ✅
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### Step 4: Impact Assessment
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
[REVIEW] [4/5] Impact assessment via GitNexus... ⏳
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Use GitNexus `detect_changes` + `impact`:
|
|
119
|
-
- Confirm only expected files changed
|
|
120
|
-
- Blast radius confidence scoring
|
|
121
|
-
Write to `08-review.md` §Impact.
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
[REVIEW] [4/5] Impact assessment... ✅
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Step 5: Debate (complex features only)
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
[REVIEW] [5/5] Multi-agent debate (if needed)... ⏳
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Use `/bmad-party-mode` — multi-agent debate:
|
|
134
|
-
- Security vs Performance vs Maintainability
|
|
135
|
-
Write to `08-review.md` §Debate.
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
[REVIEW] [5/5] Multi-agent debate... ✅
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Gate
|
|
142
|
-
|
|
143
|
-
MUST FIX = 0, Human approve.
|
|
144
|
-
|
|
145
|
-
**Automated mode (opt-in):** when `VSAF_CI=1` or `VSAF_AUTO_APPROVE=1` is set AND MUST FIX = 0, write `## Gate: APPROVED (auto · VSAF_CI · rationale: <one line>)` and proceed. If MUST FIX > 0, NEVER auto-approve — return to Phase 6 (Implement) regardless of the flag. Without the env flag, a human must approve (default).
|
|
146
|
-
|
|
147
|
-
Triage:
|
|
148
|
-
- **MUST FIX**: Security, data loss, SRS FR/NFR not satisfied, crash → Blocks ship
|
|
149
|
-
- **SHOULD FIX**: Performance, maintainability → Fix if time allows
|
|
150
|
-
- **NOTED**: Style, minor naming → Log only
|
|
151
|
-
|
|
152
|
-
If MUST FIX > 0 → return to Phase 6 (Implementation) with specific issues.
|
|
153
|
-
|
|
154
|
-
## Output
|
|
155
|
-
|
|
156
|
-
Write file: `.vsaf/docs/features/{feature-name}/08-review.md`
|
|
157
|
-
|
|
158
|
-
```markdown
|
|
159
|
-
# Review: {feature-name}
|
|
160
|
-
|
|
161
|
-
## Verification
|
|
162
|
-
- Build: PASS/FAIL
|
|
163
|
-
- Tests: {X}/{Y} passed
|
|
164
|
-
- Uncommitted files: none
|
|
165
|
-
- Scope: matches SRS ✓
|
|
166
|
-
|
|
167
|
-
## Code Review
|
|
168
|
-
### MUST FIX
|
|
169
|
-
- (none)
|
|
170
|
-
### SHOULD FIX
|
|
171
|
-
- {issue description}
|
|
172
|
-
### NOTED
|
|
173
|
-
- {minor items}
|
|
174
|
-
|
|
175
|
-
## Quality Gate (Re-check)
|
|
176
|
-
- SonarQube: {available / manual re-check}
|
|
177
|
-
- New Code: {PASS/FAIL} — Issues={N}, Blocker={N}, Critical={N}, Major={N}, Smells={N}, Vulns={N}, Duplication={N}%
|
|
178
|
-
- Overall: {PASS/FAIL} — Bugs={N}, Blocker={N}, Critical={N}, Major={N}, Smells={N}, Vulns={N}, Duplication={N}%
|
|
179
|
-
- Compile: PASS/FAIL
|
|
180
|
-
- Runtime: PASS/FAIL
|
|
181
|
-
|
|
182
|
-
## Impact
|
|
183
|
-
- Files changed: {N}
|
|
184
|
-
- Blast radius: {low/medium/high}
|
|
185
|
-
- Confidence: {%}
|
|
186
|
-
|
|
187
|
-
## Debate (if applicable)
|
|
188
|
-
{party-mode findings}
|
|
189
|
-
|
|
190
|
-
## Gate: {PENDING / APPROVED by {name} on {date}}
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
## Phase Exit Protocol
|
|
194
|
-
|
|
195
|
-
Print PHASE REPORT:
|
|
196
|
-
- Results: MUST FIX = {N}, SHOULD FIX = {N}, NOTED = {N}
|
|
197
|
-
- Output files: `08-review.md`
|
|
198
|
-
- Suggestion: [1] `/sdlc-feature-complete` (if APPROVED) [2] Return to Phase 6 (if MUST FIX > 0)
|
|
199
|
-
|
|
200
|
-
Update `.vsaf/docs/STATUS.md`.
|
|
201
|
-
|
|
202
|
-
## Rules
|
|
203
|
-
|
|
204
|
-
- Review against SRS (spec), NOT against code implementation
|
|
205
|
-
- Max 2 review rounds — if still failing → escalate to human
|
|
206
|
-
- MUST FIX items MUST be resolved before feature-complete
|
|
207
|
-
- **Quality Gate FAIL = MUST FIX** — Blocker, Critical, Vulnerability all block ship
|
|
208
|
-
- **Code does not compile = MUST FIX** — hard gate, no exceptions
|
|
209
|
-
- If there is no SonarQube, Claude performs a manual quality gate re-check
|
|
210
|
-
- **SonarQube only RE-CHECKS** — rules were applied in Phase 6, review only confirms compliance
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdlc-ship
|
|
3
|
-
description: Phase 9 — Ship via commit (source + .vsaf/docs only) + PR generation
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
author: "@ngocsangairvds/vsaf"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Phase 9: Ship
|
|
9
|
-
|
|
10
|
-
You are DevOps Engineer. Mission: ship approved code + updated knowledge — commit, create PR, write ship report.
|
|
11
|
-
|
|
12
|
-
## Progress Protocol
|
|
13
|
-
|
|
14
|
-
Print progress at each step in this format:
|
|
15
|
-
```
|
|
16
|
-
[SHIP] [step/5] description... ⏳
|
|
17
|
-
[SHIP] [step/5] description... ✅
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Phase Entry Protocol
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
[SHIP] [1/5] Checking prerequisites... ⏳
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
1. Input: `.vsaf/docs/features/{feature-name}/08-review.md`
|
|
27
|
-
2. Check that the file exists + **check for Gate: APPROVED**
|
|
28
|
-
- No Gate → Stop: "Review has not been approved"
|
|
29
|
-
3. Check `.vsaf/docs/STATUS.md` — feature must be in "Knowledge Updated" status
|
|
30
|
-
- If not → Stop: "Feature has not passed feature-complete. Run `/sdlc-feature-complete` first."
|
|
31
|
-
4. Read `CONTEXT.md`
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
[SHIP] [1/5] Checking prerequisites... ✅
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Tasks
|
|
38
|
-
|
|
39
|
-
### Step 2: .gitignore Enforcement
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
[SHIP] [2/5] Checking .gitignore — ensuring index files are not committed... ⏳
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
**MANDATORY** — MUST verify before committing:
|
|
46
|
-
|
|
47
|
-
1. Check that `.gitignore` contains:
|
|
48
|
-
```
|
|
49
|
-
graphify-out/
|
|
50
|
-
.gitnexus/
|
|
51
|
-
```
|
|
52
|
-
2. If MISSING → **AUTOMATICALLY add to `.gitignore`** and notify user
|
|
53
|
-
3. Verify with `git status` — `graphify-out/` and `.gitnexus/` DO NOT appear in staged/unstaged files
|
|
54
|
-
4. If they still appear → `git rm --cached -r graphify-out/ .gitnexus/` before committing
|
|
55
|
-
|
|
56
|
-
⚠️ **ABSOLUTELY DO NOT commit `graphify-out/` or `.gitnexus/`** — these are local indexes, each machine builds its own.
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
[SHIP] [2/5] Checking .gitignore... ✅
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### Step 3: Merge Strategy + Commit
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
[SHIP] [3/5] Commit source code + .vsaf/docs/... ⏳
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Use `/superpowers:finishing-a-development-branch`:
|
|
69
|
-
- Decide merge strategy (merge commit / squash / rebase)
|
|
70
|
-
- Resolve conflicts if any
|
|
71
|
-
- Verify final build passes
|
|
72
|
-
|
|
73
|
-
**Commit scope — ONLY commit:**
|
|
74
|
-
- Source code changes (implementation / fix)
|
|
75
|
-
- `.vsaf/docs/` folder (artifacts, CONTEXT.md, KNOWLEDGE.md, STATUS.md)
|
|
76
|
-
- `.gitignore` (if updated)
|
|
77
|
-
|
|
78
|
-
**DO NOT commit:**
|
|
79
|
-
- `graphify-out/` — local graph index
|
|
80
|
-
- `.gitnexus/` — local code index
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
[SHIP] [3/5] Commit source code + .vsaf/docs/... ✅
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Step 4: Push + PR
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
[SHIP] [4/5] Push branch + create PR... ⏳
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Generate PR description from review artifacts:
|
|
93
|
-
- Read the review file from `{artifact-dir}` — summary, impact, test results
|
|
94
|
-
- Create a structured PR description
|
|
95
|
-
- Open PR (or suggest command if multi-repo)
|
|
96
|
-
|
|
97
|
-
**Branch naming:** `feat/{feature-name}`
|
|
98
|
-
|
|
99
|
-
**Single repo:**
|
|
100
|
-
```bash
|
|
101
|
-
git push -u origin {branch}
|
|
102
|
-
gh pr create --title "{title}" --body "{description}"
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Multi-repo:**
|
|
106
|
-
```
|
|
107
|
-
For each repo with code changes:
|
|
108
|
-
cd {repo} && git push -u origin {branch}
|
|
109
|
-
gh pr create --title "{title}" --body "{description}"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
**Add note to PR description:**
|
|
113
|
-
```
|
|
114
|
-
> **Note for reviewer:** After pulling the code, run `npx gitnexus analyze` and `/graphify` to re-index locally.
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
[SHIP] [4/5] Push branch + create PR... ✅
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Step 5: Ship Report
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
[SHIP] [5/5] Writing ship report... ⏳
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
Write file: `.vsaf/docs/features/{feature-name}/09-ship.md`
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
[SHIP] [5/5] Writing ship report... ✅
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Output
|
|
134
|
-
|
|
135
|
-
```markdown
|
|
136
|
-
# Ship Report: {feature-name}
|
|
137
|
-
|
|
138
|
-
## PR
|
|
139
|
-
- {repo}: PR #{number} — {url}
|
|
140
|
-
|
|
141
|
-
## Merge Strategy
|
|
142
|
-
{merge commit / squash / rebase}
|
|
143
|
-
|
|
144
|
-
## Commit Scope
|
|
145
|
-
- Source code: {N} files
|
|
146
|
-
- .vsaf/docs/: {M} files (artifacts + knowledge)
|
|
147
|
-
- Excluded: graphify-out/, .gitnexus/ (local index)
|
|
148
|
-
|
|
149
|
-
## Final Status
|
|
150
|
-
- Build: PASS
|
|
151
|
-
- Tests: all GREEN
|
|
152
|
-
- Review: APPROVED
|
|
153
|
-
- Knowledge: UPDATED (feature-complete done)
|
|
154
|
-
|
|
155
|
-
## Traceability
|
|
156
|
-
US-001 → FR-001 → TC-001 → impl ✓
|
|
157
|
-
US-002 → FR-002 → TC-003 → impl ✓
|
|
158
|
-
|
|
159
|
-
## Post-pull Setup
|
|
160
|
-
After pulling the code, run:
|
|
161
|
-
- `npx gitnexus analyze` — re-index code
|
|
162
|
-
- `/graphify` — rebuild knowledge graph
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
## Phase Exit Protocol
|
|
166
|
-
|
|
167
|
-
Print PHASE REPORT:
|
|
168
|
-
```
|
|
169
|
-
═══════════════════════════════════════════
|
|
170
|
-
SHIP COMPLETE: {feature-name}
|
|
171
|
-
═══════════════════════════════════════════
|
|
172
|
-
Phase: 9 (Ship — final phase)
|
|
173
|
-
|
|
174
|
-
PR: #{number} — {url}
|
|
175
|
-
Commit: source code + .vsaf/docs/ only
|
|
176
|
-
Excluded: graphify-out/, .gitnexus/
|
|
177
|
-
|
|
178
|
-
Phases completed: 1→2→3→4→5→6→7→8→9
|
|
179
|
-
Artifacts: .vsaf/docs/features/{feature-name}/ (9 files)
|
|
180
|
-
|
|
181
|
-
Feature DONE.
|
|
182
|
-
═══════════════════════════════════════════
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
Update `.vsaf/docs/STATUS.md` → move to "Completed Features".
|
|
186
|
-
|
|
187
|
-
## Rules
|
|
188
|
-
|
|
189
|
-
- DO NOT review code — that is the review phase's job
|
|
190
|
-
- Only ship code that is APPROVED + knowledge UPDATED (feature-complete done)
|
|
191
|
-
- PR description MUST be self-contained (reading the PR alone should be enough to understand the feature without reading artifacts)
|
|
192
|
-
- **ABSOLUTELY DO NOT commit `graphify-out/` or `.gitnexus/`** — verify .gitignore first
|
|
193
|
-
- **ONLY commit source code + `.vsaf/docs/`**
|
|
194
|
-
- Add re-index note to PR description for team members
|