Observed since 21 Oct, 08:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xjoy/vibeforge
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.
CLI for VibeForge - scans local codebases for security issues, AI slop, code smells, and performance problems. Outputs a scored, graded report directly in your terminal.
No global install needed:
npx @0xjoy/vibeforge <command>
Or install globally:
npm install -g @0xjoy/vibeforge
# 1. Authenticate (opens browser, one-time)
npx @0xjoy/vibeforge login
# 2. Scan the current directory
npx @0xjoy/vibeforge scan .
# 3. Scan a specific folder
npx @0xjoy/vibeforge scan ./src
loginOpens 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.
npx @0xjoy/vibeforge login
scan [path]Scans 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.
npx @0xjoy/vibeforge scan [path] [options]
Options:
| Flag | Values | What it does |
|---|---|---|
--report <format> | html, json | Writes report.html or report.json to the scanned directory |
--fix | - | Applies AI-suggested fixes directly to your source files |
Examples:
# Scan src/, print results to terminal
npx @0xjoy/vibeforge scan ./src
# Scan and export an HTML report
npx @0xjoy/vibeforge scan ./src --report html
# Scan and export a machine-readable JSON report
npx @0xjoy/vibeforge scan ./src --report json
# Scan and auto-apply fixes
npx @0xjoy/vibeforge scan ./src --fix
# Combine: report + fix in one pass
npx @0xjoy/vibeforge scan ./src --report html --fix
whoamiChecks your current auth status and Pro subscription state.
npx @0xjoy/vibeforge whoami
Output example:
Logged in as you@example.com
Pro status: Active
logoutClears the stored auth token from your machine.
npx @0xjoy/vibeforge logout
A typical scan looks like this:
$ npx @0xjoy/vibeforge scan ./src
Scanning 24 files...
✔ Scan complete!
VIBEFORGE SCAN RESULTS
======================
Grade: B (Score: 74/100)
security ████████████░░░░░░░░ 61
ai_slop ████████████████░░░░ 78
code_quality ████████████████░░░░ 82
performance ██████████████░░░░░░ 70
structure ████████████████████ 88
Found 6 issues.
CRIT Hardcoded API key (lib/config.ts:42)
API key found in plain source. Move to environment variables.
WARN Possible N+1 query (services/users.ts:88)
Loop calls DB inside iteration. Batch with a single query.
Scans are graded across five axes. The final grade maps to the composite score:
| Axis | What it checks |
|---|---|
| Security | Hardcoded secrets, injection vectors, insecure deps, exposed env vars |
| AI Slop | Copy-paste GPT patterns, dead logic branches, hallucinated variable names |
| Code Quality | Complexity, duplication, naming, error handling consistency |
| Performance | N+1 queries, blocking I/O, unoptimized loops |
| Structure | File organization, circular deps, module coupling |
| Grade | Score range |
|---|---|
| A | 90 - 100 |
| B | 75 - 89 |
| C | 60 - 74 |
| D | 45 - 59 |
| F | below 45 |
--report html)Writes 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.
--report json)Writes report.json to the scanned directory. Useful for CI pipelines and custom tooling.
{
"grade": "B",
"score": 74,
"scores": {
"security": 61,
"ai_slop": 78,
"code_quality": 82,
"performance": 70,
"structure": 88
},
"issues": [
{
"severity": "critical",
"title": "Hardcoded API key",
"file": "lib/config.ts",
"line": 42,
"description": "...",
"fix": "..."
}
]
}
Override the default API and web URLs if you are self-hosting:
VIBEFORGE_API_URL=https://your-api.example.com
VIBEFORGE_WEB_URL=https://your-web.example.com
The auth token is stored locally on your machine after vibeforge login. Run vibeforge logout to remove it, or vibeforge whoami to check it.
.ts · .js · .py · .go · .java
Automatically skipped: node_modules, .git, dist, build, .next, coverage, lock files, minified files, and all binary/media assets.
MIT
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
oraEnvironment{
"local_name": "ora",
"alias": false,
"peer_metadata": null
} | latest | runtime |
globEnvironment{
"local_name": "glob",
"alias": false,
"peer_metadata": null
} | latest | runtime |
openEnvironment{
"local_name": "open",
"alias": false,
"peer_metadata": null
} | latest | runtime |
chalkEnvironment{
"local_name": "chalk",
"alias": false,
"peer_metadata": null
} | latest | runtime |
openaiEnvironment{
"local_name": "openai",
"alias": false,
"peer_metadata": null
} | latest | runtime |
commanderEnvironment{
"local_name": "commander",
"alias": false,
"peer_metadata": null
} | latest | runtime |
ts-nodeEnvironment{
"local_name": "ts-node",
"alias": false,
"peer_metadata": null
} | latest | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | latest | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | latest | development |
Source distribution
{
"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
}Observed since 21 Oct, 08:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:bfb60a0940864aab4a6dff449824a4e9b5d34a25898a83791c3b5c4eb54676aa