If you add a new provider protocol/method, or add or change a parameter on an
existing method in CreateCommitProtocol or any other provider protocol, you
MUST update all of the following surfaces so the abstraction stays
symmetric across providers and tools:
src/scm/actions.py— forward the parameter through the action wrapper.src/scm/providers/github/provider.py— GitHub implementation.src/scm/providers/gitlab/provider.py— GitLab implementation.src/scm/providers/cursor_origin/provider.py— Cursor Origin implementation.src/scm/test_fixtures.py—FakeProvidersignature.bin/github-clientandbin/gitlab-client— CLI usage docstring,argparsedefinition, and the call site that invokes the provider. No test enforces this, so it fails silently and is easy to miss — do not skip it.- Tests under
tests/unit/provider/test_github.py,tests/unit/provider/test_gitlab.pyandtests/unit/provider/test_cursor_origin.pycovering each branch of the new parameter.
Run uv run pytest tests/, uv run ruff check src tests, and
uv run mypy src before committing.
Linting and formatting are enforced with prek
(a drop-in pre-commit runner) via .pre-commit-config.yaml. Running uv sync
installs prek, and direnv/.envrc installs the git pre-commit hook
automatically. Run the hooks manually with uv run prek run --all-files. CI
runs the same hooks on every pull request and pushes any autofixes back to the
branch.
