up-cc 0.3.3 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +259 -49
  3. package/agents/up-api-tester.md +405 -0
  4. package/agents/up-arquiteto.md +461 -0
  5. package/agents/up-backend-specialist.md +158 -0
  6. package/agents/up-blind-validator.md +259 -0
  7. package/agents/up-clone-crawler.md +234 -0
  8. package/agents/up-clone-design-extractor.md +227 -0
  9. package/agents/up-clone-feature-mapper.md +225 -0
  10. package/agents/up-clone-prd-writer.md +169 -0
  11. package/agents/up-clone-verifier.md +227 -0
  12. package/agents/up-code-reviewer.md +225 -0
  13. package/agents/up-database-specialist.md +152 -0
  14. package/agents/up-devops-agent.md +203 -0
  15. package/agents/up-executor.md +45 -5
  16. package/agents/up-exhaustive-tester.md +348 -0
  17. package/agents/up-frontend-specialist.md +135 -0
  18. package/agents/up-product-analyst.md +192 -0
  19. package/agents/up-qa-agent.md +171 -0
  20. package/agents/up-requirements-validator.md +230 -0
  21. package/agents/up-security-reviewer.md +137 -0
  22. package/agents/up-system-designer.md +332 -0
  23. package/agents/up-technical-writer.md +188 -0
  24. package/agents/up-visual-critic.md +358 -0
  25. package/bin/up-tools.cjs +84 -2
  26. package/commands/clone-builder.md +67 -0
  27. package/commands/dashboard.md +48 -0
  28. package/commands/depurar.md +1 -1
  29. package/commands/mobile-first.md +71 -0
  30. package/commands/modo-builder.md +178 -0
  31. package/commands/ux-tester.md +63 -0
  32. package/package.json +1 -1
  33. package/references/blueprints/audit.md +29 -0
  34. package/references/blueprints/booking.md +49 -0
  35. package/references/blueprints/community.md +48 -0
  36. package/references/blueprints/crm.md +40 -0
  37. package/references/blueprints/dashboard.md +48 -0
  38. package/references/blueprints/data-management.md +42 -0
  39. package/references/blueprints/ecommerce.md +51 -0
  40. package/references/blueprints/marketplace.md +48 -0
  41. package/references/blueprints/notifications.md +32 -0
  42. package/references/blueprints/saas-users.md +50 -0
  43. package/references/blueprints/settings.md +31 -0
  44. package/references/engineering-principles.md +205 -0
  45. package/references/production-requirements.md +106 -0
  46. package/references/state-persistence.md +74 -0
  47. package/templates/builder-defaults.md +73 -0
  48. package/templates/delivery.md +279 -0
  49. package/templates/design-tokens.md +151 -0
  50. package/workflows/builder-e2e.md +501 -0
  51. package/workflows/builder.md +2248 -0
  52. package/workflows/clone-builder.md +320 -0
  53. package/workflows/executar-fase.md +28 -2
  54. package/workflows/executar-plano.md +404 -6
  55. package/workflows/mobile-first.md +692 -0
  56. package/workflows/novo-projeto.md +22 -0
  57. package/workflows/rapido.md +1 -1
  58. package/workflows/ux-tester.md +500 -0
