Loading...
Loading...
Principios para escribir codigo de calidad. Usa cuando el usuario diga "buenas practicas", "best practices", "coding guidelines", "code quality", "clean code", "principios de codigo", "refactorizar con principios", "refactor with principles", o quiera seguir patrones de calidad.
npx skill4agent add testacode/llm-toolkit coding-guidelinesreferences/typescript.mdreferences/python.md// Empezar a agregar winston, estructurar logs, crear middleware...
import winston from 'winston';
const logger = winston.createLogger({...});Antes de agregar logging, necesito entender:
1. ¿Qué librería de logging prefieren? (winston, pino, console estructurado)
2. ¿A dónde van los logs? (stdout, archivo, servicio externo)
3. ¿Qué nivel de detalle? (solo errores, debug incluido)
4. ¿Hay un formato estándar en el proyecto?
Vi que ya usan console.log en otros lugares. ¿Prefieren mantener
consistencia o migrar todo a una librería?// Extraer todo a archivos separados, agregar types, cambiar naming...El archivo tiene 450 líneas. Opciones:
A) Extraer helpers a utils/helpers.ts (reduce a ~300 líneas)
B) Separar por dominio: user.ts, auth.ts, session.ts
C) Solo extraer la función más larga (validateUserSession, 80 líneas)
¿Cuál preferís? Recomiendo C porque es el cambio mínimo
que mejora legibilidad sin reestructurar todo.// Instalar zod, crear schemas, agregar validación client y server...
import { z } from 'zod';
const userSchema = z.object({...});¿Qué tipo de validación necesitás?
1. Solo frontend (mostrar errores en el form)
2. Solo backend (retornar 400 con errores)
3. Ambos (schema compartido)
Vi que el proyecto usa yup en otros forms.
¿Sigo con yup o preferís otra librería?// Usuario: "Agregá cache"
// Inmediatamente:
import Redis from 'ioredis';
const redis = new Redis(); // ← ¿Quién pidió Redis?// Te pidieron: agregar un botón de logout
// Agregaste:
<Button onClick={logout}>Logout</Button>
<ConfirmModal /> {/* ← Nadie pidió confirmación */}
<SessionTimeoutWarning /> {/* ← Nadie pidió esto */}// Te pidieron: corregir bug en calculateTotal()
// Hiciste:
- function calculateTotal(items) {
+ function calculateTotal(items: CartItem[]): Money { // ← Tipos nuevos
// ... fix del bug ...
}
+ // También renombré variables para mayor claridad ← NO
+ // Y extraje la lógica de descuentos ← NO// Te pidieron: guardar preferencia de tema (dark/light)
// Hiciste:
class ThemeManager implements IThemeProvider {
private strategy: ThemeStrategy;
private observers: ThemeObserver[] = [];
constructor(config: ThemeConfig) { ... }
}
// Cuando bastaba:
localStorage.setItem('theme', 'dark');// Usuario: "No funciona el login"
// Empezaste a reescribir el auth flow completo...
// Cuando el bug era:
- if (password = storedHash) // typo: = en vez de ===
+ if (password === storedHash)