@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.
Files changed (2) hide show
  1. package/AGENTS.base.md +54 -122
  2. 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
- 以下规则适用于所有使用此规则包的项目。各项目可通过 `AGENTS.private.md` 添加项目特定规则。
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
- - 前端 API 请求必须严格使用 OpenAPI 生成的 API 方法,禁止手写请求方法或绕过生成层直接调用接口。
45
- - 新增或变更接口后,必须先更新 OpenAPI 定义并重新生成 API 代码,再进行业务开发与联调。
46
- - 禁止在业务代码中直接拼接接口路径、手动声明重复请求类型或复制粘贴旧请求实现。
5
+ ## 语言与内容
47
6
 
48
- ## 生产环境操作安全规则
7
+ - 始终使用中文回答,代码注释使用中文,每行代码配中文注释。
8
+ - 页面 UI 内容(按钮、字段名、提示等)全部英文;如需中文在 `AGENTS.private.md` 中声明。
49
9
 
50
- - **严禁在未明确授权时操作线上/生产服务器**:只有当用户的指令中明确包含"生产环境"、"线上"、"prod"、"production"等关键词时,才允许在生产服务器上执行任何操作(如部署、重启、修改配置、执行脚本等)。
51
- - 若用户指令中没有上述关键词,默认只在本地或测试/开发环境中执行操作,不得擅自连接或操作生产服务器。
52
- - 执行生产环境操作前,必须再次向用户确认目标环境,确认无误后方可执行。
10
+ ## 文件约束
53
11
 
54
- ## 分支管理规范(Git Flow)
12
+ - 不随意修改核心业务文件和 API 相关代码,不编写或修改 `README.md`。
13
+ - TypeScript 类型优先复用 `typings.d.ts`,不存在时再自定义。
55
14
 
56
- - 所有新建分支必须遵循 Git Flow 命名规范,使用以下前缀:
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
- - 不允许写 `class`,统一使用函数式编程。
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
- - 每次开始实现新需求前,必须先编写对应的需求说明 MD 文档。
95
- - 需求文档统一存放在项目根目录的 `docs/` 文件夹下。
96
- - 需求文档至少包含以下内容:需求目标、需求范围、功能要求、验收标准。
97
- - 如存在补充信息,需在文档中增加“备注”章节说明。
41
+ ## 前端 API 规范
98
42
 
99
- ## 依赖安装规范
43
+ - API 请求严格使用 OpenAPI 生成的方法,禁止手写请求或直接拼接路径。
44
+ - 接口变更后先更新 OpenAPI 定义并重新生成 API 代码,再进行业务开发。
100
45
 
101
- - 无论在 Docker 环境还是本地环境,安装和下载依赖都必须使用 `pnpm`,禁止使用 `npm install`、`yarn install` 等其它包管理器安装命令。
46
+ ## Go 语言规则
102
47
 
103
- ## 构建与发版前检查
48
+ - 优先值传递与局部变量生命周期控制,避免内存逃逸;无必要不返回局部变量指针。
104
49
 
105
- - AI 写完代码后,必须先执行 `npm run format` 格式化本次修改涉及的文件。
106
- - 每次完成需求修改后,必须先打开一个新终端执行 `npm run build`。
107
- - 若构建报错,必须先修复所有错误并重新执行构建直至通过,再进行发版操作。
50
+ ## Git 规范
108
51
 
109
- ## Docker 镜像构建规范
52
+ - 分支用 Git Flow(`feature/`、`bugfix/`、`hotfix/`、`refactor/`、`chore/`、`docs/`、`test/`),英文小写中划线分隔。
53
+ - commit 信息必须中文,禁止 `git push --force`。
110
54
 
111
- - **所有镜像构建(包括部署测试环境、生产环境等)必须默认在本地使用 `docker build` 构建**,不需要询问用户选择构建方式,直接执行本地构建。
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
- - 部署测试环境或生产环境时,必须使用 VS Code 内置浏览器打开 Portainer 管理界面,通过图形化操作完成部署(如更新镜像、重启服务、查看日志等),禁止通过 SSH 连接服务器手动执行 docker 命令部署。
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
- - 自动化测试默认必须使用真实接口数据,禁止使用 mock/route.fulfill/本地伪造返回;仅在明确同意的情况下才允许使用模拟数据。
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
- - UI 自动化测试端口被占用,需自动切换到未被占用的新端口,保证测试流程不中断。
71
+ - 测试描述、断言使用中文,覆盖中文场景;充值类测试默认用充值 1 的数据。
72
+ - 默认使用真实接口数据,禁止 mock;仅明确同意时允许模拟数据。
73
+ - 写完业务后执行 `pnpm run test:e2e:ui`,告知开发者对应测试用例名称;通过后打开 UI 供手动验证。
74
+ - 端口被占用时自动切换新端口。
139
75
 
140
- ## 错误处理与日志
76
+ ## 错误日志
141
77
 
142
- - 统一使用 `console.error` 记录错误日志,禁止使用 `console.log` 输出错误信息。
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
- ## 页面内容英文化(tag: english-page-content)
85
+ ## 优先级
153
86
 
154
- - 页面所有具体内容(如按钮、输入框、提示、字段名等)必须全部使用英文,包括如 password、username、login、submit 等常见词汇,不允许出现中文或中英文混用。
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.11",
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",