slopbuster 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- slopbuster-0.5.0/LICENSE +21 -0
- slopbuster-0.5.0/MANIFEST.in +5 -0
- slopbuster-0.5.0/PKG-INFO +230 -0
- slopbuster-0.5.0/README.md +204 -0
- slopbuster-0.5.0/pyproject.toml +46 -0
- slopbuster-0.5.0/scripts/build_pro_binary.sh +22 -0
- slopbuster-0.5.0/setup.cfg +4 -0
- slopbuster-0.5.0/slopbuster.egg-info/PKG-INFO +230 -0
- slopbuster-0.5.0/slopbuster.egg-info/SOURCES.txt +25 -0
- slopbuster-0.5.0/slopbuster.egg-info/dependency_links.txt +1 -0
- slopbuster-0.5.0/slopbuster.egg-info/entry_points.txt +2 -0
- slopbuster-0.5.0/slopbuster.egg-info/requires.txt +5 -0
- slopbuster-0.5.0/slopbuster.egg-info/top_level.txt +1 -0
- slopbuster-0.5.0/tests/test_comments.py +299 -0
- slopbuster-0.5.0/vibecheck/__init__.py +1 -0
- slopbuster-0.5.0/vibecheck/cleaner/__init__.py +0 -0
- slopbuster-0.5.0/vibecheck/cleaner/comments.py +95 -0
- slopbuster-0.5.0/vibecheck/cleaner/documentation.py +81 -0
- slopbuster-0.5.0/vibecheck/cleaner/naming.py +129 -0
- slopbuster-0.5.0/vibecheck/cleaner/pipeline.py +79 -0
- slopbuster-0.5.0/vibecheck/cleaner/spacing.py +33 -0
- slopbuster-0.5.0/vibecheck/cli/__init__.py +0 -0
- slopbuster-0.5.0/vibecheck/cli/main.py +614 -0
- slopbuster-0.5.0/vibecheck/core/__init__.py +0 -0
- slopbuster-0.5.0/vibecheck/core/interfaces.py +38 -0
- slopbuster-0.5.0/vibecheck/pro_main.py +25 -0
- slopbuster-0.5.0/vibecheck-pro.spec +47 -0
slopbuster-0.5.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tallow
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: slopbuster
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: Surgical code-sanitization engine that turns vibe-coded Python into clean, professional code.
|
|
5
|
+
Author-email: Tallow <tallow@example.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: code-quality,refactor,clean-code,ai-slop,formatter,linter
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: typer
|
|
21
|
+
Requires-Dist: ruff
|
|
22
|
+
Requires-Dist: rich
|
|
23
|
+
Requires-Dist: radon>=6.0.1
|
|
24
|
+
Requires-Dist: mccabe>=0.7.0
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
# VibeCheck
|
|
28
|
+
|
|
29
|
+
> **Precision cleaning for the professional engineer.**
|
|
30
|
+
|
|
31
|
+
VibeCheck is a **surgical code-sanitization engine**. It transforms "vibe-coded" (AI-assisted or hastily written) Python into clean, professional source code by removing conversational filler, redundant documentation, and low-effort naming — without changing program behavior.
|
|
32
|
+
|
|
33
|
+
Directory support, rich reports, and a conservative approach keep it safe for real codebases. Pro tier (separate binary) adds unlimited scale and extras.
|
|
34
|
+
|
|
35
|
+
## Key Features
|
|
36
|
+
|
|
37
|
+
- **AI Reflective Stripper**: Removes the #1 AI tell — meta comments like "Note that I've implemented...", "Hope this helps!", "As you can see...".
|
|
38
|
+
- **Redundant Docstring Cleaner (AST-Powered)**: Deletes docstrings that merely echo the function or class name (e.g. `def get_data(): """get data"""`).
|
|
39
|
+
- **Naming Analyzer**: Detects low-effort variables (`data`, `res`, `tmp`, `result`, `obj`...) and reports them in a dedicated table.
|
|
40
|
+
- **Metadata-Aware Pipeline**: Strategies populate rich `VibeReport` metadata (counts, issues list) for detailed analysis and "Boy Scout" recommendations.
|
|
41
|
+
- **Cognitive Load Index**: Multi-factor score (cyclomatic complexity via radon + slop density + nesting).
|
|
42
|
+
- **Structural Normalizer**: Collapses excessive blank lines and trims erratic whitespace.
|
|
43
|
+
- **Boy Scout Recommendations**: Actionable clean-code advice printed when issues are found.
|
|
44
|
+
- **Pro tier**: The separate `vibecheck-pro` binary (via Lemon Squeezy) unlocks `--aggressive`, full `ruff format`, `--json-report`, unlimited batch sizes, and more. The free `pip` package has soft limits.
|
|
45
|
+
|
|
46
|
+
## Before & After
|
|
47
|
+
|
|
48
|
+
### Before
|
|
49
|
+
```python
|
|
50
|
+
# vibes
|
|
51
|
+
# Note that i've implemented the logic below to handle the response
|
|
52
|
+
def get_data(data):
|
|
53
|
+
"""get data"""
|
|
54
|
+
# lol slop
|
|
55
|
+
res = data
|
|
56
|
+
return res
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### After (cleaned by VibeCheck)
|
|
60
|
+
```python
|
|
61
|
+
def get_data(data):
|
|
62
|
+
res = data
|
|
63
|
+
return res
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Report:**
|
|
67
|
+
- Slop Indicators Removed: 3
|
|
68
|
+
- Structural Improvements: 1 (redundant docstring)
|
|
69
|
+
- Suspicious Naming: `data`, `res` flagged (see table below)
|
|
70
|
+
|
|
71
|
+
Names are reported by default; pass `--fix-names` to auto-rename via AST transformation.
|
|
72
|
+
|
|
73
|
+
## Advanced Metrics & Reporting
|
|
74
|
+
|
|
75
|
+
VibeCheck computes a **Cognitive Load Index** (0-100) using:
|
|
76
|
+
- Cyclomatic complexity (via radon)
|
|
77
|
+
- Slop / vibe-keyword density
|
|
78
|
+
- Structural nesting depth
|
|
79
|
+
|
|
80
|
+
It produces a rich `VibeReport` consumed by the CLI for tables and recommendations.
|
|
81
|
+
|
|
82
|
+
Example report (with the new Naming table):
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
Clarity Analysis: my_code.py
|
|
86
|
+
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
|
|
87
|
+
┃ Metric ┃ Value ┃
|
|
88
|
+
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
|
|
89
|
+
│ Original Vibe │ Chaotic │
|
|
90
|
+
│ Clean Vibe │ Stable │
|
|
91
|
+
│ Slop Indicators Removed │ 3 │
|
|
92
|
+
│ Structural Improvements │ 1 │
|
|
93
|
+
│ Cognitive Load Index │ 42.0 │
|
|
94
|
+
└──────────────────────┴──────────────┘
|
|
95
|
+
|
|
96
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
97
|
+
┃ Suspicious Naming Detected ┃
|
|
98
|
+
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
|
99
|
+
│ Suspicious variable: res │
|
|
100
|
+
│ Suspicious variable: data │
|
|
101
|
+
└────────────────────────────┘
|
|
102
|
+
|
|
103
|
+
┌────────────────────────────────────────────┐
|
|
104
|
+
│ Boy Scout Recommendation │
|
|
105
|
+
├────────────────────────────────────────────┤
|
|
106
|
+
│ Suspicious variable/function names │
|
|
107
|
+
│ detected. Use more descriptive names... │
|
|
108
|
+
└────────────────────────────────────────────┘
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
See `vibecheck/core/interfaces.py` for the full VibeReport dataclass.
|
|
112
|
+
|
|
113
|
+
## Usage
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Analyze only (no writes)
|
|
117
|
+
vibecheck my_code.py --report-only
|
|
118
|
+
# or explicitly
|
|
119
|
+
vibecheck clean my_code.py --report-only
|
|
120
|
+
|
|
121
|
+
# Clean the file in place (creates no backup — use git)
|
|
122
|
+
vibecheck my_code.py
|
|
123
|
+
|
|
124
|
+
# Auto-rename suspicious variables/functions
|
|
125
|
+
vibecheck src/ --fix-names
|
|
126
|
+
|
|
127
|
+
# Only clean files modified since the last commit (git-aware)
|
|
128
|
+
vibecheck --git
|
|
129
|
+
|
|
130
|
+
# Git-stash dirty state first then clean (safety net)
|
|
131
|
+
vibecheck src/ --backup
|
|
132
|
+
|
|
133
|
+
# Install a pre-commit hook to clean staged .py files
|
|
134
|
+
vibecheck install-hooks
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
The primary command is `clean <path>` (defaults to `.`). Both files and directories (recursive) are supported. Use `--report-only` for analysis without edits. Always commit or backup first.
|
|
138
|
+
|
|
139
|
+
### Pro features (Pro binary)
|
|
140
|
+
|
|
141
|
+
The free package (`pip install slopbuster`) is fully functional for most use. Pro is delivered as a standalone binary via Lemon Squeezy (no key, just drop `vibecheck-pro` in your PATH).
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# With the Pro binary in PATH (name auto-enables full features)
|
|
145
|
+
vibecheck-pro src/ --aggressive --json-report report.json
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
See `vibecheck clean --help` (or `vibecheck-pro ...`) for options. Pro removes the free tier's 10-file batch soft limit and enables aggressive patterns + ruff format + JSON export.
|
|
149
|
+
|
|
150
|
+
## Example Report
|
|
151
|
+
|
|
152
|
+
```text
|
|
153
|
+
Clarity Analysis: my_code.py
|
|
154
|
+
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
|
|
155
|
+
┃ Metric ┃ Value ┃
|
|
156
|
+
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
|
|
157
|
+
│ Original Vibe │ Chaotic │
|
|
158
|
+
│ Clean Vibe │ Professional │
|
|
159
|
+
│ Slop Indicators │ 14 │
|
|
160
|
+
│ Cognitive Load Index │ 4.2 │
|
|
161
|
+
└──────────────────────┴──────────────┘
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Installation
|
|
165
|
+
|
|
166
|
+
From PyPI (recommended):
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
pip install slopbuster
|
|
170
|
+
# or
|
|
171
|
+
uv pip install slopbuster
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
For development (uv recommended):
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
git clone ...
|
|
178
|
+
cd vibecheck_repo
|
|
179
|
+
uv sync --dev # or uv pip install -e . -r <(uv pip compile --group dev ...)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Check version:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
vibecheck --version
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Free vs Pro
|
|
189
|
+
|
|
190
|
+
VibeCheck core is free and open source (MIT) on PyPI.
|
|
191
|
+
|
|
192
|
+
- **Free** (`pip install slopbuster`): Full pipeline, reports, naming fixes, git integration, hooks, etc. Soft limit: max 10 files per batch/directory operation (single files always allowed). When the limit is hit it prints an upgrade link.
|
|
193
|
+
- **Pro** (commercial binary): Unlimited files, `--aggressive` patterns, post-clean `ruff format`, `--json-report`, and future extras. Distributed as a standalone executable via Lemon Squeezy (no PyPI, no keys). Just place `vibecheck-pro` in PATH — the binary name auto-enables Pro mode.
|
|
194
|
+
|
|
195
|
+
Purchase / download the Pro binary at the [Lemon Squeezy store](https://buy.lemonsqueezy.com/vibecheck-pro). After purchase Lemon Squeezy emails the direct download link.
|
|
196
|
+
|
|
197
|
+
The `vibecheck-pro/` build configuration lives alongside the free source (see `vibecheck-pro.spec` + `scripts/build_pro_binary.sh`).
|
|
198
|
+
|
|
199
|
+
## Pro Tier
|
|
200
|
+
|
|
201
|
+
Pro features (available in the Lemon Squeezy binary):
|
|
202
|
+
|
|
203
|
+
- Unlimited batch/directory size (free has 10-file soft cap)
|
|
204
|
+
- `--aggressive`: Additional patterns (todo/hack/temp etc.)
|
|
205
|
+
- Post-clean `ruff format` (free only does `ruff check --fix`)
|
|
206
|
+
- `--json-report path.json`: Structured output for CI/tooling
|
|
207
|
+
|
|
208
|
+
Example (once the Pro binary is in PATH):
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
vibecheck-pro dirty/ --json-report report.json --aggressive
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Feedback and feature requests are very welcome.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Donate
|
|
219
|
+
|
|
220
|
+
If VibeCheck saves you time and you want to say thanks:
|
|
221
|
+
|
|
222
|
+
- **Ko-fi**: https://ko-fi.com/devot
|
|
223
|
+
|
|
224
|
+
All donations fund further development of VibeCheck and sibling projects.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## License
|
|
229
|
+
|
|
230
|
+
MIT
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# VibeCheck
|
|
2
|
+
|
|
3
|
+
> **Precision cleaning for the professional engineer.**
|
|
4
|
+
|
|
5
|
+
VibeCheck is a **surgical code-sanitization engine**. It transforms "vibe-coded" (AI-assisted or hastily written) Python into clean, professional source code by removing conversational filler, redundant documentation, and low-effort naming — without changing program behavior.
|
|
6
|
+
|
|
7
|
+
Directory support, rich reports, and a conservative approach keep it safe for real codebases. Pro tier (separate binary) adds unlimited scale and extras.
|
|
8
|
+
|
|
9
|
+
## Key Features
|
|
10
|
+
|
|
11
|
+
- **AI Reflective Stripper**: Removes the #1 AI tell — meta comments like "Note that I've implemented...", "Hope this helps!", "As you can see...".
|
|
12
|
+
- **Redundant Docstring Cleaner (AST-Powered)**: Deletes docstrings that merely echo the function or class name (e.g. `def get_data(): """get data"""`).
|
|
13
|
+
- **Naming Analyzer**: Detects low-effort variables (`data`, `res`, `tmp`, `result`, `obj`...) and reports them in a dedicated table.
|
|
14
|
+
- **Metadata-Aware Pipeline**: Strategies populate rich `VibeReport` metadata (counts, issues list) for detailed analysis and "Boy Scout" recommendations.
|
|
15
|
+
- **Cognitive Load Index**: Multi-factor score (cyclomatic complexity via radon + slop density + nesting).
|
|
16
|
+
- **Structural Normalizer**: Collapses excessive blank lines and trims erratic whitespace.
|
|
17
|
+
- **Boy Scout Recommendations**: Actionable clean-code advice printed when issues are found.
|
|
18
|
+
- **Pro tier**: The separate `vibecheck-pro` binary (via Lemon Squeezy) unlocks `--aggressive`, full `ruff format`, `--json-report`, unlimited batch sizes, and more. The free `pip` package has soft limits.
|
|
19
|
+
|
|
20
|
+
## Before & After
|
|
21
|
+
|
|
22
|
+
### Before
|
|
23
|
+
```python
|
|
24
|
+
# vibes
|
|
25
|
+
# Note that i've implemented the logic below to handle the response
|
|
26
|
+
def get_data(data):
|
|
27
|
+
"""get data"""
|
|
28
|
+
# lol slop
|
|
29
|
+
res = data
|
|
30
|
+
return res
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### After (cleaned by VibeCheck)
|
|
34
|
+
```python
|
|
35
|
+
def get_data(data):
|
|
36
|
+
res = data
|
|
37
|
+
return res
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Report:**
|
|
41
|
+
- Slop Indicators Removed: 3
|
|
42
|
+
- Structural Improvements: 1 (redundant docstring)
|
|
43
|
+
- Suspicious Naming: `data`, `res` flagged (see table below)
|
|
44
|
+
|
|
45
|
+
Names are reported by default; pass `--fix-names` to auto-rename via AST transformation.
|
|
46
|
+
|
|
47
|
+
## Advanced Metrics & Reporting
|
|
48
|
+
|
|
49
|
+
VibeCheck computes a **Cognitive Load Index** (0-100) using:
|
|
50
|
+
- Cyclomatic complexity (via radon)
|
|
51
|
+
- Slop / vibe-keyword density
|
|
52
|
+
- Structural nesting depth
|
|
53
|
+
|
|
54
|
+
It produces a rich `VibeReport` consumed by the CLI for tables and recommendations.
|
|
55
|
+
|
|
56
|
+
Example report (with the new Naming table):
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
Clarity Analysis: my_code.py
|
|
60
|
+
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
|
|
61
|
+
┃ Metric ┃ Value ┃
|
|
62
|
+
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
|
|
63
|
+
│ Original Vibe │ Chaotic │
|
|
64
|
+
│ Clean Vibe │ Stable │
|
|
65
|
+
│ Slop Indicators Removed │ 3 │
|
|
66
|
+
│ Structural Improvements │ 1 │
|
|
67
|
+
│ Cognitive Load Index │ 42.0 │
|
|
68
|
+
└──────────────────────┴──────────────┘
|
|
69
|
+
|
|
70
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
71
|
+
┃ Suspicious Naming Detected ┃
|
|
72
|
+
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
|
73
|
+
│ Suspicious variable: res │
|
|
74
|
+
│ Suspicious variable: data │
|
|
75
|
+
└────────────────────────────┘
|
|
76
|
+
|
|
77
|
+
┌────────────────────────────────────────────┐
|
|
78
|
+
│ Boy Scout Recommendation │
|
|
79
|
+
├────────────────────────────────────────────┤
|
|
80
|
+
│ Suspicious variable/function names │
|
|
81
|
+
│ detected. Use more descriptive names... │
|
|
82
|
+
└────────────────────────────────────────────┘
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
See `vibecheck/core/interfaces.py` for the full VibeReport dataclass.
|
|
86
|
+
|
|
87
|
+
## Usage
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Analyze only (no writes)
|
|
91
|
+
vibecheck my_code.py --report-only
|
|
92
|
+
# or explicitly
|
|
93
|
+
vibecheck clean my_code.py --report-only
|
|
94
|
+
|
|
95
|
+
# Clean the file in place (creates no backup — use git)
|
|
96
|
+
vibecheck my_code.py
|
|
97
|
+
|
|
98
|
+
# Auto-rename suspicious variables/functions
|
|
99
|
+
vibecheck src/ --fix-names
|
|
100
|
+
|
|
101
|
+
# Only clean files modified since the last commit (git-aware)
|
|
102
|
+
vibecheck --git
|
|
103
|
+
|
|
104
|
+
# Git-stash dirty state first then clean (safety net)
|
|
105
|
+
vibecheck src/ --backup
|
|
106
|
+
|
|
107
|
+
# Install a pre-commit hook to clean staged .py files
|
|
108
|
+
vibecheck install-hooks
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The primary command is `clean <path>` (defaults to `.`). Both files and directories (recursive) are supported. Use `--report-only` for analysis without edits. Always commit or backup first.
|
|
112
|
+
|
|
113
|
+
### Pro features (Pro binary)
|
|
114
|
+
|
|
115
|
+
The free package (`pip install slopbuster`) is fully functional for most use. Pro is delivered as a standalone binary via Lemon Squeezy (no key, just drop `vibecheck-pro` in your PATH).
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# With the Pro binary in PATH (name auto-enables full features)
|
|
119
|
+
vibecheck-pro src/ --aggressive --json-report report.json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
See `vibecheck clean --help` (or `vibecheck-pro ...`) for options. Pro removes the free tier's 10-file batch soft limit and enables aggressive patterns + ruff format + JSON export.
|
|
123
|
+
|
|
124
|
+
## Example Report
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
Clarity Analysis: my_code.py
|
|
128
|
+
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
|
|
129
|
+
┃ Metric ┃ Value ┃
|
|
130
|
+
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
|
|
131
|
+
│ Original Vibe │ Chaotic │
|
|
132
|
+
│ Clean Vibe │ Professional │
|
|
133
|
+
│ Slop Indicators │ 14 │
|
|
134
|
+
│ Cognitive Load Index │ 4.2 │
|
|
135
|
+
└──────────────────────┴──────────────┘
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Installation
|
|
139
|
+
|
|
140
|
+
From PyPI (recommended):
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
pip install slopbuster
|
|
144
|
+
# or
|
|
145
|
+
uv pip install slopbuster
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
For development (uv recommended):
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
git clone ...
|
|
152
|
+
cd vibecheck_repo
|
|
153
|
+
uv sync --dev # or uv pip install -e . -r <(uv pip compile --group dev ...)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Check version:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
vibecheck --version
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Free vs Pro
|
|
163
|
+
|
|
164
|
+
VibeCheck core is free and open source (MIT) on PyPI.
|
|
165
|
+
|
|
166
|
+
- **Free** (`pip install slopbuster`): Full pipeline, reports, naming fixes, git integration, hooks, etc. Soft limit: max 10 files per batch/directory operation (single files always allowed). When the limit is hit it prints an upgrade link.
|
|
167
|
+
- **Pro** (commercial binary): Unlimited files, `--aggressive` patterns, post-clean `ruff format`, `--json-report`, and future extras. Distributed as a standalone executable via Lemon Squeezy (no PyPI, no keys). Just place `vibecheck-pro` in PATH — the binary name auto-enables Pro mode.
|
|
168
|
+
|
|
169
|
+
Purchase / download the Pro binary at the [Lemon Squeezy store](https://buy.lemonsqueezy.com/vibecheck-pro). After purchase Lemon Squeezy emails the direct download link.
|
|
170
|
+
|
|
171
|
+
The `vibecheck-pro/` build configuration lives alongside the free source (see `vibecheck-pro.spec` + `scripts/build_pro_binary.sh`).
|
|
172
|
+
|
|
173
|
+
## Pro Tier
|
|
174
|
+
|
|
175
|
+
Pro features (available in the Lemon Squeezy binary):
|
|
176
|
+
|
|
177
|
+
- Unlimited batch/directory size (free has 10-file soft cap)
|
|
178
|
+
- `--aggressive`: Additional patterns (todo/hack/temp etc.)
|
|
179
|
+
- Post-clean `ruff format` (free only does `ruff check --fix`)
|
|
180
|
+
- `--json-report path.json`: Structured output for CI/tooling
|
|
181
|
+
|
|
182
|
+
Example (once the Pro binary is in PATH):
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
vibecheck-pro dirty/ --json-report report.json --aggressive
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Feedback and feature requests are very welcome.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Donate
|
|
193
|
+
|
|
194
|
+
If VibeCheck saves you time and you want to say thanks:
|
|
195
|
+
|
|
196
|
+
- **Ko-fi**: https://ko-fi.com/devot
|
|
197
|
+
|
|
198
|
+
All donations fund further development of VibeCheck and sibling projects.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
MIT
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "slopbuster"
|
|
3
|
+
version = "0.5.0"
|
|
4
|
+
description = "Surgical code-sanitization engine that turns vibe-coded Python into clean, professional code."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
requires-python = ">=3.10"
|
|
8
|
+
authors = [{ name = "Tallow", email = "tallow@example.com" }]
|
|
9
|
+
keywords = ["code-quality", "refactor", "clean-code", "ai-slop", "formatter", "linter"]
|
|
10
|
+
classifiers = [
|
|
11
|
+
"Development Status :: 4 - Beta",
|
|
12
|
+
"Environment :: Console",
|
|
13
|
+
"Intended Audience :: Developers",
|
|
14
|
+
"Programming Language :: Python :: 3",
|
|
15
|
+
"Programming Language :: Python :: 3.10",
|
|
16
|
+
"Programming Language :: Python :: 3.11",
|
|
17
|
+
"Programming Language :: Python :: 3.12",
|
|
18
|
+
"Topic :: Software Development :: Quality Assurance",
|
|
19
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
20
|
+
]
|
|
21
|
+
dependencies = [
|
|
22
|
+
"typer",
|
|
23
|
+
"ruff",
|
|
24
|
+
"rich",
|
|
25
|
+
"radon>=6.0.1",
|
|
26
|
+
"mccabe>=0.7.0",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.scripts]
|
|
30
|
+
vibecheck = "vibecheck.cli.main:app"
|
|
31
|
+
|
|
32
|
+
[tool.ruff]
|
|
33
|
+
line-length = 88
|
|
34
|
+
target-version = "py310"
|
|
35
|
+
|
|
36
|
+
[tool.ruff.lint]
|
|
37
|
+
select = ["E", "F", "I", "N", "W"]
|
|
38
|
+
|
|
39
|
+
[tool.pytest.ini_options]
|
|
40
|
+
testpaths = ["tests"]
|
|
41
|
+
python_files = "test_*.py"
|
|
42
|
+
|
|
43
|
+
[dependency-groups]
|
|
44
|
+
dev = [
|
|
45
|
+
"pytest>=9.0.3",
|
|
46
|
+
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Build the standalone vibecheck-pro binary using PyInstaller.
|
|
3
|
+
# Run from the vibecheck_repo root after `pip install pyinstaller` (or uv pip).
|
|
4
|
+
#
|
|
5
|
+
# After build, the dist/vibecheck-pro is uploaded to Lemon Squeezy for Pro customers.
|
|
6
|
+
# (LS is merchant of record and emails the download link; no keys in free tree.)
|
|
7
|
+
|
|
8
|
+
set -euo pipefail
|
|
9
|
+
|
|
10
|
+
echo "Cleaning previous builds..."
|
|
11
|
+
rm -rf build/ dist/ vibecheck.egg-info/ || true
|
|
12
|
+
|
|
13
|
+
echo "Building vibecheck-pro standalone binary..."
|
|
14
|
+
pyinstaller vibecheck-pro.spec
|
|
15
|
+
|
|
16
|
+
echo ""
|
|
17
|
+
echo "Binary created at: dist/vibecheck-pro"
|
|
18
|
+
echo "Test it: ./dist/vibecheck-pro --version"
|
|
19
|
+
echo "Test pro mode: ./dist/vibecheck-pro --help | cat"
|
|
20
|
+
echo ""
|
|
21
|
+
echo "Upload dist/vibecheck-pro to your Lemon Squeezy product/version."
|
|
22
|
+
echo "Users will place it in PATH; VS Code extension (future) will auto-detect."
|