Thanks for your interest in contributing to Splinter. This document covers the conventions and processes we use.
We use Conventional Commits. Every commit message should follow this format:
type(scope): short description
Types:
feat— A new feature or capabilityfix— A bug fixdocs— Documentation changes (ADRs, READMEs, guides)chore— Maintenance tasks (dependency bumps, image version updates)refactor— Code restructuring with no behaviour changeci— Changes to CI/CD configurationtest— Adding or updating tests or benchmarks
Scope is optional but encouraged. Use it to indicate the area of the codebase:
ansible— Ansible playbooks and rolesmonitoring— Prometheus, Grafana, exportersllm— vLLM, LiteLLM, inference servicenginx— Reverse proxy configurationdocker— Docker Compose files and container configurationadr— Architecture Decision Recordsworkshop— JupyterHub and workshop environments
Examples:
feat(monitoring): add GPU temperature alerting
fix(nginx): correct rate limit configuration
docs(adr): add ADR-007 service access
chore(docker): bump DCGM exporter to 3.3.6
refactor(ansible): extract common tasks into shared role
Keep the description lowercase, imperative mood ("add" not "added"), and under 72 characters.
- All changes go through pull requests. No direct pushes to
main. - PRs require at least one approval before merging.
- Resolve all review conversations before merging.
- Commits must be signed (GPG or SSH).
Use GitHub Issues. For bugs, include: what you expected, what happened, and any relevant logs or configuration. For feature requests, describe the use case, not just the solution.
If you discover a security vulnerability, do not open a public issue. Email the maintainers directly. See the repository's security policy for contact details.