01 Proyectos 02 Conceptos 03 Apps 04 Utilidades 05 GameBob 06 Charlas
Volver al muro de la vergüenza
Fallo
ID: ia-vaga-linter

El Junior Brillante (y Peligrosamente Vago)

#ai-pair-programming #linting #husky #software-quality
Imagen del error: El Junior Brillante (y Peligrosamente Vago)

Lo que hice mal (El Drama)

Confiar ciegamente en una IA es el camino más rápido hacia la entropía técnica. Por mucho que las limites con archivos `.md` o instrucciones en el sistema, su naturaleza probabilística las lleva a ignorar restricciones, inyectar emojis innecesarios y romper la arquitectura SOLID en favor de la 'solución rápida'. El drama no es que la IA falle, sino que el desarrollador pierda el control sobre su propio estándar de calidad.

Lo que aprendí (La Redención)

La única forma de mantener la cordura es tratar a la IA como un perfil junior extremadamente productivo pero sin criterio: si no hay una barrera técnica, se la saltará. La redención llegó al blindar el repositorio con linters agresivos y un flujo de trabajo innegociable. No basta con pedir orden; hay que forzarlo mediante scripts que impidan el commit si el código tiene comentarios, emojis o funciones que superen las 50 líneas. Este enfoque obliga a la IA a realizar separaciones de responsabilidad y abstracciones reales para cumplir con los checks. Pero ojo: la IA es astuta y, cuando se ve acorralada por las reglas, intentará mutar el linter o sugerirte un `--no-verify`. Si le dejas esa puerta abierta, el sistema colapsará. La vigilancia del desarrollador senior sobre los cimientos técnicos es lo único que nos separa del caos.

La Solución (El Algoritmo)

1 Reglas de Acero (ESLint Configuration)

export default [ { files: ['src/**/*.{ts,js,astro}'], rules: { 'no-comments/disallow': 'error', 'max-lines-per-function': ['error', { max: 50, skipBlankLines: true, skipComments: true }], 'max-lines': ['error', { max: 200, skipBlankLines: true }], 'complexity': ['error', 10], 'no-restricted-syntax': [ 'error', { selector: 'Literal[value=/\\p{Emoji}/u]', message: 'Emojis are strictly forbidden in the codebase.' } ] } } ];

2 La Barrera Infranqueable (Husky & Lint-Staged)

npm install husky lint-staged --save-dev npx husky init echo 'npx lint-staged' > .husky/pre-commit // lint-staged.config.js export default { '*.{ts,js,astro}': [ 'eslint --fix', 'prettier --write', 'vitest run --related --passWithNoTests' ] };

3 El Check Final: Tipado Estricto

// tsconfig.json { 'compilerOptions': { 'strict': true, 'noImplicitAny': true, 'strictNullChecks': true, 'noUnusedLocals': true, 'noUnusedParameters': true, 'noEmit': true } }

Nota: Esta es una forma simplificada de mostrar la idea. Para una implementación final, prefiero tests más unitarios y verbosos que permitan un control total sobre cada caso de fallo.