We're thrilled you're interested in contributing to Cline. Whether you're fixing a bug, adding a feature, or improving our docs, every contribution makes Cline smarter! To keep our community vibrant and welcoming, all members must adhere to our Code of Conduct.
Bug reports help make Cline better for everyone! Before creating a new issue, please search existing ones to avoid duplicates. When you're ready to report a bug, head over to our issues page where you'll find a template to help you with filling out the relevant information.
🔐 Important: If you discover a security vulnerability, please use the Github security tool to report it privately.
All contributions must begin with a GitHub Issue, unless the change is for small bug fixes, typo corrections, minor wording improvements, or simple type fixes that don't change functionality. For features and contributions:
PRs without approved issues may be closed.
Looking for a good first contribution? Check out issues labeled "good first issue" or "help wanted". These are specifically curated for new contributors and areas where we'd love some help!
We also welcome contributions to our documentation! Whether it's fixing typos, improving existing guides, or creating new educational content - we'd love to build a community-driven repository of resources that helps everyone get the most out of Cline. You can start by diving into /docs and looking for areas that need improvement.
Clone the repository (Requires git-lfs):
git clone https://github.com/cline/cline.git
Open the project in VSCode:
code cline
Install the necessary dependencies for the extension and webview-gui:
npm run install:all
Generate Protocol Buffer files (required before first build):
npm run protos
Launch by pressing F5 (or Run->Start Debugging) to open a new VSCode window with the extension loaded. (You may need to install the esbuild problem matchers extension if you run into issues building the project.)
Before creating a PR, generate a changeset entry:
npm run changeset
This will prompt you for:
major → breaking changes (1.0.0 → 2.0.0)minor → new features (1.0.0 → 1.1.0)patch → bug fixes (1.0.0 → 1.0.1)Commit your changes and the generated .changeset file
Push your branch and create a PR on GitHub. Our CI will:
Testing
npm run test to run tests locally.npm run format:fix to format your codeVS Code Extensions
Local Development
npm run install:all to install dependenciesnpm run protos to generate Protocol Buffer files (required before first build)npm run test to run tests locally>Debug: Select and Start Debugging and wait for a new VS Code instance to opennpm run dev (generates protos + runs watch mode) or npm run watch (if protos already generated)npm run format:fix to format your codeLinux-specific Setup VS Code extension tests on Linux require the following system libraries:
dbuslibasound2libatk-bridge2.0-0libatk1.0-0libdrm2libgbm1libgtk-3-0libnss3libx11-xcb1libxcomposite1libxdamage1libxfixes3libxkbfile1libxrandr2xvfbThese libraries provide necessary GUI components and system services for the test environment.
For example, on Debian-based distributions (e.g., Ubuntu), you can install these libraries using apt:
sudo apt update
sudo apt install -y \
dbus \
libasound2 \
libatk-bridge2.0-0 \
libatk1.0-0 \
libdrm2 \
libgbm1 \
libgtk-3-0 \
libnss3 \
libx11-xcb1 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxkbfile1 \
libxrandr2 \
xvfb
Anyone can contribute code to Cline, but we ask that you follow these guidelines to ensure your contributions can be smoothly integrated:
Keep Pull Requests Focused
Code Quality
npm run lint to check code stylenpm run format to automatically format codeTesting
npm test to ensure all tests passEnd-to-End (E2E) Testing
Cline includes comprehensive E2E tests using Playwright that simulate real user interactions with the extension in VS Code:
Running E2E tests:
npm run test:e2e # Build and run all E2E tests
npm run e2e # Run tests without rebuilding
npm run test:e2e -- --debug # Run with interactive debugger
Writing E2E tests:
src/test/e2e/e2e fixture for single-root workspace testse2eMultiRoot fixture for multi-root workspace testsauth.test.ts, chat.test.ts, diff.test.ts, and editor.test.tssrc/test/e2e/README.md for detailed documentation
Debug mode features:
Test environment:
Version Management with Changesets
npm run changesetmajor for breaking changes (1.0.0 → 2.0.0)minor for new features (1.0.0 → 1.1.0)patch for bug fixes (1.0.0 → 1.0.1)Commit Guidelines
Before Submitting
Pull Request Description
By submitting a pull request, you agree that your contributions will be licensed under the same license as the project (Apache 2.0).
Remember: Contributing to Cline isn't just about writing code - it's about being part of a community that's shaping the future of AI-assisted development. Let's build something amazing together! 🚀