> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Criando Playbooks

> Crie uma biblioteca de prompts reutilizáveis para a sua organização

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<div id="what-are-playbooks">
  ## O que são playbooks?
</div>

<div id="playbooks-are-easily-shareable-reusable-prompts-for-repeated-tasks">
  ### Playbooks são prompts facilmente compartilháveis e reutilizáveis para tarefas recorrentes
</div>

Um Playbook é como um prompt de sistema personalizado para uma tarefa recorrente. Por exemplo, se você precisa ter muitas sessões diferentes do Devin que usem a mesma biblioteca de terceiros, mas em partes diferentes da sua aplicação, talvez você queira um Playbook.

Playbooks também são facilmente compartilháveis e reutilizáveis, então, depois que alguém tiver sucesso com o Devin, outras pessoas podem replicar esse sucesso com mais facilidade!

<Tip>A maioria das boas práticas, guias de estilo ou outras instruções específicas de projeto deve ser compartilhada com o Devin usando o [Knowledge](/pt-BR/product-guides/knowledge). Recomendamos ler a documentação sobre o Knowledge antes de criar Playbooks, para entender qual método atende melhor às suas necessidades.</Tip>

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/p6mfZwd14EeP9cx_/images/playbooks1.png?fit=max&auto=format&n=p6mfZwd14EeP9cx_&q=85&s=881388e8e5f66ec8c4b83495577de4c8" alt="Devin" width="2468" height="1438" data-path="images/playbooks1.png" />
</Frame>

Recomendamos usar Playbooks quando:

* Você ou seus colegas de equipe vão reutilizar o prompt em várias sessões.
* Você se pega repetindo os mesmos lembretes para o Devin.
* O caso de uso pode ser relevante para outras pessoas — na sua organização ou na comunidade de usuários do Devin.

<div id="getting-started-with-playbooks">
  ## Introdução aos Playbooks
</div>

<Tip> Os playbooks podem desbloquear imediatamente a capacidade do Devin de contribuir em uma ampla variedade de áreas, mas, hoje, exigem habilidade para serem escritos. De forma semelhante ao prompt engineering, escrever playbooks exige tentativa e erro. O fruto desse trabalho, porém, é um documento que libera a capacidade do Devin de realizar, de forma independente, trabalhos complexos — desde ingerir dados no Redshift e executar migrações de banco de dados até usar diferentes softwares e APIs, por exemplo: Together, Plaid, Stripe, Modal, Springboot, Odoo e Storybook.</Tip>

Considere escrever seu primeiro playbook com uma tarefa simples, de múltiplas etapas, que você queira que o Devin execute.

1. Crie um documento que descreva...
   1. O resultado que você quer que o Devin atinja
   2. As etapas necessárias para chegar lá
2. **Opcional**: Adicione seções como **procedimento**, **Especificação**, **Advice**, **Forbidden Actions** ou **Required from User**
   1. **procedimento**: Descreva todo o escopo da tarefa. Inclua pelo menos uma etapa para configuração, a execução da tarefa em si e a entrega.
   2. **Especificação**: Descreva as pós-condições — o que deve ser verdadeiro depois que o Devin terminar?
   3. **Advice**: Inclua dicas para corrigir os pressupostos iniciais do Devin
   4. **Forbidden Actions**: Inclua qualquer ação que o Devin absolutamente não deve realizar
   5. **Required from User**: Descreva qualquer entrada ou informação necessária do usuário
