Python Project Skeleton Generator
Trigger Phrases
Activate when user says:
- "create a Python project", "new Python package", "scaffold Python"
- "Python project template", "Python skeleton", "initialize Python"
- "src-layout project", "Python library setup", "Python application starter"
- "pyproject.toml setup", "modern Python project", "UV project"
- "Python boilerplate", "start Python project from scratch"
- "hatchling project", "Python with ruff and mypy"
Creates production-ready Python project structures following modern best practices.
Quick Start
Generate a project in the current directory:
Project name: my-awesome-project
The skill prompts for required info and generates a complete project structure.
Configuration Options
| 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 |
Generated Structure
{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
Included Tool Configurations
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 scanning
[tool.bumpversion] - Semantic versioning with bump-my-version
Makefile targets:
help - Categorized target list
install, install-dev - UV-based installation
test, test-cov, coverage - Testing variants
lint, typecheck, security - Quality tools
format, format-check - Ruff formatting
quality - All checks combined
build, clean - Package building
version - Show current version
bump, bump-patch - Bump patch version (0.1.0 → 0.1.1)
bump-minor - Bump minor version (0.1.0 → 0.2.0)
bump-major - Bump major version (0.1.0 → 1.0.0)
bump-dry - Preview version bump (dry run)
release - Create and push release tag (auto-bumps if tag exists)
Output Modes
- cwd (default) - Create project in current working directory
- path - Create at specified absolute or relative path
- tarball - Create
.tar.gz archive (useful for distribution)
Usage
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.
Post-Generation Steps
After generation:
cd {project-name}
uv sync # Install dependencies
make test # Run tests
make quality # Run all quality checks
Version Management
The generated project includes bump-my-version for semantic versioning:
make version # Show current version
make bump-dry # Preview what would change
make bump-patch # 0.1.0 → 0.1.1
make bump-minor # 0.1.0 → 0.2.0
make bump-major # 0.1.0 → 1.0.0
make release # Create tag and push (auto-bumps if tag exists)
Version bumps automatically:
- Update
__version__ in src/{package_name}/__init__.py
- Create a git commit with conventional message
- Create a git tag (e.g.,
v0.1.1)
Customization
The generated project is a starting point. Common modifications:
- Add dependencies to
[project.dependencies]
- Adjust tool configs in pyproject.toml
- Add additional test files
- Extend Makefile with project-specific targets
1---2name: python-project-skel3description: Generate production-ready Python project skeletons with Astral UV package manager, Hatchling build backend with dynamic versioning, bump-my-version for semantic version management, 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.4---56# Python Project Skeleton Generator78## Trigger Phrases910Activate when user says:11- "create a Python project", "new Python package", "scaffold Python"12- "Python project template", "Python skeleton", "initialize Python"13- "src-layout project", "Python library setup", "Python application starter"14- "pyproject.toml setup", "modern Python project", "UV project"15- "Python boilerplate", "start Python project from scratch"16- "hatchling project", "Python with ruff and mypy"1718Creates production-ready Python project structures following modern best practices.1920## Quick Start2122Generate a project in the current directory:23```24Project name: my-awesome-project25```2627The skill prompts for required info and generates a complete project structure.2829## Configuration Options3031| Option | Default | Description |32|--------|---------|-------------|33| Project name | (required) | Kebab-case name (e.g., `my-project`) |34| Package name | (derived) | Snake_case from project name |35| Python version | 3.14 | Minimum Python version |36| License | MIT | License type |37| Author name | (optional) | For pyproject.toml |38| Author email | (optional) | For pyproject.toml |39| Description | (optional) | Project description |40| Output mode | cwd | `cwd`, `path`, or `tarball` |4142## Generated Structure4344```45{project-name}/46├── pyproject.toml # Full config with all tools47├── README.md48├── LICENSE49├── Makefile # UV-based dev targets50├── src/{package_name}/51│ ├── __init__.py # With __version__ = "0.1.0"52│ ├── py.typed # PEP 561 marker53│ └── main.py # Entry point stub54└── tests/55 ├── __init__.py56 ├── conftest.py # pytest fixtures57 └── test_main.py # Example test58```5960## Included Tool Configurations6162**pyproject.toml sections:**63- `[build-system]` - Hatchling backend64- `[project]` - Dynamic version, classifiers, URLs65- `[project.optional-dependencies]` - dev group66- `[dependency-groups]` - UV compatibility67- `[tool.hatch.version]` - Points to `__init__.py`68- `[tool.ruff]` - Format + lint (E, W, F, I, B, C4, UP, ARG, SIM)69- `[tool.mypy]` - Strict configuration70- `[tool.pytest]` - Native TOML (pytest 9.0+)71- `[tool.coverage]` - 80% threshold72- `[tool.bandit]` - Security scanning73- `[tool.bumpversion]` - Semantic versioning with bump-my-version7475**Makefile targets:**76- `help` - Categorized target list77- `install`, `install-dev` - UV-based installation78- `test`, `test-cov`, `coverage` - Testing variants79- `lint`, `typecheck`, `security` - Quality tools80- `format`, `format-check` - Ruff formatting81- `quality` - All checks combined82- `build`, `clean` - Package building83- `version` - Show current version84- `bump`, `bump-patch` - Bump patch version (0.1.0 → 0.1.1)85- `bump-minor` - Bump minor version (0.1.0 → 0.2.0)86- `bump-major` - Bump major version (0.1.0 → 1.0.0)87- `bump-dry` - Preview version bump (dry run)88- `release` - Create and push release tag (auto-bumps if tag exists)8990## Output Modes91921. **cwd** (default) - Create project in current working directory932. **path** - Create at specified absolute or relative path943. **tarball** - Create `.tar.gz` archive (useful for distribution)9596## Usage9798Run the generator script:99```bash100python scripts/generate_project.py \101 --name my-project \102 --python-version 3.14 \103 --output-mode cwd104```105106Or invoke interactively - the skill will prompt for required values.107108## Post-Generation Steps109110After generation:111```bash112cd {project-name}113uv sync # Install dependencies114make test # Run tests115make quality # Run all quality checks116```117118## Version Management119120The generated project includes **bump-my-version** for semantic versioning:121122```bash123make version # Show current version124make bump-dry # Preview what would change125make bump-patch # 0.1.0 → 0.1.1126make bump-minor # 0.1.0 → 0.2.0127make bump-major # 0.1.0 → 1.0.0128make release # Create tag and push (auto-bumps if tag exists)129```130131Version bumps automatically:132- Update `__version__` in `src/{package_name}/__init__.py`133- Create a git commit with conventional message134- Create a git tag (e.g., `v0.1.1`)135136## Customization137138The generated project is a starting point. Common modifications:139- Add dependencies to `[project.dependencies]`140- Adjust tool configs in pyproject.toml141- Add additional test files142- Extend Makefile with project-specific targets