{"_id":"@0xjoy/vibeforge","_rev":"2-caecda6f069e97089ca1a6d4cc02151a","name":"@0xjoy/vibeforge","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.4":{"name":"@0xjoy/vibeforge","version":"0.1.4","_id":"@0xjoy/vibeforge@0.1.4","maintainers":[{"name":"0xjoy","email":"joysengupta521@gmail.com"}],"bin":{"vibeforge":"dist/index.js"},"dist":{"shasum":"88dcbe2e212f7ab41584f164d7dabb7664079c47","tarball":"https://registry.npmjs.org/@0xjoy/vibeforge/-/vibeforge-0.1.4.tgz","fileCount":8,"integrity":"sha512-ZNx8ZBO/QtneRcSOnh05zSaHNdwPFZHRyjSWQU0N9PcU4+D+GirzafvfWaiC2N1dnihu0q9kl67FZcPEN6dhJw==","signatures":[{"sig":"MEUCIHXA4JeqMEwfL1UWH/G5x/4Mjq4m2nNuZmkeQ2xpPvKgAiEAin/9LJyFodR4SgmP+yFDJHcWbbZPnEaXncfOb5nrW4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20490},"main":"./dist/index.js","gitHead":"aa44d390f7fb0d0d7fed3fb3c6844de16975ce0e","scripts":{"dev":"ts-node src/index.ts","build":"tsc && node -e \"const fs=require('fs');const f='dist/index.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"_npmUser":{"name":"0xjoy","email":"joysengupta521@gmail.com"},"_npmVersion":"11.16.0","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"latest","glob":"latest","open":"latest","chalk":"latest","openai":"latest","commander":"latest"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"latest","typescript":"latest","@types/node":"latest"},"_npmOperationalInternal":{"tmp":"tmp/vibeforge_0.1.4_1786554799235_0.9500849349068623","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@0xjoy/vibeforge","version":"0.1.5","bin":{"vibeforge":"dist/index.js"},"main":"./dist/index.js","scripts":{"dev":"ts-node src/index.ts","build":"tsc && node -e \"const fs=require('fs');const f='dist/index.js';const c=fs.readFileSync(f,'utf8');if(!c.startsWith('#!/usr/bin/env node')){fs.writeFileSync(f,'#!/usr/bin/env node\\n'+c)}\""},"dependencies":{"chalk":"latest","commander":"latest","glob":"latest","open":"latest","ora":"latest","openai":"latest"},"devDependencies":{"@types/node":"latest","ts-node":"latest","typescript":"latest"},"gitHead":"642ce77f62a22c72016f73ec06a55ca0da4573f2","_id":"@0xjoy/vibeforge@0.1.5","description":"CLI for [VibeForge](https://vibeforgescanner.vercel.app) - scans local codebases for security issues, AI slop, code smells, and performance problems. Outputs a scored, graded report directly in your terminal.","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-f5A5lgnOA8/jVYnZmn+8HT6zM1SMV343U3iy/jjsEnHgGvJCuwuCRPVk7nyr71u/yetj4g8s38XYTPIMLcAzCA==","shasum":"691aa95337fc181c18e13bf5f0ac30a82b0e6159","tarball":"https://registry.npmjs.org/@0xjoy/vibeforge/-/vibeforge-0.1.5.tgz","fileCount":9,"unpackedSize":25958,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGaESE5phcrMxXzoiHVMPj62LTbBmUayPZXXn71qqvXgAiA9lX+NNpKhLn4uWQW6hmVYoWQhXDQFSVnaCzseigKT6Q=="}]},"_npmUser":{"name":"0xjoy","email":"joysengupta521@gmail.com"},"directories":{},"maintainers":[{"name":"0xjoy","email":"joysengupta521@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vibeforge_0.1.5_1786555333516_0.10417979588905624"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-12T17:13:19.037Z","modified":"2026-08-12T17:22:13.799Z","0.1.4":"2026-08-12T17:13:19.388Z","0.1.5":"2026-08-12T17:22:13.654Z"},"maintainers":[{"name":"0xjoy","email":"joysengupta521@gmail.com"}],"readme":"# @0xjoy/vibeforge\n\nCLI for [VibeForge](https://vibeforgescanner.vercel.app) - scans local codebases for security issues, AI slop, code smells, and performance problems. Outputs a scored, graded report directly in your terminal.\n\n[![npm version](https://img.shields.io/npm/v/@0xjoy/vibeforge?style=flat-square&color=7c3aed)](https://www.npmjs.com/package/@0xjoy/vibeforge)\n[![License: MIT](https://img.shields.io/badge/license-MIT-06b6d4?style=flat-square)](../../LICENSE)\n\n---\n\n## Requirements\n\n- Node.js 18+\n- A VibeForge account (free or Pro) at [vibeforgescanner.vercel.app](https://vibeforgescanner.vercel.app)\n- Pro plan for CLI access\n\n---\n\n## Install\n\nNo global install needed:\n\n```bash\nnpx @0xjoy/vibeforge <command>\n```\n\nOr install globally:\n\n```bash\nnpm install -g @0xjoy/vibeforge\n```\n\n---\n\n## Quick Start\n\n```bash\n# 1. Authenticate (opens browser, one-time)\nnpx @0xjoy/vibeforge login\n\n# 2. Scan the current directory\nnpx @0xjoy/vibeforge scan .\n\n# 3. Scan a specific folder\nnpx @0xjoy/vibeforge scan ./src\n```\n\n---\n\n## Commands\n\n### `login`\n\nOpens your browser to authenticate with your VibeForge account. Saves a token locally for subsequent scans. The auth flow completes in under 30 seconds and the browser tab closes itself.\n\n```bash\nnpx @0xjoy/vibeforge login\n```\n\n---\n\n### `scan [path]`\n\nScans a local directory. Defaults to `.` if no path is given. Picks up `.ts`, `.js`, `.py`, `.go`, and `.java` files. Skips `node_modules`, `dist`, `.next`, `build`, lock files, and binary assets automatically. Sends up to 30 files per scan to the analysis engine.\n\n```bash\nnpx @0xjoy/vibeforge scan [path] [options]\n```\n\n**Options:**\n\n| Flag | Values | What it does |\n|------|--------|-------------|\n| `--report <format>` | `html`, `json` | Writes `report.html` or `report.json` to the scanned directory |\n| `--fix` | - | Applies AI-suggested fixes directly to your source files |\n\n**Examples:**\n\n```bash\n# Scan src/, print results to terminal\nnpx @0xjoy/vibeforge scan ./src\n\n# Scan and export an HTML report\nnpx @0xjoy/vibeforge scan ./src --report html\n\n# Scan and export a machine-readable JSON report\nnpx @0xjoy/vibeforge scan ./src --report json\n\n# Scan and auto-apply fixes\nnpx @0xjoy/vibeforge scan ./src --fix\n\n# Combine: report + fix in one pass\nnpx @0xjoy/vibeforge scan ./src --report html --fix\n```\n\n---\n\n### `whoami`\n\nChecks your current auth status and Pro subscription state.\n\n```bash\nnpx @0xjoy/vibeforge whoami\n```\n\nOutput example:\n\n```\nLogged in as you@example.com\nPro status: Active\n```\n\n---\n\n### `logout`\n\nClears the stored auth token from your machine.\n\n```bash\nnpx @0xjoy/vibeforge logout\n```\n\n---\n\n## Terminal Output\n\nA typical scan looks like this:\n\n```\n$ npx @0xjoy/vibeforge scan ./src\n\n  Scanning 24 files...\n  ✔ Scan complete!\n\nVIBEFORGE SCAN RESULTS\n======================\n\nGrade: B  (Score: 74/100)\n\nsecurity       ████████████░░░░░░░░ 61\nai_slop        ████████████████░░░░ 78\ncode_quality   ████████████████░░░░ 82\nperformance    ██████████████░░░░░░ 70\nstructure      ████████████████████ 88\n\nFound 6 issues.\n\nCRIT Hardcoded API key (lib/config.ts:42)\n  API key found in plain source. Move to environment variables.\n\nWARN Possible N+1 query (services/users.ts:88)\n  Loop calls DB inside iteration. Batch with a single query.\n```\n\n---\n\n## Scoring\n\nScans are graded across five axes. The final grade maps to the composite score:\n\n| Axis | What it checks |\n|------|---------------|\n| Security | Hardcoded secrets, injection vectors, insecure deps, exposed env vars |\n| AI Slop | Copy-paste GPT patterns, dead logic branches, hallucinated variable names |\n| Code Quality | Complexity, duplication, naming, error handling consistency |\n| Performance | N+1 queries, blocking I/O, unoptimized loops |\n| Structure | File organization, circular deps, module coupling |\n\n| Grade | Score range |\n|-------|------------|\n| A | 90 - 100 |\n| B | 75 - 89 |\n| C | 60 - 74 |\n| D | 45 - 59 |\n| F | below 45 |\n\n---\n\n## Reports\n\n### HTML (`--report html`)\n\nWrites `report.html` to the scanned directory. Opens cleanly in any browser - dark-themed, shows score rings, axis bars, and per-issue fix blocks with syntax highlighting.\n\n### JSON (`--report json`)\n\nWrites `report.json` to the scanned directory. Useful for CI pipelines and custom tooling.\n\n```jsonc\n{\n  \"grade\": \"B\",\n  \"score\": 74,\n  \"scores\": {\n    \"security\": 61,\n    \"ai_slop\": 78,\n    \"code_quality\": 82,\n    \"performance\": 70,\n    \"structure\": 88\n  },\n  \"issues\": [\n    {\n      \"severity\": \"critical\",\n      \"title\": \"Hardcoded API key\",\n      \"file\": \"lib/config.ts\",\n      \"line\": 42,\n      \"description\": \"...\",\n      \"fix\": \"...\"\n    }\n  ]\n}\n```\n\n---\n\n## Environment Variables\n\nOverride the default API and web URLs if you are self-hosting:\n\n```bash\nVIBEFORGE_API_URL=https://your-api.example.com\nVIBEFORGE_WEB_URL=https://your-web.example.com\n```\n\n---\n\n## Token Storage\n\nThe auth token is stored locally on your machine after `vibeforge login`. Run `vibeforge logout` to remove it, or `vibeforge whoami` to check it.\n\n---\n\n## Supported File Types\n\n`.ts` · `.js` · `.py` · `.go` · `.java`\n\nAutomatically skipped: `node_modules`, `.git`, `dist`, `build`, `.next`, `coverage`, lock files, minified files, and all binary/media assets.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md","description":"CLI for [VibeForge](https://vibeforgescanner.vercel.app) - scans local codebases for security issues, AI slop, code smells, and performance problems. Outputs a scored, graded report directly in your terminal."}