checkmyvibe 1.0.1 → 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
@@ -1,8 +1,8 @@
1
1
  # checkmyvibe
2
2
 
3
- A structured, zero-dependency, local security-audit workflow packaged as an Agent Skill for AI coding assistants (such as Claude Code, Cursor, Codex, and Gemini CLI).
3
+ A structured, zero-dependency, local production readiness and code quality workflow packaged as an Agent Skill for AI coding assistants (such as Claude Code, Cursor, Codex, and Gemini CLI).
4
4
 
5
- AI-generated ("vibe-coded") applications built on modern AI tools frequently ship with serious, well-documented security flaws—such as exposed API keys, fake authentication stubs, permissive default database rules, and client-side pricing logic. **checkmyvibe** solves this by packaging security checks directly into an Agent Skill. When you ask your coding agent to "run a security audit," the agent uses checkmyvibe's local helper scripts and its own reasoning capabilities to analyze your codebase, producing a prioritized report detailing what's wrong, why it matters, and how to fix it.
5
+ AI-generated ("vibe-coded") applications built on modern AI tools frequently ship with serious, well-documented configuration and quality issues—such as exposed API keys, fake authentication stubs, permissive default database rules, and client-side pricing logic. **checkmyvibe** solves this by packaging readiness and verification checks directly into an Agent Skill. When you ask your coding agent to "run checkmyvibe" or "perform a readiness check", the agent uses checkmyvibe's local helper scripts and its own reasoning capabilities to analyze your codebase, producing a prioritized report detailing what configuration issues or gaps exist, why they matter, and how to fix them.
6
6
 
7
7
  ---
8
8
 
@@ -20,8 +20,8 @@ AI-generated ("vibe-coded") applications built on modern AI tools frequently shi
20
20
  ## What This Does NOT Check For (Disclaimer)
21
21
 
22
22
  > [!WARNING]
23
- > **checkmyvibe is not a substitute for a full professional security audit.**
24
- > This tool is a first-pass heuristic scanner meant to highlight common mistakes made by AI coding models during rapid scaffolding. It does not perform dynamic runtime analysis, penetration testing, deep static analysis, dependency vulnerability checks, or comprehensive logic auditing. Do not rely solely on checkmyvibe to declare your application secure for production.
23
+ > **checkmyvibe is not a substitute for a full professional external security audit.**
24
+ > This tool is a first-pass quality and readiness checklist meant to highlight common mistakes and temporary scaffolding shortcuts made by AI coding models during rapid prototyping. It does not perform dynamic runtime analysis, penetration testing, deep static analysis, dependency vulnerability checks, or comprehensive logic auditing. Do not rely solely on checkmyvibe to declare your application hardened for production.
25
25
 
26
26
  ---
27
27
 
@@ -42,23 +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
54
- Open your terminal in the workspace and type:
55
- ```bash
56
- /bug run a security audit
57
- ```
58
- *Or simply ask Claude in the chat:*
59
- > "Run a security audit on this project 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:
59
+
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 |
60
68
 
61
- 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.
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.
62
70
 
63
71
  ---
64
72
 
package/SKILL.md CHANGED
@@ -1,14 +1,13 @@
1
1
  ---
2
2
  name: checkmyvibe
3
3
  description: >
4
- Use this skill when the user asks for a security review, security audit, penetration test, or "is this safe to ship / safe to launch" check. 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 security review) and the user has not had one done yet. Covers the specific, documented vulnerability patterns common in AI-generated and vibe-coded applications: exposed secrets, missing or fake authentication, permissive database rules, broken object-level authorization, unvalidated inputs, and client-side payment or pricing logic.
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
-
7
- # checkmyvibe — Security Audit for Vibe-Coded Apps
6
+ # checkmyvibe — Production Readiness & Code Quality Check for Vibe-Coded Apps
8
7
 
9
8
  ## Why this skill exists
10
9
 
11
- AI coding tools optimize for "it works," not "it's safe." A feature can pass every
10
+ AI coding tools optimize for "it works," not "it's production-ready." A feature can pass every
12
11
  manual test a non-technical founder runs — sign up, log in, place an order — and
13
12
  still leak every other user's data to a stranger who changes one number in a URL.
14
13
  This happens because AI-generated code frequently ships with scaffolding shortcuts
