Lógica determinista
TypeScript puro. Entrada y salida tipadas. La columna vertebral aburrida y predecible de cada workflow — fetches, transformaciones, ramificaciones, paralelismo, reintentos.
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"}'
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.
TypeScript puro. Entrada y salida tipadas. La columna vertebral aburrida y predecible de cada workflow — fetches, transformaciones, ramificaciones, paralelismo, reintentos.
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.
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.
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.
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,
}),
],
})
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.
skelmMeta-paquete — instala este. Re-exporta @skelm/core e incluye el binario de la CLI skelm.
@skelm/coreRuntime, tipos, builders, modelo de permisos y bus de eventos. El sustrato sobre el que corre cada workflow.
@skelm/cliPrimitivas de la CLI — parser, comandos, punto de entrada programático. Conduce `skelm init`, `skelm run`, `skelm schedule`.
@skelm/gatewayOrquestador de larga duración: superficie HTTP + SSE, registries, log de auditoría, proxy de red, ciclo de vida de agentes.
@skelm/schedulerTriggers — cron, intervalo, webhook, poll, queue. Cada ejecución de workflow es un schedule.
@skelm/integrationsConectores tipados para GitHub, Slack, Telegram, Jira y compañía.
@skelm/opencodeBackend de coding-agent Opencode.ai con cumplimiento total de permisos.
@skelm/piBackend de coding-agent Pi (Claude Code) con cumplimiento total de permisos.
@skelm/vercel-aiEnvuelve cualquier modelo del Vercel AI SDK bajo la política de permisos de skelm.
@skelm/metricsMétricas en formato Prometheus para los streams de eventos de skelm.
@skelm/otelTrazas OpenTelemetry para los streams de eventos de skelm.
Instala la CLI y ten tu primer pipeline corriendo en menos de un minuto.