3. Crie o playbook diretamente no aplicativo web clicando em [Criar um novo Playbook](https://app.devin.ai/settings/playbooks/create). Como alternativa, salve um arquivo com a extensão `.devin.md` e arraste e solte esse arquivo no aplicativo web ao iniciar uma sessão do Devin

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/p6mfZwd14EeP9cx_/images/playbooks2.png?fit=max&auto=format&n=p6mfZwd14EeP9cx_&q=85&s=80bc8065ad88a19a668d1989673e24ab" alt="Devin" width="1226" height="386" data-path="images/playbooks2.png" />
</Frame>

<Tip> Você terá anexado um playbook a uma sessão com sucesso se vir um botão azul em formato de pílula aparecer, junto com um componente inline para editar o playbook antes de iniciar sua sessão. </Tip>

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/p6mfZwd14EeP9cx_/images/playbooks3.png?fit=max&auto=format&n=p6mfZwd14EeP9cx_&q=85&s=8ef6abaa79e6e8f5249da8160fb82ce1" alt="Devin" width="1920" height="416" data-path="images/playbooks3.png" />
</Frame>

<div id="writing-a-great-playbook">
  ## Como criar um excelente playbook
</div>

<div id="procedure">
  ### Procedure
</div>

A seção Procedure deve...

* Ter **um passo por linha**, cada linha redigida no imperativo
* Cobrir todo o escopo da tarefa
* Incluir pelo menos um passo para preparação, a tarefa em si e entrega
* Procurar tornar os passos **mutuamente exclusivos** e **coletivamente exaustivos**
* **Dicas adicionais**
  * Os procedimentos devem ajudar você a definir a ordem das ações do Devin – como if/else/loops/goto em código
  * Não torne as tarefas específicas demais, a menos que seja realmente necessário; isso pode reduzir a capacidade do Devin de resolver problemas
  * Cada passo do procedimento deve conter um verbo de ação – por exemplo: escrever, navegar até, etc.

<div id="advice-and-pointers">
  ### Dicas e Orientações
</div>

Compartilhe dicas e orientações com o Devin se...

* Você tiver uma forma preferida de concluir as tarefas
* A dica se aplicar à tarefa inteira ou a vários passos. Dicas específicas de um passo devem ser escritas ao lado desse passo (por exemplo, como um subitem)
* Você estiver corrigindo os conhecimentos prévios do Devin. Dicas podem funcionar como comentários em pseudocódigo que influenciam sua execução.

<Tip> Se a dica se aplicar somente a um passo do Procedimento, escreva a dica logo abaixo desse passo usando subitens em lista aninhada </Tip>

<div id="specifications">
  ### Especificações
</div>

A seção de **Especificações** pode ser útil para descrever as pós-condições do playbook — quais condições devem ser atendidas quando Devin terminar?

<div id="whats-needed-from-user">
  ### O que é necessário do usuário
</div>

Considere tudo o que for necessário, mas que esteja fora do controle do Devin. Por exemplo, se o usuário precisar fornecer um token ou informações que não estejam publicamente disponíveis para o Devin.

<div id="other-tips-tactics">
  ### Outras dicas + táticas
</div>

<AccordionGroup>
  <Accordion title="Itere e melhore por meio de tentativa e erro">
    * Execute 2 ou mais Devins em paralelo com o mesmo playbook para identificar rapidamente possíveis erros.
    * Se o Devin precisar de ajuda, converse com ele para ajudá-lo a avançar. Depois, adicione isso ao seu playbook para que o Devin tenha sucesso sem intervenção na próxima vez.
  </Accordion>

  <Accordion title="Diga ao Devin como é um bom resultado">
    Seja explícito sobre qual é o entregável e como o Devin deve comunicar que ele está concluído (por exemplo, quais arquivos anexar ou quais links compartilhar, se houver).
  </Accordion>

  <Accordion title="Otimize a velocidade de execução do seu playbook">
    Explore as diferentes decisões que o Devin pode tomar e oriente o Devin pelo caminho mais eficiente no playbook.
  </Accordion>

  <Accordion title="Comandos específicos, 'encantamentos' e strings são totalmente válidos">
    * Eles podem ser o fator decisivo entre um playbook que funciona e um que falha.
    * Por exemplo, o seguinte pode ser um ótimo detalhe para incluir, pois "alloy" e "tts-1" provavelmente não seriam escolhas que o Devin faria por conta própria, e isso orienta o Devin em uma direção com maior chance de sucesso!

    ```
    3. Create request dict with model: "tts-1", voice: "alloy"
    ```
  </Accordion>
</AccordionGroup>

<div id="example-playbook">
  ## Playbook de exemplo
</div>

Visualize sessões de exemplo usando o playbook abaixo [aqui](https://app.devin.ai/sessions/93f381206f44492e9fc8b236ee022877) e [aqui](https://app.devin.ai/sessions/eed1a18b9ce348f69e6bac84bb42d992).

<div id="macros">
  ## Macros
</div>

Você pode atribuir uma **macro** a qualquer playbook — um identificador curto que começa com `!` (por exemplo, `!data-tutorial`). As macros permitem vincular rapidamente um playbook a uma sessão digitando o nome da macro no campo de prompt. As macros podem conter apenas letras, números e hífens, e devem ser exclusivas dentro da sua organização.

<div id="version-history">
  ## Histórico de versões
</div>

Os playbooks mantêm um **histórico de versões** para que você possa acompanhar as alterações ao longo do tempo. Cada vez que você edita e salva um playbook, uma nova versão é criada. Você pode visualizar versões anteriores e reverter para uma versão anterior se uma alteração recente não sair como esperado.

<div id="enterprise-playbooks">
  ## Playbooks do Enterprise
</div>

Para clientes Enterprise, os playbooks podem ser gerenciados no **nível Enterprise**, além do nível da organização. Os playbooks Enterprise são compartilhados entre todas as organizações do seu Enterprise, facilitando a padronização de fluxos de trabalho entre equipes. Os administradores do Enterprise podem criar e gerenciar playbooks no nível Enterprise nas configurações do Enterprise.

<PromptBlock>
  ```txt R Data Science Tutorial theme={null}
  Playbook: R Data Science Tutorial

  ## Overview
  Crie um tutorial de ciência de dados usando um notebook R Markdown.

  ## What’s Needed From User
  ## O que é necessário do usuário
  - Link para um conjunto de dados (arquivo CSV em anexo ou link do Kaggle)
  - Tarefa específica para a qual criar o tutorial de ciência de dados

  ## Procedure
  1. Baixe o conjunto de dados fornecido pelo usuário.
  - Se necessário, baixe o conjunto de dados usando o Kaggle CLI — você não precisa de nenhuma credencial para isso.
  2. Crie um notebook R Markdown chamado `data_science_tutorial.Rmd`.
  3. Crie um arquivo `tmp.Rmd` para escrever e salvar código intermediário.
  4. Crie 5 seções principais dentro do arquivo `data_science_tutorial.Rmd` e adicione código do arquivo `tmp.Rmd` contendo o seguinte:
  - Estatísticas do conjunto de dados. Gere um resumo estatístico do conjunto de dados.
  - EDA (Exploratory Data Analysis). Crie um gráfico de barras e um gráfico de dispersão para os dados fornecidos.
  - Divisão treino-teste. Divida os dados em uma proporção de 80:20. Salve os dados de treino e de teste.
  - Treinamento do modelo de machine learning. Salve o modelo após o treinamento.
  - Inferência com o modelo salvo. Carregue o modelo salvo e avalie seu desempenho no conjunto de teste usando a métrica especificada pelo usuário.
  5. Depois que o código estiver escrito, adicione uma breve explicação para cada seção.
  6. Converta o notebook R Markdown para o formato HTML.
  7. Envie ao usuário o notebook R Markdown final, o arquivo HTML, o modelo salvo e os dados de teste.

  ## Specifications
  1. Envie ao usuário o notebook R Markdown e o arquivo HTML.
  2. Envie ao usuário o modelo salvo e os dados de teste.

  ## Advice and Pointers
  1. Não reinstale pacotes se eles já estiverem instalados.
  2. Não é necessário fazer login no RStudio para concluir esta tarefa.
  3. Execute todo o notebook depois de adicionar o código de cada seção.

  ## Forbidden Actions
  1. Não sobrescreva o arquivo `data_science_tutorial.Rmd`.
  ```
</PromptBlock>
