Below are some helpful directions on getting your environment set up as well as contributing guidelines.
- Go 1.21+
- Python 3.12+
- uv (Python package manager)
- Pulumi
- just (command runner)
- AWS CLI or Azure CLI (depending on your cloud provider)
snykCLI (optional, for security scanning)
Pre-commit hooks run automatically when you commit. They will:
- Format and lint your code
- Run tests for the files you changed (e.g., Python tests only if you changed Python files)
If a hook fails, the commit is blocked. Fix the issue, stage the fix, and commit again.
# Run hooks manually on all files
pre-commit run --all-files
# Skip all hooks
git commit --no-verify -m "message"
# Skip specific hooks only
SKIP=test-python-pulumi git commit -m "message"
SKIP=test-python-pulumi,test-cmd git commit -m "message"This project uses Conventional Commits for automatic versioning and changelog generation.
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description | Version Bump |
|---|---|---|
feat |
New feature | Minor (0.X.0) |
fix |
Bug fix | Patch (0.0.X) |
docs |
Documentation only | None |
style |
Code style (formatting, etc.) | None |
refactor |
Code change that neither fixes nor adds | None |
perf |
Performance improvement | Patch |
test |
Adding/updating tests | None |
chore |
Maintenance tasks | None |
For breaking changes, add ! after the type or include BREAKING CHANGE: in the footer:
feat!: remove deprecated API endpoint
BREAKING CHANGE: The /v1/legacy endpoint has been removed.
Breaking changes trigger a major version bump (X.0.0).
feat(cli): add proxy command for cluster access
fix(aws): correct IAM policy for EKS access
docs: update installation instructions
chore: update dependencies
Releases are automated via GitHub Actions. When commits are pushed to main:
- semantic-release analyzes commits
- If releasable changes exist, a new version is determined
- CHANGELOG.md is updated
- A GitHub release is created with the new tag
- CLI binaries are built and attached to the release
It is helpful to be able to run snyk locally for development (particularly if a PR fails the snyk test).
Our expectation is that
snykwould be passing before merging a given PR
-
Install the
snykCLI. On Mac systems, you can runbrew install snyk-cli -
Run
snyk auth. This authenticates your local CLI with your credentials. -
Run
snyk test --all-projects --policy-path=.snykfrom the root directory to check for vulnerabilities.