checkmyvibe 1.0.2 → 1.1.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
@@ -42,21 +42,31 @@ If you prefer not to use `npx`, copy the files manually:
42
42
  1. Create a `checkmyvibe` directory inside your agent's skills path:
43
43
  * **Project-level (Claude Code):** `.claude/skills/checkmyvibe/`
44
44
  * **Global/Personal (Claude Code):** `~/.claude/skills/checkmyvibe/`
45
- 2. Copy `SKILL.md`, the `scripts/` folder, and the `references/` folder into that directory.
45
+ 2. Copy `SKILL.md`, the `scripts/` folder, `references/` folder, and `commands/` folder into that directory.
46
+ 3. (Optional for slash command support) Copy the files from `commands/` directly into `.claude/commands/` (or `~/.claude/commands/`).
46
47
 
47
48
  ---
48
49
 
49
50
  ## Usage
50
51
 
51
- Once installed, your AI coding agent will automatically recognize the `checkmyvibe` skill when relevant. You can trigger the workflow explicitly:
52
+ ### Full Production Readiness Audit
53
+ Run a complete audit across all categories before deploying or shipping:
54
+ * Command: `/checkmyvibe`
55
+ * Or prompt: *"Run checkmyvibe on this project"*
52
56
 
53
- ### Claude Code / Gemini CLI
54
- Open your terminal in the workspace and ask:
55
- > "Run checkmyvibe on this project"
56
- *Or:*
57
- > "Perform a production readiness check using checkmyvibe"
57
+ ### Focused / Scoped Scanning
58
+ When actively developing a specific feature, run focused scans for fast, targeted feedback without running the entire test suite:
58
59
 
59
- The agent will walk through the checks, execute the local python validation scripts, and print a prioritized markdown report (Critical / Should Fix / Worth Reviewing) with instructions on how to correct the issues.
60
+ | Slash Command | Scope / Keyword | Included Checks | Use Case |
61
+ | :--- | :--- | :--- | :--- |
62
+ | `/checkmyvibe-secrets` | `/checkmyvibe secrets` | Check 1 + Check 2 | Exposed API keys, hardcoded credentials, and `.gitignore` hygiene |
63
+ | `/checkmyvibe-auth` | `/checkmyvibe auth` | Check 3 | Missing, mock, stubbed, or bypassed authentication guards |
64
+ | `/checkmyvibe-db` | `/checkmyvibe db` | Check 4 | Database & BaaS rules, Supabase RLS policies, Firebase permissions |
65
+ | `/checkmyvibe-backend` | `/checkmyvibe backend` | Checks 3, 4, 5, 6 (server), 7 | All server-side logic: auth, DB/RLS, IDOR/BOLA, SQLi/input validation, pricing |
66
+ | `/checkmyvibe-frontend` | `/checkmyvibe frontend` | Checks 1 (client), 3 (client), 7 (client) | Client bundle key leaks, UI-only auth hiding, client-side pricing overrides |
67
+ | `/checkmyvibe-payment` | `/checkmyvibe payment` | Check 7 | Client-side payment tampering, price overrides, and checkout integrity |
68
+
69
+ The agent will walk through the scoped checks, execute relevant local helper scripts, and print a prioritized markdown report (Critical / Should Fix / Worth Reviewing) with concrete remediation steps.
60
70
 
61
71
  ---
62
72
 
package/SKILL.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: checkmyvibe
3
3
  description: >
4
- Use this skill when the user asks to "check my vibe", run a production readiness check, review code quality, do a sanity check, check for exposed environment variables, or check if the app is ready to launch/ship. Also trigger proactively when the agent is about to help deploy, publish, or push an application live, or when the codebase shows signs of AI-scaffolded patterns (Supabase/Firebase config, recently generated boilerplate, auth stubs, no existing verification) and the user has not had one done yet. Covers checking for missing or placeholder authentication, exposed secrets, permissive database rules, object-level authorization, input validation, and pricing configuration in client bundles.
4
+ Use this skill when the user asks to "check my vibe", run a production readiness check, review code quality, do a sanity check, check for exposed environment variables, or check if the app is ready to launch/ship, or runs a scoped check like `/checkmyvibe db`, `/checkmyvibe auth`, `/checkmyvibe secrets`, `/checkmyvibe payment`, `/checkmyvibe backend`, or `/checkmyvibe frontend`. Also trigger proactively when the agent is about to help deploy, publish, or push an application live, or when the codebase shows signs of AI-scaffolded patterns (Supabase/Firebase config, recently generated boilerplate, auth stubs, no existing verification) and the user has not had one done yet.
5
5
  ---
