Manual de Propostas

Tudo que você precisa saber para criar, escrever e publicar uma proposta comercial usando o Claude Code e os comandos swl-*.

Visão geral

O sistema de propostas da Base/labs usa o Claude Code — um assistente de IA que roda no terminal — como interface principal. Em vez de abrir planilhas, copiar templates ou editar manualmente, você conversa com o Claude e ele cuida de toda a parte técnica: criar repositório, configurar pastas no Drive, escrever o conteúdo e publicar online.

Cada proposta é um repositório Git privado criado a partir de um template. Isso garante que cada proposta seja independente e que você possa trabalhar em várias ao mesmo tempo.

FerramentaPara quê
Claude CodeInterface principal — você digita comandos /swl-* e ele executa
GitHubArmazena o código e conteúdo de cada proposta
Google DriveBriefings, documentos do cliente e artefatos publicados
HubSpotCRM — registra o deal e recebe o link da proposta após publicação
Cloudflare R2Hospedagem — serve a proposta em propostas.baselabs.com.br

Fluxo de uma proposta

Uma proposta passa por três etapas, cada uma com seu comando:

📋 /swl-init-proposta
Cria repo, Drive, deal HubSpot
✍️ /swl-montar-proposta
Escreve o conteúdo
🚀 /swl-publicar-proposta
Builda e publica online
Dica: Você pode rodar os três comandos de qualquer diretório no terminal. O Claude encontra a proposta automaticamente.

Tempo estimado por etapa

EtapaTempoO que acontece
Init~3 minCria repo GitHub, pasta no Drive, deal HubSpot, clona local
Montar5–15 minVocê responde perguntas; Claude escreve todas as seções
Publicar~2 minBuild, upload R2, senha de acesso, atualiza HubSpot

Pré-requisitos

Antes de instalar, verifique se você tem acesso a:

Atenção: Sem o token da Cloudflare você consegue criar e escrever propostas, mas não consegue publicar online. Solicite o token antes de precisar publicar.

Instalação no Mac macOS

1. Instalar o Homebrew

O Homebrew é o gerenciador de pacotes do Mac. Se você já tem, pule este passo.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. Instalar Node.js

brew install node

Verifique a instalação:

node --version   # deve mostrar v20 ou superior
npm --version

3. Instalar o Git

O Git provavelmente já está instalado no Mac. Verifique:

git --version

Se não estiver: brew install git

4. Instalar o GitHub CLI

brew install gh

Autentique com sua conta GitHub:

gh auth login

Escolha GitHub.comHTTPSLogin with a web browser e siga as instruções.

5. Configurar SSH para o GitHub

O sistema usa SSH para clonar repositórios. Se você ainda não tem chave SSH configurada:

# Gera uma chave SSH (pressione Enter em todas as perguntas)
ssh-keygen -t ed25519 -C "seu-email@baselabs.com.br"

# Copia a chave pública para o clipboard
pbcopy < ~/.ssh/id_ed25519.pub

Depois acesse github.com/settings/keys, clique em New SSH key e cole a chave.

Teste a conexão:

ssh -T git@github.com

6. Instalar o Wrangler (Cloudflare CLI)

npm install -g wrangler

7. Instalar o Claude Code

npm install -g @anthropic-ai/claude-code

Faça login com sua conta Anthropic:

claude

Na primeira execução ele vai pedir para autenticar no browser.

Dica Mac: Para abrir o terminal, pressione Cmd + Espaço, digite "Terminal" e pressione Enter. Você também pode usar o iTerm2 se preferir.

Instalação no Windows Windows 10/11

Recomendação: Use o Windows Subsystem for Linux (WSL2) — ele instala um terminal Linux dentro do Windows e torna tudo muito mais simples. As instruções abaixo usam o WSL2.

1. Instalar o WSL2

Abra o PowerShell como Administrador (clique com botão direito no menu Iniciar → "Windows PowerShell (Admin)") e execute:

wsl --install

Reinicie o computador quando solicitado. Após reiniciar, o Ubuntu vai abrir automaticamente e pedir para criar um usuário e senha.

2. Instalar o Node.js no WSL

Dentro do terminal Ubuntu (WSL), execute:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

Verifique:

node --version
npm --version

3. Instalar o GitHub CLI

sudo apt install gh -y

Autentique:

gh auth login

Escolha GitHub.comHTTPSLogin with a web browser.

