Scaffold a modern Python project —
pyproject.toml/uv, ruff, pytest,src/layout — from a CLI (and soon the browser). Packkit's Python sibling.
Like create-packkit, this is a JavaScript generator — but its output is an
idiomatic Python project. That means the whole Packkit engine pattern (a
deterministic core, presets, a browser configurator, --schema, MCP, and a
packkit.json provenance file) carries over, while you get standard Python:
PEP 621 pyproject.toml, a src/ layout, ruff, pytest, mypy, and a hatchling
build. No Python toolchain is needed to generate — only to run what's generated.
npx create-packkit-py py-lib my-lib
npx create-packkit-py py-cli my-tool
# then:
cd my-lib && uv sync --all-extras && uv run pytestEvery generated project passes pytest, ruff, and mypy --strict out of the
box — the same guarantee create-packkit makes for JS/TS.
| Preset | Alias | What you get |
|---|---|---|
py-lib |
lib |
Library — src/ layout, ruff, pytest, mypy (strict), hatchling build, py.typed. |
py-cli |
cli |
Everything in py-lib plus an argparse entry point wired as a console script. |
--name <name> Distribution name (or a positional, in either slot)
--description <text>
--author "<name> <email>"
--license <MIT|none> (default: MIT)
--python <3.x> Minimum Python version (default: 3.11)
--target <library|cli>
--no-typecheck Skip the mypy config + dev dependency
--here Scaffold into the current directory
--force Overwrite existing files
create-packkit-py is a separate package, not a fork of create-packkit's
core — Packkit stays JS/TS-focused, and Python lives in its own sibling. The two
are composed at the edges: the shared packkit-mcp server can front both, and
the browser configurator can host both engines.
Roadmap: uv/Poetry/PDM choice · Apache-2.0 · ruff/mypy config knobs · web
configurator + MCP wiring · baseline-aware upgrade.
Node.js >= 20 to run the generator.
MIT © DanMat