Thank you for your interest in contributing to Halo.
This document explains the recommended workflow for submitting high-quality contributions, including code, tests, and documentation updates.
- For new features or major behavior changes, please open an issue first so we can align on scope and design.
- For clear bug fixes, you can submit a pull request directly.
- If your report is not about the core project itself (for example, deployment questions), please use Discussions instead of Issues.
This repository mainly contains:
- Backend and platform modules built with Gradle.
- Frontend code in
ui, managed withpnpmworkspaces.
- Git
- JDK (version compatible with the project build)
- Node.js and
pnpm(seeui/package.jsonfor the current package manager) - Docker / Docker Compose (required for e2e scenarios)
Fork this repository, then clone your fork:
git clone https://github.com/{YOUR_USERNAME}/{REPOSITORY}.git
cd {REPOSITORY}git remote add upstream https://github.com/halo-dev/halo.git
git fetch upstreamUse a focused branch name that reflects your change:
git checkout -b feat/short-descriptionRun relevant checks before opening a PR.
Backend and general checks:
./gradlew clean checkFrontend checks (in ui):
cd ui
pnpm install
pnpm build:packages
pnpm lint
pnpm typecheck
pnpm test:unitgit push origin <your-branch>Open a PR from your branch to main and fill out the PR template carefully:
- Describe what changed and why.
- Link related issues (for example,
Fixes #123). - Add release note content or
NONEwhen no user-facing change is introduced. - Add proper
/kindlabels as requested in the template.
AI-assisted development is not prohibited, including code generation and refactoring support.
However, you are fully responsible for any code in your PR.
If you used AI tools, please follow these rules:
- Review all AI-generated content before submission.
- Verify correctness, security, performance, and maintainability.
- Ensure generated code follows project conventions and architecture.
- Remove low-quality or redundant generated code.
- Mention AI assistance in your PR description when AI materially contributed to the final changes.
In short: AI assistance is allowed, but unreviewed AI output is not acceptable.
- Add or update tests whenever you change behavior.
- If you add or modify APIs, please include corresponding e2e test cases.
- See
e2e/README.mdfor e2e workflow and local execution details.
- Follow the project coding style guide: https://docs.halo.run/developer-guide/core/code-style
- Keep changes focused and avoid unrelated refactors in the same PR.
- Run formatters and linters before pushing.
Before starting new work, sync your branch with upstream:
git fetch upstream
git checkout main
git merge upstream/main
git push origin main- Open an issue for confirmed bugs and feature proposals.
- Use Discussions for general questions and usage/deployment topics.
Thanks again for helping improve Halo.