# C++ 智能体规则集

本规则集定义 AI/自动化智能体在处理 C++ 代码时必须遵守的核心约束。

## 范围与优先级

- 作为仓库级基线规则集使用；更靠近代码目录的规则更具体并可覆盖基线。
- 当智能体规则与 docs 冲突：安全/合规优先，其次保持仓库一致性。

## 智能体工作原则（铁律）

1. 先理解目标与上下文，再动手改代码
2. 修改要小而清晰；避免无关重构
3. 发现安全问题（内存安全/鉴权漏洞）立即标注或修复
4. 不引入新依赖或工具，除非明确要求

## C++ 核心约定（不可违反）

- 使用 C++23，关闭编译器扩展，并固定经过验证的 CMake、编译器和 Conan 2 版本。
- 新增的项目内部组件优先使用 Modules；第三方库、C API、平台接口及工具链不支持的场景允许使用头文件。
- 使用 RAII 管理资源；禁止拥有所有权的裸指针以及直接使用 `new/delete`。非空借用使用引用，可空借用允许使用 `T*`。
- 内部字符串和缓冲区优先使用 `std::string`、`std::string_view` 和 `std::span`；C 风格接口仅限互操作边界。
- 以项目 `.clang-format` 和命名规则为准；相对 Google C++ Style Guide 的差异属于明确的项目级覆盖。
- 头文件使用 `#pragma once`。
- 模块名采用点分 `lower_snake_case`，接口文件使用 `.cppm`。
- 新增、删除、移动模块接口文件或改变所属 target 时，更新 CMake `FILE_SET CXX_MODULES`；模块改名时更新全部 `import`。
- 提供明确的 Conan build/host profiles 和可复现的 Release/Debug preset，不依赖生成器的隐式命名。
- Windows 必须进行原生 Windows 构建和测试；Linux + Clang 交叉编译仅作为附加验证，并明确目标 ABI 和运行时。

## 权威来源

- 代码风格：`docs/cpp/code_style.md`
- 命名规范：`docs/cpp/naming.md`
- 工具链：`docs/cpp/toolchain.md`
- 依赖管理：`docs/cpp/dependencies_conan.md`
- clangd 配置：`docs/cpp/clangd.md`

## Skills（按需加载）

- `$commit-message`

## 与开发规范的关系

- 规范文档：`docs/cpp/` 与 `docs/common/`
