Files

75 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目检查与规则维护
> 只有任务需要新增或调整 Lint、测试、CI 或项目检查规则时读取;只读评审和普通局部实现不读。
## 原则
Skill 不携带通用执行脚本。检查规则、测试和 CI 配置必须根据当前项目的框架、组件体系和工具链生成,并保存在项目仓库中。
只读评审不得执行 Onboarding、安装依赖或修改配置。用户授权实现时才允许接入或调整自动化。
## 首次接入
首次在项目中实施 `oil-frontend` 时,先检查:
- 语言、前端框架和包管理器;
- 已有 lint、CSS 检查、组件测试和 CI
- 共享组件、样式和页面目录;
- 是否已存在前端规则、命令或回归测试。
优先扩展已有工具:
| 问题类型 | 项目原生落点 |
| --- | --- |
| JSX、模板和导入结构 | ESLint 或当前模板 linter |
| CSS 归属和值约束 | Stylelint没有时才新增项目内轻量检查 |
| 组件默认行为 | 组件实现与组件测试 |
| 数据集合、忙碌范围和提交边界 | 组件测试、集成测试或状态模型测试 |
| 信息价值和层级判断 | Agent Review不程序化 |
首次接入只添加当前技术栈能够稳定判断的最小规则集。已有存量违规先报告和分批修复,不通过大量例外让规则失效,也不直接把噪声规则接入 CI。
项目已经定义浏览组件和编辑容器后,可以优先检查两类稳定问题:资源浏览组件内直接平铺表单控件,以及使用 `readOnly` / `disabled` 输入框展示普通信息。可编辑工作表必须由项目声明的工作表组件或含义稳定的标记承载;不要用逐行忽略注释放行。
项目已经提供共享 Button、EmptyState 和加载组件后可以检查使用按钮的位置手工插入加载动画、Loading 嵌套在 EmptyState以及页面绕过共享组件声明独立加载动画。只检查项目能够明确识别的组件和容器不按类名包含 `loading` 做宽泛拦截。
项目已经定义共享弹层、资源选择器和分页查询后,可以检查:页面自行实现浮层定位、选择器直接复用浏览分页结果、单项操作复用全局 busy以及筛选变化后仍保留不可见批量选择。优先用组件或状态测试保护行为不根据组件名和变量名做猜测。
## 持续演进
后续每次发现真实产品前端问题时:
1. 修复共享组件、父布局或数据流中真正出错的位置;
2. 判断该问题能否由源码结构、组件行为或页面几何稳定识别;
3. 搜索同类使用位置和历史问题,确认不是单个页面偶然情况;
4. 选择项目已有的 ESLint、CSS 检查或组件测试;
5. 增加一个修复前失败的回归样例,并保留至少一个合法样例;
6. 扫描存量代码;规则干净后再设为 error存在合理例外时收窄规则
7. 将检查接入项目现有 lint、test 和 CI不建立第二套重复入口。
发现误报、漏报或迫使使用组件的页面增加例外时,立即优化或降级规则,不能为了保留规则而扭曲组件设计。
## 规则门槛
只有同时满足以下条件才新增或加强规则:
- 输入和失败条件可以明确描述;
- 对多个页面、组件或状态使用同一判断;
- 不依赖页面名称、产品文案或一次截图;
- 不使用固定列数、固定行高或固定文案长度代替 UX 判断;
- 不全面禁止 CSS 数值、宽度或高度;只拦截项目能够确认属于实例补丁、绕过统一设计变量或破坏共享布局规则的写法;
- 能提供命中样例和合法样例;
- 误报不会迫使使用组件的页面增加局部样式或忽略注释。
能由共享组件默认行为彻底消除的问题,优先修组件;只有需要防止使用组件的页面绕过本规范时才补规则。
## 完成条件
首次接入或规则更新完成后,报告:
- 使用了项目中的哪个原生工具;
- 新增或修改了哪些规则及其保护的回归;
- 扫描了哪些范围;
- 存量违规和未覆盖情况;
- 哪些检查已进入 CI哪些仍为 warning。