Thank you for your interest in contributing to codex-ssh! This document provides guidelines and instructions for contributing.
- Go 1.22 or later
- Git
- An SSH client (OpenSSH)
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/<your-username>/codex-ssh.git cd codex-ssh
-
Install dependencies:
go mod download
-
Build the project:
go build ./cmd/codex-ssh
-
Run the tests:
go test -race ./...
-
Create a new branch from
main:git checkout -b feature/my-feature
-
Make your changes
-
Run the full test suite:
go test -race ./... go vet ./... -
Run the linter (install golangci-lint first):
golangci-lint run
-
Commit your changes with a clear, descriptive message:
git commit -m "feat: add support for X" -
Push to your fork and open a Pull Request
We follow Conventional Commits:
feat:— A new featurefix:— A bug fixdocs:— Documentation only changestest:— Adding or correcting testsrefactor:— Code change that neither fixes a bug nor adds a featureperf:— A code change that improves performanceci:— Changes to CI configuration fileschore:— Other changes that don't modify src or test files
- Follow standard Go conventions (
gofmt,go vet) - Write tests for new functionality
- Keep functions small and focused
- Add meaningful comments for non-obvious logic
- Keep PRs focused on a single change
- Include a clear description of what changed and why
- Ensure all CI checks pass
- Request review from maintainers
- Be responsive to feedback
- Use the bug report template for bugs
- Use the feature request template for new ideas
- Include reproduction steps for bugs
If you discover a security vulnerability, please do NOT open a public issue. Instead, please email us privately or use GitHub's security advisory feature.
By contributing, you agree that your contributions will be licensed under the project's LICENSE.