@@ -16,26 +15,44 @@ that were meant to be temporary (a stub auth check, a permissive default databas
16
15
  rule) and never get hardened before launch, precisely because the person building
17
16
  the app doesn't know those shortcuts exist or what to look for.
18
17
 
19
- Your job when this skill is active: think like a security engineer doing a
20
- pre-launch review for a client who has never heard the words "IDOR" or "row-level
21
- security." Find the real, exploitable issues. Explain them in plain language. Give
22
- exact fixes. Do not pad the report with theoretical concerns that don't apply to
23
- this specific codebase, and do not skip a check because the codebase "looks
24
- simple" — simple codebases are exactly where stubbed auth and hardcoded secrets
25
- hide, because nobody expected them to hold real user data yet.
18
+ Your job when this skill is active: think like an experienced software engineer doing a
19
+ pre-launch quality review for a client who has never heard the words "IDOR" or "row-level
20
+ security." Find the real, addressable configuration and logic issues. Explain them in plain
21
+ language. Give exact fixes. Do not pad the report with theoretical concerns that don't apply
22
+ to this specific codebase, and do not skip a check because the codebase "looks simple" —
23
+ simple codebases are exactly where stubbed auth and hardcoded secrets hide, because nobody
24
+ expected them to hold real user data yet.
26
25
 
27
26
  ## Scope and honesty (read this before writing any report)
28
27
 
29
- This is a first-pass audit for known, documented failure patterns. It is not a
30
- full penetration test, it does not cover infrastructure security, dependency
31
- vulnerabilities, or novel/business-logic-specific flaws outside the six categories
32
- below. Never tell the user their app is "secure" or "safe" in an unqualified way.
28
+ This is a first-pass review for known, documented scaffolding failure patterns. It is not a
29
+ comprehensive external validation, and it does not cover infrastructure hosting, third-party package
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.
33
31
  The correct language is "no issues found in this pass" or "ready to ship as far as
34
32
  these checks go" — always paired with the scope reminder in the Final Summary
35
33
  section. If the app appears to handle payments, health data, or other regulated
36
- data, say explicitly that a professional audit is strongly recommended regardless
34
+ data, say explicitly that a professional verification is strongly recommended regardless
37
35
  of what this pass finds.
38
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
+
39
56
  ## Before you start
40
57
 
41
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.
@@ -51,7 +68,6 @@ of what this pass finds.
51
68
 
52
69
  ---
53
70
 
54
-
55
71
  ## Supported stacks to recognize
56
72
 
57
73
  Common stacks this skill should expect include: Next.js, Express, FastAPI, Supabase, Firebase, Prisma, Postgres, MongoDB, Clerk, NextAuth, Stripe, and common app patterns built around them.
@@ -80,6 +96,7 @@ strings, and variable assignments where a name like `key`, `secret`, `token`, or
80
96
  `password` is set to a literal string instead of `process.env.X` or equivalent.
81
97
 
82
98
  **What counts as a finding:**
99
+
83
100
  - A real credential committed directly in source, e.g.:
84
101
  `const stripeKey = "sk_live_51H8x..."` — Critical
85
102
  - A secret present only in `.env` but `.env` is not gitignored (see Check 2) —
@@ -90,6 +107,7 @@ strings, and variable assignments where a name like `key`, `secret`, `token`, or
90
107
  Critical, this is directly shippable to every visitor's browser
91
108
 
92
109
  **What is NOT a finding (avoid false positives):**
110
+
93
111
  - Public/anon/publishable keys that are designed to be exposed client-side
94
112
  (Stripe publishable keys starting `pk_`, Supabase anon keys) — these are safe
95
113
  by design as long as server-side authorization (RLS, API checks) is correctly
