@luanpdd/kit-mcp 1.6.1 → 1.8.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.
- package/CHANGELOG.md +126 -0
- package/gates/agent-no-recursive-dispatch.md +48 -0
- package/gates/budget-description.md +68 -0
- package/gates/no-personal-uuid.md +72 -0
- package/gates/skill-must-include.md +69 -0
- package/gates/sync-idempotent.md +62 -0
- package/kit/agents/advisor-researcher.md +1 -14
- package/kit/agents/assumptions-analyzer.md +1 -14
- package/kit/agents/codebase-mapper.md +2 -15
- package/kit/agents/debugger.md +1 -19
- package/kit/agents/executor.md +18 -18
- package/kit/agents/integration-checker.md +1 -16
- package/kit/agents/nyquist-auditor.md +1 -16
- package/kit/agents/phase-researcher.md +1 -14
- package/kit/agents/plan-checker.md +1 -16
- package/kit/agents/planner.md +36 -16
- package/kit/agents/project-researcher.md +2 -15
- package/kit/agents/research-synthesizer.md +1 -9
- package/kit/agents/roadmapper.md +1 -14
- package/kit/agents/schema-checker.md +4 -4
- package/kit/agents/supabase-architect.md +153 -0
- package/kit/agents/supabase-auth-bootstrapper.md +298 -0
- package/kit/agents/supabase-edge-fn-writer.md +185 -0
- package/kit/agents/supabase-migration-writer.md +156 -0
- package/kit/agents/supabase-realtime-implementer.md +252 -0
- package/kit/agents/supabase-rls-writer.md +218 -0
- package/kit/agents/supabase-storage-implementer.md +240 -0
- package/kit/agents/ui-auditor.md +1 -16
- package/kit/agents/ui-checker.md +1 -16
- package/kit/agents/ui-researcher.md +1 -14
- package/kit/agents/user-profiler.md +2 -10
- package/kit/agents/verifier.md +2 -17
- package/kit/commands/depurar.md +17 -0
- package/kit/commands/expresso.md +9 -0
- package/kit/commands/fazer.md +32 -4
- package/kit/commands/proximo.md +7 -0
- package/kit/commands/rapido.md +6 -0
- package/kit/commands/supabase.md +148 -0
- package/kit/framework/references/output-style.md +22 -0
- package/kit/framework/workflows/discuss-phase.md +62 -327
- package/kit/framework/workflows/help.md +14 -1
- package/kit/framework/workflows/new-project.md +16 -107
- package/kit/framework/workflows/plan-phase.md +53 -147
- package/kit/skills/_shared-supabase/glossary.md +180 -0
- package/kit/skills/supabase-auth-ssr/SKILL.md +260 -0
- package/kit/skills/supabase-cron-queues/SKILL.md +266 -0
- package/kit/skills/supabase-database-functions/SKILL.md +247 -0
- package/kit/skills/supabase-declarative-schema/SKILL.md +183 -0
- package/kit/skills/supabase-edge-functions/SKILL.md +242 -0
- package/kit/skills/supabase-migrations/SKILL.md +175 -0
- package/kit/skills/supabase-pgvector-rag/SKILL.md +253 -0
- package/kit/skills/supabase-postgres-style/SKILL.md +138 -0
- package/kit/skills/supabase-realtime/SKILL.md +236 -0
- package/kit/skills/supabase-rls-policies/SKILL.md +185 -0
- package/kit/skills/supabase-storage/SKILL.md +234 -0
- package/package.json +1 -1
- package/src/core/kit.js +55 -22
- package/src/core/sync.js +3 -1
|
@@ -21,50 +21,46 @@ Você é um parceiro de pensamento, não um entrevistador. O usuário é o visio
|
|
|
21
21
|
</downstream_awareness>
|
|
22
22
|
|
|
23
23
|
<philosophy>
|
|
24
|
-
**Usuário =
|
|
24
|
+
**Usuário = visionário. Claude = construtor.**
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- Como deve ser o visual/sensação
|
|
29
|
-
- O que é essencial vs bom ter
|
|
30
|
-
- Comportamentos ou referências específicas que têm em mente
|
|
26
|
+
Usuário SABE: como imagina, visual/sensação, essencial vs nice-to-have, referências específicas.
|
|
27
|
+
Usuário NÃO sabe (não pergunte): padrões da codebase (pesquisador lê), riscos técnicos (pesquisador), abordagem de implementação (planejador), métricas (inferidas).
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
- Padrões da base de código (pesquisador lê o código)
|
|
34
|
-
- Riscos técnicos (pesquisador identifica estes)
|
|
35
|
-
- Abordagem de implementação (planejador descobre isso)
|
|
36
|
-
- Métricas de sucesso (inferidas do trabalho)
|
|
37
|
-
|
|
38
|
-
Perguntar sobre visão e escolhas de implementação. Capturar decisões para agentes downstream.
|
|
29
|
+
Pergunte sobre visão e escolhas; capture decisões pra agentes downstream.
|
|
39
30
|
</philosophy>
|
|
40
31
|
|
|
41
32
|
<scope_guardrail>
|
|
42
|
-
**CRÍTICO:
|
|
33
|
+
**CRÍTICO: sem expansão de escopo.** Limite da fase vem do ROADMAP e é FIXO. Discussão clarifica COMO, nunca SE adicionar capacidades.
|
|
43
34
|
|
|
44
|
-
|
|
35
|
+
| Permitido (clarifica) | Não permitido (expande) |
|
|
36
|
+
|---|---|
|
|
37
|
+
| "Como exibir posts?" (layout, densidade) | "Adicionar comentários?" (nova capacidade) |
|
|
38
|
+
| "O que em estado vazio?" | "E busca/filtragem?" |
|
|
39
|
+
| "Pull-to-refresh ou manual?" | "Incluir favoritos?" |
|
|
45
40
|
|
|
46
|
-
**
|
|
47
|
-
- "Como os posts devem ser exibidos?" (layout, densidade, informações mostradas)
|
|
48
|
-
- "O que acontece em estado vazio?" (dentro da funcionalidade)
|
|
49
|
-
- "Pull to refresh ou manual?" (escolha de comportamento)
|
|
41
|
+
**Heurística:** clarifica o que já está na fase, ou adiciona capacidade que merece fase própria?
|
|
50
42
|
|
|
51
|
-
**
|
|
52
|
-
|
|
53
|
-
- "E a busca/filtragem?" (nova capacidade)
|
|
54
|
-
- "Talvez incluir favoritos?" (nova capacidade)
|
|
43
|
+
**Quando usuário sugere expansão:** "[X] seria nova capacidade — fase própria. Anoto pro backlog. De volta a [tópico]." Capture em "Ideias Adiadas". Não perca, não aja.
|
|
44
|
+
</scope_guardrail>
|
|
55
45
|
|
|
56
|
-
|
|
46
|
+
<supabase_detection>
|
|
47
|
+
**Detecção de fase Supabase:** antes de identificar áreas cinzentas genéricas, verifique se a fase mexe em Supabase (DB/Auth/Realtime/Edge Functions/Storage/RLS/migrations).
|
|
57
48
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
Sinais de fase Supabase no objetivo do ROADMAP.md ou nos REQs mapeados:
|
|
50
|
+
- Menções a "Supabase", "Postgres", "RLS", "policy", "migration", "supabase/migrations/", "supabase/schemas/", "supabase/functions/"
|
|
51
|
+
- Menções a "Auth Next.js", "@supabase/ssr", "magic link", "OAuth", "MFA"
|
|
52
|
+
- Menções a "broadcast", "realtime", "presence", "postgres_changes"
|
|
53
|
+
- Menções a "Edge Function", "Deno", "pgvector", "RAG", "pg_cron", "pgmq"
|
|
54
|
+
- Menções a "bucket", "signed URL", "storage.objects"
|
|
62
55
|
|
|
63
|
-
|
|
56
|
+
**Se for fase Supabase:** considere delegar a discussão para o agent `supabase-architect` em vez de gerar áreas cinzentas genéricas. O architect já tem template de perguntas Supabase-específicas (tier Free/Pro, branches, RLS strategy multi-tenant, schema design, topology realtime, custos de egress/branches).
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Task(subagent_type=supabase-architect, prompt="Projete schema + RLS + topologia para esta fase Supabase: {phase_goal}. Retorne plano em formato Markdown estruturado para servir de base ao CONTEXT.md.")
|
|
64
60
|
```
|
|
65
61
|
|
|
66
|
-
|
|
67
|
-
</
|
|
62
|
+
Use o output do architect como base do `<decisions>` do CONTEXT.md em vez de fazer questionamento manual. **Para fases mistas** (parte Supabase, parte genérica) — use architect só para a parte Supabase, depois faça discussão padrão para o resto.
|
|
63
|
+
</supabase_detection>
|
|
68
64
|
|
|
69
65
|
<gray_area_identification>
|
|
70
66
|
Áreas cinzentas são **decisões de implementação que o usuário se importa** — coisas que podem ir de múltiplas formas e mudariam o resultado.
|
|
@@ -80,29 +76,11 @@ Capturar a ideia em uma seção "Ideias Adiadas". Não a perder, não agir sobre
|
|
|
80
76
|
- Algo sendo ORGANIZADO → critérios, agrupamento, tratamento de exceções importam
|
|
81
77
|
3. **Gerar áreas cinzentas específicas da fase** — Não categorias genéricas, mas decisões concretas para ESTA fase
|
|
82
78
|
|
|
83
|
-
**Não
|
|
79
|
+
**Não use rótulos genéricos** (UI/UX/Comportamento). Gere áreas específicas. Exemplos: Auth → sessão, erros, multi-device, recuperação. Backups CLI → output, flags, progress, recovery. Foto biblioteca → agrupamento, duplicatas, nomenclatura, pastas. API docs → estrutura, exemplos, versionamento, interativos.
|
|
84
80
|
|
|
85
|
-
|
|
86
|
-
Fase: "Autenticação de usuário"
|
|
87
|
-
→ Gerenciamento de sessão, Respostas de erro, Política multi-dispositivo, Fluxo de recuperação
|
|
88
|
-
|
|
89
|
-
Fase: "Organizar biblioteca de fotos"
|
|
90
|
-
→ Critérios de agrupamento, Tratamento de duplicatas, Convenção de nomenclatura, Estrutura de pastas
|
|
91
|
-
|
|
92
|
-
Fase: "CLI para backups de banco de dados"
|
|
93
|
-
→ Formato de saída, Design de flags, Relatório de progresso, Recuperação de erros
|
|
94
|
-
|
|
95
|
-
Fase: "Documentação de API"
|
|
96
|
-
→ Estrutura/navegação, Profundidade de exemplos de código, Abordagem de versionamento, Elementos interativos
|
|
97
|
-
```
|
|
81
|
+
**Pergunta-chave:** quais decisões mudariam o resultado que o usuário deveria opinar?
|
|
98
82
|
|
|
99
|
-
**
|
|
100
|
-
|
|
101
|
-
**Claude lida com isso (não perguntar):**
|
|
102
|
-
- Detalhes técnicos de implementação
|
|
103
|
-
- Padrões de arquitetura
|
|
104
|
-
- Otimização de performance
|
|
105
|
-
- Escopo (roadmap define isso)
|
|
83
|
+
**Claude trata sozinho (não perguntar):** detalhes técnicos, padrões de arquitetura, otimização, escopo (roadmap define).
|
|
106
84
|
</gray_area_identification>
|
|
107
85
|
|
|
108
86
|
<answer_validation>
|
|
@@ -202,57 +180,11 @@ Se "Cancelar": Sair do workflow.
|
|
|
202
180
|
</step>
|
|
203
181
|
|
|
204
182
|
<step name="load_prior_context">
|
|
205
|
-
Ler
|
|
206
|
-
|
|
207
|
-
**Passo 1: Ler arquivos em nível de projeto**
|
|
208
|
-
```bash
|
|
209
|
-
# Arquivos centrais do projeto
|
|
210
|
-
cat .planning/PROJECT.md 2>/dev/null || true
|
|
211
|
-
cat .planning/REQUIREMENTS.md 2>/dev/null || true
|
|
212
|
-
cat .planning/STATE.md 2>/dev/null || true
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
Extrair destes:
|
|
216
|
-
- **PROJECT.md** — Visão, princípios, inegociáveis, preferências do usuário
|
|
217
|
-
- **REQUIREMENTS.md** — Critérios de aceitação, restrições, must-haves vs bom-ter
|
|
218
|
-
- **STATE.md** — Progresso atual, quaisquer flags ou notas de sessão
|
|
183
|
+
Ler PROJECT.md (visão/princípios/inegociáveis), REQUIREMENTS.md (critérios/must-haves), STATE.md (progresso/flags). Encontrar CONTEXT.md anteriores (`find .planning/phases -name "*-CONTEXT.md" | sort`); pra cada um com número < fase atual, extrair `<decisions>` (preferências bloqueadas) e `<specifics>` (refs particulares).
|
|
219
184
|
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
# Encontrar todos os arquivos CONTEXT.md de fases anteriores à atual
|
|
223
|
-
(find .planning/phases -name "*-CONTEXT.md" 2>/dev/null || true) | sort
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Para cada CONTEXT.md onde o número de fase < fase atual:
|
|
227
|
-
- Ler a seção `<decisions>` — estas são preferências bloqueadas
|
|
228
|
-
- Ler `<specifics>` — referências particulares ou momentos "quero como X"
|
|
229
|
-
- Notar quaisquer padrões (ex: "usuário consistentemente prefere UI minimalista", "usuário rejeitou atalhos de tecla única")
|
|
185
|
+
Construir contexto interno `<prior_decisions>` com seções "Nível de Projeto" + "Das Fases Anteriores".
|
|
230
186
|
|
|
231
|
-
**
|
|
232
|
-
|
|
233
|
-
Estruturar as informações extraídas:
|
|
234
|
-
```
|
|
235
|
-
<prior_decisions>
|
|
236
|
-
## Nível de Projeto
|
|
237
|
-
- [Princípio ou restrição chave do PROJECT.md]
|
|
238
|
-
- [Requisito que afeta esta fase do REQUIREMENTS.md]
|
|
239
|
-
|
|
240
|
-
## Das Fases Anteriores
|
|
241
|
-
### Fase N: [Nome]
|
|
242
|
-
- [Decisão que pode ser relevante para a fase atual]
|
|
243
|
-
- [Preferência que estabelece um padrão]
|
|
244
|
-
|
|
245
|
-
### Fase M: [Nome]
|
|
246
|
-
- [Outra decisão relevante]
|
|
247
|
-
</prior_decisions>
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**Uso nos passos subsequentes:**
|
|
251
|
-
- `analyze_phase`: Pular áreas cinzentas já decididas em fases anteriores
|
|
252
|
-
- `present_gray_areas`: Anotar opções com decisões anteriores ("Você escolheu X na Fase 5")
|
|
253
|
-
- `discuss_areas`: Pré-preencher respostas ou sinalizar conflitos ("Isso contradiz a Fase 3 — mesmo aqui ou diferente?")
|
|
254
|
-
|
|
255
|
-
**Se nenhum contexto anterior existir:** Continuar sem — isso é esperado para fases iniciais.
|
|
187
|
+
**Uso downstream:** `analyze_phase` pula áreas já decididas; `present_gray_areas` anota com refs ("Você escolheu X na Fase 5"); `discuss_areas` pré-preenche ou sinaliza conflitos. Sem contexto anterior → continuar (esperado pra fases iniciais).
|
|
256
188
|
</step>
|
|
257
189
|
|
|
258
190
|
<step name="cross_reference_todos">
|
|
@@ -304,38 +236,11 @@ Varredura leve do código existente para informar identificação de áreas cinz
|
|
|
304
236
|
ls .planning/codebase/*.md 2>/dev/null || true
|
|
305
237
|
```
|
|
306
238
|
|
|
307
|
-
**
|
|
308
|
-
- Componentes/hooks/utilitários reutilizáveis
|
|
309
|
-
- Padrões estabelecidos (gerenciamento de estado, estilização, busca de dados)
|
|
310
|
-
- Pontos de integração (onde novo código se conectaria)
|
|
311
|
-
|
|
312
|
-
Pular para o Passo 3 abaixo.
|
|
313
|
-
|
|
314
|
-
**Passo 2: Se não há mapas de codebase, fazer grep direcionado**
|
|
315
|
-
|
|
316
|
-
Extrair termos-chave do objetivo da fase (ex: "feed" → "post", "card", "list"; "auth" → "login", "session", "token").
|
|
317
|
-
|
|
318
|
-
```bash
|
|
319
|
-
# Encontrar arquivos relacionados aos termos do objetivo da fase
|
|
320
|
-
grep -rl "{termo1}\|{termo2}" src/ app/ --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" 2>/dev/null | head -10 || true
|
|
321
|
-
|
|
322
|
-
# Encontrar componentes/hooks existentes
|
|
323
|
-
ls src/components/ 2>/dev/null || true
|
|
324
|
-
ls src/hooks/ 2>/dev/null || true
|
|
325
|
-
ls src/lib/ src/utils/ 2>/dev/null || true
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
Ler os 3-5 arquivos mais relevantes para entender padrões existentes.
|
|
329
|
-
|
|
330
|
-
**Passo 3: Construir codebase_context interno**
|
|
239
|
+
**Mapas de codebase existem (`.planning/codebase/*.md`):** ler CONVENTIONS/STRUCTURE/STACK conforme tipo da fase. Extrair: ativos reutilizáveis, padrões estabelecidos, pontos de integração.
|
|
331
240
|
|
|
332
|
-
|
|
333
|
-
- **Ativos reutilizáveis** — componentes, hooks, utilitários existentes que poderiam ser usados nesta fase
|
|
334
|
-
- **Padrões estabelecidos** — como a base de código faz gerenciamento de estado, estilização, busca de dados
|
|
335
|
-
- **Pontos de integração** — onde novo código se conectaria (rotas, nav, providers)
|
|
336
|
-
- **Opções criativas** — abordagens que a arquitetura existente habilita ou restringe
|
|
241
|
+
**Sem mapas:** grep direcionado por termos-chave do objetivo (`grep -rl "termo1\|termo2" src/ app/ --include='*.{ts,tsx,js,jsx}' | head -10`) + `ls src/{components,hooks,lib,utils}/`. Ler 3-5 arquivos mais relevantes.
|
|
337
242
|
|
|
338
|
-
|
|
243
|
+
Construir `<codebase_context>` interno: ativos reutilizáveis, padrões, pontos de integração, opções criativas que a arquitetura habilita/restringe. Não escreve em arquivo — só sessão atual.
|
|
339
244
|
</step>
|
|
340
245
|
|
|
341
246
|
<step name="analyze_phase">
|
|
@@ -365,30 +270,11 @@ Analisar a fase para identificar áreas cinzentas que valem a discussão. **Usar
|
|
|
365
270
|
|
|
366
271
|
**Detecção de Modo Advisor:**
|
|
367
272
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
1. Verificar USER-PROFILE.md:
|
|
371
|
-
```bash
|
|
372
|
-
PROFILE_PATH="./.claude/framework/USER-PROFILE.md"
|
|
373
|
-
```
|
|
374
|
-
ADVISOR_MODE = arquivo existe em PROFILE_PATH → true, caso contrário → false
|
|
375
|
-
|
|
376
|
-
2. Se ADVISOR_MODE for true, resolver tier de calibração vendor_philosophy:
|
|
377
|
-
- Prioridade 1: Ler config.json > preferences.vendor_philosophy (override em nível de projeto)
|
|
378
|
-
- Prioridade 2: Ler avaliação Vendor Choices/Philosophy do USER-PROFILE.md (global)
|
|
379
|
-
- Prioridade 3: Padrão para "standard" se nenhum tiver valor ou valor for UNSCORED
|
|
273
|
+
`ADVISOR_MODE = exists("./.claude/framework/USER-PROFILE.md")`. Se false, pular todos os passos advisor — workflow conversacional inalterado.
|
|
380
274
|
|
|
381
|
-
|
|
382
|
-
- conservative OU thorough-evaluator → full_maturity
|
|
383
|
-
- opinionated → minimal_decisive
|
|
384
|
-
- pragmatic-fast OU qualquer outro valor OU vazio → standard
|
|
275
|
+
Se true, resolver `calibration_tier` por prioridade: (1) `config.json > preferences.vendor_philosophy` (project), (2) USER-PROFILE.md Vendor Choices/Philosophy (global), (3) default `standard`. Mapeamento: `conservative`/`thorough-evaluator` → `full_maturity`; `opinionated` → `minimal_decisive`; `pragmatic-fast` ou outro/vazio → `standard`.
|
|
385
276
|
|
|
386
|
-
|
|
387
|
-
```bash
|
|
388
|
-
ADVISOR_MODEL=$(node "./.claude/framework/bin/tools.cjs" resolve-model advisor-researcher --raw)
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
Se ADVISOR_MODE for false, pular todos os passos específicos de advisor — workflow prossegue com fluxo conversacional existente inalterado.
|
|
277
|
+
`ADVISOR_MODEL=$(node "./.claude/framework/bin/tools.cjs" resolve-model advisor-researcher --raw)`
|
|
392
278
|
|
|
393
279
|
**Produzir sua análise internamente, então apresentar ao usuário.**
|
|
394
280
|
|
|
@@ -453,31 +339,10 @@ Vamos clarificar COMO implementar isso.
|
|
|
453
339
|
|
|
454
340
|
**NÃO incluir opção "pular" ou "você decide".** O usuário executou este comando para discutir — dar escolhas reais.
|
|
455
341
|
|
|
456
|
-
**Exemplos por domínio
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
☐ Estilo de layout — Cards vs lista vs timeline? (Componente Card existe com variantes)
|
|
461
|
-
☐ Comportamento de carregamento — Scroll infinito ou paginação? (Hook useInfiniteQuery disponível)
|
|
462
|
-
☐ Ordenação de conteúdo — Cronológico, algorítmico, ou escolha do usuário?
|
|
463
|
-
☐ Metadados de post — Quais informações por post? Timestamps, reações, autor?
|
|
464
|
-
```
|
|
465
|
-
|
|
466
|
-
Para "CLI de backup de banco de dados" (ferramenta de linha de comando):
|
|
467
|
-
```
|
|
468
|
-
☐ Formato de saída — JSON, tabela, ou texto simples? Níveis de verbosidade?
|
|
469
|
-
☐ Design de flags — Flags curtas, longas, ou ambas? Obrigatórias vs opcionais?
|
|
470
|
-
☐ Relatório de progresso — Silencioso, barra de progresso, ou log verbose?
|
|
471
|
-
☐ Recuperação de erros — Falhar rápido, tentar novamente, ou solicitar ação?
|
|
472
|
-
```
|
|
473
|
-
|
|
474
|
-
Para "Organizar biblioteca de fotos" (tarefa de organização):
|
|
475
|
-
```
|
|
476
|
-
☐ Critérios de agrupamento — Por data, localização, faces, ou eventos?
|
|
477
|
-
☐ Tratamento de duplicatas — Manter melhor, manter todos, ou solicitar cada vez?
|
|
478
|
-
☐ Convenção de nomenclatura — Nomes originais, datas, ou descritivos?
|
|
479
|
-
☐ Estrutura de pastas — Plana, aninhada por ano, ou por categoria?
|
|
480
|
-
```
|
|
342
|
+
**Exemplos por domínio:**
|
|
343
|
+
- Feed de Posts: layout (cards/lista/timeline), carregamento (infinito/paginação), ordenação, metadados
|
|
344
|
+
- Backup CLI: output (JSON/tabela/texto), flags (curtas/longas), progress (silencioso/bar/verbose), recovery (fail-fast/retry)
|
|
345
|
+
- Foto biblioteca: agrupamento (data/local/face/evento), duplicatas (melhor/todos/prompt), nomenclatura, pastas
|
|
481
346
|
|
|
482
347
|
Continuar para discuss_areas com áreas selecionadas (ou advisor_research se ADVISOR_MODE for true).
|
|
483
348
|
</step>
|
|
@@ -572,65 +437,14 @@ Rastrear ideias adiadas internamente.
|
|
|
572
437
|
|
|
573
438
|
Para cada área selecionada, conduzir um loop de discussão focado.
|
|
574
439
|
|
|
575
|
-
**
|
|
576
|
-
1. Fazer uma breve busca na web por melhores práticas relacionadas ao tópico da área
|
|
577
|
-
2. Resumir as principais descobertas em 2-3 bullet points
|
|
578
|
-
3. Apresentar a pesquisa junto com a pergunta para que o usuário possa tomar uma decisão mais informada
|
|
579
|
-
|
|
580
|
-
Exemplo com pesquisa habilitada:
|
|
581
|
-
```
|
|
582
|
-
Vamos falar sobre [Estratégia de Autenticação].
|
|
583
|
-
|
|
584
|
-
📊 Pesquisa de melhores práticas:
|
|
585
|
-
• OAuth 2.0 + PKCE é o padrão atual para SPAs (substitui fluxo implícito)
|
|
586
|
-
• Tokens de sessão com cookies httpOnly preferidos sobre localStorage para proteção XSS
|
|
587
|
-
• Considerar suporte a passkey/WebAuthn — adoção está acelerando em 2025-2026
|
|
588
|
-
|
|
589
|
-
Com esse contexto: Como os usuários devem autenticar?
|
|
590
|
-
```
|
|
591
|
-
|
|
592
|
-
Quando desabilitado (padrão), pular a pesquisa e apresentar perguntas diretamente como antes.
|
|
593
|
-
|
|
594
|
-
**Suporte a modo texto:** Analisar `--text` opcional de `$ARGUMENTS`.
|
|
595
|
-
- Aceitar flag `--text` OU ler `workflow.text_mode` da config (do contexto init)
|
|
596
|
-
- Quando ativo, substituir TODAS as chamadas `AskUserQuestion` por listas numeradas de texto simples
|
|
597
|
-
- Usuário digita um número para selecionar, ou digita texto livre para "Outro"
|
|
598
|
-
- Isso é necessário para sessões remotas do Claude Code (modo `/rc`) onde menus TUI
|
|
599
|
-
não funcionam através do App Claude
|
|
600
|
-
|
|
601
|
-
**Suporte a modo batch:** Analisar `--batch` opcional de `$ARGUMENTS`.
|
|
602
|
-
- Aceitar `--batch`, `--batch=N`, ou `--batch N`
|
|
603
|
-
|
|
604
|
-
**Suporte a modo analyze:** Analisar `--analyze` opcional de `$ARGUMENTS`.
|
|
605
|
-
Quando `--analyze` estiver ativo, antes de apresentar cada pergunta (ou grupo de perguntas no modo batch), fornecer uma breve **análise de trade-offs** para a decisão:
|
|
606
|
-
- 2-3 opções com prós/contras baseados no contexto da codebase e padrões comuns
|
|
607
|
-
- Uma abordagem recomendada com raciocínio
|
|
608
|
-
- Armadilhas conhecidas ou restrições de fases anteriores
|
|
609
|
-
|
|
610
|
-
Exemplo com `--analyze`:
|
|
611
|
-
```
|
|
612
|
-
**Análise de trade-offs: Estratégia de autenticação**
|
|
613
|
-
|
|
614
|
-
| Abordagem | Prós | Contras |
|
|
615
|
-
|-----------|------|---------|
|
|
616
|
-
| Cookies de sessão | Simples, httpOnly evita XSS | Requer proteção CSRF, sessões fixas |
|
|
617
|
-
| JWT (stateless) | Escalável, sem estado no servidor | Tamanho do token, complexidade de revogação |
|
|
618
|
-
| OAuth 2.0 + PKCE | Padrão da indústria para SPAs | Mais configuração, UX de fluxo de redirecionamento |
|
|
619
|
-
|
|
620
|
-
💡 Recomendado: OAuth 2.0 + PKCE — seu app tem login social nos requisitos (REQ-04) e isso se alinha com a configuração NextAuth existente em `src/lib/auth.ts`.
|
|
621
|
-
|
|
622
|
-
Como os usuários devem autenticar?
|
|
623
|
-
```
|
|
440
|
+
**Modos opcionais (lidos de config + args):**
|
|
624
441
|
|
|
625
|
-
|
|
626
|
-
-
|
|
627
|
-
-
|
|
628
|
-
-
|
|
629
|
-
- Se `--batch` estiver ausente, manter o fluxo existente de uma pergunta por vez
|
|
442
|
+
- **`workflow.research_before_questions: true`** ou padrão off — antes de cada área, fazer 2-3 bullet de melhores práticas via web, apresentar com a pergunta. Ex: "OAuth 2.0 + PKCE é padrão atual pra SPAs; cookies httpOnly preferidos vs localStorage; passkey/WebAuthn em alta 2025-2026."
|
|
443
|
+
- **`--text` ou `workflow.text_mode: true`** — substitui TODOS AskUserQuestion por listas numeradas em texto simples (necessário em sessões remotas Claude Code `/rc`).
|
|
444
|
+
- **`--batch[=N]`** (default 4 quando ausente, range 2-5) — 1 turno agrupado com N perguntas numeradas em vez de N turnos de pergunta única. Após responder, refletir capturas e fazer follow-up mínimo.
|
|
445
|
+
- **`--analyze`** — antes de cada pergunta (ou batch), fornecer mini-tabela de trade-offs (2-3 opções, prós/contras baseados na codebase + padrões), recomendação destacada, pitfalls.
|
|
630
446
|
|
|
631
|
-
**Filosofia:**
|
|
632
|
-
- Modo padrão: 4 turnos de pergunta única, então verificar se continuar
|
|
633
|
-
- Modo `--batch`: 1 turno agrupado com 2-5 perguntas numeradas, então verificar se continuar
|
|
447
|
+
**Filosofia:** adaptativo, usuário escolhe o ritmo. Default: 4 turnos de pergunta única, depois verifica continuar. `--batch`: 1 turno agrupado, depois verifica.
|
|
634
448
|
|
|
635
449
|
Cada resposta (ou conjunto de respostas, no modo batch) deve revelar a próxima pergunta ou próximo batch.
|
|
636
450
|
|
|
@@ -695,37 +509,13 @@ Após todas as áreas serem auto-resolvidas, pular o prompt "Explorar mais área
|
|
|
695
509
|
- Loop: discutir novas áreas, então solicitar novamente
|
|
696
510
|
- Se "Estou pronto para o contexto": Prosseguir para write_context
|
|
697
511
|
|
|
698
|
-
**Acumulação de
|
|
699
|
-
Quando o usuário referencia um doc, spec, ou ADR durante qualquer resposta — ex: "leia adr-014", "verifique a spec MCP", "de acordo com browse-spec.md" — imediatamente:
|
|
700
|
-
1. Ler o doc referenciado (ou confirmar que existe)
|
|
701
|
-
2. Adicioná-lo ao acumulador de refs canônicas com caminho relativo completo
|
|
702
|
-
3. Usar o que aprendeu do doc para informar perguntas subsequentes
|
|
512
|
+
**Acumulação de refs canônicas:** quando usuário referencia doc/spec/ADR (ex: "leia adr-014"), imediatamente: leia o doc, adicione ao acumulador com caminho relativo completo, use pra informar perguntas seguintes. Esses são frequentemente MAIS importantes que refs do ROADMAP — usuário quer que agentes downstream sigam. Nunca perca.
|
|
703
513
|
|
|
704
|
-
|
|
514
|
+
**Design de perguntas:** opções concretas (não "Opção A"), cada resposta informa a próxima. Se usuário escolher "Outro" pra texto livre, faça acompanhamento em prompt simples (NÃO outro AskUserQuestion); reflita de volta e confirme.
|
|
705
515
|
|
|
706
|
-
**
|
|
707
|
-
- Opções devem ser concretas, não abstratas ("Cards" não "Opção A")
|
|
708
|
-
- Cada resposta deve informar a próxima pergunta ou próximo batch
|
|
709
|
-
- Se o usuário escolher "Outro" para fornecer input livre (ex: "deixa eu descrever", "outra coisa", ou uma resposta aberta), fazer o acompanhamento como texto simples — NÃO outro AskUserQuestion. Aguardar eles digitarem no prompt normal, então refletir seu input de volta e confirmar antes de retomar AskUserQuestion ou o próximo batch numerado.
|
|
516
|
+
**Expansão de escopo:** ver `<scope_guardrail>` acima — anote como Ideia Adiada, retorne ao tópico.
|
|
710
517
|
|
|
711
|
-
**
|
|
712
|
-
Se o usuário mencionar algo fora do domínio da fase:
|
|
713
|
-
```
|
|
714
|
-
"[Funcionalidade] parece uma nova capacidade — pertence à sua própria fase.
|
|
715
|
-
Vou anotá-la como uma ideia adiada.
|
|
716
|
-
|
|
717
|
-
De volta a [área atual]: [retornar à pergunta atual]"
|
|
718
|
-
```
|
|
719
|
-
|
|
720
|
-
Rastrear ideias adiadas internamente.
|
|
721
|
-
|
|
722
|
-
**Rastrear dados do log de discussão internamente:**
|
|
723
|
-
Para cada pergunta feita, acumular:
|
|
724
|
-
- Nome da área
|
|
725
|
-
- Todas as opções apresentadas (rótulo + descrição)
|
|
726
|
-
- Qual opção o usuário selecionou (ou sua resposta em texto livre)
|
|
727
|
-
- Quaisquer notas ou esclarecimentos de acompanhamento que o usuário forneceu
|
|
728
|
-
Esses dados são usados para gerar DISCUSSION-LOG.md no passo `write_context`.
|
|
518
|
+
**Log interno por pergunta:** área, opções apresentadas, seleção do usuário, notas de acompanhamento. Usado pra gerar DISCUSSION-LOG.md no `write_context`.
|
|
729
519
|
</step>
|
|
730
520
|
|
|
731
521
|
<step name="write_context">
|
|
@@ -959,74 +749,19 @@ node "./.claude/framework/bin/tools.cjs" commit "docs(state): record phase ${PHA
|
|
|
959
749
|
</step>
|
|
960
750
|
|
|
961
751
|
<step name="auto_advance">
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
1. Analisar flag `--auto` de $ARGUMENTS
|
|
965
|
-
2. **Sincronizar flag de cadeia com intenção** — se o usuário invocou manualmente (sem `--auto`), limpar a flag de cadeia efêmera de qualquer cadeia `--auto` anterior interrompida. Isso NÃO toca em `workflow.auto_advance` (preferência persistente do usuário):
|
|
966
|
-
```bash
|
|
967
|
-
if [[ ! "$ARGUMENTS" =~ --auto ]]; then
|
|
968
|
-
node "./.claude/framework/bin/tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
|
|
969
|
-
fi
|
|
970
|
-
```
|
|
971
|
-
3. Ler tanto a flag de cadeia quanto a preferência do usuário:
|
|
972
|
-
```bash
|
|
973
|
-
AUTO_CHAIN=$(node "./.claude/framework/bin/tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
|
|
974
|
-
AUTO_CFG=$(node "./.claude/framework/bin/tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
975
|
-
```
|
|
976
|
-
|
|
977
|
-
**Se flag `--auto` presente E `AUTO_CHAIN` não for true:** Persistir flag de cadeia na config (lida com uso direto de `--auto` sem new-project):
|
|
978
|
-
```bash
|
|
979
|
-
node "./.claude/framework/bin/tools.cjs" config-set workflow._auto_chain_active true
|
|
980
|
-
```
|
|
752
|
+
**Detecção:** flag `--auto` em $ARGUMENTS, OR `workflow._auto_chain_active=true`, OR `workflow.auto_advance=true`.
|
|
981
753
|
|
|
982
|
-
**
|
|
754
|
+
**Sync de cadeia:** se usuário invocou manualmente (sem `--auto`), zere `workflow._auto_chain_active` (mas NÃO toque `workflow.auto_advance` — preferência do usuário). Se `--auto` presente e cadeia não estava ativa, set `_auto_chain_active=true` (handle uso direto de `--auto` sem new-project).
|
|
983
755
|
|
|
984
|
-
|
|
985
|
-
```
|
|
986
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
987
|
-
framework ► AVANÇANDO AUTOMATICAMENTE PARA PLANEJAMENTO
|
|
988
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
989
|
-
|
|
990
|
-
Contexto capturado. Iniciando plan-phase...
|
|
991
|
-
```
|
|
756
|
+
**Quando ativo:** dispare `Skill(skill="framework:planejar-fase", args="${PHASE} --auto ${WS}")` (use Skill, não Task aninhado — evita freeze de runtime, issue #686).
|
|
992
757
|
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
758
|
+
**Roteamento de retorno do plan-phase:**
|
|
759
|
+
- `FASE CONCLUÍDA` → cadeia completa. Próximo: `/discutir-fase ${NEXT_PHASE} --auto ${WS}` (após `/clear`)
|
|
760
|
+
- `PLANEJAMENTO CONCLUÍDO` → execução parou. Continuar: `/executar-fase ${PHASE} ${WS}`
|
|
761
|
+
- `PLANEJAMENTO INCONCLUSIVO / CHECKPOINT` → parou. Continuar: `/planejar-fase ${PHASE} ${WS}`
|
|
762
|
+
- `LACUNAS ENCONTRADAS` → parou. Continuar: `/planejar-fase ${PHASE} --gaps ${WS}`
|
|
997
763
|
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
**Lidar com retorno do plan-phase:**
|
|
1001
|
-
- **FASE CONCLUÍDA** → Cadeia completa bem-sucedida. Exibir:
|
|
1002
|
-
```
|
|
1003
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1004
|
-
framework ► FASE ${PHASE} CONCLUÍDA
|
|
1005
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1006
|
-
|
|
1007
|
-
Pipeline de avanço automático finalizado: discutir → planejar → executar
|
|
1008
|
-
|
|
1009
|
-
Próximo: /discutir-fase ${NEXT_PHASE} --auto ${WS}
|
|
1010
|
-
<sub>/clear primeiro → janela de contexto fresca</sub>
|
|
1011
|
-
```
|
|
1012
|
-
- **PLANEJAMENTO CONCLUÍDO** → Planejamento feito, execução não terminou:
|
|
1013
|
-
```
|
|
1014
|
-
Avanço automático parcial: Planejamento concluído, execução não terminou.
|
|
1015
|
-
Continuar: /executar-fase ${PHASE} ${WS}
|
|
1016
|
-
```
|
|
1017
|
-
- **PLANEJAMENTO INCONCLUSIVO / CHECKPOINT** → Parar cadeia:
|
|
1018
|
-
```
|
|
1019
|
-
Avanço automático parado: Planejamento precisa de input.
|
|
1020
|
-
Continuar: /planejar-fase ${PHASE} ${WS}
|
|
1021
|
-
```
|
|
1022
|
-
- **LACUNAS ENCONTRADAS** → Parar cadeia:
|
|
1023
|
-
```
|
|
1024
|
-
Avanço automático parado: Lacunas encontradas durante execução.
|
|
1025
|
-
Continuar: /planejar-fase ${PHASE} --gaps ${WS}
|
|
1026
|
-
```
|
|
1027
|
-
|
|
1028
|
-
**Se nem `--auto` nem config habilitado:**
|
|
1029
|
-
Rotear para passo `confirm_creation` (comportamento existente — mostrar próximos passos manuais).
|
|
764
|
+
**Quando inativo:** rotear pra `confirm_creation` (comportamento manual existente).
|
|
1030
765
|
</step>
|
|
1031
766
|
|
|
1032
767
|
</process>
|
|
@@ -5,7 +5,20 @@ Exibir a referência completa de comandos do framework. Emitir APENAS o conteúd
|
|
|
5
5
|
<reference>
|
|
6
6
|
# Referência de Comandos do framework
|
|
7
7
|
|
|
8
|
-
**framework**
|
|
8
|
+
**framework** cria planos hierárquicos de projeto otimizados para desenvolvimento ágil solo com Claude Code.
|
|
9
|
+
|
|
10
|
+
## ⭐ Em dúvida? Use `/fazer`
|
|
11
|
+
|
|
12
|
+
`/fazer "descrição livre"` é o **entrypoint canônico** — analisa sua intenção e roteia automaticamente para o melhor comando. Use sempre que não souber qual `/*` invocar.
|
|
13
|
+
|
|
14
|
+
| Sua intenção | Comando |
|
|
15
|
+
|---|---|
|
|
16
|
+
| Trivial (typo, rename, log) | `/rapido` |
|
|
17
|
+
| Concreta com commit limpo | `/expresso` |
|
|
18
|
+
| Multi-arquivo estruturado | `/discutir-fase` → `/planejar-fase` → `/executar-fase` |
|
|
19
|
+
| "Onde parei?" | `/proximo` |
|
|
20
|
+
| Investigar bug | `/depurar` |
|
|
21
|
+
| Capturar ideia sem agir | `/nota` ou `/adicionar-tarefa` |
|
|
9
22
|
|
|
10
23
|
## Início Rápido
|
|
11
24
|
|