up-cc 0.4.3 → 0.4.4
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.
- package/agents/up-planejador.md +55 -0
- package/package.json +1 -1
- package/templates/builder-defaults.md +21 -0
- package/workflows/builder.md +88 -8
package/agents/up-planejador.md
CHANGED
|
@@ -21,6 +21,61 @@ Se o prompt contem um bloco `<files_to_read>`, voce DEVE usar a ferramenta `Read
|
|
|
21
21
|
- Lidar com planejamento padrao e modo de fechamento de gaps
|
|
22
22
|
- **Research inline:** Se o dominio for desconhecido, pesquisar usando WebFetch/Context7 DENTRO do processo de planejamento
|
|
23
23
|
- **Self-check interno:** Apos criar PLAN.md, rodar checklist interno (tarefas especificas? dependencias identificadas? ondas atribuidas? must_haves derivados?)
|
|
24
|
+
|
|
25
|
+
**MODO SONNET-READY (quando `<sonnet_execution>true</sonnet_execution>` no prompt):**
|
|
26
|
+
|
|
27
|
+
O executor sera um modelo Sonnet (mais rapido, mais barato, mas segue instrucoes LITERALMENTE).
|
|
28
|
+
Sonnet NAO infere, NAO decide, NAO improvisa. Ele faz EXATAMENTE o que o plano diz.
|
|
29
|
+
Se o plano e vago, Sonnet entrega vago. Se o plano e preciso, Sonnet entrega preciso.
|
|
30
|
+
|
|
31
|
+
**Regras Sonnet-ready — CADA tarefa DEVE ter:**
|
|
32
|
+
|
|
33
|
+
1. **Imports exatos** — nao dizer "importar biblioteca de validacao", dizer "import { z } from 'zod'"
|
|
34
|
+
2. **Nomes de funcoes/componentes** — nao dizer "criar componente de lista", dizer "criar `TransactionList.tsx` com props `{ transactions: Transaction[], onDelete: (id: string) => void }`"
|
|
35
|
+
3. **Schema/tipos definidos** — nao dizer "criar tipo do usuario", dizer:
|
|
36
|
+
```typescript
|
|
37
|
+
interface User {
|
|
38
|
+
id: string;
|
|
39
|
+
email: string;
|
|
40
|
+
name: string;
|
|
41
|
+
role: 'admin' | 'user';
|
|
42
|
+
created_at: string;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
4. **Endpoints com assinatura completa** — nao dizer "criar endpoint de login", dizer:
|
|
46
|
+
```
|
|
47
|
+
POST /api/auth/login
|
|
48
|
+
Body: { email: string, password: string }
|
|
49
|
+
Response 200: { user: User, token: string }
|
|
50
|
+
Response 401: { error: "Invalid credentials" }
|
|
51
|
+
Validacao: zod schema z.object({ email: z.string().email(), password: z.string().min(8) })
|
|
52
|
+
```
|
|
53
|
+
5. **SQL/migrations literais** — nao dizer "criar tabela de transacoes", dizer:
|
|
54
|
+
```sql
|
|
55
|
+
CREATE TABLE transactions (
|
|
56
|
+
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
57
|
+
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
|
58
|
+
amount DECIMAL(12,2) NOT NULL CHECK (amount >= 0),
|
|
59
|
+
description TEXT NOT NULL,
|
|
60
|
+
category TEXT NOT NULL,
|
|
61
|
+
date DATE NOT NULL DEFAULT CURRENT_DATE,
|
|
62
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
63
|
+
);
|
|
64
|
+
CREATE INDEX idx_transactions_user_id ON transactions(user_id);
|
|
65
|
+
CREATE INDEX idx_transactions_date ON transactions(date);
|
|
66
|
+
```
|
|
67
|
+
6. **Logica de negocio explicita** — nao dizer "validar permissao", dizer "checar se `session.user.role === 'admin'`, se nao, retornar 403"
|
|
68
|
+
7. **Conexoes explicitas** — nao dizer "conectar com o backend", dizer "o componente `TransactionList` deve chamar `fetch('/api/transactions', { headers: { Authorization: 'Bearer ' + token } })` no useEffect, tratar loading/error/empty states"
|
|
69
|
+
|
|
70
|
+
**Self-check Sonnet-ready (apos cada tarefa do plano):**
|
|
71
|
+
- [ ] A tarefa tem imports explicitados?
|
|
72
|
+
- [ ] A tarefa tem nomes de arquivos, funcoes, componentes, tipos?
|
|
73
|
+
- [ ] A tarefa tem schemas/tipos com campos e tipos definidos?
|
|
74
|
+
- [ ] A tarefa tem endpoints com request/response shapes?
|
|
75
|
+
- [ ] A tarefa tem logica de negocio descrita passo a passo?
|
|
76
|
+
- [ ] Um executor que NAO conhece o projeto consegue implementar SEM pensar?
|
|
77
|
+
|
|
78
|
+
Se qualquer check falha: reescrever a tarefa com mais detalhe antes de finalizar o plano.
|
|
24
79
|
</role>
|
|
25
80
|
|
|
26
81
|
<project_context>
|
package/package.json
CHANGED
|
@@ -35,6 +35,27 @@ O usuario customiza uma vez e vale para todos os projetos criados com `/up:modo-
|
|
|
35
35
|
- Linter: ESLint + Prettier
|
|
36
36
|
- Git: branch main, commits diretos
|
|
37
37
|
|
|
38
|
+
## Modelos por Papel
|
|
39
|
+
|
|
40
|
+
Configurar qual modelo de IA usar para cada tipo de trabalho.
|
|
41
|
+
Modelos disponiveis: opus, sonnet, haiku
|
|
42
|
+
|
|
43
|
+
| Papel | Modelo | Agentes |
|
|
44
|
+
|-------|--------|---------|
|
|
45
|
+
| planning | opus | arquiteto, product-analyst, system-designer, planejador, roteirista |
|
|
46
|
+
| execution | sonnet | executor, frontend-specialist, backend-specialist, database-specialist |
|
|
47
|
+
| verification | opus | verificador, code-reviewer, blind-validator, requirements-validator |
|
|
48
|
+
| detection | sonnet | visual-critic, exhaustive-tester, api-tester |
|
|
49
|
+
| research | sonnet | pesquisador-projeto, pesquisador-mercado, mapeador-codigo |
|
|
50
|
+
| quality | opus | qa-agent, security-reviewer, auditor-ux, auditor-performance |
|
|
51
|
+
|
|
52
|
+
Notas:
|
|
53
|
+
- Opus: raciocinio profundo, decisoes arquiteturais, verificacao critica. Mais lento, mais caro.
|
|
54
|
+
- Sonnet: execucao rapida, seguir instrucoes, volume de codigo. Mais rapido, mais barato.
|
|
55
|
+
- Haiku: tarefas simples. NAO recomendado para codigo de producao.
|
|
56
|
+
- Opus e Sonnet ambos suportam 1M de contexto.
|
|
57
|
+
- Se execution=sonnet, planos serao gerados com nivel extra de detalhe (Sonnet-ready).
|
|
58
|
+
|
|
38
59
|
## Nao usar
|
|
39
60
|
- (liste aqui tecnologias que voce NAO quer em nenhum projeto)
|
|
40
61
|
```
|
package/workflows/builder.md
CHANGED
|
@@ -38,6 +38,38 @@ Neste modo, TODOS os agentes devem:
|
|
|
38
38
|
7. **Quality Gate:** Incluir clone-verifier como dimensao "Fidelidade" (20% do score).
|
|
39
39
|
</core_principle>
|
|
40
40
|
|
|
41
|
+
<model_routing>
|
|
42
|
+
## Roteamento de Modelos por Papel
|
|
43
|
+
|
|
44
|
+
**REGRA OBRIGATORIA:** Ao spawnar QUALQUER agente via Task() ou Agent(), incluir o parametro `model` baseado nesta tabela. Usar os valores de $MODEL_* extraidos do builder-defaults.md (Estagio 1.1).
|
|
45
|
+
|
|
46
|
+
| Papel | Variavel | Agentes | Default |
|
|
47
|
+
|-------|----------|---------|---------|
|
|
48
|
+
| **Planning** | $MODEL_PLANNING | up-arquiteto, up-product-analyst, up-system-designer, up-planejador, up-roteirista | opus |
|
|
49
|
+
| **Execution** | $MODEL_EXECUTION | up-executor, up-frontend-specialist, up-backend-specialist, up-database-specialist | sonnet |
|
|
50
|
+
| **Verification** | $MODEL_VERIFICATION | up-verificador, up-code-reviewer, up-blind-validator, up-requirements-validator | opus |
|
|
51
|
+
| **Detection** | $MODEL_DETECTION | up-visual-critic, up-exhaustive-tester, up-api-tester | sonnet |
|
|
52
|
+
| **Research** | $MODEL_RESEARCH | up-pesquisador-projeto, up-pesquisador-mercado, up-mapeador-codigo, up-sintetizador | sonnet |
|
|
53
|
+
| **Quality** | $MODEL_QUALITY | up-qa-agent, up-security-reviewer, up-auditor-ux, up-auditor-performance, up-auditor-modernidade, up-sintetizador-melhorias, up-consolidador-ideias, up-devops-agent, up-technical-writer | opus |
|
|
54
|
+
|
|
55
|
+
**Exemplo de aplicacao:**
|
|
56
|
+
```python
|
|
57
|
+
# ANTES (sem model routing):
|
|
58
|
+
Task(subagent_type="up-executor", prompt="...")
|
|
59
|
+
|
|
60
|
+
# DEPOIS (com model routing):
|
|
61
|
+
Task(subagent_type="up-executor", model="$MODEL_EXECUTION", prompt="...")
|
|
62
|
+
|
|
63
|
+
# Equivale a (com defaults):
|
|
64
|
+
Task(subagent_type="up-executor", model="sonnet", prompt="...")
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Ao spawnar qualquer agente, SEMPRE:**
|
|
68
|
+
1. Identificar o papel do agente na tabela acima
|
|
69
|
+
2. Usar a variavel $MODEL_* correspondente como parametro model
|
|
70
|
+
3. Se a variavel nao foi definida (sem builder-defaults), usar o default da tabela
|
|
71
|
+
</model_routing>
|
|
72
|
+
|
|
41
73
|
<process>
|
|
42
74
|
|
|
43
75
|
## Estagio 1: INTAKE (Interativo)
|
|
@@ -100,6 +132,24 @@ DEFAULTS_PATH="$HOME/.claude/up/builder-defaults.md"
|
|
|
100
132
|
|
|
101
133
|
Ler `$DEFAULTS_PATH` se existir. Se nao existir, informar: "Sem builder-defaults.md. Usando inferencia inteligente para decisoes nao especificadas. Crie ~/.claude/up/builder-defaults.md para personalizar."
|
|
102
134
|
|
|
135
|
+
**Extrair configuracao de modelos:**
|
|
136
|
+
|
|
137
|
+
Se builder-defaults.md existe, procurar secao "## Modelos por Papel" e extrair mapeamento:
|
|
138
|
+
```
|
|
139
|
+
$MODEL_PLANNING = modelo para planning (default: opus)
|
|
140
|
+
$MODEL_EXECUTION = modelo para execution (default: sonnet)
|
|
141
|
+
$MODEL_VERIFICATION = modelo para verification (default: opus)
|
|
142
|
+
$MODEL_DETECTION = modelo para detection (default: sonnet)
|
|
143
|
+
$MODEL_RESEARCH = modelo para research (default: sonnet)
|
|
144
|
+
$MODEL_QUALITY = modelo para quality (default: opus)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Se secao nao existe: usar defaults acima (opus planeja, sonnet executa, opus verifica).
|
|
148
|
+
|
|
149
|
+
**IMPORTANTE — Sonnet-ready planning:**
|
|
150
|
+
Se `$MODEL_EXECUTION = sonnet`, setar flag `$SONNET_EXECUTION = true`.
|
|
151
|
+
Isso ativa nivel extra de detalhe nos planos (ver planejador Sonnet-ready mode).
|
|
152
|
+
|
|
103
153
|
**Detectar modo automaticamente:**
|
|
104
154
|
|
|
105
155
|
```bash
|
|
@@ -504,7 +554,7 @@ Escrever .plano/PRODUCT-ANALYSIS.md
|
|
|
504
554
|
Commit apos escrever.
|
|
505
555
|
Retornar: ## PRODUCT ANALYSIS COMPLETE
|
|
506
556
|
</output>
|
|
507
|
-
", subagent_type="up-product-analyst", description="Analisar produto e mercado")
|
|
557
|
+
", subagent_type="up-product-analyst", model="$MODEL_PLANNING", description="Analisar produto e mercado")
|
|
508
558
|
```
|
|
509
559
|
|
|
510
560
|
Verificar retorno `## PRODUCT ANALYSIS COMPLETE`. Se falhou: registrar e continuar (System Designer usara blueprints como fallback).
|
|
@@ -553,7 +603,7 @@ Escrever .plano/SYSTEM-DESIGN.md
|
|
|
553
603
|
Commit apos escrever.
|
|
554
604
|
Retornar: ## SYSTEM DESIGN COMPLETE
|
|
555
605
|
</output>
|
|
556
|
-
", subagent_type="up-system-designer", description="Projetar sistema completo")
|
|
606
|
+
", subagent_type="up-system-designer", model="$MODEL_PLANNING", description="Projetar sistema completo")
|
|
557
607
|
```
|
|
558
608
|
|
|
559
609
|
```
|
|
@@ -616,7 +666,7 @@ Se brownfield:
|
|
|
616
666
|
- parallelization=true
|
|
617
667
|
- Commit todos arquivos ao final
|
|
618
668
|
</constraints>
|
|
619
|
-
", subagent_type="up-arquiteto", description="Estruturar projeto executavel")
|
|
669
|
+
", subagent_type="up-arquiteto", model="$MODEL_PLANNING", description="Estruturar projeto executavel")
|
|
620
670
|
```
|
|
621
671
|
|
|
622
672
|
### 2.7 Validar Requisitos (Quality Gate de Planejamento)
|
|
@@ -630,6 +680,7 @@ Validando requisitos (13 checks)...
|
|
|
630
680
|
```
|
|
631
681
|
Task(
|
|
632
682
|
subagent_type="up-requirements-validator",
|
|
683
|
+
model="$MODEL_VERIFICATION",
|
|
633
684
|
prompt="
|
|
634
685
|
<objective>
|
|
635
686
|
Validar REQUIREMENTS.md com 13 checks automaticos.
|
|
@@ -814,13 +865,14 @@ Para cada fase no ROADMAP (da primeira a ultima):
|
|
|
814
865
|
|
|
815
866
|
#### 3.1.1 Planejar Fase
|
|
816
867
|
|
|
817
|
-
Spawnar up-planejador com flag de modo builder:
|
|
868
|
+
Spawnar up-planejador com flag de modo builder e modelo de planning:
|
|
818
869
|
|
|
819
870
|
```
|
|
820
871
|
Task(prompt="
|
|
821
872
|
<planning_context>
|
|
822
873
|
**Fase:** {phase_number}
|
|
823
874
|
**Modo:** builder (autonomo -- NAO use AskUserQuestion)
|
|
875
|
+
<sonnet_execution>{$SONNET_EXECUTION}</sonnet_execution>
|
|
824
876
|
|
|
825
877
|
<files_to_read>
|
|
826
878
|
- .plano/STATE.md (Estado do Projeto)
|
|
@@ -862,15 +914,35 @@ Se algo falhar, corrija antes de retornar.
|
|
|
862
914
|
Escrever PLAN.md em: .plano/fases/{phase_dir}/
|
|
863
915
|
Retornar: ## PLANNING COMPLETE com resumo dos planos
|
|
864
916
|
</output>
|
|
865
|
-
", subagent_type="up-planejador", description="Planejar Fase {phase_number}")
|
|
917
|
+
", subagent_type="up-planejador", model="$MODEL_PLANNING", description="Planejar Fase {phase_number}")
|
|
866
918
|
```
|
|
867
919
|
|
|
868
920
|
Verificar retorno:
|
|
869
|
-
- `## PLANNING COMPLETE` → prosseguir para
|
|
921
|
+
- `## PLANNING COMPLETE` → prosseguir para quality gate do plano
|
|
870
922
|
- `## PLANNING INCONCLUSIVE` → tentar novamente com mais contexto (max 2 tentativas)
|
|
871
923
|
|
|
924
|
+
**Quality Gate do Plano (se $SONNET_EXECUTION = true):**
|
|
925
|
+
|
|
926
|
+
Antes de passar pro executor, verificar qualidade do plano rapidamente:
|
|
927
|
+
```bash
|
|
928
|
+
# Contar tarefas com detalhamento insuficiente
|
|
929
|
+
for plan in .plano/fases/{phase_dir}/*-PLAN.md; do
|
|
930
|
+
# Checar se tem imports/schemas/endpoints explicitados
|
|
931
|
+
DETAIL_SCORE=0
|
|
932
|
+
grep -c "import \|from '" "$plan" > /dev/null && DETAIL_SCORE=$((DETAIL_SCORE+1))
|
|
933
|
+
grep -c "interface \|type \|schema\|z\.\|zod" "$plan" > /dev/null && DETAIL_SCORE=$((DETAIL_SCORE+1))
|
|
934
|
+
grep -c "POST \|GET \|PUT \|DELETE \|endpoint\|route" "$plan" > /dev/null && DETAIL_SCORE=$((DETAIL_SCORE+1))
|
|
935
|
+
grep -c "CREATE TABLE\|migration\|ALTER" "$plan" > /dev/null && DETAIL_SCORE=$((DETAIL_SCORE+1))
|
|
936
|
+
echo "$plan: detail_score=$DETAIL_SCORE"
|
|
937
|
+
done
|
|
938
|
+
```
|
|
939
|
+
|
|
940
|
+
Se algum plano tem detail_score < 2 e a fase tem mais de 3 tarefas:
|
|
941
|
+
- Re-spawnar planejador com instrucao extra: "Plano insuficientemente detalhado para executor Sonnet. Reescrever com imports, tipos, schemas e endpoints explicitos. Ver self-check Sonnet-ready."
|
|
942
|
+
- Max 1 re-tentativa de enriquecimento
|
|
943
|
+
|
|
872
944
|
```
|
|
873
|
-
Fase {X}: Planejada — {N} planos em {M} waves
|
|
945
|
+
Fase {X}: Planejada — {N} planos em {M} waves [Sonnet-ready: {score}]
|
|
874
946
|
```
|
|
875
947
|
|
|
876
948
|
#### 3.1.2 Executar Fase (com Specialist Routing)
|
|
@@ -914,6 +986,7 @@ Para cada wave, spawnar agentes especializados em paralelo (se parallelization=t
|
|
|
914
986
|
```
|
|
915
987
|
Task(
|
|
916
988
|
subagent_type="{up-frontend-specialist | up-backend-specialist | up-database-specialist | up-executor}",
|
|
989
|
+
model="$MODEL_EXECUTION",
|
|
917
990
|
prompt="
|
|
918
991
|
<objective>
|
|
919
992
|
Executar plano {plan_number} da fase {phase_number}-{phase_name}.
|
|
@@ -976,6 +1049,7 @@ Spawnar code reviewer:
|
|
|
976
1049
|
```
|
|
977
1050
|
Task(
|
|
978
1051
|
subagent_type="up-code-reviewer",
|
|
1052
|
+
model="$MODEL_VERIFICATION",
|
|
979
1053
|
prompt="
|
|
980
1054
|
<objective>
|
|
981
1055
|
Revisar codigo da fase {phase_number} contra production-requirements e padroes de qualidade.
|
|
@@ -1031,7 +1105,8 @@ Modo builder. NAO use AskUserQuestion.
|
|
|
1031
1105
|
- Criar VERIFICATION.md
|
|
1032
1106
|
</builder_mode>
|
|
1033
1107
|
",
|
|
1034
|
-
subagent_type="up-verificador"
|
|
1108
|
+
subagent_type="up-verificador",
|
|
1109
|
+
model="$MODEL_VERIFICATION"
|
|
1035
1110
|
)
|
|
1036
1111
|
```
|
|
1037
1112
|
|
|
@@ -1527,6 +1602,7 @@ Relatorio em .plano/ideias/RELATORIO.md
|
|
|
1527
1602
|
```
|
|
1528
1603
|
Task(
|
|
1529
1604
|
subagent_type="up-blind-validator",
|
|
1605
|
+
model="$MODEL_VERIFICATION",
|
|
1530
1606
|
prompt="
|
|
1531
1607
|
<objective>
|
|
1532
1608
|
Validar requisitos SEM ler codigo. Apenas navegar o app via Playwright e curl.
|
|
@@ -1678,6 +1754,7 @@ Spawnar devops agent:
|
|
|
1678
1754
|
```
|
|
1679
1755
|
Task(
|
|
1680
1756
|
subagent_type="up-devops-agent",
|
|
1757
|
+
model="$MODEL_QUALITY",
|
|
1681
1758
|
prompt="
|
|
1682
1759
|
<objective>
|
|
1683
1760
|
Gerar artefatos de producao para o projeto: Dockerfile, docker-compose, CI/CD, .env.example, seed data, scripts.
|
|
@@ -1716,6 +1793,7 @@ Spawnar technical writer:
|
|
|
1716
1793
|
```
|
|
1717
1794
|
Task(
|
|
1718
1795
|
subagent_type="up-technical-writer",
|
|
1796
|
+
model="$MODEL_QUALITY",
|
|
1719
1797
|
prompt="
|
|
1720
1798
|
<objective>
|
|
1721
1799
|
Gerar documentacao completa: README.md, API docs, CHANGELOG.md, setup guide.
|
|
@@ -1757,6 +1835,7 @@ Spawnar security reviewer:
|
|
|
1757
1835
|
```
|
|
1758
1836
|
Task(
|
|
1759
1837
|
subagent_type="up-security-reviewer",
|
|
1838
|
+
model="$MODEL_QUALITY",
|
|
1760
1839
|
prompt="
|
|
1761
1840
|
<objective>
|
|
1762
1841
|
Auditar codigo para vulnerabilidades de seguranca (OWASP Top 10, auth, injection, data exposure).
|
|
@@ -1794,6 +1873,7 @@ Spawnar QA agent:
|
|
|
1794
1873
|
```
|
|
1795
1874
|
Task(
|
|
1796
1875
|
subagent_type="up-qa-agent",
|
|
1876
|
+
model="$MODEL_QUALITY",
|
|
1797
1877
|
prompt="
|
|
1798
1878
|
<objective>
|
|
1799
1879
|
Identificar gaps de cobertura de testes, escrever testes que faltam, executar todos.
|