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

# Contributing

> How to contribute to Trace — community guidelines, development setup, and pull request process.

Thank you for your interest in contributing to Trace! Trace is open source on GitHub under the GNU GPLv3 license. The full source code — including the C++ desktop app, React chat UI, and AI tooling — is available at [github.com/buildwithtrace/trace](https://github.com/buildwithtrace/trace). We welcome contributions from the community.

## Join Our Discord Community

**Discord is our primary community hub** for all discussions, questions, and announcements.

* [Join us on Discord](https://discord.gg/UNUvQxneCr) — Discuss features, ask questions, get announcements about development progress
* **Report bugs** — Share issues and get help from the community
* **Discuss features** — Propose new ideas and discuss implementation
* **Ask questions** — Get help with the codebase or development setup
* **Stay updated** — Get notified about releases and important updates

<Info>
  For larger changes or new features, please discuss on Discord before starting substantial work. This ensures alignment with development goals and prevents duplicate work.
</Info>

## Important Notes

* **Trace is a fork of KiCad** — This project is based on the KiCad EDA software
* **License** — All contributions must be compatible with GNU GPLv3
* **Copyright** — By contributing, you agree to license your code under GPLv3
* **Upstream** — Consider contributing improvements to [KiCad upstream](https://gitlab.com/kicad/code/kicad) when applicable

## Getting Started

Trace is a fork of KiCad, and we maintain compatibility with KiCad file formats and many of its architectural decisions. Developers familiar with KiCad will find the codebase familiar.

**New developers are encouraged to:**

* Start small with contributions and gradually work up to larger changes
* Check the [issue tracker](https://github.com/buildwithtrace/trace/issues) for issues labeled "good first issue"
* Search through issues and leave a comment if you're interested in working on something
* Ask questions in Discord or on the issue itself

## Development Guidelines

### Code Style

We use `clang-format` to check many style requirements. When you create a pull request, one of the CI pipeline steps will run a formatting check on your contribution. See the [Code Style Guide](/contributing/code-style) for full details.

**Key style points:**

* Always create a new branch for PRs instead of using your fork's main branch
* When in doubt, follow the existing formatting of the file you're editing
* `clang-format` doesn't know about all our nuances — if there's flexibility, match the existing file style

### Pull Request Process

<Steps>
  <Step title="Fork and branch">
    Fork the repository and create a feature branch. Never use your fork's master branch directly.
  </Step>

  <Step title="Make changes">
    Write clear, atomic commits with descriptive messages.
  </Step>

  <Step title="Test thoroughly">
    Build and run on your platform. Check for regressions in related features.
  </Step>

  <Step title="Submit your PR">
    Write a clear PR description summarizing the changes. Reference any related issues. Make sure "Allow edits by maintainers" is checked.
  </Step>
</Steps>

### Commit Messages

Use clear, descriptive commit messages:

```
fix: resolve crash when opening large schematics
feat: add AI component suggestion for resistor values
docs: update build instructions for macOS
```

## Types of Contributions

### Bug Fixes

Found a bug? Please:

1. Check if it exists in upstream KiCad too
2. If KiCad bug: consider reporting there as well
3. If Trace-specific: fix it and submit a PR

### Features

New features should:

* Fit Trace's vision of AI-enhanced PCB design
* Not break existing functionality
* Be documented in code comments
* Consider UI/UX implications

### Documentation

Help improve code comments, README files, guides, build instructions, and API documentation.

### AI Features

If contributing to Trace's AI integration (`trace/` directory):

* Test with the backend API (contact us for dev access)
* Follow patterns in existing AI tool code
* Consider token usage and rate limits
* Document any new AI capabilities

## License & Copyright

By submitting a contribution, you certify that:

* You wrote the code, or have the right to submit it
* You agree to license your contribution under GPLv3
* You understand Trace is open source (others can use/modify your code)
* Your contribution doesn't violate any patents or copyrights

Add your copyright to files you substantially modify:

```cpp theme={null}
* Copyright (C) 2025-2026 Your Name <your@email.com>
* Copyright The Trace Developers, see TRACE_AUTHORS.txt for contributors.
```

## Getting Help

* **Discord**: [Join our community](https://discord.gg/UNUvQxneCr) — primary place for questions and discussions
* **GitHub Issues**: [github.com/buildwithtrace/trace/issues](https://github.com/buildwithtrace/trace/issues) — for bug reports and feature requests
* **Email**: [hello@buildwithtrace.com](mailto:hello@buildwithtrace.com) — for private inquiries
* **KiCad Docs** (for core EDA features): [docs.kicad.org](https://docs.kicad.org/)

## Code of Conduct

Be respectful, constructive, and professional. We want Trace's development community to be welcoming to all contributors.

<Note>
  **Thank you for contributing to Trace!** Every contribution — whether code, documentation, or bug reports — helps make Trace better for everyone.
</Note>
