@ngocsangairvds/vsaf 3.1.0 → 3.1.2

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 CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@ngocsangairvds/vsaf",
3
- "version": "3.1.0",
4
- "description": "VSAF — Agentic AI SDLC Framework. 4 integrated tools: BMAD, GitNexus, Superpowers, MemPalace. 2-layer review.",
5
- "keywords": ["claude", "claude-code", "ai", "sdlc", "framework", "bmad", "gitnexus", "mempalace"],
3
+ "version": "3.1.2",
4
+ "description": "VSAF — Agentic AI SDLC Framework. 3 integrated tools: BMAD, GitNexus, Superpowers. 2-layer review.",
5
+ "keywords": ["claude", "claude-code", "ai", "sdlc", "framework", "bmad", "gitnexus", "superpowers"],
6
6
  "bin": {
7
7
  "vsaf": "./bin/vsaf.js"
8
8
  },
package/src/global.js CHANGED
@@ -14,8 +14,6 @@ async function installGlobal() {
14
14
 
15
15
  installSkills();
16
16
  installBinary('gitnexus', () => exec('npm install -g gitnexus'));
17
- installPipx('mempalace', 'mempalace');
18
- installPipx('graphify', 'graphifyy');
19
17
 
20
18
  console.log('\n\x1b[32m\x1b[1m✓ Global infra ready.\x1b[0m\n');
21
19
  }
@@ -62,17 +60,4 @@ function installBinary(name, installFn) {
62
60
  : warn(`${name} install failed — run manually`);
63
61
  }
64
62
 
65
- function installPipx(cmd, pkg) {
66
- step(cmd);
67
- if (hasCommand(cmd)) { ok(`${cmd} already installed`); return; }
68
- if (!hasCommand('pipx')) {
69
- warn(`pipx not found — install pipx first, then run: pipx install ${pkg}`);
70
- return;
71
- }
72
- info(`Installing ${pkg} via pipx...`);
73
- exec(`pipx install ${pkg}`)
74
- ? ok(`${cmd} installed`)
75
- : warn(`${cmd} install failed — run: pipx install ${pkg}`);
76
- }
77
-
78
63
  module.exports = { installGlobal };
