Thank you for contributing! We maintain high standards for code quality and design.
IMPORTANT: Every requirement below is critical. If any requirement is not met, your issue or PR will be automatically rejected by the bots.
- Find or create an issue - Search existing issues first
- Wait to be assigned - Comment on the issue and wait for assignment before starting work. Assignment priority:
- First: Issue creator
- Second: First volunteer commenter
- Submitting a PR without assignment will result in automatic rejection
- Discuss approach - Align on implementation details before coding
- Linked issue - Reference the issue in your PR (e.g., "Closes #123")
- Valid title - Use Conventional Commits:
feat:,fix:,chore:, etc. - Tests - Unit tests for main code paths
- Changeset - Run
pnpm newfrom repo root - Passing checks - All CI checks must pass
- Get assigned first - Please raise PRs only after you're assigned to an issue first. If no issue exists, create one and get assigned to it before raising your PR.
- Signed commits - Please ensure that your commits are signed.
Failing these pre-requisites, your PR stands to be closed.
- Surgical PRs - One clear objective per PR
- Clean code - Elegant, well-reasoned implementation
- Meaningful changes - No low-effort, cosmetic, or trivial edits made only to gain contributions
- No duplicate work - Check if someone else already opened a PR
- Node.js 18+
- pnpm (
npm install -g pnpm) - AI API key (Groq, Google, or Mistral) - setup guide
git clone https://github.com/lingodotdev/lingo.dev
cd lingo.dev
pnpm install
pnpm turbo build# Terminal 1 - watch CLI changes
cd packages/cli
pnpm run dev
# Terminal 2 - test CLI
cd packages/cli
pnpm lingo.dev --helppnpm install --frozen-lockfile
pnpm turbo build --force
pnpm turbo test --force
pnpm changeset status --since origin/main- Automated code review by AI bots provides suggestions
- Human reviewers make final decisions
- Address maintainer comments promptly - PRs with unaddressed comments will be closed to keep the repo clean. Feel free to recreate once issues are resolved.
Questions? Join our Discord!