@sandrinio/vbounce 1.7.0 โ†’ 1.9.0

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.
Files changed (36) hide show
  1. package/README.md +168 -160
  2. package/bin/vbounce.mjs +250 -25
  3. package/brains/AGENTS.md +4 -4
  4. package/brains/CHANGELOG.md +2 -2
  5. package/brains/CLAUDE.md +4 -4
  6. package/brains/GEMINI.md +5 -5
  7. package/brains/SETUP.md +15 -15
  8. package/brains/claude-agents/architect.md +1 -1
  9. package/brains/claude-agents/developer.md +1 -1
  10. package/brains/claude-agents/devops.md +1 -1
  11. package/brains/claude-agents/qa.md +2 -1
  12. package/brains/claude-agents/scribe.md +1 -1
  13. package/brains/copilot/copilot-instructions.md +3 -3
  14. package/brains/cursor-rules/vbounce-docs.mdc +2 -2
  15. package/brains/cursor-rules/vbounce-process.mdc +3 -3
  16. package/brains/cursor-rules/vbounce-rules.mdc +2 -2
  17. package/brains/windsurf/.windsurfrules +2 -2
  18. package/docs/HOTFIX_EDGE_CASES.md +1 -1
  19. package/package.json +5 -5
  20. package/scripts/doctor.mjs +3 -3
  21. package/scripts/hotfix_manager.sh +2 -2
  22. package/scripts/init_gate_config.sh +1 -1
  23. package/scripts/pre_gate_common.sh +1 -1
  24. package/scripts/pre_gate_runner.sh +1 -1
  25. package/scripts/prep_qa_context.mjs +19 -1
  26. package/scripts/prep_sprint_context.mjs +24 -1
  27. package/scripts/suggest_improvements.mjs +1 -1
  28. package/scripts/validate_bounce_readiness.mjs +27 -0
  29. package/scripts/validate_report.mjs +1 -1
  30. package/scripts/vdoc_match.mjs +269 -0
  31. package/scripts/vdoc_staleness.mjs +199 -0
  32. package/scripts/verify_framework.mjs +1 -1
  33. package/skills/agent-team/SKILL.md +18 -11
  34. package/skills/doc-manager/SKILL.md +5 -5
  35. package/skills/improve/SKILL.md +2 -2
  36. package/templates/sprint_report.md +6 -2
package/bin/vbounce.mjs CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
+ import crypto from 'crypto';
5
6
  import { fileURLToPath } from 'url';
6
7
  import readline from 'readline';
7
8
 
