fc644ecd6e
Reemplaza el scaffold del echobot por la plataforma completa de bots traida desde ~/DataProyects/Github/agents_and_robots tras la operacion Matrix-out: los bots ya no hablan por Matrix sino por el bus unibus (modelo todo-rooms + E2E via shell/transportunibus sobre github.com/enmanuel/unibus/pkg/client). - go.mod: replace de unibus -> ../unibus y de fn-registry -> ../../../.. (paths relativos reajustados a la nueva ubicacion dentro de fn_registry). - app.md: bump a 0.2.0, descripcion + arquitectura + comandos + gotchas reales. - modulo Go conservado como github.com/enmanuel/agents (sin reescribir imports). agents_and_robots queda archivado como museo de la era Matrix.
4.0 KiB
4.0 KiB
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 | Al crear un nuevo bot/agente Matrix completo |
| Crear herramienta | create_tool.md | Al añadir una nueva tool para LLM function calling |
| Crear comando | create_command.md | Al añadir un comando directo (!xxx) a un agente |
| Crear skill | create_skill.md | Al crear una nueva skill (flujo multi-paso declarativo) |
| Crear issue | create_issue.md | Al crear un nuevo issue/feature request en dev/issues/ |
| Arreglar issue | fix_issue.md | Al implementar/arreglar un issue existente de 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 skill: cuando el usuario pida añadir una skill (flujo multi-paso declarativo). Las skills combinan tools, logica condicional y conocimiento de dominio en un SKILL.md con recursos opcionales.
- Crear issue: cuando el usuario pida crear un nuevo issue, feature request o task. Usa el template en
.claude/templates/issue.md. - Arreglar issue: cuando el usuario pida implementar, arreglar o trabajar en un issue existente. Incluye crear rama (
/git-branch), implementar las tareas con tests, cerrar el issue, e integrar a master (/git-push).
Flujo de desarrollo — Trunk-based development (TBD)
El proyecto usa TBD estricto. master es el unico branch estable y siempre deployable. Nunca trabajar directamente en master.
master (trunk) ← siempre deployable
↑
└── issue/<NNNN>-<slug> ← rama efimera (horas, no dias)
├── commit: feat: ...
├── commit: test: ...
└── commit: docs: ...
merge --no-ff → master → push → delete branch
/git-branch— crea ramaissue/<NNNN>-<slug>desde master actualizado- Implementar con commits atomicos por bloque logico (no WIP, no mezclar tipos)
/git-push— tests → merge--no-ffa master → push → eliminar rama
Commits
- Cada commit es atomico por bloque logico con prefijo:
feat:,fix:,test:,docs:,refactor:,chore: - Titulo corto + cuerpo largo en español
- No WIP: nunca commitear "wip", "tmp", codigo a medias
- No squash:
--no-ffpreserva commits;git log --first-parentda vista limpia - No rebase -i: commits limpios desde el inicio
Feature flags (para features multi-issue)
Cuando una feature no cabe en una sola rama corta, desglosar en sub-issues. Cada sub-issue mergea codigo completo y testeado protegido por un feature flag (desactivado). Feature flag ≠ WIP — un flag protege codigo terminado, no codigo a medias.
Archivo: dev/feature_flags.json
Comandos
/git-branch— crear rama de trabajo (.claude/commands/git-branch.md)/git-push— integrar rama a master y publicar (.claude/commands/git-push.md)
Filosofia completa documentada en CLAUDE.md seccion "Trunk-based development".
Principio general
Todas las reglas respetan el patron pure core / impure shell:
pkg/es puro — nunca añadir side effectsshell/es impuro — todo I/O va aquiagents/compone ambos — reglas puras + ensamblado con shelltools/sigue el mismo patron:Def(datos puros) +Exec(funcion impura)