6
6
  # checkmyvibe — Production Readiness & Code Quality Check for Vibe-Coded Apps
7
7
 
@@ -27,14 +27,32 @@ expected them to hold real user data yet.
27
27
 
28
28
  This is a first-pass review for known, documented scaffolding failure patterns. It is not a
29
29
  comprehensive external validation, and it does not cover infrastructure hosting, third-party package
30
- issues, or novel/business-logic-specific flaws outside the six categories
31
- below. Never tell the user their app is completely "secure" or "safe" in an unqualified way.
30
+ issues, or novel/business-logic-specific flaws outside the categories below. Never tell the user their app is completely "secure" or "safe" in an unqualified way.
32
31
  The correct language is "no issues found in this pass" or "ready to ship as far as
33
32
  these checks go" — always paired with the scope reminder in the Final Summary
34
33
  section. If the app appears to handle payments, health data, or other regulated
35
34
  data, say explicitly that a professional verification is strongly recommended regardless
36
35
  of what this pass finds.
37
36
 
37
+ ## Scope selection
38
+
39
+ checkmyvibe supports targeted/scoped scanning for rapid iteration during development, as well as full audits before release. When a specific scope or slash command is specified, execute only the mapped checks:
40
+
41
+ | Scope / Command Keyword | Included Checks | Description / Focus Area |
42
+ | :--- | :--- | :--- |
43
+ | **`secrets`** | **Check 1 + Check 2** | Exposed credentials, API keys, tokens, and `.gitignore` file protection |
44
+ | **`auth`** | **Check 3** | Missing, mock, stubbed, or bypassed authentication guards |
45
+ | **`db`** | **Check 4** | Database & BaaS rules, Supabase RLS policies, Firebase/storage permissions |
46
+ | **`backend`** | **Check 3 + Check 4 + Check 5 + Check 6 (server-side) + Check 7** | All server-side logic: auth guards, database configs, IDOR/BOLA, SQLi/input validation, and payment processing |
47
+ | **`frontend`** | **Check 1 (client-exposed) + Check 3 (client-only auth) + Check 7 (client pricing)** | Client-side bundle leaks, UI-only auth hiding, and client-controlled payment/pricing logic |
48
+ | **`payment`** | **Check 7** | Client-side payment amount tampering, price overrides, and checkout integrity |
49
+ | *(no argument / `full`)* | **All Checks (1–7)** | Full production readiness and code quality audit |
50
+
51
+ ### Rules for Scoped Runs:
52
+ - **Execute only the selected checks:** Do not run unselected check scripts or inspect code outside the chosen scope.
53
+ - **Explicit scope transparency:** At the start and in the final summary of the report, clearly state which checks were run and which checks were skipped.
54
+ - **No false safety claims:** A clean scoped scan does **not** mean the app is ready for production. State clearly: *"This was a [scope]-only check. Run a full `/checkmyvibe` audit across all categories prior to launch."*
55
+
38
56
  ## Before you start
39
57
 
40
58
  1. **Analyze and understand the whole project first:** Walk the directory tree and analyze the repository configuration files before running any checks, generating findings, or providing instructions. Establish a solid high-level understanding of the architecture, components, and data flow.
@@ -306,11 +324,9 @@ End every review with, in this order:
306
324
  2. Total findings by severity, e.g. "2 Critical, 3 Should Fix, 1 Worth Reviewing"
307
325
  3. A one-line verdict: "Not ready to ship — fix the Critical items first" or "No
308
326
  blocking issues found in this pass — review the Should Fix items when you can"
