- Introduced coding standards for TypeScript and React in SKILL.md. - Added continuous learning skill with configuration and evaluation scripts. - Created detail layout guidelines for read-only pages. - Established form layout rules for data-entry forms. - Documented project guidelines for the frontend monorepo. - Implemented security review checklist for frontend/Electron applications. - Developed a verification loop skill for comprehensive session checks. This commit enhances the skill set available for developers, ensuring adherence to best practices and improving code quality.
77 lines
1.6 KiB
Plaintext
77 lines
1.6 KiB
Plaintext
---
|
|
description: Immutability, file organization, error handling, and input validation
|
|
globs: "**/*.{ts,tsx,js,jsx}"
|
|
alwaysApply: false
|
|
---
|
|
|
|
# Coding Style
|
|
|
|
## Immutability (CRITICAL)
|
|
|
|
ALWAYS create new objects, NEVER mutate:
|
|
|
|
```javascript
|
|
// WRONG: Mutation
|
|
function updateUser(user, name) {
|
|
user.name = name // MUTATION!
|
|
return user
|
|
}
|
|
|
|
// CORRECT: Immutability
|
|
function updateUser(user, name) {
|
|
return {
|
|
...user,
|
|
name
|
|
}
|
|
}
|
|
```
|
|
|
|
## File Organization
|
|
|
|
MANY SMALL FILES > FEW LARGE FILES:
|
|
- High cohesion, low coupling
|
|
- 200-400 lines typical, 800 max
|
|
- Extract utilities from large components
|
|
- Organize by feature/domain, not by type
|
|
|
|
## Error Handling
|
|
|
|
ALWAYS handle errors comprehensively:
|
|
|
|
```typescript
|
|
try {
|
|
const result = await riskyOperation()
|
|
return result
|
|
} catch (error) {
|
|
console.error('Operation failed:', error)
|
|
throw new Error('Detailed user-friendly message')
|
|
}
|
|
```
|
|
|
|
## Input Validation
|
|
|
|
ALWAYS validate user input with Zod schemas and `@repo/ui/validators` (`compose`, `required`, `rangeLength`, …). Do not introduce class-validator DTOs.
|
|
|
|
```typescript
|
|
import { z } from 'zod'
|
|
|
|
const schema = z.object({
|
|
email: z.string().email(),
|
|
age: z.number().int().min(0).max(150)
|
|
})
|
|
|
|
const validated = schema.parse(input)
|
|
```
|
|
|
|
## Code Quality Checklist
|
|
|
|
Before marking work complete:
|
|
- [ ] Code is readable and well-named
|
|
- [ ] Functions are small (<50 lines)
|
|
- [ ] Files are focused (<800 lines)
|
|
- [ ] No deep nesting (>4 levels)
|
|
- [ ] Proper error handling
|
|
- [ ] No console.log statements
|
|
- [ ] No hardcoded values
|
|
- [ ] No mutation (immutable patterns used)
|