synapos 2.6.0 → 2.7.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/.github/copilot-instructions.md +12 -10
- package/.synapos/.manifest.json +2 -2
- package/.synapos/VERSION +1 -1
- package/.synapos/copilot.md +65 -136
- package/.synapos/core/commands/bump.md +23 -43
- package/.synapos/core/commands/session.md +152 -0
- package/.synapos/core/commands/set-model.md +112 -19
- package/.synapos/core/commands/setup/discover.md +16 -125
- package/.synapos/core/commands/setup/start.md +5 -56
- package/.synapos/core/gate-system.md +53 -321
- package/.synapos/core/orchestrator.md +191 -378
- package/.synapos/core/pipeline-runner.md +117 -163
- package/.synapos/core/skills-engine.md +3 -2
- package/README.md +85 -207
- package/bin/synapos.js +1 -1
- package/package.json +1 -1
- package/.synapos/GUIDE.md +0 -660
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
Estas regras são ativas em **toda** interação, sem exceção:
|
|
11
11
|
|
|
12
12
|
1. **Nunca execute sem contexto mínimo** — leia `docs/_memory/company.md` antes de qualquer ação significativa. Se não existir, inicie o onboarding (veja `.synapos/copilot.md`).
|
|
13
|
-
2. **Nunca tome decisões autônomas** — escolhas de biblioteca, arquitetura, padrão ou framework que não estejam especificadas devem ser sinalizadas
|
|
13
|
+
2. **Nunca tome decisões autônomas** — escolhas de biblioteca, arquitetura, padrão ou framework que não estejam especificadas devem ser sinalizadas com `[?]` no output e aguardar aprovação do usuário antes de continuar.
|
|
14
14
|
3. **Respeite ADRs existentes** — antes de implementar, verifique arquivos com `ADR`, `adr` ou `decisions` no nome em `docs/`. Conflito com ADR = bloqueio obrigatório.
|
|
15
15
|
4. **Use os arquivos como memória** — estado e contexto vivem em `docs/.squads/sessions/{feature-slug}/`. Sempre leia antes de executar.
|
|
16
16
|
5. **Nunca escreva dentro de `.synapos/`** — essa pasta é somente do framework.
|
|
@@ -24,19 +24,22 @@ Ative via comentário no código ou mensagem no chat:
|
|
|
24
24
|
| Comando | Ação |
|
|
25
25
|
|---------|------|
|
|
26
26
|
| `synapos:init` | Iniciar ou retomar o orquestrador Synapos |
|
|
27
|
-
| `synapos:
|
|
27
|
+
| `synapos:session` | Listar sessions ativas e navegar contexto de features |
|
|
28
|
+
| `synapos:session slug:{feature}` | Abrir session específica com resumo de context.md |
|
|
29
|
+
| `synapos:session consolidate` | Consolidar memories.md e review-notes.md manualmente |
|
|
30
|
+
| `synapos:squad squad:{domínio} mode:{modo} pipeline:{pipeline}` | Criar e ativar um role |
|
|
28
31
|
| `synapos:step step:{id}` | Executar um step específico do pipeline ativo |
|
|
29
32
|
| `synapos:gate gate:{GATE-N}` | Executar validação de um gate |
|
|
30
|
-
| `synapos:status` | Exibir estado do
|
|
31
|
-
| `synapos:decision id:{N} choice:{A\|B}` | Resolver uma decisão pendente |
|
|
33
|
+
| `synapos:status` | Exibir estado do role e session ativos |
|
|
32
34
|
| `synapos:memory` | Exibir memória da feature ativa |
|
|
33
35
|
|
|
34
36
|
**Exemplos:**
|
|
35
37
|
```
|
|
36
38
|
// synapos:init
|
|
37
|
-
// synapos:
|
|
39
|
+
// synapos:session
|
|
40
|
+
// synapos:session slug:auth-module
|
|
41
|
+
// synapos:squad squad:frontend mode:quick pipeline:bug-fix
|
|
38
42
|
// synapos:step step:01-gate-integridade
|
|
39
|
-
// synapos:decision id:1 choice:A
|
|
40
43
|
```
|
|
41
44
|
|
|
42
45
|
---
|
|
@@ -45,11 +48,10 @@ Ative via comentário no código ou mensagem no chat:
|
|
|
45
48
|
|
|
46
49
|
| Modo | Quando usar | Comportamento |
|
|
47
50
|
|------|-------------|---------------|
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `strict` | Feature crítica com docs completas | Todos os gates, máxima qualidade |
|
|
51
|
+
| `quick` | Bug fix, ajuste, quick change | Contexto mínimo — session files apenas |
|
|
52
|
+
| `complete` | Feature nova, refactor, arquitetura | docs/, ADRs e session files completos |
|
|
51
53
|
|
|
52
|
-
O modo é
|
|
54
|
+
O modo é inferido automaticamente por palavras-chave da mensagem. Veja `.synapos/copilot.md` para a lógica completa.
|
|
53
55
|
|
|
54
56
|
---
|
|
55
57
|
|
package/.synapos/.manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"framework": {
|
|
3
3
|
"name": "synapos",
|
|
4
|
-
"version": "2.6.
|
|
4
|
+
"version": "2.6.1",
|
|
5
5
|
"released_at": "2026-04-03"
|
|
6
6
|
},
|
|
7
7
|
"best_practices": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"core": {
|
|
27
|
-
"orchestrator": "1.6.
|
|
27
|
+
"orchestrator": "1.6.1",
|
|
28
28
|
"pipeline_runner": "2.3.0",
|
|
29
29
|
"gate_system": "1.5.0",
|
|
30
30
|
"model_adapter": "1.1.0",
|
package/.synapos/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.6.
|
|
1
|
+
2.6.1
|
package/.synapos/copilot.md
CHANGED
|
@@ -25,6 +25,7 @@ Antes de executar qualquer protocolo, tenha em mente:
|
|
|
25
25
|
| `execution: checkpoint` | Apresente checklist `[ ]` e aguarde `ok` ou número |
|
|
26
26
|
| Gates automáticos | Checklist ao final do output — falhas listadas explicitamente |
|
|
27
27
|
| `/init`, `/setup:*` | `synapos:init`, `synapos:squad` via comentário ou mensagem |
|
|
28
|
+
| `/session` | `synapos:session` — lista sessions, abre contexto, consolida memórias |
|
|
28
29
|
|
|
29
30
|
Protocolo completo de adaptação: `.synapos/core/copilot-adapter.md`
|
|
30
31
|
|
|
@@ -60,65 +61,22 @@ Enquanto isso, você pode criar novos squads normalmente.
|
|
|
60
61
|
|
|
61
62
|
### PROTOCOLO DE ONBOARDING (primeira vez)
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
**1 pergunta. Nada mais.**
|
|
64
65
|
|
|
65
|
-
**Pergunta 1:**
|
|
66
66
|
```
|
|
67
|
-
Olá! Sou o Synapos
|
|
67
|
+
Olá! Sou o Synapos.
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
**Pergunta 2:**
|
|
74
|
-
```
|
|
75
|
-
Qual é o setor ou tipo de projeto?
|
|
69
|
+
Duas coisas rápidas para começar:
|
|
70
|
+
1. Qual é o nome do projeto?
|
|
71
|
+
2. O que você quer fazer agora?
|
|
76
72
|
|
|
77
|
-
|
|
78
|
-
2) E-commerce
|
|
79
|
-
3) Aplicativo Mobile
|
|
80
|
-
4) API / Backend
|
|
81
|
-
5) Ferramenta Interna
|
|
82
|
-
6) Open Source
|
|
83
|
-
7) Outro — vou especificar
|
|
73
|
+
Responda as duas juntas. Ex: "Meu SaaS — corrigir bug no login"
|
|
84
74
|
```
|
|
85
75
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
1) Português (PT-BR)
|
|
91
|
-
2) English (EN-US)
|
|
92
|
-
3) Outro
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
**Pergunta 4:**
|
|
96
|
-
```
|
|
97
|
-
Qual task tracker você usa?
|
|
98
|
-
|
|
99
|
-
1) GitHub Issues
|
|
100
|
-
2) Linear
|
|
101
|
-
3) Jira
|
|
102
|
-
4) Não uso
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Pergunta 5:**
|
|
106
|
-
```
|
|
107
|
-
Qual modelo de IA você está usando?
|
|
108
|
-
|
|
109
|
-
1) GPT-4o (GitHub Copilot padrão)
|
|
110
|
-
2) Claude Opus/Sonnet
|
|
111
|
-
3) Gemini Pro
|
|
112
|
-
4) Outro
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Após as respostas, mapeie o modelo para `model_capability`:
|
|
116
|
-
|
|
117
|
-
| Modelo | model_capability |
|
|
118
|
-
|---|---|
|
|
119
|
-
| GPT-4o, Claude Opus/Sonnet, Gemini 1.5 Pro+ | `high` |
|
|
120
|
-
| GPT-4o-mini, Claude Haiku, Gemini Flash | `standard` |
|
|
121
|
-
| Modelos locais, outros | `lite` |
|
|
76
|
+
Com a resposta, extraia nome do projeto e contexto da tarefa. Defaults silenciosos:
|
|
77
|
+
- Task tracker: `none`
|
|
78
|
+
- model_capability: `high`
|
|
79
|
+
- Linguagem: detectada na resposta, padrão `pt-BR`
|
|
122
80
|
|
|
123
81
|
Crie os arquivos:
|
|
124
82
|
|
|
@@ -129,9 +87,9 @@ atualizado: {YYYY-MM-DD}
|
|
|
129
87
|
---
|
|
130
88
|
# Perfil
|
|
131
89
|
|
|
132
|
-
**Nome:** {
|
|
133
|
-
**Setor:**
|
|
134
|
-
**Linguagem de saída:** {
|
|
90
|
+
**Nome:** {nome inferido}
|
|
91
|
+
**Setor:** não informado
|
|
92
|
+
**Linguagem de saída:** {pt-BR | en-US}
|
|
135
93
|
```
|
|
136
94
|
|
|
137
95
|
**`docs/_memory/preferences.md`:**
|
|
@@ -143,86 +101,42 @@ atualizado: {YYYY-MM-DD}
|
|
|
143
101
|
|
|
144
102
|
**IDE Principal:** Copilot
|
|
145
103
|
**Formato de data:** YYYY-MM-DD
|
|
146
|
-
**Task Tracker:**
|
|
147
|
-
**model_capability:**
|
|
148
|
-
**model_name:**
|
|
104
|
+
**Task Tracker:** none
|
|
105
|
+
**model_capability:** high
|
|
106
|
+
**model_name:** não informado
|
|
149
107
|
```
|
|
150
108
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
## PASSO 2 — MODE DECISION SYSTEM
|
|
154
|
-
|
|
155
|
-
Calcule o score de documentação e a complexidade da tarefa para determinar o modo de execução.
|
|
156
|
-
|
|
157
|
-
### 2.1 — Score de Documentação
|
|
109
|
+
> Setor, task tracker e modelo podem ser ajustados depois diretamente nos arquivos.
|
|
158
110
|
|
|
159
|
-
|
|
160
|
-
|------|--------|
|
|
161
|
-
| `docs/_memory/company.md` existe | +30 |
|
|
162
|
-
| `docs/tech/` existe com ≥ 1 arquivo `.md` | +20 |
|
|
163
|
-
| `docs/business/` existe com ≥ 1 arquivo `.md` | +20 |
|
|
164
|
-
| `docs/tech-context/` existe com ≥ 1 arquivo `.md` | +15 |
|
|
165
|
-
| Total de arquivos `.md` em `docs/` ≥ 5 | +15 |
|
|
166
|
-
|
|
167
|
-
Armazene como `[DOC_SCORE]` (0–100).
|
|
111
|
+
---
|
|
168
112
|
|
|
169
|
-
|
|
113
|
+
## PASSO 2 — ESCOLHA DE MODO
|
|
170
114
|
|
|
171
|
-
|
|
172
|
-
```
|
|
173
|
-
O que você quer fazer?
|
|
174
|
-
(Descreva em 1-2 frases — ex: corrigir bug no login, criar endpoint de pagamento)
|
|
175
|
-
```
|
|
115
|
+
**Tente inferir o modo automaticamente pela mensagem do usuário.**
|
|
176
116
|
|
|
177
|
-
|
|
|
117
|
+
| Sinal na mensagem | Modo inferido |
|
|
178
118
|
|---|---|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
182
|
-
|
|
183
|
-
### 2.3 — Execution Mode
|
|
119
|
+
| "fix", "bug", "typo", "quick", "ajuste", "cor", "texto" | `quick` |
|
|
120
|
+
| "feature", "arquitetura", "refactor", "sistema", "integração" | `complete` |
|
|
121
|
+
| Nenhum sinal claro | perguntar |
|
|
184
122
|
|
|
185
|
-
|
|
186
|
-
|---|---|
|
|
187
|
-
| `company.md` não existe OU `[DOC_SCORE]` = 0 | **BOOTSTRAP** |
|
|
188
|
-
| `[COMPLEXITY]` = LOW | **BOOTSTRAP** |
|
|
189
|
-
| `[COMPLEXITY]` = MEDIUM e `[DOC_SCORE]` < 40 | **BOOTSTRAP** |
|
|
190
|
-
| `[COMPLEXITY]` = MEDIUM e `[DOC_SCORE]` ≥ 40 | **STANDARD** |
|
|
191
|
-
| `[COMPLEXITY]` = HIGH e `[DOC_SCORE]` < 70 | **STANDARD** |
|
|
192
|
-
| `[COMPLEXITY]` = HIGH e `[DOC_SCORE]` ≥ 70 | **STRICT** |
|
|
193
|
-
|
|
194
|
-
### 2.4 — Informar o Modo
|
|
195
|
-
|
|
196
|
-
**BOOTSTRAP:**
|
|
123
|
+
**Se não for possível inferir, pergunte:**
|
|
197
124
|
```
|
|
198
|
-
|
|
199
|
-
Score de documentação: {DOC_SCORE}/100
|
|
200
|
-
Complexidade detectada: {COMPLEXITY}
|
|
201
|
-
|
|
202
|
-
Executando com contexto mínimo.
|
|
203
|
-
Pipelines disponíveis: quick-fix, bug-fix
|
|
125
|
+
Como você quer executar?
|
|
204
126
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
→ Crie docs/business/ com contexto de negócio (+20 pts)
|
|
127
|
+
1) ⚡ Rápido — executa direto, sem ler documentação do projeto
|
|
128
|
+
2) 🔵 Completo — lê docs/, injeta ADRs e contexto completo
|
|
208
129
|
```
|
|
209
130
|
|
|
210
|
-
|
|
211
|
-
```
|
|
212
|
-
🟡 Standard Mode
|
|
213
|
-
Score de documentação: {DOC_SCORE}/100
|
|
214
|
-
Complexidade detectada: {COMPLEXITY}
|
|
131
|
+
Armazene como `[EXECUTION_MODE]` (`quick` / `complete`).
|
|
215
132
|
|
|
216
|
-
|
|
133
|
+
**Informe o modo escolhido:**
|
|
217
134
|
```
|
|
218
|
-
|
|
219
|
-
**STRICT:**
|
|
135
|
+
⚡ Modo Rápido — executando sem documentação de projeto.
|
|
220
136
|
```
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
Contexto completo disponível. Todos os gates ativos. Máxima qualidade.
|
|
137
|
+
ou
|
|
138
|
+
```
|
|
139
|
+
🔵 Modo Completo — contexto completo disponível.
|
|
226
140
|
```
|
|
227
141
|
|
|
228
142
|
---
|
|
@@ -238,16 +152,16 @@ Para cada squad encontrado, leia `.synapos/squads/{squad}/squad.yaml` e extraia:
|
|
|
238
152
|
|
|
239
153
|
## PASSO 4 — MENU PRINCIPAL
|
|
240
154
|
|
|
241
|
-
**Se existem squads**, apresente:
|
|
155
|
+
**Se existem roles ativos (squads)**, apresente:
|
|
242
156
|
```
|
|
243
|
-
|
|
157
|
+
Roles ativos:
|
|
244
158
|
|
|
245
159
|
1) 🟢 {slug} — {domain} · {description}
|
|
246
160
|
2) 🟡 {slug} — {domain} · {description} (pausado)
|
|
247
|
-
3) ✨
|
|
161
|
+
3) ✨ Ativar novo role
|
|
248
162
|
```
|
|
249
163
|
|
|
250
|
-
**Se não existem
|
|
164
|
+
**Se não existem roles** → vá para PASSO 5.
|
|
251
165
|
|
|
252
166
|
---
|
|
253
167
|
|
|
@@ -397,17 +311,28 @@ Após confirmação, execute conforme `.synapos/core/pipeline-runner.md` com as
|
|
|
397
311
|
Quando o usuário usa `synapos:squad` com parâmetros, pule direto para PASSO 6:
|
|
398
312
|
|
|
399
313
|
```
|
|
400
|
-
// synapos:squad squad:frontend mode:
|
|
314
|
+
// synapos:squad squad:frontend mode:quick pipeline:bug-fix feature:fix-login
|
|
401
315
|
```
|
|
402
316
|
|
|
403
317
|
Parse os parâmetros:
|
|
404
|
-
- `squad:` → domínio do
|
|
405
|
-
- `mode:` → forçar execution mode (
|
|
318
|
+
- `squad:` → domínio do role
|
|
319
|
+
- `mode:` → forçar execution mode (`quick` / `complete`)
|
|
406
320
|
- `pipeline:` → pipeline a usar
|
|
407
321
|
- `feature:` → slug da feature session
|
|
408
322
|
|
|
409
323
|
---
|
|
410
324
|
|
|
325
|
+
## COMANDO `synapos:session`
|
|
326
|
+
|
|
327
|
+
Quando o usuário usa `synapos:session`, siga o protocolo de `.synapos/core/commands/session.md` com as adaptações Copilot ativas:
|
|
328
|
+
|
|
329
|
+
- Sem AskUserQuestion → apresente lista numerada e aguarde resposta
|
|
330
|
+
- `synapos:session` → lista todas as sessions
|
|
331
|
+
- `synapos:session slug:{feature}` → abre session específica com resumo de context.md
|
|
332
|
+
- `synapos:session consolidate` → consolida memories.md e review-notes.md da session ativa
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
411
336
|
## COMANDO `synapos:status`
|
|
412
337
|
|
|
413
338
|
Exiba o estado atual:
|
|
@@ -416,25 +341,29 @@ Exiba o estado atual:
|
|
|
416
341
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
417
342
|
Synapos Status
|
|
418
343
|
|
|
419
|
-
|
|
344
|
+
Role ativo: {slug} ({domain})
|
|
420
345
|
Feature: {feature-slug}
|
|
421
346
|
Pipeline: {nome}
|
|
422
347
|
Step atual: {step-id} ({N}/{total})
|
|
423
|
-
Modo: {
|
|
348
|
+
Modo: {Rápido | Completo}
|
|
424
349
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
425
350
|
```
|
|
426
351
|
|
|
427
352
|
---
|
|
428
353
|
|
|
429
|
-
##
|
|
354
|
+
## DECISÕES NO OUTPUT
|
|
355
|
+
|
|
356
|
+
Quando precisar tomar uma decisão fora do escopo do step, sinalize com `[?]` no output:
|
|
430
357
|
|
|
431
|
-
|
|
358
|
+
```
|
|
359
|
+
[?] Decisão necessária: {descrição curta}
|
|
360
|
+
Opções: A) {opção A} B) {opção B}
|
|
361
|
+
Recomendação: {opção preferida e motivo}
|
|
362
|
+
```
|
|
432
363
|
|
|
433
|
-
|
|
434
|
-
2. Bloqueie o squad: `status → "blocked"`
|
|
435
|
-
3. Informe o usuário
|
|
364
|
+
Aguarde a resposta do usuário antes de continuar. Nunca decida autonomamente.
|
|
436
365
|
|
|
437
|
-
Para
|
|
366
|
+
Para responder: o usuário digita a opção escolhida na conversa.
|
|
438
367
|
|
|
439
368
|
---
|
|
440
369
|
|
|
@@ -1,59 +1,39 @@
|
|
|
1
1
|
## PROTOCOLO DE BUMP
|
|
2
2
|
|
|
3
|
+
Versiona o **pacote npm** do Synapos. Não versiona arquivos markdown internos.
|
|
4
|
+
|
|
3
5
|
### 1 — Ler estado atual
|
|
4
|
-
- Leia
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
- Leia `package.json` → versão atual
|
|
7
|
+
|
|
8
|
+
### 2 — Detectar tipo de bump
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
**Se argumento fornecido** (ex: `/bump minor`): use diretamente.
|
|
11
|
+
|
|
12
|
+
**Se sem argumento:**
|
|
10
13
|
```
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
[
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
[m] MINOR — adiciona sem quebrar
|
|
20
|
-
[p] PATCH — corrige sem quebrar
|
|
14
|
+
AskUserQuestion({
|
|
15
|
+
question: "Versão atual: {versão}\n\nQual tipo de bump?",
|
|
16
|
+
options: [
|
|
17
|
+
{ label: "PATCH", description: "Correção sem quebrar (~1.0.1)" },
|
|
18
|
+
{ label: "MINOR", description: "Feature sem quebrar (~1.1.0)" },
|
|
19
|
+
{ label: "MAJOR", description: "Breaking change (~2.0.0)" }
|
|
20
|
+
]
|
|
21
|
+
})
|
|
21
22
|
```
|
|
22
23
|
|
|
23
24
|
### 3 — Calcular nova versão
|
|
24
25
|
Use semver: `MAJOR.MINOR.PATCH`
|
|
25
|
-
- PATCH: Z+1
|
|
26
|
-
- MINOR: Y+1, Z=0
|
|
27
|
-
- MAJOR: X+1, Y=0, Z=0
|
|
26
|
+
- PATCH: Z+1
|
|
27
|
+
- MINOR: Y+1, Z=0
|
|
28
|
+
- MAJOR: X+1, Y=0, Z=0
|
|
28
29
|
|
|
29
30
|
### 4 — Executar o bump
|
|
30
|
-
Execute em ordem:
|
|
31
|
-
|
|
32
|
-
**4a.** Atualizar `version:` no frontmatter do(s) arquivo(s) modificado(s)
|
|
33
31
|
|
|
34
|
-
**
|
|
35
|
-
- Versão do componente alterado
|
|
36
|
-
- Versão do framework (`framework.version` e `framework.released_at`)
|
|
32
|
+
**4a.** Atualizar `version` em `package.json`
|
|
37
33
|
|
|
38
|
-
**
|
|
39
|
-
|
|
40
|
-
**4d.** Adicionar entrada no `.synapos/CHANGELOG.md`:
|
|
41
|
-
```markdown
|
|
42
|
-
## [{nova_versão}] — {YYYY-MM-DD}
|
|
43
|
-
|
|
44
|
-
### {Adicionado | Modificado | Corrigido | Removido}
|
|
45
|
-
- `{componente}` v{versão} — {descrição da mudança}
|
|
46
|
-
```
|
|
34
|
+
**4b.** Adicionar entrada no `CHANGELOG.md` na raiz do projeto
|
|
47
35
|
|
|
48
|
-
### 5 —
|
|
49
|
-
Apresente um resumo do bump realizado:
|
|
36
|
+
### 5 — Resumo
|
|
50
37
|
```
|
|
51
|
-
Bump
|
|
52
|
-
|
|
53
|
-
Versão: {anterior} → {nova}
|
|
54
|
-
Arquivos atualizados:
|
|
55
|
-
✅ .synapos/VERSION
|
|
56
|
-
✅ .synapos/.manifest.json
|
|
57
|
-
✅ .synapos/CHANGELOG.md
|
|
58
|
-
✅ {arquivo do componente alterado}
|
|
38
|
+
✅ Bump: {anterior} → {nova}
|
|
59
39
|
```
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: synapos-session
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Gerenciamento de feature sessions — listar, visualizar, retomar e consolidar
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# COMANDO /session
|
|
8
|
+
|
|
9
|
+
> Ponto de acesso direto às sessions do projeto.
|
|
10
|
+
> Use quando quiser ver o estado das features sem passar pelo /init completo.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## USO
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/session → lista todas as sessions ativas
|
|
18
|
+
/session {slug} → abre a session de uma feature específica
|
|
19
|
+
/session consolidate → consolida memories.md e review-notes.md da session ativa
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## PROTOCOLO
|
|
25
|
+
|
|
26
|
+
### Sem argumento — listar sessions
|
|
27
|
+
|
|
28
|
+
1. Liste todos os subdiretórios em `docs/.squads/sessions/`
|
|
29
|
+
2. Para cada session, leia `state.json` e extraia:
|
|
30
|
+
- `feature` (slug)
|
|
31
|
+
- `squads` — lista de roles que trabalharam + status de cada um
|
|
32
|
+
- `updated_at` — data da última atividade
|
|
33
|
+
|
|
34
|
+
Exiba com AskUserQuestion:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
AskUserQuestion({
|
|
38
|
+
question: "Sessions ativas neste projeto:",
|
|
39
|
+
options: [
|
|
40
|
+
{
|
|
41
|
+
label: "📂 {feature-slug}",
|
|
42
|
+
description: "Roles: {lista} · Última atividade: {updated_at}"
|
|
43
|
+
},
|
|
44
|
+
// uma por session encontrada
|
|
45
|
+
{ label: "↩ Voltar ao menu", description: "Ir para /init" }
|
|
46
|
+
]
|
|
47
|
+
})
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Ao selecionar uma session → execute o protocolo **Com argumento** abaixo.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### Com argumento `{slug}` — abrir session
|
|
55
|
+
|
|
56
|
+
1. Leia `docs/.squads/sessions/{slug}/context.md`
|
|
57
|
+
2. Leia `docs/.squads/sessions/{slug}/memories.md`
|
|
58
|
+
3. Leia `docs/.squads/sessions/{slug}/state.json`
|
|
59
|
+
|
|
60
|
+
Exiba resumo e menu de ações:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
64
|
+
Session: {feature-slug}
|
|
65
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
66
|
+
|
|
67
|
+
O que é: {primeira linha de context.md ## O que é}
|
|
68
|
+
Decisões: {contagem de itens em ## Decisões tomadas}
|
|
69
|
+
Memórias: {contagem de ## em memories.md} entradas
|
|
70
|
+
Roles que trabalharam: {lista do state.json}
|
|
71
|
+
|
|
72
|
+
Última atividade: {updated_at do state.json}
|
|
73
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
AskUserQuestion({
|
|
78
|
+
question: "Session {feature-slug} — o que você quer fazer?",
|
|
79
|
+
options: [
|
|
80
|
+
{ label: "▶️ Retomar com role ativo", description: "Continuar de onde parou" },
|
|
81
|
+
{ label: "📄 Ver context.md", description: "Ler contexto completo da feature" },
|
|
82
|
+
{ label: "🧠 Ver memories.md", description: "Ver aprendizados acumulados" },
|
|
83
|
+
{ label: "🗜 Consolidar", description: "Compactar memories e review-notes" },
|
|
84
|
+
{ label: "↩ Voltar", description: "Voltar à lista de sessions" }
|
|
85
|
+
]
|
|
86
|
+
})
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
- **Retomar com role ativo** → redirecione para o `/init` passando o slug da session como contexto
|
|
90
|
+
- **Ver context.md** → exiba o conteúdo do arquivo inline
|
|
91
|
+
- **Ver memories.md** → exiba o conteúdo do arquivo inline
|
|
92
|
+
- **Consolidar** → execute o protocolo de consolidação abaixo
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Com argumento `consolidate` — consolidar session ativa
|
|
97
|
+
|
|
98
|
+
> Use quando memories.md ou review-notes.md estiverem grandes e difíceis de ler.
|
|
99
|
+
> Consolidar não deleta informação — apenas reorganiza.
|
|
100
|
+
|
|
101
|
+
**Pré-condição:** deve haver uma session ativa no contexto (slug conhecido).
|
|
102
|
+
Se não houver, liste as sessions e peça ao usuário para escolher.
|
|
103
|
+
|
|
104
|
+
**Protocolo de consolidação de `memories.md`:**
|
|
105
|
+
|
|
106
|
+
1. Leia o arquivo completo
|
|
107
|
+
2. Identifique entradas antigas (mais de 7 dias ou mais de 10 entradas)
|
|
108
|
+
3. Crie nova seção no topo:
|
|
109
|
+
```markdown
|
|
110
|
+
## Consolidado até {YYYY-MM-DD}
|
|
111
|
+
|
|
112
|
+
### Aprendizados principais
|
|
113
|
+
{resumo estruturado preservando todas as informações relevantes}
|
|
114
|
+
|
|
115
|
+
### Armadilhas identificadas
|
|
116
|
+
{lista das armadilhas mais importantes}
|
|
117
|
+
|
|
118
|
+
### Decisões registradas
|
|
119
|
+
{decisões que não estão em context.md}
|
|
120
|
+
```
|
|
121
|
+
4. Marque entradas consolidadas com `<!-- consolidado {data} -->`
|
|
122
|
+
5. Não delete nenhuma entrada
|
|
123
|
+
|
|
124
|
+
**Protocolo de consolidação de `review-notes.md`:**
|
|
125
|
+
|
|
126
|
+
1. Leia o arquivo completo
|
|
127
|
+
2. Crie nova seção no topo:
|
|
128
|
+
```markdown
|
|
129
|
+
## Revisões Consolidadas até {YYYY-MM-DD}
|
|
130
|
+
|
|
131
|
+
{resumo estruturado das revisões antigas, agrupado por tema}
|
|
132
|
+
```
|
|
133
|
+
3. Marque entradas consolidadas com `<!-- consolidado {data} -->`
|
|
134
|
+
|
|
135
|
+
**Log ao concluir:**
|
|
136
|
+
```
|
|
137
|
+
✅ Consolidação concluída
|
|
138
|
+
memories.md: {N} entradas → 1 bloco consolidado
|
|
139
|
+
review-notes.md: {N} entradas → 1 bloco consolidado
|
|
140
|
+
Session: docs/.squads/sessions/{feature-slug}/
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## REGRAS
|
|
146
|
+
|
|
147
|
+
| Regra | Descrição |
|
|
148
|
+
|-------|-----------|
|
|
149
|
+
| **Leitura apenas** | `/session` nunca modifica arquivos — exceto `/session consolidate` |
|
|
150
|
+
| **Consolidar é manual** | Nunca consolide automaticamente — só quando o usuário executar `/session consolidate` |
|
|
151
|
+
| **context.md é a estrela** | Sempre exiba o resumo de context.md no cabeçalho da session |
|
|
152
|
+
| **Sem pipeline** | `/session` não inicia pipeline — apenas navega e organiza |
|