Python Workflow and Delivery
Overview
Branch-to-PR execution discipline for Python work: validate, scope, and ship with confidence. Apply these defaults before opening or updating a PR.
These are preferred defaults for common cases, not universal rules. When deviating, call out tradeoffs and compensating controls (tests, observability, migration, rollback).
When to Use
- Preparing a branch or PR for Python changes.
- CI gate failures on lint, format, or test steps.
- Lockfile or dependency conflicts during
uv sync. - Commits that bundle too many concerns or are hard to review.
- Uncertainty about which validation steps to run before merge.
When NOT to use:
- Pure design or architecture decisions — see
python-design-modularity. - Test strategy or fixture design — see
python-testing. - Runtime operations or deployment — see
python-runtime-operations.
Quick Reference
- Use the project-defined Python version first.
- Use
uvfor environment and dependency workflow. - Run checks with
uv run .... - Keep scope small, reversible, and reviewable.
Validation Gate
Run as required by project scope:
uv syncuv sync --lockeduv lock --checkuv run ruff check .uv run ruff format --check .uv run pytest
Change-specific checks:
- Dependency/lockfile changes:
uv run pytest scripts/test_pypi_security_audit.py -v - Async lifecycle changes: run
pyleakdiagnostics on representative async integration tests.
Common Mistakes
- Skipping
uv lock --check— merging without verifying the lockfile matchespyproject.tomlcauses CI failures downstream. - Bundling unrelated changes in one commit — mixing refactors, features, and dependency bumps makes review slow and reverts dangerous.
- Running
ruff checkbut notruff format --check— passing lint does not guarantee formatting; both gates matter. - Forgetting change-specific checks — dependency updates need the security audit; async changes need leak diagnostics.
Generic
pytestalone is not enough.
Scope Note
- Treat these recommendations as preferred defaults for common cases, not universal rules.
- If a default conflicts with project constraints or worsens the outcome, suggest a better-fit alternative and explain why it is better for this case.
- When deviating, call out tradeoffs and compensating controls (tests, observability, migration, rollback).
Invocation Notice
- Inform the user when this skill is being invoked by name:
python-design-modularity.
References
references/workflow.mdreferences/branch-commit-scope.md