MODULO 1.5

๐Ÿ‡ง๐Ÿ‡ท Caso pratico: BrasilAPI

Construir brasil-api-pp-cli do zero: CEP, CNPJ, bancos, feriados, DDD com cache SQLite e skill em PT-BR.

6
Topicos
30
Minutos
Inter.
Nivel
Hands-on
Tipo
1

๐ŸŽฏ Briefing do projeto

Antes do /printing-press, escreva 1 paragrafo definindo escopo, persona e endpoints minimos. CLI bem definida sai redondinha no primeiro generate.

Briefing pronto

CLI: brasil-api-pp-cli
Skill: pp-brasil-api
Persona: dev brasileiro usando Claude Code, n8n ou Supabase Edge Function
Endpoints (v1):
  - GET /cep/v2/{cep}
  - GET /cnpj/v1/{cnpj}
  - GET /banks/v1
  - GET /feriados/v1/{ano}
  - GET /ddd/v1/{ddd}
Auth: nenhuma (API publica)
Output padrao: texto humano. Flag --json para n8n.
Cache: SQLite (CEP/CNPJ: 30 dias; bancos/feriados: 24h)

๐Ÿ’ก Por que escrever isso

O factory faz a entrevista, mas se voce ja chega com decisoes, ele pula perguntas e gera direto. Escopo aberto vira CLI gigante com endpoints que ninguem usa.

2

๐Ÿ“ฎ CEP: o subcomando mais simples

Caso base: 1 input, 1 output, sem auth, sem paginacao. Ideal para entender o pipeline inteiro.

Comando final

$ brasil-api cep 01310100
Av. Paulista, Bela Vista, Sao Paulo/SP

$ brasil-api cep 01310100 --json
{"cep":"01310-100","logradouro":"Av. Paulista","bairro":"Bela Vista","cidade":"Sao Paulo","uf":"SP"}

# Cache: segunda chamada e instantanea
$ brasil-api cep 01310100
Av. Paulista, Bela Vista, Sao Paulo/SP  (cache 3 ms)

๐Ÿ“Š Antes vs depois

  • JSON cru da API: ~280 bytes / ~80 tokens
  • Output da CLI (texto): ~50 bytes / ~15 tokens
  • Reducao: 5x em uma chamada trivial. Imagine em 100 CEPs.
3

๐Ÿข CNPJ com --fields

A resposta de CNPJ traz 40+ campos. A flag --fields deixa o agente filtrar antes de receber.

Padrao: tudo

$ brasil-api cnpj 00000000000191
Razao social: BANCO DO BRASIL SA
Nome fantasia: BANCO DO BRASIL
Situacao: ATIVA
Abertura: 1966-08-01
... (38 linhas)

๐ŸŽฏ Com filtro

$ brasil-api cnpj 00000000000191 --fields razao_social,situacao
BANCO DO BRASIL SA | ATIVA

O agente economiza 90% dos tokens quando so precisa confirmar se a empresa esta ativa.

๐Ÿ’ก Padrao adotar em toda CLI

Sempre que o endpoint retornar muitos campos, ofereca --fields. O agente quase nunca quer tudo.

4

๐Ÿฆ Bancos, Feriados e DDD

Tres endpoints com listas estaveis. Sao ideais para cache agressivo (24h+) e busca local via FTS5.

Exemplos

$ brasil-api bancos --search "itau"
341  ITAU UNIBANCO S.A.
652  ITAU UNIBANCO HOLDING S.A.
184  ITAU BBA S.A.

$ brasil-api feriados 2026
2026-01-01  Confraternizacao Universal
2026-02-17  Carnaval
... (12 linhas)

$ brasil-api ddd 11
Sao Paulo (SP) + 38 cidades da regiao metropolitana

โœ“ O que fazer

  • โœ“Cache 24h em listas estaveis
  • โœ“FTS5 para busca em bancos
  • โœ“Output em tabela compactada

โœ— O que NAO fazer

  • โœ—Cache permanente (lista de bancos muda)
  • โœ—Devolver JSON cru sem filtro
  • โœ—Fazer pull online em loop
5

๐Ÿ’พ Cache SQLite offline

O SQLite local guarda o JSON cru. Queries seguintes leem do disco. Funciona offline e elimina latencia.

Schema gerado pelo factory

CREATE TABLE queries (
  hash TEXT PRIMARY KEY,        -- sha256 de metodo+url+params
  endpoint TEXT,                -- ex: 'cep', 'cnpj'
  payload TEXT,                 -- JSON cru
  fetched_at INTEGER,           -- timestamp
  ttl_seconds INTEGER           -- TTL por endpoint
);

CREATE INDEX idx_endpoint ON queries(endpoint, fetched_at);
CREATE VIRTUAL TABLE queries_fts USING fts5(payload, content='queries');

โฑ๏ธ TTL por endpoint

  • ยท CEP: 30 dias (raramente muda)
  • ยท CNPJ: 7 dias (situacao muda eventualmente)
  • ยท Bancos: 24h
  • ยท Feriados: 30 dias (ano todo previsivel)
  • ยท DDD: 30 dias

๐Ÿ’ก Flag --refresh

Sempre exponha --refresh para forcar nova chamada ignorando cache. Util quando o usuario sabe que o dado mudou (ex: empresa acabou de ser ativada).

6

๐ŸŽ Empacotar a skill pp-brasil-api

A CLI esta pronta. Falta criar a skill em PT-BR para o Claude Code rotear linguagem natural.

SKILL.md gerado

---
name: pp-brasil-api
description: BrasilAPI CLI. Consulta CEP, CNPJ, bancos, feriados e DDD.
  Trigger phrases: "CEP de X", "essa empresa esta ativa?", "lista de
  bancos com Itau no nome", "feriados de 2026", "que cidades sao DDD 11".
---

# pp-brasil-api

## Exemplos

- "qual o CEP da Av. Paulista?" -> `brasil-api cep 01310100`
- "essa empresa CNPJ 00.000.000/0001-91 esta ativa?" ->
  `brasil-api cnpj 00000000000191 --fields razao_social,situacao`
- "lista bancos brasileiros com 'Itau'" -> `brasil-api bancos --search itau`

๐Ÿงช Teste rapido no Claude Code

Depois de instalar a skill, abra o Claude Code e pergunte:

  • ยท "qual o CEP da Avenida Brasil 1000 em Sao Paulo?"
  • ยท "verifica se o CNPJ 00.000.000/0001-91 esta ativo"
  • ยท "quais os feriados nacionais de 2026?"

Se o agente invocar brasil-api, a integracao esta perfeita.

๐Ÿ‡ง๐Ÿ‡ท Dica de PT-BR

Sempre inclua trigger phrases em portugues do Brasil coloquial. "essa firma ta ativa?", "tem CEP do bairro tal" โ€” o agente brasileiro fala assim.

โœ… Resumo do Modulo

โœ“
brasil-api-pp-cli โ€” 5 endpoints, cache SQLite, output enxuto.
โœ“
Padrao --fields โ€” agente filtra a resposta antes de consumir.
โœ“
TTL diferenciado โ€” CEP 30d, CNPJ 7d, bancos 24h.
โœ“
Skill em PT-BR โ€” agente roteia frases brasileiras coloquiais.

Proximo Modulo:

1.6 โ€” Integracoes: n8n + Supabase