Files
agents_and_robots/.claude/CLAUDE.md
T
egutierrez bccd722e04 docs: simplificar CLAUDE.md de 284 a 97 líneas
Se condensa el archivo principal de contexto eliminando redundancia
con las reglas detalladas que ya viven en .claude/rules/*.md.

Cambios:
- Eliminar secciones duplicadas (dev-scripts, env vars, dependencias,
  extensiones pendientes) que ya están documentadas en otros archivos
- Mantener los dos pilares (FP + TBD) como secciones principales
- Condensar estructura de directorios, agentes, build y preferencias
- Referenciar .claude/rules/index.md para guías detalladas

No se pierde información: todo lo eliminado existe en rules/, MEMORY.md,
o README.md. El archivo queda más enfocado y dentro de límites razonables
para el contexto de LLMs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:28:00 +00:00

98 lines
3.4 KiB
Markdown

# CLAUDE.md — agents_and_robots
Monorepo Go para bots Matrix autonomos. Modulo: `github.com/enmanuel/agents`.
**Homeserver:** `https://matrix-af2f3d.organic-machine.com` | **Server name:** `matrix-af2f3d.organic-machine.com`
## Los dos pilares — SIEMPRE APLICAR
### 1. Functional PRogramming: Pure core / Impure shell
```
pkg/ → PURO: tipos, funciones puras, cero side effects
shell/ → IMPURO: todo I/O (Matrix, LLM, SSH, filesystem)
agents/ → composicion: reglas puras + ensamblado con shell
tools/ → Def (puro) + Exec (impuro)
```
**Nunca** side effects en `pkg/`. El core produce `[]decision.Action` (datos puros), el shell los interpreta.
```
Matrix event → Parse (pure) → Evaluate rules (pure) → []Action (pure data)
→ Runner.Execute (impure) → efectos reales
```
### 2. TBD: Trunk-based development
**master** es el unico branch estable. Nunca trabajar directamente en master.
```
master ← siempre deployable
└── issue/<NNNN>-<slug> ← rama efimera (horas)
commits atomicos (feat:, fix:, test:, docs:, refactor:, chore:)
merge --no-ff → master → push → delete branch
```
- `/git-branch` — crea rama desde master
- `/git-push` — tests → merge --no-ff → push → elimina rama
- Commits atomicos por bloque logico, titulo corto + cuerpo en espanol
- No WIP, no squash, no rebase -i
**Feature flags** (solo para features multi-issue): codigo completo y testeado, mergeado pero desactivado. Flag != WIP. Archivo: `dev/feature_flags.json`.
## Estructura
```
pkg/decision/ motor de reglas puro
pkg/llm/ tipos LLM puros
pkg/message/ parse/format mensajes
pkg/personality/ tipos de personalidad
shell/llm/ clientes LLM (anthropic, openai)
shell/matrix/ cliente Matrix (mautrix-go)
shell/ssh/ ejecutor SSH
shell/effects/ Runner: []Action → side effects
shell/bus/ comunicacion inter-agente
agents/runtime.go Agent{}: ensambla core + shell
agents/<id>/ agent.go (reglas puras) + config.yaml + prompts/system.md
tools/ tool registry + tool implementations (subpackages)
internal/config/ schema.go + loader.go
cmd/launcher/ entrypoint principal (rulesRegistry)
cmd/agentctl/ CLI de gestion
dev-scripts/server/ start, stop, restart, ps, logs, dashboard
dev-scripts/agent/ new, register, verify, avatar, remove, list
```
## Reglas operativas
Guias detalladas en `.claude/rules/index.md`:
| Regla | Cuando |
|-------|--------|
| `create_agent.md` | Crear nuevo bot/agente |
| `create_tool.md` | Añadir tool para function calling |
| `create_command.md` | Añadir comando !xxx |
| `create_issue.md` | Crear issue en dev/issues/ |
| `fix_issue.md` | Implementar un issue existente |
## Agentes
| ID | LLM | Descripcion |
|----|-----|-------------|
| assistant-bot | GPT-4o | Asistente general, DMs |
| asistente-2 | GPT-4o | Asistente con tools |
## Build
- Go 1.23.5 (`/usr/local/go/bin`), siempre compilar con `-tags goolm`
- CGO_ENABLED=0 (pure-Go SQLite via modernc, shim en `cmd/launcher/sqlite.go`)
- Secrets via env vars (`.env.example`), nunca commitear `.env`
## Preferencias
- Espanol en configs/comentarios de dominio, ingles en codigo Go
- FP estricto, sin abstraccion prematura
- Trunk-based, Gitea como remote
- Arquitectura propia, sin frameworks de agentes externos
- Issues en `dev/issues/`, docs internas en `dev/README.md`