synapos 2.6.1 → 2.7.2
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/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 +192 -350
- 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 +7 -3
- package/package.json +1 -1
- package/.synapos/GUIDE.md +0 -660
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: synapos-set-model
|
|
3
|
-
version: 1.
|
|
4
|
-
description: Altera model_capability e model_name em docs/_memory/preferences.md
|
|
3
|
+
version: 1.1.0
|
|
4
|
+
description: Altera model_capability e model_name em docs/_memory/preferences.md
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# PROTOCOLO SET-MODEL
|
|
@@ -9,17 +9,17 @@ description: Altera model_capability e model_name em docs/_memory/preferences.md
|
|
|
9
9
|
> Atualiza as configurações de modelo usadas pelo pipeline-runner e model-adapter.
|
|
10
10
|
> Afeta: injeção de contexto, model_tier routing e nível de adaptação de prompts.
|
|
11
11
|
|
|
12
|
+
**Suporta dois modos:**
|
|
13
|
+
- **Non-interactive:** `/set-model high claude-opus-4-6` → aplica direto
|
|
14
|
+
- **Interactive:** `/set-model` → fluxo guiado com AskUserQuestion
|
|
15
|
+
|
|
12
16
|
---
|
|
13
17
|
|
|
14
18
|
## PASSO 1 — Ler estado atual
|
|
15
19
|
|
|
16
|
-
Leia `docs/_memory/preferences.md` e extraia
|
|
17
|
-
- `model_capability` (atual)
|
|
18
|
-
- `model_name` (atual)
|
|
19
|
-
- `model_fast` (atual, se existir)
|
|
20
|
-
- `model_powerful` (atual, se existir)
|
|
20
|
+
Leia `docs/_memory/preferences.md` e extraia valores atuais.
|
|
21
21
|
|
|
22
|
-
Se o arquivo não existir
|
|
22
|
+
Se o arquivo não existir:
|
|
23
23
|
```
|
|
24
24
|
⚠️ docs/_memory/preferences.md não encontrado.
|
|
25
25
|
Execute /init primeiro para criar o onboarding.
|
|
@@ -28,25 +28,118 @@ E encerre.
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
## PASSO 2 —
|
|
31
|
+
## PASSO 2 — Modo non-interactive (se argumentos fornecidos)
|
|
32
|
+
|
|
33
|
+
Se o comando vier com argumentos (ex: `/set-model high claude-opus-4-6`):
|
|
32
34
|
|
|
33
|
-
|
|
35
|
+
1. Parseie: `{capability} {model_name}` (model_fast e model_powerful são opcionais)
|
|
36
|
+
2. Valide `capability`: deve ser `high`, `standard` ou `lite`
|
|
37
|
+
3. Valide `model_name`: não vazio
|
|
38
|
+
4. Se válido: vá para PASSO 6 (confirmar e salvar)
|
|
39
|
+
5. Se inválido: informe erro e sugira interactive mode
|
|
34
40
|
|
|
41
|
+
**Formatos aceitos:**
|
|
35
42
|
```
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
model_fast : {valor ou "não definido"}
|
|
41
|
-
model_powerful : {valor ou "não definido"}
|
|
42
|
-
────────────────────────────────
|
|
43
|
+
/set-model high claude-opus-4-6
|
|
44
|
+
/set-model standard gpt-4o-mini
|
|
45
|
+
/set-model lite kimi
|
|
46
|
+
/set-model high opus — fast haiku — powerful opus # com multi-model
|
|
43
47
|
```
|
|
44
48
|
|
|
45
49
|
---
|
|
46
50
|
|
|
47
|
-
## PASSO 3 —
|
|
51
|
+
## PASSO 3 — Modo interativo (se sem argumentos)
|
|
48
52
|
|
|
49
|
-
|
|
53
|
+
Exiba estado atual e use **no máximo 2 AskUserQuestion**:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
⚙️ Configuração atual
|
|
57
|
+
model_capability: {valor}
|
|
58
|
+
model_name: {valor}
|
|
59
|
+
model_fast: {valor ou "—"}
|
|
60
|
+
model_powerful: {valor ou "—"}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
AskUserQuestion({
|
|
65
|
+
question: "Qual capability do modelo?",
|
|
66
|
+
options: [
|
|
67
|
+
{ label: "high", description: "Claude Opus/Sonnet, GPT-4o, Gemini Pro — contexto completo" },
|
|
68
|
+
{ label: "standard", description: "Claude Haiku, GPT-4o-mini, Gemini Flash — CoT prefix" },
|
|
69
|
+
{ label: "lite", description: "Kimi, MiniMax, Llama — context pruning" }
|
|
70
|
+
]
|
|
71
|
+
})
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
AskUserQuestion({
|
|
76
|
+
question: "Modelo principal?",
|
|
77
|
+
options: [
|
|
78
|
+
{ label: "claude-opus-4-6", description: "Anthropic" },
|
|
79
|
+
{ label: "claude-sonnet-4-6", description: "Anthropic" },
|
|
80
|
+
{ label: "gpt-4o", description: "OpenAI" },
|
|
81
|
+
{ label: "gpt-4o-mini", description: "OpenAI" },
|
|
82
|
+
{ label: "gemini-1.5-pro", description: "Google" },
|
|
83
|
+
{ label: "Outro", description: "Vou informar" }
|
|
84
|
+
]
|
|
85
|
+
})
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Se "Outro": peça input livre.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## PASSO 4 — Multi-model routing (opcional)
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
AskUserQuestion({
|
|
96
|
+
question: "Deseja configurar model_fast e model_powerful separados?",
|
|
97
|
+
options: [
|
|
98
|
+
{ label: "Não — usar um modelo só", description: "Mais simples" },
|
|
99
|
+
{ label: "Sim — diferenciar por tier", description: "Fast + Powerful" }
|
|
100
|
+
]
|
|
101
|
+
})
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Se Sim: perguntefast e powerful (máximo 2 AskUserQuestion adicionais).
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## PASSO 5 — Resumo e confirmação
|
|
109
|
+
|
|
110
|
+
Exiba resumo:
|
|
111
|
+
```
|
|
112
|
+
model_capability: {valor}
|
|
113
|
+
model_name: {valor}
|
|
114
|
+
model_fast: {valor ou "—"}
|
|
115
|
+
model_powerful: {valor ou "—"}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
AskUserQuestion({
|
|
120
|
+
question: "Aplicar esta configuração?",
|
|
121
|
+
options: [
|
|
122
|
+
{ label: "✅ Confirmar", description: "Salvar em preferences.md" },
|
|
123
|
+
{ label: "↩️ Cancelar", description: "Não alterar" }
|
|
124
|
+
]
|
|
125
|
+
})
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## PASSO 6 — Salvar
|
|
131
|
+
|
|
132
|
+
Atualize `docs/_memory/preferences.md` com os novos valores.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## PASSO 7 — Efeito por capability
|
|
137
|
+
|
|
138
|
+
| model_capability | O que muda |
|
|
139
|
+
|---|---|
|
|
140
|
+
| `high` | Contexto completo — sem adaptação |
|
|
141
|
+
| `standard` | CoT prefix + templates |
|
|
142
|
+
| `lite` | Context pruning (~70%) + scope forcing |
|
|
50
143
|
|
|
51
144
|
```
|
|
52
145
|
AskUserQuestion({
|
|
@@ -12,9 +12,10 @@ Este comando analisa automaticamente o projeto e gera um briefing técnico compl
|
|
|
12
12
|
|
|
13
13
|
# REGRAS ABSOLUTAS
|
|
14
14
|
|
|
15
|
-
## Regra 1:
|
|
15
|
+
## Regra 1: ESCANEAR SILENCIOSAMENTE, VALIDAR UMA VEZ
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Detecte tudo silenciosamente. Valide apenas no final (Fase 5).
|
|
18
|
+
Não pergunte após cada fase — isso cria fricção desnecessária.
|
|
18
19
|
|
|
19
20
|
## Regra 2: NUNCA INVENTE
|
|
20
21
|
|
|
@@ -78,29 +79,7 @@ Para cada arquivo `.md` encontrado na pasta de ADRs:
|
|
|
78
79
|
1. Ler o arquivo
|
|
79
80
|
2. Extrair: número, título, status, contexto, decisão, consequências
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
AskUserQuestion({
|
|
85
|
-
question: "Encontrei as seguintes ADRs. Todas estão ativas e corretas?",
|
|
86
|
-
options: [
|
|
87
|
-
{ label: "Sim, corretas", description: "Prosseguir" },
|
|
88
|
-
{ label: "ADRs incorretas", description: "Vou informar quais estão erradas" },
|
|
89
|
-
{ label: "Faltam ADRs", description: "Vou informar as que faltam" }
|
|
90
|
-
]
|
|
91
|
-
})
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Se "ADRs incorretas" ou "Faltam ADRs":
|
|
95
|
-
```
|
|
96
|
-
AskUserQuestion({
|
|
97
|
-
question: "Quais ADRs devem ser incluidas ou corrigidas?",
|
|
98
|
-
options: [
|
|
99
|
-
{ label: "Vou listar", description: "Informar ADRs manualmente" },
|
|
100
|
-
{ label: "Pular ADRs", description: "Gerar sem esta ADR" }
|
|
101
|
-
]
|
|
102
|
-
})
|
|
103
|
-
```
|
|
82
|
+
> Armazene os resultados em `[ADRs_DETECTED]` para exibir na Fase 5.
|
|
104
83
|
|
|
105
84
|
---
|
|
106
85
|
|
|
@@ -128,47 +107,13 @@ Padrões que indicam Lovable:
|
|
|
128
107
|
- shadcn/ui (`components/ui/`)
|
|
129
108
|
- Vite config
|
|
130
109
|
|
|
131
|
-
### 2.3
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
AskUserQuestion({
|
|
135
|
-
question: "Encontrei um frontend. É Lovable?",
|
|
136
|
-
options: [
|
|
137
|
-
{ label: "É Lovable", description: "Prosseguir com mapeamento" },
|
|
138
|
-
{ label: "É customizado", description: "Frontend manual, não Lovable" },
|
|
139
|
-
{ label: "Não é frontend", description: "Não existe frontend" }
|
|
140
|
-
]
|
|
141
|
-
})
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Se "É Lovable", perguntar sobre mocks:
|
|
145
|
-
```
|
|
146
|
-
AskUserQuestion({
|
|
147
|
-
question: "O frontend Lovable tem mocks de dados? (hardcoded no código)",
|
|
148
|
-
options: [
|
|
149
|
-
{ label: "Sim, tem mocks", description: "Vou identificar os mocks" },
|
|
150
|
-
{ label: "Não tem mocks", description: "Frontend já integrado" },
|
|
151
|
-
{ label: "Não sei", description: "Preciso verificar" }
|
|
152
|
-
]
|
|
153
|
-
})
|
|
154
|
-
```
|
|
110
|
+
### 2.3 Detectar Mocks (se Lovable)
|
|
155
111
|
|
|
156
|
-
Se
|
|
157
|
-
- Escaneie componentes .tsx/.jsx em `src/`
|
|
112
|
+
Se for Lovable, escaneie componentes .tsx/.jsx em `src/`:
|
|
158
113
|
- Identifique: useState com arrays/objetos hardcoded, arquivos mock*.ts, fake*.ts
|
|
159
114
|
- NÃO invente — liste apenas o que encontrar
|
|
160
115
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
AskUserQuestion({
|
|
165
|
-
question: "Encontrei os seguintes mocks pendentes de integração. Confirmar?",
|
|
166
|
-
options: [
|
|
167
|
-
{ label: "Corretos", description: "Prosseguir" },
|
|
168
|
-
{ label: "Corrigir lista", description: "Vou informar quais estão errados" }
|
|
169
|
-
]
|
|
170
|
-
})
|
|
171
|
-
```
|
|
116
|
+
> Armazene resultados em `[FRONTEND_DETECTED]` e `[MOCKS_DETECTED]` para Fase 5.
|
|
172
117
|
|
|
173
118
|
---
|
|
174
119
|
|
|
@@ -205,82 +150,28 @@ Escanear e detectar:
|
|
|
205
150
|
- Service Layer? (existe pasta services/)
|
|
206
151
|
- MVC? (existe controllers/, models/)
|
|
207
152
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
AskUserQuestion({
|
|
212
|
-
question: "Detectei backend em [caminho]. Estrutura está correta?",
|
|
213
|
-
options: [
|
|
214
|
-
{ label: "Correto", description: "Prosseguir" },
|
|
215
|
-
{ label: "Corrigir estrutura", description: "Vou informar a estrutura correta" }
|
|
216
|
-
]
|
|
217
|
-
})
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
AskUserQuestion({
|
|
222
|
-
question: "Detected as seguintes pastas. Confirmar convenções?",
|
|
223
|
-
options: [
|
|
224
|
-
{ label: "Corretas", description: "Prosseguir" },
|
|
225
|
-
{ label: "Corrigir", description: "Vou informar as correções" }
|
|
226
|
-
]
|
|
227
|
-
})
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### 3.5 NÃO Assuma, Pergunte
|
|
231
|
-
|
|
232
|
-
Se não conseguir detectar padrão claramente:
|
|
153
|
+
**Se não detectar claramente:** marcar como "não detectado" — não perguntar.
|
|
233
154
|
|
|
234
|
-
|
|
235
|
-
AskUserQuestion({
|
|
236
|
-
question: "Não consegui detectar o padrão arquitetural claramente. Qual é?",
|
|
237
|
-
options: [
|
|
238
|
-
{ label: "MVC", description: "Model-View-Controller" },
|
|
239
|
-
{ label: "Service Layer", description: "Services + Repositories" },
|
|
240
|
-
{ label: "Clean Architecture", description: "Camadas separadas" },
|
|
241
|
-
{ label: "Domain-Driven", description: "DDD com aggregates" },
|
|
242
|
-
{ label: "Outro", description: "Vou especificar" }
|
|
243
|
-
]
|
|
244
|
-
})
|
|
245
|
-
```
|
|
155
|
+
> Armazene resultados em `[BACKEND_DETECTED]` para Fase 5.
|
|
246
156
|
|
|
247
157
|
---
|
|
248
158
|
|
|
249
159
|
## Fase 4: Detectar Stack Tecnológico (Silencioso)
|
|
250
160
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
**Extrair:**
|
|
254
|
-
- Framework web: express, fastify, nest, koa, hapi
|
|
255
|
-
- Database/ORM: prisma, typeorm, drizzle, sequelize, mongoose
|
|
256
|
-
- Validação: zod, joi, yup, class-validator
|
|
257
|
-
- Testes: jest, vitest, mocha
|
|
258
|
-
- Runtime: engines.node
|
|
259
|
-
|
|
260
|
-
### 4.1 VALIDAR Stack
|
|
261
|
-
|
|
262
|
-
```
|
|
263
|
-
AskUserQuestion({
|
|
264
|
-
question: "Detectei a seguinte stack. Confirmar?",
|
|
265
|
-
options: [
|
|
266
|
-
{ label: "Stack Correta", description: "Prosseguir" },
|
|
267
|
-
{ label: "Corrigir stack", description: "Vou informar a stack correta" }
|
|
268
|
-
]
|
|
269
|
-
})
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
Se "Corrigir", perguntar cada item separadamente.
|
|
161
|
+
> Armazene em `[STACK_DETECTED]` para Fase 5.
|
|
273
162
|
|
|
274
163
|
---
|
|
275
164
|
|
|
276
|
-
## Fase 5: VALIDAR TUDO
|
|
165
|
+
## Fase 5: VALIDAR TUDO (UMA vez só)
|
|
166
|
+
|
|
167
|
+
Apresente o resumo consolidado de tudo que foi detectado:
|
|
277
168
|
|
|
278
169
|
```
|
|
279
170
|
AskUserQuestion({
|
|
280
|
-
question: "
|
|
171
|
+
question: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nAnálise completa!\n\nADRs: {N} encontradas {ou "nenhuma"}\nFrontend: {[tipo] ou "não detectado"}\nBackend: {[caminho] ou "não detectado"}\nStack: {[lista] ou "não detectada"}\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nTudo correto para gerar o briefing?",
|
|
281
172
|
options: [
|
|
282
|
-
{ label: "
|
|
283
|
-
{ label: "
|
|
173
|
+
{ label: "✅ Gerar briefing", description: "Prosseguir com geração" },
|
|
174
|
+
{ label: "✏️ Corrigir algo", description: "Vou informar o que está errado" }
|
|
284
175
|
]
|
|
285
176
|
})
|
|
286
177
|
```
|
|
@@ -12,71 +12,20 @@ Você é o orquestrador de documentação do Synapos. Ao ser ativado, analise o
|
|
|
12
12
|
|
|
13
13
|
Execute todas as verificações abaixo silenciosamente antes de apresentar qualquer output.
|
|
14
14
|
|
|
15
|
-
### 1.1 —
|
|
15
|
+
### 1.1 — Verificar onboarding
|
|
16
16
|
|
|
17
17
|
Verifique se os arquivos existem e leia-os:
|
|
18
18
|
- `docs/_memory/company.md` → nome, setor, linguagem de saída
|
|
19
19
|
- `docs/_memory/preferences.md` → IDE principal, preferências
|
|
20
20
|
|
|
21
21
|
Se `docs/_memory/company.md` **não existir**:
|
|
22
|
-
- Execute o **PROTOCOLO DE ONBOARDING** abaixo para criar os arquivos
|
|
23
|
-
- Depois continue para a verificação da documentação
|
|
24
|
-
|
|
25
|
-
### PROTOCOLO DE ONBOARDING (primeira vez)
|
|
26
|
-
|
|
27
|
-
Apresente ao usuário:
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
Olá! Sou o Synapos — framework de orquestração de agents.
|
|
31
|
-
Antes de começar, preciso de algumas informações rápidas:
|
|
32
|
-
|
|
33
|
-
1. Seu nome ou nome da empresa:
|
|
34
|
-
2. Setor / tipo de projeto principal:
|
|
35
|
-
3. Linguagem de saída preferida: [PT-BR / EN-US / outro]
|
|
36
|
-
4. IDE principal: [Claude Code / outro]
|
|
37
|
-
5. Você usa algum task tracker? [GitHub Issues / Linear / Jira / Não uso]
|
|
38
|
-
6. Qual modelo de IA você está usando? [Claude Sonnet/Opus / GPT-4o / Gemini Pro / Kimi / MiniMax / Outro]
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Após as respostas, mapeie o modelo informado para o perfil de capacidade:
|
|
42
|
-
|
|
43
|
-
| Modelo | model_capability |
|
|
44
|
-
|---|---|
|
|
45
|
-
| Claude Opus/Sonnet, GPT-4o, Gemini 1.5 Pro+ | `high` |
|
|
46
|
-
| GPT-4o-mini, Gemini Flash, Claude Haiku | `standard` |
|
|
47
|
-
| Kimi, MiniMax, Llama 3.x, modelos locais, outros não listados | `lite` |
|
|
48
|
-
|
|
49
|
-
Se o usuário não souber ou pular a pergunta, assuma `high`.
|
|
50
|
-
|
|
51
|
-
Crie os arquivos abaixo e continue para verificação da documentação:
|
|
52
|
-
|
|
53
|
-
**`docs/_memory/company.md`:**
|
|
54
|
-
```markdown
|
|
55
|
-
---
|
|
56
|
-
atualizado: {YYYY-MM-DD}
|
|
57
|
-
---
|
|
58
|
-
# Perfil
|
|
59
|
-
|
|
60
|
-
**Nome:** {resposta}
|
|
61
|
-
**Setor:** {resposta}
|
|
62
|
-
**Linguagem de saída:** {resposta}
|
|
63
22
|
```
|
|
23
|
+
⚠️ Onboarding não realizado.
|
|
64
24
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
atualizado: {YYYY-MM-DD}
|
|
69
|
-
---
|
|
70
|
-
# Preferências
|
|
71
|
-
|
|
72
|
-
**IDE Principal:** {resposta}
|
|
73
|
-
**Formato de data:** YYYY-MM-DD
|
|
74
|
-
**Task Tracker:** {github | linear | jira | none}
|
|
75
|
-
**model_capability:** {high | standard | lite}
|
|
76
|
-
**model_name:** {nome do modelo informado}
|
|
25
|
+
Execute /init primeiro para configurar o projeto.
|
|
26
|
+
O setup de documentação será retomado após o onboarding.
|
|
77
27
|
```
|
|
78
|
-
|
|
79
|
-
**Pare aqui até que o onboarding esteja completo.**
|
|
28
|
+
**Pare aqui e redirecione para /init.** O orchestrator handles the onboarding.
|
|
80
29
|
|
|
81
30
|
### 1.2 — Verificar documentação existente
|
|
82
31
|
|