@@ -65,10 +66,10 @@ const askQuestion = (query) => new Promise(resolve => rl.question(query, resolve
65
66
 
66
67
  function displayHelp() {
67
68
  console.log(`
68
- V-Bounce OS CLI
69
+ V-Bounce Engine CLI
69
70
 
70
71
  Usage:
71
- vbounce install <platform> Install V-Bounce OS into a project
72
+ vbounce install <platform> Install V-Bounce Engine into a project
72
73
  vbounce state show Show current sprint state
73
74
  vbounce state update <storyId> <state|--qa-bounce>
74
75
  vbounce sprint init <sprintId> <deliveryId> [--stories STORY-001,...]
@@ -81,6 +82,8 @@ Usage:
81
82
  vbounce prep qa <storyId> Generate QA context pack
82
83
  vbounce prep arch <storyId> Generate Architect context pack
83
84
  vbounce prep sprint <sprintId> Generate Sprint context pack
85
+ vbounce docs match --story <ID> Match story scope against vdoc manifest
86
+ vbounce docs check <sprintId> Detect stale vdocs and generate Scribe task
84
87
  vbounce trends Cross-sprint trend analysis
85
88
  vbounce suggest <sprintId> Generate improvement suggestions
86
89
  vbounce doctor Validate all configs and state files
@@ -192,6 +195,20 @@ if (command === 'suggest') {
192
195
  runScript('suggest_improvements.mjs', args.slice(1));
193
196
  }
194
197
 
198
+ // -- docs --
199
+ if (command === 'docs') {
200
+ rl.close();
201
+ if (sub === 'match') {
202
+ runScript('vdoc_match.mjs', args.slice(2));
203
+ } else if (sub === 'check') {
204
+ runScript('vdoc_staleness.mjs', args.slice(2));
205
+ } else {
206
+ console.error(`Unknown docs subcommand: ${sub}`);
207
+ console.error('Usage: vbounce docs match --story <ID> | vbounce docs check <sprintId>');
208
+ process.exit(1);
209
+ }
210
+ }
211
+
195
212
  // -- doctor --
196
213
  if (command === 'doctor') {
197
214
  rl.close();
@@ -211,6 +228,7 @@ if (command === 'install') {
211
228
  }
212
229
 
213
230
  const CWD = process.cwd();
231
+ const pkgVersion = JSON.parse(fs.readFileSync(path.join(pkgRoot, 'package.json'), 'utf8')).version;
214
232
 
215
233
  // Map vbounce platform names to vdoc platform names
216
234
  const vdocPlatformMap = {
@@ -271,34 +289,208 @@ if (command === 'install') {
271
289
  displayHelp();
272
290
  }
273
291
 
274
- console.log(`\n๐Ÿš€ Preparing to install V-Bounce OS for \x1b[36m${targetPlatform}\x1b[0m...\n`);
292
+ // ---------------------------------------------------------------------------
293
+ // Upgrade-safe install helpers
294
+ // ---------------------------------------------------------------------------
275
295
 
276
- const toCopy = [];
277
- const toOverwrite = [];
296
+ const META_PATH = path.join(CWD, '.bounce', 'install-meta.json');
297
+ const BACKUPS_DIR = path.join(CWD, '.bounce', 'backups');
278
298
 
279
- mapping.forEach(rule => {
280
- const sourcePath = path.join(pkgRoot, rule.src);
281
- const destPath = path.join(CWD, rule.dest);
299
+ /** Compute MD5 hash of a single file's contents. */
300
+ function computeFileHash(filePath) {
301
+ const content = fs.readFileSync(filePath);
302
+ return crypto.createHash('md5').update(content).digest('hex');
303
+ }
282
304
 
283
- if (!fs.existsSync(sourcePath)) {
284
- return; // Source does not exist internally, skip
305
+ /** Compute a combined hash for a directory by hashing all files sorted by relative path. */
306
+ function computeDirHash(dirPath) {
307
+ const hash = crypto.createHash('md5');
308
+ const entries = [];
309
+
310
+ function walk(dir, rel) {
311
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
312
+ const fullPath = path.join(dir, entry.name);
313
+ const relPath = path.join(rel, entry.name);
314
+ if (entry.isDirectory()) {
315
+ walk(fullPath, relPath);
316
+ } else {
317
+ entries.push({ relPath, fullPath });
318
+ }
319
+ }
285
320
  }
286
321
 
287
- if (fs.existsSync(destPath)) {
288
- toOverwrite.push(rule.dest);
289
- } else {
290
- toCopy.push(rule.dest);
322
+ walk(dirPath, '');
323
+ entries.sort((a, b) => a.relPath.localeCompare(b.relPath));
324
+ for (const e of entries) {
325
+ hash.update(e.relPath);
326
+ hash.update(fs.readFileSync(e.fullPath));
291
327
  }
292
- });
328
+ return hash.digest('hex');
329
+ }
330
+
331
+ /** Compute hash for a path (file or directory). */
332
+ function computeHash(p) {
333
+ const stats = fs.statSync(p);
334
+ return stats.isDirectory() ? computeDirHash(p) : computeFileHash(p);
335
+ }
336
+
337
+ /** Count files in a path (1 for a file, recursive count for a directory). */
338
+ function countFiles(p) {
339
+ const stats = fs.statSync(p);
340
+ if (!stats.isDirectory()) return 1;
341
+ let count = 0;
342
+ function walk(dir) {
343
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
344
+ if (entry.isDirectory()) walk(path.join(dir, entry.name));
345
+ else count++;
346
+ }
347
+ }
348
+ walk(p);
349
+ return count;
350
+ }
351
+
352
+ /** Read install-meta.json, returns null if missing. */
353
+ function readInstallMeta() {
354
+ if (!fs.existsSync(META_PATH)) return null;
355
+ try {
356
+ return JSON.parse(fs.readFileSync(META_PATH, 'utf8'));
357
+ } catch {
358
+ return null;
359
+ }
360
+ }
361
+
362
+ /** Write install-meta.json. */
363
+ function writeInstallMeta(version, platform, files, hashes) {
364
+ const meta = {
365
+ version,
366
+ platform,
367
+ installed_at: new Date().toISOString(),
368
+ files,
369
+ hashes
370
+ };
371
+ fs.mkdirSync(path.dirname(META_PATH), { recursive: true });
372
+ fs.writeFileSync(META_PATH, JSON.stringify(meta, null, 2) + '\n');
373
+ }
374
+
375
+ /** Backup files to .bounce/backups/<version>/. Removes previous backup first. */
376
+ function backupFiles(version, paths) {
377
+ // Remove previous backup (keep only one)
378
+ if (fs.existsSync(BACKUPS_DIR)) {
379
+ for (const entry of fs.readdirSync(BACKUPS_DIR, { withFileTypes: true })) {
380
+ if (entry.isDirectory()) {
381
+ fs.rmSync(path.join(BACKUPS_DIR, entry.name), { recursive: true, force: true });
382
+ }
383
+ }
384
+ }
385
+
386
+ const backupDir = path.join(BACKUPS_DIR, version);
387
+ fs.mkdirSync(backupDir, { recursive: true });
388
+
389
+ for (const relPath of paths) {
390
+ const src = path.join(CWD, relPath);
391
+ const dest = path.join(backupDir, relPath);
392
+
393
+ if (!fs.existsSync(src)) continue;
394
+
395
+ const stats = fs.statSync(src);
396
+ if (stats.isDirectory()) {
397
+ fs.mkdirSync(dest, { recursive: true });
398
+ fs.cpSync(src, dest, { recursive: true });
399
+ } else {
400
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
401
+ fs.copyFileSync(src, dest);
402
+ }
403
+ }
404
+
405
+ return backupDir;
406
+ }
407
+
408
+ /**
409
+ * Classify files into unchanged, modified, and newFiles.
410
+ * - unchanged: dest exists and matches what was installed (safe to overwrite)
411
+ * - modified: dest exists but differs from what was installed (user changed it)
412
+ * - newFiles: dest does not exist
413
+ */
414
+ function classifyFiles(mappingRules, meta) {
415
+ const unchanged = [];
416
+ const modified = [];
417
+ const newFiles = [];
418
+
419
+ for (const rule of mappingRules) {
420
+ const sourcePath = path.join(pkgRoot, rule.src);
421
+ const destPath = path.join(CWD, rule.dest);
422
+
423
+ if (!fs.existsSync(sourcePath)) continue;
424
+
425
+ if (!fs.existsSync(destPath)) {
426
+ newFiles.push(rule);
427
+ continue;
428
+ }
429
+
430
+ // Dest exists โ€” classify as unchanged or modified
431
+ if (!meta || !meta.hashes || !meta.hashes[rule.dest]) {
432
+ // No metadata (first upgrade) โ€” treat as modified to be safe
433
+ modified.push(rule);
434
+ continue;
435
+ }
436
+
437
+ const currentHash = computeHash(destPath);
438
+ const installedHash = meta.hashes[rule.dest];
439
+
440
+ if (currentHash === installedHash) {
441
+ unchanged.push(rule);
442
+ } else {
443
+ modified.push(rule);
444
+ }
445
+ }
446
+
447
+ return { unchanged, modified, newFiles };
448
+ }
449
+
450
+ // ---------------------------------------------------------------------------
451
+ // Begin install flow
452
+ // ---------------------------------------------------------------------------
293
453
 
294
- if (toCopy.length > 0) {
295
- console.log('The following will be \x1b[32mCREATED\x1b[0m:');
296
- toCopy.forEach(f => console.log(` + ${f}`));
454
+ const meta = readInstallMeta();
455
+ const isUpgrade = meta !== null;
456
+
457
+ if (isUpgrade) {
458
+ console.log(`\n๐Ÿš€ V-Bounce Engine \x1b[36m${pkgVersion}\x1b[0m (upgrading from \x1b[33m${meta.version}\x1b[0m)\n`);
459
+ } else {
460
+ console.log(`\n๐Ÿš€ Preparing to install V-Bounce Engine \x1b[36m${pkgVersion}\x1b[0m for \x1b[36m${targetPlatform}\x1b[0m...\n`);
297
461
  }
298
462
 
299
- if (toOverwrite.length > 0) {
300
- console.log('\nThe following will be \x1b[33mOVERWRITTEN\x1b[0m:');
301
- toOverwrite.forEach(f => console.log(` ! ${f}`));
463
+ const { unchanged, modified, newFiles } = classifyFiles(mapping, meta);
464
+
465
+ if (unchanged.length > 0) {
466
+ console.log('Will update (unchanged by you):');
467
+ for (const rule of unchanged) {
468
+ const destPath = path.join(CWD, rule.dest);
469
+ const n = countFiles(destPath);
470
+ const label = n > 1 ? `(${n} files)` : '';
471
+ console.log(` \x1b[32mโœ“\x1b[0m ${rule.dest} ${label}`);
472
+ }
473
+ }
474
+
475
+ if (modified.length > 0) {
476
+ const backupLabel = isUpgrade ? `.bounce/backups/${meta.version}/` : '.bounce/backups/pre-install/';
477
+ console.log(`\nModified by you (backed up to ${backupLabel}):`);
478
+ for (const rule of modified) {
479
+ console.log(` \x1b[33mโš \x1b[0m ${rule.dest}`);
480
+ }
481
+ }
482
+
483
+ if (newFiles.length > 0) {
484
+ console.log('\nNew in this version:');
485
+ for (const rule of newFiles) {
486
+ console.log(` \x1b[32m+\x1b[0m ${rule.dest}`);
487
+ }
488
+ }
489
+
490
+ if (unchanged.length === 0 && modified.length === 0 && newFiles.length === 0) {
491
+ rl.close();
492
+ console.log('Nothing to install โ€” all source files are missing from the package.');
493
+ process.exit(0);
302
494
  }
303
495
 
304
496
  console.log('');
@@ -312,13 +504,23 @@ if (command === 'install') {
312
504
  process.exit(0);
313
505
  }
314
506
 
507
+ // Backup modified files before overwriting
508
+ if (modified.length > 0) {
509
+ const backupVersion = isUpgrade ? meta.version : 'pre-install';
510
+ const backupDir = backupFiles(backupVersion, modified.map(r => r.dest));
511
+ console.log(`\n๐Ÿ“‚ Backed up modified files to ${path.relative(CWD, backupDir)}/`);
512
+ }
513
+
315
514
  console.log('\n๐Ÿ“ฆ Installing files...');
316
515
 
317
- mapping.forEach(rule => {
516
+ const installedFiles = [];
517
+ const hashes = {};
518
+
519
+ for (const rule of [...unchanged, ...modified, ...newFiles]) {
318
520
  const sourcePath = path.join(pkgRoot, rule.src);
319
521
  const destPath = path.join(CWD, rule.dest);
320
522
 
321
- if (!fs.existsSync(sourcePath)) return;
523
+ if (!fs.existsSync(sourcePath)) continue;
322
524
 
323
525
  const stats = fs.statSync(sourcePath);
324
526
  if (stats.isDirectory()) {
@@ -331,8 +533,16 @@ if (command === 'install') {
331
533
  }
332
534
  fs.copyFileSync(sourcePath, destPath);
333
535
  }
536
+
537
+ // Record hash of what we just installed (from source)
538
+ hashes[rule.dest] = computeHash(sourcePath);
539
+ installedFiles.push(rule.dest);
334
540
  console.log(` \x1b[32mโœ“\x1b[0m ${rule.dest}`);
335
- });
541
+ }
542
+
543
+ // Write install metadata
544
+ writeInstallMeta(pkgVersion, targetPlatform, installedFiles, hashes);
545
+ console.log(` \x1b[32mโœ“\x1b[0m .bounce/install-meta.json`);
336
546
 
337
547
  console.log('\nโš™๏ธ Installing dependencies...');
338
548
  try {
@@ -364,7 +574,22 @@ if (command === 'install') {
364
574
  }
365
575
  }
366
576
 
367
- console.log('\nโœ… V-Bounce OS successfully installed! Welcome to the team.\n');
577
+ // Auto-run doctor to verify installation
578
+ console.log('\n๐Ÿฉบ Running doctor to verify installation...');
579
+ const doctorPath = path.join(CWD, 'scripts', 'doctor.mjs');
580
+ if (fs.existsSync(doctorPath)) {
581
+ const result = spawnSync(process.execPath, [doctorPath], {
582
+ stdio: 'inherit',
583
+ cwd: CWD
584
+ });
585
+ if (result.status !== 0) {
586
+ console.error('\n \x1b[33mโš \x1b[0m Doctor reported issues. Review the output above.');
587
+ }
588
+ } else {
589
+ console.log(' \x1b[33mโš \x1b[0m Doctor script not found โ€” skipping verification.');
590
+ }
591
+
592
+ console.log('\nโœ… V-Bounce Engine successfully installed! Welcome to the team.\n');
368
593
  });
369
594
 
370
595
  } else {
package/brains/AGENTS.md CHANGED
@@ -1,10 +1,10 @@
1
- # V-Bounce OS โ€” Agent Brain (Codex CLI)
1
+ # V-Bounce Engine โ€” Agent Brain (Codex CLI)
2
2
 
3
- > This file configures OpenAI Codex CLI to operate within the V-Bounce OS framework.
3
+ > This file configures OpenAI Codex CLI to operate within the V-Bounce Engine framework.
4
4
 
5
5
  ## Identity
6
6
 
7
- You are an AI coding agent operating within **V-Bounce OS** โ€” a structured system for planning, implementing, and validating software using AI agents. You work as part of a team: Team Lead, Developer, QA, Architect, DevOps, and Scribe agents collaborate through structured reports.
7
+ You are an AI coding agent operating within **V-Bounce Engine** โ€” a structured system for planning, implementing, and validating software using AI agents. You work as part of a team: Team Lead, Developer, QA, Architect, DevOps, and Scribe agents collaborate through structured reports.
8
8
 
9
9
  You MUST follow the V-Bounce process. Deviating from it โ€” skipping validation, ignoring LESSONS.md, or writing code without reading the Story spec โ€” is a defect, not a shortcut.
10
10
 
@@ -106,7 +106,7 @@ Bouncing โ†’ Escalated (3+ failures)
106
106
  ## Framework Structure
107
107
 
108
108
  ```
109
- V-Bounce OS/
109
+ V-Bounce Engine/
110
110
  โ”œโ”€โ”€ brains/ โ€” Agent brain files (this file)
111
111
  โ”œโ”€โ”€ templates/ โ€” Document templates (immutable)
112
112
  โ”œโ”€โ”€ skills/ โ€” Agent skills (SKILL.md files)
@@ -1,4 +1,4 @@
1
- # V-Bounce OS Brains & Skills Changelog
1
+ # V-Bounce Engine Brains & Skills Changelog
2
2
 
3
3
  This log tracks modifications to the core agentic framework (e.g., `brains/`, `skills/`).
4
4
  Per **Rule 13: Framework Integrity**, anytime an entry is made here, all tool-specific brain files must be reviewed for consistency.
@@ -21,7 +21,7 @@ Per **Rule 13: Framework Integrity**, anytime an entry is made here, all tool-sp
21
21
  - **Modified**: `.gitignore` โ€” Removed `.bounce/.lancedb/` entry.
22
22
  - **Rationale**: Modern LLMs have 200K+ token context windows. The prep scripts (`vbounce prep sprint/qa/arch`) + LESSONS.md graduation provide targeted, deterministic context without embedding models, sync steps, or heavy dependencies. Removes ~50MB of node_modules and eliminates the most common setup failure point.
23
23
 
24
- ## [2026-03-12] โ€” V-Bounce OS Optimization Plan (12-Change Batch)
24
+ ## [2026-03-12] โ€” V-Bounce Engine Optimization Plan (12-Change Batch)
25
25
 
26
26
  ### State Management (Change #1)
27
27
  - **Added**: `.bounce/state.json` โ€” machine-readable sprint state snapshot for crash recovery. Tracks sprint_id, delivery_id, current_phase, last_action, and per-story state (V-Bounce state, bounce counts, worktree path, updated_at).
package/brains/CLAUDE.md CHANGED
@@ -1,10 +1,10 @@
1
- # V-Bounce OS โ€” Agent Brain
1
+ # V-Bounce Engine โ€” Agent Brain
2
2
 
3
- > This file configures Claude Code to operate within the V-Bounce OS framework.
3
+ > This file configures Claude Code to operate within the V-Bounce Engine framework.
4
4
 
5
5
  ## Identity
6
6
 
7
- You are an AI coding agent operating within **V-Bounce OS** โ€” a structured system for planning, implementing, and validating software using AI agents. You work as part of a team: Team Lead, Developer, QA, Architect, DevOps, and Scribe agents collaborate through structured reports.
7
+ You are an AI coding agent operating within **V-Bounce Engine** โ€” a structured system for planning, implementing, and validating software using AI agents. You work as part of a team: Team Lead, Developer, QA, Architect, DevOps, and Scribe agents collaborate through structured reports.
8
8
 
9
9
  You MUST follow the V-Bounce process. Deviating from it โ€” skipping validation, ignoring LESSONS.md, or writing code without reading the Story spec โ€” is a defect, not a shortcut.
10
10
 
@@ -127,7 +127,7 @@ Draft โ†’ Refinement โ†’ Ready to Bounce โ†’ Bouncing โ†’ QA Passed โ†’ Architec
127
127
  ## Framework Structure
128
128
 
129
129
  ```
130
- V-Bounce OS/
130
+ V-Bounce Engine/
131
131
  โ”œโ”€โ”€ brains/ โ€” Agent brain files (this file)
132
132
  โ”œโ”€โ”€ templates/ โ€” Document templates (immutable)
133
133
  โ”œโ”€โ”€ skills/ โ€” Agent skills (SKILL.md files)
package/brains/GEMINI.md CHANGED
@@ -1,11 +1,11 @@
1
- # V-Bounce OS โ€” Agent Brain
1
+ # V-Bounce Engine โ€” Agent Brain
2
2
 
3
- > This file configures Gemini CLI and Antigravity to operate within the V-Bounce OS framework.
3
+ > This file configures Gemini CLI and Antigravity to operate within the V-Bounce Engine framework.
4
4
  > Place at project root for Gemini CLI. For Antigravity, also copy skills to `.agents/skills/`.
5
5
 
6
6
  ## Identity
7
7
 
8
- You are an AI coding agent operating within **V-Bounce OS** โ€” a structured system for planning, implementing, and validating software using AI agents. You work as part of a team: Team Lead, Developer, QA, Architect, DevOps, and Scribe agents collaborate through structured reports.
8
+ You are an AI coding agent operating within **V-Bounce Engine** โ€” a structured system for planning, implementing, and validating software using AI agents. You work as part of a team: Team Lead, Developer, QA, Architect, DevOps, and Scribe agents collaborate through structured reports.
9
9
 
10
10
  You MUST follow the V-Bounce process. Deviating from it โ€” skipping validation, ignoring LESSONS.md, or writing code without reading the Story spec โ€” is a defect, not a shortcut.
11
11
 
@@ -27,7 +27,7 @@ For Antigravity: copy skills to `.agents/skills/` for workspace-scoped discovery
27
27
 
28
28
  ## CLI Commands
29
29
 
30
- V-Bounce OS ships a CLI. Use these commands for state management instead of editing files manually:
30
+ V-Bounce Engine ships a CLI. Use these commands for state management instead of editing files manually:
31
31
 
32
32
  ```bash
33
33
  # Sprint management
@@ -149,7 +149,7 @@ Draft โ†’ Refinement โ†’ Ready to Bounce โ†’ Bouncing โ†’ QA Passed โ†’ Architec
149
149
  ## Framework Structure
150
150
 
151
151
  ```
152
- V-Bounce OS/
152
+ V-Bounce Engine/
153
153
  โ”œโ”€โ”€ brains/ โ€” Agent brain files (this file)
154
154
  โ”œโ”€โ”€ templates/ โ€” Document templates (immutable)
155
155
  โ”œโ”€โ”€ skills/ โ€” Agent skills (SKILL.md files)
package/brains/SETUP.md CHANGED
@@ -1,13 +1,13 @@
1
- # Adding V-Bounce OS to Any Repo
1
+ # Adding V-Bounce Engine to Any Repo
2
2
 
3
- Step-by-step guide to set up V-Bounce OS in an existing or new project.
3
+ Step-by-step guide to set up V-Bounce Engine in an existing or new project.
4
4
 
5
5
  ## Prerequisites
6
6
 
7
- - A git repository (V-Bounce OS uses branches and worktrees)
7
+ - A git repository (V-Bounce Engine uses branches and worktrees)
8
8
  - Node.js installed (for validation and semantic search scripts)
9
9
  - At least one supported AI coding tool installed
10
- - The V-Bounce OS folder (this repo)
10
+ - The V-Bounce Engine folder (this repo)
11
11
 
12
12
  ## Step 1: Copy the Framework
13
13
 
@@ -15,11 +15,11 @@ Copy the `skills/` and `templates/` directories into your project root:
15
15
 
16
16
  ```bash
17
17
  # From your project root
18
- cp -r /path/to/V-Bounce-OS/skills/ ./skills/
19
- cp -r /path/to/V-Bounce-OS/templates/ ./templates/
18
+ cp -r /path/to/V-Bounce-Engine/skills/ ./skills/
19
+ cp -r /path/to/V-Bounce-Engine/templates/ ./templates/
20
20
  ```
21
21
 
22
- These are the core of V-Bounce OS โ€” skills define agent behavior, templates define document structure.
22
+ These are the core of V-Bounce Engine โ€” skills define agent behavior, templates define document structure.
23
23
 
24
24
  ## Step 2: Deploy Brain File for Your AI Tool
25
25
 
@@ -27,32 +27,32 @@ Pick the tool you're using and deploy the corresponding brain file:
27
27
 
28
28
  ### Claude Code
29
29
  ```bash
30
- cp /path/to/V-Bounce-OS/brains/CLAUDE.md ./CLAUDE.md
30
+ cp /path/to/V-Bounce-Engine/brains/CLAUDE.md ./CLAUDE.md
31
31
 
32
32
  # Deploy subagent configs
33
33
  mkdir -p .claude/agents
34
- cp /path/to/V-Bounce-OS/brains/claude-agents/*.md .claude/agents/
34
+ cp /path/to/V-Bounce-Engine/brains/claude-agents/*.md .claude/agents/
35
35
  ```
36
36
 
37
37
  ### Codex CLI (OpenAI)
38
38
  ```bash
39
- cp /path/to/V-Bounce-OS/brains/AGENTS.md ./AGENTS.md
39
+ cp /path/to/V-Bounce-Engine/brains/AGENTS.md ./AGENTS.md
40
40
  ```
41
41
 
42
42
  ### Cursor
43
43
  ```bash
44
44
  mkdir -p .cursor/rules
45
- cp /path/to/V-Bounce-OS/brains/cursor-rules/*.mdc .cursor/rules/
45
+ cp /path/to/V-Bounce-Engine/brains/cursor-rules/*.mdc .cursor/rules/
46
46
  ```
47
47
 
48
48
  ### Gemini CLI
49
49
  ```bash
50
- cp /path/to/V-Bounce-OS/brains/GEMINI.md ./GEMINI.md
50
+ cp /path/to/V-Bounce-Engine/brains/GEMINI.md ./GEMINI.md
51
51
  ```
52
52
 
53
53
  ### Antigravity
54
54
  ```bash
55
- cp /path/to/V-Bounce-OS/brains/GEMINI.md ./GEMINI.md
55
+ cp /path/to/V-Bounce-Engine/brains/GEMINI.md ./GEMINI.md
56
56
  cp -r skills/ .agents/skills/
57
57
  ```
58
58
 
@@ -141,7 +141,7 @@ your-project/
141
141
  โ”œโ”€โ”€ CLAUDE.md โ† brain file (or AGENTS.md / GEMINI.md)
142
142
  โ”œโ”€โ”€ LESSONS.md โ† project-specific rules (grows over time)
143
143
  โ”œโ”€โ”€ .claude/agents/ โ† subagent configs (Claude Code only)
144
- โ”œโ”€โ”€ skills/ โ† V-Bounce OS skills
144
+ โ”œโ”€โ”€ skills/ โ† V-Bounce Engine skills
145
145
  โ”‚ โ”œโ”€โ”€ agent-team/
146
146
  โ”‚ โ”œโ”€โ”€ doc-manager/
147
147
  โ”‚ โ”œโ”€โ”€ lesson/
@@ -192,4 +192,4 @@ brains/
192
192
  โ””โ”€โ”€ vbounce-docs.mdc
193
193
  ```
194
194
 
195
- Each brain file is self-contained and authoritative for its tool. When updating V-Bounce OS rules, update each brain file directly and keep them in sync.
195
+ Each brain file is self-contained and authoritative for its tool. When updating V-Bounce Engine rules, update each brain file directly and keep them in sync.
@@ -5,7 +5,7 @@ tools: Read, Glob, Grep, Bash
5
5
  disallowedTools: Edit, Write
6
6
  ---
7
7
 
8
- You are the **Architect Agent** in the V-Bounce OS framework.
8
+ You are the **Architect Agent** in the V-Bounce Engine framework.
9
9
 
10
10
  ## Your Role
11
11
  Audit the codebase for structural integrity, standards compliance, and long-term sustainability. You review โ€” you do not implement. You are the last gate before human review.
@@ -5,7 +5,7 @@ tools: Read, Edit, Write, Bash, Glob, Grep
5
5
  model: sonnet
6
6
  ---
7
7
 
8
- You are the **Developer Agent** in the V-Bounce OS framework.
8
+ You are the **Developer Agent** in the V-Bounce Engine framework.
9
9
 
10
10
  ## Your Role
11
11
  Implement features and fix bugs as specified in Story documents. You write code โ€” nothing more, nothing less.
@@ -5,7 +5,7 @@ tools: Read, Edit, Write, Bash, Glob, Grep
5
5
  model: sonnet
6
6
  ---
7
7
 
8
- You are the **DevOps Agent** in the V-Bounce OS framework.
8
+ You are the **DevOps Agent** in the V-Bounce Engine framework.
9
9
 
10
10
  ## Your Role
11
11
 
@@ -5,7 +5,7 @@ tools: Read, Bash, Glob, Grep
5
5
  disallowedTools: Edit, Write
6
6
  ---
7
7
 
8
- You are the **QA Agent** in the V-Bounce OS framework.
8
+ You are the **QA Agent** in the V-Bounce Engine framework.
9
9
 
10
10
  ## Your Role
11
11
  Validate that the Developer's implementation meets the Story's acceptance criteria. You test โ€” you do not fix. If something fails, you write a detailed bug report and send it back.
@@ -15,6 +15,7 @@ Validate that the Developer's implementation meets the Story's acceptance criter
15
15
  1. **Read LESSONS.md**: Scan for failure patterns relevant to this story. Treat matching entries as known risk areas to probe first.
16
16
  2. **Read the Developer Implementation Report** (`.bounce/reports/STORY-{ID}-{StoryName}-dev.md`) to understand what was built.
17
17
  3. **Read Story ยง2 The Truth** โ€” these are your pass/fail criteria. If the Gherkin scenarios don't pass, the bounce failed.
18
+ 4. **Check vdoc context**: If the QA context pack includes a `## vdoc Context` section, read the referenced product docs. Cross-reference the Developer's changes against documented behavior โ€” if the implementation contradicts what a vdoc describes, flag it as a behavioral regression even if the Gherkin scenarios pass. Check the Blast Radius warnings for features that may be indirectly affected.
18
19
 
19
20
  ## Pre-Computed Scan Results
20
21
 
@@ -5,7 +5,7 @@ tools: Read, Write, Bash, Glob, Grep
5
5
  model: sonnet
6
6
  ---
7
7
 
8
- You are the **Scribe Agent** in the V-Bounce OS framework.
8
+ You are the **Scribe Agent** in the V-Bounce Engine framework.
9
9
 
10
10
  ## Your Role
11
11
 
@@ -1,10 +1,10 @@
1
- # V-Bounce OS โ€” GitHub Copilot Instructions
1
+ # V-Bounce Engine โ€” GitHub Copilot Instructions
2
2
 
3
- This project uses **V-Bounce OS** โ€” a structured AI-agent development framework.
3
+ This project uses **V-Bounce Engine** โ€” a structured AI-agent development framework.
4
4
 
5
5
  ## What This Means for You
6
6
 
7
- You are operating in Tier 4 (Awareness) mode. You understand the project uses V-Bounce OS but you do not orchestrate agents.
7
+ You are operating in Tier 4 (Awareness) mode. You understand the project uses V-Bounce Engine but you do not orchestrate agents.
8
8
 
9
9
  ## Key Behaviors
10
10
 
@@ -1,10 +1,10 @@
1
1
  ---
2
- description: V-Bounce OS document hierarchy โ€” templates, locations, and report formats
2
+ description: V-Bounce Engine document hierarchy โ€” templates, locations, and report formats
3
3
  globs:
4
4
  alwaysApply: false
5
5
  ---
6
6
 
7
- # V-Bounce OS โ€” Document & Report Reference
7
+ # V-Bounce Engine โ€” Document & Report Reference
8
8
 
9
9
  ## Document Locations
10
10
 
@@ -1,12 +1,12 @@
1
1
  ---
2
- description: V-Bounce OS process rules โ€” the core framework for AI-assisted software development
2
+ description: V-Bounce Engine process rules โ€” the core framework for AI-assisted software development
3
3
  globs:
4
4
  alwaysApply: true
5
5
  ---
6
6
 
7
- # V-Bounce OS โ€” Process Rules
7
+ # V-Bounce Engine โ€” Process Rules
8
8
 
9
- You are an AI coding agent operating within **V-Bounce OS** โ€” a structured system for planning, implementing, and validating software using AI agents.
9
+ You are an AI coding agent operating within **V-Bounce Engine** โ€” a structured system for planning, implementing, and validating software using AI agents.
10
10
 
11
11
  ## The V-Bounce Process
12
12
 
@@ -1,10 +1,10 @@
1
1
  ---
2
- description: V-Bounce OS critical rules โ€” mandatory constraints for all implementation work
2
+ description: V-Bounce Engine critical rules โ€” mandatory constraints for all implementation work
3
3
  globs:
4
4
  alwaysApply: true
5
5
  ---
6
6
 
7
- # V-Bounce OS โ€” Critical Rules
7
+ # V-Bounce Engine โ€” Critical Rules
8
8
 
9
9
  ## Before Writing Code
10
10
  1. **Read LESSONS.md** at the project root. Every time. No exceptions.
@@ -1,6 +1,6 @@
1
- # V-Bounce OS โ€” Windsurf Rules
1
+ # V-Bounce Engine โ€” Windsurf Rules
2
2
 
3
- This project uses V-Bounce OS. You are operating in Tier 4 (Awareness) mode.
3
+ This project uses V-Bounce Engine. You are operating in Tier 4 (Awareness) mode.
4
4
 
5
5
  ## Before Writing Code
6
6