// Generate production-ready Python project skeletons with Astral UV package manager, Hatchling build backend with dynamic versioning, and modern tooling (ruff, mypy, pytest, bandit). Use when creating new Python projects, initializing Python packages, setting up src-layout projects, scaffolding Python libraries, or starting a new Python application. Supports Python 3.14+ by default with configurable version. Output to current directory, specified path, or tarball.
| name | python-project-skel |
| description | Generate production-ready Python project skeletons with Astral UV package manager, Hatchling build backend with dynamic versioning, and modern tooling (ruff, mypy, pytest, bandit). Use when creating new Python projects, initializing Python packages, setting up src-layout projects, scaffolding Python libraries, or starting a new Python application. Supports Python 3.14+ by default with configurable version. Output to current directory, specified path, or tarball. |
Creates production-ready Python project structures following modern best practices.
Generate a project in the current directory:
Project name: my-awesome-project
The skill prompts for required info and generates a complete project structure.
| Option | Default | Description |
|---|---|---|
| Project name | (required) | Kebab-case name (e.g., my-project) |
| Package name | (derived) | Snake_case from project name |
| Python version | 3.14 | Minimum Python version |
| License | MIT | License type |
| Author name | (optional) | For pyproject.toml |
| Author email | (optional) | For pyproject.toml |
| Description | (optional) | Project description |
| Output mode | cwd | cwd, path, or tarball |
{project-name}/
âââ pyproject.toml # Full config with all tools
âââ README.md
âââ LICENSE
âââ Makefile # UV-based dev targets
âââ src/{package_name}/
â âââ __init__.py # With __version__ = "0.1.0"
â âââ py.typed # PEP 561 marker
â âââ main.py # Entry point stub
âââ tests/
âââ __init__.py
âââ conftest.py # pytest fixtures
âââ test_main.py # Example test
pyproject.toml sections:
[build-system] - Hatchling backend[project] - Dynamic version, classifiers, URLs[project.optional-dependencies] - dev group[dependency-groups] - UV compatibility[tool.hatch.version] - Points to __init__.py[tool.ruff] - Format + lint (E, W, F, I, B, C4, UP, ARG, SIM)[tool.mypy] - Strict configuration[tool.pytest] - Native TOML (pytest 9.0+)[tool.coverage] - 80% threshold[tool.bandit] - Security scanningMakefile targets:
help - Categorized target listinstall, install-dev - UV-based installationtest, test-cov, coverage - Testing variantslint, typecheck, security - Quality toolsformat, format-check - Ruff formattingquality - All checks combinedbuild, clean - Package building.tar.gz archive (useful for distribution)Run the generator script:
python scripts/generate_project.py \
--name my-project \
--python-version 3.14 \
--output-mode cwd
Or invoke interactively - the skill will prompt for required values.
After generation:
cd {project-name}
uv sync # Install dependencies
make test # Run tests
make quality # Run all quality checks
The generated project is a starting point. Common modifications:
[project.dependencies]