Thank you for your interest in contributing! This guide covers how to report issues, suggest features, and submit code changes.
- Check existing issues to avoid duplicates
- Use the Bug Report issue template
- Include: version (
ctx --version), OS, steps to reproduce, expected vs actual behavior - Attach relevant logs or error output
- Use the Feature Request issue template
- Describe the problem you're trying to solve
- Propose a solution and any alternatives you've considered
- Fork the repository and create a feature branch from
main - Make your changes following the guidelines below
- Add or update tests as needed
- Ensure all checks pass (
make test,make lint,make vet) - Submit a PR using the pull request template
- Go 1.23 or later
- golangci-lint (for linting)
- GNU Make
# Clone your fork
git clone https://github.com/<your-username>/ContextSubstrate.git
cd ContextSubstrate
# Build the binary
make build
# Run tests
make test
# Run linter
make lint
# Run all checks
make vet
make fmt| Target | Description |
|---|---|
make build |
Compile ctx binary with version info |
make test |
Run all tests |
make coverage |
Run tests with coverage report |
make lint |
Run golangci-lint |
make vet |
Run go vet |
make fmt |
Check formatting |
make tidy |
Tidy go.mod |
make clean |
Remove build artifacts |
make install |
Install ctx to $GOPATH/bin |
- Follow standard Go conventions (Effective Go)
- Run
gofmtbefore committing (or usemake fmtto check) - Keep functions focused and files organized by responsibility
- Write table-driven tests where applicable
Use Conventional Commits format:
<type>: <description>
[optional body]
Types: feat, fix, docs, test, refactor, ci, chore
Examples:
feat: add pack signing supportfix: handle empty execution log gracefullydocs: update command reference in READMEtest: add integration tests for diff command
This project follows the Contributor Covenant Code of Conduct. By participating, you agree to uphold this standard.