> For the complete documentation index, see [llms.txt](https://docs.skail.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.skail.dev/comece-aqui/conheca-o-skail.md).

# Conheça o skail

Seu código continua rodando mesmo se o resto falhar. Com resiliência, observabilidade e Time Travel Debug, sem montar fila, cron nem tabela de estado.

## Comece agora

Escolha sua linguagem. A escolha vale para todos os exemplos da doc.

{% tabs %}
{% tab title="C#" %}

#### No terminal

Baixe o template em [github.com/skaildev](https://github.com/skaildev/.github/tree/main/Templates/DotNet) e crie o projeto:

```bash
dotnet new install SkailHQ.ApplicationTemplate.CSharp.1.0.0.nupkg
dotnet new skail -n MeuFluxo
```

Depois, siga o [Quickstart](/comece-aqui/quickstart.md) para rodar o primeiro fluxo e ver a execução no Monitor.

#### Com seu agente de IA

{% prompt description="Primeiro fluxo skail em C#" icon="sparkles" openInAIProviders="true" defaultExpanded="full" %}

```markdown
Crie meu primeiro fluxo skail em C#: uma função que chama uma API, espera 1 minuto e chama de novo. Depois me mostre como derrubar o processo durante a espera e ver a execução continuar no Monitor. Use a doc em docs.skail.dev/llms.txt.
```

{% endprompt %}
{% endtab %}

{% tab title="TypeScript" %}

#### No terminal

Crie um projeto Node.js com TypeScript e adicione os pacotes `@skail/runtime` e `@skail/build`. O [Quickstart](/comece-aqui/quickstart.md) mostra o host, o build e como rodar o primeiro fluxo.

#### Com seu agente de IA

{% prompt description="Primeiro fluxo skail em TypeScript" icon="sparkles" openInAIProviders="true" defaultExpanded="full" %}

```markdown
Crie meu primeiro fluxo skail em TypeScript: uma função que chama uma API, espera 1 minuto e chama de novo. Depois me mostre como derrubar o processo durante a espera e ver a execução continuar no Monitor. Use a doc em docs.skail.dev/llms.txt.
```

{% endprompt %}
{% endtab %}
{% endtabs %}

Java, Python e outras linguagens estão a caminho.

{% columns %}
{% column %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3><i class="fa-bolt" style="color:$primary;">:bolt:</i></h3></td><td><strong>Quickstart</strong></td><td>Seu primeiro fluxo rodando na sua máquina, disparado pela API e visto no Monitor.</td><td><a href="/comece-aqui/quickstart.md">Quickstart (10 min)</a></td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3><i class="fa-gears" style="color:$primary;">:gears:</i></h3></td><td><strong>Como funciona</strong></td><td>Functions, commands e replay explicados em uma página.</td><td><a href="/comece-aqui/como-funciona.md">Como funciona</a></td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3><i class="fa-sparkles" style="color:$primary;">:sparkles:</i></h3></td><td><strong>Use com IA</strong></td><td>Cursor, GitHub Copilot e Claude Code escrevendo código skail correto.</td><td><a href="/comece-aqui/use-com-ia.md">Use com IA</a></td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3><i class="fa-code" style="color:$primary;">:code:</i></h3></td><td><strong>Referência</strong></td><td>Os SDKs e a API HTTP.</td><td><a href="/referencia/sdk-typescript-e-outras-linguagens.md">SDKs e linguagens</a></td></tr></tbody></table>
{% endcolumn %}
{% endcolumns %}

## Assim é o código

{% tabs %}
{% tab title="C#" %}

```csharp
[SkailFunction]
public async SkailTask ProcessarPedido(Guid pedidoId)
{
    await ReservarEstoque(pedidoId);                // executa e grava o resultado
    await SkailTask.Delay(TimeSpan.FromHours(24));  // espera 24 h sem segurar servidor
    await CobrarCartao(pedidoId);                   // se falhar, o skail tenta de novo
}
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
@SkailFunction()
async processarPedido(pedidoId: string): Promise<void> {
  await this.reservarEstoque(pedidoId);   // executa e grava o resultado
  await Skail.delayMinutes(24 * 60);      // espera 24 h sem segurar servidor
  await this.cobrarCartao(pedidoId);      // se falhar, o skail tenta de novo
}
```

{% endtab %}
{% endtabs %}

Se o processo cair no meio das 24 horas, a execução continua na cobrança quando ele voltar. Sem fila, sem cron e sem tabela de estado.

## A plataforma

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3><i class="fa-rotate-right" style="color:$primary;">:rotate-right:</i></h3></td><td><strong>Execução durável</strong></td><td>Se o processo cair, a execução continua do ponto onde parou.</td><td><a href="/construa/conceitos/execucao-duravel.md">Execução durável</a></td></tr><tr><td><h3><i class="fa-stopwatch" style="color:$primary;">:stopwatch:</i></h3></td><td><strong>Esperas e eventos</strong></td><td>Espere minutos ou meses por um webhook ou uma aprovação, sem segurar servidor.</td><td><a href="/construa/conceitos/hibernacao-e-retomada.md">Hibernação e retomada</a></td></tr><tr><td><h3><i class="fa-arrows-repeat" style="color:$primary;">:arrows-repeat:</i></h3></td><td><strong>Retries</strong></td><td>Se uma API falhar, o skail tenta de novo sem repetir o que já deu certo.</td><td><a href="/construa/conceitos/retries-e-idempotencia.md">Retries e idempotência</a></td></tr><tr><td><h3><i class="fa-wave-pulse" style="color:$primary;">:wave-pulse:</i></h3></td><td><strong>Monitor</strong></td><td>Veja cada passo da execução, com argumentos, resultado e tentativas.</td><td><a href="/referencia/portal/monitor.md">Monitor</a></td></tr><tr><td><h3><i class="fa-clock-rotate-left" style="color:$primary;">:clock-rotate-left:</i></h3></td><td><strong>Time Travel Debug</strong></td><td>Reproduza uma execução de produção, passo a passo, na sua IDE.</td><td><a href="/construa/como-fazer/depurar-com-time-travel-debug.md">Depurar com Time Travel Debug</a></td></tr><tr><td><h3><i class="fa-flask" style="color:$primary;">:flask:</i></h3></td><td><strong>Testes</strong></td><td>Teste functions e commands sem conectar ao skail, com o skail simulado em memória.</td><td><a href="/construa/como-fazer/testar-seus-fluxos.md">Testar seus fluxos</a></td></tr></tbody></table>

## Casos de uso

Fluxos completos, com código nas duas linguagens, para copiar e adaptar. [Ver os 7 casos →](/construa/casos-de-uso.md)

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Aprovação com prazo</strong></td><td>Espera a decisão de uma pessoa e segue sozinho se o prazo vencer.</td><td><code>WaitForEvent · WhenAny</code></td><td><a href="/construa/casos-de-uso/aprovacao-com-prazo.md">Aprovação com prazo</a></td></tr><tr><td><strong>Cobrança e recorrência</strong></td><td>Cobrança com novas tentativas, recorrência, período de graça, estorno e split de pagamento.</td><td><code>Delay · Retries</code></td><td><a href="/construa/casos-de-uso/cobranca-recorrencia-e-split-de-pagamento.md">Cobrança, recorrência e split de pagamento</a></td></tr><tr><td><strong>Agente de IA com ferramentas</strong></td><td>O agente usa ferramentas para reunir os dados e espera a revisão humana quando precisa.</td><td><code>Commands · WaitForEvent</code></td><td><a href="/construa/casos-de-uso/agente-de-ia-com-ferramentas.md">Agente de IA com ferramentas</a></td></tr><tr><td><strong>Pedido com estoque e aprovação</strong></td><td>Reserva o estoque, espera o gerente com lembrete e prazo, fatura e desfaz o que foi feito se o pedido for cancelado.</td><td><code>WhenAny · Saga</code></td><td><a href="/construa/casos-de-uso/pedido-com-estoque-aprovacao-e-faturamento.md">Pedido com estoque, aprovação e faturamento</a></td></tr><tr><td><strong>Emissão de nota fiscal</strong></td><td>Emite a NFS-e, recebe o retorno por webhook ou consulta e pede revisão manual quando demora.</td><td><code>WaitForEvent · Polling</code></td><td><a href="/construa/casos-de-uso/emissao-de-nota-fiscal.md">Emissão de nota fiscal</a></td></tr><tr><td><strong>Modernizar um sistema legado</strong></td><td>Coloca no skail o fluxo que quebra no meio, sem reescrever o sistema.</td><td><code>Commands</code></td><td><a href="/construa/casos-de-uso/modernizar-um-sistema-legado.md">Modernizar um sistema legado</a></td></tr></tbody></table>

## Linguagens e onde roda

{% columns %}
{% column %}

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>C#</strong></td><td>.NET 8 ou superior</td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>TypeScript</strong></td><td>Node.js</td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>API HTTP</strong></td><td>Qualquer sistema dispara funções e eventos</td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Java, Python e outras</strong></td><td>A caminho</td></tr></tbody></table>
{% endcolumn %}
{% endcolumns %}

* O runtime roda dentro do processo da sua aplicação, na sua infraestrutura.

## Para agentes de IA

A doc inteira pode ser lida e consultada pelo seu agente.

{% columns %}
{% column %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>MCP da doc</strong></td><td>Busca e leitura das páginas no Claude Code, Cursor e VS Code.</td><td><code>docs.skail.dev/~gitbook/mcp</code></td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>llms.txt</strong></td><td>O índice de todas as páginas, no formato que os agentes leem.</td><td><code>docs.skail.dev/llms.txt</code></td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Arquivo de regras</strong></td><td>Regras do skail para o agente gerar código correto desde o início.</td><td><code>CLAUDE.md · .cursorrules</code></td></tr></tbody></table>
{% endcolumn %}

{% column %}

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Markdown</strong></td><td>Qualquer página em texto puro, acrescentando .md ao endereço.</td><td><code>…/quickstart.md</code></td></tr></tbody></table>
{% endcolumn %}
{% endcolumns %}