@@ -0,0 +1,50 @@
1
+ # Blueprint: SaaS Users & Permissions
2
+
3
+ Aplicar quando: sistema tem login, multiplos usuarios, ou qualquer menção a "admin", "roles", "permissoes".
4
+ Praticamente TODO sistema web com auth precisa deste blueprint.
5
+
6
+ ---
7
+
8
+ ## Autenticacao (AUTH)
9
+
10
+ - AUTH-01: Login com email/senha
11
+ - AUTH-02: Signup com verificacao de email
12
+ - AUTH-03: Forgot password (enviar link de reset)
13
+ - AUTH-04: Reset password (pagina com token)
14
+ - AUTH-05: Alteracao de senha (logado, exige senha atual)
15
+ - AUTH-06: Logout com limpeza de sessao
16
+ - AUTH-07: Sessao persistente (refresh token / remember me)
17
+ - AUTH-08: Redirect pos-login para pagina de origem
18
+ - AUTH-09: Loading state durante verificacao de auth (nao piscar login)
19
+ - AUTH-10: OAuth social (Google, GitHub) — se aplicavel ao dominio
20
+
21
+ ## Perfil de Usuario (PROFILE)
22
+
23
+ - PROFILE-01: Pagina de perfil (nome, email, foto, contato)
24
+ - PROFILE-02: Upload de foto de perfil (com crop/resize)
25
+ - PROFILE-03: Edicao de dados pessoais
26
+ - PROFILE-04: Visualizacao de plano/role atual
27
+ - PROFILE-05: Historico de atividade do usuario
28
+
29
+ ## Roles e Permissoes (ROLE)
30
+
31
+ - ROLE-01: Definir roles do sistema (ex: admin, gerente, atendente, cliente)
32
+ - ROLE-02: Cada role tem permissoes especificas (CRUD por modulo)
33
+ - ROLE-03: Tabela de permissoes: role × modulo × acao (ver, criar, editar, deletar)
34
+ - ROLE-04: UI adapta baseado no role (menus, botoes, paginas visiveis)
35
+ - ROLE-05: API valida permissoes (nao depender apenas do front)
36
+ - ROLE-06: Role padrao para novos usuarios (configuravel)
37
+ - ROLE-07: Super admin (acesso total, nao removivel)
38
+
39
+ ## Gestao de Usuarios (USRMGMT)
40
+
41
+ - USRMGMT-01: Listar usuarios (com busca, filtro por role, paginacao)
42
+ - USRMGMT-02: Criar usuario (nome, email, role, senha temporaria ou convite)
43
+ - USRMGMT-03: Editar usuario (nome, email, role)
44
+ - USRMGMT-04: Desativar/reativar usuario (soft delete, nao hard delete)
45
+ - USRMGMT-05: Reset de senha por admin (gerar link de reset)
46
+ - USRMGMT-06: Alterar role de usuario
47
+ - USRMGMT-07: Convite por email (link de signup com role pre-definido)
48
+ - USRMGMT-08: Indicador de status (ativo, inativo, pendente convite)
49
+ - USRMGMT-09: Acessivel apenas para admin
50
+ - USRMGMT-10: Log de alteracoes (quem mudou o que)
@@ -0,0 +1,31 @@
1
+ # Blueprint: Settings & Configuration
2
+
3
+ Aplicar quando: sistema tem configuracoes ajustaveis pelo usuario ou admin.
4
+ Praticamente TODO sistema SaaS precisa deste blueprint.
5
+
6
+ ---
7
+
8
+ ## Perfil & Conta (ACCT)
9
+
10
+ - ACCT-01: Pagina de configuracoes com sidebar/tabs por secao
11
+ - ACCT-02: Secao "Perfil" (nome, foto, bio, contato)
12
+ - ACCT-03: Secao "Seguranca" (alterar senha, sessoes ativas)
13
+ - ACCT-04: Secao "Notificacoes" (preferencias de canal e tipo)
14
+ - ACCT-05: Secao "Aparencia" (tema claro/escuro, idioma)
15
+ - ACCT-06: Secao "Dados" (export dos meus dados, deletar conta)
16
+ - ACCT-07: Save com feedback (toast de sucesso)
17
+
18
+ ## Configuracao do Negocio — Admin Only (BIZ)
19
+
20
+ - BIZ-01: Dados do negocio (nome, logo, endereco, CNPJ, contato)
21
+ - BIZ-02: Horario de funcionamento
22
+ - BIZ-03: Configuracao de moeda e locale
23
+ - BIZ-04: Configuracao de email (remetente, templates)
24
+ - BIZ-05: Integrações ativas (toggle on/off, chaves de API)
25
+ - BIZ-06: Plano atual e billing info (se SaaS multi-tenant)
26
+
27
+ ## Customizacao Visual — Admin Only (THEME)
28
+
29
+ - THEME-01: Logo upload
30
+ - THEME-02: Cores primarias (se white-label)
31
+ - THEME-03: Favicon customizado
@@ -0,0 +1,205 @@
1
+ # Engineering Principles
2
+
3
+ Principios que governam TODA decisao de implementacao no UP.
4
+ Carregado por todos os agentes executores (up-executor, up-frontend-specialist, up-backend-specialist, up-database-specialist).
5
+
6
+ Estes principios existem porque IAs tendem a escolher o caminho mais facil, nao o melhor. Cada principio combate um vicio especifico.
7
+
8
+ ---
9
+
10
+ ## Principio 1: Implementacao real, nao simulacao
11
+
12
+ NUNCA entregue codigo que PARECE funcionar mas nao funciona de verdade.
13
+
14
+ **Violacoes comuns (PROIBIDO):**
15
+
16
+ ```typescript
17
+ // ❌ Handler vazio
18
+ onClick={() => {}}
19
+
20
+ // ❌ Componente placeholder
21
+ function UserList() {
22
+ return <div>User List</div>
23
+ }
24
+
25
+ // ❌ API que retorna estatico
26
+ export async function GET() {
27
+ return Response.json({ ok: true })
28
+ }
29
+
30
+ // ❌ Form que nao envia
31
+ onSubmit={(e) => e.preventDefault()}
32
+
33
+ // ❌ Estado que nunca popula
34
+ const [users, setUsers] = useState([])
35
+ // ... nunca chama setUsers com dados reais
36
+
37
+ // ❌ Import decorativo
38
+ import { analytics } from './analytics'
39
+ // ... nunca chama analytics
40
+
41
+ // ❌ Fetch sem uso
42
+ const data = await fetch('/api/users')
43
+ // ... nunca usa data
44
+ ```
45
+
46
+ **O que fazer quando nao pode implementar agora:**
47
+
48
+ Se falta API externa, credencial ou dependencia:
49
+ 1. NAO finja que funciona
50
+ 2. Declare explicitamente no SUMMARY como "nao implementado — motivo: X"
51
+ 3. Deixe o codigo com erro CLARO, nao silencio enganoso:
52
+
53
+ ```typescript
54
+ // ✅ Correto: explicitamente nao implementado
55
+ function exportCSV() {
56
+ throw new Error('Export CSV nao implementado — aguardando endpoint /api/export')
57
+ }
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Principio 2: A implementacao correta, nao a mais rapida
63
+
64
+ Quando existem duas abordagens — a rapida que funciona superficialmente e a correta que trata todos os cenarios — SEMPRE escolha a correta.
65
+
66
+ | Situacao | ❌ Atalho | ✅ Correto |
67
+ |----------|----------|-----------|
68
+ | Validar email | `.includes('@')` | Regex ou library (zod, yup) |
69
+ | Tipagem | `any` para compilar | Interface/type definido |
70
+ | Catch erro | `catch(e) {}` vazio | `catch(e) { toast.error(e.message) }` |
71
+ | Query SQL | `WHERE id = ${id}` | `WHERE id = $1`, [id] |
72
+ | Acesso array | `data[0]` direto | `data?.length ? data[0] : null` |
73
+ | Checar null | `if (data)` generico | `if (data !== null && data !== undefined)` |
74
+ | Comparacao | `==` | `===` |
75
+ | Copiar objeto | `Object.assign` raso | `structuredClone` ou spread profundo |
76
+ | Lidar com datas | String manipulation | Library (date-fns, dayjs) |
77
+ | Gerar ID | `Math.random()` | `crypto.randomUUID()` |
78
+
79
+ **Teste mental:** "Se um dev senior revisasse esse codigo, ele aceitaria ou pediria mudanca?"
80
+ Se pediria mudanca → faca a versao correta agora.
81
+
82
+ ---
83
+
84
+ ## Principio 3: Conectado de ponta a ponta
85
+
86
+ Codigo NAO esta "pronto" ate que esteja WIRED — conectado e funcionando do ponto de vista do usuario final.
87
+
88
+ **Checklist de wiring:**
89
+
90
+ | Criado | Conectado a | Verificacao |
91
+ |--------|-------------|-------------|
92
+ | Componente | Layout/pagina + rota navegavel | Acessar URL, componente renderiza |
93
+ | API endpoint | Frontend chama + response tratado | curl funciona + UI mostra dados |
94
+ | Schema/migration | Migration rodada + queries usando | Dados persistem e retornam |
95
+ | Validacao | Aplicada no form + feedback visivel | Submeter invalido, ver mensagem |
96
+ | Estado (store) | Mutations conectadas + UI reflete | Mutar, UI atualiza |
97
+ | Auth guard | Rota protegida + redirect se nao logado | Acessar sem login, redireciona |
98
+ | Event handler | Botao/elemento + acao executa | Clicar, algo acontece |
99
+
100
+ **"O arquivo existe" ≠ "funciona".**
101
+ **"Funciona" = usuario final consegue usar no browser.**
102
+
103
+ Apos CADA tarefa, verificar wiring:
104
+ - Backend: `curl` o endpoint, verificar response
105
+ - Frontend: navegar a pagina, verificar que renderiza e responde
106
+ - Integracao: frontend chama backend, dados fluem
107
+
108
+ ---
109
+
110
+ ## Principio 4: Consistencia sobre criatividade
111
+
112
+ NAO invente patterns novos quando o projeto ja tem um pattern estabelecido.
113
+
114
+ **Antes de implementar qualquer coisa:**
115
+
116
+ ```bash
117
+ # 1. Buscar implementacao similar no codebase
118
+ grep -r "similar_pattern" src/ --include="*.ts" --include="*.tsx"
119
+
120
+ # 2. Se existe: SEGUIR o mesmo pattern
121
+ # 3. Se nao existe: estabelecer pattern e ser consistente daqui pra frente
122
+ ```
123
+
124
+ **Exemplos:**
125
+
126
+ | Projeto usa | ❌ NAO faca | ✅ Faca |
127
+ |-------------|-----------|--------|
128
+ | React Query | `fetch` manual com useState | `useQuery`/`useMutation` |
129
+ | Componente Button | `<button className="...">` raw | `<Button variant="primary">` |
130
+ | Tailwind | `style={{ color: 'blue' }}` | `className="text-blue-500"` |
131
+ | Zod validation | `if (!email.includes('@'))` manual | `z.string().email()` |
132
+ | Toast via Sonner | `alert('Sucesso')` | `toast.success('Sucesso')` |
133
+ | tRPC | REST fetch manual | `trpc.resource.query()` |
134
+ | Supabase client | `fetch('/api/...')` wrapper | `supabase.from('...').select()` |
135
+
136
+ **Regra geral:** Se o codebase ja resolveu esse problema, use a mesma solucao.
137
+
138
+ ---
139
+
140
+ ## Principio 5: Dados reais desde o primeiro momento
141
+
142
+ NAO use mock data como solucao permanente.
143
+
144
+ **Ordem de preferencia:**
145
+ 1. Banco de dados real com seed data → IDEAL
146
+ 2. API real com dados de teste → BOM
147
+ 3. Mock temporario removido antes do commit → ACEITAVEL
148
+ 4. Hardcoded no componente como solucao final → PROIBIDO
149
+
150
+ **Se o banco existe:** Conecte desde o primeiro componente.
151
+ **Se precisa seed:** Crie migration/seed file, NAO hardcode:
152
+
153
+ ```typescript
154
+ // ❌ PROIBIDO: dados fake no componente
155
+ const transactions = [
156
+ { id: 1, amount: 100, description: 'Test' },
157
+ { id: 2, amount: 200, description: 'Test 2' },
158
+ ]
159
+
160
+ // ✅ CORRETO: buscar do banco
161
+ const { data: transactions } = useQuery({
162
+ queryKey: ['transactions'],
163
+ queryFn: () => supabase.from('transactions').select('*')
164
+ })
165
+
166
+ // ✅ E criar seed separado:
167
+ // supabase/seed.sql ou prisma/seed.ts
168
+ ```
169
+
170
+ **Mock aceitavel APENAS em:**
171
+ - Testes automatizados (vi.mock, jest.mock)
172
+ - Desenvolvimento temporario (removido antes do commit)
173
+ - API externa indisponivel (documentar explicitamente)
174
+
175
+ ---
176
+
177
+ ## Principio 6: Cada decisao tem custo futuro
178
+
179
+ Antes de escolher a abordagem facil, pergunte: **"Se o projeto crescer 10x, essa decisao vai causar retrabalho?"**
180
+
181
+ | Atalho agora | Custo futuro |
182
+ |-------------|-------------|
183
+ | Tudo num arquivo so | Refatorar quando ficar ilegivel |
184
+ | Sem tipagem | Bugs silenciosos, refatorar depois |
185
+ | Sem validacao | Dados lixo no banco, limpar depois |
186
+ | Sem pagination | App trava com 10k items |
187
+ | Sem error handling | Crash em producao, debug cego |
188
+ | Sem indices no banco | Queries lentas com volume |
189
+ | Sem loading states | UX ruim, usuario acha que travou |
190
+ | CSS inline/hardcoded | Inconsistencia visual, refatorar tema |
191
+ | Sem env vars | Credenciais expostas, security breach |
192
+ | Sem testes | Medo de mudar codigo, regressoes |
193
+
194
+ **Se a resposta for "sim, vai causar retrabalho":** faca certo agora. O custo de fazer certo e linear. O custo de refatorar depois e exponencial.
195
+
196
+ ---
197
+
198
+ ## Como aplicar durante execucao
199
+
200
+ 1. **Antes de cada tarefa:** Reler os principios mentalmente
201
+ 2. **Durante implementacao:** A cada decisao, checar se viola algum principio
202
+ 3. **Antes de commitar:** Self-review rapido contra os 6 principios
203
+ 4. **No SUMMARY:** Documentar decisoes onde o principio influenciou a escolha
204
+
205
+ **Se violar um principio para cumprir deadline:** Documentar como debito tecnico no SUMMARY, NAO fingir que esta correto.
@@ -0,0 +1,106 @@
1
+ # Production Requirements Reference
2
+
3
+ Checklist de requisitos que TODO sistema pronto para producao deve ter.
4
+ O up-system-designer e up-arquiteto usam esta referencia para injetar requisitos automaticamente.
5
+
6
+ Cada item e um requisito com ID sugerido. O arquiteto ajusta IDs para nao colidir com requisitos explicitos do usuario.
7
+
8
+ ---
9
+
10
+ ## UI States (UIST)
11
+
12
+ - UIST-01: Loading state (skeleton ou spinner) em TODA operacao assincrona
13
+ - UIST-02: Error state com mensagem clara e botao de retry
14
+ - UIST-03: Empty state com orientacao de acao ("Nenhum item ainda. Clique em + para criar.")
15
+ - UIST-04: Success feedback (toast) para TODA acao mutativa (criar, editar, deletar)
16
+ - UIST-05: Disabled state em botoes durante submissao (evitar double-click)
17
+ - UIST-06: Skeleton loading em vez de spinner generico para conteudo principal
18
+ - UIST-07: Optimistic updates onde aplicavel (UI responde antes da API)
19
+ - UIST-08: Confirmacao antes de acoes destrutivas (deletar, cancelar)
20
+
21
+ ## Error Handling (ERR)
22
+
23
+ - ERR-01: Error boundary no layout raiz com fallback UI amigavel
24
+ - ERR-02: Error boundary por feature/rota (erro em uma secao nao derruba o app)
25
+ - ERR-03: Try/catch em toda operacao de API com mensagem amigavel
26
+ - ERR-04: Tratamento de sessao expirada (redirect para login com mensagem)
27
+ - ERR-05: Pagina 404 customizada com navegacao de volta
28
+ - ERR-06: Tratamento de erros de rede (offline, timeout) com retry
29
+ - ERR-07: Validacao server-side alem de client-side (nunca confiar so no front)
30
+ - ERR-08: Logging de erros no console (dev) sem expor em producao
31
+
32
+ ## Performance (PERF)
33
+
34
+ - PERF-01: Lazy loading de imagens (loading="lazy" ou next/image)
35
+ - PERF-02: Code splitting por rota (dynamic imports / React.lazy)
36
+ - PERF-03: Debounce em inputs de busca/filtro (300ms)
37
+ - PERF-04: Pagination ou infinite scroll para listas > 20 items
38
+ - PERF-05: Caching de queries (React Query / SWR / tRPC cache / staleTime)
39
+ - PERF-06: Memoizacao de componentes pesados (React.memo, useMemo)
40
+ - PERF-07: Evitar re-renders desnecessarios (keys corretas, deps do useEffect)
41
+ - PERF-08: Compressao de imagens e assets (WebP, SVG onde possivel)
42
+ - PERF-09: Prefetch de rotas provaveis (next/link prefetch)
43
+
44
+ ## Forms (FORM)
45
+
46
+ - FORM-01: Validacao inline (ao sair do campo ou ao digitar, nao so no submit)
47
+ - FORM-02: Mensagens de erro especificas por campo ("Email invalido" nao "Erro")
48
+ - FORM-03: Botao desabilitado durante submissao com loading indicator
49
+ - FORM-04: Autofocus no primeiro campo ao abrir form
50
+ - FORM-05: Tab order logica (sem pular campos)
51
+ - FORM-06: Defaults inteligentes onde possivel (data=hoje, moeda=BRL)
52
+ - FORM-07: Preservar dados do form se usuario navegar e voltar
53
+ - FORM-08: Mascara de input onde aplicavel (telefone, CPF, CEP, moeda)
54
+
55
+ ## Responsividade (RESP)
56
+
57
+ - RESP-01: Layout funcional em 375px (iPhone SE) — sem overflow horizontal
58
+ - RESP-02: Touch targets minimo 44x44px em mobile
59
+ - RESP-03: Navegacao adaptada (hamburger/drawer em mobile)
60
+ - RESP-04: Tabelas com scroll horizontal ou layout de cards em mobile
61
+ - RESP-05: Modais fullscreen em mobile, dialog em desktop
62
+ - RESP-06: Fonte legivel (min 14px body, min 12px labels)
63
+ - RESP-07: Imagens responsivas (max-w-full, h-auto)
64
+
65
+ ## Meta/SEO (META)
66
+
67
+ - META-01: Title unico por pagina
68
+ - META-02: Meta description por pagina
69
+ - META-03: OG tags (image, title, description) para compartilhamento social
70
+ - META-04: Favicon (multiplos tamanhos)
71
+ - META-05: Web manifest (PWA-ready)
72
+ - META-06: Canonical URL
73
+ - META-07: Robots meta (noindex para paginas privadas)
74
+
75
+ ## Acessibilidade (A11Y)
76
+
77
+ - A11Y-01: Alt text em todas as imagens
78
+ - A11Y-02: Labels associados a todos os inputs (htmlFor/id)
79
+ - A11Y-03: Focus visible em elementos interativos (outline, ring)
80
+ - A11Y-04: Keyboard navigation funcional (tab, enter, escape)
81
+ - A11Y-05: Aria labels em botoes de icone (sem texto visivel)
82
+ - A11Y-06: Hierarquia de headings (h1 > h2 > h3, sem pular niveis)
83
+ - A11Y-07: Contraste minimo 4.5:1 em texto
84
+ - A11Y-08: Skip to content link
85
+ - A11Y-09: Landmarks (header, main, nav, footer)
86
+
87
+ ## Seguranca (SEC)
88
+
89
+ - SEC-01: Protecao de rotas autenticadas (redirect se nao logado)
90
+ - SEC-02: CSRF protection em forms
91
+ - SEC-03: Sanitizacao de inputs (evitar XSS)
92
+ - SEC-04: Rate limiting em endpoints sensiveis (login, signup, reset)
93
+ - SEC-05: Headers de seguranca (CSP, X-Frame-Options, etc.)
94
+ - SEC-06: Nao expor IDs sequenciais (usar UUID)
95
+ - SEC-07: Env vars nunca expostas no client-side
96
+ - SEC-08: RLS (Row Level Security) se usando Supabase
97
+
98
+ ## Visual Polish (POLISH)
99
+
100
+ - POLISH-01: Hover states em todos elementos clicaveis
101
+ - POLISH-02: Transicoes suaves em mudancas de estado (150-300ms)
102
+ - POLISH-03: Consistencia de espacamento (usar escala: 4, 8, 12, 16, 24, 32, 48)
103
+ - POLISH-04: Consistencia de cores (usar design tokens, nao hex hardcoded)
104
+ - POLISH-05: Consistencia de tipografia (max 2 fontes, escala definida)
105
+ - POLISH-06: Dark mode (opcional mas cada vez mais esperado)
106
+ - POLISH-07: Favicon que funciona em light e dark mode
@@ -0,0 +1,74 @@
1
+ # Persistência de Estado entre Sessões
2
+
3
+ <purpose>
4
+ Instruções para Claude Code salvar estado do projeto automaticamente, mesmo fora de comandos /up:.
5
+ Quando o projeto tem `.plano/STATE.md`, TODA sessão produtiva deve registrar o que foi feito.
6
+ </purpose>
7
+
8
+ ## Regra Principal
9
+
10
+ Se o diretório `.plano/` existe com `STATE.md`, você DEVE salvar o estado da sessão ao final de trabalho significativo — independente de ter usado comandos `/up:` ou não.
11
+
12
+ **Trabalho significativo** = qualquer coisa que mude o projeto de forma relevante:
13
+ - Correção de bugs
14
+ - Implementação de features (parcial ou completa)
15
+ - Refatoração
16
+ - Decisões de arquitetura
17
+ - Debug e investigação com conclusões
18
+ - Configuração de infra/deploy
19
+
20
+ **NÃO é significativo** (não precisa salvar):
21
+ - Leitura exploratória sem conclusão
22
+ - Perguntas conceituais
23
+ - Revisão sem alterações
24
+
25
+ ## Como Salvar
26
+
27
+ Um único comando faz tudo (atualiza timestamp, descrição, atividade, e commita):
28
+
29
+ ```bash
30
+ node "$HOME/.claude/up/bin/up-tools.cjs" state save-session --summary "descrição do que foi feito"
31
+ ```
32
+
33
+ **Se houve decisão importante:**
34
+
35
+ ```bash
36
+ node "$HOME/.claude/up/bin/up-tools.cjs" state save-session \
37
+ --summary "descrição do que foi feito" \
38
+ --decision "decisão tomada e por quê" \
39
+ --phase 2
40
+ ```
41
+
42
+ **Se não quer commitar automaticamente:**
43
+
44
+ ```bash
45
+ node "$HOME/.claude/up/bin/up-tools.cjs" state save-session --summary "descrição" --no-commit
46
+ ```
47
+
48
+ ## Quando Salvar
49
+
50
+ 1. **Final da conversa** — quando o trabalho está concluído ou pausado
51
+ 2. **Após resolver um bug** — mesmo que veio de continuação pós-agente
52
+ 3. **Após implementar algo** — mesmo parcialmente
53
+ 4. **Antes de sugerir /clear** — salvar estado garante continuidade
54
+
55
+ ## O que Escrever no --summary
56
+
57
+ Seja específico e útil para a próxima sessão:
58
+
59
+ - BOM: "Corrigido bug de autenticação — token expirado não redirecionava para login. Alterado middleware em src/auth.ts"
60
+ - BOM: "Implementado componente de filtro de datas. Falta integrar com API de relatórios"
61
+ - RUIM: "Feitas correções"
62
+ - RUIM: "Trabalhado no projeto"
63
+
64
+ ## Integração com CLAUDE.md do Projeto
65
+
66
+ Quando `/up:novo-projeto` ou `/up:modo-builder` inicializa um projeto, adicionar ao CLAUDE.md do projeto:
67
+
68
+ ```markdown
69
+ ## UP: Persistência de Estado
70
+
71
+ Este projeto usa o sistema UP. Se `.plano/STATE.md` existir:
72
+ - Ao final de trabalho significativo, salvar estado: `node "$HOME/.claude/up/bin/up-tools.cjs" state save-session --summary "o que foi feito"`
73
+ - Isso garante continuidade entre sessões mesmo sem usar comandos /up:
74
+ ```
@@ -0,0 +1,73 @@
1
+ # Builder Defaults Template
2
+
3
+ Template para `~/.claude/up/builder-defaults.md` -- decisoes padrao do usuario para o modo builder.
4
+ O usuario customiza uma vez e vale para todos os projetos criados com `/up:modo-builder`.
5
+
6
+ <template>
7
+
8
+ ```markdown
9
+ # Builder Defaults
10
+
11
+ ## Stack Padrao
12
+ - Frontend: Next.js 15 (App Router) + Tailwind CSS + shadcn/ui
13
+ - Backend: Supabase (Auth + Database + Edge Functions)
14
+ - Linguagem: TypeScript (strict mode)
15
+ - Package manager: pnpm
16
+ - Testes: Vitest + Playwright
17
+
18
+ ## Decisoes de Design
19
+ - Design system: shadcn/ui (tema neutro, customizar cores por projeto)
20
+ - Responsividade: mobile-first
21
+ - Dark mode: sim, com toggle
22
+ - Fonte: Inter (UI) + JetBrains Mono (code)
23
+
24
+ ## Decisoes de Codigo
25
+ - API: tRPC quando Next.js, REST quando Python/FastAPI
26
+ - Auth: Supabase Auth
27
+ - Validacao: Zod
28
+ - Estado client: Zustand
29
+ - Forms: React Hook Form + Zod resolver
30
+ - ORM/DB: Supabase client (sem ORM adicional)
31
+
32
+ ## Padroes
33
+ - Estrutura: feature-based (src/features/*)
34
+ - Commits: conventional commits
35
+ - Linter: ESLint + Prettier
36
+ - Git: branch main, commits diretos
37
+
38
+ ## Nao usar
39
+ - (liste aqui tecnologias que voce NAO quer em nenhum projeto)
40
+ ```
41
+
42
+ </template>
43
+
44
+ <guidelines>
45
+
46
+ **Como o builder usa este arquivo:**
47
+
48
+ 1. Lido no inicio do modo builder (Estagio 1 - Intake)
49
+ 2. Qualquer decisao do briefing do usuario SOBRESCREVE os defaults
50
+ 3. Se o usuario especifica "usar Vue", o default de Next.js e ignorado
51
+ 4. Se o usuario NAO especifica frontend, o default de Next.js e usado
52
+ 5. A secao "Nao usar" e SEMPRE respeitada (nunca sobrescrita)
53
+
54
+ **Hierarquia de decisao:**
55
+ ```
56
+ Briefing do usuario (maior prioridade)
57
+ > Respostas das perguntas criticas
58
+ > builder-defaults.md do usuario
59
+ > Inferencia inteligente do sistema (menor prioridade)
60
+ ```
61
+
62
+ **Inferencia inteligente (quando nao ha default nem briefing):**
63
+ - Dominio financeiro → sugere tabelas, graficos, exportacao
64
+ - Dominio social → sugere real-time, notificacoes, feeds
65
+ - Dominio e-commerce → sugere pagamentos, carrinho, inventario
66
+ - Dominio educacao → sugere progresso, quiz, certificados
67
+
68
+ **O que NAO colocar nos defaults:**
69
+ - Credenciais ou tokens (passados no briefing)
70
+ - Decisoes especificas de projeto (schemas, nomes de tabelas)
71
+ - Preferencias que mudam por projeto (cores, branding)
72
+
73
+ </guidelines>