Files
agent/.opencode/skills/engineering/code-quality/SKILL.md

64 lines
2.3 KiB
Markdown
Raw Normal View History

2026-02-16 12:46:37 +08:00
---
name: code-quality
description: 通用编码质量规范。适用于所有前端项目与具体技术栈无关。当涉及任何代码实施、审计任务时PM 必须参考此 Skill 并将要点注入子 Agent。
---
# 通用编码质量规范
## 1. TypeScript 严格模式
- **禁止** `any` 类型。所有变量、参数、返回值必须有明确类型。
- props 和 state 必须严格类型化,使用 `interface``type` 定义。
- 接口定义统一放在 `data.d.ts` 文件中,便于服务层和组件层共享。
- 无隐式 `any`,无未使用变量,确保通过所有 lint 规则。
## 2. 组件规模红线
- **严禁**单个 React 组件文件(`.tsx`)超过 **500 行**
- 超过必须进行拆分:
- **UI 子组件化**: 将可复用的 UI 片段提取为独立组件。
- **逻辑 Hooks 化**: 将复杂业务逻辑抽离到自定义 Hooks 中。
- **Utils 分离**: 纯计算函数抽离到 `utils/` 目录。
- 原则:保持 UI 组件简洁、逻辑模块化。
## 3. 安全规范
### 3.1 金额/货币精度
- **绝不**使用原始浮点运算处理金额。
- 使用精度安全库(如 `big.js``decimal.js`)或将金额作为**整数(分)**处理。
- UI 层展示时再进行格式化转换。
### 3.2 XSS 防护
- **禁止** `dangerouslySetInnerHTML` 或绕过 React 转义的直接 DOM 操作。
- 任何动态内容都必须经过清理sanitize
### 3.3 权限控制
- 敏感操作、路由或 UI 元素必须受权限系统保护。
- 检查"基于 ID"的未授权访问风险。
## 4. 数据交互规范
### 4.1 服务层隔离
- **所有**页面数据交互必须通过 `src/services/` 层封装的函数。
- **禁止**在组件JSX中内联 mock 数据或直接发起请求。
- Mock 数据统一放在项目约定的 `mock/` 目录。
### 4.2 加载状态
- 所有异步操作(请求、提交、删除等)**必须**显示加载状态(按钮 spinner 或骨架屏)。
### 4.3 防重复点击
- 所有操作按钮在执行期间必须被禁用(通过 loading + disabled 联动)。
- 防止用户双击导致重复提交。
## 5. 代码卫生
- **零 Lint 策略**: 代码必须通过所有 linting 规则。
- 无隐式 `any`无未使用变量hooks 中无缺失依赖数组。
- 保持 import 整洁,无未使用的导入。