goodvibesonly-cc 0.1.0 → 0.3.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.
package/README.md CHANGED
@@ -1,10 +1,25 @@
1
- # VibeCheck
1
+ ```
2
+ ╔═════════════════════════════════════════════════════════════════╗
3
+ ║ ║
4
+ ║ ░██████╗░██╗░░░██╗░█████╗░ ║
5
+ ║ ██╔════╝░██║░░░██║██╔══██╗ ║
6
+ ║ ██║░░██╗░╚██╗░██╔╝██║░░██║ ║
7
+ ║ ██║░░╚██╗░╚████╔╝░██║░░██║ ║
8
+ ║ ╚██████╔╝░░╚██╔╝░░╚█████╔╝ ║
9
+ ║ ░╚═════╝░░░░╚═╝░░░░╚════╝░ ║
10
+ ║ ║
11
+ ║ 🛡️ security scanner for vibe coders 🛡️ ║
12
+ ║ ║
13
+ ╚═════════════════════════════════════════════════════════════════╝
14
+ ```
15
+
16
+ # GoodVibesOnly
2
17
 
3
18
  **Security scanner for vibe-coded projects.** A Claude Code extension that automatically scans for vulnerabilities before you commit.
4
19
 
5
20
  ## How It Works
6
21
 
7
- VibeCheck uses Claude Code's hooks system to intercept git commands:
22
+ GoodVibesOnly uses Claude Code's hooks system to intercept git commands:
8
23
 
9
24
  1. **Hooks into git commit/push** - Automatically runs before any `git commit` or `git push`
10
25
  2. **Scans changed files** - Checks for hardcoded secrets, injection vulnerabilities, XSS, and more
@@ -14,7 +29,7 @@ VibeCheck uses Claude Code's hooks system to intercept git commands:
14
29
  ```
15
30
  You: git commit -m "add user api"
16
31
 
17
- 🛡️ VibeCheck Security Scan
32
+ 🛡️ GoodVibesOnly Security Scan
18
33
 
19
34
  🔴 CRITICAL - Must fix before commit:
20
35
 
@@ -47,8 +62,8 @@ npm install -g goodvibesonly-cc
47
62
  ### Option 3: Manual
48
63
 
49
64
  ```bash
50
- git clone https://github.com/YOURNAME/vibecheck.git
51
- cd vibecheck
65
+ git clone https://github.com/YOURNAME/goodvibesonly.git
66
+ cd goodvibesonly
52
67
  node bin/install.js --global
53
68
  ```
54
69
 
@@ -58,14 +73,14 @@ node bin/install.js --global
58
73
  node bin/install.js --global # Install to ~/.claude/ (all projects)
59
74
  node bin/install.js --local # Install to ./.claude/ (this project)
60
75
  node bin/install.js --no-hooks # Skip hook installation (command/skill only)
61
- node bin/install.js --uninstall # Remove VibeCheck
76
+ node bin/install.js --uninstall # Remove GoodVibesOnly
62
77
  ```
63
78
 
64
79
  ## Usage
65
80
 
66
81
  ### Automatic (via hooks)
67
82
 
68
- Just use git normally. VibeCheck runs automatically:
83
+ Just use git normally. GoodVibesOnly runs automatically:
69
84
 
70
85
  ```bash
71
86
  git commit -m "message" # Scans before commit
@@ -75,13 +90,13 @@ git push # Scans before push
75
90
  ### Manual Scan
76
91
 
77
92
  ```
78
- /vibecheck
93
+ /goodvibesonly
79
94
  ```
80
95
 
81
96
  Or ask Claude:
82
97
  ```
83
98
  is this code safe?
84
- vibecheck this
99
+ goodvibesonly this
85
100
  check for security issues
86
101
  ```
87
102
 
@@ -116,14 +131,14 @@ check for security issues
116
131
  ## Project Structure
117
132
 
118
133
  ```
119
- vibecheck/
134
+ goodvibesonly/
120
135
  ├── bin/
121
136
  │ ├── install.js # Installer (copies files + sets up hooks)
122
137
  │ └── scan.js # Scanner script (runs via hooks)
123
138
  ├── commands/
124
- │ └── vibecheck.md # /vibecheck slash command
139
+ │ └── goodvibesonly.md # /goodvibesonly slash command
125
140
  ├── skills/
126
- │ └── vibecheck/
141
+ │ └── goodvibesonly/
127
142
  │ └── SKILL.md # Skill for Claude assistance
128
143
  ├── hooks/
129
144
  │ └── hooks.json # Hook configuration template
@@ -140,7 +155,7 @@ vibecheck/
140
155
 