309
- 4. The scope reminder: "This review covers common configuration patterns seen in AI-generated code —
310
- exposed secrets, auth stubs, database rules, object-level authorization, input validation,
311
- and client-side payment logic. It is not a comprehensive third-party safety audit or pentest. If this app
312
- handles payment, health, or other regulated data, get a professional external review
313
- before launch regardless of these results."
327
+ 4. The scope reminder:
328
+ - **For Full Audit:** "This review covers common configuration patterns seen in AI-generated code — exposed secrets, auth stubs, database rules, object-level authorization, input validation, and client-side payment logic. It is not a comprehensive third-party safety audit or pentest. If this app handles payment, health, or other regulated data, get a professional external review before launch regardless of these results."
329
+ - **For Scoped Scan:** "This was a focused [SCOPE]-only check ([LIST OF RUN CHECKS]). Skipped checks: [LIST OF SKIPPED CHECKS]. A clean scoped check does not mean the application is production-ready. Always run a full `/checkmyvibe` audit prior to release, and obtain a professional external security review if handling sensitive or regulated data."
314
330
 
315
331
  ## Notes for the agent
316
332
 
@@ -0,0 +1,3 @@
1
+ Read the checkmyvibe `SKILL.md`. Run only **Check 3 (missing or fake authentication)** from that skill.
2
+
3
+ Use the same report format, severity rubric, and final summary structure defined in `SKILL.md`, but scope the final summary to note that this was an authentication-only check (Checks 1, 2, 4, 5, 6, and 7 were skipped), not a full audit, and suggest running the full `/checkmyvibe` audit before launch.
@@ -0,0 +1,8 @@
1
+ Read the checkmyvibe `SKILL.md`. Run only the server-side / backend checks from that skill:
2
+ - **Check 3 (missing or fake authentication)**
3
+ - **Check 4 (database and backend-as-a-service misconfiguration)**
4
+ - **Check 5 (broken object-level authorization / IDOR)**
5
+ - **Check 6 (unvalidated inputs, server-side / query portion)**
6
+ - **Check 7 (payment and pricing logic)**
7
+
8
+ Use the same report format, severity rubric, and final summary structure defined in `SKILL.md`, but scope the final summary to note that this was a backend-only check (Check 1 client bundle secrets and Check 2 .gitignore hygiene were skipped), not a full audit, and suggest running the full `/checkmyvibe` audit before launch.
@@ -0,0 +1,3 @@
1
+ Read the checkmyvibe `SKILL.md`. Run only **Check 4 (database and backend-as-a-service misconfiguration)** from that skill.
2
+
3
+ Use the same report format, severity rubric, and final summary structure defined there, but scope the final summary to note that this was a database-only check (Checks 1, 2, 3, 5, 6, and 7 were skipped), not a full audit, and suggest running the full `/checkmyvibe` audit before launch.
@@ -0,0 +1,6 @@
1
+ Read the checkmyvibe `SKILL.md`. Run only the frontend / client-side checks from that skill:
2
+ - **Check 1 (client-exposed secrets in frontend bundles and environment configurations)**
3
+ - **Check 3 (client-side-only auth checks / UI hiding without server enforcement)**
4
+ - **Check 7 (client-side payment or pricing logic)**
5
+
6
+ Use the same report format, severity rubric, and final summary structure defined in `SKILL.md`, but scope the final summary to note that this was a frontend-only check (Check 2 .gitignore hygiene, Check 4 database rules, Check 5 IDOR, Check 6 server input validation, and full server auth checks were skipped), not a full audit, and suggest running the full `/checkmyvibe` audit before launch.
@@ -0,0 +1,3 @@
1
+ Read the checkmyvibe `SKILL.md`. Run only **Check 7 (client-side payment or pricing logic)** from that skill.
2
+
3
+ Use the same report format, severity rubric, and final summary structure defined in `SKILL.md`, but scope the final summary to note that this was a payment/pricing-only check (Checks 1, 2, 3, 4, 5, and 6 were skipped), not a full audit, and suggest running the full `/checkmyvibe` audit before launch.
@@ -0,0 +1,3 @@
1
+ Read the checkmyvibe `SKILL.md`. Run only **Check 1 (exposed secrets and credentials)** and **Check 2 (.gitignore hygiene)** from that skill.
2
+
3
+ Use the same report format, severity rubric, and final summary structure defined in `SKILL.md`, but scope the final summary to note that this was a secrets-only check (Checks 3, 4, 5, 6, and 7 were skipped), not a full audit, and suggest running the full `/checkmyvibe` audit before launch.
@@ -0,0 +1,3 @@
1
+ Read the checkmyvibe `SKILL.md`. Run a full production readiness and code quality audit across all checks (Checks 1 through 7: exposed secrets, .gitignore hygiene, missing/fake auth, database misconfigurations, IDOR/BOLA, unvalidated inputs, and client-side payment logic).
2
+
3
+ Use the report format, severity rubric, and final summary structure defined in `SKILL.md`.
package/install.js CHANGED
@@ -9,13 +9,17 @@ const readline = require('readline');
9
9
  const srcSkill = path.join(__dirname, 'SKILL.md');
