synapos 2.6.1 → 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/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/package.json +1 -1
- package/.synapos/GUIDE.md +0 -660
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: synapos-pipeline-runner
|
|
3
|
-
version: 2.2.0
|
|
4
3
|
description: Engine de execução de pipelines — gerencia steps, agents, vetos e revisões
|
|
5
4
|
---
|
|
6
5
|
|
|
@@ -47,74 +46,52 @@ O `{feature-slug}` é o identificador da feature — geralmente o nome da branch
|
|
|
47
46
|
|
|
48
47
|
### 1.1 — Carregar contexto
|
|
49
48
|
|
|
50
|
-
Leia os seguintes arquivos:
|
|
49
|
+
Leia os seguintes arquivos na ordem exata:
|
|
50
|
+
|
|
51
51
|
```
|
|
52
52
|
.synapos/squads/{squad-slug}/squad.yaml → configuração do squad
|
|
53
|
-
docs/.squads/sessions/{feature-slug}/memories.md → memória da feature (todos os squads)
|
|
54
|
-
docs/.squads/sessions/{feature-slug}/review-notes.md → notas de revisão (se existir)
|
|
55
|
-
docs/.squads/sessions/{feature-slug}/context.md → contexto da feature (se existir)
|
|
56
|
-
docs/.squads/sessions/{feature-slug}/architecture.md → arquitetura (se existir)
|
|
57
|
-
docs/.squads/sessions/{feature-slug}/plan.md → plano (se existir)
|
|
58
53
|
docs/_memory/company.md → perfil da empresa/usuário
|
|
59
54
|
docs/_memory/preferences.md → preferências de saída
|
|
55
|
+
docs/.squads/sessions/{feature-slug}/context.md → contexto da feature ← LEIA PRIMEIRO, sempre
|
|
56
|
+
docs/.squads/sessions/{feature-slug}/memories.md → memória da feature
|
|
57
|
+
docs/.squads/sessions/{feature-slug}/architecture.md → arquitetura (se existir)
|
|
58
|
+
docs/.squads/sessions/{feature-slug}/plan.md → plano (se existir)
|
|
59
|
+
docs/.squads/sessions/{feature-slug}/review-notes.md → notas de revisão (se existir)
|
|
60
60
|
docs/_memory/project-learnings.md → aprendizados transversais (se existir)
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
> **Regra — context.md é obrigatório em feature existente:**
|
|
64
|
+
> Se a session folder já existe e `context.md` está presente, leia-o **antes de qualquer outra coisa**.
|
|
65
|
+
> O context.md é a memória principal da feature — define o que é, por que existe, decisões tomadas e o que não fazer.
|
|
66
|
+
> Ignorar o context.md em feature existente é o erro mais comum de um role novo entrando na feature.
|
|
67
|
+
|
|
68
|
+
Leia `execution_mode` do `squad.yaml` e configure o runner:
|
|
64
69
|
|
|
65
70
|
| `execution_mode` | Contexto injetado | Gates ativos |
|
|
66
71
|
|---|---|---|
|
|
67
|
-
| `
|
|
68
|
-
| `
|
|
69
|
-
| `strict` | Tudo — docs completas + session files + ADRs | Todos os gates |
|
|
72
|
+
| `quick` | `company.md` + session files | GATE-0, GATE-3, GATE-5 |
|
|
73
|
+
| `complete` | Tudo — docs/, ADRs, session files | GATE-0, GATE-3, GATE-5 |
|
|
70
74
|
|
|
71
75
|
Log ao iniciar:
|
|
72
76
|
```
|
|
73
|
-
⚙️ [MODE] {
|
|
74
|
-
Gates ativos:
|
|
77
|
+
⚙️ [MODE] {Rápido | Completo}
|
|
78
|
+
Gates ativos: GATE-0, GATE-3, GATE-5
|
|
75
79
|
```
|
|
76
80
|
|
|
77
|
-
**Se `execution_mode:
|
|
81
|
+
**Se `execution_mode: quick`:**
|
|
78
82
|
- Não tente ler `docs/`, `docs/business/`, `docs/tech/` nem `docs/tech-context/`
|
|
79
83
|
- Injete apenas: `company.md` (se existir) + session files + step instructions
|
|
80
|
-
- Log adicional: `⚡ [
|
|
84
|
+
- Log adicional: `⚡ [RÁPIDO] Contexto mínimo — ADRs e docs de projeto não injetados`
|
|
81
85
|
|
|
82
|
-
**Se `execution_mode:
|
|
86
|
+
**Se `execution_mode: complete`:**
|
|
83
87
|
|
|
84
88
|
Adicionalmente, **pré-carregue os ADRs do projeto uma única vez**:
|
|
85
89
|
- Leia todos os arquivos em `docs/` cujo nome contenha `ADR`, `adr`, `decisions` ou `architecture-decision`
|
|
86
90
|
- Armazene o conteúdo em memória como `[ADRS_CARREGADOS]`
|
|
87
91
|
- Esses ADRs serão injetados diretamente nos steps — agents não precisam ler `docs/` para buscá-los
|
|
88
92
|
|
|
89
|
-
Conte as seções de segundo nível (`##`) em `memories.md` e `review-notes.md` e armazene os valores como `[MEMORIES_COUNT]` e `[REVIEW_NOTES_COUNT]` para uso nas fases 2 e 3.
|
|
90
|
-
|
|
91
|
-
### 1.1b — Estimativa de Budget de Contexto
|
|
92
|
-
|
|
93
|
-
Com base nos arquivos carregados em 1.1, estime o volume de contexto da session:
|
|
94
|
-
|
|
95
|
-
1. Some o número de linhas de `context.md` + `architecture.md` + `plan.md` (se existirem)
|
|
96
|
-
2. Some o número de linhas de `memories.md` + `review-notes.md`
|
|
97
|
-
|
|
98
|
-
| Linhas totais (session files) | Ação |
|
|
99
|
-
|---|---|
|
|
100
|
-
| < 400 linhas | Sem alerta — contexto saudável |
|
|
101
|
-
| 400–700 linhas | Alerta amarelo: contexto crescendo |
|
|
102
|
-
| > 700 linhas | Alerta laranja: considere ativar `model_capability: standard` |
|
|
103
|
-
|
|
104
|
-
Se o total ultrapassar **400 linhas**, exiba ao anunciar o pipeline:
|
|
105
|
-
```
|
|
106
|
-
⚠️ [BUDGET] Session com contexto elevado:
|
|
107
|
-
context.md + architecture.md + plan.md: ~{N} linhas
|
|
108
|
-
memories.md + review-notes.md: ~{N} linhas
|
|
109
|
-
Total: ~{soma} linhas (~{soma/25}k tokens estimados por step)
|
|
110
|
-
|
|
111
|
-
Dica: ative model_capability: standard em docs/_memory/preferences.md
|
|
112
|
-
para comprimir o contexto automaticamente.
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Nenhuma execução é bloqueada — apenas alerta informativo.
|
|
116
93
|
|
|
117
|
-
### 1.
|
|
94
|
+
### 1.1b — Verificar model_capability
|
|
118
95
|
|
|
119
96
|
Leia o campo `model_capability` de `docs/_memory/preferences.md`:
|
|
120
97
|
|
|
@@ -202,7 +179,8 @@ Verifique se `docs/.squads/sessions/{feature-slug}/` existe.
|
|
|
202
179
|
|
|
203
180
|
```
|
|
204
181
|
docs/.squads/sessions/{feature-slug}/
|
|
205
|
-
├──
|
|
182
|
+
├── context.md ← template padrão (ver abaixo)
|
|
183
|
+
├── memories.md ← template padrão (ver abaixo)
|
|
206
184
|
├── review-notes.md ← inicializar vazio com header
|
|
207
185
|
└── state.json ← inicializar com estrutura abaixo
|
|
208
186
|
```
|
|
@@ -217,21 +195,48 @@ docs/.squads/sessions/{feature-slug}/
|
|
|
217
195
|
}
|
|
218
196
|
```
|
|
219
197
|
|
|
198
|
+
`context.md` inicial:
|
|
199
|
+
```markdown
|
|
200
|
+
# Contexto: {feature-slug}
|
|
201
|
+
|
|
202
|
+
> Arquivo central da feature. Lido por todos os roles antes de executar qualquer step.
|
|
203
|
+
> Atualizado pelo role que fizer discovery/investigação.
|
|
204
|
+
|
|
205
|
+
## O que é
|
|
206
|
+
{descrição da feature — preenchido na pré-execução ou pelo usuário}
|
|
207
|
+
|
|
208
|
+
## Por que existe
|
|
209
|
+
{motivação de negócio ou técnica}
|
|
210
|
+
|
|
211
|
+
## Decisões tomadas
|
|
212
|
+
{decisões já resolvidas — evita retrabalho}
|
|
213
|
+
|
|
214
|
+
## O que não fazer
|
|
215
|
+
{armadilhas conhecidas, abordagens descartadas}
|
|
216
|
+
```
|
|
217
|
+
|
|
220
218
|
`memories.md` inicial:
|
|
221
219
|
```markdown
|
|
222
|
-
# Memória
|
|
220
|
+
# Memória: {feature-slug}
|
|
221
|
+
|
|
222
|
+
> Aprendizados acumulados de todos os roles que trabalharam nesta feature.
|
|
223
|
+
> Append-only. Para consolidar: execute /consolidate.
|
|
224
|
+
|
|
225
|
+
## Aprendizados
|
|
226
|
+
{preenchido durante execuções}
|
|
223
227
|
|
|
224
|
-
|
|
225
|
-
|
|
228
|
+
## Armadilhas conhecidas
|
|
229
|
+
{preenchido durante execuções}
|
|
226
230
|
|
|
227
|
-
|
|
231
|
+
## Próximos passos sugeridos
|
|
232
|
+
{preenchido durante execuções}
|
|
228
233
|
```
|
|
229
234
|
|
|
230
235
|
`review-notes.md` inicial:
|
|
231
236
|
```markdown
|
|
232
237
|
# Review Notes: {feature-slug}
|
|
233
238
|
|
|
234
|
-
> Notas de revisão de todos os
|
|
239
|
+
> Notas de revisão de todos os roles. Append-only.
|
|
235
240
|
|
|
236
241
|
(preenchido durante revisões)
|
|
237
242
|
```
|
|
@@ -278,40 +283,48 @@ Atualize `state.updated_at`.
|
|
|
278
283
|
|
|
279
284
|
**A cada step iniciado**, atualize imediatamente `state.squads["{squad-slug}"].suspended_at` com o step atual. Isso garante recuperação precisa se a sessão for interrompida.
|
|
280
285
|
|
|
281
|
-
### 1.4c —
|
|
286
|
+
### 1.4c — Resiliência do state.json
|
|
282
287
|
|
|
283
|
-
**
|
|
284
|
-
Antes de usar o `state.json`, execute:
|
|
285
|
-
1. Tente parsear o conteúdo como JSON
|
|
286
|
-
2. Se falhar (JSON malformado): crie backup automático em `state.json.bak.{ISO-timestamp}` e informe:
|
|
287
|
-
```
|
|
288
|
-
⚠️ state.json corrompido. Backup salvo em state.json.bak.{timestamp}.
|
|
289
|
-
Reiniciando state da feature. Histórico preservado no backup.
|
|
290
|
-
```
|
|
291
|
-
3. Reinicialize com estrutura mínima (`{ "feature": "{slug}", "created_at": "...", "squads": {} }`)
|
|
288
|
+
O state.json é **best-effort** — log de execução, não fonte de verdade crítica.
|
|
292
289
|
|
|
293
|
-
**
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
3. Se inválido: descarte a escrita, log de erro, não sobrescreva o arquivo existente
|
|
298
|
-
4. Se válido: sobrescreva (nunca usar append direto — sempre reescrever o arquivo completo com o objeto completo)
|
|
290
|
+
**Leitura:**
|
|
291
|
+
- Tente parsear como JSON
|
|
292
|
+
- Se falhar: logue `⚠️ state.json corrompido — reiniciando estado` e reinicialize com estrutura mínima
|
|
293
|
+
- Nunca bloqueie a execução por causa do state.json
|
|
299
294
|
|
|
300
|
-
**
|
|
295
|
+
**Escrita:**
|
|
296
|
+
- Escreva normalmente após cada mudança de step
|
|
297
|
+
- Se a escrita falhar: logue o erro e continue sem interromper o pipeline
|
|
298
|
+
|
|
299
|
+
**Regra:** agents não escrevem no state.json. Apenas o pipeline-runner.
|
|
301
300
|
|
|
302
301
|
### 1.4b — Verificar pre_pipeline
|
|
303
302
|
|
|
304
|
-
|
|
303
|
+
**Validação de segurança:** Antes de acessar `pre_pipeline`, verifique se a chave existe no squad.yaml.
|
|
305
304
|
|
|
306
305
|
```yaml
|
|
306
|
+
# squad.yaml — estrutura válida
|
|
307
307
|
pre_pipeline:
|
|
308
|
-
available: true
|
|
309
|
-
agent: {id-do-agent-lead}
|
|
308
|
+
available: true # boolean
|
|
309
|
+
agent: {id-do-agent-lead} # string — ID de um agent do squad
|
|
310
310
|
```
|
|
311
311
|
|
|
312
|
-
**Se `pre_pipeline
|
|
312
|
+
**Se `pre_pipeline` não existe ou `available: false`:** pule esta seção.
|
|
313
313
|
|
|
314
|
-
|
|
314
|
+
**Se `pre_pipeline.available: true`:**
|
|
315
|
+
|
|
316
|
+
1. **Validar agente:**
|
|
317
|
+
- Verifique se `pre_pipeline.agent` está preenchido (não vazio/nulo)
|
|
318
|
+
- Verifique se o agent referenciado existe no squad.yaml (em `agents[]`)
|
|
319
|
+
- Se inválido: log `⚠️ pre_pipeline.agent inválido ou não encontrado — pulando pré-execução` e pule
|
|
320
|
+
|
|
321
|
+
2. **Validar arquivo do pipeline:**
|
|
322
|
+
- Verifique se `.synapos/core/pipelines/pre-execution.yaml` existe
|
|
323
|
+
- Se não existe: log `⚠️ pre-execution.yaml não encontrado — pulando pré-execução` e pule
|
|
324
|
+
|
|
325
|
+
3. **Se `context.md` já existe na session:** pule — pré-execução já feita.
|
|
326
|
+
|
|
327
|
+
4. **Se `context.md` não existe E pré-execução válida:**
|
|
315
328
|
|
|
316
329
|
```
|
|
317
330
|
Esta feature ainda não tem contexto/arquitetura definidos.
|
|
@@ -324,7 +337,7 @@ Deseja executar a pré-execução antes de [{nome do pipeline principal}]?
|
|
|
324
337
|
|
|
325
338
|
**Se escolher Sim:**
|
|
326
339
|
1. Leia `.synapos/core/pipelines/pre-execution.yaml`
|
|
327
|
-
2.
|
|
340
|
+
2. Use `pre_pipeline.agent` como lead do pre-execution
|
|
328
341
|
3. Execute os steps do pre-execution (com todos os gates e checkpoints)
|
|
329
342
|
4. Os arquivos gerados (context.md, architecture.md, plan.md) vão para a session folder
|
|
330
343
|
5. Ao concluir, anuncie:
|
|
@@ -336,8 +349,6 @@ Deseja executar a pré-execução antes de [{nome do pipeline principal}]?
|
|
|
336
349
|
```
|
|
337
350
|
6. Continue para o pipeline principal com session files já no contexto
|
|
338
351
|
|
|
339
|
-
**Se `context.md` já existe na session:** pule — a pré-execução já foi feita.
|
|
340
|
-
|
|
341
352
|
### 1.5 — Verificação de Squads Paralelos
|
|
342
353
|
|
|
343
354
|
Ao iniciar a execução, leia `state.json` da feature.
|
|
@@ -530,16 +541,10 @@ Se `output_file` ou `output_files` definido:
|
|
|
530
541
|
|
|
531
542
|
Antes de sobrescrever qualquer `output_file` que já existe na session folder:
|
|
532
543
|
1. Verifique se o arquivo já existe
|
|
533
|
-
2. Se sim
|
|
534
|
-
-
|
|
535
|
-
- Log: `📦 Backup criado: {filename}.v{N}.bak`
|
|
544
|
+
2. Se sim: crie cópia de segurança `{filename}.bak` antes de sobrescrever
|
|
545
|
+
- Log: `📦 Backup criado: {filename}.bak`
|
|
536
546
|
3. Prossiga com a escrita do novo conteúdo
|
|
537
547
|
|
|
538
|
-
Isso protege `context.md`, `architecture.md`, `spec.md` e outros artefatos centrais de reescritas acidentais.
|
|
539
|
-
|
|
540
|
-
**Retenção de backups:** Mantenha no máximo **3 arquivos `.bak`** por output file. Ao criar um novo backup quando já existem 3 versões, delete o mais antigo antes de criar o novo.
|
|
541
|
-
Log: `🗑️ Backup antigo removido: {filename}.v{N-2}.bak → novo: {filename}.v{N+1}.bak`
|
|
542
|
-
|
|
543
548
|
### 2.7 — Loop de revisão (on_reject)
|
|
544
549
|
|
|
545
550
|
Se o usuário rejeitar um output:
|
|
@@ -602,23 +607,6 @@ Se houver resposta, acrescente em `docs/.squads/sessions/{feature-slug}/memories
|
|
|
602
607
|
{texto do usuário}
|
|
603
608
|
```
|
|
604
609
|
|
|
605
|
-
### Consolidação de memories.md
|
|
606
|
-
|
|
607
|
-
Após cada append, conte o número de seções de segundo nível (`##`) em `memories.md`.
|
|
608
|
-
|
|
609
|
-
Se ≥ 10 seções: apresente ao usuário:
|
|
610
|
-
```
|
|
611
|
-
📝 memories.md acumula {N} entradas.
|
|
612
|
-
Deseja consolidar para facilitar a leitura?
|
|
613
|
-
[1] Sim — resumir entradas antigas em bloco único preservando todas as informações
|
|
614
|
-
[2] Não — manter como está
|
|
615
|
-
```
|
|
616
|
-
|
|
617
|
-
Se o usuário escolher consolidar:
|
|
618
|
-
1. Crie seção `## Consolidado até {YYYY-MM-DD}` com resumo estruturado de todas as entradas
|
|
619
|
-
2. Marque as entradas antigas com comentário `<!-- consolidado em {data} -->`
|
|
620
|
-
3. Não delete nenhuma entrada — apenas reorganize
|
|
621
|
-
|
|
622
610
|
### Formato de autoria (aplicar a todos os novos appends)
|
|
623
611
|
|
|
624
612
|
Todo append em `memories.md` deve seguir o formato:
|
|
@@ -635,23 +623,6 @@ Para aprendizados inseridos diretamente pelo usuário (não por agent), usar:
|
|
|
635
623
|
{conteúdo}
|
|
636
624
|
```
|
|
637
625
|
|
|
638
|
-
### Consolidação de review-notes.md
|
|
639
|
-
|
|
640
|
-
Após cada append em `review-notes.md`, atualize o contador `[REVIEW_NOTES_COUNT]`.
|
|
641
|
-
|
|
642
|
-
Se ≥ 10 seções (`##`): apresente ao usuário:
|
|
643
|
-
```
|
|
644
|
-
📝 review-notes.md acumula {N} entradas de revisão.
|
|
645
|
-
Deseja consolidar para facilitar a leitura?
|
|
646
|
-
[1] Sim — agrupar revisões antigas em bloco único preservando todo o conteúdo
|
|
647
|
-
[2] Não — manter como está
|
|
648
|
-
```
|
|
649
|
-
|
|
650
|
-
Se o usuário escolher consolidar:
|
|
651
|
-
1. Crie seção `## Revisões Consolidadas até {YYYY-MM-DD}` com resumo estruturado de todas as entradas antigas
|
|
652
|
-
2. Marque entradas antigas com `<!-- consolidado em {data} -->`
|
|
653
|
-
3. Não delete nenhuma entrada — apenas reorganize
|
|
654
|
-
|
|
655
626
|
**Aprendizados transversais do projeto:**
|
|
656
627
|
```
|
|
657
628
|
Algo que todos os squads deste projeto devem saber? (ENTER para pular)
|
|
@@ -663,24 +634,6 @@ Se houver resposta, acrescente em `docs/_memory/project-learnings.md`:
|
|
|
663
634
|
{texto do usuário}
|
|
664
635
|
```
|
|
665
636
|
|
|
666
|
-
### 3.2b — Evolução de modo (verificar após execução)
|
|
667
|
-
|
|
668
|
-
Recalcule o score de documentação usando a mesma fórmula do Mode Decision System (PASSO 2 do orchestrator):
|
|
669
|
-
- `company.md` +30, `docs/tech/` +20, `docs/business/` +20, `docs/tech-context/` +15, ≥5 arquivos +15
|
|
670
|
-
|
|
671
|
-
Se o novo score ultrapassar o threshold do próximo modo, exiba:
|
|
672
|
-
|
|
673
|
-
```
|
|
674
|
-
📈 [MODE UPGRADE DISPONÍVEL]
|
|
675
|
-
Score atual: {novo_score}/100 (era {score_anterior}/100)
|
|
676
|
-
Modo atual: {BOOTSTRAP | STANDARD}
|
|
677
|
-
|
|
678
|
-
Com /setup:build-{tech|business} você chegaria em {próximo_modo}.
|
|
679
|
-
Execute /init novamente para ativar automaticamente.
|
|
680
|
-
```
|
|
681
|
-
|
|
682
|
-
Nunca faça upgrade automático sem novo `/init` — deixe o usuário decidir.
|
|
683
|
-
|
|
684
637
|
### 3.3 — Apresentar sumário
|
|
685
638
|
|
|
686
639
|
```
|
|
@@ -706,32 +659,33 @@ O que deseja fazer agora?
|
|
|
706
659
|
|
|
707
660
|
## INJEÇÃO DE CONTEXTO NOS AGENTS
|
|
708
661
|
|
|
709
|
-
|
|
662
|
+
O contexto injetado depende do `execution_mode` do squad.
|
|
663
|
+
|
|
664
|
+
### Modo Rápido (`quick`) — 5 itens
|
|
710
665
|
|
|
711
|
-
1. **
|
|
712
|
-
2. **Contexto do squad** (company.md +
|
|
713
|
-
3. **
|
|
714
|
-
4. **
|
|
715
|
-
|
|
716
|
-
- `docs/.squads/sessions/{feature-slug}/architecture.md`
|
|
717
|
-
- `docs/.squads/sessions/{feature-slug}/plan.md`
|
|
718
|
-
5. **ADRs do projeto** — injetados a partir do cache `[ADRS_CARREGADOS]` pré-lido na FASE 1. O agent **não precisa ler docs/** para buscá-los — recebe o conteúdo diretamente. Liste cada ADR como `[RESPEITADA]` ou `[NÃO APLICÁVEL]`. Conflito = output vetado.
|
|
719
|
-
6. **Memória da feature** (`docs/.squads/sessions/{feature-slug}/memories.md`)
|
|
720
|
-
7. **Aprendizados transversais** (`docs/_memory/project-learnings.md` — se existir)
|
|
721
|
-
8. **Outputs anteriores relevantes** (definidos em `depends_on`)
|
|
722
|
-
9. **Instruções do step** (arquivo do step)
|
|
723
|
-
10. **Base path do squad** (caminho absoluto para todas as operações de arquivo)
|
|
666
|
+
1. **Persona do agent** (conteúdo do `.agent.md`)
|
|
667
|
+
2. **Contexto do squad** (`company.md` + descrição do squad + roles[])
|
|
668
|
+
3. **Session files** (se existirem: `context.md` → `architecture.md` → `plan.md`)
|
|
669
|
+
4. **Outputs anteriores relevantes** (definidos em `depends_on`)
|
|
670
|
+
5. **Instrução do step** + base path do squad
|
|
724
671
|
|
|
725
|
-
A ordem de composição sempre é:
|
|
726
672
|
```
|
|
727
|
-
[Agent Persona] + [Contexto Squad] + [
|
|
673
|
+
[Agent Persona] + [Contexto Squad] + [Session Files] + [Outputs Anteriores] + [Instrução do Step] + [Skills Ativas]
|
|
728
674
|
```
|
|
729
675
|
|
|
730
|
-
|
|
676
|
+
### Modo Completo (`complete`) — 5 itens + extras
|
|
731
677
|
|
|
732
|
-
|
|
678
|
+
1. **Persona do agent** (conteúdo do `.agent.md`)
|
|
679
|
+
2. **Contexto do squad** (`company.md` + descrição + roles[]) + **docs/** do projeto
|
|
680
|
+
3. **Session files** (`context.md` → `architecture.md` → `plan.md`) + **memories.md** + **project-learnings.md** (se existir)
|
|
681
|
+
4. **ADRs** — injetados do cache `[ADRS_CARREGADOS]`. Agente lista cada ADR como `[RESPEITADA]` ou `[NÃO APLICÁVEL]`. Conflito com ADR aceita = output vetado.
|
|
682
|
+
5. **Outputs anteriores relevantes** + **Instrução do step** + base path
|
|
683
|
+
|
|
684
|
+
```
|
|
685
|
+
[Agent Persona] + [Contexto Squad + docs/] + [Session Files + Memória] + [ADRs] + [Outputs Anteriores] + [Instrução do Step] + [Skills Ativas]
|
|
686
|
+
```
|
|
733
687
|
|
|
734
|
-
> **
|
|
688
|
+
> **Skills:** quando ativas, o agent DEVE usá-las — não são opcionais.
|
|
735
689
|
|
|
736
690
|
### Caminhos de arquivo
|
|
737
691
|
|
|
@@ -768,17 +722,17 @@ Substitua `{feature-slug}` e `{squad-slug}` pelos valores reais antes de injetar
|
|
|
768
722
|
| **Veto máximo 2x** | Após 2 tentativas, escale para o usuário |
|
|
769
723
|
| **Review máximo 3x** | Após 3 rejeições, pergunte como proceder |
|
|
770
724
|
| **Sempre salve** | Nunca perca output gerado — salve antes de continuar |
|
|
771
|
-
| **State é
|
|
725
|
+
| **State é best-effort** | Atualize state.json a cada mudança de step — falhas não bloqueiam |
|
|
772
726
|
| **Falha loud** | Se agent ou arquivo não encontrado, pare e informe |
|
|
773
727
|
| **Nunca escreva em .synapos/** | Outputs vão SEMPRE para `docs/.squads/sessions/{feature-slug}/` |
|
|
774
728
|
| **Caminhos absolutos** | Todo agent usa caminhos a partir da raiz do projeto |
|
|
775
729
|
| **Skills são obrigatórias** | Se uma skill cobre a tarefa, o agent DEVE usá-la |
|
|
776
|
-
| **
|
|
777
|
-
| **ADRs
|
|
730
|
+
| **Decisões sinalizam com `[?]`** | Decisão fora do escopo → sinaliza `[?]` no output, aguarda usuário |
|
|
731
|
+
| **ADRs somente no modo Completo** | Modo Rápido não injeta ADRs. Modo Completo: conflito com ADR = veto |
|
|
778
732
|
| **Sessão recuperável** | `suspended_at` atualizado a cada step. Orquestrador detecta e retoma |
|
|
779
|
-
| **Session é compartilhada** | Múltiplos
|
|
780
|
-
| **review-notes é append-only** | Nunca substitua
|
|
781
|
-
| **memories é append-only** | Nunca substitua
|
|
782
|
-
| **Backups
|
|
783
|
-
| **ADRs são pré-carregados** | ADRs lidos uma vez na FASE 1
|
|
784
|
-
| **
|
|
733
|
+
| **Session é compartilhada** | Múltiplos roles trabalham na mesma session. Nunca apague arquivos sem aprovação |
|
|
734
|
+
| **review-notes é append-only** | Nunca substitua — sempre acrescente. Consolidação é manual via `/consolidate` |
|
|
735
|
+
| **memories é append-only** | Nunca substitua — sempre acrescente. Consolidação é manual via `/consolidate` |
|
|
736
|
+
| **Backups simples** | Cria `{filename}.bak` antes de sobrescrever — sem rotação automática |
|
|
737
|
+
| **ADRs são pré-carregados** | ADRs lidos uma vez na FASE 1 — subagents não re-leem docs/ |
|
|
738
|
+
| **Contexto por modo** | Modo Rápido: 5 itens. Modo Completo: 5 itens + docs/ + ADRs + memories |
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: synapos-skills-engine
|
|
3
|
-
version: 1.1.0
|
|
4
3
|
description: Engine de gerenciamento de skills — MCP, scripts e instruções de comportamento
|
|
5
4
|
---
|
|
6
5
|
|
|
@@ -93,7 +92,9 @@ skills:
|
|
|
93
92
|
```
|
|
94
93
|
|
|
95
94
|
### 2. Para cada skill listada:
|
|
96
|
-
- Verificar se `.synapos/skills/{skill}/SKILL.md` existe
|
|
95
|
+
- Verificar se `.synapos/skills/{skill}/SKILL.md` existe
|
|
96
|
+
- Se symlink: validar que o destino está DENTRO de `.synapos/skills/` ou `docs/_memory/`
|
|
97
|
+
- Se fora: tratar como broken, log `⚠️ Skill '{skill}' symlink inválido — pulando`
|
|
97
98
|
- Se não existe → apresentar opções:
|
|
98
99
|
```
|
|
99
100
|
⚠ Skill '{skill}' não está instalada.
|