4. Configurar SSH para o GitHub

# Gera chave SSH
ssh-keygen -t ed25519 -C "seu-email@baselabs.com.br"

# Mostra a chave pública para copiar
cat ~/.ssh/id_ed25519.pub

Copie a chave exibida, acesse github.com/settings/keys, clique em New SSH key e cole.

ssh -T git@github.com

5. Instalar o Wrangler

npm install -g wrangler

6. Instalar o Claude Code

npm install -g @anthropic-ai/claude-code

Autentique na primeira execução:

claude

7. Instalar o Windows Terminal (opcional, recomendado)

Abra a Microsoft Store, busque Windows Terminal e instale. Ele permite abrir abas do WSL, PowerShell e CMD na mesma janela.

Atenção Windows: Sempre trabalhe dentro do WSL (terminal Ubuntu), não no PowerShell ou CMD. Os comandos do projeto usam sintaxe Unix.

Configurar credenciais

As integrações com Cloudflare, HubSpot, Google Drive e GitHub precisam de configuração uma única vez.

Token Cloudflare

Adicione o token ao seu ambiente. No Mac, edite o arquivo ~/.zshrc. No Windows (WSL), edite ~/.bashrc:

# Adicione esta linha no arquivo (substitua pelo token real)
export CLOUDFLARE_API_TOKEN="seu-token-aqui"

Depois recarregue o terminal:

# Mac (zsh)
source ~/.zshrc

# Windows/WSL (bash)
source ~/.bashrc

Teste:

echo $CLOUDFLARE_API_TOKEN

HubSpot, Google Drive e Gmail

Essas integrações são feitas via MCP servers já configurados no Claude Code. Na primeira vez que você rodar um comando que precise de HubSpot ou Drive, o Claude vai pedir para você autorizar. Siga as instruções na tela — é um login OAuth padrão no browser.

Só precisa fazer uma vez: Depois que você autorizar cada integração, o Claude vai lembrar para sempre (até você revogar o acesso).

Verificar se tudo está funcionando

Abra o Claude Code de qualquer diretório e rode:

claude

Depois, dentro do Claude, tente:

/swl-init-proposta

O Claude vai testar todas as credenciais automaticamente no início do comando e avisar se alguma estiver faltando.


/swl-init-proposta

Cria uma nova proposta do zero — ou retoma uma proposta que foi inicializada mas não concluída.

Como usar

Abra o Claude Code em qualquer diretório e digite:

/swl-init-proposta

O Claude vai fazer as perguntas necessárias. Você também pode passar o código da proposta diretamente para retomar uma existente:

/swl-init-proposta direcional-26-BL-039
/swl-init-proposta 26-BL-039

O que o comando faz (nova proposta)

1
Verifica credenciais

Testa HubSpot, GitHub, Google Drive e Cloudflare em paralelo. Avisa se alguma estiver faltando.

2
Qual empresa emite?

Escolha entre Base2, Base/labs, MeloQA ou Crowdtest. Isso define o pipeline do HubSpot e os tokens visuais.

3
Número da proposta

Busca o último número no HubSpot e sugere o próximo. Você pode confirmar ou digitar outro. Exemplo: 26-BL-039.

4
Qual template?

Lista os templates disponíveis: Desenvolvimento de Software, Alocação de Profissionais, Crowdtasking.

5
Nome do cliente

Digite o nome do cliente. O deal no HubSpot é criado automaticamente.

6–9
Criação automática

O Claude cria o repositório GitHub privado, a pasta no Google Drive (com briefing/ e publicado/), clona o repo localmente, faz o scaffold das seções e gera o proposta.env.

10
Commit e push

Commita a configuração inicial e empurra para o GitHub.

Resultado

Ao final você recebe os links de tudo que foi criado:

Proposta inicializada.

  Empresa:       Base/labs
  Número:        26-BL-039
  Cliente:       Direcional
  Template:      Desenvolvimento de Software

  Repo GitHub:   https://github.com/Base2-Tecnologia/proposta-direcional-26-BL-039
  Clone local:   ~/src/propostas/proposta-direcional-26-BL-039/
  Pasta Drive:   https://drive.google.com/drive/folders/...
  Deal HubSpot:  https://app.hubspot.com/contacts/.../record/0-3/...
Briefing do cliente: Coloque todos os documentos do cliente (PDFs, e-mails, planilhas) na pasta briefing/ do Drive. O comando /swl-montar-proposta lê esses arquivos automaticamente para enriquecer o conteúdo.

