# Políticas del proyecto

Guías operativas para LLMs que trabajan en este codebase. Cada política describe cómo ejecutar una tarea específica respetando la arquitectura y convenciones del proyecto.

## Políticas disponibles

| Política | Archivo | Cuándo aplicarla |
|----------|---------|------------------|
| **Crear agente** | [create_agent.md](create_agent.md) | Al crear un nuevo bot/agente Matrix completo |
| **Crear herramienta** | [create_tool.md](create_tool.md) | Al añadir una nueva tool para LLM function calling |
| **Crear comando** | [create_command.md](create_command.md) | Al añadir un comando directo (!xxx) a un agente |

## Cuándo consultar las políticas

- **Crear agente**: cuando el usuario pida crear un nuevo bot, agente, o asistente. Incluye la estructura de archivos, reglas puras, config YAML, system prompt y registro en el launcher.
- **Crear herramienta**: cuando el usuario pida añadir una nueva herramienta/tool al sistema. Incluye el patrón Def (puro) + Exec (impuro), registro en runtime.go y habilitación en config.
- **Crear comando**: cuando el usuario pida añadir un comando directo (!xxx) a un agente. Los comandos se resuelven sin pasar por reglas ni LLM.

## Principio general

Todas las políticas respetan el patrón **pure core / impure shell**:
- `pkg/` es puro — nunca añadir side effects
- `shell/` es impuro — todo I/O va aquí
- `agents/` compone ambos — reglas puras + ensamblado con shell
- `tools/` sigue el mismo patrón: `Def` (datos puros) + `Exec` (función impura)
