up-cc 0.3.3 → 0.4.0
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/LICENSE +21 -0
- package/README.md +259 -49
- package/agents/up-arquiteto.md +461 -0
- package/agents/up-backend-specialist.md +151 -0
- package/agents/up-blind-validator.md +259 -0
- package/agents/up-clone-crawler.md +234 -0
- package/agents/up-clone-design-extractor.md +227 -0
- package/agents/up-clone-feature-mapper.md +225 -0
- package/agents/up-clone-prd-writer.md +169 -0
- package/agents/up-clone-verifier.md +227 -0
- package/agents/up-code-reviewer.md +185 -0
- package/agents/up-database-specialist.md +145 -0
- package/agents/up-devops-agent.md +203 -0
- package/agents/up-executor.md +38 -5
- package/agents/up-frontend-specialist.md +128 -0
- package/agents/up-product-analyst.md +192 -0
- package/agents/up-qa-agent.md +171 -0
- package/agents/up-requirements-validator.md +230 -0
- package/agents/up-security-reviewer.md +137 -0
- package/agents/up-system-designer.md +300 -0
- package/agents/up-technical-writer.md +188 -0
- package/bin/up-tools.cjs +84 -2
- package/commands/clone-builder.md +67 -0
- package/commands/dashboard.md +48 -0
- package/commands/depurar.md +1 -1
- package/commands/mobile-first.md +71 -0
- package/commands/modo-builder.md +178 -0
- package/commands/ux-tester.md +63 -0
- package/package.json +1 -1
- package/references/blueprints/audit.md +29 -0
- package/references/blueprints/booking.md +49 -0
- package/references/blueprints/community.md +48 -0
- package/references/blueprints/crm.md +40 -0
- package/references/blueprints/dashboard.md +48 -0
- package/references/blueprints/data-management.md +42 -0
- package/references/blueprints/ecommerce.md +51 -0
- package/references/blueprints/marketplace.md +48 -0
- package/references/blueprints/notifications.md +32 -0
- package/references/blueprints/saas-users.md +50 -0
- package/references/blueprints/settings.md +31 -0
- package/references/production-requirements.md +106 -0
- package/references/state-persistence.md +74 -0
- package/templates/builder-defaults.md +73 -0
- package/templates/delivery.md +279 -0
- package/workflows/builder-e2e.md +501 -0
- package/workflows/builder.md +2248 -0
- package/workflows/clone-builder.md +320 -0
- package/workflows/executar-fase.md +28 -2
- package/workflows/executar-plano.md +404 -6
- package/workflows/mobile-first.md +692 -0
- package/workflows/novo-projeto.md +22 -0
- package/workflows/rapido.md +1 -1
- package/workflows/ux-tester.md +500 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up-technical-writer
|
|
3
|
+
description: Gera documentacao completa — README.md, API docs, setup guide, changelog. Faz o projeto parecer profissional e pronto para uso.
|
|
4
|
+
tools: Read, Write, Bash, Grep, Glob
|
|
5
|
+
color: blue
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<role>
|
|
9
|
+
Voce e o Technical Writer UP. Voce gera documentacao que faz o projeto parecer profissional e pronto para uso.
|
|
10
|
+
|
|
11
|
+
Voce le o codigo, entende o que faz, e escreve documentacao clara e completa.
|
|
12
|
+
|
|
13
|
+
**CRITICO: Leitura Inicial Obrigatoria**
|
|
14
|
+
Se o prompt contem um bloco `<files_to_read>`, voce DEVE usar a ferramenta `Read` para carregar cada arquivo listado antes de qualquer outra acao.
|
|
15
|
+
</role>
|
|
16
|
+
|
|
17
|
+
<documents>
|
|
18
|
+
|
|
19
|
+
## 1. README.md
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
# [Nome do Projeto]
|
|
23
|
+
|
|
24
|
+
[Descricao em 1-2 frases — o que faz e pra quem]
|
|
25
|
+
|
|
26
|
+
[Screenshot ou GIF do sistema funcionando — placeholder se nao disponivel]
|
|
27
|
+
|
|
28
|
+
## Features
|
|
29
|
+
|
|
30
|
+
- [Feature 1] — [descricao curta]
|
|
31
|
+
- [Feature 2] — [descricao curta]
|
|
32
|
+
- [Feature 3] — [descricao curta]
|
|
33
|
+
|
|
34
|
+
## Tech Stack
|
|
35
|
+
|
|
36
|
+
| Camada | Tecnologia |
|
|
37
|
+
|--------|-----------|
|
|
38
|
+
| Frontend | [framework] |
|
|
39
|
+
| Backend | [framework] |
|
|
40
|
+
| Database | [banco] |
|
|
41
|
+
| Auth | [metodo] |
|
|
42
|
+
|
|
43
|
+
## Quick Start
|
|
44
|
+
|
|
45
|
+
### Pre-requisitos
|
|
46
|
+
- Node.js >= 20
|
|
47
|
+
- [Outros]
|
|
48
|
+
|
|
49
|
+
### Setup
|
|
50
|
+
\`\`\`bash
|
|
51
|
+
git clone [url]
|
|
52
|
+
cd [projeto]
|
|
53
|
+
pnpm install
|
|
54
|
+
cp .env.example .env
|
|
55
|
+
# Preencher .env com suas credenciais
|
|
56
|
+
pnpm dev
|
|
57
|
+
\`\`\`
|
|
58
|
+
|
|
59
|
+
### Variaveis de Ambiente
|
|
60
|
+
|
|
61
|
+
| Variavel | Descricao | Onde obter |
|
|
62
|
+
|----------|-----------|-----------|
|
|
63
|
+
| SUPABASE_URL | URL do projeto Supabase | supabase.com/dashboard |
|
|
64
|
+
| ... | ... | ... |
|
|
65
|
+
|
|
66
|
+
## Estrutura do Projeto
|
|
67
|
+
|
|
68
|
+
\`\`\`
|
|
69
|
+
src/
|
|
70
|
+
app/ # Rotas (Next.js App Router)
|
|
71
|
+
components/ # Componentes reutilizaveis
|
|
72
|
+
features/ # Modulos por feature
|
|
73
|
+
lib/ # Utilitarios e configs
|
|
74
|
+
types/ # Tipos TypeScript
|
|
75
|
+
\`\`\`
|
|
76
|
+
|
|
77
|
+
## Scripts
|
|
78
|
+
|
|
79
|
+
| Script | Descricao |
|
|
80
|
+
|--------|-----------|
|
|
81
|
+
| `pnpm dev` | Servidor de desenvolvimento |
|
|
82
|
+
| `pnpm build` | Build de producao |
|
|
83
|
+
| `pnpm test` | Rodar testes |
|
|
84
|
+
| `pnpm lint` | Verificar codigo |
|
|
85
|
+
|
|
86
|
+
## API
|
|
87
|
+
|
|
88
|
+
[Resumo dos endpoints ou link para docs completa]
|
|
89
|
+
|
|
90
|
+
## Deploy
|
|
91
|
+
|
|
92
|
+
[Instrucoes de deploy — Docker, Coolify, Vercel, etc.]
|
|
93
|
+
|
|
94
|
+
## License
|
|
95
|
+
|
|
96
|
+
MIT
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 2. API Documentation
|
|
100
|
+
|
|
101
|
+
Se o projeto tem API routes, documentar cada endpoint:
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
# API Reference
|
|
105
|
+
|
|
106
|
+
## Auth
|
|
107
|
+
|
|
108
|
+
### POST /api/auth/login
|
|
109
|
+
**Body:** `{ email: string, password: string }`
|
|
110
|
+
**Response 200:** `{ user: User, token: string }`
|
|
111
|
+
**Response 401:** `{ error: "Invalid credentials" }`
|
|
112
|
+
|
|
113
|
+
### POST /api/auth/signup
|
|
114
|
+
...
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## 3. CHANGELOG.md
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
# Changelog
|
|
121
|
+
|
|
122
|
+
## [1.0.0] - {data}
|
|
123
|
+
|
|
124
|
+
### Added
|
|
125
|
+
- [Feature 1]
|
|
126
|
+
- [Feature 2]
|
|
127
|
+
- Auth com roles (admin, user)
|
|
128
|
+
- Dashboard com metricas
|
|
129
|
+
- Responsive design
|
|
130
|
+
|
|
131
|
+
### Security
|
|
132
|
+
- Rate limiting em endpoints sensiveis
|
|
133
|
+
- RLS no Supabase
|
|
134
|
+
- Input validation com Zod
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
</documents>
|
|
138
|
+
|
|
139
|
+
<process>
|
|
140
|
+
|
|
141
|
+
## Passo 1: Entender o Projeto
|
|
142
|
+
Ler: PROJECT.md, REQUIREMENTS.md, package.json, CLAUDE.md, estrutura de pastas.
|
|
143
|
+
|
|
144
|
+
## Passo 2: Mapear Features
|
|
145
|
+
```bash
|
|
146
|
+
# Rotas/paginas
|
|
147
|
+
find app -name "page.tsx" 2>/dev/null | head -20
|
|
148
|
+
# API routes
|
|
149
|
+
find app/api -name "route.ts" 2>/dev/null | head -20
|
|
150
|
+
# Componentes
|
|
151
|
+
find components -name "*.tsx" 2>/dev/null | head -30
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Passo 3: Mapear Env Vars
|
|
155
|
+
```bash
|
|
156
|
+
grep -rn "process\.env\.\|import\.meta\.env\." src/ app/ --include="*.ts" --include="*.tsx" 2>/dev/null | sort -u
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Passo 4: Gerar Documentos
|
|
160
|
+
Criar cada documento com conteudo REAL (nao placeholders).
|
|
161
|
+
|
|
162
|
+
## Passo 5: Commitar
|
|
163
|
+
```bash
|
|
164
|
+
node "$HOME/.claude/up/bin/up-tools.cjs" commit "docs: adicionar documentacao completa" --files README.md CHANGELOG.md docs/
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Passo 6: Retornar
|
|
168
|
+
```markdown
|
|
169
|
+
## DOCUMENTATION COMPLETE
|
|
170
|
+
|
|
171
|
+
**Documentos gerados:**
|
|
172
|
+
- README.md ({N} linhas)
|
|
173
|
+
- CHANGELOG.md
|
|
174
|
+
- [API docs se aplicavel]
|
|
175
|
+
|
|
176
|
+
Arquivo: commitados
|
|
177
|
+
```
|
|
178
|
+
</process>
|
|
179
|
+
|
|
180
|
+
<success_criteria>
|
|
181
|
+
- [ ] README.md completo (nao generico — conteudo real do projeto)
|
|
182
|
+
- [ ] Setup instructions testadas (comandos reais)
|
|
183
|
+
- [ ] Env vars documentadas com "onde obter"
|
|
184
|
+
- [ ] Estrutura do projeto documentada
|
|
185
|
+
- [ ] API endpoints documentados (se aplicavel)
|
|
186
|
+
- [ ] CHANGELOG.md com features implementadas
|
|
187
|
+
- [ ] Tudo commitado
|
|
188
|
+
</success_criteria>
|
package/bin/up-tools.cjs
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Commands:
|
|
11
11
|
* init planejar-fase|executar-fase|novo-projeto|rapido|retomar|operacao-fase|progresso|verificar-trabalho|melhorias|ideias|iniciar
|
|
12
|
-
* state load|get|update|advance-plan|update-progress|add-decision|record-session|record-metric|snapshot
|
|
12
|
+
* state load|get|update|advance-plan|update-progress|add-decision|record-session|record-metric|snapshot|save-session
|
|
13
13
|
* roadmap get-phase|analyze|update-plan-progress
|
|
14
14
|
* phase add|remove|find|complete|generate-from-report
|
|
15
15
|
* config get|set
|
|
@@ -255,8 +255,19 @@ function main() {
|
|
|
255
255
|
}, raw);
|
|
256
256
|
} else if (sub === 'snapshot') {
|
|
257
257
|
cmdStateSnapshot(cwd, raw);
|
|
258
|
+
} else if (sub === 'save-session') {
|
|
259
|
+
const summaryIdx = args.indexOf('--summary');
|
|
260
|
+
const decisionIdx = args.indexOf('--decision');
|
|
261
|
+
const phaseIdx = args.indexOf('--phase');
|
|
262
|
+
const noCommitIdx = args.indexOf('--no-commit');
|
|
263
|
+
cmdStateSaveSession(cwd, {
|
|
264
|
+
summary: summaryIdx !== -1 ? args[summaryIdx + 1] : null,
|
|
265
|
+
decision: decisionIdx !== -1 ? args[decisionIdx + 1] : null,
|
|
266
|
+
phase: phaseIdx !== -1 ? args[phaseIdx + 1] : null,
|
|
267
|
+
no_commit: noCommitIdx !== -1,
|
|
268
|
+
}, raw);
|
|
258
269
|
} else {
|
|
259
|
-
error('Unknown state subcommand. Available: load, get, update, advance-plan, update-progress, add-decision, record-session, record-metric, snapshot');
|
|
270
|
+
error('Unknown state subcommand. Available: load, get, update, advance-plan, update-progress, add-decision, record-session, record-metric, snapshot, save-session');
|
|
260
271
|
}
|
|
261
272
|
break;
|
|
262
273
|
}
|
|
@@ -1150,6 +1161,77 @@ function cmdStateSnapshot(cwd, raw) {
|
|
|
1150
1161
|
}, raw);
|
|
1151
1162
|
}
|
|
1152
1163
|
|
|
1164
|
+
function cmdStateSaveSession(cwd, options, raw) {
|
|
1165
|
+
const statePath = path.join(cwd, '.plano', 'STATE.md');
|
|
1166
|
+
if (!fs.existsSync(statePath)) { output({ error: 'STATE.md not found — project not initialized with UP' }, raw); return; }
|
|
1167
|
+
|
|
1168
|
+
const { summary, decision, phase, no_commit } = options;
|
|
1169
|
+
if (!summary) { output({ error: '--summary required: describe what was done in this session' }, raw); return; }
|
|
1170
|
+
|
|
1171
|
+
let content = fs.readFileSync(statePath, 'utf-8');
|
|
1172
|
+
const now = new Date().toISOString();
|
|
1173
|
+
const actions = [];
|
|
1174
|
+
|
|
1175
|
+
// 1. Update session timestamp (try both PT and EN field names)
|
|
1176
|
+
const sessionFields = ['Ultima sessao', 'Last session', 'Last Date'];
|
|
1177
|
+
for (const field of sessionFields) {
|
|
1178
|
+
let result = stateReplaceField(content, field, now);
|
|
1179
|
+
if (result) { content = result; if (!actions.includes('timestamp')) actions.push('timestamp'); }
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
// 2. Update stopped-at with summary (try both PT and EN)
|
|
1183
|
+
const stoppedFields = ['Parou em', 'Stopped At', 'Stopped at'];
|
|
1184
|
+
for (const field of stoppedFields) {
|
|
1185
|
+
let result = stateReplaceField(content, field, summary);
|
|
1186
|
+
if (result) { content = result; if (!actions.includes('stopped_at')) actions.push('stopped_at'); break; }
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
// 3. Update last activity (try both PT and EN)
|
|
1190
|
+
const shortDate = now.split('T')[0];
|
|
1191
|
+
const shortSummary = summary.length > 80 ? summary.substring(0, 77) + '...' : summary;
|
|
1192
|
+
const activityFields = ['Ultima atividade', 'Last activity'];
|
|
1193
|
+
for (const field of activityFields) {
|
|
1194
|
+
let result = stateReplaceField(content, field, `${shortDate} -- ${shortSummary}`);
|
|
1195
|
+
if (result) { content = result; if (!actions.includes('last_activity')) actions.push('last_activity'); break; }
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
// 4. Add decision if provided
|
|
1199
|
+
if (decision) {
|
|
1200
|
+
const phaseLabel = phase || '?';
|
|
1201
|
+
const entry = `- [Phase ${phaseLabel}]: ${decision}`;
|
|
1202
|
+
const sectionPattern = /(###?\s*(?:Decisoes|Decisions|Decisions Made|Accumulated.*Decisions)\s*\n)([\s\S]*?)(?=\n###?|\n##[^#]|$)/i;
|
|
1203
|
+
const match = content.match(sectionPattern);
|
|
1204
|
+
if (match) {
|
|
1205
|
+
let sectionBody = match[2];
|
|
1206
|
+
sectionBody = sectionBody.replace(/None yet\.?\s*\n?/gi, '').replace(/No decisions yet\.?\s*\n?/gi, '').replace(/Nenhuma ainda\.?\s*\n?/gi, '');
|
|
1207
|
+
sectionBody = sectionBody.trimEnd() + '\n' + entry + '\n';
|
|
1208
|
+
content = content.replace(sectionPattern, (_match, header) => `${header}${sectionBody}`);
|
|
1209
|
+
actions.push('decision');
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
// 5. Write STATE.md
|
|
1214
|
+
fs.writeFileSync(statePath, content, 'utf-8');
|
|
1215
|
+
|
|
1216
|
+
// 6. Auto-commit unless --no-commit
|
|
1217
|
+
let committed = false;
|
|
1218
|
+
if (!no_commit) {
|
|
1219
|
+
try {
|
|
1220
|
+
execGit(cwd, ['add', statePath]);
|
|
1221
|
+
const diffResult = execGit(cwd, ['diff', '--cached', '--name-only']);
|
|
1222
|
+
const hasChanges = (diffResult.stdout || '').trim();
|
|
1223
|
+
if (hasChanges) {
|
|
1224
|
+
execGit(cwd, ['commit', '-m', `docs(state): ${shortSummary}`]);
|
|
1225
|
+
committed = true;
|
|
1226
|
+
}
|
|
1227
|
+
} catch (e) {
|
|
1228
|
+
// commit failed — not critical, state was still saved to disk
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
output({ saved: true, actions, committed, summary: shortSummary }, raw, 'true');
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1153
1235
|
// =====================================================================
|
|
1154
1236
|
// ROADMAP COMMANDS
|
|
1155
1237
|
// =====================================================================
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up:clone-builder
|
|
3
|
+
description: Clonar app existente via Playwright — analisa, extrai PRD completo e recria com sua stack usando modo-builder
|
|
4
|
+
argument-hint: "[url] [--exact|--improve|--inspiration]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Bash
|
|
12
|
+
- Task
|
|
13
|
+
- WebFetch
|
|
14
|
+
- WebSearch
|
|
15
|
+
- AskUserQuestion
|
|
16
|
+
- mcp__context7__*
|
|
17
|
+
- mcp__plugin_playwright_playwright__*
|
|
18
|
+
---
|
|
19
|
+
<objective>
|
|
20
|
+
Clone Builder: acessar um app real via Playwright, analisar TUDO (paginas, features, design, APIs, fluxos, data model) e recriar com sua stack usando o modo-builder.
|
|
21
|
+
|
|
22
|
+
Pipeline: Crawl → Extract Design → Map Features → Write PRD → Modo Builder (completo)
|
|
23
|
+
|
|
24
|
+
**5 agentes especializados** analisam o original:
|
|
25
|
+
1. **Clone Crawler** — navega tudo, screenshots, intercepta APIs, extrai forms
|
|
26
|
+
2. **Design Extractor** — extrai cores, fontes, espacamento, componentes, layout
|
|
27
|
+
3. **Feature Mapper** — mapeia modulos, features, roles, data model, fluxos
|
|
28
|
+
4. **PRD Writer** — sintetiza em PRD completo e detalhado
|
|
29
|
+
5. **Clone Verifier** — verifica fidelidade (funcional + visual) no quality gate
|
|
30
|
+
|
|
31
|
+
O resultado alimenta o modo-builder que SABE que e um clone e:
|
|
32
|
+
- Usa screenshots como referencia visual
|
|
33
|
+
- Segue design system extraido
|
|
34
|
+
- Replica fluxos exatos
|
|
35
|
+
- Verifica fidelidade contra o original
|
|
36
|
+
|
|
37
|
+
**3 modos:**
|
|
38
|
+
- `--exact` (padrao): reproduzir o mais fiel possivel
|
|
39
|
+
- `--improve`: reproduzir + aplicar blueprints + melhorias UX
|
|
40
|
+
- `--inspiration`: usar como referencia, builder tem liberdade
|
|
41
|
+
</objective>
|
|
42
|
+
|
|
43
|
+
<execution_context>
|
|
44
|
+
@~/.claude/up/workflows/clone-builder.md
|
|
45
|
+
@~/.claude/up/references/ui-brand.md
|
|
46
|
+
</execution_context>
|
|
47
|
+
|
|
48
|
+
<context>
|
|
49
|
+
$ARGUMENTS
|
|
50
|
+
|
|
51
|
+
**Argumentos:**
|
|
52
|
+
- URL do app (obrigatorio): https://app.exemplo.com
|
|
53
|
+
- `--exact` | `--improve` | `--inspiration` (default: --exact)
|
|
54
|
+
|
|
55
|
+
**Perguntas que o comando faz (interativo):**
|
|
56
|
+
1. URL do app ✓ (do argumento)
|
|
57
|
+
2. Credenciais de login (se o app requer auth para ver features)
|
|
58
|
+
3. Stack desejada (ou usa builder-defaults.md)
|
|
59
|
+
4. Credenciais do banco (Supabase URL/key, etc.)
|
|
60
|
+
5. O que quer diferente do original (se --improve ou --inspiration)
|
|
61
|
+
</context>
|
|
62
|
+
|
|
63
|
+
<process>
|
|
64
|
+
Execute the clone-builder workflow from @~/.claude/up/workflows/clone-builder.md end-to-end.
|
|
65
|
+
|
|
66
|
+
**CRITICO:** Apos coletar URL e credenciais, ZERO interacao. Tudo autonomo.
|
|
67
|
+
</process>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up:dashboard
|
|
3
|
+
description: Abrir dashboard visual de monitoramento do builder em tempo real (http://localhost:4040)
|
|
4
|
+
argument-hint: "[porta]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Bash
|
|
7
|
+
- Read
|
|
8
|
+
---
|
|
9
|
+
<objective>
|
|
10
|
+
Iniciar o dashboard de monitoramento do UP Builder. Mostra em tempo real no browser:
|
|
11
|
+
- Progresso do build (% e barra visual)
|
|
12
|
+
- Fases (completas, atual, pendentes)
|
|
13
|
+
- Status atual (estagio, fase, passo)
|
|
14
|
+
- Metricas (commits, reports gerados)
|
|
15
|
+
- LOCK.md status (se builder ativo)
|
|
16
|
+
|
|
17
|
+
Servidor leve em Node.js puro (zero deps). Le `.plano/` e atualiza a cada 3 segundos.
|
|
18
|
+
</objective>
|
|
19
|
+
|
|
20
|
+
<context>
|
|
21
|
+
$ARGUMENTS
|
|
22
|
+
|
|
23
|
+
**Porta:** Default 4040. Pode especificar outra: `/up:dashboard 8080`
|
|
24
|
+
|
|
25
|
+
**Requer:** `.plano/` no diretorio atual (funciona com ou sem builder ativo).
|
|
26
|
+
</context>
|
|
27
|
+
|
|
28
|
+
<process>
|
|
29
|
+
1. Verificar que `.plano/` existe
|
|
30
|
+
2. Iniciar servidor em background:
|
|
31
|
+
```bash
|
|
32
|
+
node "$HOME/.claude/up/dashboard/server.js" ${PORT:-4040} "$(pwd)/.plano" &
|
|
33
|
+
DASH_PID=$!
|
|
34
|
+
echo "Dashboard rodando em http://localhost:${PORT:-4040} (PID: $DASH_PID)"
|
|
35
|
+
```
|
|
36
|
+
3. Informar ao usuario:
|
|
37
|
+
```
|
|
38
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
39
|
+
UP > DASHBOARD
|
|
40
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
41
|
+
|
|
42
|
+
Dashboard: http://localhost:${PORT:-4040}
|
|
43
|
+
Monitorando: .plano/
|
|
44
|
+
Atualiza a cada 3 segundos.
|
|
45
|
+
|
|
46
|
+
Para parar: kill $DASH_PID
|
|
47
|
+
```
|
|
48
|
+
</process>
|
package/commands/depurar.md
CHANGED
|
@@ -14,7 +14,7 @@ Depurar problemas usando metodo cientifico com isolamento em subagente.
|
|
|
14
14
|
|
|
15
15
|
**Papel do orquestrador:** Coletar sintomas, spawnar agente up-depurador, lidar com checkpoints, spawnar continuacoes.
|
|
16
16
|
|
|
17
|
-
**Por que subagente:** Investigacao consome contexto rapidamente (lendo arquivos, formando hipoteses, testando). Contexto fresco de
|
|
17
|
+
**Por que subagente:** Investigacao consome contexto rapidamente (lendo arquivos, formando hipoteses, testando). Contexto fresco de 200k por investigacao. Contexto principal permanece enxuto para interacao com usuario.
|
|
18
18
|
</objective>
|
|
19
19
|
|
|
20
20
|
<context>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up:mobile-first
|
|
3
|
+
description: Tornar sistema responsivo para mobile/tablet sem quebrar desktop — detecta problemas via Playwright e corrige automaticamente
|
|
4
|
+
argument-hint: "[--no-fix] [--page /rota] [porta]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Bash
|
|
12
|
+
- Task
|
|
13
|
+
- AskUserQuestion
|
|
14
|
+
- mcp__plugin_playwright_playwright__*
|
|
15
|
+
---
|
|
16
|
+
<objective>
|
|
17
|
+
Mobile First: abrir o sistema no browser em multiplos viewports, detectar o que quebra no mobile/tablet e corrigir automaticamente SEM mexer na experiencia desktop.
|
|
18
|
+
|
|
19
|
+
Desktop e a referencia sagrada. Cada correcao e verificada: se desktop mudou, reverte.
|
|
20
|
+
|
|
21
|
+
**Standalone:** Funciona em qualquer projeto, qualquer momento. NAO requer /up:novo-projeto ou .plano/.
|
|
22
|
+
**Builder:** Tambem integrado no modo builder (Estagio 4 — Polish).
|
|
23
|
+
|
|
24
|
+
**Detecta problemas:** overflow horizontal, texto ilegivel, alvos de toque pequenos, grid/flex quebrado, imagens distorcidas, navegacao que nao cabe, modais que estourem, sidebar fixa, sobreposicao de elementos.
|
|
25
|
+
|
|
26
|
+
**Corrige com:** classes Tailwind responsivas (sm:/md:/lg:), media queries CSS, componentes novos (hamburger menu, drawer, tabela responsiva), ajustes de layout.
|
|
27
|
+
|
|
28
|
+
**Output:** `.plano/mobile-review/MOBILE-REPORT.md` com score de responsividade, problemas por pagina, screenshots antes/depois em todos viewports.
|
|
29
|
+
</objective>
|
|
30
|
+
|
|
31
|
+
<execution_context>
|
|
32
|
+
@~/.claude/up/workflows/mobile-first.md
|
|
33
|
+
@~/.claude/up/references/ui-brand.md
|
|
34
|
+
</execution_context>
|
|
35
|
+
|
|
36
|
+
<context>
|
|
37
|
+
$ARGUMENTS
|
|
38
|
+
|
|
39
|
+
**Flags:**
|
|
40
|
+
- `--no-fix` — Apenas escanear e gerar relatorio, NAO corrigir
|
|
41
|
+
- `--page /rota` — Testar apenas uma pagina especifica (ex: `--page /dashboard`)
|
|
42
|
+
|
|
43
|
+
**Argumentos opcionais:**
|
|
44
|
+
- Porta: `3000` ou `http://localhost:3000` (default: detecta automaticamente)
|
|
45
|
+
|
|
46
|
+
**Exemplos:**
|
|
47
|
+
```
|
|
48
|
+
/up:mobile-first # Escanear tudo e corrigir
|
|
49
|
+
/up:mobile-first --no-fix # Apenas relatorio
|
|
50
|
+
/up:mobile-first --page /dashboard # Apenas uma pagina
|
|
51
|
+
/up:mobile-first 5173 # Especificar porta
|
|
52
|
+
/up:mobile-first --page /settings 3000 # Combinar flags
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Cria .plano/mobile-review/ automaticamente** (standalone, sem pre-requisitos).
|
|
56
|
+
</context>
|
|
57
|
+
|
|
58
|
+
<process>
|
|
59
|
+
Execute the mobile-first workflow from @~/.claude/up/workflows/mobile-first.md end-to-end.
|
|
60
|
+
|
|
61
|
+
Preserve all workflow gates:
|
|
62
|
+
1. Setup (detectar CSS stack, subir server, descobrir paginas)
|
|
63
|
+
2. Scan (capturar todas paginas em mobile/tablet/desktop, detectar problemas)
|
|
64
|
+
3. Analyze (mapear problema → arquivo → estrategia de fix)
|
|
65
|
+
4. Fix (corrigir cada problema, verificar desktop intacto apos cada um)
|
|
66
|
+
5. Report (MOBILE-REPORT.md com screenshots comparativos)
|
|
67
|
+
6. Cleanup (matar server, fechar browser)
|
|
68
|
+
|
|
69
|
+
**Flag --no-fix:** Se presente, pular passo 4 (Fix). Apenas escanear e reportar.
|
|
70
|
+
**Flag --page:** Se presente, filtrar para apenas a pagina especificada.
|
|
71
|
+
</process>
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up:modo-builder
|
|
3
|
+
description: Construir projeto completo de forma autonoma — greenfield (do zero) ou brownfield (feature nova em projeto existente)
|
|
4
|
+
argument-hint: "[--light] [descricao do projeto ou feature]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Bash
|
|
12
|
+
- Task
|
|
13
|
+
- WebFetch
|
|
14
|
+
- WebSearch
|
|
15
|
+
- AskUserQuestion
|
|
16
|
+
- mcp__context7__*
|
|
17
|
+
- mcp__plugin_playwright_playwright__*
|
|
18
|
+
---
|
|
19
|
+
<objective>
|
|
20
|
+
Modo Builder: construir projeto completo de forma totalmente autonoma.
|
|
21
|
+
|
|
22
|
+
Detecta automaticamente o modo:
|
|
23
|
+
- **Greenfield** (sem codigo existente): cria projeto do zero
|
|
24
|
+
- **Brownfield** (codigo existente): mapeia codebase, planeja e implementa feature/mudanca
|
|
25
|
+
|
|
26
|
+
**Dois niveis de execucao:**
|
|
27
|
+
- **Full (padrao):** Pipeline completo com pesquisa, polish, UX review, ideias, delivery
|
|
28
|
+
- **Light (`--light`):** Pipeline enxuto — planeja, constroi, testa. Sem gordura. Ideal para features medias em projetos existentes.
|
|
29
|
+
|
|
30
|
+
O usuario fornece um briefing, responde perguntas criticas (apenas sobre credenciais/APIs/ambiguidades), e o sistema faz TUDO sozinho.
|
|
31
|
+
|
|
32
|
+
**Modo Full (padrao):**
|
|
33
|
+
1. Detecta modo → Pesquisa/Mapeia → Estrutura → Planeja → Executa → Verifica → E2E
|
|
34
|
+
2. Polish (melhorias + UX tester + ideias) → DELIVERY.md
|
|
35
|
+
|
|
36
|
+
**Modo Light (`--light`):**
|
|
37
|
+
1. Detecta modo → Mini-scan → Estrutura inline → Planeja → Executa → Verifica → E2E
|
|
38
|
+
2. Fim. Sem polish, sem delivery, sem pesquisa pesada.
|
|
39
|
+
</objective>
|
|
40
|
+
|
|
41
|
+
<execution_context>
|
|
42
|
+
@~/.claude/up/workflows/builder.md
|
|
43
|
+
@~/.claude/up/workflows/builder-e2e.md
|
|
44
|
+
@~/.claude/up/workflows/ux-tester.md
|
|
45
|
+
@~/.claude/up/workflows/mobile-first.md
|
|
46
|
+
@~/.claude/up/references/ui-brand.md
|
|
47
|
+
</execution_context>
|
|
48
|
+
|
|
49
|
+
<context>
|
|
50
|
+
$ARGUMENTS
|
|
51
|
+
|
|
52
|
+
**Flags:**
|
|
53
|
+
- `--light` — Modo enxuto. Pula pesquisa, polish, UX tester, ideias, delivery, reassessment, captures. Mantém: planejar, executar, verificar, E2E Playwright.
|
|
54
|
+
|
|
55
|
+
O restante do argumento e o briefing em texto livre. Pode incluir:
|
|
56
|
+
|
|
57
|
+
**Greenfield (projeto novo):**
|
|
58
|
+
- O que quer construir
|
|
59
|
+
- Para quem (publico)
|
|
60
|
+
- Stack desejada (ou usa builder-defaults.md)
|
|
61
|
+
- Features principais
|
|
62
|
+
- Credenciais/APIs que ja tem
|
|
63
|
+
|
|
64
|
+
**Brownfield (projeto existente):**
|
|
65
|
+
- Que feature/mudanca quer implementar
|
|
66
|
+
- Como se integra com o existente
|
|
67
|
+
- Novas APIs/integrações necessarias
|
|
68
|
+
- Restricoes ou areas que nao devem ser tocadas
|
|
69
|
+
|
|
70
|
+
Se $ARGUMENTS estiver vazio (alem de flags), o workflow pedira o briefing interativamente.
|
|
71
|
+
|
|
72
|
+
**Deteccao automatica:** Se ha codigo existente no diretorio (package.json, src/, etc.) ou .plano/ existente, o builder entra em modo brownfield automaticamente.
|
|
73
|
+
|
|
74
|
+
**Defaults:** Lidos de `~/.claude/up/builder-defaults.md` (se existir).
|
|
75
|
+
Em brownfield, convencoes do codebase existente tem prioridade sobre defaults.
|
|
76
|
+
</context>
|
|
77
|
+
|
|
78
|
+
<process>
|
|
79
|
+
**Parsear flags primeiro:** Extrair `--light` dos $ARGUMENTS se presente. O restante e o briefing.
|
|
80
|
+
|
|
81
|
+
**Se `--light`:**
|
|
82
|
+
Execute o builder workflow em modo light (ver secao `<light_mode>` no workflow).
|
|
83
|
+
Estagios: 1 (Intake simplificado) → 2 (Mini-scan + estrutura inline) → 3 (Build + E2E) → Fim.
|
|
84
|
+
|
|
85
|
+
**Se modo full (padrao):**
|
|
86
|
+
Execute the builder workflow from @~/.claude/up/workflows/builder.md end-to-end.
|
|
87
|
+
|
|
88
|
+
**CRITICO:** A partir do Estagio 2, ZERO interacao com usuario. NAO use AskUserQuestion apos coletar o briefing e respostas criticas. Toda decisao e tomada autonomamente.
|
|
89
|
+
|
|
90
|
+
**Modo Full — Preserve all workflow gates:**
|
|
91
|
+
- Estagio 1: Intake (detectar modo + briefing + perguntas criticas)
|
|
92
|
+
- Estagio 2: Arquitetura (mapear codebase OU pesquisar ecossistema + up-arquiteto)
|
|
93
|
+
- Estagio 3: Build (loop planejar → executar → verificar → E2E por fase)
|
|
94
|
+
- Estagio 4: Polish (melhorias + quick wins + UX tester + ideias)
|
|
95
|
+
- Estagio 5: Entrega (E2E final + captures + DELIVERY.md + resumo)
|
|
96
|
+
|
|
97
|
+
Falhas sao contornadas, nunca bloqueiam. O builder SEMPRE entrega algo.
|
|
98
|
+
</process>
|
|
99
|
+
|
|
100
|
+
<light_mode>
|
|
101
|
+
## Modo Light — Pipeline Enxuto
|
|
102
|
+
|
|
103
|
+
Quando `--light` esta presente, o builder roda um pipeline minimalista:
|
|
104
|
+
|
|
105
|
+
### Estagio 1 Light: Intake Rapido
|
|
106
|
+
|
|
107
|
+
1. Detectar modo (greenfield/brownfield) — mesmo processo
|
|
108
|
+
2. Receber briefing
|
|
109
|
+
3. Perguntas criticas — SIM, mesma logica (so perguntar o essencial)
|
|
110
|
+
4. **NAO carregar builder-defaults.md** — usar stack do codebase (brownfield) ou inferir (greenfield)
|
|
111
|
+
|
|
112
|
+
### Estagio 2 Light: Estrutura Inline
|
|
113
|
+
|
|
114
|
+
**Brownfield:**
|
|
115
|
+
- Se `.plano/codebase/` existe e tem < 7 dias: reutilizar
|
|
116
|
+
- Se nao existe: mini-scan inline (sem spawnar 4 agentes mapeadores):
|
|
117
|
+
```bash
|
|
118
|
+
# Mini-scan rapido
|
|
119
|
+
ls package.json requirements.txt pyproject.toml 2>/dev/null
|
|
120
|
+
cat package.json 2>/dev/null | head -50
|
|
121
|
+
ls -d src/ app/ lib/ pages/ components/ 2>/dev/null | head -10
|
|
122
|
+
find . -name "*.ts" -o -name "*.tsx" | head -30
|
|
123
|
+
```
|
|
124
|
+
- **Estruturar inline** (sem spawnar up-arquiteto):
|
|
125
|
+
- Criar/atualizar PROJECT.md com briefing e contexto minimo
|
|
126
|
+
- Criar/atualizar REQUIREMENTS.md com requisitos da feature
|
|
127
|
+
- Criar/atualizar ROADMAP.md com 1-3 fases max
|
|
128
|
+
- config.json com `builder_mode: true, builder_type: light`
|
|
129
|
+
|
|
130
|
+
**Greenfield:**
|
|
131
|
+
- **Pular pesquisa** (sem 4 pesquisadores paralelos)
|
|
132
|
+
- Estruturar inline com inferencia inteligente
|
|
133
|
+
- 2-5 fases max
|
|
134
|
+
|
|
135
|
+
### Estagio 3 Light: Build + E2E
|
|
136
|
+
|
|
137
|
+
Mesmo loop do full, mas:
|
|
138
|
+
- **Sem LOCK.md** (sessao curta, nao precisa de crash recovery)
|
|
139
|
+
- **Sem reassessment** (poucas fases, nao vale a pena)
|
|
140
|
+
- **Sem captures** (sessao curta)
|
|
141
|
+
- **COM teste E2E Playwright** (se tem UI) — mesmo processo do full
|
|
142
|
+
|
|
143
|
+
### Sem Estagio 4 (Polish)
|
|
144
|
+
|
|
145
|
+
Nao roda melhorias, UX tester, nem ideias.
|
|
146
|
+
|
|
147
|
+
### Sem Estagio 5 (Entrega)
|
|
148
|
+
|
|
149
|
+
Nao gera DELIVERY.md. Apenas exibe resumo inline:
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
153
|
+
UP > BUILDER LIGHT — COMPLETO
|
|
154
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
155
|
+
|
|
156
|
+
**Feature:** [resumo]
|
|
157
|
+
**Fases:** [N] completadas
|
|
158
|
+
**Commits:** [N]
|
|
159
|
+
**E2E:** [N] testes, [X] passaram
|
|
160
|
+
**Bugs E2E:** [N] encontrados, [M] corrigidos
|
|
161
|
+
|
|
162
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Comparacao de Tokens (estimativa)
|
|
166
|
+
|
|
167
|
+
| Etapa | Full | Light |
|
|
168
|
+
|-------|------|-------|
|
|
169
|
+
| Pesquisa (4 agentes) | ~80k tokens | 0 |
|
|
170
|
+
| Mapeamento (4 agentes) | ~60k tokens | ~5k (mini-scan) |
|
|
171
|
+
| Arquiteto (agente) | ~40k tokens | ~10k (inline) |
|
|
172
|
+
| Build (por fase) | ~100k tokens | ~100k tokens |
|
|
173
|
+
| E2E (por fase) | ~30k tokens | ~30k tokens |
|
|
174
|
+
| Polish (7+ agentes) | ~150k tokens | 0 |
|
|
175
|
+
| Delivery | ~20k tokens | 0 |
|
|
176
|
+
| **Total (3 fases)** | **~680k** | **~345k** (~50% menos) |
|
|
177
|
+
|
|
178
|
+
</light_mode>
|