name: quality-reviewer description: 自动审查DevPrep AI代码是否符合质量规范,包括ESLint合规性、TypeScript严格模式、180行文件限制、复杂度低于15、正确的命名约定、导入模式以及符合6文件夹架构的架构合规性 allowed-tools: [Read, Bash, Grep, Glob]
质量审查员
在开发过程中自动强制执行DevPrep AI代码质量标准。
自动触发
由以下关键词自动触发:
- “review”, “check”, “validate”, “verify”
- “lint”, “quality”, “standards”
- “type check”, “typescript”
- “complexity”, “file size”, “architecture”
快速标准
文件限制
- 每个文件 ≤180行(仅代码)
- 每个函数 复杂度 ≤15
- 每个函数 ≤50行
- 每个函数 ≤4个参数
TypeScript
- 启用严格模式
- 不使用
any类型 - 接口:使用
I前缀(例如IButtonProps) - 类型导入:
import type { ... }
命名
- 接口:
IUserProfile,IButtonProps - 类型:
QuestionType,Difficulty - 函数:
camelCase - 组件:
PascalCase
导入
使用路径别名:
@shared/ui/button // ✅ 正确
@modules/practice/* // ✅ 正确
@lib/trpc/client // ✅ 正确
@store/hooks // ✅ 正确
../../../shared/ui/* // ❌ 错误
架构(6文件夹)
app/ 仅路由
modules/ 功能模块(练习、评估、结果、个人资料、问题、首页)
shared/ 跨领域共享(UI、组件、钩子、工具函数)
lib/ 集成库(trpc、claude)
store/ Zustand状态管理
styles/ 设计系统
运行检查
单项检查
# 针对特定问题
./.claude/skills/quality-reviewer/scripts/check-file-size.sh
./.claude/skills/quality-reviewer/scripts/check-complexity.sh
./.claude/skills/quality-reviewer/scripts/check-imports.sh
./.claude/skills/quality-reviewer/scripts/check-architecture.sh
./.claude/skills/quality-reviewer/scripts/check-naming.sh
完整审查
# 一次性运行所有7项检查
./.claude/skills/quality-reviewer/scripts/full-review.sh
检查顺序:文件大小 → 复杂度 → 导入 → 架构 → 命名 → ESLint → TypeScript
常见修复
接口缺少’I’前缀
interface ButtonProps { } // ❌
interface IButtonProps { } // ✅
直接导入React
import { ReactElement } from 'react'; // ❌
import type { ReactElement } from 'react'; // ✅
相对路径导入
import { Button } from '../../../shared/ui/button'; // ❌
import { Button } from '@shared/ui/button'; // ✅
使用’any’
const data: any = fetchData(); // ❌
const data: IUserData = fetchData(); // ✅
文件过大
拆分为:
Component.tsx- 仅UIhooks.ts- 逻辑types.ts- 类型utils.ts- 工具函数
参考:examples/refactor-after/
复杂度过高(>15)
// ❌ 之前:嵌套if语句(复杂度18)
if (user.role === 'admin') {
if (user.isActive) {
if (user.permissions.includes('write')) {
// 执行操作
}
}
}
// ✅ 之后:提前返回(复杂度3)
if (!user.role === 'admin') return;
if (!user.isActive) return;
if (!user.permissions.includes('write')) return;
// 执行操作
快速修复方法:
- 提取条件判断 → 独立函数
- 使用提前返回 → 避免嵌套
- 替换switch语句 → 查找对象
const MAP = { key: 'value' };
何时加载额外文档
SKILL.md自包含以下内容:
- 运行检查(上述所有脚本)
- 简单修复(命名、导入、基础重构)
- 理解标准
仅在需要时加载额外文档:
| 需求 | 加载 | 行数 |
|---|---|---|
| 文件拆分策略 | examples/refactor-after/ |
~256 |
| 复杂度降低技巧 | docs/standards.md (第75-163行) |
~88 |
| 架构模式 | docs/standards.md (第224-280行) |
~56 |
| 类型安全模式 | docs/standards.md (第283-348行) |
~65 |
| 深入分析任何违规 | docs/standards.md (完整文件) |
~370 |
代码示例:
- ✅ 完美示例:
examples/good-code.tsx - ❌ 违规示例:
examples/bad-code.tsx - 🔄 重构示例:
examples/refactor-after/
完整项目标准: Docs/code-standards.md
版本: 1.1.0(优化版) | 更新: 2025年10月 优化: 体积减少31%,典型使用场景令牌数减少52%
注意: 示例文件使用 // @ts-nocheck 和 /* eslint-disable */ 指令来抑制IDE警告,因为它们用于演示故意违规或引用不存在的路径以用于教育目的。它们也通过 frontend/tsconfig.json 从构建时TypeScript编译中排除。