Skip to main content

Scaffold and maintain production-ready Python projects with a rich CLI and Claude Code plugin.

Project description


Build status Supported Python versions Docs License

This is a modern Cookiecutter template that can be used to initiate a Python project with all the necessary tools for development, testing, and deployment. It supports the following features:


Documentation - Example


Quickstart

Discord Join Discord

Navigate to the directory where you want your new project and run:

uvx spinup-py my-project

Or install globally first:

uv tool install spinup-py
spinup-py my-project

Follow the guided prompts to configure your project. Once complete, a new directory my-project/ will be created with everything set up.

To retrofit an existing project with the latest tooling:

spinup-py --update /path/to/existing-project

spinup-py is the Python sibling of spinup-ts, the equivalent TypeScript project scaffolder.

Install from source

For local or development use (e.g. running it as a Claude Code plugin), install the checkout directly with an editable install:

uv tool install --editable .

Usage

# Scaffold a new project (bare form — positional name)
spinup-py my-project

# Same thing via the explicit subcommand
spinup-py new my-project

# Retrofit an existing project with the current tooling
spinup-py update /path/to/existing-project

# Or via the root flag (equivalent to `update`)
spinup-py --update /path/to/existing-project

# Print the installed version
spinup-py --version

Flags

Flag / command Description
spinup-py <name> Scaffold a new project with the given name (runs the guided prompts).
spinup-py new [<name>] Explicit subcommand for scaffolding a new project.
spinup-py update [<dir>] Retrofit an existing project at <dir> (defaults to the current directory).
--update, -u <dir> Root-level equivalent of update — retrofit an existing project at <dir>.
--non-interactive, -y Scaffold with sensible defaults and no prompts.
--version, -v Print the installed version and exit.

Offline / custom template

By default the published CLI fetches its Cookiecutter template from GitHub (gh:joeblackwaslike/spinup-py). To use a local or custom template instead — handy when working offline or from a fork — set the SPINUP_PY_TEMPLATE environment variable to any Cookiecutter reference (a local path, a different GitHub repo, etc.):

SPINUP_PY_TEMPLATE=/path/to/template spinup-py my-project

Acknowledgements & Lineage

Feedback and contributing

My mission with this is to build the best project starter for python projects that has everything you can want, the ability to customize and/or opt out of most everything, and save you the most time!

I am only one person with very specific preferences. If you have any feedback you can email me at me@joeblack.nyc. If you find any bugs, mistakes, missed opportunities, or would like to contribute new functionality in any way, I would love to hear about it in an issue, feel free to email me the issue to get my attention.

This project is under continuous iterative improvements as I find bugs, and better and more effective ways to do things. But I can only do so much on my own, so please open an issue if you want to help/contribute and we can iterate and discuss how we can make this happen. If you find an outright bug or mistake, just open a PR and describe all the details there.

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

spinup_py-0.2.0.tar.gz (210.0 kB view details)

Uploaded Source

Built Distribution

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

spinup_py-0.2.0-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: spinup_py-0.2.0.tar.gz
  • Upload date:
  • Size: 210.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for spinup_py-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9ac32688f8c1a186aeb4af3257ff17f1852c47ca6ae36790aa4e539b65120857
MD5 64d81d7c1df87bd6dd60407e946dcabd
BLAKE2b-256 6eeba65dc87bedcfcaf419ca3174f5ed45bab5ee159de50a3f6ed39a9eca2d0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for spinup_py-0.2.0.tar.gz:

Publisher: release-please.yml on joeblackwaslike/spinup-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: spinup_py-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for spinup_py-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b31bd1660ca826cc85155bb775c82cf58249bbf10b9642779e302e81683f6df
MD5 d4982363c2c429d0b5401b48710aa6a0
BLAKE2b-256 854b789dd40b7bbc97b20b51b563b975c60f79ae3baad51846395f159625293a

See more details on using hashes here.

Provenance

The following attestation bundles were made for spinup_py-0.2.0-py3-none-any.whl:

Publisher: release-please.yml on joeblackwaslike/spinup-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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