A workflow accelerator that scaffolds AI-assisted coding projects with opinionated documentation and launches Claude Code.
Project description
cleanvibe
Website · cleanvibe.emmaleonhart.com
A tiny Python CLI that scaffolds AI-assisted coding projects and launches Claude Code.
cleanvibe is not a coding tool. It's a state initializer -- it removes the friction between "I want to build something" and "Claude is working inside a well-structured environment." The real value lives in the CLAUDE.md it injects: an opinionated behavior contract that enforces documentation discipline, meaningful commits, and iterative file-based thinking.
Install
pip install cleanvibe
Usage
Create a new project
cleanvibe new my-project
This will:
- Create the directory
my-project/ - Write
CLAUDE.md(workflow rules for AI-assisted development) - Write
README.md(starter documentation) - Write
queue.md(active work queue, pre-seeded with a first-session bootstrap sequence that walks Claude through triaging dropped-in files, inferring the project, interviewing the user, creatingtodo.md, populating the real queue, and pushing to a private GitHub repo) - Write
.gitignore(sensible Python defaults) - Initialize a git repo with an initial commit
- Launch Claude Code inside the project
Clone an existing repo — codebase onboarding
cleanvibe clone https://github.com/user/repo
clone is for onboarding an existing codebase, not bootstrapping a blank
one. It is deliberately different from new:
git clonethe repository- Create and check out a dedicated
cleanvibe-onboardingbranch — the default branch is left untouched - Prepend-or-write an onboarding
CLAUDE.mdandqueue.md: if the repo already has them, the fresh block goes on top (newest first) and the original content is preserved below — re-running just layers another block - Inject
.gitignoreonly if missing. Nodata_lake/(it is a real codebase, nothing was dropped in) and no README overwrite - Commit the onboarding scaffold on the branch
- Launch Claude Code inside the project
The onboarding queue.md is small and focused: read & document the repo,
make existing docs accurate, rewrite CLAUDE.md to the repo's real
development practices, add tests/CI if sparse, then synthesize any existing
planning artifacts and hand off to the repo's own todo.md.
Replicate a paper
cleanvibe replicate https://arxiv.org/abs/1706.03762
Accepts an arXiv or alphaxiv id / abs URL / pdf URL. This will:
- Fetch the paper's metadata from the arXiv API
- Create
replicating-<paper-slug>/(silently-2/-3if it already exists) - Scaffold a standalone replication project: cleanvibe conventions
(
CLAUDE.md,queue.md,data_lake/) plus the replication structure —SKILL.md(the agent-executable replication plan),download_paper.py,replication_target/(the paper itself lives here, gitignored — never indata_lake/; the authors' code is cloned here as a git submodule),paper.json, and.github/workflows/that build a GitHub Pages findings site, a transportable PDF report, and a downloadable ZIP replication package - Initialize a git repo with an initial commit
- Launch Claude Code inside the project
Every replication produces three compounding artifacts: the runnable
replication, a published findings report, and the reusable SKILL.md
methodology. See docs/replication_framing.md for the full vision.
Options
cleanvibe new my-project --dry-run # Preview what would be created
cleanvibe new my-project --no-claude # Skip launching Claude Code
cleanvibe clone REPO path --dry-run # Preview what would be done
cleanvibe replicate URL --dry-run # Preview the replication scaffold
cleanvibe replicate URL --no-claude # Scaffold without launching Claude
cleanvibe --version # Show version
Why?
Most people struggle with blank repo paralysis, poor commit hygiene, and AI assistants that ramble without producing durable artifacts. cleanvibe solves this by injecting a disciplined thinking contract into every project from the start.
The CLAUDE.md template enforces:
- Commit early and often with meaningful messages
- No planning-only modes -- all thinking produces files and commits
- Keep documentation up to date as the project evolves
- Use
planning/directories for exploration instead of internal planning modes
Cross-platform
Works on Windows, Linux, and macOS. Zero dependencies beyond Python 3.9+.
Website
Full walkthrough — what cleanvibe is and what each subcommand does — at the
project site (built from pages/ and deployed by GitHub Actions):
https://cleanvibe.emmaleonhart.com/
Stability
As of v1.0.0, cleanvibe commits to the following contract (semantic versioning from here on):
- Subcommands
new,clone,convert, andreplicateare stable. Their core behavior will not change incompatibly within the 1.x line. - Injected files:
newguaranteesCLAUDE.md,README.md,queue.md,.gitignore, anddata_lake/.gitkeep.replicateadditionally guaranteesSKILL.md,paper.json,download_paper.py, andreplication_target/. - Non-destructive by contract:
cloneandconvertnever overwrite existing files —cloneprepends;convertonly injects what is missing.replicatenever errors on a name collision (silent-2/-3suffix). - Template wording may evolve (improvements to the workflow contract are not breaking); the set of guaranteed files and the subcommand contracts above are what 1.x holds stable.
- Zero runtime dependencies remains a hard guarantee for the 1.x line.
License
MIT
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 cleanvibe-1.2.1.tar.gz.
File metadata
- Download URL: cleanvibe-1.2.1.tar.gz
- Upload date:
- Size: 33.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8367f1e9fbc4557d70c9fb1983b2ffbb7629c2df303c96845d66726b8a3b2a8
|
|
| MD5 |
f2aeaa0b4630e07e90ce53295aa564b0
|
|
| BLAKE2b-256 |
241f1f49a69821a2054a65561e5d2b9e02766bc2290615974b7c6ebe63c4e844
|
Provenance
The following attestation bundles were made for cleanvibe-1.2.1.tar.gz:
Publisher:
publish.yml on EmmaLeonhart/cleanvibe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cleanvibe-1.2.1.tar.gz -
Subject digest:
b8367f1e9fbc4557d70c9fb1983b2ffbb7629c2df303c96845d66726b8a3b2a8 - Sigstore transparency entry: 1566725616
- Sigstore integration time:
-
Permalink:
EmmaLeonhart/cleanvibe@2bcf1729e5583e23882ba6842b44b26b2e3ec1d4 -
Branch / Tag:
refs/tags/v1.2.1 - Owner: https://github.com/EmmaLeonhart
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2bcf1729e5583e23882ba6842b44b26b2e3ec1d4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cleanvibe-1.2.1-py3-none-any.whl.
File metadata
- Download URL: cleanvibe-1.2.1-py3-none-any.whl
- Upload date:
- Size: 27.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fe79295e508f24c169009be88c88aa06a38e40d94c17e9e0deeb3164e0a0871
|
|
| MD5 |
28381b410d5aff16eb4f1ad514116756
|
|
| BLAKE2b-256 |
9f8f204f878d93713b6891b2e74d93893f0fb834afe679a9233d65ac10fc26f5
|
Provenance
The following attestation bundles were made for cleanvibe-1.2.1-py3-none-any.whl:
Publisher:
publish.yml on EmmaLeonhart/cleanvibe
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cleanvibe-1.2.1-py3-none-any.whl -
Subject digest:
5fe79295e508f24c169009be88c88aa06a38e40d94c17e9e0deeb3164e0a0871 - Sigstore transparency entry: 1566725664
- Sigstore integration time:
-
Permalink:
EmmaLeonhart/cleanvibe@2bcf1729e5583e23882ba6842b44b26b2e3ec1d4 -
Branch / Tag:
refs/tags/v1.2.1 - Owner: https://github.com/EmmaLeonhart
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2bcf1729e5583e23882ba6842b44b26b2e3ec1d4 -
Trigger Event:
release
-
Statement type: