From 9e6d831ea9e0eba7651d1d7659a17ff006ddd4f7 Mon Sep 17 00:00:00 2001 From: Enmanuel Date: Thu, 9 Apr 2026 20:36:45 +0000 Subject: [PATCH] docs: actualizar skills /create-bot y /create-agent con nuevos scripts - /create-bot: usa create-full.sh --type robot (pipeline de 6 pasos) - /create-agent: documenta --type robot y notificacion a developers - Referencia actualizada: agents/test-bot/ como ejemplo de robot Co-Authored-By: Claude Opus 4.6 (1M context) --- .claude/skills/create-agent/SKILL.md | 10 +++- .claude/skills/create-bot/SKILL.md | 72 ++++++++-------------------- 2 files changed, 29 insertions(+), 53 deletions(-) diff --git a/.claude/skills/create-agent/SKILL.md b/.claude/skills/create-agent/SKILL.md index e7d64d3..05714e6 100644 --- a/.claude/skills/create-agent/SKILL.md +++ b/.claude/skills/create-agent/SKILL.md @@ -37,15 +37,23 @@ Si `$ARGUMENTS` contiene el agent-id, usarlo directamente: `$0` = agent-id, `$1` ### Paso 2: Ejecutar pipeline de scaffold +Para **agentes** (con LLM): ```bash ./dev-scripts/agent/create-full.sh "" ``` -Este script ejecuta 4 etapas: +Para **robots** (command-only, sin LLM): +```bash +./dev-scripts/agent/create-full.sh "" --type robot +``` + +El script ejecuta automaticamente: 1. **Scaffold**: copia `_template/`, personaliza archivos, actualiza launcher 2. **Build**: compila con `go build -tags goolm ./...` 3. **Register**: crea usuario Matrix, genera token + password + pickle key 4. **Verify E2EE**: genera cross-signing keys, recovery key +5. **(robots)** **Convert**: convierte a robot (config minimo, sin prompts, `command_prefix: ""`) +6. **Notify**: envia DM a los developers (`DEVELOPER_MATRIX_USERS` en `.env`) presentandose Si alguna etapa falla, revisar el error y corregir antes de continuar. diff --git a/.claude/skills/create-bot/SKILL.md b/.claude/skills/create-bot/SKILL.md index dca50ac..4adc2fe 100644 --- a/.claude/skills/create-bot/SKILL.md +++ b/.claude/skills/create-bot/SKILL.md @@ -2,7 +2,7 @@ name: create-bot description: > Crear un nuevo robot Matrix (command-only, sin LLM). Ejecuta el pipeline - scaffold + build + register + verify, luego personaliza config.yaml y + scaffold + build + register + verify + convert + notify, luego personaliza comandos custom segun los inputs del usuario. allowed-tools: Bash Read Write Edit Grep Glob Agent argument-hint: " [display-name]" @@ -34,60 +34,27 @@ Si `$ARGUMENTS` contiene el bot-id, usarlo directamente: `$0` = bot-id, `$1` = d 2. Verificar que no existe `agents//` 3. Si faltan inputs, preguntar al usuario -### Paso 2: Ejecutar pipeline de scaffold +### Paso 2: Ejecutar pipeline completo ```bash -./dev-scripts/agent/create-full.sh "" +./dev-scripts/agent/create-full.sh "" --type robot ``` -Este script ejecuta 4 etapas: scaffold → build → register Matrix → verify E2EE. +Este script ejecuta 6 etapas automaticamente: +1. **Scaffold**: crea agent.go, config.yaml, prompts/ desde template +2. **Build**: verifica compilacion con `-tags goolm` +3. **Register**: registra usuario Matrix, genera token + password + pickle key +4. **Verify E2EE**: genera cross-signing keys + recovery key +5. **Convert**: convierte a robot (config minimo, sin prompts, sin LLM, `command_prefix: ""`) +6. **Notify**: envia DM a los developers (DEVELOPER_MATRIX_USERS) presentandose + Si alguna etapa falla, revisar el error y corregir antes de continuar. -### Paso 3: Convertir a robot +### Paso 3: Personalizar config -El scaffold crea un agente por defecto. Convertirlo a robot: - -#### 3.1 Reemplazar `agents//agent.go` - -```go -package // sin guiones ni _bot: "ping-bot" → package ping - -import ( - "github.com/enmanuel/agents/agents" - "github.com/enmanuel/agents/pkg/decision" -) - -func init() { - agents.Register("", Rules) -} - -// Rules returns nil — robots don't use decision rules. -// All behavior is via RegisterCommand in the launcher. -func Rules() []decision.Rule { - return nil -} -``` - -Package name = bot-id sin guiones ni `_bot` (ej: `ping-bot` → `package ping`). - -#### 3.2 Reemplazar `agents//config.yaml` - -Consultar [templates/config.yaml.md](templates/config.yaml.md) para el template base. - -Ajustes obligatorios: -- `agent.id`: debe coincidir con el nombre del directorio -- `agent.type: robot` (CRITICO — sin esto se lanza como agent completo) +Editar `agents//config.yaml`: - `agent.description`: la descripcion del usuario -- `personality.prefix`: emoji representativo del bot -- Env vars: normalizar bot-id → mayusculas, guiones → underscores (NUNCA eliminar sufijos) - -#### 3.3 Eliminar `agents//prompts/system.md` - -Los robots no necesitan system prompt. Eliminar el directorio prompts/ completo: - -```bash -rm -rf agents//prompts/ -``` +- `personality.prefix`: emoji representativo del bot (opcional) ### Paso 4: Crear comandos custom (si el usuario los pidio) @@ -133,7 +100,7 @@ Luego registrar en `cmd/launcher/main.go` despues de `agents.NewRobot()`: ```go if cfg.Agent.ID == "" { for _, cmd := range .Commands() { - r.RegisterCommand(cmd.Spec, cmd.Handler) + robot.RegisterCommand(cmd.Spec, cmd.Handler) } } ``` @@ -153,7 +120,7 @@ Verificar y reportar al usuario: - [ ] `go build -tags goolm ./...` compila sin errores - [ ] `agents//agent.go` exporta `Rules()` que retorna `nil` - [ ] `agents//config.yaml` tiene `agent.type: robot` y `agent.id` coincide con directorio -- [ ] `cmd/launcher/main.go` tiene blank import del paquete del bot +- [ ] `cmd/launcher/main.go` tiene import del paquete del bot - [ ] `.env` contiene las 4 env vars: `MATRIX_TOKEN_`, `MATRIX_PASSWORD_`, `PICKLE_KEY_`, `SSSS_RECOVERY_KEY_` - [ ] No existe `agents//prompts/` (robots no necesitan system prompt) - [ ] Si tiene comandos custom, estan registrados en el launcher @@ -163,11 +130,11 @@ Informar al usuario: Robot creado. Para arrancar: ./dev-scripts/server/start.sh -Comandos built-in: !help, !ping, !status, !info, !version +Comandos built-in: help, ping, status, info, version Comandos custom: +(Sin prefijo ! — el robot acepta comandos directamente) Archivos a revisar: - agents//agent.go — reglas (nil para robots) agents//config.yaml — configuracion agents//commands.go — comandos custom (si aplica) ``` @@ -183,6 +150,7 @@ Archivos a revisar: | Reglas | Si (agent.go con Rules) | nil | | Tools | Opcionales | No | | Memoria/Knowledge | Opcionales | No | +| Prefijo comandos | `!` (obligatorio) | `""` (sin prefijo por defecto) | | Comandos built-in | help, ping, tools, tool, status, info, clear, prompts, version | help, ping, status, info, version | ## Notas importantes @@ -191,5 +159,5 @@ Archivos a revisar: - **Nunca commitear tokens ni passwords** — van en `.env` - **Homeserver**: `https://matrix-af2f3d.organic-machine.com` - **Server name**: `matrix-af2f3d.organic-machine.com` -- Referencia de robot existente: `agents/_template_robot/` +- Referencia de robot existente: `agents/test-bot/` - El bot-id DEBE coincidir entre directorio, config.yaml y `agents.Register()`