quality-reviewer
Quality Reviewer
Automatically enforces DevPrep AI code quality standards during development.
Auto-Triggers
Auto-triggered by keywords:
- "review", "check", "validate", "verify"
- "lint", "quality", "standards"
- "type check", "typescript"
- "complexity", "file size", "architecture"
Quick Standards
File Limits
- ≤180 lines per file (code only)
- Complexity ≤15 per function
- ≤50 lines per function
- ≤4 parameters per function
TypeScript
- Strict mode enabled
- No
anytypes - Interfaces:
Iprefix (e.g.,IButtonProps) - Type imports:
import type { ... }
Naming
- Interfaces:
IUserProfile,IButtonProps - Types:
QuestionType,Difficulty - Functions:
camelCase - Components:
PascalCase
Imports
Use path aliases:
@shared/ui/button // ✅ Correct
@modules/practice/* // ✅ Correct
@lib/trpc/client // ✅ Correct
@store/hooks // ✅ Correct
../../../shared/ui/* // ❌ Wrong
Architecture (6-Folder)
app/ Routes only
modules/ Features (practice, assessment, results, profile, questions, home)
shared/ Cross-cutting (ui, components, hooks, utils)
lib/ Integrations (trpc, claude)
store/ Zustand state
styles/ Design system
Run Checks
Single Check
# Target specific issues
./.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
Full Review
# Run all 7 checks at once
./.claude/skills/quality-reviewer/scripts/full-review.sh
Checks: file size → complexity → imports → architecture → naming → ESLint → TypeScript
Common Fixes
Interface Missing 'I' Prefix
interface ButtonProps { } // ❌
interface IButtonProps { } // ✅
Direct React Import
import { ReactElement } from 'react'; // ❌
import type { ReactElement } from 'react'; // ✅
Relative Import
import { Button } from '../../../shared/ui/button'; // ❌
import { Button } from '@shared/ui/button'; // ✅
Using 'any'
const data: any = fetchData(); // ❌
const data: IUserData = fetchData(); // ✅
File Too Large
Split into:
Component.tsx- UI onlyhooks.ts- Logictypes.ts- Typesutils.ts- Helpers
See: examples/refactor-after/
Complexity Too High (>15)
// ❌ Before: Nested ifs (complexity 18)
if (user.role === 'admin') {
if (user.isActive) {
if (user.permissions.includes('write')) {
// do something
}
}
}
// ✅ After: Early returns (complexity 3)
if (!user.role === 'admin') return;
if (!user.isActive) return;
if (!user.permissions.includes('write')) return;
// do something
Quick fixes:
- Extract conditionals → separate functions
- Use early returns → avoid nesting
- Replace switch → lookup objects
const MAP = { key: 'value' };
When to Load Additional Docs
SKILL.md is self-sufficient for:
- Running checks (all scripts listed above)
- Simple fixes (naming, imports, basic refactoring)
- Understanding standards
Load additional docs only when needed:
| Need | Load | Lines |
|---|---|---|
| File splitting strategies | examples/refactor-after/ |
~256 |
| Complexity reduction tactics | docs/standards.md (lines 75-163) |
~88 |
| Architecture patterns | docs/standards.md (lines 224-280) |
~56 |
| Type safety patterns | docs/standards.md (lines 283-348) |
~65 |
| Deep-dive on any violation | docs/standards.md (full file) |
~370 |
Code examples:
- ✅ Perfect:
examples/good-code.tsx - ❌ Violations:
examples/bad-code.tsx - 🔄 Refactoring:
examples/refactor-after/
Full project standards: Docs/code-standards.md
Version: 1.1.0 (Optimized) | Updated: October 2025 Optimization: 31% smaller, 52% fewer tokens for typical usage
Note: Example files use // @ts-nocheck and /* eslint-disable */ directives to suppress IDE warnings, since they demonstrate intentional violations or reference non-existent paths for educational purposes. They are also excluded from build-time TypeScript compilation via frontend/tsconfig.json.
More from ariegoldkin/devprepai
ascii-visualizer
Creates beautiful ASCII art visualizations for plans, architectures, workflows, and data. This skill should be used when explaining system architecture, creating implementation plans, showing workflows, visualizing comparisons, or documenting file structures. NOT for code syntax highlighting or markdown tables. User explicitly loves ASCII art - use liberally for visual communication.
4trpc-scaffolder
Scaffolds tRPC routers, procedures, and Zod schemas with full type safety following DevPrep AI patterns
4design-to-production
Guided workflow for implementing HTML design prototypes as production React components with glassmorphism styling and quality standards enforcement. Use when converting design prototypes to production code.
3architecture-navigator
Understand and navigate the DevPrep AI 7-folder architecture. Use this skill when asked about code organization, where to place new features, what modules exist, or when starting development tasks that need architecture context. Auto-triggers on keywords like "where should", "add module", "architecture", "structure", "organize", "place code", "what modules".
3module-scaffolder
Scaffolds new feature modules in DevPrep AI following the 6-folder architecture with proper TypeScript interfaces, path aliases, and quality standards. Use when creating new domains like 'analytics', 'notifications', or any new feature module.
3brainstorming
Use when creating or developing anything, before writing code or implementation plans - refines rough ideas into fully-formed designs through structured Socratic questioning, alternative exploration, and incremental validation
2