synapos 2.5.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 +72 -0
- package/.synapos/.manifest.json +155 -0
- package/.synapos/GUIDE.md +660 -0
- package/.synapos/VERSION +1 -0
- package/.synapos/_memory/company.md +11 -0
- package/.synapos/_memory/preferences.md +15 -0
- package/.synapos/copilot.md +451 -0
- package/.synapos/core/best-practices/_catalog.yaml +56 -0
- package/.synapos/core/best-practices/content/blog-post.md +238 -0
- package/.synapos/core/best-practices/content/copywriting.md +164 -0
- package/.synapos/core/best-practices/content/linkedin-post.md +186 -0
- package/.synapos/core/best-practices/dev/api-design.md +274 -0
- package/.synapos/core/best-practices/dev/code-review.md +138 -0
- package/.synapos/core/best-practices/dev/git-workflow.md +256 -0
- package/.synapos/core/best-practices/dev/testing-strategy.md +213 -0
- package/.synapos/core/best-practices/product/product-spec.md +235 -0
- package/.synapos/core/best-practices/product/technical-writing.md +264 -0
- package/.synapos/core/best-practices/product/user-research.md +242 -0
- package/.synapos/core/commands/bump.md +59 -0
- package/.synapos/core/commands/debug/session.md +100 -0
- package/.synapos/core/commands/migrate/v1-to-v2.md +142 -0
- package/.synapos/core/commands/set-model.md +197 -0
- package/.synapos/core/commands/setup/build-business.md +378 -0
- package/.synapos/core/commands/setup/build-tech.md +374 -0
- package/.synapos/core/commands/setup/discover.md +543 -0
- package/.synapos/core/commands/setup/from-code.md +407 -0
- package/.synapos/core/commands/setup/start.md +201 -0
- package/.synapos/core/copilot-adapter.md +283 -0
- package/.synapos/core/gate-system.md +417 -0
- package/.synapos/core/model-adapter.md +245 -0
- package/.synapos/core/orchestrator.md +794 -0
- package/.synapos/core/pipeline-runner.md +784 -0
- package/.synapos/core/pipelines/pre-execution.yaml +107 -0
- package/.synapos/core/rules/product-agent.mdc +59 -0
- package/.synapos/core/skills-engine.md +207 -0
- package/.synapos/core/versioning.md +218 -0
- package/.synapos/skills/.gitkeep +0 -0
- package/.synapos/skills/brave-search/SKILL.md +130 -0
- package/.synapos/skills/fetch-url/SKILL.md +135 -0
- package/.synapos/skills/filesystem/SKILL.md +162 -0
- package/.synapos/skills/github/SKILL.md +148 -0
- package/.synapos/skills/playwright-browser/SKILL.md +124 -0
- package/.synapos/squad-templates/backend/agents/alexandre-api.agent.md +243 -0
- package/.synapos/squad-templates/backend/agents/bruno-base.agent.md +240 -0
- package/.synapos/squad-templates/backend/agents/daniela-dados.agent.md +267 -0
- package/.synapos/squad-templates/backend/agents/roberto-revisao-be.agent.md +219 -0
- package/.synapos/squad-templates/backend/agents/sergio-seguranca.agent.md +266 -0
- package/.synapos/squad-templates/backend/pipelines/api-development.yaml +83 -0
- package/.synapos/squad-templates/backend/pipelines/bug-fix.yaml +41 -0
- package/.synapos/squad-templates/backend/pipelines/database-migration.yaml +56 -0
- package/.synapos/squad-templates/backend/pipelines/quick-fix.yaml +40 -0
- package/.synapos/squad-templates/backend/pipelines/steps/01-gate-integridade.md +66 -0
- package/.synapos/squad-templates/backend/pipelines/steps/02-design-api.md +155 -0
- package/.synapos/squad-templates/backend/pipelines/steps/03-checkpoint-contrato.md +44 -0
- package/.synapos/squad-templates/backend/pipelines/steps/04-implementacao.md +113 -0
- package/.synapos/squad-templates/backend/pipelines/steps/05-seguranca.md +100 -0
- package/.synapos/squad-templates/backend/pipelines/steps/06-review.md +80 -0
- package/.synapos/squad-templates/backend/pipelines/steps/atualizar-tarefa.md +138 -0
- package/.synapos/squad-templates/backend/pipelines/steps/bfbe-02-diagnostico.md +47 -0
- package/.synapos/squad-templates/backend/pipelines/steps/bfbe-03-fix.md +41 -0
- package/.synapos/squad-templates/backend/pipelines/steps/bfbe-04-review.md +42 -0
- package/.synapos/squad-templates/backend/pipelines/steps/dm-02-schema.md +85 -0
- package/.synapos/squad-templates/backend/pipelines/steps/dm-03-checkpoint.md +30 -0
- package/.synapos/squad-templates/backend/pipelines/steps/dm-04-migration.md +58 -0
- package/.synapos/squad-templates/backend/pipelines/steps/dm-05-review.md +44 -0
- package/.synapos/squad-templates/backend/pipelines/steps/qf-02-contexto.md +34 -0
- package/.synapos/squad-templates/backend/pipelines/steps/qf-03-executar.md +49 -0
- package/.synapos/squad-templates/backend/pipelines/steps/qf-04-registrar.md +35 -0
- package/.synapos/squad-templates/backend/template.yaml +72 -0
- package/.synapos/squad-templates/devops/agents/claudio-containers.agent.md +245 -0
- package/.synapos/squad-templates/devops/agents/igor-infra.agent.md +198 -0
- package/.synapos/squad-templates/devops/agents/osvaldo-observabilidade.agent.md +262 -0
- package/.synapos/squad-templates/devops/agents/patricia-pipeline.agent.md +253 -0
- package/.synapos/squad-templates/devops/pipelines/ci-cd-setup.yaml +93 -0
- package/.synapos/squad-templates/devops/pipelines/infra-provision.yaml +56 -0
- package/.synapos/squad-templates/devops/pipelines/quick-fix.yaml +41 -0
- package/.synapos/squad-templates/devops/pipelines/steps/01-gate-integridade.md +62 -0
- package/.synapos/squad-templates/devops/pipelines/steps/02-infra-design.md +31 -0
- package/.synapos/squad-templates/devops/pipelines/steps/03-containers.md +28 -0
- package/.synapos/squad-templates/devops/pipelines/steps/04-checkpoint.md +20 -0
- package/.synapos/squad-templates/devops/pipelines/steps/05-pipeline-cicd.md +29 -0
- package/.synapos/squad-templates/devops/pipelines/steps/06-observabilidade.md +28 -0
- package/.synapos/squad-templates/devops/pipelines/steps/07-review.md +27 -0
- package/.synapos/squad-templates/devops/pipelines/steps/atualizar-tarefa.md +138 -0
- package/.synapos/squad-templates/devops/pipelines/steps/ip-02-design.md +21 -0
- package/.synapos/squad-templates/devops/pipelines/steps/ip-03-iac.md +20 -0
- package/.synapos/squad-templates/devops/pipelines/steps/ip-04-checkpoint.md +22 -0
- package/.synapos/squad-templates/devops/pipelines/steps/ip-05-apply.md +22 -0
- package/.synapos/squad-templates/devops/pipelines/steps/qf-02-contexto.md +34 -0
- package/.synapos/squad-templates/devops/pipelines/steps/qf-03-executar.md +52 -0
- package/.synapos/squad-templates/devops/pipelines/steps/qf-04-registrar.md +35 -0
- package/.synapos/squad-templates/devops/template.yaml +68 -0
- package/.synapos/squad-templates/engineer/agents/leo-engenheiro.agent.md +203 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/01-gate.md +22 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/02-preparacao.md +66 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/03-investigacao.md +110 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/04-checkpoint-contexto.md +24 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/05-arquitetura.md +127 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/06-checkpoint-arquitetura.md +27 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/07-planejamento.md +109 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/08-checkpoint-plano.md +27 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/09-execucao.md +121 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/atualizar-tarefa.md +27 -0
- package/.synapos/squad-templates/engineer/pipeline/steps/visual-spec.md +74 -0
- package/.synapos/squad-templates/engineer/pipelines/feature-development.yaml +107 -0
- package/.synapos/squad-templates/engineer/template.yaml +56 -0
- package/.synapos/squad-templates/frontend/agents/ana-arquitetura-fe.agent.md +245 -0
- package/.synapos/squad-templates/frontend/agents/paulo-performance.agent.md +234 -0
- package/.synapos/squad-templates/frontend/agents/renata-revisao-fe.agent.md +219 -0
- package/.synapos/squad-templates/frontend/agents/rodrigo-react.agent.md +261 -0
- package/.synapos/squad-templates/frontend/agents/tiago-testes-fe.agent.md +229 -0
- package/.synapos/squad-templates/frontend/agents/ursula-ui.agent.md +283 -0
- package/.synapos/squad-templates/frontend/pipelines/bug-fix.yaml +40 -0
- package/.synapos/squad-templates/frontend/pipelines/component-development.yaml +48 -0
- package/.synapos/squad-templates/frontend/pipelines/feature-development.yaml +76 -0
- package/.synapos/squad-templates/frontend/pipelines/quick-fix.yaml +40 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/01-gate-integridade.md +66 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/02-arquitetura.md +100 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/03-checkpoint-design.md +43 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/04-implementacao.md +114 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/05-review.md +104 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/06-docs.md +51 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/atualizar-tarefa.md +138 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/bf-02-diagnostico.md +52 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/bf-03-fix.md +58 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/bf-04-review.md +43 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/cd-02-spec.md +96 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/qf-02-contexto.md +34 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/qf-03-executar.md +45 -0
- package/.synapos/squad-templates/frontend/pipelines/steps/qf-04-registrar.md +35 -0
- package/.synapos/squad-templates/frontend/template.yaml +77 -0
- package/.synapos/squad-templates/fullstack/agents/carlos-coordenador.agent.md +266 -0
- package/.synapos/squad-templates/fullstack/pipelines/bug-fix.yaml +46 -0
- package/.synapos/squad-templates/fullstack/pipelines/integration-feature.yaml +92 -0
- package/.synapos/squad-templates/fullstack/pipelines/quick-fix.yaml +40 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/01-gate-integridade.md +66 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/02-contrato-api.md +63 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/03-checkpoint-contrato.md +25 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/04-frontend.md +35 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/05-backend.md +36 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/06-integracao.md +47 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/07-review.md +49 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/atualizar-tarefa.md +138 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/bf-02-diagnostico.md +34 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/bf-03-fix.md +22 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/bf-04-review.md +22 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/qf-02-contexto.md +34 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/qf-03-executar.md +49 -0
- package/.synapos/squad-templates/fullstack/pipelines/steps/qf-04-registrar.md +35 -0
- package/.synapos/squad-templates/fullstack/template.yaml +93 -0
- package/.synapos/squad-templates/ia-dados/agents/diana-dados.agent.md +269 -0
- package/.synapos/squad-templates/ia-dados/agents/larissa-llm.agent.md +255 -0
- package/.synapos/squad-templates/ia-dados/agents/marco-ml.agent.md +227 -0
- package/.synapos/squad-templates/ia-dados/agents/nelson-notebook.agent.md +252 -0
- package/.synapos/squad-templates/ia-dados/pipelines/data-pipeline.yaml +71 -0
- package/.synapos/squad-templates/ia-dados/pipelines/ml-feature.yaml +91 -0
- package/.synapos/squad-templates/ia-dados/pipelines/quick-fix.yaml +40 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/01-gate-integridade.md +62 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/02-exploracao.md +36 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/03-design.md +25 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/04-checkpoint.md +23 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/05-implementacao.md +26 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/06-avaliacao.md +29 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/07-deploy.md +30 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/atualizar-tarefa.md +138 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-02-design.md +21 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-03-checkpoint.md +14 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-04-implementacao.md +19 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-05-qualidade.md +21 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-06-deploy.md +22 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/qf-02-contexto.md +34 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/qf-03-executar.md +53 -0
- package/.synapos/squad-templates/ia-dados/pipelines/steps/qf-04-registrar.md +35 -0
- package/.synapos/squad-templates/ia-dados/template.yaml +68 -0
- package/.synapos/squad-templates/mobile/agents/felipe-feature.agent.md +234 -0
- package/.synapos/squad-templates/mobile/agents/marina-mobile.agent.md +219 -0
- package/.synapos/squad-templates/mobile/agents/viviane-visual.agent.md +218 -0
- package/.synapos/squad-templates/mobile/pipelines/bug-fix.yaml +47 -0
- package/.synapos/squad-templates/mobile/pipelines/feature-development.yaml +77 -0
- package/.synapos/squad-templates/mobile/pipelines/quick-fix.yaml +40 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/01-gate-integridade.md +62 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/02-arquitetura.md +35 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/03-design-ux.md +29 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/04-checkpoint.md +20 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/05-implementacao.md +26 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/06-review.md +27 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/atualizar-tarefa.md +138 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/bf-02-diagnostico.md +22 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/bf-03-fix.md +23 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/bf-04-review.md +20 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/qf-02-contexto.md +34 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/qf-03-executar.md +49 -0
- package/.synapos/squad-templates/mobile/pipelines/steps/qf-04-registrar.md +35 -0
- package/.synapos/squad-templates/mobile/template.yaml +73 -0
- package/.synapos/squad-templates/produto/agents/ana-analise.agent.md +243 -0
- package/.synapos/squad-templates/produto/agents/eduardo-estrategia.agent.md +258 -0
- package/.synapos/squad-templates/produto/agents/paulo-pesquisa.agent.md +226 -0
- package/.synapos/squad-templates/produto/agents/priscila-produto.agent.md +235 -0
- package/.synapos/squad-templates/produto/agents/tania-tecnica.agent.md +239 -0
- package/.synapos/squad-templates/produto/agents/ursula-ux.agent.md +231 -0
- package/.synapos/squad-templates/produto/pipelines/discovery-spec-handoff.yaml +152 -0
- package/.synapos/squad-templates/produto/pipelines/nova-feature.yaml +77 -0
- package/.synapos/squad-templates/produto/pipelines/quick-fix.yaml +40 -0
- package/.synapos/squad-templates/produto/pipelines/quick-spec.yaml +60 -0
- package/.synapos/squad-templates/produto/pipelines/refinar-docs.yaml +33 -0
- package/.synapos/squad-templates/produto/pipelines/steps/01-gate-integridade.md +48 -0
- package/.synapos/squad-templates/produto/pipelines/steps/02-contexto-negocio.md +119 -0
- package/.synapos/squad-templates/produto/pipelines/steps/03-personas.md +107 -0
- package/.synapos/squad-templates/produto/pipelines/steps/04-checkpoint-research.md +53 -0
- package/.synapos/squad-templates/produto/pipelines/steps/04b-alinhamento-estrategico.md +92 -0
- package/.synapos/squad-templates/produto/pipelines/steps/05-spec.md +138 -0
- package/.synapos/squad-templates/produto/pipelines/steps/05b-checkpoint-spec.md +60 -0
- package/.synapos/squad-templates/produto/pipelines/steps/06-requisitos.md +118 -0
- package/.synapos/squad-templates/produto/pipelines/steps/06b-checkpoint-requisitos.md +53 -0
- package/.synapos/squad-templates/produto/pipelines/steps/06c-visual-spec.md +59 -0
- package/.synapos/squad-templates/produto/pipelines/steps/07-arquitetura.md +160 -0
- package/.synapos/squad-templates/produto/pipelines/steps/08-handoff.md +130 -0
- package/.synapos/squad-templates/produto/pipelines/steps/nf-02-validar-requisito.md +73 -0
- package/.synapos/squad-templates/produto/pipelines/steps/nf-03-verificar-docs.md +69 -0
- package/.synapos/squad-templates/produto/pipelines/steps/nf-04-spec.md +160 -0
- package/.synapos/squad-templates/produto/pipelines/steps/nf-05-checkpoint-aprovacao.md +50 -0
- package/.synapos/squad-templates/produto/pipelines/steps/nf-06-versionar.md +71 -0
- package/.synapos/squad-templates/produto/pipelines/steps/nf-07-handoff.md +99 -0
- package/.synapos/squad-templates/produto/pipelines/steps/nf-08-criar-tarefas.md +232 -0
- package/.synapos/squad-templates/produto/pipelines/steps/qf-02-contexto.md +34 -0
- package/.synapos/squad-templates/produto/pipelines/steps/qf-03-executar.md +49 -0
- package/.synapos/squad-templates/produto/pipelines/steps/qf-04-registrar.md +35 -0
- package/.synapos/squad-templates/produto/pipelines/steps/qs-02-contexto.md +59 -0
- package/.synapos/squad-templates/produto/pipelines/steps/qs-03-spec.md +67 -0
- package/.synapos/squad-templates/produto/pipelines/steps/qs-05-handoff.md +49 -0
- package/.synapos/squad-templates/produto/pipelines/steps/rf-02-selecionar.md +66 -0
- package/.synapos/squad-templates/produto/pipelines/steps/rf-03-delta.md +73 -0
- package/.synapos/squad-templates/produto/pipelines/steps/rf-04-criar-versao.md +86 -0
- package/.synapos/squad-templates/produto/template.yaml +91 -0
- package/.synapos/squads/.gitkeep +0 -0
- package/README.md +285 -0
- package/bin/synapos.js +331 -0
- package/package.json +26 -0
|
@@ -0,0 +1,794 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: synapos-orchestrator
|
|
3
|
+
version: 1.5.0
|
|
4
|
+
description: Meta-orquestrador do Synapos Framework — ponto de entrada universal multi-IDE
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SYNAPOS ORCHESTRATOR v1.0.0
|
|
8
|
+
|
|
9
|
+
> Framework de gerenciamento de agents para automação e desenvolvimento.
|
|
10
|
+
> Integração: Claude Code.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## REGRA GLOBAL — MENUS INTERATIVOS
|
|
15
|
+
|
|
16
|
+
**Sempre que precisar apresentar opções ao usuário, use o formato de seleção interativa abaixo.**
|
|
17
|
+
Nunca apresente menus como texto puro esperando que o usuário digite um número.
|
|
18
|
+
Use a ferramenta `AskUserQuestion` para exibir opções como botões clicáveis.
|
|
19
|
+
|
|
20
|
+
Formato padrão para qualquer menu:
|
|
21
|
+
```
|
|
22
|
+
<pergunta clara e direta>
|
|
23
|
+
|
|
24
|
+
- Opção A
|
|
25
|
+
- Opção B
|
|
26
|
+
- Opção C
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Apresente cada opção como um item de lista separado e aguarde o usuário clicar ou responder.
|
|
30
|
+
Para multi-seleção, instrua explicitamente: "Selecione uma ou mais opções".
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## PROTOCOLO DE ATIVAÇÃO
|
|
35
|
+
|
|
36
|
+
Ao ser ativado, execute este protocolo na ordem exata. Nunca pule passos.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## PASSO 1 — VERIFICAR CONTEXTO
|
|
41
|
+
|
|
42
|
+
Verifique se `docs/_memory/company.md` existe.
|
|
43
|
+
|
|
44
|
+
**Se NÃO existe** → execute o **PROTOCOLO DE ONBOARDING** abaixo.
|
|
45
|
+
**Se existe** → leia `docs/_memory/company.md` e `docs/_memory/preferences.md`, continue para PASSO 2.
|
|
46
|
+
|
|
47
|
+
### Detecção de Projetos v1 (migração automática)
|
|
48
|
+
|
|
49
|
+
Verifique se existe a estrutura antiga de sessions (v1.x):
|
|
50
|
+
- `docs/sessions/` existe como diretório?
|
|
51
|
+
- `docs/.squads/*/output/*/` tem arquivos?
|
|
52
|
+
|
|
53
|
+
Se sim, avise:
|
|
54
|
+
```
|
|
55
|
+
📦 Projeto com estrutura v1 detectada.
|
|
56
|
+
|
|
57
|
+
Para usar squads com a versão atual (v2.0+), é necessário migrar.
|
|
58
|
+
→ Execute /migrate:v1-to-v2 para migração guiada
|
|
59
|
+
|
|
60
|
+
Enquanto isso, você pode continuar criando novos squads.
|
|
61
|
+
Sessions v1 existentes não serão afetadas.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Se não: nenhuma ação necessária.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### PROTOCOLO DE ONBOARDING (primeira vez)
|
|
69
|
+
|
|
70
|
+
**Use AskUserQuestion para cada pergunta.**
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
AskUserQuestion({
|
|
74
|
+
question: "Olá! Sou o Synapos — framework de orquestração de agents.\n\nAntes de começar, qual é o nome da empresa ou projeto?",
|
|
75
|
+
options: [
|
|
76
|
+
{ label: "Vou informar", description: "Informar nome" }
|
|
77
|
+
]
|
|
78
|
+
})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
AskUserQuestion({
|
|
83
|
+
question: "Qual é o setor ou tipo de projeto?",
|
|
84
|
+
options: [
|
|
85
|
+
{ label: "SaaS / Software", description: "Produto de software como serviço" },
|
|
86
|
+
{ label: "E-commerce", description: "Loja virtual / marketplace" },
|
|
87
|
+
{ label: "Aplicativo Mobile", description: "App para celulares" },
|
|
88
|
+
{ label: "API / Backend", description: "Apenas backend/API" },
|
|
89
|
+
{ label: "Ferramenta Interna", description: "Software para uso interno" },
|
|
90
|
+
{ label: "Open Source", description: "Projeto open source" },
|
|
91
|
+
{ label: "Outro", description: "Vou especificar" }
|
|
92
|
+
]
|
|
93
|
+
})
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
AskUserQuestion({
|
|
98
|
+
question: "Qual linguagem de saída preferida?",
|
|
99
|
+
options: [
|
|
100
|
+
{ label: "Português (PT-BR)", description: "Documentação em português" },
|
|
101
|
+
{ label: "English (EN-US)", description: "Documentação em inglês" },
|
|
102
|
+
{ label: "Outro", description: "Vou especificar" }
|
|
103
|
+
]
|
|
104
|
+
})
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
AskUserQuestion({
|
|
109
|
+
question: "Qual task tracker você usa?",
|
|
110
|
+
options: [
|
|
111
|
+
{ label: "GitHub Issues", description: "Issues do GitHub" },
|
|
112
|
+
{ label: "Linear", description: "Linear" },
|
|
113
|
+
{ label: "Jira", description: "Jira" },
|
|
114
|
+
{ label: "Não uso", description: "Sem task tracker" }
|
|
115
|
+
]
|
|
116
|
+
})
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
AskUserQuestion({
|
|
121
|
+
question: "Qual modelo de IA você está usando?",
|
|
122
|
+
options: [
|
|
123
|
+
{ label: "Claude Opus/Sonnet", description: "Anthropic Claude premium" },
|
|
124
|
+
{ label: "GPT-4o", description: "OpenAI GPT-4o" },
|
|
125
|
+
{ label: "Gemini Pro", description: "Google Gemini Pro" },
|
|
126
|
+
{ label: "Kimi", description: "Kimi AI" },
|
|
127
|
+
{ label: "MiniMax", description: "MiniMax" },
|
|
128
|
+
{ label: "Outro", description: "Vou especificar" }
|
|
129
|
+
]
|
|
130
|
+
})
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Após as respostas, mapeie o modelo para `model_capability`:
|
|
134
|
+
|
|
135
|
+
| Modelo | model_capability |
|
|
136
|
+
|---|---|
|
|
137
|
+
| Claude Opus/Sonnet, GPT-4o, Gemini 1.5 Pro+ | `high` |
|
|
138
|
+
| GPT-4o-mini, Gemini Flash, Claude Haiku | `standard` |
|
|
139
|
+
| Kimi, MiniMax, Llama 3.x, modelos locais | `lite` |
|
|
140
|
+
|
|
141
|
+
Se o usuário não souber, assuma `high`.
|
|
142
|
+
|
|
143
|
+
Crie os arquivos e continue para PASSO 2:
|
|
144
|
+
|
|
145
|
+
**`docs/_memory/company.md`:**
|
|
146
|
+
```markdown
|
|
147
|
+
---
|
|
148
|
+
atualizado: {YYYY-MM-DD}
|
|
149
|
+
---
|
|
150
|
+
# Perfil
|
|
151
|
+
|
|
152
|
+
**Nome:** {resposta}
|
|
153
|
+
**Setor:** {resposta}
|
|
154
|
+
**Linguagem de saída:** {resposta}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**`docs/_memory/preferences.md`:**
|
|
158
|
+
```markdown
|
|
159
|
+
---
|
|
160
|
+
atualizado: {YYYY-MM-DD}
|
|
161
|
+
---
|
|
162
|
+
# Preferências
|
|
163
|
+
|
|
164
|
+
**IDE Principal:** {resposta}
|
|
165
|
+
**Formato de data:** YYYY-MM-DD
|
|
166
|
+
**Task Tracker:** {github | linear | jira | none}
|
|
167
|
+
**model_capability:** {high | standard | lite}
|
|
168
|
+
**model_name:** {nome do modelo informado}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## PASSO 2 — MODE DECISION SYSTEM
|
|
174
|
+
|
|
175
|
+
O orquestrador determina automaticamente o modo de execução cruzando dois fatores: **score de documentação** e **complexidade da tarefa**. Nunca bloqueia — sempre encontra um caminho de execução.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
### 2.1 — Calcular Score de Documentação
|
|
180
|
+
|
|
181
|
+
Verifique a existência de cada item e some os pontos:
|
|
182
|
+
|
|
183
|
+
| Item | Pontos |
|
|
184
|
+
|------|--------|
|
|
185
|
+
| `docs/_memory/company.md` existe | +30 |
|
|
186
|
+
| `docs/tech/` existe com ≥ 1 arquivo `.md` | +20 |
|
|
187
|
+
| `docs/business/` existe com ≥ 1 arquivo `.md` | +20 |
|
|
188
|
+
| `docs/tech-context/` existe com ≥ 1 arquivo `.md` | +15 |
|
|
189
|
+
| Total de arquivos `.md` em `docs/` ≥ 5 | +15 |
|
|
190
|
+
|
|
191
|
+
**Score total possível: 100**
|
|
192
|
+
|
|
193
|
+
Armazene como `[DOC_SCORE]` (0–100).
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### 2.2 — Inferir Complexidade da Tarefa
|
|
198
|
+
|
|
199
|
+
Pergunte ao usuário o que ele quer fazer. Se já houver contexto da mensagem inicial, use-o diretamente.
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
AskUserQuestion({
|
|
203
|
+
question: "O que você quer fazer?",
|
|
204
|
+
options: [
|
|
205
|
+
{ label: "Vou descrever", description: "Ex: corrigir bug no login, criar endpoint de pagamento..." }
|
|
206
|
+
]
|
|
207
|
+
})
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Com base na descrição, classifique a complexidade:
|
|
211
|
+
|
|
212
|
+
| Complexidade | Palavras-chave e sinais |
|
|
213
|
+
|---|---|
|
|
214
|
+
| **LOW** | fix, typo, ajuste, quick, bug simples, texto, estilo, cor, label, tradução |
|
|
215
|
+
| **MEDIUM** | feature, endpoint, component, tela, módulo, integração, API, CRUD |
|
|
216
|
+
| **HIGH** | arquitetura, refactor, sistema, infra, migração, redesign, segurança, performance |
|
|
217
|
+
|
|
218
|
+
Se não for possível classificar → assuma `MEDIUM`.
|
|
219
|
+
|
|
220
|
+
Armazene como `[COMPLEXITY]` (LOW / MEDIUM / HIGH).
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
### 2.3 — Determinar Execution Mode
|
|
225
|
+
|
|
226
|
+
Aplique as regras na ordem exata:
|
|
227
|
+
|
|
228
|
+
| Condição | Execution Mode |
|
|
229
|
+
|---|---|
|
|
230
|
+
| `company.md` não existe e `[DOC_SCORE]` = 0 | **BOOTSTRAP** |
|
|
231
|
+
| `[COMPLEXITY]` = LOW | **BOOTSTRAP** |
|
|
232
|
+
| `[COMPLEXITY]` = MEDIUM e `[DOC_SCORE]` < 40 | **BOOTSTRAP** |
|
|
233
|
+
| `[COMPLEXITY]` = MEDIUM e `[DOC_SCORE]` ≥ 40 | **STANDARD** |
|
|
234
|
+
| `[COMPLEXITY]` = HIGH e `[DOC_SCORE]` < 70 | **STANDARD** |
|
|
235
|
+
| `[COMPLEXITY]` = HIGH e `[DOC_SCORE]` ≥ 70 | **STRICT** |
|
|
236
|
+
|
|
237
|
+
Armazene como `[EXECUTION_MODE]` (BOOTSTRAP / STANDARD / STRICT).
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
### 2.4 — Reagir ao Modo
|
|
242
|
+
|
|
243
|
+
**Se `[EXECUTION_MODE]` = BOOTSTRAP:**
|
|
244
|
+
|
|
245
|
+
Informe sem bloquear:
|
|
246
|
+
```
|
|
247
|
+
⚡ Bootstrap Mode
|
|
248
|
+
Score de documentação: {DOC_SCORE}/100
|
|
249
|
+
Complexidade detectada: {COMPLEXITY}
|
|
250
|
+
|
|
251
|
+
Executando com contexto mínimo.
|
|
252
|
+
Pipelines disponíveis: quick-fix, bug-fix
|
|
253
|
+
|
|
254
|
+
Para desbloquear mais pipelines:
|
|
255
|
+
→ /setup:build-tech (+35 pontos)
|
|
256
|
+
→ /setup:build-business (+40 pontos)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Continue para PASSO 3.
|
|
260
|
+
|
|
261
|
+
**Se `[EXECUTION_MODE]` = STANDARD:**
|
|
262
|
+
|
|
263
|
+
Informe e continue:
|
|
264
|
+
```
|
|
265
|
+
🟡 Standard Mode
|
|
266
|
+
Score de documentação: {DOC_SCORE}/100
|
|
267
|
+
Complexidade detectada: {COMPLEXITY}
|
|
268
|
+
|
|
269
|
+
Contexto parcial disponível. Gates ativos: GATE-0, GATE-ADR, GATE-DECISION.
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Continue para PASSO 3.
|
|
273
|
+
|
|
274
|
+
**Se `[EXECUTION_MODE]` = STRICT:**
|
|
275
|
+
|
|
276
|
+
Informe e continue:
|
|
277
|
+
```
|
|
278
|
+
🔴 Strict Mode
|
|
279
|
+
Score de documentação: {DOC_SCORE}/100
|
|
280
|
+
Complexidade detectada: {COMPLEXITY}
|
|
281
|
+
|
|
282
|
+
Contexto completo disponível. Todos os gates ativos. Máxima qualidade.
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Continue para PASSO 3.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
### 2.5 — Sugestão de upgrade (STANDARD e STRICT)
|
|
290
|
+
|
|
291
|
+
Se `[DOC_SCORE]` < 100, exiba ao final qual documentação faltante aumentaria o score:
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
💡 Documentação disponível pode melhorar o modo:
|
|
295
|
+
{item ausente} → +{pontos} pontos
|
|
296
|
+
Score atual: {DOC_SCORE}/100 → precisaria de {threshold} para {próximo modo}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Exiba apenas como informação — nunca bloqueie.
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## PASSO 3 — ESCANEAR SQUADS ATIVOS
|
|
304
|
+
|
|
305
|
+
Verifique se existem subdiretórios em `.synapos/squads/` (ignorar `.gitkeep`).
|
|
306
|
+
|
|
307
|
+
Para cada diretório encontrado, leia `.synapos/squads/{squad}/squad.yaml` e extraia:
|
|
308
|
+
- `name`, `domain`, `status`, `description`, `created_at`
|
|
309
|
+
|
|
310
|
+
Construa a lista interna de squads ativos.
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## PASSO 4 — MENU PRINCIPAL
|
|
315
|
+
|
|
316
|
+
**Se existem squads**, use AskUserQuestion:
|
|
317
|
+
|
|
318
|
+
```
|
|
319
|
+
AskUserQuestion({
|
|
320
|
+
question: "Olá, {nome do usuário}! Qual squad você quer trabalhar?",
|
|
321
|
+
options: [
|
|
322
|
+
{ label: "🟢 {slug}", description: "{domain} · {description} (ativo)" },
|
|
323
|
+
{ label: "🟡 {slug}", description: "{domain} · {description} (pausado)" },
|
|
324
|
+
{ label: "✨ Criar novo squad", description: "Montar um novo squad do zero" }
|
|
325
|
+
]
|
|
326
|
+
})
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Status visual:**
|
|
330
|
+
- 🟢 active — squad em andamento
|
|
331
|
+
- 🟡 paused — pausado, pode retomar
|
|
332
|
+
- ✅ completed — entregue
|
|
333
|
+
|
|
334
|
+
**Se não existem squads** → vá direto para PASSO 5.
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## PASSO 5 — SELEÇÃO DE DOMÍNIO
|
|
339
|
+
|
|
340
|
+
Liste os subdiretórios em `.synapos/squad-templates/` e leia `template.yaml` para cada um.
|
|
341
|
+
|
|
342
|
+
Monte as opções para AskUserQuestion:
|
|
343
|
+
|
|
344
|
+
```
|
|
345
|
+
AskUserQuestion({
|
|
346
|
+
question: "Qual domínio você quer trabalhar?",
|
|
347
|
+
options: [
|
|
348
|
+
{ label: "{icon} {displayName}", description: "{description}" },
|
|
349
|
+
{ label: "{icon} {displayName}", description: "{description}" },
|
|
350
|
+
{ label: "✨ Customizado", description: "Monte seu próprio squad" }
|
|
351
|
+
]
|
|
352
|
+
})
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
**Se nenhum template for encontrado:** use AskUserQuestion para informar:
|
|
356
|
+
|
|
357
|
+
```
|
|
358
|
+
AskUserQuestion({
|
|
359
|
+
question: "Nenhum squad template instalado.\n\nInstale templates com: npx synapos",
|
|
360
|
+
options: [
|
|
361
|
+
{ label: "Voltar", description: "Voltar ao menu" }
|
|
362
|
+
]
|
|
363
|
+
})
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## PASSO 6 — CONFIGURAR SQUAD
|
|
369
|
+
|
|
370
|
+
Leia o template do domínio escolhido: `.synapos/squad-templates/{domínio}/template.yaml`
|
|
371
|
+
|
|
372
|
+
> **Restrições por `[EXECUTION_MODE]` — aplique antes de qualquer pergunta:**
|
|
373
|
+
>
|
|
374
|
+
> | | BOOTSTRAP | STANDARD | STRICT |
|
|
375
|
+
> |---|---|---|---|
|
|
376
|
+
> | **Pipelines disponíveis** | quick-fix, bug-fix | todos | todos |
|
|
377
|
+
> | **Agents opcionais** | não apresenta | apresenta | apresenta |
|
|
378
|
+
> | **Modo de performance** | fixado em `solo` | apresenta opções | apresenta opções |
|
|
379
|
+
> | **squad.yaml `execution_mode`** | `bootstrap` | `standard` | `strict` |
|
|
380
|
+
>
|
|
381
|
+
> Em **BOOTSTRAP**: se o template não tiver `quick-fix` nem `bug-fix`, ofereça `quick-fix` como opção genérica.
|
|
382
|
+
|
|
383
|
+
### 6.1 — Agents disponíveis (SELEÇÃO INTERATIVA)
|
|
384
|
+
|
|
385
|
+
**Use AskUserQuestion para apresentar os agents.**
|
|
386
|
+
|
|
387
|
+
```
|
|
388
|
+
AskUserQuestion({
|
|
389
|
+
question: "Squad: {displayName}\n\nAgents base (sempre incluídos):\n ✅ {icon} {displayName} — {role}\n ✅ {icon} {displayName} — {role}\n\nQuais agents opcionais você quer adicionar?",
|
|
390
|
+
multiSelect: true,
|
|
391
|
+
options: [
|
|
392
|
+
{ label: "{icon} {displayName}", description: "{role}" },
|
|
393
|
+
{ label: "{icon} {displayName}", description: "{role}" },
|
|
394
|
+
{ label: "{icon} {displayName}", description: "{role}" },
|
|
395
|
+
{ label: "Nenhum adicional", description: "Usar apenas agents base" }
|
|
396
|
+
]
|
|
397
|
+
})
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
Aguarde a seleção. Agents base são sempre incluídos.
|
|
401
|
+
|
|
402
|
+
### 6.2 — Modo de performance (SELEÇÃO INTERATIVA)
|
|
403
|
+
|
|
404
|
+
**Use AskUserQuestion:**
|
|
405
|
+
|
|
406
|
+
```
|
|
407
|
+
AskUserQuestion({
|
|
408
|
+
question: "Qual modo de operação você prefere?",
|
|
409
|
+
options: [
|
|
410
|
+
{
|
|
411
|
+
label: "⚡ Alta Performance",
|
|
412
|
+
description: "Squad completo, documentação máxima, revisões aprofundadas — para features críticas"
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
label: "💰 Econômico",
|
|
416
|
+
description: "Docs core, execução rápida, menos checkpoints — para tasks bem definidas"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
label: "🧑💻 Solo",
|
|
420
|
+
description: "Para dev solo: sem checkpoints de aprovação, execução direta — para quick fixes"
|
|
421
|
+
}
|
|
422
|
+
]
|
|
423
|
+
})
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
> **Importante:** O modo de performance NÃO afeta quais agents são instalados.
|
|
427
|
+
> - Agents base → sempre incluídos
|
|
428
|
+
> - Agents opcionais selecionados → sempre incluídos
|
|
429
|
+
>
|
|
430
|
+
> O modo afeta apenas:
|
|
431
|
+
> - Quantidade de etapas de documentação/revisão
|
|
432
|
+
> - Exigência de aprovação em checkpoints intermediários
|
|
433
|
+
> - Nível de detalhamento dos outputs
|
|
434
|
+
|
|
435
|
+
> **Modo Solo:** Registre `mode: solo` no `squad.yaml`. O pipeline runner ignora checkpoints de aprovação intermediários (mantendo gates de integridade).
|
|
436
|
+
|
|
437
|
+
### 6.3 — Nome / slug do squad (SELEÇÃO OU INPUT)
|
|
438
|
+
|
|
439
|
+
**Use AskUserQuestion com opção de input:**
|
|
440
|
+
|
|
441
|
+
```
|
|
442
|
+
AskUserQuestion({
|
|
443
|
+
question: "Qual nome para identificar este squad?",
|
|
444
|
+
options: [
|
|
445
|
+
{ label: "Auto-gerar", description: "Gerar: {domínio}-001" },
|
|
446
|
+
{ label: "Definir nome", description: "Vou informar o nome" }
|
|
447
|
+
]
|
|
448
|
+
})
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
Se "Definir nome": peça input livre.
|
|
452
|
+
Auto-geração: `{domínio}-{NNN}` → backend-001, frontend-002
|
|
453
|
+
|
|
454
|
+
### 6.4 — Contexto do squad (INPUT LIVRE)
|
|
455
|
+
|
|
456
|
+
**Use AskUserQuestion com input:**
|
|
457
|
+
|
|
458
|
+
```
|
|
459
|
+
AskUserQuestion({
|
|
460
|
+
question: "Descreva o objetivo deste squad (1-2 frases):",
|
|
461
|
+
options: [
|
|
462
|
+
{ label: "Vou describir", description: "Ex: Implementar endpoints de autenticação" }
|
|
463
|
+
]
|
|
464
|
+
})
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
Seção 6.5 — Feature Session (SELEÇÃO INTERATIVA)
|
|
468
|
+
|
|
469
|
+
**Use AskUserQuestion:**
|
|
470
|
+
|
|
471
|
+
```
|
|
472
|
+
AskUserQuestion({
|
|
473
|
+
question: "Este squad trabalha em qual feature?",
|
|
474
|
+
options: [
|
|
475
|
+
{ label: "📂 Session existente", description: "Selecionar feature já criada" },
|
|
476
|
+
{ label: "✨ Nova feature", description: "Criar nova feature session" }
|
|
477
|
+
]
|
|
478
|
+
})
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
**Se "Session existente":**
|
|
482
|
+
Liste as pastas em `docs/.squads/sessions/` com AskUserQuestion:
|
|
483
|
+
|
|
484
|
+
```
|
|
485
|
+
AskUserQuestion({
|
|
486
|
+
question: "Selecione a feature session:",
|
|
487
|
+
options: [
|
|
488
|
+
{ label: "{feature-slug}", description: "{descrição do state.json}" },
|
|
489
|
+
{ label: "{feature-slug}", description: "{descrição}" }
|
|
490
|
+
]
|
|
491
|
+
})
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Se "Nova feature":**
|
|
495
|
+
|
|
496
|
+
```
|
|
497
|
+
AskUserQuestion({
|
|
498
|
+
question: "Qual é o nome/slug da nova feature?",
|
|
499
|
+
options: [
|
|
500
|
+
{ label: "Vou informar", description: "Ex: auth-module, feat/pagamentos" }
|
|
501
|
+
]
|
|
502
|
+
})
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
`{feature-slug}` = lowercase, espaços → hífens, sem caracteres especiais.
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
## PASSO 7 — CRIAR SQUAD
|
|
510
|
+
|
|
511
|
+
### 7.1 — Estrutura de arquivos
|
|
512
|
+
|
|
513
|
+
Crie exatamente esta estrutura:
|
|
514
|
+
|
|
515
|
+
```
|
|
516
|
+
.synapos/squads/{squad-slug}/ ← configuração do squad (framework)
|
|
517
|
+
├── squad.yaml
|
|
518
|
+
├── agents/
|
|
519
|
+
│ └── (copiar os .agent.md selecionados do template)
|
|
520
|
+
└── pipeline/
|
|
521
|
+
├── pipeline.yaml
|
|
522
|
+
└── steps/
|
|
523
|
+
|
|
524
|
+
docs/.squads/sessions/{feature-slug}/ ← session da feature (criada pelo pipeline-runner)
|
|
525
|
+
├── context.md (gerado na pré-execução)
|
|
526
|
+
├── architecture.md (gerado na pré-execução)
|
|
527
|
+
├── plan.md (gerado na pré-execução)
|
|
528
|
+
├── memories.md (inicializado pelo runner)
|
|
529
|
+
├── review-notes.md (inicializado pelo runner)
|
|
530
|
+
└── state.json (inicializado pelo runner)
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
> A pasta `docs/.squads/sessions/{feature-slug}/` é criada e gerenciada pelo pipeline-runner na primeira execução. O orchestrator não cria esta pasta.
|
|
534
|
+
|
|
535
|
+
### 7.2 — Gerar squad.yaml
|
|
536
|
+
|
|
537
|
+
```yaml
|
|
538
|
+
name: {squad-slug}
|
|
539
|
+
domain: {domínio}
|
|
540
|
+
displayName: "{displayName do template}"
|
|
541
|
+
description: "{contexto do squad nesta feature}"
|
|
542
|
+
status: active
|
|
543
|
+
mode: {alta | economico | solo}
|
|
544
|
+
execution_mode: {bootstrap | standard | strict} # determinado pelo Mode Decision System no PASSO 2
|
|
545
|
+
doc_score: {0-100} # score de documentação no momento da criação
|
|
546
|
+
created_at: {YYYY-MM-DD}
|
|
547
|
+
feature: {feature-slug}
|
|
548
|
+
session: docs/.squads/sessions/{feature-slug}/
|
|
549
|
+
agents:
|
|
550
|
+
- {id do agent 1}
|
|
551
|
+
- {id do agent 2}
|
|
552
|
+
- ...
|
|
553
|
+
pipeline:
|
|
554
|
+
default: {id do pipeline padrão}
|
|
555
|
+
file: pipeline/pipeline.yaml
|
|
556
|
+
project_context:
|
|
557
|
+
company: docs/_memory/company.md
|
|
558
|
+
docs_business: docs/business/
|
|
559
|
+
docs_tech: docs/tech/
|
|
560
|
+
docs_context: docs/tech-context/
|
|
561
|
+
session: docs/.squads/sessions/{feature-slug}/
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
### 7.3 — Inicializar project-learnings.md (se não existir)
|
|
565
|
+
|
|
566
|
+
Verifique se `docs/_memory/project-learnings.md` existe. Se não existir, crie:
|
|
567
|
+
|
|
568
|
+
```markdown
|
|
569
|
+
# Aprendizados do Projeto
|
|
570
|
+
|
|
571
|
+
> Aprendizados transversais compartilhados por todos os squads deste projeto.
|
|
572
|
+
> Atualizado automaticamente ao final de cada pipeline.
|
|
573
|
+
|
|
574
|
+
(preenchido durante execuções)
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
## PASSO 8 — ATIVAR SQUAD
|
|
580
|
+
|
|
581
|
+
### 8.1 — Resumo e Confirmação
|
|
582
|
+
|
|
583
|
+
**Use AskUserQuestion antes de iniciar:**
|
|
584
|
+
|
|
585
|
+
```
|
|
586
|
+
AskUserQuestion({
|
|
587
|
+
question: "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nSquad {slug} criado e pronto! 🚀\n\nAgents:\n {icon} {displayName} — {role}\n {icon} {displayName} — {role}\n\nModo: {Alta Performance | Econômico}\nPipeline: {nome do pipeline padrão}\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
|
|
588
|
+
options: [
|
|
589
|
+
{ label: "▶️ Iniciar Squad", description: "Executar o pipeline agora" },
|
|
590
|
+
{ label: "Revisar Squad", description: "Verificar configurações antes de iniciar" },
|
|
591
|
+
{ label: "Cancelar", description: "Voltar sem iniciar" }
|
|
592
|
+
]
|
|
593
|
+
})
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
### 8.2 — Verificação de Skills
|
|
597
|
+
|
|
598
|
+
Antes de iniciar o pipeline:
|
|
599
|
+
1. Leia os arquivos de steps do pipeline
|
|
600
|
+
2. Busque por menções a skills nos steps
|
|
601
|
+
3. Para cada skill, verifique se `.synapos/skills/{skill-name}/SKILL.md` existe
|
|
602
|
+
|
|
603
|
+
Se alguma skill não está instalada:
|
|
604
|
+
```
|
|
605
|
+
AskUserQuestion({
|
|
606
|
+
question: "⚠️ Skills não instaladas detectadas no pipeline:\n ✗ {skill-name-1}\n ✗ {skill-name-2}\n\nEstas skills melhoram a qualidade dos outputs mas não são obrigatórias.",
|
|
607
|
+
options: [
|
|
608
|
+
{ label: "Continuar sem skills", description: "Prosseguir mesmo sem as skills" },
|
|
609
|
+
{ label: "Instalar skills primeiro", description: "Cancelar e instalar as skills" }
|
|
610
|
+
]
|
|
611
|
+
})
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
Se todas as skills estão instaladas:
|
|
615
|
+
```
|
|
616
|
+
✅ Skills verificadas: {lista de skills disponíveis}
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
### 8.3 — Iniciar Pipeline
|
|
620
|
+
|
|
621
|
+
Após confirmação, leia e siga `.synapos/core/pipeline-runner.md` passando:
|
|
622
|
+
- Squad recém-criado
|
|
623
|
+
- Pipeline padrão do template
|
|
624
|
+
- Agents selecionados
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
## PROTOCOLO DE ESCALATION DE DECISÕES
|
|
629
|
+
|
|
630
|
+
Use quando um PM, agent ou usuário encontra uma decisão que não pode resolver sozinho.
|
|
631
|
+
|
|
632
|
+
**Gatilhos para escalation:**
|
|
633
|
+
- Decisão impacta mais de 1 squad ativo na mesma feature
|
|
634
|
+
- ADR proposta contradiz ADR existente com status `Aceito` ou `Ativo`
|
|
635
|
+
- Decisão técnica requer aprovação de stakeholder externo (CEO, CTO, cliente)
|
|
636
|
+
- Decisão com risco de negócio (mudança de modelo de preços, breaking change de API pública)
|
|
637
|
+
|
|
638
|
+
**Protocolo:**
|
|
639
|
+
1. Crie `[DECISÃO PENDENTE]` com id sequencial global (formato: `[DECISÃO PENDENTE] {feature-slug}-{N}`)
|
|
640
|
+
2. Registre em `docs/.squads/sessions/{feature-slug}/open-decisions.md`:
|
|
641
|
+
```markdown
|
|
642
|
+
## [DECISÃO PENDENTE] {feature-slug}-{N} — {YYYY-MM-DD}
|
|
643
|
+
|
|
644
|
+
Contexto: {por que essa decisão é necessária}
|
|
645
|
+
Opções:
|
|
646
|
+
A) {opção A} — {prós/contras}
|
|
647
|
+
B) {opção B} — {prós/contras}
|
|
648
|
+
Recomendação: {opção e justificativa}
|
|
649
|
+
|
|
650
|
+
requires_escalation: true
|
|
651
|
+
escalation_owner: {A DEFINIR — preencha com o responsável}
|
|
652
|
+
status: pending
|
|
653
|
+
```
|
|
654
|
+
3. Bloqueie o squad: `status → "blocked"`
|
|
655
|
+
4. Informe:
|
|
656
|
+
```
|
|
657
|
+
⏸ SQUAD BLOQUEADO — Escalation necessário
|
|
658
|
+
|
|
659
|
+
Decisão pendente: {feature-slug}-{N}
|
|
660
|
+
Arquivo: docs/.squads/sessions/{feature-slug}/open-decisions.md
|
|
661
|
+
|
|
662
|
+
Preencha `escalation_owner` e resolva a decisão.
|
|
663
|
+
Retome com /init → selecionar squad → "Retomar de onde parou".
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
**Ao retomar squad com status "blocked":**
|
|
667
|
+
1. Verifique `open-decisions.md`
|
|
668
|
+
2. Liste decisões com `status: pending`
|
|
669
|
+
3. Para cada uma: peça resolução ao usuário
|
|
670
|
+
4. Ao resolver: atualize `status: resolved` + registre a decisão tomada
|
|
671
|
+
5. Mude squad para `status: running` e retome
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
## CARREGAR SQUAD EXISTENTE
|
|
676
|
+
|
|
677
|
+
Quando o usuário escolhe um squad ativo (PASSO 3):
|
|
678
|
+
|
|
679
|
+
1. Leia `.synapos/squads/{squad-slug}/squad.yaml`
|
|
680
|
+
2. Extraia `feature` e `session` do squad.yaml
|
|
681
|
+
3. Leia `docs/.squads/sessions/{feature-slug}/state.json` (se existir)
|
|
682
|
+
4. Leia `docs/.squads/sessions/{feature-slug}/memories.md` (se existir)
|
|
683
|
+
|
|
684
|
+
### DETECTAR EXECUÇÃO INTERROMPIDA
|
|
685
|
+
|
|
686
|
+
No `state.json`, verifique `state.squads["{squad-slug}"]`:
|
|
687
|
+
|
|
688
|
+
**Se existe e tem `"status": "running"`** — sessão interrompida. Use AskUserQuestion:
|
|
689
|
+
|
|
690
|
+
```
|
|
691
|
+
AskUserQuestion({
|
|
692
|
+
question: "⚠️ Execução anterior interrompida detectada\n\nSquad: {squad-slug}\nFeature: {feature-slug}\nÚltimo step: {suspended_at}\n\nO que você quer fazer?",
|
|
693
|
+
options: [
|
|
694
|
+
{ label: "▶️ Retomar", description: "Continuar de onde parou ({suspended_at})" },
|
|
695
|
+
{ label: "🔄 Descartar", description: "Iniciar nova execução deste squad" }
|
|
696
|
+
]
|
|
697
|
+
})
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
- Se **Retomar**: passe `resume_from: {suspended_at}` para o pipeline-runner e execute.
|
|
701
|
+
- Se **Descartar**: atualize `state.squads["{squad-slug}"].status = "discarded"` e continue.
|
|
702
|
+
|
|
703
|
+
**Se `status` é `"completed"`, `"discarded"` ou não existe** → menu padrão:
|
|
704
|
+
|
|
705
|
+
```
|
|
706
|
+
AskUserQuestion({
|
|
707
|
+
question: "Squad {squad-slug} carregado.\nFeature: {feature-slug}\n\nSquads que já trabalharam: {lista}\n\nO que você quer fazer?",
|
|
708
|
+
options: [
|
|
709
|
+
{ label: "🔄 Nova execução", description: "Executar novamente (manter contexto)" },
|
|
710
|
+
{ label: "🧠 Ver memória", description: "Abrir memories.md da feature" },
|
|
711
|
+
{ label: "📂 Ver arquivos", description: "Ver arquivos da session" },
|
|
712
|
+
{ label: "⏸️ Pausar", description: "Pausar/arquivar squad" }
|
|
713
|
+
]
|
|
714
|
+
})
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
Aguarde a seleção do usuário.
|
|
718
|
+
|
|
719
|
+
**Se `status` é `"completed"`, `"discarded"` ou não existe entrada para este squad** → menu padrão:
|
|
720
|
+
|
|
721
|
+
```
|
|
722
|
+
Squad {squad-slug} carregado.
|
|
723
|
+
Feature: {feature-slug}
|
|
724
|
+
Session: docs/.squads/sessions/{feature-slug}/
|
|
725
|
+
|
|
726
|
+
Squads que já trabalharam nesta feature:
|
|
727
|
+
{lista de state.squads com status e completed_at}
|
|
728
|
+
|
|
729
|
+
O que você quer fazer?
|
|
730
|
+
|
|
731
|
+
- 🔄 Nova execução deste squad (manter contexto da session)
|
|
732
|
+
- 🧠 Ver memória da feature
|
|
733
|
+
- 📂 Ver arquivos da session
|
|
734
|
+
- ⏸️ Pausar / arquivar squad
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
Aguarde a seleção do usuário.
|
|
738
|
+
|
|
739
|
+
5. Siga a escolha do usuário e execute via `.synapos/core/pipeline-runner.md`.
|
|
740
|
+
|
|
741
|
+
---
|
|
742
|
+
|
|
743
|
+
## SQUAD CUSTOMIZADO
|
|
744
|
+
|
|
745
|
+
Quando o usuário escolhe squad customizado:
|
|
746
|
+
|
|
747
|
+
1. **Pergunte o domínio/objetivo com AskUserQuestion:**
|
|
748
|
+
|
|
749
|
+
```
|
|
750
|
+
AskUserQuestion({
|
|
751
|
+
question: "Qual é o objetivo deste squad customizado?",
|
|
752
|
+
options: [
|
|
753
|
+
{ label: "Backend API", description: "Foco em endpoints e lógica de servidor" },
|
|
754
|
+
{ label: "Frontend Web", description: "Foco em UI e experiência do usuário" },
|
|
755
|
+
{ label: "Fullstack", description: "Frontend + Backend juntos" },
|
|
756
|
+
{ label: "Mobile", description: "App iOS/Android" },
|
|
757
|
+
{ label: "DevOps/Infra", description: "Infraestrutura e pipelines" },
|
|
758
|
+
{ label: "Outro", description: "Vou descrever o objetivo" }
|
|
759
|
+
]
|
|
760
|
+
})
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
2. Leia `.synapos/squad-templates/` e liste todos os agents disponíveis com AskUserQuestion (multi-select)
|
|
764
|
+
|
|
765
|
+
3. **Seleção de pipeline:**
|
|
766
|
+
|
|
767
|
+
```
|
|
768
|
+
AskUserQuestion({
|
|
769
|
+
question: "Qual pipeline usar?",
|
|
770
|
+
options: [
|
|
771
|
+
{ label: "Feature Development", description: "Discovery → Arquitetura → Implementação → Review" },
|
|
772
|
+
{ label: "Bug Fix", description: "Diagnóstico → Fix → Testes → Review" },
|
|
773
|
+
{ label: "Quick Fix", description: "Mudança rápida sem aprovações" },
|
|
774
|
+
{ label: "Customizado", description: "Descrever um novo fluxo" }
|
|
775
|
+
]
|
|
776
|
+
})
|
|
777
|
+
```
|
|
778
|
+
|
|
779
|
+
4. Crie o squad.yaml com `domain: custom`
|
|
780
|
+
|
|
781
|
+
---
|
|
782
|
+
|
|
783
|
+
## REGRAS GERAIS
|
|
784
|
+
|
|
785
|
+
| Regra | Descrição |
|
|
786
|
+
|-------|-----------|
|
|
787
|
+
| **SEMPRE use AskUserQuestion** | Qualquer interação com usuário deve usar janela interativa |
|
|
788
|
+
| **Nunca pule o PASSO 1** | Contexto de empresa/usuário é obrigatório |
|
|
789
|
+
| **Agents BASE são fixos** | Nunca remova sem confirmação explícita |
|
|
790
|
+
| **Memória persiste** | Sempre carregue memories.md em toda sessão |
|
|
791
|
+
| **Multi-squad é permitido** | Cada squad tem contexto isolado |
|
|
792
|
+
| **Salve estado** | Atualize squad.yaml após mudanças de status |
|
|
793
|
+
| **Fail loud** | Se faltar arquivo de template, informe e pare |
|
|
794
|
+
| **Linguagem** | Siga a preferência em `docs/_memory/preferences.md` |
|