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,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 02-design-api
|
|
3
|
+
name: "Design do Contrato da API"
|
|
4
|
+
agent: bruno-base
|
|
5
|
+
execution: subagent
|
|
6
|
+
model_tier: powerful
|
|
7
|
+
output_files:
|
|
8
|
+
- api-contract.md
|
|
9
|
+
veto_conditions:
|
|
10
|
+
- "Endpoint sem todos os status codes documentados"
|
|
11
|
+
- "Request/Response sem schema tipado"
|
|
12
|
+
- "Decisão arquitetural sem ADR"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Design do Contrato da API
|
|
16
|
+
|
|
17
|
+
Você é **Bruno Base**. Leia seu `.agent.md` para aplicar sua persona e princípios completos.
|
|
18
|
+
|
|
19
|
+
## Contexto disponível
|
|
20
|
+
|
|
21
|
+
- Task desta sessão: `_memory/memories.md`
|
|
22
|
+
- Objetivo do squad: `squad.yaml → description`
|
|
23
|
+
- Memória do squad: `_memory/memories.md` — padrões e ADRs anteriores
|
|
24
|
+
- **Regras críticas do projeto:** `docs/tech-context/briefing/critical-rules.md` ← leia antes de qualquer decisão
|
|
25
|
+
- **ADRs existentes:** `docs/tech-context/briefing/adrs-summary.md` ← verifique conflitos com decisões anteriores
|
|
26
|
+
|
|
27
|
+
## Sua missão
|
|
28
|
+
|
|
29
|
+
Definir o contrato completo da API antes de qualquer implementação.
|
|
30
|
+
O contrato é a lei — o dev implementa exatamente o que está aqui.
|
|
31
|
+
|
|
32
|
+
## Documento a gerar
|
|
33
|
+
|
|
34
|
+
### `docs/api-contract.md`
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
# Contrato da API: {nome da feature/recurso}
|
|
38
|
+
|
|
39
|
+
**Data:** {YYYY-MM-DD}
|
|
40
|
+
**Agent:** Bruno Base
|
|
41
|
+
|
|
42
|
+
## Entendimento da Task
|
|
43
|
+
{o que precisa ser construído em 2-3 frases — regra de negócio incluída}
|
|
44
|
+
|
|
45
|
+
## Endpoints
|
|
46
|
+
|
|
47
|
+
### {MÉTODO} {/v1/recurso/:id}
|
|
48
|
+
|
|
49
|
+
**Descrição:** {o que faz}
|
|
50
|
+
**Autenticação:** {requerida | pública} — {tipo: JWT Bearer | API Key}
|
|
51
|
+
**Rate Limit:** {X req/min por IP | por usuário} *(se aplicável)*
|
|
52
|
+
|
|
53
|
+
**Request:**
|
|
54
|
+
```typescript
|
|
55
|
+
// Headers
|
|
56
|
+
Authorization: Bearer {token} // se autenticado
|
|
57
|
+
Content-Type: application/json
|
|
58
|
+
|
|
59
|
+
// Path params
|
|
60
|
+
id: string // UUID
|
|
61
|
+
|
|
62
|
+
// Query params (se GET)
|
|
63
|
+
page?: number // default: 1
|
|
64
|
+
limit?: number // default: 20, max: 100
|
|
65
|
+
|
|
66
|
+
// Body (se POST/PUT/PATCH)
|
|
67
|
+
{
|
|
68
|
+
campo: tipo // descrição
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Responses:**
|
|
73
|
+
```typescript
|
|
74
|
+
// 200 OK / 201 Created
|
|
75
|
+
{
|
|
76
|
+
data: {
|
|
77
|
+
id: string
|
|
78
|
+
// demais campos
|
|
79
|
+
},
|
|
80
|
+
meta?: { page: number, total: number } // para listagens
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// 400 Bad Request — input inválido
|
|
84
|
+
{ error: { code: "VALIDATION_ERROR", fields: { campo: "mensagem" } } }
|
|
85
|
+
|
|
86
|
+
// 401 Unauthorized — sem token ou token inválido
|
|
87
|
+
{ error: { code: "UNAUTHORIZED" } }
|
|
88
|
+
|
|
89
|
+
// 403 Forbidden — token válido mas sem permissão
|
|
90
|
+
{ error: { code: "FORBIDDEN" } }
|
|
91
|
+
|
|
92
|
+
// 404 Not Found — recurso não existe OU não pertence ao usuário
|
|
93
|
+
{ error: { code: "NOT_FOUND" } }
|
|
94
|
+
|
|
95
|
+
// 409 Conflict — duplicata ou estado inválido
|
|
96
|
+
{ error: { code: "{CÓDIGO_ESPECÍFICO}" } }
|
|
97
|
+
|
|
98
|
+
// 422 Unprocessable — regra de negócio violada
|
|
99
|
+
{ error: { code: "{CÓDIGO_ESPECÍFICO}", message: "..." } }
|
|
100
|
+
|
|
101
|
+
// 500 Internal Server Error — erro inesperado
|
|
102
|
+
{ error: { code: "INTERNAL_ERROR" } }
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Exemplos:**
|
|
106
|
+
```bash
|
|
107
|
+
# Request
|
|
108
|
+
curl -X POST /v1/users \
|
|
109
|
+
-H "Authorization: Bearer {token}" \
|
|
110
|
+
-d '{"name": "João", "email": "joao@ex.com"}'
|
|
111
|
+
|
|
112
|
+
# Response 201
|
|
113
|
+
{"data": {"id": "uuid", "name": "João", "email": "joao@ex.com", "createdAt": "2025-01-01T00:00:00Z"}}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Estrutura de Camadas
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
src/
|
|
122
|
+
├── domain/{recurso}/
|
|
123
|
+
│ ├── {Entidade}.ts → entidade de domínio
|
|
124
|
+
│ ├── {Entidade}Repository.ts → interface do repositório
|
|
125
|
+
│ └── {recurso}.errors.ts → erros de domínio tipados
|
|
126
|
+
├── application/{feature}/
|
|
127
|
+
│ └── {CasoDeUso}.ts → orquestração
|
|
128
|
+
├── infrastructure/
|
|
129
|
+
│ └── database/
|
|
130
|
+
│ └── {Entidade}PgRepository.ts → implementação PostgreSQL
|
|
131
|
+
└── presentation/{recurso}/
|
|
132
|
+
├── {Recurso}Controller.ts → validação de input + delegação
|
|
133
|
+
├── {Recurso}Schema.ts → schema Zod de validação
|
|
134
|
+
└── {Recurso}Serializer.ts → formatação do response
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## ADR (se houver decisão relevante)
|
|
138
|
+
|
|
139
|
+
### ADR-{N}: {título}
|
|
140
|
+
**Contexto:** {por que essa decisão}
|
|
141
|
+
**Decisão:** {o que foi escolhido}
|
|
142
|
+
**Alternativas rejeitadas:** {opção} — {motivo}
|
|
143
|
+
**Consequências:** ✅ {positivo} / ⚠ {trade-off}
|
|
144
|
+
|
|
145
|
+
## Pontos de Atenção para Implementação
|
|
146
|
+
{alertas, edge cases, integrações, consistência com outros endpoints}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Critérios de qualidade
|
|
150
|
+
|
|
151
|
+
- [ ] Todos os endpoints com todos os status codes de erro documentados
|
|
152
|
+
- [ ] Request e Response tipados
|
|
153
|
+
- [ ] Estrutura de camadas definida
|
|
154
|
+
- [ ] Erros de domínio com código semântico (não só HTTP status)
|
|
155
|
+
- [ ] ADR para qualquer decisão arquitetural não óbvia
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 03-checkpoint-contrato
|
|
3
|
+
name: "Aprovação do Contrato"
|
|
4
|
+
execution: checkpoint
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Checkpoint — Aprovação do Contrato da API
|
|
8
|
+
|
|
9
|
+
Antes de implementar, o usuário valida o contrato definido por Bruno Base.
|
|
10
|
+
|
|
11
|
+
## Apresentar resumo
|
|
12
|
+
|
|
13
|
+
Leia `docs/api-contract.md` e apresente:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
17
|
+
CONTRATO DA API: {nome da feature}
|
|
18
|
+
|
|
19
|
+
Endpoints:
|
|
20
|
+
{MÉTODO} {rota} — {descrição em 1 linha}
|
|
21
|
+
{MÉTODO} {rota} — {descrição em 1 linha}
|
|
22
|
+
|
|
23
|
+
Estrutura de camadas:
|
|
24
|
+
{resumo em 2-3 linhas}
|
|
25
|
+
|
|
26
|
+
{Se houver ADR}: Decisão-chave: {título}
|
|
27
|
+
|
|
28
|
+
Status codes mapeados: {lista dos erros tratados}
|
|
29
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Pergunta ao usuário
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
O contrato está alinhado?
|
|
36
|
+
|
|
37
|
+
[1] Sim — implementar
|
|
38
|
+
[2] Ajustar — {o que mudar no contrato?}
|
|
39
|
+
[3] Simplificar — remover endpoint ou campo não necessário agora
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Se [2] ou [3]:** Atualize `docs/api-contract.md` e registre em `_memory/memories.md`.
|
|
43
|
+
|
|
44
|
+
**Se [1]:** Prossiga para implementação.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 04-implementacao
|
|
3
|
+
name: "Implementação Backend"
|
|
4
|
+
agent: alexandre-api
|
|
5
|
+
execution: subagent
|
|
6
|
+
model_tier: powerful
|
|
7
|
+
veto_conditions:
|
|
8
|
+
- "Input externo sem validação de schema (Zod/Joi)"
|
|
9
|
+
- "Erro capturado silenciosamente (catch vazio ou só console.log)"
|
|
10
|
+
- "Query SQL com concatenação de string"
|
|
11
|
+
- "Operação atômica sem transação de banco"
|
|
12
|
+
- "Log sem correlationId"
|
|
13
|
+
on_reject: 04-implementacao
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Implementação Backend
|
|
17
|
+
|
|
18
|
+
Você é **Alexandre API**. Leia seu `.agent.md` para aplicar sua persona e princípios completos.
|
|
19
|
+
|
|
20
|
+
## Contexto disponível
|
|
21
|
+
|
|
22
|
+
- Contrato da API: `docs/api-contract.md` ← **leia antes de qualquer código**
|
|
23
|
+
- Memória do squad: `_memory/memories.md`
|
|
24
|
+
- **Regras críticas do projeto:** `docs/tech-context/briefing/critical-rules.md` ← aplique todas as regras durante a implementação
|
|
25
|
+
|
|
26
|
+
## Sua missão
|
|
27
|
+
|
|
28
|
+
Implementar exatamente o contrato definido, respeitando a estrutura de camadas.
|
|
29
|
+
|
|
30
|
+
## Regras de implementação (veto se violadas)
|
|
31
|
+
|
|
32
|
+
### 1. Validação de input obrigatória
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
// Sempre com Zod — no controller, antes de qualquer lógica
|
|
36
|
+
const schema = z.object({
|
|
37
|
+
email: z.string().email(),
|
|
38
|
+
name: z.string().min(2).max(100),
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
const result = schema.safeParse(req.body)
|
|
42
|
+
if (!result.success) {
|
|
43
|
+
return res.status(422).json({
|
|
44
|
+
error: { code: 'VALIDATION_ERROR', fields: result.error.flatten().fieldErrors }
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2. Tratamento explícito de erros
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
// ❌ nunca
|
|
53
|
+
try { ... } catch (e) {} // silencioso
|
|
54
|
+
try { ... } catch (e) { console.log(e) } // não é tratamento
|
|
55
|
+
|
|
56
|
+
// ✅ sempre — erros de domínio tipados
|
|
57
|
+
try {
|
|
58
|
+
const result = await useCase.execute(input)
|
|
59
|
+
return res.status(201).json({ data: Serializer.toJSON(result) })
|
|
60
|
+
} catch (error) {
|
|
61
|
+
if (error instanceof EmailAlreadyExistsError) {
|
|
62
|
+
return res.status(409).json({ error: { code: 'EMAIL_ALREADY_EXISTS' } })
|
|
63
|
+
}
|
|
64
|
+
logger.error('Unexpected error', { error, correlationId: req.id })
|
|
65
|
+
return res.status(500).json({ error: { code: 'INTERNAL_ERROR' } })
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 3. Sem SQL por concatenação
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
// ❌ nunca
|
|
73
|
+
db.query(`SELECT * FROM users WHERE email = '${email}'`)
|
|
74
|
+
|
|
75
|
+
// ✅ sempre
|
|
76
|
+
db.query('SELECT * FROM users WHERE email = $1', [email])
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 4. Transações para operações atômicas
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
await db.transaction(async (trx) => {
|
|
83
|
+
await userRepo.save(user, trx)
|
|
84
|
+
await walletRepo.create({ userId: user.id }, trx)
|
|
85
|
+
// se qualquer operação falhar, ambas são revertidas
|
|
86
|
+
})
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 5. Log estruturado com correlationId
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
logger.info('User created', {
|
|
93
|
+
correlationId: req.id, // sempre
|
|
94
|
+
userId: user.id,
|
|
95
|
+
action: 'user.create',
|
|
96
|
+
durationMs: Date.now() - startTime,
|
|
97
|
+
})
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Estrutura de entrega
|
|
101
|
+
|
|
102
|
+
Para cada arquivo implementado:
|
|
103
|
+
- **Caminho:** `src/{camada}/{recurso}/{Arquivo}.ts`
|
|
104
|
+
- **O que faz:** {1 linha}
|
|
105
|
+
|
|
106
|
+
Ao final, confirme:
|
|
107
|
+
- [ ] Validação de input com Zod/schema
|
|
108
|
+
- [ ] Todos os erros tratados explicitamente
|
|
109
|
+
- [ ] Sem SQL por concatenação
|
|
110
|
+
- [ ] Transações onde necessário
|
|
111
|
+
- [ ] Logs com correlationId
|
|
112
|
+
- [ ] Autorização verificada (não só autenticação)
|
|
113
|
+
- [ ] Implementação segue a estrutura de camadas do contrato
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 05-seguranca
|
|
3
|
+
name: "Auditoria de Segurança"
|
|
4
|
+
agent: sergio-seguranca
|
|
5
|
+
execution: subagent
|
|
6
|
+
model_tier: powerful
|
|
7
|
+
output_files:
|
|
8
|
+
- security-review.md
|
|
9
|
+
veto_conditions:
|
|
10
|
+
- "IDOR identificado sem correção proposta"
|
|
11
|
+
- "Secret em código ou log"
|
|
12
|
+
- "SQL injection possível"
|
|
13
|
+
- "Endpoint sensível sem rate limiting"
|
|
14
|
+
on_reject: 04-implementacao
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Auditoria de Segurança
|
|
18
|
+
|
|
19
|
+
Você é **Sérgio Segurança**. Leia seu `.agent.md` para aplicar sua persona e princípios completos.
|
|
20
|
+
|
|
21
|
+
## Contexto disponível
|
|
22
|
+
|
|
23
|
+
- Contrato da API: `docs/api-contract.md`
|
|
24
|
+
- Implementação do step anterior (código entregue por Alexandre API)
|
|
25
|
+
- Memória do squad: `_memory/memories.md`
|
|
26
|
+
|
|
27
|
+
## Execute a auditoria OWASP
|
|
28
|
+
|
|
29
|
+
### A01 — Broken Access Control
|
|
30
|
+
- [ ] Endpoints verificam que o recurso pertence ao usuário autenticado (IDOR)?
|
|
31
|
+
- [ ] Endpoints admin exigem role adequado?
|
|
32
|
+
- [ ] Não retorna 403 quando recurso existe mas não pertence ao usuário (use 404)?
|
|
33
|
+
|
|
34
|
+
### A02 — Cryptographic Failures
|
|
35
|
+
- [ ] Nenhum dado sensível em log (senha, token, PII)?
|
|
36
|
+
- [ ] Senhas hasheadas com bcrypt/argon2?
|
|
37
|
+
- [ ] Tokens JWT com algoritmo seguro (não `none`)?
|
|
38
|
+
|
|
39
|
+
### A03 — Injection
|
|
40
|
+
- [ ] Zero concatenação de string em queries SQL?
|
|
41
|
+
- [ ] Input sanitizado antes de uso em comandos externos?
|
|
42
|
+
|
|
43
|
+
### A04 — Insecure Design
|
|
44
|
+
- [ ] Rate limiting em endpoints de auth (login, reset de senha)?
|
|
45
|
+
- [ ] Endpoints de criação de conta protegidos contra flood?
|
|
46
|
+
|
|
47
|
+
### A05 — Security Misconfiguration
|
|
48
|
+
- [ ] CORS configurado de forma restritiva (não `*`)?
|
|
49
|
+
- [ ] Headers de segurança presentes (via helmet)?
|
|
50
|
+
- [ ] Stack trace nunca exposto no response?
|
|
51
|
+
|
|
52
|
+
### A07 — Authentication Failures
|
|
53
|
+
- [ ] Tokens expiram?
|
|
54
|
+
- [ ] Logout invalida o token?
|
|
55
|
+
|
|
56
|
+
## Documento a gerar
|
|
57
|
+
|
|
58
|
+
### `docs/security-review.md`
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
# Security Review
|
|
62
|
+
|
|
63
|
+
**Data:** {YYYY-MM-DD}
|
|
64
|
+
**Auditor:** Sérgio Segurança
|
|
65
|
+
|
|
66
|
+
## Resumo
|
|
67
|
+
- Críticos: {N}
|
|
68
|
+
- Altos: {N}
|
|
69
|
+
- Médios: {N}
|
|
70
|
+
- Baixos: {N}
|
|
71
|
+
- Aprovado: {Sim | Não — requer correção}
|
|
72
|
+
|
|
73
|
+
## Findings
|
|
74
|
+
|
|
75
|
+
### [CRÍTICO] {título} *(se encontrado)*
|
|
76
|
+
**Localização:** {arquivo}:{linha aproximada}
|
|
77
|
+
**Descrição:** {o que é o problema e como pode ser explorado}
|
|
78
|
+
**Fix obrigatório:**
|
|
79
|
+
```
|
|
80
|
+
{código ou abordagem de correção}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### [ALTO] {título} *(se encontrado)*
|
|
84
|
+
...
|
|
85
|
+
|
|
86
|
+
### [MÉDIO] {título} *(se encontrado)*
|
|
87
|
+
...
|
|
88
|
+
|
|
89
|
+
## Itens Aprovados
|
|
90
|
+
{checklist de itens que passaram na auditoria}
|
|
91
|
+
|
|
92
|
+
## Decisão
|
|
93
|
+
{Aprovado | Requer correção dos itens Críticos/Altos antes de prosseguir}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Regra de decisão
|
|
97
|
+
|
|
98
|
+
- **Critical/High encontrado** → retorna para implementação com fix detalhado
|
|
99
|
+
- **Apenas Medium/Low** → aprovado, mas medium deve ir para `_memory/memories.md` como débito técnico
|
|
100
|
+
- **Clean** → aprovado, prosseguir para review
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: 06-review
|
|
3
|
+
name: "Code Review Backend"
|
|
4
|
+
agent: roberto-revisao-be
|
|
5
|
+
execution: inline
|
|
6
|
+
model_tier: powerful
|
|
7
|
+
gate: GATE-5
|
|
8
|
+
output_files:
|
|
9
|
+
- review-notes.md
|
|
10
|
+
veto_conditions:
|
|
11
|
+
- "Review sem categorização BLOCKER/SUGGESTION/QUESTION/PRAISE"
|
|
12
|
+
- "BLOCKER sem fix sugerido"
|
|
13
|
+
on_reject: 04-implementacao
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Code Review Backend
|
|
17
|
+
|
|
18
|
+
Você é **Roberto Revisão**. Leia seu `.agent.md` para aplicar sua persona e princípios completos.
|
|
19
|
+
|
|
20
|
+
## Contexto disponível
|
|
21
|
+
|
|
22
|
+
- Contrato da API: `docs/api-contract.md`
|
|
23
|
+
- Implementação (código do step 04)
|
|
24
|
+
- Security review: `docs/security-review.md`
|
|
25
|
+
|
|
26
|
+
## Execute o review em 4 camadas
|
|
27
|
+
|
|
28
|
+
### Camada 1 — Corretude
|
|
29
|
+
- [ ] A implementação segue o contrato definido?
|
|
30
|
+
- [ ] Todos os status codes documentados implementados?
|
|
31
|
+
- [ ] Race conditions possíveis em operações concorrentes?
|
|
32
|
+
- [ ] Transações onde necessário?
|
|
33
|
+
|
|
34
|
+
### Camada 2 — Segurança (baseline)
|
|
35
|
+
- [ ] Input validado com schema?
|
|
36
|
+
- [ ] Autorização verificada (não apenas autenticação)?
|
|
37
|
+
- [ ] Nenhum secret em código ou log?
|
|
38
|
+
- [ ] Erros internos não expostos no response?
|
|
39
|
+
|
|
40
|
+
### Camada 3 — Arquitetura
|
|
41
|
+
- [ ] Lógica de negócio no domain/application (não no controller)?
|
|
42
|
+
- [ ] Controller apenas valida input e delega?
|
|
43
|
+
- [ ] Dependências externas abstraídas via interface?
|
|
44
|
+
|
|
45
|
+
### Camada 4 — Qualidade
|
|
46
|
+
- [ ] Nomes descritivos?
|
|
47
|
+
- [ ] Erros tipados (não só string messages)?
|
|
48
|
+
- [ ] Testes cobrem o caminho feliz e os principais erros?
|
|
49
|
+
- [ ] Sem `console.log` ou código morto?
|
|
50
|
+
|
|
51
|
+
## Formato de comentário (obrigatório)
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
[BLOCKER] {descrição do problema e impacto}
|
|
55
|
+
Fix: {código ou abordagem}
|
|
56
|
+
|
|
57
|
+
[SUGGESTION] {melhoria sem bloquear}
|
|
58
|
+
|
|
59
|
+
[QUESTION] {dúvida específica}
|
|
60
|
+
|
|
61
|
+
[PRAISE] {o que está bem feito}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Gerar `docs/review-notes.md`
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
# Review Notes — {feature}
|
|
68
|
+
|
|
69
|
+
**Data:** {YYYY-MM-DD}
|
|
70
|
+
**Reviewer:** Roberto Revisão
|
|
71
|
+
|
|
72
|
+
## Resumo
|
|
73
|
+
BLOCKERs: {N} | SUGGESTIONs: {N} | QUESTIONs: {N} | PRASEs: {N}
|
|
74
|
+
|
|
75
|
+
## Comentários
|
|
76
|
+
{todos os comentários categorizados}
|
|
77
|
+
|
|
78
|
+
## Decisão
|
|
79
|
+
{Aprovado | Requer correção: {lista de BLOCKERs}}
|
|
80
|
+
```
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: atualizar-tarefa
|
|
3
|
+
name: "Atualizar Tarefa"
|
|
4
|
+
execution: checkpoint
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Atualizar Tarefa
|
|
8
|
+
|
|
9
|
+
A implementação foi concluída. Registre o progresso onde as tarefas estão sendo gerenciadas.
|
|
10
|
+
|
|
11
|
+
## Identificar tarefa e plataforma
|
|
12
|
+
|
|
13
|
+
Leia `_memory/memories.md` da sessão atual:
|
|
14
|
+
- `Task:` — descrição do que foi feito
|
|
15
|
+
- `Issue:` — referência da tarefa (número, plataforma, local ou —)
|
|
16
|
+
|
|
17
|
+
Apresente ao usuário:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
21
|
+
SESSÃO CONCLUÍDA
|
|
22
|
+
|
|
23
|
+
Task: {Task da sessão}
|
|
24
|
+
Issue: {Issue registrada}
|
|
25
|
+
|
|
26
|
+
A tarefa foi concluída?
|
|
27
|
+
|
|
28
|
+
✅ Sim — marcar como concluída
|
|
29
|
+
🔄 Parcial — registrar progresso e manter aberta
|
|
30
|
+
⏭️ Pular — não atualizar agora
|
|
31
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Aguarde a seleção. Se **Pular**, encerre aqui.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Executar por plataforma
|
|
39
|
+
|
|
40
|
+
### 📁 Local — `docs/specs/*-tasks.md`
|
|
41
|
+
|
|
42
|
+
Abra o arquivo de tarefas identificado no `Issue:` do memories.md.
|
|
43
|
+
|
|
44
|
+
Localize o item correspondente e marque como concluído:
|
|
45
|
+
- `- [ ]` → `- [x]`
|
|
46
|
+
|
|
47
|
+
Se parcial, adicione nota abaixo do item:
|
|
48
|
+
```markdown
|
|
49
|
+
- [~] RF-{N}: {título}
|
|
50
|
+
> Parcial — {YYYY-MM-DD}: {o que foi feito}. Pendente: {o que falta}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
### 🐙 GitHub Issues
|
|
56
|
+
|
|
57
|
+
**Se concluída:**
|
|
58
|
+
```bash
|
|
59
|
+
# Fechar a issue
|
|
60
|
+
gh issue close {número} --comment "Implementado. Referência: {branch ou PR}"
|
|
61
|
+
|
|
62
|
+
# Ou adicionar label 'done' e fechar
|
|
63
|
+
gh issue edit {número} --add-label "done"
|
|
64
|
+
gh issue close {número}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Se parcial:**
|
|
68
|
+
```bash
|
|
69
|
+
gh issue comment {número} --body "Progresso — {YYYY-MM-DD}: {o que foi implementado}. Pendente: {o que falta}"
|
|
70
|
+
gh issue edit {número} --add-label "in-progress"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 📐 Linear
|
|
76
|
+
|
|
77
|
+
**Se concluída:**
|
|
78
|
+
- Se Linear MCP disponível: atualize o status para `Done` / `Completed`
|
|
79
|
+
- Caso contrário, exiba instrução:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
Linear — Atualizar manualmente:
|
|
83
|
+
Issue: {ID registrado no memories.md}
|
|
84
|
+
Novo status: Done
|
|
85
|
+
Comentário: Implementado em {YYYY-MM-DD}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Se parcial:**
|
|
89
|
+
```
|
|
90
|
+
Linear — Atualizar manualmente:
|
|
91
|
+
Issue: {ID}
|
|
92
|
+
Novo status: In Progress
|
|
93
|
+
Comentário: {progresso + pendências}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### 🔲 Jira
|
|
99
|
+
|
|
100
|
+
Exiba instrução:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Jira — Atualizar manualmente:
|
|
104
|
+
Issue: {ID registrado no memories.md}
|
|
105
|
+
Transição: {Done | In Progress}
|
|
106
|
+
Comentário: {resumo do que foi feito}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Registrar no memories.md
|
|
112
|
+
|
|
113
|
+
Adicione entrada:
|
|
114
|
+
|
|
115
|
+
```markdown
|
|
116
|
+
## Tarefa concluída — {YYYY-MM-DD}
|
|
117
|
+
Task: {descrição}
|
|
118
|
+
Issue: {referência}
|
|
119
|
+
Status: {concluída | parcial}
|
|
120
|
+
{SE PARCIAL:}
|
|
121
|
+
Pendente: {o que falta}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Confirmação
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
✅ Progresso registrado!
|
|
130
|
+
|
|
131
|
+
Task: {descrição}
|
|
132
|
+
Status: {concluída | parcial}
|
|
133
|
+
Plataforma: {local | GitHub #{N} | Linear | Jira | —}
|
|
134
|
+
|
|
135
|
+
{SE CONCLUÍDA E TODAS AS TAREFAS DONE:}
|
|
136
|
+
🎉 Todas as tarefas da feature estão concluídas.
|
|
137
|
+
Próximo passo: verificar handoff em docs/specs/{feature-slug}-handoff.md
|
|
138
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: bfbe-02-diagnostico
|
|
3
|
+
name: "Diagnóstico Backend"
|
|
4
|
+
agent: bruno-base
|
|
5
|
+
execution: inline
|
|
6
|
+
model_tier: powerful
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Diagnóstico de Bug Backend
|
|
10
|
+
|
|
11
|
+
Você é **Bruno Base**. Pense em camadas e contratos.
|
|
12
|
+
|
|
13
|
+
## Perguntar ao usuário
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
1. O que deveria acontecer?
|
|
17
|
+
2. O que está acontecendo? (erro, resposta errada, lentidão)
|
|
18
|
+
3. Como reproduzir? (endpoint, payload, contexto)
|
|
19
|
+
4. Logs/stack trace disponíveis?
|
|
20
|
+
5. Quando começou? (deploy, mudança de dados, aumento de volume)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Analisar e apresentar
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
DIAGNÓSTICO
|
|
27
|
+
|
|
28
|
+
Comportamento esperado: {...}
|
|
29
|
+
Comportamento atual: {...}
|
|
30
|
+
|
|
31
|
+
Camada provável do problema:
|
|
32
|
+
□ Validação (controller/schema)
|
|
33
|
+
□ Regra de negócio (domain/application)
|
|
34
|
+
□ Infraestrutura (banco, cache, serviço externo)
|
|
35
|
+
□ Configuração/ambiente
|
|
36
|
+
|
|
37
|
+
Causa raiz hipotética:
|
|
38
|
+
{análise técnica}
|
|
39
|
+
|
|
40
|
+
Arquivos suspeitos:
|
|
41
|
+
- {arquivo} — {por quê}
|
|
42
|
+
|
|
43
|
+
Abordagem de fix:
|
|
44
|
+
{descrição da solução em 2-3 frases}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Pergunte: `[1] Correto — implementar fix [2] Ajustar hipótese`
|