/swl-montar-proposta

Escreve o conteúdo das seções da proposta. O Claude faz perguntas sobre o cliente e o projeto, e você responde — ele cuida de gerar o texto profissional.

Como usar

/swl-montar-proposta
/swl-montar-proposta 26-BL-039

O que o comando faz

0
Localiza a proposta

Encontra o proposta.env e carrega todas as configurações.

1
Lê o briefing do Drive

Verifica se há documentos na pasta briefing/ do Google Drive. Se houver PDFs ou outros arquivos, extrai as informações relevantes automaticamente.

2
Verifica seções existentes

Classifica cada seção como preenchida ou vazia. Não sobrescreve o que já foi escrito sem perguntar.

3
Coleta informações

Faz as perguntas relevantes para o template escolhido. Quanto mais detalhe você der, melhor o resultado.

4
Escreve as seções

Gera o conteúdo em português, em tom executivo, com tabelas de investimento e cronograma.

Perguntas por template

Desenvolvimento de Software

PerguntaExemplos de resposta
O que o cliente faz e qual problema quer resolver?"Construtora que quer módulo de pagamentos para seus sistemas internos"
O que vamos construir? (stack, escopo)"App web em .NET Core 10 com API REST"
Casos de uso principaisPode ser lista de bullet points
O que fica fora do escopo?Ou diga "deixar genérico" para usar texto padrão
Stack e integrações externas"Node.js + React, integração com SAP via RFC"
Cronograma"16 semanas, 3 releases"
Squad e valoresPerfis, horas, taxas — ou "a definir" se não souber ainda

Alocação de Profissionais

PerguntaExemplos
Qual perfil o cliente precisa?"Dev backend Pleno .NET, 160h/mês"
Contexto do projetoPara que vai usar o profissional
Duração e valor"6 meses, R$ 12.000/mês"
Dica: Você pode dar respostas curtas e incompletas — o Claude preenche com texto adequado e deixa marcadores <!-- A DEFINIR --> onde precisar de informação real. Assim você publica um rascunho e completa depois.

Editar seções manualmente

As seções ficam em ~/src/propostas/proposta-<cliente>-<numero>/sections/. Cada arquivo é um Markdown simples que você pode editar no VS Code ou qualquer editor de texto. Depois de editar, rode /swl-publicar-proposta para atualizar a versão online.

/swl-publicar-proposta

Builda a proposta e publica online com senha de acesso. O link gerado é o que você envia ao cliente.

Como usar

/swl-publicar-proposta
/swl-publicar-proposta 26-BL-039

O que o comando faz

1
Build

Roda npm run build na pasta da proposta. O Astro gera o site estático a partir das seções Markdown.

2
Senha de acesso

Gera (ou reutiliza) um usuário e senha para proteger a proposta. O cliente vai precisar desses dados para abrir o link.

3
Upload para Cloudflare R2

Faz upload do site para o bucket propostas da Cloudflare. A URL fica no formato propostas.baselabs.com.br/cliente/numero/.

4
Atualiza HubSpot

Salva o link da proposta no deal do HubSpot automaticamente.

5
Rascunho de e-mail (opcional)

Oferece criar um rascunho no Gmail com o link e dados de acesso para enviar ao cliente.

Resultado

Proposta publicada.

  Cliente:   Direcional
  Número:    26-BL-039
  URL:       https://propostas.baselabs.com.br/direcional/26-BL-039/
  Acesso:    usuário: direcional · senha: xK7mR2pQ
  Validade:  24/06/2026

  Deal HubSpot atualizado com o link.
Atenção: A URL enviada ao cliente nunca deve ser renomeada. Se precisar corrigir ou atualizar a proposta, republique com o mesmo número. Se precisar substituir por uma proposta diferente, use um número novo.

Republicar uma proposta

Para atualizar uma proposta já publicada (após corrigir o conteúdo), basta rodar o comando novamente:

/swl-publicar-proposta 26-BL-039

O Claude vai sobreescrever os arquivos no R2. A URL e a senha permanecem as mesmas.


Estrutura do repositório de uma proposta

Após o /swl-init-proposta, o repositório da proposta tem esta estrutura:

