Thank you for your interest in contributing! This document outlines the process and guidelines for contributing to this project.
- Fork the repository
- Read the project README and the developer guide for setup instructions
- Create a feature branch off
masterwith a descriptive name
All PRs should be squashed to as few commits as makes sense to keep the version history clean and to assist with any reverts or cherry-picks.
Changes fall into three categories, each with different review requirements:
- Typo/Docs — no detailed explanation or justification needed
- Functional Change — requires a descriptive commit message detailing altered functions and changed behaviour, functional tests added to the E2E suite, and review by at least one Clowder core developer
- Architectural Change — requires architect sign-off, local validation of tests and behaviour, documentation of any deprecations, a design doc, and review by two Clowder core developers
For full details on the PR flow see docs/contributing.md.
Clowder uses Conventional Commits as a mandatory pipeline step. Commits must follow this format:
<purpose>(<scope>): <description>
Body explaining what changed and why.
Accepted purpose values: fix, feat, build, chore, ci, docs, style, refactor,
perf, test.
Use ! after the purpose/scope to denote a breaking change (API or cdappconfig.json spec
changes). scope is optional but encouraged for provider-level changes (e.g., feat(database):).
All commits must be signed with a GPG or SSH key.
git config --global commit.gpgSign trueFor setup instructions see the git-commit signing documentation.
If you use an AI tool to generate or refine your commit message:
-
Author responsibility: Read, understand, and edit the message before committing. The final message is your responsibility.
-
Disclose the tool: Add a
Co-authored-by:trailer to the commit:Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Run make pre-push before opening a PR — it runs formatting, vetting, unit tests, and
regenerates all generated files. See docs/contributing.md for unit test and
KUTTL E2E test development patterns.
- Respond to feedback promptly
- Make requested changes in new commits (avoid force-pushing unless asked)
- Discuss design decisions and tradeoffs openly
Thank you for contributing!