Awesome-omni-skill python-project
Scaffold and harden Python projects using vpngw-aligned defaults (pyproject/setuptools-scm, src layout, Ruff, pytest, Typer, Pydantic) plus best practices for CLI tools, systemd services, APIs/UI apps, IaC/automation, security/networking, and AI/ML workflows.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/python-project" ~/.claude/skills/diegosouzapw-awesome-omni-skill-python-project && rm -rf "$T"
manifest:
skills/development/python-project/SKILL.mdsource content
Python Project
Scaffold production-grade Python repositories with conservative defaults inspired by
services/vpngw.
Use This Skill For
- Creating a new Python project from scratch.
- Standardizing an existing Python repo layout and tooling.
- Adding or improving:
- CLI applications
- systemd services/timers
- API services and UI apps
- IaC and automation integration
- security and networking controls
- AI/ML pipelines and model-serving structure
Defaults (vpngw-aligned)
with PEP 621 metadata.pyproject.toml
+setuptools
for build/versioning.setuptools-scm
package layout.src/
for linting/formatting checks.ruff
for tests.pytest
+Typer
for CLI UX.Rich
for config/schema validation.Pydantic
withMakefile
and aggregate.DEFAULT_GOAL := all
target (for exampleall
).all: check build- Optional packaged systemd assets in
.src/<package>/systemd/
Workflow
- Gather missing essentials only:
- Project name (distribution) and import package name.
- Python version range (default:
).>=3.11,<3.14 - Workload profile(s):
,cli
,systemd
,api
,ui
,iac
,automation
,security
,networking
.ai-ml - Runtime target (local VM, container, Kubernetes, hybrid).
- Start from
andreferences/base-layout.md
.assets/pyproject.toml.template - Load only relevant profile references:
references/cli-systemd.mdreferences/api-ui.mdreferences/iac-automation-security-networking.mdreferences/ai-ml.md
- Generate scaffolding and output in this order:
- Directory tree
- Full file contents (one file at a time)
- Exact bootstrap/lint/test/build/run commands
- Security + operations checklist
- Keep placeholders (
) for environment-specific values and never invent secrets.TODO
Output Contract
Always include:
pyproject.toml.gitignoreREADME.mdsrc/<package>/__init__.pysrc/<package>/__main__.pytests/
Add these when selected:
:cli
andsrc/<package>/cli.py
.[project.scripts]
:systemd
and optionalsrc/<package>/systemd/*.service
, plus package-data configuration.*.timer
:api
(ASGI app) and production run guidance.src/<package>/api.py
:ui
and auth/network boundary notes.src/<package>/ui.py
:iac
(or point toinfra/terraform/
skill for full scaffolding).$terraform
:automation
,Makefile
,.github/workflows/ci.yml
..pre-commit-config.yaml
must setMakefile
..DEFAULT_GOAL := all
must include anMakefile
target that aggregates primary checks/build.all
:ai-ml
split for train/eval/infer pipelines.src/<package>/ml/
Non-Negotiable Guardrails
- No secret material in repo, samples, logs, tests, or docs.
- Ignore runtime, build, cache, credential, and local config artifacts.
- Prefer bounded dependency ranges (
) and avoid unconstrained pins unless required.>=x,<y - Keep commands idempotent where practical.
- Use typed boundaries for external inputs (Pydantic models/dataclasses).
- Return explicit non-zero exit codes for CLI failures.
- Avoid shelling out when a Python API exists; if shell is required, set explicit timeouts and sanitize args.
- Keep networking code timeout-safe and retry-safe.
Versioning and Release Pattern
Default to
setuptools-scm with SemVer tags:
- Tag format:
<project>-vMAJOR.MINOR.PATCH - Generated runtime version file:
src/<package>/_version.py - Do not manually edit the version in
when SCM versioning is enabled.pyproject.toml
For containerized/Helm-delivered apps, keep version layers related but independent:
- App version (source of functional behavior):
- SemVer from tags.
- Image version (source of deployed artifact):
- publish immutable tags (
, and release tags likesha-<shortsha>
+X.Y.Z
).X.Y.Z-g<shortsha> - prefer production deploys pinned by digest.
- publish immutable tags (
- Helm chart versioning:
tracks chart packaging changes.Chart.yaml.version
tracks the default app/image SemVer.Chart.yaml.appVersion- do not force chart
to equal app SemVer.version
Templates and References
: baseline vpngw-style project metadata and tooling.assets/pyproject.toml.template
: Typer-based CLI starter.assets/cli.py.template
: FastAPI starter with health endpoint.assets/api.py.template
: hardened service unit baseline.assets/systemd.service.template
: minimal CI for lint/test/build.assets/github-actions-ci.yml.template
Use detailed references only when needed:
references/base-layout.mdreferences/cli-systemd.mdreferences/api-ui.mdreferences/iac-automation-security-networking.mdreferences/ai-ml.md