@routerhub/agent-rules 1.5.52 → 1.5.56
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 +2 -0
- package/package.json +1 -1
- package/postinstall.js +17 -6
- package/rules/frontend.md +1 -0
- package/rules/global.md +1 -0
package/AGENTS.base.md
CHANGED
|
@@ -116,6 +116,7 @@ Closes #456
|
|
|
116
116
|
- 如果 Copilot review 连续两轮提出同一问题但实际已修复或无道理,需在 PR 评论中明确说明原因并直接 Resolve,不再反复修改。
|
|
117
117
|
- PR 图片文件检查:在 Copilot review 循环中(建议放在开始处理 review 问题之前,或所有 review 问题处理完毕之后),必须检查当前 PR 中是否存在未被引用的图片文件(PNG、JPG、JPEG、GIF、SVG、WebP 等)。检查方式:搜索代码库中是否有任何文件引用了该图片的文件名或路径,若没有任何引用 → 该图片为冗余文件。处理方式:若图片内容需要保留(如截图佐证),则将其转为 base64 data URI 内嵌到对应的 HTML 文档中,然后删除原图片文件;若图片内容无需保留,则直接删除。处理完毕后提交并推送。
|
|
118
118
|
- 可忽略的 review 建议:如果 Copilot review 建议将配置项(API 地址、数据库连接、第三方服务地址等)写入 `.env` 文件,必须直接忽略并在评论中回复说明原因后 Resolve。说明内容:「本项目 `.env` 仅允许配置端口号(如 `PORT`、`API_PORT`),其余配置项一律写死在代码中,敏感信息统一放入 Nacos 配置中心,不放 `.env`。」
|
|
119
|
+
- ⚠️ **强制步骤:重新请求 Copilot review 后,必须主动检查 Copilot 是否已回复。** 不能发完评论就停止等待。检查方式:使用 `gh api` 拉取 PR 的 reviews 和 comments,对比上次已知的最新 review 时间戳。检查频率:每次重新请求 review 后,约 2–3 分钟后主动检查一次;若 Copilot 已生成新 review 则立即进入下一轮处理;若尚未回复,再等 2–3 分钟后再次检查。不可无限等待,最多检查 3 次(约 6–9 分钟),若仍无回复则告知用户当前状态。
|
|
119
120
|
|
|
120
121
|
## 安全
|
|
121
122
|
|
|
@@ -206,6 +207,7 @@ Closes #456
|
|
|
206
207
|
|
|
207
208
|
## 样式(Tailwind CSS)
|
|
208
209
|
|
|
210
|
+
- 前端开发禁止编写原生 CSS,所有样式必须使用 Tailwind CSS 的 utility classes 实现,不写 `style` 标签、不写内联样式、不写独立样式文件。
|
|
209
211
|
- 统一 Tailwind CSS,禁止新增 `*.module.scss`、`*.module.css`、`.css` 文件(历史文件可保留)。
|
|
210
212
|
- 项目未集成 Tailwind 时,先完成安装配置再开发。
|
|
211
213
|
- 新增样式通过 utility classes 在 JSX/TSX 中编写;不满足时优先 `tailwind.config` extend → `@apply` 封装 → 行内 `style`。
|
package/package.json
CHANGED
package/postinstall.js
CHANGED
|
@@ -59,17 +59,28 @@ if (projectRoot.includes("node_modules")) {
|
|
|
59
59
|
process.exit(0);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
// 确保下游项目 .npmrc 中关闭 frozen-lockfile
|
|
62
|
+
// 确保下游项目 .npmrc 中关闭 frozen-lockfile + 启用依赖 pre/post 脚本
|
|
63
|
+
// frozen-lockfile=false:让 pnpm install 能在版本更新后直接执行
|
|
64
|
+
// enable-pre-post-scripts=true:让 pnpm 始终执行依赖包的 postinstall 生命周期脚本,
|
|
65
|
+
// 否则 pnpm 默认不会运行依赖的 postinstall,导致 agent-rules 更新后规则文件不刷新
|
|
63
66
|
const npmrcPath = path.join(projectRoot, ".npmrc");
|
|
64
67
|
let npmrcContent = "";
|
|
65
68
|
if (fs.existsSync(npmrcPath)) {
|
|
66
69
|
npmrcContent = fs.readFileSync(npmrcPath, "utf-8");
|
|
67
70
|
}
|
|
71
|
+
const npmrcEntries = [];
|
|
68
72
|
if (!npmrcContent.includes("frozen-lockfile")) {
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
npmrcEntries.push("# 允许 pnpm install 在依赖版本更新后直接执行(由 agent-rules 自动添加)");
|
|
74
|
+
npmrcEntries.push("frozen-lockfile=false");
|
|
75
|
+
}
|
|
76
|
+
if (!npmrcContent.includes("enable-pre-post-scripts")) {
|
|
77
|
+
npmrcEntries.push("# 确保依赖包的 postinstall 生命周期脚本始终执行(由 agent-rules 自动添加)");
|
|
78
|
+
npmrcEntries.push("enable-pre-post-scripts=true");
|
|
79
|
+
}
|
|
80
|
+
if (npmrcEntries.length > 0) {
|
|
81
|
+
const newEntry = "\n" + npmrcEntries.join("\n") + "\n";
|
|
71
82
|
fs.appendFileSync(npmrcPath, newEntry);
|
|
72
|
-
console.log("[agent-rules] 已配置 .npmrc:
|
|
83
|
+
console.log("[agent-rules] 已配置 .npmrc: " + npmrcEntries.filter((e) => !e.startsWith("#")).join(", "));
|
|
73
84
|
}
|
|
74
85
|
|
|
75
86
|
console.log("");
|
|
@@ -83,10 +94,10 @@ const syncProcess = spawn("node", [mergeScriptPath, "init"], {
|
|
|
83
94
|
|
|
84
95
|
syncProcess.on("close", (code) => {
|
|
85
96
|
if (code === 0) {
|
|
86
|
-
console.log("[agent-rules]
|
|
97
|
+
console.log("[agent-rules] 规则文件同步完成");
|
|
87
98
|
console.log("");
|
|
88
99
|
} else {
|
|
89
|
-
console.error("[agent-rules]
|
|
100
|
+
console.error("[agent-rules] 同步失败,退出码:", code);
|
|
90
101
|
}
|
|
91
102
|
});
|
|
92
103
|
|
package/rules/frontend.md
CHANGED
|
@@ -31,6 +31,7 @@ outputName: "frontend"
|
|
|
31
31
|
|
|
32
32
|
## 样式(Tailwind CSS)
|
|
33
33
|
|
|
34
|
+
- 前端开发禁止编写原生 CSS,所有样式必须使用 Tailwind CSS 的 utility classes 实现,不写 `style` 标签、不写内联样式、不写独立样式文件。
|
|
34
35
|
- 统一 Tailwind CSS,禁止新增 `*.module.scss`、`*.module.css`、`.css` 文件(历史文件可保留)。
|
|
35
36
|
- 项目未集成 Tailwind 时,先完成安装配置再开发。
|
|
36
37
|
- 新增样式通过 utility classes 在 JSX/TSX 中编写;不满足时优先 `tailwind.config` extend → `@apply` 封装 → 行内 `style`。
|
package/rules/global.md
CHANGED
|
@@ -116,6 +116,7 @@ Closes #456
|
|
|
116
116
|
- 如果 Copilot review 连续两轮提出同一问题但实际已修复或无道理,需在 PR 评论中明确说明原因并直接 Resolve,不再反复修改。
|
|
117
117
|
- PR 图片文件检查:在 Copilot review 循环中(建议放在开始处理 review 问题之前,或所有 review 问题处理完毕之后),必须检查当前 PR 中是否存在未被引用的图片文件(PNG、JPG、JPEG、GIF、SVG、WebP 等)。检查方式:搜索代码库中是否有任何文件引用了该图片的文件名或路径,若没有任何引用 → 该图片为冗余文件。处理方式:若图片内容需要保留(如截图佐证),则将其转为 base64 data URI 内嵌到对应的 HTML 文档中,然后删除原图片文件;若图片内容无需保留,则直接删除。处理完毕后提交并推送。
|
|
118
118
|
- 可忽略的 review 建议:如果 Copilot review 建议将配置项(API 地址、数据库连接、第三方服务地址等)写入 `.env` 文件,必须直接忽略并在评论中回复说明原因后 Resolve。说明内容:「本项目 `.env` 仅允许配置端口号(如 `PORT`、`API_PORT`),其余配置项一律写死在代码中,敏感信息统一放入 Nacos 配置中心,不放 `.env`。」
|
|
119
|
+
- ⚠️ **强制步骤:重新请求 Copilot review 后,必须主动检查 Copilot 是否已回复。** 不能发完评论就停止等待。检查方式:使用 `gh api` 拉取 PR 的 reviews 和 comments,对比上次已知的最新 review 时间戳。检查频率:每次重新请求 review 后,约 2–3 分钟后主动检查一次;若 Copilot 已生成新 review 则立即进入下一轮处理;若尚未回复,再等 2–3 分钟后再次检查。不可无限等待,最多检查 3 次(约 6–9 分钟),若仍无回复则告知用户当前状态。
|
|
119
120
|
|
|
120
121
|
## 安全
|
|
121
122
|
|