@ngocsangairvds/vsaf 3.0.5 → 3.0.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/.claude/skills/gitnexus/gitnexus-cli/SKILL.md +1 -1
- package/README.md +7 -5
- package/assets/templates/.claude/settings.json +0 -33
- package/assets/templates/CLAUDE.md +0 -1
- package/bin/vsaf.js +1 -1
- package/package.json +1 -1
- package/src/status.js +1 -1
- package/assets/templates/scripts/session-end-check.sh +0 -28
|
@@ -22,7 +22,7 @@ Run from the project root. This parses all source files, builds the knowledge gr
|
|
|
22
22
|
| `--force` | Force full re-index even if up to date |
|
|
23
23
|
| `--embeddings` | Enable embedding generation for semantic search (off by default) |
|
|
24
24
|
|
|
25
|
-
**When to run:** First time in a project, after major code changes, or when `gitnexus://repo/{name}/context` reports the index is stale.
|
|
25
|
+
**When to run:** First time in a project, after major code changes, or when `gitnexus://repo/{name}/context` reports the index is stale. Re-run `npx gitnexus analyze` manually after commits/merges when needed.
|
|
26
26
|
|
|
27
27
|
### status — Check index freshness
|
|
28
28
|
|
package/README.md
CHANGED
|
@@ -67,7 +67,7 @@ first 30 days.
|
|
|
67
67
|
```
|
|
68
68
|
.
|
|
69
69
|
├── .claude/
|
|
70
|
-
│ ├── settings.json # Local AI settings
|
|
70
|
+
│ ├── settings.json # Local AI settings
|
|
71
71
|
│ └── skills/ # VSAF + BMAD + GitNexus skills
|
|
72
72
|
├── _bmad/ # BMAD agent workspace
|
|
73
73
|
├── _bmad-output/ # BMAD generated artifacts (PRDs, arch docs)
|
|
@@ -91,13 +91,14 @@ Run `npx @ngocsangairvds/vsaf@latest --help` for the full list. Highlights:
|
|
|
91
91
|
| `vsaf index` | Re-index codebase (GitNexus) — run after every merge |
|
|
92
92
|
| `vsaf review` | 2-layer review coordinator |
|
|
93
93
|
| `vsaf status` | Show status of all installed tools |
|
|
94
|
-
| `vsaf mine` | Extract decisions
|
|
94
|
+
| `vsaf mine` | Extract decisions into MemPalace (weekly + after major decisions) |
|
|
95
95
|
|
|
96
96
|
## Workflow
|
|
97
97
|
|
|
98
98
|
Every feature follows an **8-step cycle**: scope → plan → impact analysis →
|
|
99
99
|
brainstorm → TDD execute → 2-layer review → push.
|
|
100
|
-
Bug fixes ("Quick Flow") skip planning
|
|
100
|
+
Bug fixes ("Quick Flow") skip BMAD planning docs, but still require
|
|
101
|
+
`gitnexus_impact` before editing symbols and `gitnexus_detect_changes` before commit.
|
|
101
102
|
|
|
102
103
|
See [1-setup-guide.md § Your First Project](docs/onboarding/1-setup-guide.md#5-your-first-project--a-walkthrough)
|
|
103
104
|
for a walkthrough, or [2-workflow-guide.md § JWT Demo](docs/onboarding/2-workflow-guide.md#4-full-sdlc-demo)
|
|
@@ -116,5 +117,6 @@ for a full command-by-command example.
|
|
|
116
117
|
---
|
|
117
118
|
|
|
118
119
|
**Core principles:** Plan before code. Impact analysis before touching any symbol.
|
|
119
|
-
2-layer review before every PR.
|
|
120
|
-
|
|
120
|
+
Run `gitnexus_detect_changes` before commit. 2-layer review before every PR.
|
|
121
|
+
Re-index after every merge. Mine decisions weekly and after major decisions.
|
|
122
|
+
MemPalace = decisions. Not CLAUDE.md.
|
|
@@ -1,37 +1,4 @@
|
|
|
1
1
|
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"PreToolUse": [
|
|
4
|
-
{
|
|
5
|
-
"matcher": "Edit|Write|Create|MultiEdit",
|
|
6
|
-
"hooks": [
|
|
7
|
-
{
|
|
8
|
-
"type": "command",
|
|
9
|
-
"command": "FILE=\"$TOOL_INPUT_FILE\"; if [ -n \"$FILE\" ]; then if echo \"$FILE\" | grep -qE '\\.env$|\\.env\\.|\\.pem$|\\.key$|id_rsa|id_ed25519|\\.claude/settings\\.json'; then echo 'BLOCK: Protected file. Manual edit required for secrets/config files.'; exit 2; fi; fi"
|
|
10
|
-
}
|
|
11
|
-
]
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"matcher": "Edit|Write|Create|Bash",
|
|
15
|
-
"hooks": [
|
|
16
|
-
{
|
|
17
|
-
"type": "command",
|
|
18
|
-
"command": "INPUT=\"$TOOL_INPUT\"; if [ -n \"$INPUT\" ]; then if echo \"$INPUT\" | grep -qE 'AKIA[0-9A-Z]{16}|ASIA[0-9A-Z]{16}|ghp_[a-zA-Z0-9]{36}|sk-[a-zA-Z0-9]{48}|xox[bpoas]-[a-zA-Z0-9-]+|eyJ[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]*'; then echo 'BLOCK: Hardcoded secret/token detected. Use environment variables.'; exit 2; fi; fi"
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
],
|
|
23
|
-
"Stop": [
|
|
24
|
-
{
|
|
25
|
-
"matcher": "",
|
|
26
|
-
"hooks": [
|
|
27
|
-
{
|
|
28
|
-
"type": "command",
|
|
29
|
-
"command": "ISSUES=\"\"; SECRETS=$(git diff --cached --diff-filter=ACM --name-only 2>/dev/null | xargs grep -lE \"AKIA[0-9A-Z]{16}|ghp_[a-zA-Z0-9]{36}|sk-[a-zA-Z0-9]{48}|xox[bpoas]-|BEGIN.*PRIVATE\" 2>/dev/null) || true; [ -n \"$SECRETS\" ] && ISSUES=\"${ISSUES}WARNING: Possible secrets staged: ${SECRETS} \"; LOGS=$(git diff --cached --name-only 2>/dev/null | xargs grep -lE \"console[.]log|debugger\" 2>/dev/null) || true; [ -n \"$LOGS\" ] && ISSUES=\"${ISSUES}WARNING: Debug artifacts in staged files: ${LOGS} \"; [ -n \"$ISSUES\" ] && echo \"$ISSUES\""
|
|
30
|
-
}
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
2
|
"permissions": {
|
|
36
3
|
"allow": [
|
|
37
4
|
"Read",
|
package/bin/vsaf.js
CHANGED
|
@@ -21,7 +21,7 @@ GLOBAL (once per machine → ~/.claude/)
|
|
|
21
21
|
Binaries: gitnexus, mempalace
|
|
22
22
|
|
|
23
23
|
PER PROJECT (per repo, run inside the repo root)
|
|
24
|
-
.claude/settings.json Local AI settings
|
|
24
|
+
.claude/settings.json Local AI settings
|
|
25
25
|
.claude/skills + .codex/skills BMAD skills synced for local clients
|
|
26
26
|
_bmad + _bmad-output BMAD workspace + generated artifacts folders
|
|
27
27
|
CLAUDE.md 8-step workflow rules
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngocsangairvds/vsaf",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.6",
|
|
4
4
|
"description": "VSAF — Agentic AI SDLC Framework. 4 integrated tools: BMAD, GitNexus, Superpowers, MemPalace. 2-layer review.",
|
|
5
5
|
"keywords": ["claude", "claude-code", "ai", "sdlc", "framework", "bmad", "gitnexus", "mempalace"],
|
|
6
6
|
"bin": {
|
package/src/status.js
CHANGED
|
@@ -14,7 +14,7 @@ async function showStatus() {
|
|
|
14
14
|
|
|
15
15
|
// ── Project ────────────────────────────────────────────────────────────────
|
|
16
16
|
console.log('\n\x1b[1mProject (current repo)\x1b[0m');
|
|
17
|
-
checkPath('.claude/settings.json', 'Project settings
|
|
17
|
+
checkPath('.claude/settings.json', 'Project settings');
|
|
18
18
|
checkPath('CLAUDE.md', 'Workflow rules');
|
|
19
19
|
checkPath('_bmad', 'BMAD workspace');
|
|
20
20
|
checkPath('_bmad-output', 'BMAD output folder');
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Session-end verification hook for Claude Code.
|
|
3
|
-
# Checks staged files for secrets and debug artifacts.
|
|
4
|
-
set -euo pipefail
|
|
5
|
-
|
|
6
|
-
cd "${PROJECT_DIR:-.}" 2>/dev/null || exit 0
|
|
7
|
-
|
|
8
|
-
ISSUES=""
|
|
9
|
-
|
|
10
|
-
# Check for hardcoded secrets in staged files
|
|
11
|
-
SECRETS=$(git diff --cached --diff-filter=ACM --name-only 2>/dev/null \
|
|
12
|
-
| xargs grep -lE 'AKIA[0-9A-Z]{16}|ghp_[a-zA-Z0-9]{36}|sk-[a-zA-Z0-9]{48}|xox[bpoas]-|BEGIN.*PRIVATE' 2>/dev/null) || true
|
|
13
|
-
|
|
14
|
-
if [ -n "$SECRETS" ]; then
|
|
15
|
-
ISSUES="${ISSUES}WARNING: Possible secrets staged: ${SECRETS} "
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
|
-
# Check for debug artifacts in staged files
|
|
19
|
-
LOGS=$(git diff --cached --name-only 2>/dev/null \
|
|
20
|
-
| xargs grep -lE 'console[.]log|debugger' 2>/dev/null) || true
|
|
21
|
-
|
|
22
|
-
if [ -n "$LOGS" ]; then
|
|
23
|
-
ISSUES="${ISSUES}WARNING: Debug artifacts in staged files: ${LOGS} "
|
|
24
|
-
fi
|
|
25
|
-
|
|
26
|
-
if [ -n "$ISSUES" ]; then
|
|
27
|
-
echo "$ISSUES"
|
|
28
|
-
fi
|