---
name: code-style
description: Response style, code generation principles, and per-language conventions (JS/Node, Python, Bash, HTML/CSS) the agent must follow.
---

# Estilo de respuestas

## Respuestas finales al usuario

- Usa markdown: **bold**, `code inline`, bloques de codigo con ```, headers ##, listas -.
- Se conciso pero completo. No repitas informacion que el usuario ya sabe.
- Si creaste/editaste archivos, menciona que cambiaste y en que archivo.
- Si ejecutaste comandos, resume el resultado relevante (no copies todo el stdout).
- Para preguntas simples, responde en 1-3 lineas.
- Para tareas completadas, da un resumen estructurado de lo que hiciste.
- Si algo salio mal, explica que paso y que alternativas hay.
- Usa listas cuando hay multiples items. Usa code blocks para codigo.
- NUNCA inventes output de comandos o contenido de archivos. Solo reporta lo real.

## Formato de codigo en respuestas

Cuando muestres codigo en content, usa triple backtick con el lenguaje:
```js
const x = 42;
```
Para paths o comandos inline usa backtick simple: `src/index.js`, `npm install`.

# Generacion de codigo

## Principios generales (cualquier lenguaje)

- Codigo limpio y autoexplicativo. Nombres descriptivos reemplazan comentarios.
- Solo comenta lo que NO es obvio por el codigo (decisiones de diseno, workarounds, gotchas).
- Funciones pequenas con una sola responsabilidad.
- Early return / guard clauses para evitar nesting profundo.
- Manejo de errores robusto: try/catch en operaciones async, validacion de inputs.
- No hardcodear valores magicos. Usa constantes con nombre descriptivo.
- DRY (Don't Repeat Yourself) pero sin abstracciones prematuras.
- Codigo production-ready: maneja edge cases, inputs invalidos, errores de red.

## JavaScript / Node.js

- const por defecto, let solo si reasigna, NUNCA var.
- async/await siempre. No callbacks, no .then() chains.
- Arrow functions para callbacks: arr.map(x => x.id).
- Template literals para interpolacion: `Hola ${nombre}`.
- Optional chaining: obj?.prop?.sub.
- Nullish coalescing: valor ?? 'default'.
- Destructuring cuando simplifica: const { name, age } = user.
- Indentacion: 2 espacios.
- Semicolons: siempre.
- Strings: comillas simples en JS, dobles en atributos HTML.

## Python

- Type hints en funciones: def process(data: list[str]) -> dict:
- f-strings para interpolacion: f"Hola {nombre}".
- List/dict comprehensions cuando son legibles.
- Context managers (with) para archivos y recursos.
- pathlib sobre os.path para manejo de paths.
- Indentacion: 4 espacios.
- Docstrings solo en funciones publicas complejas.

## Bash / Shell

- set -euo pipefail al inicio de scripts.
- Comillas dobles en variables: "$variable".
- Usa [[ ]] en lugar de [ ] para condicionales.
- Funciones para logica reutilizable.
- Exit codes significativos.

## HTML / CSS

- HTML semantico: header, main, nav, section, article, footer.
- Clases descriptivas y consistentes.
- Mobile-first: disenar para movil, escalar a desktop.
- Accesibilidad basica: alt en imgs, labels en forms, aria cuando aplique.

## Cuando modificas codigo existente

- Respeta el estilo del archivo existente (indentacion, naming, patron).
- No refactorices lo que no te pidieron. Cambios minimos y quirurgicos.
- No agregues imports, types, o abstracciones que no son necesarias para el cambio.
- Si el archivo tiene un patron (ej: todos los handlers siguen X estructura), siguelo.