proposta-direcional-26-BL-039/
├── sections/              ← Conteúdo da proposta (você edita aqui)
│   ├── capa.md
│   ├── escopo.md
│   ├── casos-uso.md
│   ├── proposta-tecnica.md
│   ├── cronograma.md
│   ├── investimento.md
│   ├── metodologia.md
│   ├── premissas.md
│   ├── racional.md
│   ├── quem-somos.md
│   └── ratecard.md
│
├── proposta.env           ← Configuração da proposta (não edite manualmente)
├── CLAUDE.md              ← Contexto para o Claude (links do Drive, HubSpot, etc.)
├── README.md              ← Link da pasta Drive com briefing
│
├── src/                   ← Código Astro (não precisa mexer)
├── utils/                 ← Scripts de build (não precisa mexer)
└── package.json

O arquivo proposta.env

Gerado automaticamente. Contém todas as configurações da proposta:

CLIENTE=Direcional
MARCA=baselabs
TEMPLATE=desenvolvimento-software
PROPOSTA_NUMERO=26-BL-039
PROPOSTA_DATA=2026-05-26
PROPOSTA_VALIDADE_DIAS=30
HUBSPOT_DEAL_ID=60650951826
DRIVE_FOLDER_ID=13BHrhrO4YserrOk8H8u7Sip0qBfnq8OJ
PROPOSTA_BASE_PATH=/direcional/26-BL-039/

As seções em Markdown

Cada arquivo em sections/ tem um cabeçalho (frontmatter) e o conteúdo em Markdown:

---
title: Escopo
subtitle: O que o módulo de pagamentos entrega na v1
---

O módulo de pagamentos da Direcional cobre o ciclo completo...

## Processos cobertos

- **Criação de transações** — ...
- **Aprovação** — fluxo configurável...

Marcas

Quatro marcas emitem propostas. Cada uma tem pipeline HubSpot, prefixo de número e identidade visual próprios:

MarcaPrefixoExemploPipeline HubSpot
Base/labsBL26-BL-039789732372
Base2A confirmarA confirmar
MeloQAA confirmarA confirmar
CrowdtestA confirmarA confirmar
Nota: Os prefixos e pipelines de Base2, MeloQA e Crowdtest ainda estão sendo confirmados. Use apenas Base/labs por enquanto.

FAQ

Como trabalho em várias propostas ao mesmo tempo?

Cada proposta é um repositório independente. Você pode ter vários clones em ~/src/propostas/ e alternar entre eles. Os comandos /swl-* aceitam o número da proposta como argumento, então você consegue trabalhar de qualquer diretório:

/swl-montar-proposta 26-BL-039
/swl-montar-proposta 26-BL-038

Posso editar as seções no VS Code?

Sim. As seções são arquivos Markdown em sections/. Edite como quiser e depois rode /swl-publicar-proposta para publicar as alterações.

O cliente esqueceu a senha. O que faço?

Peça ao Hugo ou a quem tem acesso ao Cloudflare KV. No momento não há comando automático para redefinir senha — isso é um ponto de melhoria futuro.

Posso retomar uma proposta que parou no meio do /swl-init-proposta?

Sim. Rode:

/swl-init-proposta 26-BL-039

O Claude verifica o que já foi criado (repo, Drive, clone) e executa apenas o que está faltando.

O build falhou. O que faço?

O erro mais comum é frontmatter inválido em alguma seção. O Claude lê o erro e geralmente consegue corrigir sozinho. Se não conseguir, verifique se o YAML no cabeçalho de cada .md está correto (sem aspas faltando, por exemplo).

Onde ficam os documentos do cliente?

Sempre no Google Drive, na pasta swl-clientes/<Letra>/<cliente>/<numero>/briefing/. O link está no README.md do repositório da proposta. Nunca commite documentos do cliente no Git.

Como instalo o Claude Code no Windows sem usar WSL?

É possível instalar diretamente no Windows com o Node.js para Windows, mas não é recomendado — vários scripts do projeto usam comandos Unix que não funcionam no CMD/PowerShell. O WSL2 resolve isso com muito menos trabalho.

O comando /swl-init-proposta não aparece. O que está errado?

Os comandos /swl-* precisam estar na pasta .claude/commands/ do repositório template. Certifique-se de que você abriu o Claude Code dentro da pasta swl-propostas-templates ou que os comandos foram copiados para a pasta de usuário. Fale com o Hugo se precisar de ajuda.


Base/labs · Manual de Propostas · Atualizado em maio de 2026