package/src/project.js CHANGED
@@ -18,7 +18,6 @@ async function installProject() {
18
18
  scaffoldBmadWorkspace();
19
19
  syncLocalBmadSkills();
20
20
  initGitNexus();
21
- initMemPalace();
22
21
 
23
22
  console.log('\n\x1b[32m\x1b[1m✓ Project ready.\x1b[0m');
24
23
  console.log('\n Next steps:');
@@ -146,12 +145,4 @@ function initGitNexus() {
146
145
  exec('gitnexus analyze', { cwd: CWD }) ? ok('Repository indexed') : warn('gitnexus analyze failed — run manually');
147
146
  }
148
147
 
149
- function initMemPalace() {
150
- step('MemPalace');
151
- if (!hasCommand('mempalace')) { warn('mempalace not found — run: vsaf global'); return; }
152
- if (fs.existsSync(path.join(CWD, 'mempalace.yaml'))) { ok('MemPalace already initialised'); return; }
153
- info('Initialising mempalace...');
154
- exec(`mempalace init --yes "${CWD}"`, { cwd: CWD }) ? ok('MemPalace initialised') : warn('mempalace init failed — run manually');
155
- }
156
-
157
148
  module.exports = { installProject };
package/src/status.js CHANGED
@@ -10,8 +10,6 @@ async function showStatus() {
10
10
  console.log('\x1b[1mGlobal (machine-wide → ~/.claude/)\x1b[0m');
11
11
  checkSkills();
12
12
  checkCmd('gitnexus', 'GitNexus');
13
- checkCmd('mempalace', 'MemPalace');
14
- checkCmd('graphify', 'Graphify');
15
13
 
16
14
  // ── Project ────────────────────────────────────────────────────────────────
17
15
  console.log('\n\x1b[1mProject (current repo)\x1b[0m');
@@ -22,7 +20,6 @@ async function showStatus() {
22
20
  checkProjectSkillDir('.claude/skills', 'Project BMAD skills (.claude)');
23
21
  checkProjectSkillDir('.codex/skills', 'Project BMAD skills (.codex)');
24
22
  checkPath('.gitnexus', 'GitNexus index');
25
- checkPath('mempalace.yaml', 'MemPalace');
26
23
  console.log('');
27
24
  }
28
25
 
package/src/workflow.js CHANGED
@@ -38,21 +38,6 @@ function runReview() {
38
38
  return false;
39
39
  }
40
40
 
41
- function runMine() {
42
- step('Mine');
43
- if (!hasCommand('mempalace')) {
44
- warn('mempalace not found — run: vsaf global');
45
- return false;
46
- }
47
-
48
- info('Running mempalace mine ~/chats/ --mode convos --extract general...');
49
- const mineOk = exec('mempalace mine ~/chats/ --mode convos --extract general');
50
- mineOk
51
- ? ok('MemPalace mine completed')
52
- : warn('mempalace mine failed — run manually');
53
- return mineOk;
54
- }
55
-
56
41
  function runClean() {
57
42
  step('Clean');
58
43
  if (!hasCommand('gitnexus')) {
@@ -66,4 +51,18 @@ function runClean() {
66
51
  return cleanOk;
67
52
  }
68
53
 
69
- module.exports = { runIndex, runReview, runMine, runClean };
54
+ function runServe() {
55
+ step('Serve');
56
+
57
+ if (!hasCommand('gitnexus')) {
58
+ warn('gitnexus not found — run: vsaf global');
59
+ return false;
60
+ }
61
+
62
+ info('Starting GitNexus web server on port 4747...');
63
+ info('Open https://gitnexus.vercel.app to browse your project graph');
64
+ info('Press Ctrl+C to stop');
65
+ return exec('gitnexus serve');
66
+ }
67
+
68
+ module.exports = { runIndex, runReview, runClean, runServe };
@@ -1,51 +0,0 @@
1
- # VSAF Memory Protocol
2
-
3
- Đây là protocol chung được tất cả vsaf skills sử dụng.
4
- Thực hiện tự động — không cần user nhắc.
5
-
6
- ---
7
-
8
- ## AUTO-READ (thực hiện ở đầu mỗi skill)
9
-
10
- Thực hiện tuần tự, không bỏ qua:
11
-
12
- 1. **claude-mem** — kiểm tra session context đã sẵn sàng:
13
- - Nếu có `$ARGUMENTS`: search claude-mem với keyword từ arguments
14
- - Dùng `mcp__plugin_claude-mem_mcp-search__search` nếu có thể
15
-
16
- 2. **MemPalace — search theo topic**:
17
- - Gọi `mcp__mempalace__mempalace_search` với keyword chính từ task/feature
18
- - Gọi `mcp__mempalace__mempalace_search` với tên module/domain liên quan
19
- - Gọi `mcp__mempalace__mempalace_search` với "pattern" hoặc "decision" nếu cần context rộng hơn
20
-
21
- 3. **Áp dụng kết quả**:
22
- - Nếu tìm thấy relevant memories: tóm tắt ngắn gọn trước khi bắt đầu ("Từ memory: team đã dùng pattern X, tránh Y")
23
- - Nếu không tìm thấy: tiếp tục bình thường, không báo lỗi
24
-
25
- ---
26
-
27
- ## AUTO-WRITE (thực hiện ở cuối vsaf-ship và vsaf-doc)
28
-
29
- Thực hiện tuần tự sau khi task hoàn tất:
30
-
31
- 1. **Diary** — ghi tóm tắt session:
32
- - Gọi `mcp__mempalace__mempalace_diary_write`
33
- - Nội dung: feature gì, approach nào, kết quả ra sao
34
-
35
- 2. **Decisions** — lưu từng quyết định quan trọng:
36
- - Với mỗi decision không hiển nhiên (pattern mới, workaround, trade-off):
37
- - Gọi `mcp__mempalace__mempalace_add_drawer`
38
- - Format: "Quyết định: [X]. Lý do: [Y]. Alternatives bỏ qua: [Z]"
39
-
40
- 3. **Reasoning chain** — capture knowledge graph:
41
- - Gọi `mcp__mempalace__mempalace_kg_add` để lưu relationships giữa các concepts
42
- - Ưu tiên: gotchas phát hiện khi implement, dependencies ẩn, edge cases thực tế
43
-
44
- ---
45
-
46
- ## Nguyên tắc
47
-
48
- - **Đọc trước, không đoán** — dù đã biết domain, vẫn phải check memory trước
49
- - **Ghi decisions, không ghi code** — code ở trong repo, memory lưu lý do và context
50
- - **Không báo user** khi memory trống — tiếp tục bình thường
51
- - **Không chờ user confirm** để đọc/ghi memory — làm tự động