141
156
  ## Technical Details
142
157
 
143
- VibeCheck installs a `PreToolUse` hook that intercepts Bash commands. When it detects `git commit` or `git push`:
158
+ GoodVibesOnly installs a `PreToolUse` hook that intercepts Bash commands. When it detects `git commit` or `git push`:
144
159
 
145
160
  1. Reads staged files via `git diff --cached --name-only`
146
161
  2. Scans each file against vulnerability patterns
@@ -156,7 +171,7 @@ The hook is configured in `~/.claude/settings.json`:
156
171
  "matcher": "Bash",
157
172
  "hooks": [{
158
173
  "type": "command",
159
- "command": "node \"~/.claude/vibecheck/scan.js\""
174
+ "command": "node \"~/.claude/goodvibesonly/scan.js\""
160
175
  }]
161
176
  }]
162
177
  }
@@ -174,9 +189,9 @@ node bin/install.js --uninstall --local
174
189
  Or manually:
175
190
 
176
191
  ```bash
177
- rm -rf ~/.claude/commands/vibecheck.md
178
- rm -rf ~/.claude/skills/vibecheck/
179
- rm -rf ~/.claude/vibecheck/
192
+ rm -rf ~/.claude/commands/goodvibesonly.md
193
+ rm -rf ~/.claude/skills/goodvibesonly/
194
+ rm -rf ~/.claude/goodvibesonly/
180
195
  # Then remove the hook from ~/.claude/settings.json
181
196
  ```
182
197
 
package/bin/install.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * VibeCheck Installer
4
+ * GoodVibesOnly Installer
5
5
  *
6
- * Installs VibeCheck as a Claude Code extension with:
7
- * - Slash command: /vibecheck
6
+ * Installs GoodVibesOnly as a Claude Code extension with:
7
+ * - Slash command: /goodvibesonly
8
8
  * - Auto-invoke skill for commit/push detection
9
9
  * - PreToolUse hook for automatic scanning before git commit/push
10
10
  */
@@ -69,12 +69,12 @@ function installHooks(targetDir, scanScriptPath) {
69
69
  settings.hooks.PreToolUse = [];
70
70
  }
71
71
 
72
- // Check if vibecheck hook already exists
72
+ // Check if goodvibesonly hook already exists
73
73
  const existingHookIndex = settings.hooks.PreToolUse.findIndex(h =>
74
- h.hooks?.some(inner => inner.command?.includes('vibecheck') || inner.command?.includes('scan.js'))
74
+ h.hooks?.some(inner => inner.command?.includes('goodvibesonly') || inner.command?.includes('scan.js'))
75
75
  );
76
76
 
