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.
| Ferramenta | Para quê |
|---|---|
| Claude Code | Interface principal — você digita comandos /swl-* e ele executa |
| GitHub | Armazena o código e conteúdo de cada proposta |
| Google Drive | Briefings, documentos do cliente e artefatos publicados |
| HubSpot | CRM — registra o deal e recebe o link da proposta após publicação |
| Cloudflare R2 | Hospedagem — serve a proposta em propostas.baselabs.com.br |
Fluxo de uma proposta
Uma proposta passa por três etapas, cada uma com seu comando:
Cria repo, Drive, deal HubSpot
Escreve o conteúdo
Builda e publica online
Tempo estimado por etapa
| Etapa | Tempo | O que acontece |
|---|---|---|
| Init | ~3 min | Cria repo GitHub, pasta no Drive, deal HubSpot, clona local |
| Montar | 5–15 min | Você responde perguntas; Claude escreve todas as seções |
| Publicar | ~2 min | Build, upload R2, senha de acesso, atualiza HubSpot |
Pré-requisitos
Antes de instalar, verifique se você tem acesso a:
- Conta na organização Base2-Tecnologia no GitHub
- Acesso ao HubSpot da Base/labs
- Acesso ao Google Drive compartilhado swl-clientes
- Token da API Cloudflare (peça ao Hugo ou ao time de infra)
- Assinatura do Claude Code (Pro ou Team — claude.ai/code)
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.com → HTTPS → Login 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.
Instalação no Windows Windows 10/11
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.com → HTTPS → Login 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.
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.
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)
Testa HubSpot, GitHub, Google Drive e Cloudflare em paralelo. Avisa se alguma estiver faltando.
Escolha entre Base2, Base/labs, MeloQA ou Crowdtest. Isso define o pipeline do HubSpot e os tokens visuais.
Busca o último número no HubSpot e sugere o próximo. Você pode confirmar ou digitar outro. Exemplo: 26-BL-039.
Lista os templates disponíveis: Desenvolvimento de Software, Alocação de Profissionais, Crowdtasking.
Digite o nome do cliente. O deal no HubSpot é criado automaticamente.
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.
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/...
/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
Encontra o proposta.env e carrega todas as configurações.
Verifica se há documentos na pasta briefing/ do Google Drive. Se houver PDFs ou outros arquivos, extrai as informações relevantes automaticamente.
Classifica cada seção como preenchida ou vazia. Não sobrescreve o que já foi escrito sem perguntar.
Faz as perguntas relevantes para o template escolhido. Quanto mais detalhe você der, melhor o resultado.
Gera o conteúdo em português, em tom executivo, com tabelas de investimento e cronograma.
Perguntas por template
Desenvolvimento de Software
| Pergunta | Exemplos 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 principais | Pode 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 valores | Perfis, horas, taxas — ou "a definir" se não souber ainda |
Alocação de Profissionais
| Pergunta | Exemplos |
|---|---|
| Qual perfil o cliente precisa? | "Dev backend Pleno .NET, 160h/mês" |
| Contexto do projeto | Para que vai usar o profissional |
| Duração e valor | "6 meses, R$ 12.000/mês" |
<!-- 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
Roda npm run build na pasta da proposta. O Astro gera o site estático a partir das seções Markdown.
Gera (ou reutiliza) um usuário e senha para proteger a proposta. O cliente vai precisar desses dados para abrir o link.
Faz upload do site para o bucket propostas da Cloudflare. A URL fica no formato propostas.baselabs.com.br/cliente/numero/.
Salva o link da proposta no deal do HubSpot automaticamente.
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.
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:
| Marca | Prefixo | Exemplo | Pipeline HubSpot |
|---|---|---|---|
| Base/labs | BL | 26-BL-039 | 789732372 |
| Base2 | A confirmar | — | A confirmar |
| MeloQA | A confirmar | — | A confirmar |
| Crowdtest | A confirmar | — | A confirmar |
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