# Gemini & AI assistant guide for Carbon This document provides high-density technical context for AI assistants (and humans!) contributing to the Carbon Language project. If you are an AI assistant, **read this first** to avoid common pitfalls. ## Table of contents - [General instructions](#general-instructions) - [Project structure](#project-structure) - [Bazel usage](#bazel-usage) - [Toolchain development](#toolchain-development) ## General instructions - **Communication**: Be concise, professional, and technical. Use GitHub-style markdown. - **Verification**: Always run relevant tests. - **Tool usage**: Use web search for any research outside the immediate codebase or KIs. ## Project structure - **[`common/`](common/)**: Common C++ utilities used across the project. - **[`core/`](core/)**: The Carbon standard library (Core). - **[`docs/`](docs/)**: Project documentation, design, and style guides. - **[`examples/`](examples/)**: Example Carbon programs and code snippets. - **[`proposals/`](proposals/)**: Evolution proposals. - **[`testing/`](testing/)**: Testing utilities and infrastructure. - **[`toolchain/`](toolchain/)**: The C++ implementation of the compiler (Toolchain). ## Tool usage See the "Tool usage" skill for instructions on what tools to use in the carbon-lang project. ## Bazel usage > [!IMPORTANT] Always use `bazelisk` instead of `bazel` for all commands in the > Carbon project. Refer to the > [Bazel usage skill](/.agents/skills/bazel/SKILL.md) for detailed instructions. ## Code style See the "Code style" skill for instructions on formatting, style guides, and code conventions to follow. ## Toolchain development See the "Toolchain Development" skill for instructions on architecture, building, testing, debugging, C++ patterns, and common pitfalls.