Skip to main content

Grade your vibe-coded project. One command, instant letter grade across security, quality, dependencies, and testing.

Project description

๐ŸŽต vibescore

Grade your vibe-coded project. One command. Instant letter grade.

PyPI License Python Tests

"Vibe coding" is the new reality โ€” you prompt, AI writes, you ship.
But is your vibe-coded project actually good?
Find out in 10 seconds.

$ vibescore .

๐ŸŽต Vibe Check  v0.1.0
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  Project:   tokonomics
  Files:     40 (32 Python, 8 other)
  Lines:     4,658
  Scanned in 0.12s

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Category         โ”‚ Score  โ”‚ Grade โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Code Quality     โ”‚   52.0 โ”‚ F     โ”‚
โ”‚ Security         โ”‚  100.0 โ”‚ A+    โ”‚
โ”‚ Dependencies     โ”‚   98.0 โ”‚ A+    โ”‚
โ”‚ Testing          โ”‚  100.0 โ”‚ A+    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Overall          โ”‚   87.6 โ”‚ B+    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŸก Warnings (11)
  VC201  Function 'export_svg_chart' too long (102 lines)
  VC202  Function '_build_cli' high complexity (30)
  VC203  Function 'export_svg_chart' has 6 parameters (>5)
  ...

๐Ÿ’ก Tips
  โ€ข Reduce function complexity and add type annotations

Install

pip install vibescore

That's it. Zero dependencies. Works with Python 3.9+.

Usage

# Grade the current directory
vibescore .

# Grade a specific project
vibescore /path/to/project

# JSON output (for CI pipelines)
vibescore . --format json

# Fail CI if score is below threshold
vibescore . --min-score 70

As a Python library

from vibescore import scan

report = scan(".")
print(f"Grade: {report.overall_grade} ({report.overall_score:.0f}/100)")

for category in report.categories:
    print(f"  {category.name}: {category.grade}")

What It Checks

Category Checks Codes
Code Quality Function length, cyclomatic complexity, parameter count, type annotations, nesting depth, star imports, docstrings, mutable defaults VC201โ€“VC209
Security Hardcoded secrets, AWS keys, SQL injection, shell injection, unsafe deserialization, eval/exec, debug mode, private keys VC301โ€“VC309
Dependencies Version pinning, lock files, deprecated setup.py, wildcard pins VC401โ€“VC405
Testing Test file presence, test count, CI configuration, conftest.py, test-to-code ratio VC501โ€“VC506

Grading Scale

Grade Score Grade Score
A+ 97โ€“100 C+ 77โ€“79
A 93โ€“96 C 73โ€“76
A- 90โ€“92 C- 70โ€“72
B+ 87โ€“89 D+ 67โ€“69
B 83โ€“86 D 63โ€“66
B- 80โ€“82 D- 60โ€“62
F 0โ€“59

CI Integration

GitHub Actions

- name: Vibe Check
  run: |
    pip install vibescore
    vibescore . --min-score 70

Pre-commit (manual)

# In your Makefile or CI script
vibescore . --min-score 70 --format json > vibe-report.json

Pre-commit

repos:
  - repo: https://github.com/stef41/vibescore
    rev: v0.1.0
    hooks:
      - id: vibescore
        args: ["--min-score", "70"]

How Scoring Works

Each category is scored 0โ€“100 independently. The overall score is a weighted average:

Category Weight
Security 30%
Code Quality 25%
Testing 25%
Dependencies 20%

Security is weighted highest because a security bug in vibe-coded projects can be catastrophic.

Why vibescore?

Vibe coding means AI writes most of your code. That's fast, but it introduces risks:

  • AI hallucinates long functions that are hard to debug
  • AI skips security basics like input validation and secret management
  • AI often omits tests or writes superficial ones
  • AI uses loose dependency pins that break on updates

vibescore catches these patterns in seconds, so you can ship fast and ship safe.

FAQ

Q: Does this only work with Python?
A: Currently Python-focused for code quality and testing analysis. Security and dependency checks work with any project type. More languages coming soon.

Q: Does it phone home or require an API key?
A: No. Zero network requests. Zero dependencies. Runs entirely offline.

Q: How is this different from pylint/ruff/flake8?
A: Those are line-level linters. vibescore gives you a project-level grade across security, quality, testing, and dependencies โ€” a holistic view of your vibe-coded project's health. Use both.

See Also

Tools in the same ecosystem:

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vibescore-0.2.0.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vibescore-0.2.0-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

Details for the file vibescore-0.2.0.tar.gz.

File metadata

  • Download URL: vibescore-0.2.0.tar.gz
  • Upload date:
  • Size: 25.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for vibescore-0.2.0.tar.gz
Algorithm Hash digest
SHA256 17041ecb610b26f8b7fbeea044b3c8562a3655a2be34c1c8ce9d9bbe66c33f00
MD5 9e432e8d7008b3461ec225986935594d
BLAKE2b-256 92e2576f21cd042c9e0115ff265e328da877057bb62786abd6468875c76e0428

See more details on using hashes here.

File details

Details for the file vibescore-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: vibescore-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 22.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for vibescore-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48598dfb87a6438010d23d4306c852c81911ae1d1bc17c7cf261bccf2ee6d88e
MD5 bcc952df2a5ce2b0691a25c13286a5d3
BLAKE2b-256 453fb450a8ceb6c132e3d6eaeccdad22642fbcb551139b20030a585f33fef9e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page