> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/argoproj/argo-cd/llms.txt
> Use this file to discover all available pages before exploring further.

# Contributing to Argo CD

> Guidelines for contributing code to the Argo CD project

## Overview

The Argo CD project continuously grows, both in terms of features and community size. It gets adopted by more and more organizations which entrust Argo CD to handle their critical production workloads. Thus, we need to take great care with any changes that affect compatibility, performance, scalability, stability and security of Argo CD.

<Warning>
  Before starting work on larger features, please raise an [Enhancement Proposal or Bug Issue](https://github.com/argoproj/argo-cd/issues/new/choose) first. This ensures your idea aligns with the project's strategy and increases the likelihood of your code being merged.
</Warning>

## Quick Start

The fastest way to start contributing is to look for issues labeled with:

* [help-wanted](https://github.com/argoproj/argo-cd/issues?q=is%3Aopen+is%3Aissue+label%3A%22help-wanted%22)
* [good first issue](https://github.com/argoproj/argo-cd/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)

These issues have already been triaged and accepted. If attached to the next [version milestone](https://github.com/argoproj/argo-cd/milestones), they'll receive prioritized reviews.

## Enhancement Proposal Process

### Triage Workflow

Enhancement proposals go through a transparent triage process:

1. **Incoming** - New proposals waiting for triage
2. **Active** - Currently being triaged
3. **Accepted** - Approved for implementation
4. **Declined** - Rejected with reasoning provided
5. **Needs discussion** - Requires more information or a design document

### Triage Cadence

* Triage happens in our weekly contributor's meeting
* Everyone is invited to participate
* We aim to triage at least 10 proposals per week
* Proposals are generally processed in FIFO order

## Proposal Outcomes

<Tabs>
  <Tab title="Accepted">
    When a proposal is accepted, it's been deemed valuable to the community and fits the strategic roadmap. Implementation may begin by the proposal creator or another community member.
  </Tab>

  <Tab title="Declined">
    Proposals are declined when they don't align with project direction, would be breaking for many users, or don't meet strategic goals. Discussion is facilitated before declining.
  </Tab>

  <Tab title="Needs Discussion">
    Some proposals require more information or a formal design document. You may be asked to provide additional details or join a contributor's meeting.
  </Tab>
</Tabs>

## Design Documents

For substantial changes, a formal design document is required using [this template](https://github.com/argoproj/argo-cd/blob/master/docs/proposals/001-proposal-template.md).

Design documents should address:

* The problem being solved
* Proposed solution and alternatives
* Migration and upgrade paths
* Security implications
* Performance considerations

<Note>
  Design documents are submitted as PRs and discussed during review. Once merged, the design is approved for implementation.
</Note>

## Contributor Meetings

Join our weekly virtual meetings to discuss enhancements and participate in triage:

* **Schedule**: Every Thursday at 8:15 AM Pacific Time ([convert to your timezone](https://www.timebie.com/std/pacific.php?q=081500))
* **Format**: Zoom meeting
* [Agenda Document](https://docs.google.com/document/d/1xkoFkVviB70YBzSEa4bDnu-rUZ1sIFtwKKG1Uw8XsY8) (includes Zoom link)

Please add your items to the agenda before the meeting.

## Before Submitting Your First PR

<Steps>
  <Step title="Read the Guidelines">
    Familiarize yourself with the [Toolchain Guide](https://argo-cd.readthedocs.io/en/latest/developer-guide/toolchain-guide/) to understand our build system and CI processes.
  </Step>

  <Step title="Set Up Your Environment">
    Follow the [Development Environment](/developers/development-environment) guide to configure your local setup.
  </Step>

  <Step title="Understand the Process">
    Review our PR submission requirements and quality standards.
  </Step>
</Steps>

## Submitting Pull Requests

### PR Title Convention

Use one of these prefixes for your PR title:

* `ci:` - Updates or improves CI workflows
* `fix:` - Bug fixes
* `feat:` - New features
* `test:` - Adds or improves tests
* `docs:` - Documentation improvements
* `chore:` - Internal improvements (build, tests, etc.)
* `refactor:` - Code refactoring without new features or bug fixes

<CodeGroup>
  ```text Bad Example theme={null}
  Add documentation for GitHub SSO integration
  ```

  ```text Good Example theme={null}
  docs: Add documentation for GitHub SSO integration
  ```
</CodeGroup>

### Before Submitting

<Accordion title="Pre-submission Checklist">
  1. Rebase your branch against upstream main:

  ```bash theme={null}
  git fetch upstream
  git rebase upstream/main
  ```

  2. Run pre-commit checks:

  ```bash theme={null}
  make pre-commit-local
  ```

  3. Ensure all tests pass locally:

  ```bash theme={null}
  make test
  ```
</Accordion>

### CI Pipeline

Your PR must pass these automated checks:

* Build the Go code (`make build`)
* Generate API glue code and manifests (`make codegen`)
* Run Go linter (`make lint`)
* Run unit tests (`make test`)
* Run E2E tests (`make test-e2e`)
* Build and lint UI code (`make lint-ui`)
* Build the `argocd` CLI (`make cli`)

### Code Coverage

We use [CodeCov](https://codecov.io) to track test coverage. Your PR should:

* Not significantly decrease overall coverage
* Include tests for new features
* Aim for at least 80% coverage for new modules

<Tip>
  Check coverage for a specific module:

  ```bash theme={null}
  make test TEST_MODULE=github.com/argoproj/argo-cd/server/cache
  ```
</Tip>

## Cherry-Picking Fixes

For bug fixes that should be backported to release branches:

1. Add a `cherry-pick/x.y` label to your PR (e.g., `cherry-pick/3.1`)
2. The cherry-pick bot will automatically create backport PRs when your PR merges

<Note>
  If you don't have label permissions, ask a maintainer to add them for you.
</Note>

## Getting Help

Need guidance? Join us on Slack:

* [Join Argo Slack](https://argoproj.github.io/community/join-slack)
* Connect in the `#argo-cd-contributors` channel

## Additional Resources

<CardGroup cols={2}>
  <Card title="Development Environment" icon="laptop-code" href="/developers/development-environment">
    Set up your local development environment
  </Card>

  <Card title="Architecture" icon="diagram-project" href="/developers/architecture">
    Understand Argo CD's component architecture
  </Card>

  <Card title="Toolchain Guide" icon="wrench" href="https://argo-cd.readthedocs.io/en/latest/developer-guide/toolchain-guide/">
    Learn about our build tools and processes
  </Card>

  <Card title="GitHub Repository" icon="github" href="https://github.com/argoproj/argo-cd">
    Visit the source code repository
  </Card>
</CardGroup>
