Thank you for considering contributing to opencoder! This project aims to make OpenCode environment bootstrapping simple and reliable for teams.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test in container (
./scripts/build.sh --no-cache) - Commit your changes (
git commit -m "feat: add amazing feature") - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
See DEVELOPMENT.md for detailed development workflows, testing procedures, and troubleshooting guides.
Follow Conventional Commits:
feat:- New featuresfix:- Bug fixeschore:- Maintenance tasksdocs:- Documentation updatesrefactor:- Code refactoring
Before submitting a PR:
- Run validation:
./scripts/validate.sh - Build and test:
./scripts/build.sh --tag test && ./scripts/container-test.sh test - Ensure no new vulnerabilities:
podman image scan test
- Follow existing patterns in the codebase
- Use
set -euo pipefailin all bash scripts - Pin all versions (no
latesttags) - Keep containers minimal and secure
- Plugin integrations: New OpenCode plugins and skill sources
- Container improvements: Better security, smaller images, faster builds
- Documentation: Clear guides and examples
- Testing: Better validation and test coverage
- Bug fixes: Issues with setup, configuration, or container behavior
- Major architectural changes: Discuss in an issue first
- Breaking changes: Without backward compatibility or migration path
- Secrets: Never commit API keys, tokens, or credentials
- Bloat: Dependencies or features that aren't essential
- Check existing issues: See if your change addresses an open issue
- Write clear descriptions: Explain what changes and why
- Test thoroughly: Both host and container scenarios
- Update docs: README, DEVELOPMENT.md, or AGENTS.md as needed
- Follow conventions: Commit messages, file structure, coding style
- Open an issue for bugs or feature requests
- Check DEVELOPMENT.md for technical details
- Review existing PRs for examples
By contributing, you agree that your contributions will be licensed under the MIT License.
Remember: opencoder is about reproducibility and ease of setup. Every change should make it easier for teams to get a working OpenCode environment.