Pular para o conteúdo
Skillpedia
Agentes70 mil · #1723

dag-library

Permite que seu agente salve e reutilize fluxos de trabalho complexos. É útil para agendar tarefas repetitivas ou quando você quer executar um plano já definido.

O que ela faz

Esta ferramenta permite que você salve a definição de um 'grafo' de tarefas (chamado DAG) para usá-lo novamente mais tarde. Em vez de descrever o grafo toda vez, você o salva com um nome e o executa por esse nome.

Quando usar

  • ✓Quando você quer salvar um grafo de tarefas para reutilizar.
  • ✓Quando você precisa executar o mesmo grafo de tarefas várias vezes.
  • ✓Quando você quer agendar a execução repetida de um fluxo de trabalho complexo.

Exemplo do que pedir para a IA

“Salve este grafo de tarefas como 'auditoria-mensal' e execute-o.”

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/code-yeongyu/oh-my-openagent/blob/dev/packages/omo-senpi/skills/dag-library/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/code-yeongyu/oh-my-openagent/blob/dev/packages/omo-senpi/skills/dag-library/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Você salva a definição do grafo em um arquivo especial. Depois, pode pedir para a IA executar o grafo usando o nome que você deu a ele. A IA encontra o arquivo e executa as tarefas na ordem definida.

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 code-yeongyu/oh-my-openagent --skill dag-library

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/packages/omo-senpi/skills/dag-library/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.

dag-library

Use esta habilidade quando o usuário quiser GUARDAR uma definição de DAG e executá-la novamente mais tarde — o grafo é um ativo, não algo de uso único. Para criar um grafo totalmente novo, leia mass-ulw primeiro; esta habilidade cobre a parte de armazenamento e reexecução.

A estrutura

Uma definição armazenada é um arquivo JSON de definição de DAG simples chamado <name>.json em um dos diretórios da biblioteca. O primeiro a ser encontrado vence:

  1. $OMO_DAG_LIBRARY (múltiplos diretórios, separados por : — ou por ; no Windows, para que caminhos com letras de unidade sobrevivam)
  2. $PWD/.omo/dags
  3. $HOME/.omo/dags
{
  "key": "nightly-audit",
  "name": "Nightly audit",
  "nodes": [
    { "id": "audit", "category": "unspecified-low", "prompt": "Audit docs/ for stale claims; write findings to /tmp/audit-{{key}}.md." },
    { "id": "verify", "category": "quick", "prompt": "Verify each finding in /tmp/audit-{{key}}.md against src/.", "dependsOn": ["audit"] }
  ]
}

Valores de string podem conter placeholders, preenchidos no momento do carregamento: {{key}} (a chave rotacionada final — use-a em caminhos de arquivo para que as reexecuções nunca se sobreponham), {{date}} (UTC AAAA MM DD), {{datetime}} (UTC AAAA MM DD-HHmmss). Os prompts dos nós ainda devem ser autônomos: dependsOn é apenas para ordenação, então passe dados entre os nós através de arquivos, exatamente como em mass-ulw.

Executando — célula de avaliação JS, duas linhas

A extensão publica library.js ao lado de sdk.js em OMO_DAG_SDK_ROOT:

const lib = await import(`${env("OMO_DAG_SDK_ROOT")}/library.js`)
const run = await lib.start("nightly-audit")
const result = await run.done()

await lib.load(name) retorna a definição preenchida sem iniciá-la; await lib.start(name) carrega e inicia em uma única chamada e retorna a mesma forma de handle que sdk.start (run_id, done(), cancel(reason)). Ambos são assíncronos — o global read do kernel é assíncrono, então nunca os chame sem aguardar.

Rotação de chave — a única regra que importa

O motor DAG baseia a idempotência em key + impressão digital do grafo: reiniciar a mesma chave com o mesmo grafo REUTILIZA a execução antiga em vez de executar novamente. Portanto, a biblioteca trata o key armazenado como uma chave BASE e o rotaciona a cada carregamento:

  • lib.start("nightly-audit") → a chave se torna nightly-audit-<UTC YYYYMMDD-HHmmss>: cada chamada é uma nova execução. Este é o padrão porque querer uma nova execução é o caso comum.
  • lib.start("nightly-audit", { suffix: "20260818" }) → a chave se torna nightly-audit-20260818: sufixo explícito, então reexecutar a mesma execução lógica a reutiliza (recuperação idempotente), enquanto um novo dia obtém uma nova execução. Recuperar um nó FALHO dentro de tal execução é retry/amend nesse ID de execução, não um novo sufixo.
  • lib.start("nightly-audit", { suffix: "" }) → a chave permanece nightly-audit: idempotência total; só use isso quando reutilizar o resultado anterior for exatamente o que você deseja.

Células Python

Python não pode importar a biblioteca ESM. Reproduza a mesma semântica com dicionários simples — leia o arquivo, rotacione a chave, preencha os placeholders, chame tool.workflow:

import json
from datetime import datetime, timezone
defn = json.loads(read(f"{env('HOME')}/.omo/dags/nightly-audit.json"))
stamp = datetime.now(timezone.utc).strftime("%Y%m%d-%H%M%S")
defn["key"] = f"{defn['key']}-{stamp}"
text = json.dumps(defn).replace("{{key}}", defn["key"]).replace("{{date}}", stamp[:8]).replace("{{datetime}}", stamp)
run = tool.workflow({"action": "start", "definition": json.loads(text)})
result = tool.workflow({"action": "wait", "run_id": run["run_id"], "detach": False})  # detach=False keeps the cell-blocking wait; the bare tool action detaches against a live run

Salvando uma nova definição

Quando o usuário pede para salvar o grafo atual: escreva-o como <name>.json em $HOME/.omo/dags (nível do usuário, sobrevive a mudanças de cwd) ou <repo>/.omo/dags (nível do projeto, compartilhável via git se a equipe o confirmar), então confirme executando-o uma vez via lib.start. Nomes são letras, dígitos, ponto, traço, sublinhado — a biblioteca rejeita nomes em formato de caminho.

Perguntas frequentes

Onde os grafos são salvos?

Os grafos são salvos em pastas específicas no seu computador, como '$HOME/.omo/dags' ou em uma pasta '.omo/dags' dentro do seu projeto atual.

Como a IA sabe qual grafo executar?

Você diz o nome do grafo que salvou. A IA procura esse nome nos locais onde os grafos são armazenados e executa o que foi definido.

Posso modificar um grafo salvo?

Este skill foca em salvar e executar. Para criar ou modificar um grafo do zero, você pode precisar de outra ferramenta, como 'mass-ulw'.

Detalhes

Descrição original do autor

Stores a DAG definition once and re-runs it by name, instead of pasting the definition into every run. Use when the user wants to save a DAG, run a saved one, or schedule the same multi-agent graph repeatedly.

repo: code-yeongyu/oh-my-openagent

Popularidade

Estrelas no GitHub
70 mil
Posição no ranking
#1723
Licença
NOASSERTION
Atualizada em
16/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas