Skip to content
@skailhq

skail

seu sistema à prova de falhas e pronto para qualquer volume, sem mudar seu jeito de desenvolver

🇧🇷 Português · 🇺🇸 English

skail

License: MIT Docs Site

Plataforma de execução durável. Tolerância a falhas sem PhD em sistemas distribuídos.

Escreva código como se falhas não existissem. Cada await vira um checkpoint durável — crash, retry, deploy, reboot — a execução retoma exatamente de onde parou.

[SkailFunction]
public async SkailTask ProcessarPedidoAsync(Guid pedidoId)
{
    try
    {
        await ReservarEstoqueAsync(pedidoId);
        var pagamento = await CobrarPagamentoAsync(pedidoId);

        if (pagamento.Aprovado)
        {
            await EmitirNotaFiscalAsync(pedidoId);
            await NotificarPedidoConcluidoAsync(pedidoId);
        }
    }
    catch (Exception ex)
    {
        // Saga: desfaz os passos anteriores
        await EstornarPagamentoAsync(pedidoId);
        await LiberarEstoqueAsync(pedidoId);
        await NotificarPedidoComFalhaAsync(pedidoId, ex.Message);
    }
}

Saga durável em try/catch nativo. Sem classe Saga, sem state machine, sem framework dedicado. Se o servidor cair entre CobrarPagamentoAsync e EmitirNotaFiscalAsync, a execução retoma em EmitirNotaFiscalAsync quando o servidor voltar.

O que muda na prática

Sem skail, uma saga dessas precisa de:

MassTransit/NServiceBus saga         → classe de state machine
Polly retry policies                 → config por chamada externa
Hangfire/Quartz                      → timer pra agendar retentativa
Dead letter queue                    → tratamento de falha irrecuperável
Datadog/ELK                          → observabilidade customizada
──────────────────────────────────────
~400 linhas de infraestrutura por fluxo

Com skail: try/catch. 35 linhas. O atributo [SkailFunction] entrega o resto.

Agentes IA duráveis

Cada tool call de um agente IA é um checkpoint. Crash no meio de uma cadeia de 47 tool calls? O skail retoma da tool call 48 — sem re-executar as 47 anteriores.

[SkailFunction]
public async Task<string> RunAgentAsync(string prompt)
{
    var ctx = new AgentContext(prompt);

    // cada tool call vira um checkpoint durável
    while (!ctx.IsDone)
    {
        var action = await Llm.DecideAsync(ctx);
        var result = await Tool.RunAsync(action);

        // crash aqui? retoma do último checkpoint
        ctx = ctx.With(action, result);
    }

    return ctx.FinalAnswer;
}

O que está embutido

Execução durável — cada step é checkpoint. Crash, deploy, reboot: retoma de onde parou. Sem banco de estado, sem fila, sem framework.

Retry automático — SefaZ fora do ar? O skail retoma quando ela voltar. Sem Polly, sem dead letter queue. Basta escrever await notaFiscalSrv.EmitirAsync(pedido) — a resiliência é nativa.

Time Travel Debug — reproduza qualquer execução com o estado exato de produção. Rode só o passo que falhou, com os dados reais daquele momento. Sem tentar reproduzir o bug num ambiente diferente.

Monitor — cada função vira uma árvore de execução. Cada passo, cada retry, input e output — tudo na timeline. Sem instrumentar código, sem Datadog custom.

Zero mudança de paradigma[SkailFunction] num método, [SkailCommand] na classe. Seu C# continua C#. Sem DSL, sem JSON de configuração, sem linguagem nova.

Quick start

dotnet new skail-app -n MeuProjeto
cd MeuProjeto && dotnet run
curl -X POST "${SKAIL_BASE_URL}/api/v1/trigger/meu-projeto/v1/ProcessarPedido/$(uuidgen)" \
  -H "Authorization: Bearer ${SKAIL_KEY}" -H "Skail-namespace: ${SKAIL_NAMESPACE}" \
  -d '["pedido-001"]'

Acompanhe no Monitor: cada passo, cada retry, input e output na timeline.

Exemplos

Padrão O que mostra
saga-compensation Saga com compensação automática via try/catch nativo
billing-retry Retry automático em falha externa + Delay de 24h sem cron
webhook-bridge Hibernação durável esperando sinal externo via WaitForEvent
human-approval Aprovação humana com prazo: WhenAny(WaitForEvent, Delay)
polling-timeout Operação externa lenta vs. deadline — WhenAny por referência
hello-world A menor função durável possível

Cada exemplo compila e roda. Copie, cole, dotnet run.

Linguagens

C# (.NET 8+) hoje · qualquer linguagem via REST. Dois endpoints HTTP, três cabeçalhos — Node, Python, Go, Java, Delphi, Ruby, qualquer sistema que faz POST. Detalhes em llms.txt.

Mais

  • Docs — getting started, padrões, referência de API
  • llms.txt — referência condensada para Claude, Cursor, Copilot

Em produção: Nota Gateway (milhões de transações fiscais/mês).

freedom to scale.

Popular repositories Loading

  1. rfc7807 rfc7807 Public

    Forked from longkai/rfc7807

    The Go implementation of Problem Details for HTTP APIs, defined in https://tools.ietf.org/html/rfc7807

    Go

  2. gokv gokv Public

    Forked from philippgille/gokv

    Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more)

    Go

  3. ttlcache ttlcache Public

    Forked from jellydator/ttlcache

    An in-memory string-interface{} map with various expiration options for golang

    Go

  4. consul-discovery consul-discovery Public

    Forked from drnic/consul-discovery

    Go package is a service discovery client for Consul

    Go

  5. Core Core Public

    Forked from castleproject/Core

    Castle Core, including Castle DynamicProxy, Logging Services and DictionaryAdapter

    C#

  6. eShopOnWeb eShopOnWeb Public

    Forked from dotnet-architecture/eShopOnWeb

    Sample ASP.NET Core 6.0 reference application, powered by Microsoft, demonstrating a layered application architecture with monolithic deployment model. Download the eBook PDF from docs folder.

    C#

Repositories

Showing 10 of 11 repositories

Top languages

Loading…

Most used topics

Loading…