@routerhub/agent-rules 1.4.11 → 1.4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.base.md +54 -122
- package/package.json +2 -1
package/AGENTS.base.md
CHANGED
|
@@ -1,156 +1,88 @@
|
|
|
1
|
-
## 页面内容英文、注释中文(tag: english-ui-chinese-comment)
|
|
2
|
-
|
|
3
|
-
- 所有面向用户的页面内容(如按钮、输入框、提示、字段名等)必须全部使用英文,适配外国用户。
|
|
4
|
-
- 代码注释、开发文档等统一使用中文,便于团队内部理解和维护。
|
|
5
|
-
|
|
6
1
|
# Copilot Agent Rules - Base
|
|
7
2
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## 语言与回答
|
|
11
|
-
|
|
12
|
-
- 始终使用中文回答。
|
|
13
|
-
|
|
14
|
-
## 文件与目录约束
|
|
15
|
-
|
|
16
|
-
- 不能随意修改核心业务文件和 API 相关代码。
|
|
17
|
-
- 不要编写或修改 `README.md`(由项目维护)。
|
|
18
|
-
- 先用`typings.d.ts` 中的类型定义,另外用的时候要确认下typings.d.ts中有这个类型定义,如果没有再自定义 TypeScript类型
|
|
19
|
-
|
|
20
|
-
## 样式与 UI 约束
|
|
21
|
-
|
|
22
|
-
- 新增或修改样式时,统一使用 `*.module.scss`,不要在业务页面新增普通 `.css` 样式。
|
|
23
|
-
- 在 React 项目中,新增样式必须使用 `scss` 实现;在 `tsx` 文件中统一通过 `style.xxx`(CSS Modules 导入对象)方式引用样式。
|
|
24
|
-
- `scss` 中的类名统一使用小驼峰命名(如 `topupButton`),不使用下划线或中划线。
|
|
25
|
-
- 不允许使用 `span` 标签选择器。
|
|
26
|
-
- 如果必须存在类名(历史代码场景),类名使用小驼峰命名,不使用下划线或中划线。
|
|
27
|
-
|
|
28
|
-
## 命名与类型约束
|
|
29
|
-
|
|
30
|
-
- 命名使用小驼峰或大驼峰,不使用下划线命名。
|
|
31
|
-
- 变量或值命名时,至少使用两个单词。
|
|
32
|
-
- TS 中不允许使用 `as`,不允许使用 `any`。
|
|
33
|
-
- 组件 `props` 能复用类型时,必须优先复用,不要重复定义。
|
|
34
|
-
|
|
35
|
-
## 常量与业务规则
|
|
36
|
-
|
|
37
|
-
- 禁止硬编码数字判断;统一使用常量或枚举,并定义在 `Const.ts` 或 `constants.ts`。
|
|
38
|
-
- `tab` 索引统一使用常量。
|
|
39
|
-
- 时间相关处理统一使用 `dayjs`。
|
|
40
|
-
- 数据回显优先使用对象展开运算符(`...`)。
|
|
41
|
-
|
|
42
|
-
## 前端 API 生成规范
|
|
3
|
+
以下为始终生效的核心规则。各项目可通过 `AGENTS.private.md` 添加项目特定规则。
|
|
43
4
|
|
|
44
|
-
|
|
45
|
-
- 新增或变更接口后,必须先更新 OpenAPI 定义并重新生成 API 代码,再进行业务开发与联调。
|
|
46
|
-
- 禁止在业务代码中直接拼接接口路径、手动声明重复请求类型或复制粘贴旧请求实现。
|
|
5
|
+
## 语言与内容
|
|
47
6
|
|
|
48
|
-
|
|
7
|
+
- 始终使用中文回答,代码注释使用中文,每行代码配中文注释。
|
|
8
|
+
- 页面 UI 内容(按钮、字段名、提示等)全部英文;如需中文在 `AGENTS.private.md` 中声明。
|
|
49
9
|
|
|
50
|
-
|
|
51
|
-
- 若用户指令中没有上述关键词,默认只在本地或测试/开发环境中执行操作,不得擅自连接或操作生产服务器。
|
|
52
|
-
- 执行生产环境操作前,必须再次向用户确认目标环境,确认无误后方可执行。
|
|
10
|
+
## 文件约束
|
|
53
11
|
|
|
54
|
-
|
|
12
|
+
- 不随意修改核心业务文件和 API 相关代码,不编写或修改 `README.md`。
|
|
13
|
+
- TypeScript 类型优先复用 `typings.d.ts`,不存在时再自定义。
|
|
55
14
|
|
|
56
|
-
|
|
57
|
-
- `feature/` - 新功能开发(如 `feature/user-authentication`)
|
|
58
|
-
- `refactor/` - 代码重构(如 `refactor/payment-module`)
|
|
59
|
-
- `bugfix/` - 缺陷修复(如 `bugfix/order-calculation`)
|
|
60
|
-
- `hotfix/` - 紧急生产修复(如 `hotfix/critical-security-issue`)
|
|
61
|
-
- `chore/` - 杂项维护(如 `chore/upgrade-dependencies`)
|
|
62
|
-
- `docs/` - 文档更新(如 `docs/api-reference`)
|
|
63
|
-
- `test/` - 测试相关(如 `test/add-unit-tests`)
|
|
64
|
-
- 分支名称使用英文,单词间用中划线(-)分隔,全小写,简洁明了。
|
|
65
|
-
- 禁止使用下划线、大写字母、中文或特殊字符。
|
|
66
|
-
- 当用户要求提交本次修改时,git commit 提交信息必须使用中文描述,禁止使用英文。
|
|
67
|
-
- **严禁使用 `git push --force` 或 `git push -f`**:AI 在任何情况下都不得执行 force push 操作,避免覆盖远程提交历史、丢失他人代码。如确需强制推送,必须由用户手动执行。
|
|
15
|
+
## 命名与类型
|
|
68
16
|
|
|
69
|
-
|
|
17
|
+
- 驼峰命名(小驼峰/大驼峰),禁止下划线;变量至少两个单词。
|
|
18
|
+
- 禁止 `as` 和 `any`;`props` 类型优先复用,不重复定义。
|
|
70
19
|
|
|
71
|
-
|
|
72
|
-
- 不要写 `try/catch`。
|
|
73
|
-
- 代码注释统一使用中文编写。
|
|
74
|
-
- 每一行代码都必须有对应的中文注释,明确说明该行代码的作用。
|
|
75
|
-
- 能复用现有函数或配置时,不要复制粘贴出第二份近似实现。
|
|
76
|
-
- 发现重复或相似的代码、逻辑、样式时,必须主动提取并封装为公共函数、组件或工具方法,避免同类代码散落在多处;能封装的一律封装,降低维护成本。
|
|
77
|
-
- 编写 Go 代码时,优先使用值传递与局部变量生命周期控制,避免不必要的内存逃逸(如无必要不要返回局部变量指针、避免在热路径中产生额外堆分配)。
|
|
78
|
-
- 编写代码需遵循 SOLID 原则,并结合场景合理应用设计模式优化可维护性与扩展性,避免过度设计。
|
|
79
|
-
- 编写代码时必须注重封装性:同一份数据、配置或字段定义只在一个地方维护,其余位置通过引用或派生获取;修改某个字段或逻辑时,应只需改动一处即可全局生效,禁止同一语义散落在多处需要逐一同步修改。
|
|
20
|
+
## 代码风格
|
|
80
21
|
|
|
81
|
-
|
|
22
|
+
- 函数式编程,不写 `class`,不写 `try/catch`。
|
|
23
|
+
- 禁止重复实现:复用现有函数/组件/配置,发现重复必须提取封装为公共方法。
|
|
24
|
+
- 同一数据/配置只在一处维护,其余通过引用获取,改一处全局生效。
|
|
25
|
+
- 禁止硬编码数字;常量/枚举定义在 `Const.ts` 或 `constants.ts`,`tab` 索引统一使用常量,时间用 `dayjs`。
|
|
26
|
+
- 遵循 SOLID 原则,避免过度设计;数据回显优先用展开运算符(`...`)。
|
|
27
|
+
- 复用组件通过 `fromType`(值为当前页面名)区分来源,内部差异逻辑基于 `fromType` 分支。
|
|
82
28
|
|
|
83
|
-
|
|
84
|
-
- 编写测试用例时,测试描述、断言说明和相关说明文字统一使用中文。
|
|
85
|
-
- 充值类测试用例如无特殊说明,默认使用充值 1 的测试数据执行验证。
|
|
86
|
-
- 当同一个组件被复用时,传入 `fromType`(值为当前页面名)用于区分来源;组件内部差异逻辑基于 `fromType` 分支。
|
|
29
|
+
## 样式(Tailwind CSS)
|
|
87
30
|
|
|
88
|
-
|
|
31
|
+
- 统一 Tailwind CSS,禁止新增 `*.module.scss`、`*.module.css`、`.css` 文件(历史文件可保留)。
|
|
32
|
+
- 项目未集成 Tailwind 时,先完成安装配置再开发。
|
|
33
|
+
- 新增样式通过 utility classes 在 JSX/TSX 中编写;不满足时优先 `tailwind.config` extend → `@apply` 封装 → 行内 `style`。
|
|
34
|
+
- 复杂/重复样式提取为 Tailwind 组件类或 React 组件,避免工具类堆砌。
|
|
35
|
+
- 类名小驼峰,禁止 `span` 标签选择器。
|
|
89
36
|
|
|
90
|
-
|
|
37
|
+
## 组件复用
|
|
91
38
|
|
|
92
|
-
|
|
39
|
+
- 优先复用已有组件,能通过 `props` 定制就不建新组件;新功能尽量封装为可复用组件。
|
|
93
40
|
|
|
94
|
-
|
|
95
|
-
- 需求文档统一存放在项目根目录的 `docs/` 文件夹下。
|
|
96
|
-
- 需求文档至少包含以下内容:需求目标、需求范围、功能要求、验收标准。
|
|
97
|
-
- 如存在补充信息,需在文档中增加“备注”章节说明。
|
|
41
|
+
## 前端 API 规范
|
|
98
42
|
|
|
99
|
-
|
|
43
|
+
- API 请求严格使用 OpenAPI 生成的方法,禁止手写请求或直接拼接路径。
|
|
44
|
+
- 接口变更后先更新 OpenAPI 定义并重新生成 API 代码,再进行业务开发。
|
|
100
45
|
|
|
101
|
-
|
|
46
|
+
## Go 语言规则
|
|
102
47
|
|
|
103
|
-
|
|
48
|
+
- 优先值传递与局部变量生命周期控制,避免内存逃逸;无必要不返回局部变量指针。
|
|
104
49
|
|
|
105
|
-
|
|
106
|
-
- 每次完成需求修改后,必须先打开一个新终端执行 `npm run build`。
|
|
107
|
-
- 若构建报错,必须先修复所有错误并重新执行构建直至通过,再进行发版操作。
|
|
50
|
+
## Git 规范
|
|
108
51
|
|
|
109
|
-
|
|
52
|
+
- 分支用 Git Flow(`feature/`、`bugfix/`、`hotfix/`、`refactor/`、`chore/`、`docs/`、`test/`),英文小写中划线分隔。
|
|
53
|
+
- commit 信息必须中文,禁止 `git push --force`。
|
|
110
54
|
|
|
111
|
-
|
|
112
|
-
- 本地构建成功后,使用 `docker push` 推送到远程镜像仓库,不得跳过本地构建直接在远程构建。
|
|
113
|
-
- 镜像推送目标统一使用 GitHub Container Registry(`ghcr.io`),禁止推送到其它公共镜像仓库(如 Docker Hub)除非项目私有规则另有声明。
|
|
114
|
-
- 推送前必须确保镜像已正确打 tag(如 `ghcr.io/<org>/<image>:<version>`),禁止推送 `latest` 以外无语义的标签。
|
|
55
|
+
## 安全
|
|
115
56
|
|
|
116
|
-
|
|
57
|
+
- 未明确授权不操作生产环境(指令需含"生产"/"线上"/"prod"/"production"),操作前二次确认。
|
|
117
58
|
|
|
118
|
-
|
|
119
|
-
- Portainer 的地址和账号信息应在项目私有规则(`AGENTS.private.md`)或环境变量中配置,禁止硬编码。
|
|
59
|
+
## 依赖与构建
|
|
120
60
|
|
|
121
|
-
|
|
61
|
+
- 依赖安装统一 `pnpm`,禁止 `npm install`/`yarn install`。
|
|
62
|
+
- 写完代码先 `npm run format`,再 `npm run build`,构建通过才可发版。
|
|
122
63
|
|
|
123
|
-
|
|
124
|
-
- 检查现有组件库中是否有可复用的基础组件(如表格、卡片、按钮、容器等)。
|
|
125
|
-
- 能通过 `props` 定制的场景,不要创建新组件;优先改进现有组件的 `props` 接口。
|
|
126
|
-
- 任何公共使用频率高的组件应统一维护,避免样式和逻辑分散。
|
|
64
|
+
## Docker 与部署
|
|
127
65
|
|
|
128
|
-
|
|
66
|
+
- 默认本地 `docker build`,构建后 `docker push` 到 `ghcr.io`,推送前确保正确 tag。
|
|
67
|
+
- 部署通过 Portainer 管理界面操作,禁止 SSH 手动执行 docker 命令;地址和账号配置在 `AGENTS.private.md` 或环境变量中,禁止硬编码。
|
|
129
68
|
|
|
130
|
-
|
|
131
|
-
- UI 自动化测试必须请求真实的后端接口,不允许使用本地 mock 数据或截断真实请求。
|
|
132
|
-
- 写完业务后,必须自动打开 UI 自动化测试页面,执行 `pnpm run test:e2e:ui`,让开发者手动点击验证功能效果。
|
|
133
|
-
- 只有在相关测试用例执行通过后,才允许继续执行 `npm run test:e2e:ui`;未通过时不得打开 UI 自动化测试页面。
|
|
134
|
-
- 当用户要求“加测试用例”时,必须主动执行 `npm run test:e2e:ui` 供开发者查看具体效果,并明确说明本次主要涉及的测试用例名称或编号。
|
|
135
|
-
- 打开 UI 自动化测试后,应明确告知当前业务对应的具体测试用例名称或编号,让开发者清楚当前验证范围。
|
|
136
|
-
- 自动化测试执行完毕后,自动打开 UI 界面,允许开发者进行手动验证。
|
|
69
|
+
## 测试
|
|
137
70
|
|
|
138
|
-
-
|
|
71
|
+
- 测试描述、断言使用中文,覆盖中文场景;充值类测试默认用充值 1 的数据。
|
|
72
|
+
- 默认使用真实接口数据,禁止 mock;仅明确同意时允许模拟数据。
|
|
73
|
+
- 写完业务后执行 `pnpm run test:e2e:ui`,告知开发者对应测试用例名称;通过后打开 UI 供手动验证。
|
|
74
|
+
- 端口被占用时自动切换新端口。
|
|
139
75
|
|
|
140
|
-
##
|
|
76
|
+
## 错误日志
|
|
141
77
|
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
- 提交代码前,必须移除临时调试日志、临时注释和无效占位代码。
|
|
78
|
+
- 用 `console.error` 记录错误(含函数名/模块名上下文),禁止 `console.log` 输出错误。
|
|
79
|
+
- 提交前移除调试日志和临时代码。
|
|
145
80
|
|
|
146
|
-
##
|
|
81
|
+
## 需求文档
|
|
147
82
|
|
|
148
|
-
-
|
|
149
|
-
1. 项目私有规则(AGENTS.private.md)
|
|
150
|
-
2. 基础规则(此文件)
|
|
83
|
+
- 新需求先在 `docs/` 写 MD 文档,含:目标、范围、功能要求、验收标准。
|
|
151
84
|
|
|
152
|
-
##
|
|
85
|
+
## 优先级
|
|
153
86
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
- 本规则适用于所有前端页面及相关交互内容。
|
|
87
|
+
1. 项目私有规则(AGENTS.private.md)
|
|
88
|
+
2. 基础规则(此文件)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@routerhub/agent-rules",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.13",
|
|
4
4
|
"description": "Shared Copilot agent rules and guidelines for RouterHub projects",
|
|
5
5
|
"main": "AGENTS.base.md",
|
|
6
6
|
"bin": {
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"AGENTS.base.md",
|
|
11
|
+
"rules/",
|
|
11
12
|
"merge.js",
|
|
12
13
|
"AGENTS.private.example.md",
|
|
13
14
|
"README.zh-CN.md",
|