- Adding commands: docs/contributing/adding-commands.md — design sign-off, plugin structure, registration, return types, destructive commands
- Command lifecycle and feature flags: docs/contributing/lifecycle.md — PrPr/PuPr/GA rules, feature flag mechanics, release notes format
- Code conventions: docs/contributing/conventions.md — SQL safety, secrets, file access, terminal output, error handling, imports, logging, user-visible output
- Testing: docs/contributing/testing.md — unit tests, snapshots, fixtures, feature flag test helpers
- Process: docs/contributing/process.md — merge model, commit format, reviewer etiquette
- Remote debugging: docs/contributing/remote-debugging.md — debugging with PyCharm or IntelliJ
pip install -U hatch==1.15.1 virtualenv==20.39.1
hatch shell
hatch run testhatch shell spawns a new shell with the virtual environment active and the CLI
installed in editable mode. Press ^D to exit.
To also activate pre-commit hooks (required before your first commit):
hatch run pre-commit installFile a GitHub Issue. Use the issue templates — they collect the information needed to act on the report quickly.
Fork the repo and submit a pull request from your fork. All forks of
snowflake-cli are publicly visible on GitHub.
Keep your fork up to date by rebasing onto upstream rather than merging:
git remote add sfcli https://github.com/snowflakedb/snowflake-cli.git
git fetch sfcli
git checkout <your-branch>
git rebase sfcli/mainA maintainer will review and merge your PR after approval.
We use hatch to manage development environments.
The supported Python versions are listed in pyproject.toml under the
Programming Language :: Python classifiers. We recommend
pyenv for managing Python versions locally.
Do not use language features that are unavailable in the minimum supported version — code must run on all versions in the supported range.
pip install -U hatch==1.15.1 virtualenv==20.39.1
hatch run pre-commit installTo create an environment pinned to a specific Python version:
hatch env create local.py3.10To list all available environments:
hatch env showhatch run test # unit tests
hatch run integration:test # integration tests (requires Snowflake connection)See docs/contributing/testing.md for snapshots, fixtures, markers, and integration test environment setup.
The PR template contains a checklist. Complete it honestly — reviewers check every item and CI enforces some of them.