Scan, lock, and enforce your design system.
Project description
Vibe Check
Stop design drift when vibe coding with AI
The Problem • Quick Start • Features • AI Integration • Roadmap
The Problem
You're vibe coding with Cursor, Claude, or Copilot. Shipping fast. Feels great.
But by the 5th feature, your codebase looks like this:
// File 1: p-4, rounded-lg, bg-blue-500
// File 2: p-3, rounded-xl, bg-[#3b82f6]
// File 3: p-5, rounded-md, bg-blue-600
// File 4: padding: 18px, border-radius: 10px
No consistent spacing. Random colors. Mixed border radius. Design chaos.
The AI doesn't know your design system. It just generates something that works.
Quick Start
Install
pip install vibe-check
Check Your Codebase
cd your-project
vibe check
See what's drifting:
🔴 ERRORS — Must fix
1. colors: Replace arbitrary color `bg-[#ff6b6b]` with a theme color
2. typography: Move `font-[Comic_Sans]` to tailwind.config.js
🟡 WARNINGS — Should fix
1. border-radius: Reduce from 4 values to 2-3
🔵 SUGGESTIONS — Consider fixing
1. colors: Consolidate 6 one-off colors
Summary: 2 errors · 1 warning · 1 suggestion
Lock & Teach Your AI
Once you've fixed the errors, lock your design system:
vibe init
This will:
- 🔒 Lock your design system to
.vibe/system.json - 📝 Generate
.cursorrulesandCLAUDE.md - 🔌 Configure MCP server for Claude
That's it. Your AI tools now follow your design system.
Features
🔍 Scanner
Extracts design tokens from your Tailwind + CSS codebase:
| Category | What It Finds |
|---|---|
| Spacing | p-4, m-2, gap-6, px-[10px] |
| Colors | bg-blue-500, text-gray-900, bg-[#ff6b6b] |
| Typography | text-xl, font-bold, font-[Comic_Sans] |
| Border Radius | rounded-lg, rounded-[8px] |
| Shadows | shadow-md, shadow-[0_4px_6px_rgba(0,0,0,0.1)] |
🔒 Lock File
Generates .vibe/system.json — your source of truth:
{
"spacing": { "scale": [0, 2, 4, 6, 8, 12, 16] },
"colors": [
{ "name": "primary", "value": "blue-500", "hex": "#3b82f6" },
{ "name": "neutral", "value": "gray-600" }
],
"typography": {
"font_sizes": ["sm", "base", "lg", "xl"],
"font_weights": ["normal", "medium", "bold"]
},
"border_radius": { "scale": ["md", "lg", "full"] },
"shadows": { "scale": ["sm", "md", "lg"] }
}
AI Integration
Cursor
Reads .cursorrules automatically. No setup needed.
Claude Code
Reads CLAUDE.md automatically + connects via MCP for live queries:
You: Create a Card component
Claude: [uses get_design_system tool]
Claude: Here's a Card using your design system:
- bg-white (from your palette)
- p-4 (from your spacing scale)
- rounded-lg (from your border radius)
Claude Desktop
Connects via MCP server. Ask Claude to validate styles or suggest fixes.
Commands
| Command | Description |
|---|---|
vibe check |
Scan for design inconsistencies |
vibe init |
Lock design system + configure AI tools |
vibe lock |
Lock design system only |
vibe serve |
Start MCP server manually |
Options
vibe check # Scan current directory
vibe check ./src # Scan specific path
vibe check -v # Verbose output
vibe check -o json # JSON output (for CI)
vibe init # Full setup
vibe init -y # Skip prompts
vibe init --skip-mcp # Skip MCP configuration
Supported Tech
Frameworks: React, Next.js, Vue, Nuxt, Svelte, plain HTML
Styling: Tailwind CSS, vanilla CSS, SCSS
AI Tools: Cursor, Claude Code, Claude Desktop
Roadmap
Now
- CLI scanner for Tailwind + CSS
- Design system lock
-
.cursorrules+CLAUDE.mdgeneration - MCP server for Claude
Next
-
tailwind.config.jsexport - GitHub Action for PR checks
- Figma plugin
Contributing
git clone https://github.com/ihlamury/vibe-check.git
cd vibe-check
pip install -e ".[dev]"
pytest
See CONTRIBUTING.md for details.
License
MIT © Yagiz Ihlamur
Stop the design drift. Start the vibe check.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vibe_checkr-0.1.0.tar.gz.
File metadata
- Download URL: vibe_checkr-0.1.0.tar.gz
- Upload date:
- Size: 36.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
761b33d24cdc3bbfb0f124145d3629f86ca49cf782549a8759e51cca7f1e3233
|
|
| MD5 |
5beb56ae07c72679a665c35e63ee51e3
|
|
| BLAKE2b-256 |
58ac2ced32c3232a2605788abdb833ce3cc737524c779cd6e56b4a971bd39040
|
File details
Details for the file vibe_checkr-0.1.0-py3-none-any.whl.
File metadata
- Download URL: vibe_checkr-0.1.0-py3-none-any.whl
- Upload date:
- Size: 43.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52e61537eef4a5a0b79da810e2b46a64bcb30ed03cb4629a5fcde90445abfde2
|
|
| MD5 |
8b54fb983da47f60786339fb54eff4a3
|
|
| BLAKE2b-256 |
5ac63dbd2f0a7aee9c4c4cb1d06468f80f08a9590e91dde85f9ec79355a568ce
|