The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Pypreset listing page.
A meta-tool for scaffolding Python projects with configurable YAML presets.
Supports Poetry, uv, and setuptools, generates CI workflows, testing scaffolds, type checking configs, and more.
mcp-name: io.github.KaiErikNiermann/pypreset
src/ layout and flat layout.dockerignore, and VS Code devcontainer configs (Docker or Podman).python-version for pyenv and uv, with python-version-file in CI workflowsgh CLIact (auto-detect, auto-install, dry-run and full-run modes)pyproject.toml metadata~/.config/pypreset/config.yamlcreate -- Scaffold a new project| Option | Description |
|---|---|
--preset, -p | Preset to use (default: empty-package) |
--output, -o | Output directory (default: .) |
--config, -c | Custom preset YAML file |
--package-manager | poetry or uv |
--layout | src or flat |
--type-checker | mypy, pyright, ty, or none |
--typing | none, basic, or strict |
--python-version | e.g., 3.12 |
--testing / --no-testing | Enable/disable testing scaffold |
--formatting / --no-formatting | Enable/disable formatting config |
--radon / --no-radon | Enable radon complexity checking |
--pre-commit / --no-pre-commit | Generate pre-commit hooks config |
--bump-my-version / --no-bump-my-version | Include bump-my-version config |
--extra-package, -e | Additional packages (repeatable) |
--extra-dev-package, -d | Additional dev packages (repeatable) |
--docker / --no-docker | Generate Dockerfile and .dockerignore |
--devcontainer / --no-devcontainer | Generate .devcontainer/ configuration |
--container-runtime | docker or podman |
--coverage-tool | codecov or none |
--coverage-threshold | Minimum coverage % (e.g., 80) |
--docs | sphinx, mkdocs, or none |
--docs-gh-pages / --no-docs-gh-pages | Generate GitHub Pages deploy workflow |
--tox / --no-tox | Generate tox.ini with tox-uv backend |
--pyenv / --no-pyenv | Generate .python-version and use python-version-file in CI |
--git / --no-git | Initialize git repository |
--install / --no-install | Run dependency install after creation |
--dry-run | Preview what would be created without generating anything |
augment -- Add components to an existing projectAnalyzes pyproject.toml to auto-detect your tooling, then generates the selected components. Runs in interactive mode by default (prompts for values it can't detect); use --auto to skip prompts.
Available components:
| Flag | Component | What it generates |
|---|---|---|
--test-workflow / --no-test-workflow | Test CI | GitHub Actions workflow that runs pytest across a Python version matrix |
--lint-workflow / --no-lint-workflow | Lint CI | GitHub Actions workflow for ruff, type checking, and complexity analysis |
--dependabot / --no-dependabot | Dependabot | .github/dependabot.yml for automated dependency updates |
--tests / --no-tests | Tests directory | tests/ with template test files and conftest.py |
--gitignore / --no-gitignore | Gitignore | Python-specific .gitignore |
--pypi-publish / --no-pypi-publish | PyPI publish | GitHub Actions workflow for OIDC-based publishing to PyPI on release |
--dockerfile / --no-dockerfile | Docker | Multi-stage Dockerfile and .dockerignore (Poetry, uv, or setuptools aware) |
--devcontainer / --no-devcontainer | Devcontainer | .devcontainer/devcontainer.json with VS Code extensions |
--codecov / --no-codecov | Codecov | codecov.yml configuration |
--docs | Documentation | Sphinx or MkDocs scaffolding (--docs sphinx or --docs mkdocs) |
--tox / --no-tox | tox | tox.ini with tox-uv backend for multi-environment testing |
--readme / --no-readme | README | README.md generated from the shared template (badges, install, features) |
--pyenv / --no-pyenv | pyenv | .python-version file for pyenv and uv version pinning |
workflow -- Local workflow verificationVerify GitHub Actions workflows locally using act. The proxy auto-detects whether act is installed, can install it on supported systems, and surfaces all act output directly.
Supported auto-install targets: Arch Linux (pacman), Ubuntu/Debian (apt), Fedora (dnf), macOS/Linux with Homebrew. Other systems get a link to the act installation page.
version -- Release managementRequires the gh CLI to be installed and authenticated.
metadata -- PyPI metadata managementbadges -- Generate badge markdownReads pyproject.toml to detect your project name, repository URL, and license, then prints badge markdown you can paste into your README.
Built-in presets: empty-package, cli-tool, data-science, discord-bot.
Presets are YAML files that define metadata, dependencies, directory structure, testing, formatting, and more. They support single inheritance via the base: field. Presets can override the README template by setting metadata.readme_template to a custom .j2 filename.
Place custom preset files in ~/.config/pypreset/presets/ or pass a file directly:
User presets take precedence over built-in presets with the same name.
Persistent defaults are stored at ~/.config/pypreset/config.yaml and applied as the lowest-priority layer (presets and CLI flags override them).
pypreset is published to the MCP Registry as io.github.KaiErikNiermann/pypreset.
Install via the registry (recommended):
Or install locally:
Available tools:
| Tool | Description |
|---|---|
create_project | Create a new project from a preset with optional overrides |
augment_project | Add CI workflows, tests, Docker, docs, and more to an existing project |
validate_project | Check structural correctness of a project directory |
verify_workflow | Verify GitHub Actions workflows locally using act |
list_presets | List all available presets with names and descriptions |
show_preset | Show the full YAML configuration of a specific preset |
get_user_config | Read current user-level defaults |
set_user_config | Update user-level defaults |
set_project_metadata | Set or update PyPI metadata in pyproject.toml |
generate_badges | Generate badge markdown links from project metadata |
Resources: preset://list, config://user, template://list
Prompts: create-project, augment-project
All tasks use the Justfile:
See CONTRIBUTING.md for development setup and guidelines.
MIT