diff --git a/.claude/policies/index.md b/.claude/policies/index.md deleted file mode 100644 index eb499b4..0000000 --- a/.claude/policies/index.md +++ /dev/null @@ -1,25 +0,0 @@ -# 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) diff --git a/.claude/policies/create_agent.md b/.claude/rules/create_agent.md similarity index 100% rename from .claude/policies/create_agent.md rename to .claude/rules/create_agent.md diff --git a/.claude/policies/create_command.md b/.claude/rules/create_command.md similarity index 100% rename from .claude/policies/create_command.md rename to .claude/rules/create_command.md diff --git a/.claude/rules/create_issue.md b/.claude/rules/create_issue.md new file mode 100644 index 0000000..8a7ed6d --- /dev/null +++ b/.claude/rules/create_issue.md @@ -0,0 +1,63 @@ +# Regla: Crear un nuevo issue + +Guia para crear issues de features, mejoras o bugs en `dev/issues/`. + +## Inputs — preguntar al usuario si no los da + +| Input | Requerido | Ejemplo | +|-------|-----------|---------| +| Titulo | si | "Hot reload de configuracion" | +| Descripcion/objetivo | si | "Recargar config sin reiniciar el agente" | +| Dependencias | no | "Requiere issue 010" | + +## Pasos + +### 1. Determinar el numero del issue + +Buscar el numero mas alto en `dev/issues/` y usar el siguiente. Formato: 3 digitos con ceros a la izquierda (`019`, `020`, etc.). + +### 2. Crear el archivo desde el template + +Copiar `.claude/templates/issue.md` a `dev/issues/-.md`. + +El slug debe ser: +- Lowercase +- Palabras separadas por guiones +- Conciso (2-4 palabras) +- Ejemplo: `019-hot-reload.md` + +### 3. Rellenar el template + +Completar todas las secciones del template: + +- **Objetivo**: 1-3 frases claras de que se quiere lograr +- **Contexto**: que existe, que falta, dependencias +- **Arquitectura**: archivos afectados, marcar `NEW` los nuevos. Incluir como se respeta pure core / impure shell +- **Tareas**: desglosar en fases con tareas numeradas (`1.1`, `1.2`, etc.). Cada tarea debe ser concreta y verificable. Incluir siempre una fase de tests y una de cleanup/docs +- **Ejemplo de uso**: flujo concreto mostrando la feature funcionando +- **Decisiones de diseno**: justificar las decisiones clave +- **Prerequisitos**: que debe estar implementado antes +- **Riesgos**: problemas potenciales y mitigacion + +### 4. Actualizar el indice + +Agregar una fila al final de la tabla en `dev/issues/README.md`: + +```markdown +| | | [-.md](-.md) | pendiente | +``` + +## Reglas + +- **Patron pure core / impure shell**: toda feature debe explicar que va en `pkg/` (puro) vs `shell/` (impuro). +- **Tareas atomicas**: cada tarea debe ser implementable de forma independiente. +- **Numeracion continua**: nunca reusar numeros de issues eliminados. +- **Estado**: los issues nuevos siempre empiezan como `pendiente`. +- **Completados**: cuando se termine un issue, moverlo a `dev/issues/completed/` y actualizar el README. + +## Verificacion + +- [ ] Archivo creado en `dev/issues/-.md` +- [ ] Todas las secciones del template rellenadas +- [ ] Fila agregada en `dev/issues/README.md` +- [ ] Numero de issue es consecutivo (no hay saltos ni duplicados) diff --git a/.claude/policies/create_tool.md b/.claude/rules/create_tool.md similarity index 100% rename from .claude/policies/create_tool.md rename to .claude/rules/create_tool.md diff --git a/.claude/rules/index.md b/.claude/rules/index.md new file mode 100644 index 0000000..ba02dac --- /dev/null +++ b/.claude/rules/index.md @@ -0,0 +1,27 @@ +# Reglas del proyecto + +Guias operativas para LLMs que trabajan en este codebase. Cada regla describe como ejecutar una tarea especifica respetando la arquitectura y convenciones del proyecto. + +## Reglas disponibles + +| Regla | Archivo | Cuando 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 | +| **Crear issue** | [create_issue.md](create_issue.md) | Al crear un nuevo issue/feature request en `dev/issues/` | + +## Cuando consultar las reglas + +- **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 patron Def (puro) + Exec (impuro), registro en runtime.go y habilitacion 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. +- **Crear issue**: cuando el usuario pida crear un nuevo issue, feature request o task. Usa el template en `.claude/templates/issue.md`. + +## Principio general + +Todas las reglas respetan el patron **pure core / impure shell**: +- `pkg/` es puro — nunca añadir side effects +- `shell/` es impuro — todo I/O va aqui +- `agents/` compone ambos — reglas puras + ensamblado con shell +- `tools/` sigue el mismo patron: `Def` (datos puros) + `Exec` (funcion impura) diff --git a/.claude/templates/issue.md b/.claude/templates/issue.md new file mode 100644 index 0000000..c74ebfd --- /dev/null +++ b/.claude/templates/issue.md @@ -0,0 +1,64 @@ +# + +## Objetivo + + + +## Contexto + +- +- +- + +## Arquitectura + +``` + +``` + +### Patron pure core / impure shell + +- `pkg/` — +- `shell/` — +- `agents/` — +- `tools/` — + +## Tareas + +### Fase 1: + +- [ ] **1.1** +- [ ] **1.2** + +### Fase 2: + +- [ ] **2.1** + +### Fase N: Tests + +- [ ] **N.1** + +### Fase N+1: Cleanup y docs + +- [ ] Actualizar `CLAUDE.md` si hay cambios en la estructura +- [ ] Actualizar docs relevantes + +--- + +## Ejemplo de uso + +``` + +``` + +## Decisiones de diseno + +- ****: + +## Prerequisitos + +- + +## Riesgos + +- ****: