Saltar al contenido principal

Desarrollo local

Las tareas de un Playbook corren en tu máquina, en Claude Code, con el mismo plugin de instrumentación de producción. Fuera de Kadu ese plugin entra solo en modo de simulación (dry-run): todo lo que iría a la consola se imprime únicamente en la terminal.

Preparar​

Prerrequisitos: Claude Code, jq y curl en el PATH, y credenciales de prueba de los sistemas externos.

  1. Secrets de prueba. Copia la plantilla versionada y complétala:

    cp sandbox/.env.example sandbox/.env # sandbox/.env queda fuera de git
    set -a; source sandbox/.env; set +a

    No exportes GITHUB_ACTIONS: su ausencia es lo que mantiene la simulación activada.

  2. Plugins, en Claude Code. Instala el kadu (instrumentación) y los plugins de tu Playbook:

    /plugin marketplace add Kadu-Kobs/kadu-kobs-core
    /plugin install kadu@kadu-kobs-core

    /plugin marketplace add <dueño>/<tu-repositorio>
    /plugin install finance@<nombre-del-marketplace>

    El kadu-kobs-core es un repositorio de Kobana. Si el marketplace add no lo encuentra, pide acceso al soporte de Kobana. Lo que va después de la @ es el name del marketplace.json, y no el nombre del repositorio. Para iterar sobre el código local, agrega el marketplace por la ruta (/plugin marketplace add ./ en la raíz del repositorio).

Ejecutar una tarea​

Lánzala por el wrapper, como en producción:

/kadu:agent-run-task finance:task-baixar-pagamentos

O llama a la skill directamente (/finance:pagarme-atualizar-cadastro).

Qué observar:

  • Instrumentación simulada: cada evento, log, pendiente y el resultado aparecen en el stderr con el prefijo [dry-run POST ...] y se acumulan en $AGENT_MOCK_LOG (predeterminado /tmp/kadu_dryrun.ndjson), una línea JSON por llamada:

    jq . /tmp/kadu_dryrun.ndjson
  • Las llamadas externas son reales. ERP, gateway, emisor de facturas: nada de eso pasa por la simulación. Usa credenciales de prueba.

:::note Una skill nueva no aparece en la sesión en que se escribió Claude Code lee el catálogo de plugins al inicio de la sesión. Una skill recién creada responde Unknown skill aunque el SKILL.md esté en disco. Reinicia la sesión, o sigue el cuerpo del SKILL.md a mano, que es el mismo contenido. :::

Probar como CI​

La simulación ejercita el razonamiento de la skill. No ejercita la tubería de una ejecución de verdad: el runner, la resolución del plugin por el skill_slug, la entrega de los secrets de la lista de permitidos, el envío HTTP de la instrumentación y el enmascaramiento.

El repositorio de Kobana tiene un sandbox de CI para esto (sandbox/ci/), que vale la pena copiar: corre el workflow de ejecución localmente con act y apunta la instrumentación a un mock de la API de ingesta dentro del propio job.

./sandbox/ci/run.sh smoke finance:task-baixar-pagamentos
./sandbox/ci/run.sh live finance:task-baixar-pagamentos
smokelive
Llama al modelo de IAnosí (gasta tokens)
Ejecuta la skillno (un cuerpo de prueba fijo)sí
Efecto externoningunoreal
Pruebarunner, plugin, lista de permitidos, envío HTTP, enmascaramientola skill de punta a punta

:::danger El mock es obligatorio El plugin kadu decide entre simulación y envío real por la variable GITHUB_ACTIONS, y act la define. Un act ingenuo, apuntado a la consola de producción, graba ejecución, eventos y pendientes de verdad a partir de una prueba local. El sandbox aborta si la URL de la consola no es localhost. :::

El smoke reprueba el job cuando llega una llamada a una ruta que la ingesta no tiene, cuando falta autenticación, cuando no llega ningún evento, y cuando un valor de secret aparece en lo que recibió el mock (el canario del enmascaramiento).

El ciclo hasta producción​

#EtapaDóndeComandoQué prueba
1Escribir la skillrama local——
2SimulaciónClaude Code/kadu:agent-run-task <plugin>:<skill>el cuerpo de la skill
3Lint del workflowterminalactionlintel shell de los bloques run:
4Smoke de CIterminal./sandbox/ci/run.sh smoke <plugin>:<skill>runner, plugin, secrets, envío, enmascaramiento
5Live de CIterminal./sandbox/ci/run.sh live <plugin>:<skill>la skill de punta a punta, con efectos externos reales
6Merge a mainGitHub—deploy del código
7Sincronizaciónautomática, o Sincronizar—tarea creada o actualizada por el frontmatter
8SecretsConfiguración → Secrets—la ejecución recibe las variables de required_secrets
9Primer lanzamientoconsolaEjecutar ahorahistorial, logs, pendientes y resultado aparecen como se espera

Los pasos 2 y 4 se complementan, y ninguno sustituye al otro: la simulación ejercita la skill sin red hacia la consola; el smoke ejercita la tubería sin modelo de IA.