10
10
  const srcScripts = path.join(__dirname, 'scripts');
11
11
  const srcReferences = path.join(__dirname, 'references');
12
+ const srcCommands = path.join(__dirname, 'commands');
12
13
 
13
14
  // Destination selection
14
15
  const cwd = process.cwd();
15
16
  const hasLocalClaude = fs.existsSync(path.join(cwd, '.claude'));
16
17
 
17
- const localDest = path.join(cwd, '.claude', 'skills', 'checkmyvibe');
18
- const globalDest = path.join(os.homedir(), '.claude', 'skills', 'checkmyvibe');
18
+ const localSkillDest = path.join(cwd, '.claude', 'skills', 'checkmyvibe');
19
+ const localCommandsDest = path.join(cwd, '.claude', 'commands');
20
+
21
+ const globalSkillDest = path.join(os.homedir(), '.claude', 'skills', 'checkmyvibe');
22
+ const globalCommandsDest = path.join(os.homedir(), '.claude', 'commands');
19
23
 
20
24
  function copyRecursiveSync(src, dest) {
21
25
  if (fs.statSync(src).isDirectory()) {
@@ -28,34 +32,54 @@ function copyRecursiveSync(src, dest) {
28
32
  }
29
33
  }
30
34
 
31
- function performInstall(destPath) {
35
+ function performInstall(skillDest, commandsDest) {
32
36
  try {
33
- console.log(`\nInstalling checkmyvibe to: ${destPath}...`);
37
+ console.log(`\nInstalling checkmyvibe skill to: ${skillDest}...`);
34
38
 
35
- // Clear destination if it already exists (overwrite mode)
36
- if (fs.existsSync(destPath)) {
39
+ // Clear skill destination if it already exists (overwrite mode)
40
+ if (fs.existsSync(skillDest)) {
37
41
  if (fs.rmSync) {
38
- fs.rmSync(destPath, { recursive: true, force: true });
42
+ fs.rmSync(skillDest, { recursive: true, force: true });
39
43
  } else {
40
- fs.rmdirSync(destPath, { recursive: true });
44
+ fs.rmdirSync(skillDest, { recursive: true });
41
45
  }
42
46
  }
43
- fs.mkdirSync(destPath, { recursive: true });
47
+ fs.mkdirSync(skillDest, { recursive: true });
44
48
 
45
49
  // Copy SKILL.md
46
- fs.copyFileSync(srcSkill, path.join(destPath, 'SKILL.md'));
50
+ fs.copyFileSync(srcSkill, path.join(skillDest, 'SKILL.md'));
47
51
 
48
- // Copy folders
49
- copyRecursiveSync(srcScripts, path.join(destPath, 'scripts'));
50
- copyRecursiveSync(srcReferences, path.join(destPath, 'references'));
52
+ // Copy folders into skill destination
53
+ copyRecursiveSync(srcScripts, path.join(skillDest, 'scripts'));
54
+ copyRecursiveSync(srcReferences, path.join(skillDest, 'references'));
55
+ if (fs.existsSync(srcCommands)) {
56
+ copyRecursiveSync(srcCommands, path.join(skillDest, 'commands'));
57
+ }
58
+
59
+ // Install slash commands into agent commands directory
60
+ if (fs.existsSync(srcCommands)) {
61
+ console.log(`Installing slash commands to: ${commandsDest}...`);
62
+ fs.mkdirSync(commandsDest, { recursive: true });
63
+ fs.readdirSync(srcCommands).forEach((cmdFile) => {
64
+ if (cmdFile.endsWith('.md')) {
65
+ fs.copyFileSync(path.join(srcCommands, cmdFile), path.join(commandsDest, cmdFile));
66
+ }
67
+ });
68
+ }
51
69
 
52
70
  console.log('\n=========================================');
53
- console.log('🎉 checkmyvibe Agent Skill installed!');
71
+ console.log('🎉 checkmyvibe Agent Skill & Commands installed!');
54
72
  console.log('=========================================');
55
73
  console.log('\nHow to run checkmyvibe:');
56
- console.log('1. Open your terminal in the target repository.');
57
- console.log('2. Ask your coding agent: "run checkmyvibe" or "perform a readiness check"');
58
- console.log('3. The agent will execute checkmyvibe\'s checks and output a prioritized report!');
74
+ console.log('• Full Audit:');
75
+ console.log(' /checkmyvibe or "run checkmyvibe"');
76
+ console.log('\n• Focused / Scoped Scans:');
77
+ console.log(' /checkmyvibe secrets (or /checkmyvibe-secrets) -> Exposed secrets & .gitignore');
78
+ console.log(' /checkmyvibe auth (or /checkmyvibe-auth) -> Authentication checks');
79
+ console.log(' /checkmyvibe db (or /checkmyvibe-db) -> Database & BaaS rules / RLS');
80
+ console.log(' /checkmyvibe backend (or /checkmyvibe-backend) -> Server-side (auth, db, IDOR, input, payment)');
81
+ console.log(' /checkmyvibe frontend (or /checkmyvibe-frontend) -> Client-side (bundle leaks, client auth, pricing)');
82
+ console.log(' /checkmyvibe payment (or /checkmyvibe-payment) -> Payment & pricing integrity');
59
83
  console.log('=========================================\n');
60
84
  } catch (err) {
61
85
  console.error('Error installing skill:', err.message);
@@ -65,7 +89,7 @@ function performInstall(destPath) {
65
89
 
66
90
  if (hasLocalClaude) {
67
91
  // If .claude folder exists in the project root, install at project level directly
68
- performInstall(localDest);
92
+ performInstall(localSkillDest, localCommandsDest);
69
93
  } else {
70
94
  // Prompt user for local vs global/personal installation
71
95
  const rl = readline.createInterface({
@@ -74,16 +98,16 @@ if (hasLocalClaude) {
74
98
  });
75
99
 
76
100
  console.log('No local .claude/ directory detected in the current working directory.');
77
- console.log(`1. Install locally to current directory: ${path.join('.claude', 'skills', 'checkmyvibe')}`);
78
- console.log(`2. Install globally/personally: ${globalDest.replace(os.homedir(), '~')}`);
101
+ console.log(`1. Install locally to current directory: ${path.join('.claude', 'skills', 'checkmyvibe')} & ${path.join('.claude', 'commands')}`);
102
+ console.log(`2. Install globally/personally: ${globalSkillDest.replace(os.homedir(), '~')} & ${globalCommandsDest.replace(os.homedir(), '~')}`);
79
103
 
80
104
  rl.question('\nSelect installation destination (1 or 2, default 2): ', (answer) => {
81
105
  rl.close();
82
106
  const selection = answer.trim();
83
107
  if (selection === '1') {
84
- performInstall(localDest);
108
+ performInstall(localSkillDest, localCommandsDest);
85
109
  } else {
86
- performInstall(globalDest);
110
+ performInstall(globalSkillDest, globalCommandsDest);
87
111
  }
88
112
  });
89
113
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "checkmyvibe",
4
- "version": "1.0.2",
4
+ "version": "1.1.0",
5
5
  "description": "A structured production readiness and code quality workflow Agent Skill for AI coding assistants to catch common vibe-coded configuration issues.",
6
6
  "main": "install.js",
7
7
  "bin": {
@@ -9,6 +9,7 @@
9
9
  },
10
10
  "files": [
11
11
  "SKILL.md",
12
+ "commands/",
12
13
  "scripts/",
13
14
  "references/",
14
15
  "install.js",