gemini-cli/CONTRIBUTING.md

3.4 KiB

How to Contribute

We would love to accept your patches and contributions to this project.

Before you begin

Sign our Contributor License Agreement

Contributions to this project must be accompanied by a Contributor License Agreement (CLA). You (or your employer) retain the copyright to your contribution; this simply gives us permission to use and redistribute your contributions as part of the project.

If you or your current employer have already signed the Google CLA (even if it was for a different project), you probably don't need to do it again.

Visit https://cla.developers.google.com/ to see your current agreements or to sign a new one.

Review our Community Guidelines

This project follows Google's Open Source Community Guidelines.

Contribution Process

Code Reviews

All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose.

Development Setup and Workflow

This section guides contributors on how to build, modify, and understand the development setup of this project.

Setting Up the Development Environment

  • Prerequisites:
    • Node.js (version 18 or higher).
    • npm (usually comes with Node.js).
    • Git.
  • Cloning the Repository:
    git clone https://github.com/google-gemini/gemini-cli.git # Or your fork's URL
    cd gemini-cli
    
  • Installing Dependencies:
    npm install
    
    This command will install all necessary dependencies defined in package.json for both the server and CLI packages, as well as root dependencies.

Build Process

To build the entire project (all packages):

npm run build

This command typically compiles TypeScript to JavaScript, bundles assets, and prepares the packages for execution. Refer to scripts/build.sh and package.json scripts for more details on what happens during the build.

Running Tests

To execute the test suite for the project:

npm run test

This will run tests located in the packages/server and packages/cli directories. Ensure tests pass before submitting any changes.

Linting and Preflight Checks

To ensure code quality, formatting consistency, and run final checks before committing:

npm run preflight

This command usually runs ESLint, Prettier, and potentially other checks as defined in the project's package.json.

Coding Conventions

  • Please adhere to the coding style, patterns, and conventions used throughout the existing codebase.
  • Consult GEMINI.md (typically found in the project root) for specific instructions related to AI-assisted development, including conventions for React, comments, and Git usage.
  • Imports: Pay special attention to import paths. The project uses eslint-rules/no-relative-cross-package-imports.js to enforce restrictions on relative imports between packages.

Project Structure

  • packages/: Contains the individual sub-packages of the project.
    • cli/: The command-line interface.
    • server/: The backend server that the CLI interacts with.
  • docs/: Contains all project documentation.
  • scripts/: Utility scripts for building, testing, and development tasks.

For more detailed architecture, see docs/architecture.md.