本组织开放给所有 AIM 战队内成员使用,所有成员需遵守以下规范:
本组织的仓库创建规范分为 3 种情况:
样例:
26RC_R2_ws- 2026年 Robocon 主赛 R2 机器人主 Workspace 仓库26RC_R2_kfs_tracker- 2026年 Robocon 主赛 R2 机器人 KFS 视觉跟踪仓库,注意如果是 ROS Package 的话,package.xml中的<name>标签需要与仓库中包名部分保持一致,包名单词间也使用下划线_分隔26RC_R1_arm_controller- 2026年 Robocon 主赛 R1 机械臂控制器仓库,包名同理26RC_interfaces- 2026年 Robocon 主赛通用接口仓库,如果是同场比赛跨机器人使用的仓库,命名可以省略机器人部分25RM_raw_rm_vision- 2025年 RoboMaster 联盟赛 RM 视觉主仓库,包名同理
样例:
aim-2526-py-coursework- 2025-2026 学年 AIM 战队 Python 国庆考核仓库,包名单词间分隔使用 dash-,注意与赛用仓库不同aim-2526-navigation-final-assessment- 2025-2026 学年 AIM 导航组期末考核仓库,包名单词间分隔同理使用 dash-aim-rookie-courses- Lectures designed for RM rookies & freshmen @ unnc-aim,主要用于存放新生课程资料,长期使用的仓库可以省略学年部分
样例:
RoboMark- 单独包含 Branding 成分的仓库可以省略aim-xxxx前缀,直接使用仓库名即可Camera2Topic- An ROS2 package that converts usb camera/realsense to topicsros2_hik_camera- 海康相机 ROS2 驱动仓库
比赛 Workspace 仓库(后缀 _ws,如 26RC_R2_ws)会把多个比赛仓库作为 git submodule 放在 src/ 下。当被添加的仓库带比赛前缀(26RC_ / 26RC_R2_ 等)时,子模块目录名要 去掉前缀——前缀在工作区名中已体现,无需重复:
# 在 26RC_R2_ws/ 内
git submodule add https://github.com/unnc-aim/26RC_R2_arm_controller.git src/arm_controller
# 而不是 src/26RC_R2_arm_controller- 去掉前缀后的目录名必须与 ROS 包
package.xml中的<name>一致;比赛前缀只出现在 GitHub 仓库名里。 - 无比赛前缀的可复用包(如
Camera2Topic、ros2_hik_camera)保持原名直接放入src/。 - 完整规则、示例表与已知反例见 skill:
.agent/skills/aim-common-rules/references/workspace-organization.md。
仓库命名完整规范(三种模式、决策树、大小写 / 分隔符对照、已知反例)见 skill:
.agent/skills/aim-common-rules/references/repo-naming.md。
- 所有仓库内 不允许 出现任何编译文件,请妥善使用
.gitignore文件来排除项目下所有潜在的编译文件 - 所有仓库主分支统一命名为
main,禁止使用master命名主分支
所有已经处于稳态的仓库禁止直接向 main 分支直接提交修改,请创建分支并使用 Pull request 来提交修改。
分支命名规范需要符合以下要求:
- 分支名统一使用小写字母,单词间使用 dash
-分隔 - 如果是修复
bug的分支,使用fix/[小写负责人用户名]-开头,,按照bug的名字命名,如fix/hnrobert-target-tracking;如果有多人参与可以省略用户名,如fix/arm-control-error - 新增功能按照功能的名字命名,使用
feature/[小写负责人用户名]-开头,如feature/gentle-lijie-lidar-mapping;如果有多人参与可以省略用户名,如feature/arm-control等 - 其他的参考 commit message 规范,也按照修改部分的名字命名,如
refactor/gimbal-control、docs/chassis-control等
保证所有功能稳定可靠的才可 merge 到 main 分支
阶段性成果标记使用 tag, tag 命名规范为三位数字,第一位为大版本号,第二位为小版本号,第三位为修订号,如 v1.0.0、v1.0.1、v1.1.0 等。
-
推荐的 Git 提交信息格式
基础格式:
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>示例:
feat(user-auth): add login functionality Implemented a login system with JWT authentication. Updated the user model and added necessary endpoints. BREAKING CHANGE: Updated the user model to include an additional "authToken" field. -
格式详解
<type>(提交类型):- 用于标识提交的目的,常见类型包括:
- feat:新增功能。
- fix:修复 Bug。
- docs:仅文档变更。
- style:代码格式调整(不影响功能,例如空格、格式化)。
- refactor:代码重构(不包括 Bug 修复或功能添加)。
- test:添加或修改测试。
- chore:其他杂项,例如更新构建工具、配置文件。
- perf:性能优化。
- ci:持续集成相关修改。
- build:构建系统或外部依赖的变更。
- 用于标识提交的目的,常见类型包括:
<scope>(影响范围):- 可选,用于说明变更的模块或范围,例如:
- user-auth
- api
- ui
- 如果不需要特别说明,可以省略。
- 可选,用于说明变更的模块或范围,例如:
<subject>(简短描述):- 对提交的简要描述,不超过 50 字符。
- 使用 祈使句(如“Add” 而不是“Added”)。
- 第一个字母小写,结尾不要加标点。
<body>(详细描述):- 可选,用于解释提交的详细内容。
- 换行适当控制在 72 字符以内,保持易读性。
- 包含原因、实现方式、以及与上下文相关的信息。
<footer>(备注信息):- BREAKING CHANGE:如果变更会导致不兼容,说明影响范围和解决方案。
- Issues:引用相关问题或任务编号,例如 Closes #123 或 Refs #456。
分支命名与 commit message 完整规范(字段说明、
type取值、PR 流程)见 skill:.agent/skills/aim-common-rules/references/git-workflow.md。
请务必在提交代码前对代码进行格式化,具体规范请参考以下文档
- C++ — 完整命名规则、
.clang-format/.clang-tidy模板与已知反例见 skill:.agent/skills/aim-common-rules/references/cpp-formatting.md - Python — autopep8 + isort 配置、CI 用法与 PEP 8 命名表见 skill:
.agent/skills/aim-common-rules/references/python-formatting.md
战队推荐统一安装以下 VS Code 系插件(括号内为扩展 ID):
ms-python.python# Python 主扩展(语言服务由 Pylance 提供)ms-python.vscode-pylance# 类型检查 / 智能提示,配置见python-formatting.md§6ms-python.autopep8# Python 格式化- isort 排序已内置于 Python 扩展的「Organize Imports」,无需单独安装
llvm-vs-code-extensions.vscode-clangd# C++ 语言服务,自动读取.clang-format/.clang-tidystreetsidesoftware.code-spell-checker# 拼写检查(美式英语)editorconfig.editorconfig# 统一缩进 / 换行风格
代码、注释、commit message 一律使用美式英语(如
color/behavior/optimize,而非 colour / behaviour / optimise)。cSpell 报错的词先核对:若确属正确(战队 / 领域术语、缩写、专有名词,且为美式英语拼写),加入.vscode/settings.json的cSpell.words数组学习,不要直接忽略或放过真正的拼写错误。现成模板见 skill:
.agent/skills/aim-common-rules/assets/.vscode/extensions.json(插件推荐)与.agent/skills/aim-common-rules/assets/.vscode/settings.json(含cSpell.words、format-on-save、Pylance)——放到仓库根目录.vscode/即可。
上述全部规范已封装为一个 agentic skill:aim-common-rules,位于 unnc-aim/aim-common-agentic-skills 的 .agent/skills/aim-common-rules/。安装后,Agent 会在创建 / 命名仓库、核对 ROS2 包名、新建分支、撰写 commit message、格式化 Python / C++ 代码等场景自动调用本规范。
用 skills CLI(npx skills,会自动识别并安装到你本地的所有 agent——Claude Code / Cursor / Codex 等),整个 skill 目录(SKILL.md + references/ + assets/)会一并装好:
npx skills add unnc-aim/aim-common-agentic-skills --skill aim-common-rules -g-g全局(所有项目,推荐);不加-g则装到当前项目.agents/skills/。- 不使用 AI 的成员:无需安装 skill,直接读
references/*.md、把assets/里的规则文件拷到仓库根目录即可。
全局安装后无需任何额外配置:skill 会根据其描述在相关场景自动触发;也可在对话中手动调用 /aim-common-rules。
规范更新后,执行 npx skills update 即可同步到最新版本。
npx skills add 会自动把 skill 装到这些工具(Cursor / Codex 等读取 .agents/skills/,Claude Code 走符号链接),无需额外配置。skill 自带的格式化规则文件(assets/ 下的 .clang-format / .clang-tidy / setup.cfg)需要拷到你的仓库根目录,编辑器 / clang-format / autopep8 / CI 才会自动读取;若仓库已有同名文件(如 ROS 的 setup.cfg),请手动合并而非覆盖。
规范全文也可直接在 GitHub 阅读:.agent/skills/aim-common-rules/references(仓库命名 / Git 流程 / Python / C++ 格式化)。