Pular para o conteúdo
Skillpedia
APIs e servidores (backend)48 mil · #2728

dbos-golang

Guia seu agente na criação de aplicativos Go confiáveis com DBOS. Ajuda a construir fluxos de trabalho duráveis e controlar a concorrência.

O que ela faz

Este guia ensina como criar programas de computador em Go que são confiáveis e não falham facilmente, usando uma tecnologia chamada DBOS. Ele ajuda a organizar o código em partes chamadas 'workflows' e 'steps'.

Quando usar

  • ✓Ao adicionar o DBOS a um projeto Go existente.
  • ✓Ao criar novas partes de um programa (workflows e steps).
  • ✓Ao usar filas para controlar quantas tarefas rodam ao mesmo tempo.

Exemplo do que pedir para a IA

“Como eu configuro o DBOS para meu aplicativo Go?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/dbos-golang/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/dbos-golang/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

O DBOS organiza seu código em 'workflows' (processos maiores) e 'steps' (tarefas menores dentro dos workflows). Ele garante que as tarefas sejam executadas de forma confiável, mesmo que algo dê errado.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill dbos-golang

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/dbos-golang/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Melhores Práticas do DBOS Go

Guia para construir aplicações Go confiáveis e tolerantes a falhas com fluxos de trabalho duráveis do DBOS.

Quando Usar

Consulte estas diretrizes quando:

  • Adicionar DBOS a código Go existente
  • Criar fluxos de trabalho e etapas
  • Usar filas para controle de concorrência
  • Implementar comunicação de fluxo de trabalho (eventos, mensagens, streams)
  • Configurar e iniciar aplicações DBOS
  • Usar o Cliente DBOS de aplicações externas
  • Testar aplicações DBOS

Categorias de Regras por Prioridade

Prioridade Categoria Impacto Prefixo
1 Ciclo de Vida CRÍTICO lifecycle-
2 Fluxo de Trabalho CRÍTICO workflow-
3 Etapa ALTO step-
4 Fila ALTO queue-
5 Comunicação MÉDIO comm-
6 Padrão MÉDIO pattern-
7 Teste BAIXO-MÉDIO test-
8 Cliente MÉDIO client-
9 Avançado BAIXO advanced-

Regras Críticas

Instalação

Instale o módulo DBOS Go:

go get github.com/dbos-inc/dbos-transact-golang/dbos@latest

Configuração e Lançamento do DBOS

Uma aplicação DBOS DEVE criar um contexto, registrar fluxos de trabalho e iniciar antes de executar quaisquer fluxos de trabalho:

package main

import (
	"context"
	"log"
	"os"
	"time"

	"github.com/dbos-inc/dbos-transact-golang/dbos"
)

func main() {
	ctx, err := dbos.NewDBOSContext(context.Background(), dbos.Config{
		AppName:     "my-app",
		DatabaseURL: os.Getenv("DBOS_SYSTEM_DATABASE_URL"),
	})
	if err != nil {
		log.Fatal(err)
	}
	defer dbos.Shutdown(ctx, 30*time.Second)

	dbos.RegisterWorkflow(ctx, myWorkflow)

	if err := dbos.Launch(ctx); err != nil {
		log.Fatal(err)
	}
}

Estrutura de Fluxo de Trabalho e Etapa

Fluxos de trabalho são compostos por etapas. Qualquer função que execute operações complexas ou acesse serviços externos deve ser executada como uma etapa usando dbos.RunAsStep:

func fetchData(ctx context.Context) (string, error) {
	resp, err := http.Get("https://api.example.com/data")
	if err != nil {
		return "", err
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	return string(body), nil
}

func myWorkflow(ctx dbos.DBOSContext, input string) (string, error) {
	result, err := dbos.RunAsStep(ctx, fetchData, dbos.WithStepName("fetchData"))
	if err != nil {
		return "", err
	}
	return result, nil
}

Restrições Chave

  • NÃO inicie ou enfileire fluxos de trabalho de dentro de etapas
  • NÃO use goroutines não controladas para iniciar fluxos de trabalho - use dbos.RunWorkflow com filas ou dbos.Go/dbos.Select para etapas concorrentes
  • Fluxos de trabalho DEVEM ser determinísticos - operações não determinísticas vão para as etapas
  • NÃO modifique variáveis globais de fluxos de trabalho ou etapas
  • Todos os fluxos de trabalho e filas DEVEM ser registrados antes de chamar Launch()

Como Usar

Leia os arquivos de regras individuais para explicações detalhadas e exemplos:

references/lifecycle-config.md
references/workflow-determinism.md
references/queue-concurrency.md

Referências

Limitações

  • Use esta habilidade apenas quando a tarefa corresponder claramente ao escopo descrito acima.
  • Não trate a saída como substituta para validação específica do ambiente, testes ou revisão especializada.
  • Pare e peça esclarecimentos se os inputs necessários, permissões, limites de segurança ou critérios de sucesso estiverem ausentes.
Perguntas frequentes

O que é um 'workflow'?

Um workflow é uma sequência de tarefas que juntas realizam uma operação maior e confiável.

O que é um 'step'?

Um step é uma unidade de trabalho menor dentro de um workflow. Tarefas que interagem com o mundo exterior ou são complexas devem ser steps.

Por que usar DBOS?

Para tornar seus programas Go mais robustos, garantindo que eles continuem funcionando mesmo em caso de falhas e que as tarefas sejam concluídas corretamente.

Detalhes

Descrição original do autor

Guide for building reliable, fault-tolerant Go applications with DBOS durable workflows. Use when adding DBOS to existing Go code, creating workflows and steps, or using queues for concurrency control.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2728
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas