Pull requests are the primary way to contribute code changes to SuperPlane. This guide covers the complete process of creating a pull request, from setting up your fork to getting your changes merged.
If you haven't already, fork the SuperPlane repository on GitHub and clone your fork to your local machine:
git clone https://github.com/YOUR_USERNAME/superplane.git
cd superplaneAdd the original repository as an upstream remote to keep your fork synchronized:
git remote add upstream https://github.com/superplanehq/superplane.gitCreate a new branch for your changes. Use a descriptive name that reflects the work you're doing:
git checkout -b feat/add-new-featureMake your code changes, following the project's coding standards and guidelines. Remember to:
- Write clear, maintainable code
- Add tests for new functionality
- Update documentation as needed
- Follow the commit sign-off requirements
Commit your changes with clear, descriptive commit messages. All commits must be signed off:
git add .
git commit -s -m "feat: Add new feature description"See the commit sign-off guide for more details on signing off commits.
Push your branch to your fork on GitHub:
git push origin feat/add-new-feature- Navigate to the SuperPlane repository on GitHub
- You should see a banner suggesting to create a pull request from your recently pushed branch
- Click "Compare & pull request"
- Fill in the PR title following the title format rules
- Add a detailed description (see Pull Request Description)
- Submit the pull request
Our CI enforces semantic pull request rules on PR titles. This helps keep with communicating intent, measuring velocity, and publishing new releases.
- Start the title with a type (feat, fix, chore, docs), followed by a colon and a short description.
- The rest of the title is free-form; we do not enforce subject casing.
- Keep the description concise but descriptive enough to capture the main change.
feat: New user-facing features or capabilities.fix: Bug fixes or behavior corrections.chore: Non user facing changes. Maintenance, dependency bumps, tests, CI, refactoring, etc...docs: Documentation-only changes.
feat: Add approvals page filtersfeat!: Drop support for github personal access tokensfix: Handle missing canvas id in logschore: Bump Go toolchain versionchore: Add tests for canvas pagedocs: Update contributing guide with PR instructions
For changes that break existing behavior, mark the title as a breaking change by adding a ! after the type:
feat!: remove deprecated approvals endpointfix!: change default canvas layout
You can optionally add more detail about the breaking behavior in the PR description. Be sure to clearly document:
- What behavior is changing
- Why the change is necessary
- Migration steps for users (if applicable)
A good PR description helps reviewers understand your changes quickly. Include:
- What changed: A clear summary of what the PR does
- Why: The motivation or problem being solved
- How: Brief explanation of the approach taken (if not obvious from the code)
- Related issues: Link to any related GitHub issues using
Closes #123orFixes #456 - Breaking changes: If applicable, clearly document any breaking changes
Once you submit a pull request:
-
Automated Checks: CI will run tests and checks, including:
- DCO verification (all commits must be signed off)
- Semantic PR title validation
- Code linting and formatting
- Test suite execution
-
Code Review: Maintainers will review your code for:
- Code quality and correctness
- Adherence to project standards
- Test coverage
- Documentation updates
-
Feedback and Iteration: Be prepared to:
- Address review comments
- Make requested changes
- Update your branch by pushing new commits (they will automatically appear in the PR)
-
Approval and Merge: Once approved, a maintainer will merge your PR.
Tips for a smooth review:
- Keep PRs focused and reasonably sized
- Respond to review comments promptly
- Don't hesitate to ask questions if something is unclear