{"_id":"@4l3c/vibecheck","_rev":"4-eea8db9de470ceb1da8a739809842078","name":"@4l3c/vibecheck","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@4l3c/vibecheck","version":"0.1.0","keywords":["ai","code-quality","linter","static-analysis","ai-slop","vibecheck"],"author":{"name":"Alec"},"license":"MIT","_id":"@4l3c/vibecheck@0.1.0","maintainers":[{"name":"4l3c","email":"99alecrodriguez@gmail.com"}],"bin":{"vibecheck":"dist/cli.js"},"dist":{"shasum":"b9fe1e33e5708712ffaf34dbf70856cf8c77eb68","tarball":"https://registry.npmjs.org/@4l3c/vibecheck/-/vibecheck-0.1.0.tgz","fileCount":138,"integrity":"sha512-Cm5B87eAgcsZD6oslD9/WHfiWozdYdlE7hhsnW2roeit+AIVxRQc3KDKBCxa2Z4rH45TM/OqSmXLUibdhoZVQg==","signatures":[{"sig":"MEUCIQCTKUm5WflwwpDb/d6L6xY6S+2/tD+r0ZM6J2NO6i/KlwIgGGI1DQhnjAzKd0WL4Q9JtGBetuYCAv+X6w0AQVUW6N0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292172},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"776a5c8c8533b9b1fa53933c47f24e20f86009e5","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"4l3c","email":"99alecrodriguez@gmail.com"},"_npmVersion":"11.9.0","description":"Scan codebases for AI-generated code issues (\"AI slop\") and generate fix prompts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"chalk":"^5.4.0","ignore":"^7.0.3","js-yaml":"^4.1.0","commander":"^13.1.0","fast-glob":"^3.3.3","clipboardy":"^4.0.0","typescript":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/vibecheck_0.1.0_1771782341250_0.28185393981370677","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@4l3c/vibecheck","version":"0.1.1","keywords":["ai","code-quality","linter","static-analysis","ai-slop","vibecheck"],"author":{"name":"Alec"},"license":"MIT","_id":"@4l3c/vibecheck@0.1.1","maintainers":[{"name":"4l3c","email":"99alecrodriguez@gmail.com"}],"bin":{"vibecheck":"dist/cli.js"},"dist":{"shasum":"c0f93d9530d60829596bd92538ad3449e872de24","tarball":"https://registry.npmjs.org/@4l3c/vibecheck/-/vibecheck-0.1.1.tgz","fileCount":138,"integrity":"sha512-WE2rFMOb9kqP0ItuYwgfTgRWM/srYiJJyhT+gamfGgXQsg5zvyS2+B1JNUh9QNhYQdQaSiKaSfKUj7OBsK4XpA==","signatures":[{"sig":"MEQCIAJMGP2sWVN2AHro8AwZGQwcuKyTfn7BLZu153sl6hNlAiB3EF/pOKzhZ4PT0T/NMIVyyh74oy4wI7WBmib+gef7vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293669},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"776a5c8c8533b9b1fa53933c47f24e20f86009e5","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"4l3c","email":"99alecrodriguez@gmail.com"},"_npmVersion":"11.9.0","description":"Scan codebases for AI-generated code issues (\"AI slop\") and generate fix prompts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"chalk":"^5.4.0","ignore":"^7.0.3","js-yaml":"^4.1.0","commander":"^13.1.0","fast-glob":"^3.3.3","clipboardy":"^4.0.0","typescript":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/vibecheck_0.1.1_1771783210601_0.5919684486683314","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@4l3c/vibecheck","version":"0.1.2","keywords":["ai","code-quality","linter","static-analysis","ai-slop","vibecheck"],"author":{"name":"Alec"},"license":"MIT","_id":"@4l3c/vibecheck@0.1.2","maintainers":[{"name":"4l3c","email":"99alecrodriguez@gmail.com"}],"bin":{"vibecheck":"dist/cli.js"},"dist":{"shasum":"abe7e204477defcb6c51513a76ced3d0f9483af7","tarball":"https://registry.npmjs.org/@4l3c/vibecheck/-/vibecheck-0.1.2.tgz","fileCount":138,"integrity":"sha512-+aaFiM3XHTYD9/oc5LDPflQjYLI7a28YHOcY7g9qXME4RNNiIou2bFlVkVwEcnEycapkUPrqhD9LmVRwQi3i2A==","signatures":[{"sig":"MEUCIQCGqLzzDonmGjRuTlGF0dZjRW003Ez7vzUFajO6w41UbwIgc6wz2pPDTWSjYCHi5rgpO2eXqG25nqfv5LXCNlZZ8xg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292315},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"776a5c8c8533b9b1fa53933c47f24e20f86009e5","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"4l3c","email":"99alecrodriguez@gmail.com"},"_npmVersion":"11.9.0","description":"Scan codebases for AI-generated code issues (\"AI slop\") and generate fix prompts","directories":{},"_nodeVersion":"25.6.1","dependencies":{"chalk":"^5.4.0","ignore":"^7.0.3","js-yaml":"^4.1.0","commander":"^13.1.0","fast-glob":"^3.3.3","clipboardy":"^4.0.0","typescript":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","@types/node":"^22.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/vibecheck_0.1.2_1771784041179_0.182394380494467","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@4l3c/vibecheck","version":"0.1.3","description":"Scan codebases for AI-generated code issues (\"AI slop\") and generate fix prompts","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"vibecheck":"dist/cli.js"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","lint":"eslint src/","prepublishOnly":"npm run build"},"keywords":["ai","code-quality","linter","static-analysis","ai-slop","vibecheck"],"author":{"name":"Alec"},"license":"MIT","dependencies":{"chalk":"^5.4.0","clipboardy":"^4.0.0","commander":"^13.1.0","fast-glob":"^3.3.3","ignore":"^7.0.3","js-yaml":"^4.1.0","typescript":"^5.7.0"},"devDependencies":{"@types/js-yaml":"^4.0.9","@types/node":"^22.0.0","vitest":"^3.0.0"},"engines":{"node":">=18"},"gitHead":"776a5c8c8533b9b1fa53933c47f24e20f86009e5","_id":"@4l3c/vibecheck@0.1.3","_nodeVersion":"25.6.1","_npmVersion":"11.9.0","dist":{"integrity":"sha512-deEoPbqi1Xi1Ab7u2pJGi/cmcg75z6tJF9TI7nye38ZwDIB6y2V+83Rksx2zzy/34wo//l9DjMvnW3DgmluRow==","shasum":"ee2b6f3ea4ce0a4966e3fdfab6549e77d0cca4ce","tarball":"https://registry.npmjs.org/@4l3c/vibecheck/-/vibecheck-0.1.3.tgz","fileCount":138,"unpackedSize":294795,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDDQWZt2y7xGx+rBribTq+BNNIvCrMpTUY9afLBbBz5nAIhAJno6RSsnWo3ISH58Ysa1NPkWWOdSSkchpWK712Nrq0Y"}]},"_npmUser":{"name":"4l3c","email":"99alecrodriguez@gmail.com"},"directories":{},"maintainers":[{"name":"4l3c","email":"99alecrodriguez@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vibecheck_0.1.3_1771785765387_0.9013281732477041"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-22T17:45:41.088Z","modified":"2026-02-22T18:42:45.647Z","0.1.0":"2026-02-22T17:45:41.388Z","0.1.1":"2026-02-22T18:00:10.760Z","0.1.2":"2026-02-22T18:14:01.346Z","0.1.3":"2026-02-22T18:42:45.521Z"},"author":{"name":"Alec"},"license":"MIT","keywords":["ai","code-quality","linter","static-analysis","ai-slop","vibecheck"],"description":"Scan codebases for AI-generated code issues (\"AI slop\") and generate fix prompts","maintainers":[{"name":"4l3c","email":"99alecrodriguez@gmail.com"}],"readme":"# vibecheck\n\nScan codebases for AI-generated code issues (\"AI slop\") and generate structured fix prompts.\n\n84% of developers use AI coding tools, but the generated code consistently contains placeholder data, stub functions, empty error handlers, hardcoded secrets, and debug leftovers. **vibecheck** detects these patterns, scores your codebase with an AI Slop Index (0-100), and generates a fix prompt you can paste into any AI tool to fix its own mistakes.\n\n## Install\n\n```bash\nnpm install -g vibecheck\n```\n\n## Usage\n\n### Scan a project\n\n```bash\nvibecheck scan\n```\n\n```\n  vibecheck — AI Slop Index\n\n  32  [C+]\n  ▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░\n\n  18 issues found  ·  2 critical | 5 high | 8 medium | 3 low\n  142 files scanned in 89ms\n```\n\n### Generate a fix prompt\n\n```bash\nvibecheck prompt\n```\n\nGenerates a structured markdown prompt with every issue, its location, code snippet, and fix instructions. Paste it into Claude, ChatGPT, Cursor, or any AI tool to fix everything at once.\n\n```bash\nvibecheck prompt --output fixes.md   # Write to file\nvibecheck prompt --clipboard          # Copy to clipboard\n```\n\n### JSON output (for CI)\n\n```bash\nvibecheck scan --json\n```\n\nReturns structured JSON with `score`, `grade`, `passed`, and full issue list. Exit code 1 when score exceeds threshold.\n\n```bash\n# Fail CI if AI Slop Index exceeds 30\nvibecheck scan --json --threshold 30\n```\n\n### Initialize config\n\n```bash\nvibecheck init\n```\n\nCreates a `.vibecheck.yaml` with default settings.\n\n## What it detects\n\n### Pattern rules (regex-based)\n\n| Rule | What it catches | Examples |\n|------|----------------|----------|\n| **placeholder-data** | Mock emails, names, URLs, API keys, passwords | `test@example.com`, `John Doe`, `sk-test-xxx` |\n| **debug-leftovers** | Console statements, TODO/FIXME, debugger, AI artifacts | `console.log(...)`, `// TODO: implement`, `// I've updated the code to...` |\n| **hardcoded-values** | Localhost URLs, connection strings, secrets, ports | `http://localhost:3000`, `postgres://admin:secret@...` |\n| **generic-names** | Overly generic variable/function names | `const data =`, `const temp =`, `function doStuff()` |\n\n### AST rules (TypeScript Compiler API)\n\n| Rule | What it catches | Examples |\n|------|----------------|----------|\n| **empty-handlers** | Empty catch blocks, console-only error handlers | `catch (e) {}`, `.catch(() => {})` |\n| **stub-functions** | Functions returning null/undefined, empty bodies | `return null`, `throw new Error(\"Not implemented\")` |\n| **unused-code** | Imported identifiers never used in the file | `import { unused } from 'mod'` |\n\n## Scoring\n\nThe **AI Slop Index** (0-100) uses weighted severity scoring:\n\n| Severity | Weight |\n|----------|--------|\n| Critical | 10 |\n| High | 5 |\n| Medium | 2 |\n| Low | 1 |\n\nFormula: `min(100, round((rawScore / filesScanned) * 5))`\n\nCritical issues impose a minimum floor (`criticalCount * 5`) so they can't be diluted in large projects.\n\n| Grade | Score |\n|-------|-------|\n| A+ | 0-5 |\n| A | 6-8 |\n| A- | 9-12 |\n| B+ | 13-16 |\n| B | 17-22 |\n| B- | 23-28 |\n| C+ | 29-34 |\n| C | 35-40 |\n| C- | 41-46 |\n| D+ | 47-52 |\n| D | 53-58 |\n| D- | 59-65 |\n| F | 66-100 |\n\n## Configuration\n\nCreate a `.vibecheck.yaml` in your project root (or run `vibecheck init`):\n\n```yaml\n# Disable a rule\nrules:\n  generic-names:\n    enabled: false\n\n# Override severity\nrules:\n  debug-leftovers:\n    severity: low\n\n# Ignore patterns (added to defaults)\nignore:\n  - \"generated/**\"\n  - \"vendor/**\"\n\n# CI threshold\nfailThreshold: 30\n\n# Output\noutput:\n  colors: true\n  verbose: false\n```\n\n## Programmatic API\n\n```typescript\nimport { scan, generateFixPrompt, calculateScore } from 'vibecheck';\n\nconst result = await scan({ rootDir: './src' });\nconsole.log(result.score, result.grade, result.issues.length);\n\nconst prompt = generateFixPrompt(result);\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}