@@ -105,10 +123,10 @@ them (not just whether a `.gitignore` file exists — many AI-generated `.gitign
105
123
  files exist but miss the actual secret file).
106
124
 
107
125
  **What counts as a finding:**
126
+
108
127
  - `.env` present in the working directory and not listed in `.gitignore` —
109
128
  Critical, regardless of current contents
110
- - `.env` already committed to git history (check with a quick `git log --all
111
- --full-history -- .env` if git is available) — Critical, and note in the
129
+ - `.env` already committed to git history (check with a quick `git log --all --full-history -- .env` if git is available) — Critical, and note in the
112
130
  fix that removing it from `.gitignore` going forward is not enough; the
113
131
  secrets in git history must be rotated, since they're recoverable even after
114
132
  deletion
@@ -119,17 +137,18 @@ files exist but miss the actual secret file).
119
137
  checks) for these patterns:
120
138
 
121
139
  **What counts as a finding:**
140
+
122
141
  - A function that always returns true/success regardless of input, e.g.:
123
142
  ```js
124
143
  function isAuthenticated(req) {
125
144
  return true; // TODO: implement real auth
126
145
  }
127
146
  ```
147
+
128
148
  Critical — this is a placeholder someone forgot to replace.
129
149
  - Naming that signals a stub: `mockAuth`, `fakeLogin`, `tempAuth`, `bypassAuth`,
130
150
  `skipAuth`, `devAuth` still present in a codebase with no clear dev-only guard
131
- around it. If it IS properly guarded (e.g. `if (process.env.NODE_ENV ===
132
- 'development')`), verify the guard is airtight and note it as Should Fix
151
+ around it. If it IS properly guarded (e.g. `if (process.env.NODE_ENV === 'development')`), verify the guard is airtight and note it as Should Fix
133
152
  rather than Critical, since misconfigured environment variables in production
134
153
  are a common way these leak through anyway.
135
154
  - A protected route or API endpoint with no auth check at all — compare route
@@ -153,6 +172,7 @@ If the project uses **Supabase**: check for row-level security (RLS) policies on
153
172
  every table that holds user-specific data. A table with RLS disabled, or enabled
154
173
  with a policy like `USING (true)` for `SELECT`/`UPDATE`/`DELETE`, means any
155
174
  authenticated (or even anonymous) user can read or modify every row.
175
+
156
176
  ```sql
157
177
  -- Finding example: this policy applies to ALL rows for ALL users
158
178
  CREATE POLICY "allow all" ON orders FOR SELECT USING (true);
@@ -204,6 +224,7 @@ common and DELETE is often the most damaging.
204
224
  ## Check 6: Unvalidated inputs
205
225
 
206
226
  Spot-check forms and API endpoints for:
227
+
207
228
  - No type or length validation on inputs before they're stored or used
208
229
  - User input passed into a database query via string concatenation rather than
209
230
  parameterized queries/an ORM (SQL injection risk)
@@ -261,6 +282,7 @@ For every finding, use exactly this structure:
261
282
  - Include a `Generated fix:` line when a direct code snippet or precise implementation step would help the agent patch the issue immediately.
262
283
 
263
284
  **[SEVERITY] Short title**
285
+
264
286
  - **What's wrong:** plain-English description, no jargon. If a technical term is
265
287
  unavoidable (e.g. "IDOR"), define it in one clause the first time it's used.
266
288
  - **Why it matters:** a concrete, real-world consequence a non-technical person
@@ -271,10 +293,10 @@ For every finding, use exactly this structure:
271
293
  suggestion like "add proper validation."
272
294
  - **File(s):** exact path and line number(s).
273
295
 
274
-
275
296
  ## After the checks
276
297
 
277
- Once the checks are complete, create a security audit/report. **The report must be written in clear, plain English, completely free of dense security jargon, so that it is easily understandable by non-technical stakeholders (such as founders, clients, or project managers).** The report must include:
298
+ Once the checks are complete, create a readiness review report. **The report must be written in clear, plain English, completely free of dense technical jargon, so that it is easily understandable by non-technical stakeholders (such as founders, clients, or project managers).** The report must include:
299
+
278
300
  - what was found
279
301
  - what is fixed already
280
302
  - how each fix was applied
@@ -283,12 +305,12 @@ Once the checks are complete, create a security audit/report. **The report must
283
305
 
284
306
  If no issues are found, still produce a short report that says no blocking issues were found in this pass, which categories were checked, and what the remaining scope limits are.
285
307
 
286
-
287
308
  ## Example report style
288
309
 
289
310
  Use clear, direct wording like:
290
311
 
291
312
  **[Critical] Missing object-level authorization**
313
+
292
314
  - **What's wrong:** Any logged-in user can read another user's order by changing the order ID.
293
315
  - **Why it matters:** A stranger could see someone else's orders and personal details.
294
316
  - **The fix:** Add a user ownership check in the query and return 404 when the record does not belong to the current user.
@@ -296,22 +318,21 @@ Use clear, direct wording like:
296
318
 
297
319
  ## Final summary
298
320
 
299
- End every audit with, in this order:
321
+ End every review with, in this order:
322
+
300
323
  1. Stack and data-sensitivity context noted at the start (one line)
301
324
  2. Total findings by severity, e.g. "2 Critical, 3 Should Fix, 1 Worth Reviewing"
302
325
  3. A one-line verdict: "Not ready to ship — fix the Critical items first" or "No
303
326
  blocking issues found in this pass — review the Should Fix items when you can"
304
- 4. The scope reminder: "This covers common patterns seen in AI-generated code —
305
- exposed secrets, auth stubs, database misconfiguration, IDOR, input validation,
306
- and client-side payment logic. It is not a full penetration test. If this app
307
- handles payment, health, or other regulated data, get a professional security
308
- review 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."
309
330
 
310
331
  ## Notes for the agent
311
332
 
312
- - Always produce an audit/report after the scan; do not stop at raw findings.
333
+ - Always produce a review report after the check; do not stop at raw findings.
313
334
  - Write the entire report in clear, accessible language. Frame findings around concrete, real-world user consequences rather than abstract technical concepts. A non-technical stakeholder must be able to read the report and immediately understand the real-world danger.
314
- - The audit should clearly separate what was found, what was fixed, how it was fixed, and what remains.
335
+ - The review should clearly separate what was found, what was fixed, how it was fixed, and what remains.
315
336
  - Always run the available scripts (located in the `scripts/` directory relative to this `SKILL.md` file) before relying on reasoning alone for Checks 1-4 — they exist so those specific checks are reliable and repeatable rather than dependent on re-deriving the logic every time.
316
337
  - If a script is missing, fails to run, or the language/stack isn't supported by
317
338
  it, say so explicitly in the report ("automated secret scan could not run;
@@ -323,4 +344,4 @@ End every audit with, in this order:
323
344
  categories — pick the most relevant category and reference it once.
324
345
  - If the codebase is large, prioritize routes and files that touch
325
346
  authentication, payments, and any endpoint returning data tied to a specific
326
- user ID — these are where real damage concentrates.
347
+ user ID — these are where real damage concentrates.
@@ -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
- console.log('\nHow to run a security audit:');
56
- console.log('1. Open your terminal in the target repository.');
57
- console.log('2. Ask your coding agent: "run a security audit"');
58
- console.log('3. The agent will execute checkmyvibe\'s checks and output a prioritized report!');
73
+ console.log('\nHow to run checkmyvibe:');
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,14 +1,15 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "checkmyvibe",
4
- "version": "1.0.1",
5
- "description": "A structured security-audit workflow Agent Skill for AI coding assistants to catch common vibe-coded vulnerabilities.",
4
+ "version": "1.1.0",
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": {
8
8
  "checkmyvibe": "install.js"
9
9
  },
10
10
  "files": [
11
11
  "SKILL.md",
12
+ "commands/",
12
13
  "scripts/",
13
14
  "references/",
14
15
  "install.js",
@@ -20,7 +21,8 @@
20
21
  },
21
22
  "keywords": [
22
23
  "ai-agent",
23
- "security-audit",
24
+ "code-quality",
25
+ "production-readiness",
24
26
  "claude-code",
25
27
  "cursor",
26
28
  "vibe-coding",
@@ -1,6 +1,6 @@
1
- # Vibe Vulnerability Patterns
1
+ # Vibe Readiness Risk Patterns
2
2
 
3
- This document serves as a reference for common vulnerability patterns identified in AI-generated ("vibe-coded") applications. AI coding assistants frequently introduce these security flaws because they prioritize speed, feature completion, and standalone component demonstration over robust security configurations.
3
+ This document serves as a reference for common readiness risk patterns identified in AI-generated ("vibe-coded") applications. AI coding assistants frequently introduce these configuration and design flaws because they prioritize speed, feature completion, and standalone component demonstration over robust production-ready setups.
4
4
 
5
5
  ---
6
6