<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Blog do SuperDevSpace</title>
    <link>https://superdevspace.com/pt-br/blog</link>
    <description>Notas sobre como construímos o SuperDevSpace: times de agentes de IA na sua própria assinatura de CLI, git worktrees, configuração guiada e mais.</description>
    <language>pt-br</language>
    <lastBuildDate>Sun, 25 Oct 2026 10:00:00 GMT</lastBuildDate>
    <atom:link href="https://superdevspace.com/pt-br/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Configuração guiada: um agente que te conduz por qualquer site</title>
      <link>https://superdevspace.com/pt-br/blog/configuracao-guiada-agente</link>
      <guid isPermaLink="true">https://superdevspace.com/pt-br/blog/configuracao-guiada-agente</guid>
      <pubDate>Sun, 25 Oct 2026 10:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>guided-setup</category>
      <category>browser</category>
      <category>agents</category>
      <description>O agente navega pelo painel, passa a página para você em senhas, códigos e pagamentos, e guarda a chave de API que veio buscar. Veja como funciona.</description>
      <content:encoded><![CDATA[<p>Todo projeto, cedo ou tarde, precisa de algo de um site. A chave de API de um provedor de pagamentos. Um segredo de webhook. Um client token escondido três menus abaixo num painel. Um agente escreve a integração em minutos — e aí para e diz que você mesmo tem que ir clicar no painel, porque essa parte acontece num navegador, atrás do seu login.</p>
<p>A configuração guiada é como o SuperDevSpace fecha essa lacuna. O agente abre o site no navegador do próprio app, faz os cliques que tem permissão para fazer e passa a página para você, com uma indicação e uma frase, exatamente quando o próximo passo é seu.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/inspector-chain.webp" alt="O painel de navegador embutido do app mostrando uma página web, com um elemento selecionado e a cadeia de componentes com arquivo e linha" loading="lazy" decoding="async"><figcaption>O painel de navegador dentro do app — o mesmo que a configuração guiada controla, aqui com o Inspector (app real, em turco).</figcaption></figure>
<h2 id="por-que-deixa-o-agente-fazer-é-a-resposta-errada">Por que &quot;deixa o agente fazer&quot; é a resposta errada</h2>
<p>A versão fácil deste recurso daria ao agente o navegador inteiro: ler cada campo, digitar em cada caixa, apertar cada botão. Seria rápido, e seria uma má ideia. Um fluxo de configuração está cheio de coisas em que um agente nunca deveria tocar:</p>
<ul>
<li>sua senha e o código de uso único do seu celular;</li>
<li>números de cartão, dados bancários e documentos de identidade;</li>
<li>os termos que você aceita e o pagamento que você aprova.</li>
</ul>
<p>Por isso o design começa pela outra ponta. O agente faz o trabalho de rotina — navegar, achar a página certa, preencher um nome de projeto, clicar em <strong>Criar</strong> — e tudo o que é pessoal ou vinculante fica com você.</p>
<div class="table-scroll"><table><thead><tr><th>Etapa de um fluxo de configuração</th><th>O agente</th><th>Você</th></tr></thead><tbody><tr><td>Abrir o painel e achar a página certa</td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td><td></td></tr>
<tr><td>Preencher um nome de projeto, uma URL, uma opção de uma lista</td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td><td></td></tr>
<tr><td>Digitar sua senha ou o código do seu celular</td><td><span class="blog-no" role="img" aria-label="Não">✗</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr>
<tr><td>Informar dados de cartão, bancários ou de identidade</td><td><span class="blog-no" role="img" aria-label="Não">✗</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr>
<tr><td>Marcar os termos, clicar em &quot;Pagar&quot; ou &quot;Finalizar pedido&quot;</td><td><span class="blog-no" role="img" aria-label="Não">✗</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr>
<tr><td>Ler a nova chave de API e guardar no <code>.env</code></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td><td></td></tr></tbody></table></div>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Nota"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>Quem garante o limite é o app</span></p><p>Não são sugestões num prompt. O app recusa qualquer tentativa do agente de atravessar o limite; ele não consegue contorná-lo na conversa.</p>
</aside>
<h2 id="como-uma-configuração-guiada-acontece">Como uma configuração guiada acontece</h2>
<p>O ciclo é o mesmo em qualquer site, inclusive naqueles para os quais ninguém escreveu instruções.</p>
<div class="blog-steps"><ol>
<li><strong>Abre a página.</strong> O agente abre uma aba de navegador dentro do app. Seus logins nesse navegador sobrevivem a reinícios, então talvez você já esteja conectado.</li>
<li><strong>Olha antes de agir.</strong> O agente pede um esboço da página: uma linha para cada título, botão, link, campo e frame. Campos sensíveis aparecem pelo tipo — senha, cartão, banco, código de uso único, identidade — com &quot;preenchido&quot; ou &quot;vazio&quot;, nunca com o valor.</li>
<li><strong>Faz a parte dele.</strong> Clica, preenche campos comuns e lê textos, relendo a página depois de qualquer ação que a altere.</li>
<li><strong>Passa a sua parte.</strong> Quando o próximo passo é seu, o agente mostra um cartão de guia na página: um título curto, uma instrução concreta e um destaque no campo ou botão a que se refere. Você faz o passo e clica em <strong>Pronto — pode assumir</strong>. Se travar, clica em <strong>Preciso de ajuda</strong> e escreve o que está vendo; o agente responde na página.</li>
<li><strong>Espera no mesmo turno.</strong> Enquanto há um guia na tela, o agente espera por você. Os cliques e a digitação dele são recusados até você devolver a página, e você pode clicar em <strong>Parar / assumir o controle</strong> a qualquer momento.</li>
<li><strong>Leva o resultado para casa.</strong> Quando a página mostra o que você veio buscar — uma chave de API, um token, um segredo de webhook —, o agente lê como segredo e guarda onde deve ficar, como o <code>.env</code> do projeto. Ele informa <em>onde</em> está a chave, não a chave.</li>
</ol>
</div>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/d2b8e01b4b17f596bb96-light.svg" width="1008" height="485" alt="Uma configuração guiada, da primeira página à chave guardada" loading="lazy" decoding="async"><figcaption>Uma configuração guiada, da primeira página à chave guardada</figcaption></figure>
<p>No fim, dá para conferir o resultado sem exibir nenhum segredo na tela:</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -o</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> '^PADDLE_[A-Z_]*='</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> .env</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_API_KEY</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_CLIENT_TOKEN</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_WEBHOOK_SECRET</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_ENVIRONMENT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span></code></pre>
<h2 id="regras-que-o-app-impõe">Regras que o app impõe</h2>
<p>São verificações dentro do app, e o agente não consegue desligá-las:</p>
<ul>
<li><strong>Nenhum segredo entra, nenhum segredo sai.</strong> O agente não consegue digitar num campo de senha, cartão, CVC, IBAN, código de uso único ou identidade. Quando ele lê a página ou tira um snapshot, esses valores ficam ocultos e são removidos de qualquer texto que ele leia.</li>
<li><strong>As capturas de tela são cobertas.</strong> Campos sensíveis e todo frame de outra origem — um widget de cartão, uma caixa de &quot;Entrar com o Google&quot; — são cobertos antes que o agente veja uma imagem.</li>
<li><strong>Sem scripts em páginas sensíveis.</strong> Rodar JavaScript na página é recusado em qualquer página que mostre um desses campos.</li>
<li><strong>Consentimento e pagamento são seus.</strong> Clicar numa caixa de termos ou num botão &quot;Pagar&quot; / &quot;Finalizar pedido&quot; é recusado.</li>
<li><strong>Tudo fica visível.</strong> O que o agente faz no painel de navegador aparece para você na faixa do painel, enquanto acontece.</li>
<li><strong>Segredos ficam fora da conversa.</strong> Um valor lido como segredo é marcado como sensível, e o agente é instruído a nunca repeti-lo no chat, em relatórios, em notas de tarefa ou em notificações.</li>
</ul>
<aside class="blog-callout blog-callout-warning" role="note" aria-label="Atenção"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg><span>Atenção</span></p><p>Aprovar um pagamento ou aceitar termos é sempre o seu clique. Se um fluxo não consegue seguir sem isso, o agente passa a página para você e espera.</p>
</aside>
<h2 id="qualquer-site-não-uma-lista-de-integrações">Qualquer site, não uma lista de integrações</h2>
<p>A configuração guiada é um ciclo, não uma biblioteca de scripts. Funciona num site para o qual ninguém escreveu dica, porque o agente lê a página que está à frente dele. Para alguns serviços, incluímos arquivos curtos de dicas — por exemplo, o painel sandbox do Paddle e o RevenueCat — que dizem ao agente onde as configurações de desenvolvedor costumam ficar. Os painéis mudam os menus o tempo todo, então as dicas dizem com todas as letras: quando a página e a dica discordarem, confie na página.</p>
<p>Isso importa mais do que parece. O código de integração que um agente escreve é só metade de um recurso; a outra metade é a conta, a chave e o webhook no site de outra pessoa. Com a configuração guiada, as duas metades acontecem na mesma sessão, com o mesmo agente, e você gasta seu tempo só com os passos que só você pode dar.</p>
<h2 id="onde-isso-se-encaixa">Onde isso se encaixa</h2>
<p>A configuração guiada faz parte do mesmo espaço de trabalho que todo o resto do SuperDevSpace: o agente que escreve sua integração de checkout é o mesmo que te acompanha na criação das chaves dela, num painel de navegador ao lado do terminal dele. Se você chegou agora, <a href="https://superdevspace.com/pt-br/blog/por-que-criamos-o-superdevspace">por que criamos o SuperDevSpace</a> explica o resto do time em volta.</p>
<h2 id="experimente">Experimente</h2>
<p>O teste é de 14 dias de Premium, sem cartão. <a href="https://superdevspace.com/download">Baixe o SuperDevSpace</a>, peça a um agente para configurar um provedor de pagamentos ou de analytics no seu projeto e deixe que ele te passe a página quando for a sua vez.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Agentes de código em paralelo com git worktrees</title>
      <link>https://superdevspace.com/pt-br/blog/agentes-de-codigo-em-paralelo-com-git-worktrees</link>
      <guid isPermaLink="true">https://superdevspace.com/pt-br/blog/agentes-de-codigo-em-paralelo-com-git-worktrees</guid>
      <pubDate>Sun, 25 Oct 2026 09:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>git-worktrees</category>
      <category>agents</category>
      <category>workflow</category>
      <description>Como o SuperDevSpace separa vários agentes no mesmo repositório: uma git worktree e um branch por worker, commits por turno e squash merges.</description>
      <content:encoded><![CDATA[<p>Rode dois agentes de código no mesmo checkout e você vai descobrir rapidinho por que times de software usam branches. Um agente está renomeando um módulo enquanto o outro roda a suíte de testes contra metade dessa renomeação. Um coloca no stage arquivos que o outro acabou de apagar. Nenhum dos dois está errado; eles só estão dividindo a mesma mesa.</p>
<p>O SuperDevSpace roda um manager e vários workers no mesmo repositório ao mesmo tempo. Este post explica o mecanismo que os mantém separados — as git worktrees — e as regras exatas que o app segue em torno delas.</p>
<h2 id="o-que-é-uma-git-worktree">O que é uma git worktree</h2>
<p>Um repositório git normalmente tem um único diretório de trabalho. O <code>git worktree</code> permite que um mesmo repositório tenha vários, cada um num branch próprio, todos compartilhando o mesmo banco de objetos. Não há um segundo clone nem uma segunda cópia do histórico: uma worktree nova custa os arquivos de um checkout e nada mais.</p>
<p>Dá para testar à mão em qualquer repositório. Os comandos são os mesmos em todo lugar; só o shell muda:</p>
<div class="blog-tabs" data-tabs><section class="blog-tab-panel" id="blog-tab-1-0" data-tab-label="macOS / Linux"><p class="blog-tab-label">macOS / Linux</p><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> add</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -b</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> agent/frontend-demo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> list</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> &#x26;&#x26; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> status</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> -</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> &#x26;&#x26; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span></span></code></pre>
</section><section class="blog-tab-panel" id="blog-tab-1-1" data-tab-label="Windows (PowerShell)"><p class="blog-tab-label">Windows (PowerShell)</p><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">git worktree add </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">b agent</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">demo ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">git worktree list</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">cd ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend; git status</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">cd ..\myrepo; git worktree remove ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span></span></code></pre>
</section></div>
<p>Cada worktree tem o próprio <code>HEAD</code>, o próprio índice e os próprios arquivos. Dois processos podem editar, buildar e testar em duas worktrees ao mesmo tempo sem ver as mudanças pela metade um do outro. É exatamente a propriedade de que um time de agentes precisa.</p>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Nota"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>Nota</span></p><p>Remover uma worktree não apaga o branch dela. Os commits continuam no repositório até você apagar o branch.</p>
</aside>
<h2 id="como-o-superdevspace-as-usa">Como o SuperDevSpace as usa</h2>
<p>As regras são simples e iguais para toda organização:</p>
<ul>
<li><strong>O manager trabalha no seu checkout principal.</strong> Ele planeja, revisa e faz merge; é o único lugar onde os branches se encontram.</li>
<li><strong>Cada worker ganha a própria worktree no próprio branch.</strong> Quando o manager contrata um worker, o app roda <code>git worktree add -b &lt;branch&gt; &lt;caminho&gt;</code> para ele. O branch se chama <code>agent/&lt;nome-do-worker&gt;-&lt;marca&gt;</code>, a menos que você tenha dado um nome a ele.</li>
<li><strong>As worktrees ficam na pasta de dados do app</strong>, em <code>worktrees/&lt;organização&gt;/&lt;worker&gt;</code>, nunca dentro do seu repositório. Sua pasta de projeto não se enche de diretórios de agentes.</li>
<li><strong>Todo turno vira commit.</strong> Quando um worker termina um turno, o app faz commit de tudo o que mudou na worktree dele (<code>agent(&lt;nome&gt;): turn</code>). Nada do que um worker fez fica só num diretório de trabalho sem commit.</li>
<li><strong>O merge é um squash merge.</strong> Quando o manager aceita o relatório de um worker, o branch entra na sua linha com <code>git merge --squash</code> e um único commit. Se o merge der conflito, o app o aborta e deixa o repositório limpo para a próxima operação, em vez de te deixar no meio de um merge conflitante.</li>
<li><strong>Uma operação git por vez por repositório.</strong> Os diretórios das worktrees isolam os arquivos; uma fila por repositório serializa os próprios comandos git, então dois workers que terminam no mesmo instante nunca disputam os metadados do git.</li>
</ul>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/0495b8bd6020893313bb-light.svg" width="471" height="268" alt="Dois workers, dois branches, dois squash merges" loading="lazy" decoding="async"><figcaption>Dois workers, dois branches, dois squash merges</figcaption></figure>
<p>No quadro, isso aparece como várias tarefas em andamento ao mesmo tempo, cada uma de um worker diferente, cada uma com o próprio branch por baixo.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/board-sprint.webp" alt="Um quadro de sprint com tarefas distribuídas entre a fazer, em andamento, aguardando aprovação, em revisão e concluído" loading="lazy" decoding="async"><figcaption>Tarefas andando em paralelo no quadro de uma organização — cada worker no próprio branch (app real, em turco).</figcaption></figure>
<h2 id="o-que-torna-isso-prático">O que torna isso prático</h2>
<p>Uma worktree recém-criada só contém o que o git rastreia. Isso geralmente não basta para rodar um projeto: <code>node_modules</code>, um <code>.env</code> local, arquivos gerados. Dois detalhes resolvem.</p>
<h3 id="um-script-de-setup-por-repositório">Um script de setup por repositório</h3>
<p>Se o seu repositório tem <code>.super/scripts/setup-worktree.sh</code>, o app o executa dentro de cada worktree nova antes de o worker começar, com <code>SUPERDEV_MAIN_REPO</code> apontando para o seu checkout principal. A saída aparece ao vivo — uma instalação longa não é uma espera às cegas — e você pode cancelar.</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D">#!/usr/bin/env bash</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">set</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -euo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> pipefail</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"># Copiar arquivos só locais do checkout principal</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">cp</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">$SUPERDEV_MAIN_REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">/.env"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> .env</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> 2></span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">/dev/null</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> ||</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> true</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"># Instalar dependências (o pnpm cria links a partir de um store compartilhado, então é rápido)</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> install</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> --frozen-lockfile</span></span></code></pre>
<aside class="blog-callout blog-callout-tip" role="note" aria-label="Dica"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg><span>Mantenha o script de setup rápido</span></p><p>O worker só começa depois que o script termina, e um script que falha interrompe a criação em vez de deixar um agente trabalhar numa árvore preparada pela metade. Um gerenciador de pacotes com store compartilhado deixa cada worktree nova barata.</p>
</aside>
<h3 id="submódulos">Submódulos</h3>
<p>O <code>git worktree add</code> deixa os submódulos vazios. Se a worktree nova tem um arquivo <code>.gitmodules</code>, o app roda <code>git submodule update --init --recursive</code> nela, para que nenhum worker builde contra uma dependência que sumiu sem aviso.</p>
<h2 id="limpando-sem-perder-trabalho">Limpando sem perder trabalho</h2>
<p>As worktrees se acumulam. O app as recupera, mas com cautela:</p>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/cf217abced89b6415545-light.svg" width="431" height="759" alt="Quando a worktree de um worker pode ser removida" loading="lazy" decoding="async"><figcaption>Quando a worktree de um worker pode ser removida</figcaption></figure>
<p>Uma worktree com mudanças sem commit, ou com um branch que tem trabalho ainda fora da sua linha, fica onde está. Uma pasta apagada pode ser recriada; trabalho perdido, não. A mesma cautela vale para os branches: o app acompanha os branches que criou e só mexe neles.</p>
<h2 id="o-que-muda-para-você">O que muda para você</h2>
<p>Com cada worker no próprio branch, &quot;rodar quatro agentes de uma vez&quot; deixa de ser uma aposta. Você pode:</p>
<ul>
<li>dar ao manager uma diretiva que se divide em tarefas independentes e deixar os workers rodarem em paralelo;</li>
<li>ler o diff de qualquer worker isoladamente, ao lado da conversa que o produziu;</li>
<li>rejeitar a mudança de um worker sem atrapalhar os outros;</li>
<li>continuar usando o seu checkout principal enquanto o time trabalha.</li>
</ul>
<p>É a mesma disciplina que um time humano usa, aplicada a agentes que não conseguem avisar que estão prestes a pisar no pé um do outro. Se você está se perguntando por que construímos um app inteiro em volta disso, o <a href="https://superdevspace.com/pt-br/blog/por-que-criamos-o-superdevspace">primeiro post</a> conta essa história.</p>
<h2 id="experimente">Experimente</h2>
<p>O teste de 14 dias é Premium, sem cartão. <a href="https://superdevspace.com/download">Baixe o SuperDevSpace</a>, aponte uma organização nova para um repositório e veja as worktrees aparecerem conforme o manager contrata os primeiros workers.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Por que criamos o SuperDevSpace: um time de IA na sua própria assinatura de CLI</title>
      <link>https://superdevspace.com/pt-br/blog/por-que-criamos-o-superdevspace</link>
      <guid isPermaLink="true">https://superdevspace.com/pt-br/blog/por-que-criamos-o-superdevspace</guid>
      <pubDate>Sun, 25 Oct 2026 08:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>launch</category>
      <category>agents</category>
      <category>claude-code</category>
      <description>Um manager planeja e os workers constroem, cada um no seu terminal e na sua git worktree, na CLI de agentes que você já paga. Por que o criamos.</description>
      <content:encoded><![CDATA[<p>Se você já paga por uma CLI de agentes como o Claude Code, tem mais capacidade do que uma única janela de terminal deixa aproveitar. O modelo sabe planejar, escrever código, rodar testes e explicar o que fez. O que ele não consegue sozinho é ser cinco pessoas ao mesmo tempo, acompanhar quem está fazendo o quê e entregar um relatório honesto no fim do dia.</p>
<p>Foi por essa lacuna que criamos o SuperDevSpace. É um app de desktop que transforma a CLI que você já tem em um pequeno time: um manager que planeja o trabalho e workers que o executam, cada um no seu próprio terminal e na sua própria git worktree.</p>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Nota"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>Vendemos a orquestra, não os músicos</span></p><p>O SuperDevSpace não vende modelos nem tokens. Ele conduz a CLI de agentes que você já paga, sob o seu próprio contrato com o fornecedor dela.</p>
</aside>
<h2 id="o-problema-de-um-agente-num-terminal">O problema de um agente num terminal</h2>
<p>Trabalhar com um único agente de código é ótimo para uma única tarefa. Desmorona assim que você tem três coisas para fazer no mesmo repositório:</p>
<ul>
<li>Você pode abrir um segundo terminal, mas aí os dois agentes editam o mesmo checkout. Um roda a suíte de testes enquanto o outro está no meio de um refactor.</li>
<li>Você vira o gerente de projeto. É você quem divide o trabalho, lembra qual terminal tinha qual tarefa e copia o contexto de uma sessão para a outra.</li>
<li>Ninguém registra o que aconteceu. Quando você volta do almoço, o único registro é o scrollback do terminal.</li>
</ul>
<p>Nada disso é problema do modelo. É um problema de organização — e organização é algo em que software é bom.</p>
<div class="table-scroll"><table><thead><tr><th></th><th>Um agente, um terminal</th><th>Uma organização do SuperDevSpace</th></tr></thead><tbody><tr><td>Trabalho em paralelo sem colisões</td><td><span class="blog-no" role="img" aria-label="Não">✗</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr>
<tr><td>Uma worktree e um branch por worker</td><td><span class="blog-no" role="img" aria-label="Não">✗</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr>
<tr><td>Trabalho dividido em tarefas num quadro</td><td><span class="blog-no" role="img" aria-label="Não">✗</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr>
<tr><td>Um relatório escrito por tarefa</td><td><span class="blog-no" role="img" aria-label="Não">✗</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr>
<tr><td>Você revisa o diff antes de entrar</td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr>
<tr><td>Roda na CLI que você já paga</td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td><td><span class="blog-yes" role="img" aria-label="Sim">✓</span></td></tr></tbody></table></div>
<h2 id="o-que-o-superdevspace-faz-de-fato">O que o SuperDevSpace faz de fato</h2>
<p>No SuperDevSpace, cada repositório é uma <strong>organização</strong>. Cada organização tem um <strong>manager</strong>: uma sessão real de uma CLI de agentes, num terminal real que você vê e no qual pode digitar. Você dá ao manager uma diretiva em linguagem natural — digitando ou ditando por voz.</p>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/85dba2ffb5aedb44f458-light.svg" width="490" height="640" alt="Como uma diretiva vira trabalho mesclado" loading="lazy" decoding="async"><figcaption>Como uma diretiva vira trabalho mesclado</figcaption></figure>
<p>Então o manager faz o que um líder faria:</p>
<div class="blog-steps"><ol>
<li><strong>Planeja.</strong> Abre um sprint e divide a diretiva em tarefas num quadro, cada uma com um brief curto.</li>
<li><strong>Contrata.</strong> Contrata workers para essas tarefas. Cada worker é outra sessão real da CLI na sua própria aba de terminal visível, com um papel — desenvolvedor frontend, engenheiro de QA e assim por diante.</li>
<li><strong>Isola.</strong> Cada worker ganha a própria git worktree no próprio branch, então o trabalho em paralelo nunca colide num mesmo checkout. Um post separado explica <a href="https://superdevspace.com/pt-br/blog/agentes-de-codigo-em-paralelo-com-git-worktrees">como isso funciona</a>.</li>
<li><strong>Revisa.</strong> Quando um worker termina, envia um relatório. O manager revisa, faz o merge do branch e pede correções quando algo não está certo.</li>
<li><strong>Reporta.</strong> Você recebe um relatório consolidado em vez de cinco scrollbacks.</li>
</ol>
</div>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/team-roles.webp" alt="A janela &quot;Adicione seus agentes&quot;: uma grade de papéis como frontend, backend, engenheiro de QA, revisor de código, designer e DevOps, com um campo de nome e instruções opcionais" loading="lazy" decoding="async"><figcaption>Escolhendo o papel de um worker ao montar o time (app real, em turco).</figcaption></figure>
<p>Você pode entrar a qualquer momento. Cada agente tem uma visão de chat e o seu terminal real — uma sessão, dois jeitos de olhar —, e cada mudança aparece como um diff ao lado da conversa que a produziu, para você revisar antes que chegue à sua linha principal.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/board-sprint.webp" alt="O quadro de sprint de uma organização com colunas de backlog, a fazer, em andamento, aguardando aprovação, em revisão e concluído, e cartões de tarefas marcados por raia" loading="lazy" decoding="async"><figcaption>O quadro de sprint de uma organização de demonstração enquanto o time trabalha (app real, em turco).</figcaption></figure>
<h2 id="sua-assinatura-sua-máquina-seu-código">Sua assinatura, sua máquina, seu código</h2>
<p>A decisão de design mais importante é também a mais simples: <strong>o SuperDevSpace conduz uma CLI que você já paga.</strong> Nunca revendemos acesso a modelos, então nada do que você executa aparece numa cobrança nossa além da própria assinatura do SuperDevSpace.</p>
<p>Essa decisão tem consequências de que gostamos:</p>
<ul>
<li><strong>Os agentes rodam como processos locais na sua máquina</strong>, nos seus repositórios locais. Seu código-fonte, seus prompts, a saída do terminal e os caminhos de arquivo nunca são enviados aos nossos servidores. Nosso serviço de contas guarda uma conta, um status de assinatura e uma lista de dispositivos.</li>
<li><strong>Você escolhe a CLI por organização.</strong> Claude Code, OpenAI Codex, Gemini CLI, Aider, Qwen Code, Cursor CLI e OpenCode podem ser selecionados. O Claude Code é a CLI que o app domina hoje — hooks, retomada de sessão, ferramentas MCP, respostas a permissões. As outras seis iniciam e rodam; o app as marca como experimentais e avisa quais extras ainda não estão conectados, em vez de falhar em silêncio.</li>
<li><strong>Nada fica preso na nossa nuvem</strong>, porque não há nuvem fazendo o trabalho.</li>
</ul>
<p>Antes da primeira diretiva, vale conferir se a CLI e o repositório estão onde você espera:</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> claude</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> --version</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ~/code/seu-projeto</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> status</span></span></code></pre>
<h2 id="o-que-vem-em-volta-do-time">O que vem em volta do time</h2>
<p>Um time precisa de mais do que terminais. Algumas coisas que vêm em todos os planos:</p>
<ul>
<li><strong>Um quadro que diz a verdade.</strong> Sprints, tarefas, briefs e relatórios. Um relatório diz o que falhou, não só o que passou.</li>
<li><strong>Inspector.</strong> Clique num elemento da sua página web em execução e envie para um agente com o componente, o arquivo e a linha. Funciona com Vite, Next.js e sites estáticos.</li>
<li><strong>Aprovações pelo celular.</strong> Quando um agente precisa de uma decisão, ele pergunta a você. O app do celular mostra o quadro, os agentes e as aprovações pendentes, para você responder a um pedido de permissão longe da mesa.</li>
<li><strong>Um quadro branco por organização</strong> (Excalidraw), que os agentes conseguem ler e no qual conseguem desenhar.</li>
</ul>
<figure class="blog-figure blog-figure-video"><video class="blog-video" muted loop playsinline controls preload="metadata" data-autoplay aria-label="Um loop curto e sem som do tour do produto: criando uma organização e os primeiros passos"><source src="https://superdevspace.com/media/superdevspace-tanitim-loop.mp4" type="video/mp4"></video><figcaption>Alguns segundos do tour real do produto (app em turco).</figcaption></figure>
<p>O Premium acrescenta as peças que vão mais longe: um modo de design baseado no Penpot, com um agente Designer que desenha no arquivo; agendamentos que executam diretivas segundo um calendário; e um link entre pares que permite a um manager no seu Mac passar trabalho para um manager no seu PC com Windows. A <a href="https://superdevspace.com/pricing">página de preços</a> tem a comparação completa.</p>
<h2 id="o-que-não-prometemos">O que não prometemos</h2>
<aside class="blog-callout blog-callout-warning" role="note" aria-label="Atenção"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg><span>Precisos em vez de impressionantes</span></p><p>O SuperDevSpace não deixa o modelo mais inteligente; ele dá ao modelo uma estrutura para trabalhar. Roda no macOS (Apple silicon) e no Windows (64 bits); o Linux ainda não tem data, e não vamos inventar uma.</p>
</aside>
<p>Um time de agentes ainda precisa de um chefe: você decide o que é construído e aprova o que chega ao seu branch principal.</p>
<h2 id="experimente">Experimente</h2>
<p>O teste é de 14 dias de Premium, sem cartão. Sua assinatura da CLI continua sua, e seu código também. Se quiser ver o time trabalhando no seu próprio repositório, <a href="https://superdevspace.com/download">baixe o SuperDevSpace</a> e dê ao manager a primeira diretiva.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
