sincron-plan 1.0.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 +20 -0
- package/README.md +192 -0
- package/agents/mapeador.md +232 -0
- package/agents/pesquisador.md +198 -0
- package/agents/planejador.md +230 -0
- package/agents/questionador.md +156 -0
- package/bin/install.js +423 -0
- package/commands/sincron-map.md +190 -0
- package/commands/sincron-plan.md +412 -0
- package/docs/arquitetura.md +106 -0
- package/docs/fluxo.md +166 -0
- package/package.json +42 -0
- package/templates/PRD.md +101 -0
- package/templates/ROADMAP.md +101 -0
- package/templates/codebase/ARCHITECTURE.md +45 -0
- package/templates/codebase/CONCERNS.md +53 -0
- package/templates/codebase/STACK.md +34 -0
- package/templates/codebase/STRUCTURE.md +46 -0
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sincron-plan
|
|
3
|
+
description: Planejamento estruturado com questionamento profundo e geração de PRD
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Glob
|
|
8
|
+
- Grep
|
|
9
|
+
- Bash
|
|
10
|
+
- Task
|
|
11
|
+
- AskUserQuestion
|
|
12
|
+
- WebSearch
|
|
13
|
+
- WebFetch
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# /sincron-plan - Planejamento Estruturado
|
|
17
|
+
|
|
18
|
+
## Propósito
|
|
19
|
+
Conduzir questionamento profundo e gerar PRD + Roadmap + User Stories para um projeto.
|
|
20
|
+
|
|
21
|
+
## Instruções de Execução
|
|
22
|
+
|
|
23
|
+
### FASE 1: DETECÇÃO DE CONTEXTO
|
|
24
|
+
|
|
25
|
+
**1.1 Verificar se existe código no diretório:**
|
|
26
|
+
```
|
|
27
|
+
- Glob para *.js, *.ts, *.py, *.java, *.go, etc
|
|
28
|
+
- Verificar package.json, requirements.txt, go.mod, etc
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**1.2 SE existe código:**
|
|
32
|
+
Verificar se `.sincron-plan/codebase/` existe e está completo (4 documentos).
|
|
33
|
+
|
|
34
|
+
**SE código existe MAS mapeamento NÃO existe:**
|
|
35
|
+
Perguntar ao usuário usando AskUserQuestion:
|
|
36
|
+
```
|
|
37
|
+
header: "Mapeamento"
|
|
38
|
+
question: "Detectei código existente mas sem mapeamento. Deseja mapear antes de planejar?"
|
|
39
|
+
options:
|
|
40
|
+
- label: "Sim, mapear primeiro (Recomendado)"
|
|
41
|
+
description: "Executa /sincron-map para entender o código existente"
|
|
42
|
+
- label: "Não, pular mapeamento"
|
|
43
|
+
description: "Continua direto para planejamento (você assume o risco)"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**SE escolher "Sim":**
|
|
47
|
+
Executar fluxo de `/sincron-map` primeiro, depois retornar aqui.
|
|
48
|
+
|
|
49
|
+
**1.3 SE não existe código OU já tem mapeamento:**
|
|
50
|
+
Continuar para Fase 2.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### FASE 2: QUESTIONAMENTO PROFUNDO
|
|
55
|
+
|
|
56
|
+
**2.1 Verificar se PROJECT.md já existe:**
|
|
57
|
+
Se `.sincron-plan/PROJECT.md` existe, perguntar:
|
|
58
|
+
```
|
|
59
|
+
header: "Projeto"
|
|
60
|
+
question: "Encontrei definição de projeto existente. O que deseja fazer?"
|
|
61
|
+
options:
|
|
62
|
+
- label: "Usar existente"
|
|
63
|
+
description: "Continua com o PROJECT.md atual"
|
|
64
|
+
- label: "Refazer"
|
|
65
|
+
description: "Inicia novo questionamento do zero"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**2.2 SE precisa criar PROJECT.md:**
|
|
69
|
+
Spawnar agente Questionador:
|
|
70
|
+
```
|
|
71
|
+
Task(
|
|
72
|
+
subagent_type: "general-purpose",
|
|
73
|
+
prompt: "Você é o Questionador do Sincron-Plan.
|
|
74
|
+
|
|
75
|
+
Sua missão: Conduzir questionamento profundo com o usuário para entender o que ele quer construir.
|
|
76
|
+
|
|
77
|
+
Siga as instruções em sincron-plan/agents/questionador.md.
|
|
78
|
+
|
|
79
|
+
Processo:
|
|
80
|
+
1. Pergunte: 'O que você quer construir?'
|
|
81
|
+
2. Faça follow-ups baseados nas respostas
|
|
82
|
+
3. Use as técnicas: Challenge vagueness, Make concrete, Clarification, Success definition, Reveal motivation
|
|
83
|
+
4. Quando tiver clareza, confirme o entendimento
|
|
84
|
+
5. Escreva .sincron-plan/PROJECT.md
|
|
85
|
+
|
|
86
|
+
IMPORTANTE: Este é um processo CONVERSACIONAL, não um checklist. Adapte suas perguntas às respostas do usuário.
|
|
87
|
+
|
|
88
|
+
Retorne APENAS:
|
|
89
|
+
project_defined
|
|
90
|
+
File: .sincron-plan/PROJECT.md
|
|
91
|
+
Lines: [N]"
|
|
92
|
+
)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### FASE 3: PESQUISA DE DOMÍNIO (Opcional)
|
|
98
|
+
|
|
99
|
+
Perguntar ao usuário usando AskUserQuestion:
|
|
100
|
+
```
|
|
101
|
+
header: "Pesquisa"
|
|
102
|
+
question: "Deseja pesquisar ecossistema e melhores práticas antes de definir requisitos?"
|
|
103
|
+
options:
|
|
104
|
+
- label: "Sim, pesquisar"
|
|
105
|
+
description: "Busca bibliotecas, frameworks e best practices relevantes"
|
|
106
|
+
- label: "Não, pular"
|
|
107
|
+
description: "Vai direto para definição de requisitos"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**SE escolher "Sim":**
|
|
111
|
+
```
|
|
112
|
+
Task(
|
|
113
|
+
subagent_type: "general-purpose",
|
|
114
|
+
prompt: "Você é o Pesquisador do Sincron-Plan.
|
|
115
|
+
|
|
116
|
+
Sua missão: Pesquisar o ecossistema relevante ao projeto definido em .sincron-plan/PROJECT.md.
|
|
117
|
+
|
|
118
|
+
Siga as instruções em sincron-plan/agents/pesquisador.md.
|
|
119
|
+
|
|
120
|
+
Processo:
|
|
121
|
+
1. Ler .sincron-plan/PROJECT.md para contexto
|
|
122
|
+
2. Identificar domínios de pesquisa
|
|
123
|
+
3. Usar WebSearch para descoberta
|
|
124
|
+
4. Usar WebFetch para documentação oficial
|
|
125
|
+
5. Categorizar em Table Stakes, Differentiators, Anti-features
|
|
126
|
+
6. Escrever .sincron-plan/research/SUMMARY.md
|
|
127
|
+
|
|
128
|
+
Retorne APENAS:
|
|
129
|
+
research_complete
|
|
130
|
+
File: .sincron-plan/research/SUMMARY.md
|
|
131
|
+
Lines: [N]
|
|
132
|
+
Topics: [lista]"
|
|
133
|
+
)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### FASE 4: DEFINIÇÃO DE REQUISITOS
|
|
139
|
+
|
|
140
|
+
**4.1 SE pesquisa foi feita:**
|
|
141
|
+
Ler `.sincron-plan/research/SUMMARY.md` e apresentar features descobertas:
|
|
142
|
+
|
|
143
|
+
```markdown
|
|
144
|
+
## Features Descobertas na Pesquisa
|
|
145
|
+
|
|
146
|
+
### Table Stakes (Essenciais)
|
|
147
|
+
Estas features são expectativa mínima no mercado:
|
|
148
|
+
1. [Feature 1]
|
|
149
|
+
2. [Feature 2]
|
|
150
|
+
|
|
151
|
+
### Differentiators (Oportunidades)
|
|
152
|
+
Estas features podem destacar seu produto:
|
|
153
|
+
1. [Feature 1]
|
|
154
|
+
2. [Feature 2]
|
|
155
|
+
|
|
156
|
+
### Anti-Features (Evitar)
|
|
157
|
+
Complexidades que não agregam valor:
|
|
158
|
+
1. [Feature 1]
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**4.2 Coletar requisitos do usuário:**
|
|
162
|
+
Usar AskUserQuestion para cada categoria de feature descoberta, ou perguntar diretamente se não houve pesquisa:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
header: "Requisitos"
|
|
166
|
+
question: "Quais features você quer incluir?"
|
|
167
|
+
multiSelect: true
|
|
168
|
+
options:
|
|
169
|
+
- label: "[Feature 1]"
|
|
170
|
+
description: "[descrição breve]"
|
|
171
|
+
- label: "[Feature 2]"
|
|
172
|
+
description: "[descrição breve]"
|
|
173
|
+
...
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**4.3 Classificar requisitos:**
|
|
177
|
+
```
|
|
178
|
+
header: "Priorização"
|
|
179
|
+
question: "Para cada feature selecionada, classifique como:"
|
|
180
|
+
options:
|
|
181
|
+
- label: "v1 (MVP)"
|
|
182
|
+
description: "Precisa estar na primeira versão"
|
|
183
|
+
- label: "v2 (Futuro)"
|
|
184
|
+
description: "Importante, mas pode esperar"
|
|
185
|
+
- label: "Fora de escopo"
|
|
186
|
+
description: "Não faz parte deste projeto"
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**4.4 Gerar REQUIREMENTS.md:**
|
|
190
|
+
```markdown
|
|
191
|
+
# Requirements: [Project Name]
|
|
192
|
+
|
|
193
|
+
**Generated:** [YYYY-MM-DD]
|
|
194
|
+
|
|
195
|
+
## v1 (MVP)
|
|
196
|
+
| ID | Requirement | Source |
|
|
197
|
+
|----|-------------|--------|
|
|
198
|
+
| REQ-001 | [description] | User/Research |
|
|
199
|
+
|
|
200
|
+
## v2 (Future)
|
|
201
|
+
| ID | Requirement | Rationale for Deferral |
|
|
202
|
+
|----|-------------|------------------------|
|
|
203
|
+
| REQ-010 | [description] | [why not v1] |
|
|
204
|
+
|
|
205
|
+
## Out of Scope
|
|
206
|
+
| Feature | Reason |
|
|
207
|
+
|---------|--------|
|
|
208
|
+
| [feature] | [why excluded] |
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Escrever em `.sincron-plan/REQUIREMENTS.md`.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
### FASE 5: GERAÇÃO DO PRD
|
|
216
|
+
|
|
217
|
+
Spawnar agente Planejador:
|
|
218
|
+
```
|
|
219
|
+
Task(
|
|
220
|
+
subagent_type: "general-purpose",
|
|
221
|
+
prompt: "Você é o Planejador do Sincron-Plan.
|
|
222
|
+
|
|
223
|
+
Sua missão: Transformar os requisitos em PRD, Roadmap e User Stories.
|
|
224
|
+
|
|
225
|
+
Inputs disponíveis em .sincron-plan/:
|
|
226
|
+
- PROJECT.md (obrigatório)
|
|
227
|
+
- REQUIREMENTS.md (obrigatório)
|
|
228
|
+
- research/SUMMARY.md (se existir)
|
|
229
|
+
- codebase/*.md (se existir)
|
|
230
|
+
|
|
231
|
+
Siga as instruções em sincron-plan/agents/planejador.md.
|
|
232
|
+
Use os templates em sincron-plan/templates/.
|
|
233
|
+
|
|
234
|
+
Processo:
|
|
235
|
+
1. Ler todos os inputs
|
|
236
|
+
2. Agrupar requisitos em fases lógicas
|
|
237
|
+
3. Identificar dependências
|
|
238
|
+
4. Gerar success criteria observáveis
|
|
239
|
+
5. Converter em user stories formato Sincron-Auto
|
|
240
|
+
6. Escrever PRD.md, ROADMAP.md, user-stories.md
|
|
241
|
+
|
|
242
|
+
Retorne APENAS:
|
|
243
|
+
planning_complete
|
|
244
|
+
Files:
|
|
245
|
+
- .sincron-plan/PRD.md ([N] lines)
|
|
246
|
+
- .sincron-plan/ROADMAP.md ([N] lines)
|
|
247
|
+
- .sincron-plan/user-stories.md ([N] lines)
|
|
248
|
+
Total User Stories: [N]
|
|
249
|
+
Phases: [N]"
|
|
250
|
+
)
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
### FASE 6: APROVAÇÃO
|
|
256
|
+
|
|
257
|
+
Apresentar resumo do plano gerado:
|
|
258
|
+
```markdown
|
|
259
|
+
## Plano Gerado
|
|
260
|
+
|
|
261
|
+
**Projeto**: [nome]
|
|
262
|
+
**Fases**: [N]
|
|
263
|
+
**User Stories**: [N]
|
|
264
|
+
**Requisitos v1**: [N]
|
|
265
|
+
**Requisitos v2**: [N]
|
|
266
|
+
|
|
267
|
+
### Fases
|
|
268
|
+
1. [Phase 1 name] - [N] stories
|
|
269
|
+
2. [Phase 2 name] - [N] stories
|
|
270
|
+
...
|
|
271
|
+
|
|
272
|
+
Documentos gerados:
|
|
273
|
+
- `.sincron-plan/PRD.md`
|
|
274
|
+
- `.sincron-plan/ROADMAP.md`
|
|
275
|
+
- `.sincron-plan/user-stories.md`
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Perguntar ao usuário:
|
|
279
|
+
```
|
|
280
|
+
header: "Aprovação"
|
|
281
|
+
question: "Este plano funciona para você?"
|
|
282
|
+
options:
|
|
283
|
+
- label: "Aprovar"
|
|
284
|
+
description: "Plano está bom, finalizar"
|
|
285
|
+
- label: "Ajustar"
|
|
286
|
+
description: "Preciso de modificações"
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**SE "Ajustar":**
|
|
290
|
+
Perguntar o que precisa mudar e regenerar a fase relevante.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
### FASE 7: INTEGRAÇÃO COM SINCRON-AUTO
|
|
295
|
+
|
|
296
|
+
**7.1 Detectar se Sincron-Auto está instalado:**
|
|
297
|
+
Verificar se existe `.claude/commands/sincron-auto.md`.
|
|
298
|
+
|
|
299
|
+
**7.2 SE instalado:**
|
|
300
|
+
```
|
|
301
|
+
header: "Sincron-Auto"
|
|
302
|
+
question: "Sincron-Auto detectado. Copiar user-stories para execução?"
|
|
303
|
+
options:
|
|
304
|
+
- label: "Sim, copiar"
|
|
305
|
+
description: "Copia para .sincron-auto/user-stories.md"
|
|
306
|
+
- label: "Não, manter apenas aqui"
|
|
307
|
+
description: "User stories ficam em .sincron-plan/"
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
**SE "Sim":**
|
|
311
|
+
```bash
|
|
312
|
+
mkdir -p .sincron-auto
|
|
313
|
+
cp .sincron-plan/user-stories.md .sincron-auto/user-stories.md
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**7.3 SE não instalado:**
|
|
317
|
+
```
|
|
318
|
+
User stories prontas em `.sincron-plan/user-stories.md`
|
|
319
|
+
|
|
320
|
+
Para executar com Sincron-Auto:
|
|
321
|
+
1. Instale o plugin Sincron-Auto
|
|
322
|
+
2. Execute /sincron-auto para iniciar implementação
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
### FASE 8: ATUALIZAR STATE
|
|
328
|
+
|
|
329
|
+
Atualizar `.sincron-plan/state.json`:
|
|
330
|
+
```json
|
|
331
|
+
{
|
|
332
|
+
"status": "complete",
|
|
333
|
+
"project_name": "[nome]",
|
|
334
|
+
"has_codebase_map": true/false,
|
|
335
|
+
"has_research": true/false,
|
|
336
|
+
"phases": [
|
|
337
|
+
{
|
|
338
|
+
"id": 1,
|
|
339
|
+
"name": "[name]",
|
|
340
|
+
"requirements": ["REQ-001", "REQ-002"],
|
|
341
|
+
"stories": ["US-001", "US-002"],
|
|
342
|
+
"status": "pending"
|
|
343
|
+
}
|
|
344
|
+
],
|
|
345
|
+
"requirements": {
|
|
346
|
+
"v1": ["REQ-001", "REQ-002"],
|
|
347
|
+
"v2": ["REQ-010"],
|
|
348
|
+
"out_of_scope": ["REQ-020"]
|
|
349
|
+
},
|
|
350
|
+
"planning_date": "[YYYY-MM-DD]"
|
|
351
|
+
}
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
### FASE 9: FINALIZAR
|
|
357
|
+
|
|
358
|
+
```markdown
|
|
359
|
+
## ✅ Planejamento Completo
|
|
360
|
+
|
|
361
|
+
### Documentos Gerados
|
|
362
|
+
| Documento | Descrição |
|
|
363
|
+
|-----------|-----------|
|
|
364
|
+
| `PROJECT.md` | Definição do projeto |
|
|
365
|
+
| `REQUIREMENTS.md` | Requisitos classificados |
|
|
366
|
+
| `PRD.md` | Product Requirements Document |
|
|
367
|
+
| `ROADMAP.md` | Visão de fases |
|
|
368
|
+
| `user-stories.md` | Stories para implementação |
|
|
369
|
+
|
|
370
|
+
### Estatísticas
|
|
371
|
+
- **Fases**: [N]
|
|
372
|
+
- **User Stories**: [N]
|
|
373
|
+
- **Requisitos v1**: [N]
|
|
374
|
+
- **Requisitos v2**: [N]
|
|
375
|
+
|
|
376
|
+
### Próximos Passos
|
|
377
|
+
[Se Sincron-Auto detectado]
|
|
378
|
+
Execute `/sincron-auto` para iniciar a implementação.
|
|
379
|
+
|
|
380
|
+
[Se não]
|
|
381
|
+
Use as user stories em `.sincron-plan/user-stories.md` como guia de implementação.
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
## Tratamento de Erros
|
|
385
|
+
|
|
386
|
+
### Agente Questionador Não Consegue Clareza
|
|
387
|
+
```
|
|
388
|
+
"Não consegui entender completamente o projeto após várias tentativas.
|
|
389
|
+
Pontos ainda confusos:
|
|
390
|
+
- [ponto 1]
|
|
391
|
+
- [ponto 2]
|
|
392
|
+
|
|
393
|
+
Podemos tentar novamente com mais contexto?"
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### Pesquisa Retorna Pouco
|
|
397
|
+
```
|
|
398
|
+
"A pesquisa retornou poucos resultados relevantes.
|
|
399
|
+
Isso pode acontecer com domínios muito nichados.
|
|
400
|
+
|
|
401
|
+
Deseja continuar sem pesquisa ou tentar termos diferentes?"
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### Planejador Não Consegue Gerar
|
|
405
|
+
```
|
|
406
|
+
"Não consegui gerar o plano. Possíveis causas:
|
|
407
|
+
- Requisitos muito vagos
|
|
408
|
+
- Conflitos entre requisitos
|
|
409
|
+
- Escopo muito amplo
|
|
410
|
+
|
|
411
|
+
Deseja revisar os requisitos?"
|
|
412
|
+
```
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Arquitetura do Sincron-Plan
|
|
2
|
+
|
|
3
|
+
## Visão Geral
|
|
4
|
+
|
|
5
|
+
O Sincron-Plan é um plugin independente que adiciona capacidades de planejamento estruturado e mapeamento de codebase ao ecossistema Sincron.
|
|
6
|
+
|
|
7
|
+
## Decisões Arquiteturais
|
|
8
|
+
|
|
9
|
+
| Decisão | Escolha | Rationale |
|
|
10
|
+
|---------|---------|-----------|
|
|
11
|
+
| Arquitetura | Plugin Separado | Independência, pode ser usado com ou sem Sincron-Auto |
|
|
12
|
+
| Fluxo Brownfield | Oferecer mapeamento | Pergunta se quer mapear, mas permite pular (greenfield) |
|
|
13
|
+
| Documentos de Mapeamento | 4 essenciais | STACK, ARCHITECTURE, STRUCTURE, CONCERNS |
|
|
14
|
+
|
|
15
|
+
## Arquitetura Anti-OOM
|
|
16
|
+
|
|
17
|
+
**Regra Fundamental**: Máximo 2 níveis de aninhamento.
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Command (sincron-plan.md ou sincron-map.md)
|
|
21
|
+
├─ Task(Questionador) → retorna project_defined
|
|
22
|
+
├─ Task(Pesquisador) → retorna research_complete
|
|
23
|
+
├─ Task(Mapeador x2 paralelo) → retorna mapping_complete
|
|
24
|
+
└─ Task(Planejador) → retorna planning_complete
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Restrições dos Agentes
|
|
28
|
+
|
|
29
|
+
Agentes NUNCA:
|
|
30
|
+
- Chamam outros agentes
|
|
31
|
+
- Usam AskUserQuestion (apenas Command usa)
|
|
32
|
+
- Retornam conteúdo volumoso (apenas status + file paths)
|
|
33
|
+
|
|
34
|
+
### Comunicação via Arquivos
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
.sincron-plan/
|
|
38
|
+
├── request.json # Command → Agentes
|
|
39
|
+
├── PROJECT.md # Questionador output
|
|
40
|
+
├── codebase/ # Mapeador output
|
|
41
|
+
│ ├── STACK.md
|
|
42
|
+
│ ├── ARCHITECTURE.md
|
|
43
|
+
│ ├── STRUCTURE.md
|
|
44
|
+
│ └── CONCERNS.md
|
|
45
|
+
├── research/
|
|
46
|
+
│ └── SUMMARY.md # Pesquisador output
|
|
47
|
+
├── REQUIREMENTS.md # Command gera após seleção
|
|
48
|
+
├── PRD.md # Planejador output
|
|
49
|
+
├── ROADMAP.md # Planejador output
|
|
50
|
+
└── user-stories.md # Planejador output (Sincron-Auto format)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## State Management
|
|
54
|
+
|
|
55
|
+
**Arquivo**: `.sincron-plan/state.json`
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"status": "initialized | mapped | planned | complete",
|
|
60
|
+
"project_name": "...",
|
|
61
|
+
"has_codebase_map": true,
|
|
62
|
+
"has_research": false,
|
|
63
|
+
"phases": [
|
|
64
|
+
{
|
|
65
|
+
"id": 1,
|
|
66
|
+
"name": "Foundation",
|
|
67
|
+
"requirements": ["REQ-001", "REQ-002"],
|
|
68
|
+
"status": "pending"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"requirements": {
|
|
72
|
+
"v1": ["REQ-001", "REQ-002"],
|
|
73
|
+
"v2": ["REQ-010"],
|
|
74
|
+
"out_of_scope": ["REQ-020"]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Integração com Sincron-Auto
|
|
80
|
+
|
|
81
|
+
Quando Sincron-Auto está instalado:
|
|
82
|
+
|
|
83
|
+
1. **Detecção automática**: Verificar se `.claude/commands/sincron-auto.md` existe
|
|
84
|
+
2. **Conversão**: User stories geradas já seguem formato Sincron-Auto
|
|
85
|
+
3. **Cópia opcional**: Perguntar se quer copiar para `.sincron-auto/user-stories.md`
|
|
86
|
+
4. **Bypass setup**: Se Sincron-Plan já rodou, Sincron-Auto pode pular fase de planejamento
|
|
87
|
+
|
|
88
|
+
## Fluxo de Dados
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
92
|
+
│ User Input │────▶│ Command │────▶│ Agentes │
|
|
93
|
+
└─────────────────┘ └────────┬────────┘ └────────┬────────┘
|
|
94
|
+
│ │
|
|
95
|
+
│ ▼
|
|
96
|
+
│ ┌─────────────────┐
|
|
97
|
+
│ │ .sincron-plan/ │
|
|
98
|
+
│ │ (arquivos) │
|
|
99
|
+
│ └────────┬────────┘
|
|
100
|
+
│ │
|
|
101
|
+
▼ │
|
|
102
|
+
┌─────────────────┐ │
|
|
103
|
+
│ State Machine │◀─────────────┘
|
|
104
|
+
│ (state.json) │
|
|
105
|
+
└─────────────────┘
|
|
106
|
+
```
|
package/docs/fluxo.md
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Fluxo do Sincron-Plan
|
|
2
|
+
|
|
3
|
+
## Fluxo Visual Completo
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
7
|
+
│ /sincron-plan │
|
|
8
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
9
|
+
│
|
|
10
|
+
▼
|
|
11
|
+
┌─────────────────┐
|
|
12
|
+
│ Código existe? │
|
|
13
|
+
└────────┬────────┘
|
|
14
|
+
│
|
|
15
|
+
┌──────────────┴──────────────┐
|
|
16
|
+
│ │
|
|
17
|
+
▼ ▼
|
|
18
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
19
|
+
│ SIM - Mapear? │ │ NÃO - Greenfield│
|
|
20
|
+
└────────┬────────┘ └────────┬────────┘
|
|
21
|
+
│ │
|
|
22
|
+
┌───────┴───────┐ │
|
|
23
|
+
│ │ │
|
|
24
|
+
▼ ▼ │
|
|
25
|
+
┌─────────┐ ┌─────────┐ │
|
|
26
|
+
│ /map │ │ Pular │ │
|
|
27
|
+
└────┬────┘ └────┬────┘ │
|
|
28
|
+
│ │ │
|
|
29
|
+
└──────────────┴──────────────────────┘
|
|
30
|
+
│
|
|
31
|
+
▼
|
|
32
|
+
┌─────────────────┐
|
|
33
|
+
│ Questionador │
|
|
34
|
+
│ (PROJECT.md) │
|
|
35
|
+
└────────┬────────┘
|
|
36
|
+
│
|
|
37
|
+
▼
|
|
38
|
+
┌─────────────────┐
|
|
39
|
+
│ Pesquisar? │
|
|
40
|
+
└────────┬────────┘
|
|
41
|
+
│
|
|
42
|
+
┌──────────────┴──────────────┐
|
|
43
|
+
│ │
|
|
44
|
+
▼ ▼
|
|
45
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
46
|
+
│ Pesquisador │ │ Pular │
|
|
47
|
+
│ (SUMMARY.md) │ │ │
|
|
48
|
+
└────────┬────────┘ └────────┬────────┘
|
|
49
|
+
│ │
|
|
50
|
+
└──────────────┬──────────────┘
|
|
51
|
+
│
|
|
52
|
+
▼
|
|
53
|
+
┌─────────────────┐
|
|
54
|
+
│ Seleção de Reqs │
|
|
55
|
+
│ (REQUIREMENTS) │
|
|
56
|
+
└────────┬────────┘
|
|
57
|
+
│
|
|
58
|
+
▼
|
|
59
|
+
┌─────────────────┐
|
|
60
|
+
│ Planejador │
|
|
61
|
+
│ (PRD + Stories) │
|
|
62
|
+
└────────┬────────┘
|
|
63
|
+
│
|
|
64
|
+
▼
|
|
65
|
+
┌─────────────────┐
|
|
66
|
+
│ Aprovação │
|
|
67
|
+
└────────┬────────┘
|
|
68
|
+
│
|
|
69
|
+
┌────────────┴────────────┐
|
|
70
|
+
│ │
|
|
71
|
+
▼ ▼
|
|
72
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
73
|
+
│Sincron-Auto │ │ Finalizar │
|
|
74
|
+
│detectado? Copiar│ │ │
|
|
75
|
+
└─────────────────┘ └─────────────────┘
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Descrição das Fases
|
|
79
|
+
|
|
80
|
+
### FASE 1: DETECÇÃO DE CONTEXTO
|
|
81
|
+
- Verificar se existe código no diretório
|
|
82
|
+
- SE existe código E NÃO existe `.sincron-plan/codebase/`:
|
|
83
|
+
- Perguntar: "Detectei código existente. Deseja mapear antes de planejar?"
|
|
84
|
+
- Sim → Executar /sincron-map primeiro
|
|
85
|
+
- Não → Continuar (usuário assume risco)
|
|
86
|
+
- SE não existe código OU já tem mapeamento:
|
|
87
|
+
- Continuar para Fase 2
|
|
88
|
+
|
|
89
|
+
### FASE 2: QUESTIONAMENTO PROFUNDO
|
|
90
|
+
- Spawnar agente Questionador
|
|
91
|
+
- Processo conversacional (NÃO checklist):
|
|
92
|
+
1. "O que você quer construir?"
|
|
93
|
+
2. Follow-ups baseados na resposta
|
|
94
|
+
3. Clarificar: problema, usuários, definição de "pronto"
|
|
95
|
+
4. Desafiar vaguidões: "Quando você diz X, quer dizer A ou B?"
|
|
96
|
+
- Gate de decisão: "Entendi o suficiente. Criar PROJECT.md?"
|
|
97
|
+
- Sim → Escrever `.sincron-plan/PROJECT.md`
|
|
98
|
+
- Continuar explorando → Loop
|
|
99
|
+
- Retornar ao Command com: `project_defined`
|
|
100
|
+
|
|
101
|
+
### FASE 3: PESQUISA DE DOMÍNIO (Opcional)
|
|
102
|
+
- Perguntar: "Pesquisar ecossistema/melhores práticas antes de definir requisitos?"
|
|
103
|
+
- SE Sim:
|
|
104
|
+
- Spawnar agente Pesquisador
|
|
105
|
+
- Usar Context7 PRIMEIRO (libraries/frameworks)
|
|
106
|
+
- WebSearch para descoberta
|
|
107
|
+
- Gerar `.sincron-plan/research/SUMMARY.md`
|
|
108
|
+
- Retornar: `research_complete`
|
|
109
|
+
- SE Não:
|
|
110
|
+
- Pular para Fase 4
|
|
111
|
+
|
|
112
|
+
### FASE 4: DEFINIÇÃO DE REQUISITOS
|
|
113
|
+
- Apresentar features descobertas (se pesquisa feita)
|
|
114
|
+
- Table stakes (essenciais)
|
|
115
|
+
- Differentiators (diferenciais)
|
|
116
|
+
- Anti-features (não fazer)
|
|
117
|
+
- Usuário seleciona: v1 / v2 / fora de escopo
|
|
118
|
+
- Gerar `.sincron-plan/REQUIREMENTS.md` com REQ-IDs
|
|
119
|
+
- Retornar: `requirements_defined`
|
|
120
|
+
|
|
121
|
+
### FASE 5: GERAÇÃO DO PRD
|
|
122
|
+
- Spawnar agente Planejador
|
|
123
|
+
- Inputs:
|
|
124
|
+
- PROJECT.md
|
|
125
|
+
- REQUIREMENTS.md
|
|
126
|
+
- research/SUMMARY.md (se existe)
|
|
127
|
+
- codebase/*.md (se existe)
|
|
128
|
+
- Processo:
|
|
129
|
+
1. Agrupar requirements em fases lógicas
|
|
130
|
+
2. Identificar dependências
|
|
131
|
+
3. Definir success criteria (perspectiva do usuário)
|
|
132
|
+
4. Gerar PRD.md com user stories formato Sincron-Auto
|
|
133
|
+
- Gate de aprovação: "Este plano funciona para você?"
|
|
134
|
+
- Aprovar → Finalizar
|
|
135
|
+
- Ajustar → Feedback e regenerar
|
|
136
|
+
- Saída final:
|
|
137
|
+
- `.sincron-plan/PRD.md` (PRD completo)
|
|
138
|
+
- `.sincron-plan/ROADMAP.md` (visão de fases)
|
|
139
|
+
- `.sincron-plan/user-stories.md` (formato Sincron-Auto)
|
|
140
|
+
|
|
141
|
+
### FASE 6: INTEGRAÇÃO COM SINCRON-AUTO (se disponível)
|
|
142
|
+
- Detectar se Sincron-Auto está instalado
|
|
143
|
+
- SE instalado:
|
|
144
|
+
- Perguntar: "Sincron-Auto detectado. Copiar user-stories para execução?"
|
|
145
|
+
- Sim → Copiar para `.sincron-auto/user-stories.md`
|
|
146
|
+
- Não → Apenas manter em `.sincron-plan/`
|
|
147
|
+
- SE não instalado:
|
|
148
|
+
- Exibir: "User stories prontas em `.sincron-plan/user-stories.md`"
|
|
149
|
+
|
|
150
|
+
## Fluxo do /sincron-map
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
1. Verificar se .sincron-plan/codebase/ existe
|
|
154
|
+
├─ Existe → Perguntar: Atualizar / Usar existente / Ignorar
|
|
155
|
+
└─ Não existe → Continuar
|
|
156
|
+
|
|
157
|
+
2. Spawnar 2 agentes mapeadores em paralelo (arquitetura anti-OOM):
|
|
158
|
+
├─ Agente 1: STACK.md + ARCHITECTURE.md
|
|
159
|
+
└─ Agente 2: STRUCTURE.md + CONCERNS.md
|
|
160
|
+
|
|
161
|
+
3. Aguardar confirmações (file paths + line counts apenas)
|
|
162
|
+
|
|
163
|
+
4. Verificar outputs (todos 4 documentos existem, >20 linhas cada)
|
|
164
|
+
|
|
165
|
+
5. Exibir resumo e sugerir: /sincron-plan para iniciar planejamento
|
|
166
|
+
```
|