Código abierto · MIT · TypeScript

skelm — workflows seguros y agénticos que corren donde corra Node

Construye orquestaciones tipadas que combinan código determinista, llamadas a LLM y bucles de agentes completos bajo un único modelo de ejecución default-deny. Prográmalas en cron, detrás de un webhook, o ejecútalas dentro de un gateway de larga duración.

$ npm install -g skelm
$ skelm init my-bot && cd my-bot && npm install
$ skelm run workflows/hello.workflow.ts --input '{"name":"world"}'

Tres tipos de pasos. Ninguno envuelve a otro.

Un workflow es un módulo de TypeScript hecho de tres primitivas componibles — usa la herramienta correcta para cada paso en lugar de forzar todo a través de una única abstracción.

code()

Lógica determinista

TypeScript puro. Entrada y salida tipadas. La columna vertebral aburrida y predecible de cada workflow — fetches, transformaciones, ramificaciones, paralelismo, reintentos.

llm()

Inferencia de un solo disparo

Una llamada al modelo con un prompt tipado y una respuesta tipada. Sin bucle de herramientas ni iteraciones inesperadas — útil cuando quieres juicio del LLM pero no agencia del LLM.

agent()

Bucles de agente multi-turno

Bucles agénticos completos con herramientas, servidores MCP y skills en Markdown. Soporta Opencode, Claude Code, OpenAI, Anthropic, Pi o tu propio proveedor — todos bajo permisos default-deny.

Seguridad default-deny

Los permisos son parte de la API, no una ocurrencia tardía

Cada paso de tipo agent declara las herramientas, servidores MCP, hosts de red y raíces del sistema de archivos que puede usar. Cualquier cosa no declarada se deniega al iniciar el paso.

  • Un proxy CONNECT embebido refuerza el egreso de red para cada subproceso de agente — las llamadas salientes a hosts no declarados se bloquean en el proxy.
  • Workspaces de sistema de archivos por agente — bloqueados, persistentes o efímeros, sin corrupción entre pasos.
  • Log de auditoría a prueba de manipulación, encadenado por hash, de cada decisión que toma el gateway.
  • Un backend que no pueda hacer cumplir un permiso declarado falla al iniciar el paso en lugar de saltárselo.

Un workflow real, de principio a fin

Triaje de un issue de GitHub con un paso agent que sigue un skill en Markdown — y una política de permisos que deniega la red.

import { agent, pipeline } from 'skelm'
import { z } from 'zod'

export default pipeline({
  id: 'triage-issue',
  input:  z.object({ title: z.string(), body: z.string() }),
  output: z.object({ label: z.string(), reasoning: z.string() }),
  steps: [
    agent({
      id: 'classify',
      backend: 'pi',
      skills: ['triage-guide'],
      prompt: (ctx) => `Triage this issue:\nTitle: ${ctx.input.title}\n${ctx.input.body}`,
      permissions: {
        allowedSkills: ['triage-guide'],
        networkEgress: 'deny',
      },
      output: z.object({ label: z.string(), reasoning: z.string() }),
      maxTurns: 3,
    }),
  ],
})

Paquetes

skelm se distribuye como un conjunto reducido de paquetes enfocados. Instala el meta-paquete skelm — todo lo de abajo viene incluido, y vas activando lo demás según lo necesites.

skelm

Meta-paquete — instala este. Re-exporta @skelm/core e incluye el binario de la CLI skelm.

@skelm/core

Runtime, tipos, builders, modelo de permisos y bus de eventos. El sustrato sobre el que corre cada workflow.

@skelm/cli

Primitivas de la CLI — parser, comandos, punto de entrada programático. Conduce `skelm init`, `skelm run`, `skelm schedule`.

@skelm/gateway

Orquestador de larga duración: superficie HTTP + SSE, registries, log de auditoría, proxy de red, ciclo de vida de agentes.

@skelm/scheduler

Triggers — cron, intervalo, webhook, poll, queue. Cada ejecución de workflow es un schedule.

@skelm/integrations

Conectores tipados para GitHub, Slack, Telegram, Jira y compañía.

@skelm/opencode

Backend de coding-agent Opencode.ai con cumplimiento total de permisos.

@skelm/pi

Backend de coding-agent Pi (Claude Code) con cumplimiento total de permisos.

@skelm/vercel-ai

Envuelve cualquier modelo del Vercel AI SDK bajo la política de permisos de skelm.

@skelm/metrics

Métricas en formato Prometheus para los streams de eventos de skelm.

@skelm/otel

Trazas OpenTelemetry para los streams de eventos de skelm.

¿Listo para enviar un workflow?

Instala la CLI y ten tu primer pipeline corriendo en menos de un minuto.