77
- const vibecheckHook = {
77
+ const goodvibesonlyHook = {
78
78
  matcher: 'Bash',
79
79
  hooks: [
80
80
  {
@@ -87,12 +87,12 @@ function installHooks(targetDir, scanScriptPath) {
87
87
 
88
88
  if (existingHookIndex >= 0) {
89
89
  // Update existing hook
90
- settings.hooks.PreToolUse[existingHookIndex] = vibecheckHook;
91
- console.log('Updated existing VibeCheck hook');
90
+ settings.hooks.PreToolUse[existingHookIndex] = goodvibesonlyHook;
91
+ console.log('Updated existing GoodVibesOnly hook');
92
92
  } else {
93
93
  // Add new hook
94
- settings.hooks.PreToolUse.push(vibecheckHook);
95
- console.log('Installed VibeCheck hook');
94
+ settings.hooks.PreToolUse.push(goodvibesonlyHook);
95
+ console.log('Installed GoodVibesOnly hook');
96
96
  }
97
97
 
98
98
  saveJson(settingsPath, settings);
@@ -106,8 +106,8 @@ function install(targetDir, skipHooks = false) {
106
106
 
107
107
  const commandsDest = path.join(targetDir, 'commands');
108
108
  const skillsDest = path.join(targetDir, 'skills');
109
- const vibecheckDir = path.join(targetDir, 'vibecheck');
110
- const scanScriptDest = path.join(vibecheckDir, 'scan.js');
109
+ const goodvibesonlyDir = path.join(targetDir, 'goodvibesonly');
110
+ const scanScriptDest = path.join(goodvibesonlyDir, 'scan.js');
111
111
 
112
112
  // Copy commands
113
113
  if (fs.existsSync(commandsSrc)) {
@@ -123,7 +123,7 @@ function install(targetDir, skipHooks = false) {
123
123
 
124
124
  // Copy scan script
125
125
  if (fs.existsSync(scanScriptSrc)) {
126
- console.log(`Installing scanner to ${vibecheckDir}`);
126
+ console.log(`Installing scanner to ${goodvibesonlyDir}`);
127
127
  copyFile(scanScriptSrc, scanScriptDest);
128
128
  }
129
129
 
@@ -132,23 +132,23 @@ function install(targetDir, skipHooks = false) {
132
132
  installHooks(targetDir, scanScriptDest);
133
133
  }
134
134
 
135
- console.log('\n✓ VibeCheck installed successfully!\n');
135
+ console.log('\n✓ GoodVibesOnly installed successfully!\n');
136
136
  console.log('Features:');
137
- console.log(' • /vibecheck command for manual scans');
137
+ console.log(' • /goodvibesonly command for manual scans');
138
138
  console.log(' • Auto-scan before git commit/push (via hooks)');
139
139
  console.log(' • Blocks commits with critical vulnerabilities');
140
140
  console.log('');
141
141
  console.log('Usage:');
142
- console.log(' /vibecheck Manual security scan');
142
+ console.log(' /goodvibesonly Manual security scan');
143
143
  console.log(' git commit -m "msg" Auto-scans before commit');
144
144
  console.log(' git push Auto-scans before push');
145
145
  console.log('');
146
146
  }
147
147
 
148
148
  function uninstall(targetDir) {
149
- const commandPath = path.join(targetDir, 'commands', 'vibecheck.md');
150
- const skillPath = path.join(targetDir, 'skills', 'vibecheck');
151
- const vibecheckDir = path.join(targetDir, 'vibecheck');
149
+ const commandPath = path.join(targetDir, 'commands', 'goodvibesonly.md');
150
+ const skillPath = path.join(targetDir, 'skills', 'goodvibesonly');
151
+ const goodvibesonlyDir = path.join(targetDir, 'goodvibesonly');
152
152
  const settingsPath = path.join(targetDir, 'settings.json');
153
153
 
154
154
  let removed = false;
@@ -156,20 +156,20 @@ function uninstall(targetDir) {
156
156
  // Remove command
157
157
  if (fs.existsSync(commandPath)) {
158
158
  fs.unlinkSync(commandPath);
159
- console.log('Removed /vibecheck command');
159
+ console.log('Removed /goodvibesonly command');
160
160
  removed = true;
161
161
  }
162
162
 
163
163
  // Remove skill
164
164
  if (fs.existsSync(skillPath)) {
165
165
  fs.rmSync(skillPath, { recursive: true });
166
- console.log('Removed vibecheck skill');
166
+ console.log('Removed goodvibesonly skill');
167
167
  removed = true;
168
168
  }
169
169
 
170
170
  // Remove scanner
171
- if (fs.existsSync(vibecheckDir)) {
172
- fs.rmSync(vibecheckDir, { recursive: true });
171
+ if (fs.existsSync(goodvibesonlyDir)) {
172
+ fs.rmSync(goodvibesonlyDir, { recursive: true });
173
173
  console.log('Removed scanner');
174
174
  removed = true;
175
175
  }
@@ -180,7 +180,7 @@ function uninstall(targetDir) {
180
180
  if (settings.hooks?.PreToolUse) {
181
181
  const originalLength = settings.hooks.PreToolUse.length;
182
182
  settings.hooks.PreToolUse = settings.hooks.PreToolUse.filter(h =>
183
- !h.hooks?.some(inner => inner.command?.includes('vibecheck') || inner.command?.includes('scan.js'))
183
+ !h.hooks?.some(inner => inner.command?.includes('goodvibesonly') || inner.command?.includes('scan.js'))
184
184
  );
185
185
  if (settings.hooks.PreToolUse.length < originalLength) {
186
186
  saveJson(settingsPath, settings);
@@ -191,9 +191,9 @@ function uninstall(targetDir) {
191
191
  }
192
192
 
193
193
  if (removed) {
194
- console.log('\n✓ VibeCheck uninstalled successfully!\n');
194
+ console.log('\n✓ GoodVibesOnly uninstalled successfully!\n');
195
195
  } else {
196
- console.log('VibeCheck was not installed in this location.\n');
196
+ console.log('GoodVibesOnly was not installed in this location.\n');
197
197
  }
198
198
  }
199
199
 
@@ -215,7 +215,7 @@ async function main() {
215
215
  const args = process.argv.slice(2);
216
216
 
217
217
  console.log('');
218
- console.log('🛡️ VibeCheck Installer');
218
+ console.log('🛡️ GoodVibesOnly Installer');
219
219
  console.log(' Security scanner for vibe-coded projects');
220
220
  console.log('');
221
221
 
@@ -239,7 +239,7 @@ async function main() {
239
239
  targetDir = LOCAL_CLAUDE_DIR;
240
240
  } else {
241
241
  // Interactive mode
242
- console.log('Where would you like to install VibeCheck?');
242
+ console.log('Where would you like to install GoodVibesOnly?');
243
243
  console.log('');
244
244
  console.log(' [g] Global (~/.claude/) - Available in all projects');
245
245
  console.log(' [l] Local (./.claude/) - This project only');
package/bin/scan.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * VibeCheck Scanner
4
+ * GoodVibesOnly Scanner
5
5
  *
6
6
  * Scans files for security vulnerabilities.
7
7
  * Used by Claude Code hooks to block commits with critical issues.
@@ -172,7 +172,7 @@ function formatFindings(findings) {
172
172
  bySeverity[f.severity].push(f);
173
173
  }
174
174
 
175
- let output = '\n🛡️ VibeCheck Security Scan\n\n';
175
+ let output = '\n🛡️ GoodVibesOnly Security Scan\n\n';
176
176
 
177
177
  const total = findings.length;
178
178
  if (total === 0) {
@@ -60,7 +60,7 @@ Run a security scan on the current changes before committing.
60
60
 
61
61
  If issues found:
62
62
  ```
63
- VibeCheck found [N] issues:
63
+ GoodVibesOnly found [N] issues:
64
64
 
65
65
  🔴 CRITICAL (must fix):
66
66
  1. [Type]: [file]:[line]
@@ -78,7 +78,7 @@ Want me to fix the critical issues before you commit?
78
78
 
79
79
  If clean:
80
80
  ```
81
- VibeCheck passed - no security issues found in [N] files
81
+ GoodVibesOnly passed - no security issues found in [N] files
82
82
  ```
83
83
 
84
84
  ## After Scanning
package/hooks/hooks.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "hooks": [
7
7
  {
8
8
  "type": "command",
9
- "command": "node \"{{VIBECHECK_PATH}}/bin/scan.js\"",
9
+ "command": "node \"{{GOODVIBESONLY_PATH}}/bin/scan.js\"",
10
10
  "timeout": 30
11
11
  }
12
12
  ]
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "goodvibesonly-cc",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Security scanner for vibe-coded projects - Claude Code extension",
5
5
  "type": "module",
6
6
  "bin": {
7
- "vibecheck": "./bin/install.js"
7
+ "goodvibesonly": "./bin/install.js"
8
8
  },
9
9
  "scripts": {
10
10
  "postinstall": "node bin/install.js --global"
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: vibecheck
3
- description: Security scanner for vibe-coded projects. AUTO-INVOKE this skill before any git commit, git push, or when user says "commit", "push", "ship it", "deploy", "is this safe?", "check for security issues", or "vibecheck". Also invoke after generating code that handles user input, authentication, database queries, or file operations.
2
+ name: goodvibesonly
3
+ description: Security scanner for vibe-coded projects. AUTO-INVOKE this skill before any git commit, git push, or when user says "commit", "push", "ship it", "deploy", "is this safe?", "check for security issues", or "goodvibesonly". Also invoke after generating code that handles user input, authentication, database queries, or file operations.
4
4
  ---
5
5
 
6
- # VibeCheck - Security Scanner
6
+ # GoodVibesOnly - Security Scanner
7
7
 
8
8
  Automatically scan for security vulnerabilities before code leaves the developer's machine.
9
9
 
@@ -20,7 +20,7 @@ Run this skill WHEN user says:
20
20
  - "ship it"
21
21
  - "is this safe?"
22
22
  - "check security"
23
- - "vibecheck"
23
+ - "goodvibesonly"
24
24
  - "ready to deploy"
25
25
 
26
26
  ## Quick Scan Checklist
@@ -94,7 +94,7 @@ http://(?!localhost) # Non-HTTPS
94
94
  ## Example Output
95
95
 
96
96
  ```
97
- 🛡️ VibeCheck Security Scan
97
+ 🛡️ GoodVibesOnly Security Scan
98
98
 
99
99
  Scanned 8 files with changes.
100
100
 
@@ -105,7 +105,7 @@ Scanned 8 files with changes.
105
105
  const API_KEY = "sk-abc123..."
106
106
  → Move to environment variable
107
107
 
108
- 2. SQL Injection
108
+ 2. SQL Injection
109
109
  src/db/users.js:42
110
110
  db.query("SELECT * FROM users WHERE id = " + id)
111
111
  → Use parameterized query: db.query("SELECT * FROM users WHERE id = ?", [id])