vibe-validate 0.17.0 → 0.17.1-rc.3

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,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe-validate",
3
- "version": "0.17.0",
3
+ "version": "0.17.1-rc.3",
4
4
  "description": "Git-aware validation orchestration for vibe coding (LLM-assisted development) - umbrella package",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,7 +8,9 @@
8
8
  "vv": "./bin/vv"
9
9
  },
10
10
  "files": [
11
- "bin"
11
+ "bin",
12
+ "scripts",
13
+ "skill"
12
14
  ],
13
15
  "keywords": [
14
16
  "validation",
@@ -48,7 +50,7 @@
48
50
  "access": "public"
49
51
  },
50
52
  "dependencies": {
51
- "@vibe-validate/cli": "0.17.0"
53
+ "@vibe-validate/cli": "0.17.1-rc.3"
52
54
  },
53
55
  "devDependencies": {
54
56
  "@types/node": "^20.14.8",
@@ -57,6 +59,8 @@
57
59
  },
58
60
  "scripts": {
59
61
  "test": "vitest run",
60
- "lint": "echo 'No linting needed for delegation wrappers'"
62
+ "lint": "echo 'No linting needed for delegation wrappers'",
63
+ "postinstall": "node scripts/install-skill.js",
64
+ "preuninstall": "node scripts/uninstall-skill.js"
61
65
  }
62
66
  }
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Install vibe-validate skill to ~/.claude/skills/vibe-validate
4
+ *
5
+ * This script runs after `npm install -g vibe-validate` to make the skill
6
+ * available to Claude Code globally.
7
+ */
8
+
9
+ import { copyFileSync, mkdirSync, existsSync, readdirSync, statSync, rmSync } from 'node:fs';
10
+ import { join, dirname } from 'node:path';
11
+ import { homedir } from 'node:os';
12
+ import { fileURLToPath } from 'node:url';
13
+
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+
17
+ // Determine skill source location
18
+ const PACKAGE_ROOT = join(__dirname, '..');
19
+ const SKILL_SOURCE = join(PACKAGE_ROOT, 'skill');
20
+
21
+ // Target location
22
+ const CLAUDE_SKILLS_DIR = join(homedir(), '.claude', 'skills', 'vibe-validate');
23
+
24
+ /**
25
+ * Recursively copy directory
26
+ */
27
+ function copyDirectory(src, dest) {
28
+ if (!existsSync(dest)) {
29
+ mkdirSync(dest, { recursive: true });
30
+ }
31
+
32
+ const entries = readdirSync(src);
33
+
34
+ for (const entry of entries) {
35
+ const srcPath = join(src, entry);
36
+ const destPath = join(dest, entry);
37
+
38
+ if (statSync(srcPath).isDirectory()) {
39
+ copyDirectory(srcPath, destPath);
40
+ } else {
41
+ copyFileSync(srcPath, destPath);
42
+ }
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Install skill
48
+ */
49
+ function installSkill() {
50
+ // Only install if skill source exists
51
+ if (!existsSync(SKILL_SOURCE)) {
52
+ console.log('⚠️ Skill source not found, skipping installation');
53
+ return;
54
+ }
55
+
56
+ // Only install for global installations
57
+ // Check if we're in node_modules (global or local)
58
+ const isGlobalInstall = __dirname.includes('/lib/node_modules/');
59
+
60
+ if (!isGlobalInstall) {
61
+ // Local project installation - skip skill install
62
+ return;
63
+ }
64
+
65
+ try {
66
+ console.log('📦 Installing vibe-validate skill to Claude Code...');
67
+
68
+ // Create ~/.claude/skills directory if needed
69
+ mkdirSync(dirname(CLAUDE_SKILLS_DIR), { recursive: true });
70
+
71
+ // Remove old installation if it exists (clean install)
72
+ if (existsSync(CLAUDE_SKILLS_DIR)) {
73
+ rmSync(CLAUDE_SKILLS_DIR, { recursive: true, force: true });
74
+ }
75
+
76
+ // Copy skill files
77
+ copyDirectory(SKILL_SOURCE, CLAUDE_SKILLS_DIR);
78
+
79
+ console.log(`✅ Skill installed to ${CLAUDE_SKILLS_DIR}`);
80
+ console.log(' Claude Code will automatically discover it on next launch');
81
+ } catch (error) {
82
+ console.error('⚠️ Failed to install skill:', error.message);
83
+ console.error(' You can manually copy docs/skill/ to ~/.claude/skills/vibe-validate');
84
+ }
85
+ }
86
+
87
+ // Run installation
88
+ installSkill();
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Uninstall vibe-validate skill from ~/.claude/skills/vibe-validate
4
+ *
5
+ * This script runs before `npm uninstall -g vibe-validate` to clean up the skill.
6
+ */
7
+
8
+ import { existsSync, rmSync } from 'node:fs';
9
+ import { join } from 'node:path';
10
+ import { homedir } from 'node:os';
11
+
12
+ // Target location
13
+ const CLAUDE_SKILLS_DIR = join(homedir(), '.claude', 'skills', 'vibe-validate');
14
+
15
+ /**
16
+ * Uninstall skill
17
+ */
18
+ function uninstallSkill() {
19
+ // Only uninstall for global installations
20
+ // Check if we're in node_modules (global or local)
21
+ const isGlobalInstall = process.cwd().includes('/lib/node_modules/');
22
+
23
+ if (!isGlobalInstall) {
24
+ // Local project installation - skip skill uninstall
25
+ return;
26
+ }
27
+
28
+ try {
29
+ if (existsSync(CLAUDE_SKILLS_DIR)) {
30
+ console.log('🗑️ Removing vibe-validate skill from Claude Code...');
31
+ rmSync(CLAUDE_SKILLS_DIR, { recursive: true, force: true });
32
+ console.log(`✅ Skill removed from ${CLAUDE_SKILLS_DIR}`);
33
+ }
34
+ } catch (error) {
35
+ console.error('⚠️ Failed to remove skill:', error.message);
36
+ console.error(` You can manually remove: ${CLAUDE_SKILLS_DIR}`);
37
+ }
38
+ }
39
+
40
+ // Run uninstallation
41
+ uninstallSkill();