jarvis-ai-framework 1.0.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/AGENTS.md +416 -0
- package/LICENSE +21 -0
- package/README.md +190 -0
- package/agents/AGENTS.md +234 -0
- package/agents/README.md +309 -0
- package/agents/engineering/data/eng.data-engineer.agent.md +309 -0
- package/agents/engineering/eng.agent.md +303 -0
- package/agents/engineering/eng.bug-hunter.md +386 -0
- package/agents/engineering/eng.cybersecurity.agent.md +503 -0
- package/agents/engineering/eng.dev-code-reviewer.md +148 -0
- package/agents/engineering/eng.docs-writer.md +152 -0
- package/agents/engineering/eng.frontend.agent.md +117 -0
- package/agents/engineering/eng.rpa.agent.md +215 -0
- package/agents/engineering/eng.tech-analyst.agent.md +102 -0
- package/agents/engineering/eng.ux-designer.agent.md +193 -0
- package/agents/engineering/qa/eng.qa.cypress-specialist.md +109 -0
- package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +85 -0
- package/agents/engineering/qa/eng.qa.quality-strategist.md +111 -0
- package/agents/engineering/qa/eng.qa.test-architect.md +400 -0
- package/agents/engineering/qa/eng.qa.test-planner.md +477 -0
- package/agents/engineering/qa/eng.qa.testing-engineer.md +339 -0
- package/agents/product/prod.pm-checker.md +52 -0
- package/bin/commands/docs-publish.js +184 -0
- package/bin/commands/docs-sync.js +139 -0
- package/bin/commands/info.js +87 -0
- package/bin/commands/init.js +237 -0
- package/bin/commands/install-rtk.js +90 -0
- package/bin/commands/list.js +48 -0
- package/bin/commands/qa-signoff.js +112 -0
- package/bin/commands/whoami.js +43 -0
- package/bin/jarvis.js +159 -0
- package/bin/lib/auth/session.js +56 -0
- package/bin/lib/config/constants.js +123 -0
- package/bin/lib/config/ide-config.js +233 -0
- package/bin/lib/core/scanner.js +124 -0
- package/bin/lib/core/sync-engine.js +551 -0
- package/bin/lib/docs/fetch-file.sh +41 -0
- package/bin/lib/docs/publish-file.sh +284 -0
- package/bin/lib/docs/validate-frontmatter.js +157 -0
- package/bin/lib/env-loader.js +198 -0
- package/bin/lib/tasks/comment.js +131 -0
- package/bin/lib/utils/git-parser.js +145 -0
- package/bin/lib/utils/logger.js +104 -0
- package/bin/lib/utils/npmrc-parser.js +106 -0
- package/bin/lib/utils/paths.js +55 -0
- package/bin/lib/utils/ui.js +59 -0
- package/bin/lib/vcs/api.js +312 -0
- package/bin/lib/vcs/create-issue.js +43 -0
- package/bin/lib/vcs/create-merge.js +43 -0
- package/bin/lib/vcs/fetch-raw.js +30 -0
- package/bin/postinstall.js +41 -0
- package/members.md +25 -0
- package/package.json +55 -0
- package/rules/AGENTS.md +205 -0
- package/rules/engineering/data/data-rules.md +200 -0
- package/rules/engineering/eng-rules.md +243 -0
- package/rules/engineering/eng-security-rules.md +186 -0
- package/rules/engineering/eng.breakdown-subtasks-rules.md +585 -0
- package/rules/engineering/eng.bump-rules.md +27 -0
- package/rules/engineering/eng.docs-scraping-rules.md +64 -0
- package/rules/engineering/eng.downstream-flow-rules.md +297 -0
- package/rules/engineering/eng.integrations-rules.md +73 -0
- package/rules/engineering/eng.plan-rules.md +333 -0
- package/rules/engineering/eng.pr-rules.md +359 -0
- package/rules/engineering/eng.pre-pr-rules.md +103 -0
- package/rules/engineering/eng.start-rules.md +246 -0
- package/rules/engineering/eng.tech-spec-rules.md +968 -0
- package/rules/engineering/eng.work-rules.md +312 -0
- package/rules/engineering/frontend/eng.frontend-rules.md +147 -0
- package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +259 -0
- package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +137 -0
- package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +181 -0
- package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +120 -0
- package/rules/engineering/rpa/eng.rpa-rules.md +230 -0
- package/rules/product/README.md +24 -0
- package/rules/product/prod-rules.md +151 -0
- package/rules/rtk-rules.md +68 -0
- package/skills/AGENTS.md +290 -0
- package/skills/SKILLS-ROADMAP.md +333 -0
- package/skills/churn-audit/SKILL.md +385 -0
- package/skills/context-detect/SKILL.md +399 -0
- package/skills/context-detect/assets/context-profile-template.md +127 -0
- package/skills/docs-central/README.md +310 -0
- package/skills/docs-central/SKILL.md +423 -0
- package/skills/docs-index/SKILL.md +377 -0
- package/skills/eng-ai-engineer/SKILL.md +296 -0
- package/skills/eng-arch-c4/SKILL.md +358 -0
- package/skills/eng-arch-c4/assets/example-code.md +189 -0
- package/skills/eng-arch-c4/assets/example-component.md +105 -0
- package/skills/eng-arch-c4/assets/example-container.md +104 -0
- package/skills/eng-arch-c4/assets/example-context.md +81 -0
- package/skills/eng-backend/SKILL.md +776 -0
- package/skills/eng-browser-extension-builder/SKILL.md +385 -0
- package/skills/eng-cybersecurity/SKILL.md +645 -0
- package/skills/eng-data-bi/SKILL.md +199 -0
- package/skills/eng-data-debug/SKILL.md +307 -0
- package/skills/eng-data-engineer/SKILL.md +256 -0
- package/skills/eng-data-onboard/SKILL.md +310 -0
- package/skills/eng-data-orchestrator/SKILL.md +426 -0
- package/skills/eng-design-system/SKILL.md +619 -0
- package/skills/eng-docs-write/SKILL.md +312 -0
- package/skills/eng-frontend/SKILL.md +913 -0
- package/skills/eng-jira-comment/SKILL.md +17 -0
- package/skills/eng-microfrontend/SKILL.md +602 -0
- package/skills/eng-ms-trace/SKILL.md +469 -0
- package/skills/eng-nestjs/SKILL.md +791 -0
- package/skills/eng-performance-engineer/SKILL.md +312 -0
- package/skills/eng-pr/SKILL.md +339 -0
- package/skills/eng-qa-a11y-audit/SKILL.md +269 -0
- package/skills/eng-qa-bug-report/SKILL.md +1088 -0
- package/skills/eng-qa-bug-report/TASK_MANAGERS.md +138 -0
- package/skills/eng-qa-cypress-e2e/SKILL.md +177 -0
- package/skills/eng-qa-dev-guide/SKILL.md +164 -0
- package/skills/eng-qa-e2e/SKILL.md +400 -0
- package/skills/eng-qa-e2e-spec-writer/SKILL.md +322 -0
- package/skills/eng-qa-exploratory/SKILL.md +188 -0
- package/skills/eng-qa-gate/SKILL.md +370 -0
- package/skills/eng-qa-gate/assets/checklist-validacao.md +291 -0
- package/skills/eng-qa-graphql-contract/SKILL.md +256 -0
- package/skills/eng-qa-quality-report/SKILL.md +412 -0
- package/skills/eng-qa-test-plan/SKILL.md +466 -0
- package/skills/eng-qa-test-plan/assets/test-coverage-template.md +92 -0
- package/skills/eng-qa-test-plan/assets/test-patterns.md +178 -0
- package/skills/eng-qa-testsprite/SKILL.md +325 -0
- package/skills/eng-qa-testsprite/references/testsprite-mcp.md +224 -0
- package/skills/eng-qa-unit-test/SKILL.md +471 -0
- package/skills/eng-rabbitmq/SKILL.md +661 -0
- package/skills/eng-scraper/SKILL.md +683 -0
- package/skills/eng-scraper-robot-builder/SKILL.md +370 -0
- package/skills/eng-security-patch/SKILL.md +378 -0
- package/skills/eng-security-triage/SKILL.md +266 -0
- package/skills/eng-task-comment/SKILL.md +60 -0
- package/skills/eng-tech-analyst/SKILL.md +529 -0
- package/skills/eng-threat-model/SKILL.md +161 -0
- package/skills/init-jarvis/SKILL.md +1304 -0
- package/skills/init-jarvis/assets/mcp-configs.md +389 -0
- package/skills/init-jarvis/assets/onboarding-checklist.md +104 -0
- package/skills/init-jarvis/assets/setup-guide.md +360 -0
- package/skills/lovable-prompt-generator/SKILL.md +304 -0
- package/skills/prod-roadmap-report/README.md +303 -0
- package/skills/prod-roadmap-report/SKILL.md +198 -0
- package/skills/prod-roadmap-report/commands/status.compiled.single.team.md +23 -0
- package/skills/prod-roadmap-report/commands/status.list.projects.md +17 -0
- package/skills/prod-roadmap-report/commands/status.memory.md +192 -0
- package/skills/prod-roadmap-report/commands/status.roadmap.preview.md +94 -0
- package/skills/prod-roadmap-report/references/detailed-guide.md +236 -0
- package/skills/prod-roadmap-report/rules/detailed-guide.md +237 -0
- package/skills/prod-roadmap-report/rules/status-report-rules.md +44 -0
- package/skills/prod-roadmap-report/templates/template-multiple-teams-compiled-status.md +53 -0
- package/skills/prod-roadmap-report/templates/template-projects-list.md +23 -0
- package/skills/prod-roadmap-report/templates/template-single-team-compiled-status.md +60 -0
- package/skills/prod-roadmap-report/templates/template-single-team-status.md +49 -0
- package/skills/prod-specs/SKILL.md +108 -0
- package/skills/prod-specs/references/prod.spec.clarify.md +176 -0
- package/skills/prod-specs/references/prod.spec.epic.md +107 -0
- package/skills/prod-specs/references/prod.spec.frd.md +135 -0
- package/skills/prod-specs/references/prod.spec.issue.md +145 -0
- package/skills/prod-specs/references/prod.spec.prd.md +118 -0
- package/skills/prod-specs/rules/prod-spec-rules.md +186 -0
- package/skills/prod-specs/templates/prod-breakdown-template.md +136 -0
- package/skills/prod-specs/templates/prod-epic-template.md +76 -0
- package/skills/prod-specs/templates/prod-frd-template.md +172 -0
- package/skills/prod-specs/templates/prod-issue-template.md +68 -0
- package/skills/prod-specs/templates/prod-prd-full-template.md +159 -0
- package/skills/prod-specs/templates/prod-prd-template.md +173 -0
- package/skills/prod-specs-update/SKILL.md +272 -0
- package/skills/report-issue/SKILL.md +156 -0
- package/taxonomy.md +270 -0
- package/templates/AGENTS.md +189 -0
- package/templates/CDD aplicado a Prompts.md +182 -0
- package/templates/ENV-template.md +187 -0
- package/templates/engineering/AGENTS-template.md +71 -0
- package/templates/engineering/ARD-template.md +193 -0
- package/templates/engineering/CONTACTS-template.md +135 -0
- package/templates/engineering/PR-template.md +40 -0
- package/templates/engineering/RFC-Playbook.md +325 -0
- package/templates/engineering/RFC-template.md +199 -0
- package/templates/engineering/architecture-template.md +277 -0
- package/templates/engineering/breakdown-subtasks-template.md +582 -0
- package/templates/engineering/c4-model-template.md +516 -0
- package/templates/engineering/data-contract-template.md +135 -0
- package/templates/engineering/data-pipeline-template.md +163 -0
- package/templates/engineering/plan-template.md +255 -0
- package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +311 -0
- package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +249 -0
- package/templates/engineering/qa/qa.cypress-test-template.md +172 -0
- package/templates/engineering/qa/qa.exploratory-session-template.md +148 -0
- package/templates/engineering/qa/qa.quality-report-template.md +130 -0
- package/templates/engineering/qa/qa.release-signoff-template.md +54 -0
- package/templates/engineering/qa/qa.sprint-plan-template.md +49 -0
- package/templates/engineering/swagger-template.md +145 -0
- package/templates/engineering/tech-spec-template.md +497 -0
- package/templates/engineering/work-progress-template.md +155 -0
- package/workflows/AGENTS.md +240 -0
- package/workflows/README.md +160 -0
- package/workflows/all-tools.md +11 -0
- package/workflows/engineering/data/data.contract.md +202 -0
- package/workflows/engineering/data/data.new-pipeline.md +234 -0
- package/workflows/engineering/eng.breakdown-subtasks.md +420 -0
- package/workflows/engineering/eng.bug-audit.md +591 -0
- package/workflows/engineering/eng.build-tech-spec.md +1116 -0
- package/workflows/engineering/eng.create-ard-from-code.md +259 -0
- package/workflows/engineering/eng.create-ard.md +382 -0
- package/workflows/engineering/eng.create-rfc.md +245 -0
- package/workflows/engineering/eng.debug.md +479 -0
- package/workflows/engineering/eng.docs.md +40 -0
- package/workflows/engineering/eng.light-arch.md +84 -0
- package/workflows/engineering/eng.plan.md +213 -0
- package/workflows/engineering/eng.pr.md +466 -0
- package/workflows/engineering/eng.pre-pr.md +167 -0
- package/workflows/engineering/eng.review.md +185 -0
- package/workflows/engineering/eng.rpa.robot.md +342 -0
- package/workflows/engineering/eng.security-audit.md +312 -0
- package/workflows/engineering/eng.security-incident.md +275 -0
- package/workflows/engineering/eng.security-pipeline.md +210 -0
- package/workflows/engineering/eng.security-review.md +235 -0
- package/workflows/engineering/eng.start.md +494 -0
- package/workflows/engineering/eng.work.md +558 -0
- package/workflows/engineering/frontend/eng.frontend-component.md +190 -0
- package/workflows/engineering/frontend/eng.frontend-perf-audit.md +375 -0
- package/workflows/engineering/frontend/eng.frontend-review.md +185 -0
- package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +51 -0
- package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +51 -0
- package/workflows/engineering/qa/eng.qa-exploratory-session.md +60 -0
- package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +202 -0
- package/workflows/engineering/qa/eng.qa-quality-report.md +83 -0
- package/workflows/engineering/qa/eng.qa-refinement-entry.md +83 -0
- package/workflows/engineering/qa/eng.qa-release-signoff.md +170 -0
- package/workflows/engineering/qa/eng.qa-sprint-planning.md +100 -0
- package/workflows/engineering/ta/eng.ta.atendimento.md +93 -0
- package/workflows/product/prod.roadmap.preview.md +110 -0
- package/workflows/product/prod.spec.breakdown.md +163 -0
- package/workflows/product/prod.spec.clarify.md +178 -0
- package/workflows/product/prod.spec.epic.md +154 -0
- package/workflows/product/prod.spec.frd.md +96 -0
- package/workflows/product/prod.spec.issue.md +145 -0
- package/workflows/product/prod.spec.md +60 -0
- package/workflows/product/prod.spec.prd.md +100 -0
- package/workflows/taxonomy.md +92 -0
- package/workflows/warm-up.md +574 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eng-qa-gate
|
|
3
|
+
description: Valida Quality Gate de Tech Specs (Tasks, Spikes, Bugs). Use quando precisar validar se uma especificação técnica atende aos critérios de qualidade antes do breakdown de subtarefas.
|
|
4
|
+
argument-hint: "[card-id ou caminho-do-arquivo]"
|
|
5
|
+
disable-model-invocation: false
|
|
6
|
+
allowed-tools: Read Grep Glob Bash MCP
|
|
7
|
+
license: AGPL-3.0
|
|
8
|
+
metadata:
|
|
9
|
+
author: jarvis-team
|
|
10
|
+
version: "1.0"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Quality Gate - Validação de Tech Spec
|
|
14
|
+
|
|
15
|
+
Você é um **especialista em Quality Assurance**, atuando como Quality Champion digital para validação de Especificações Técnicas (Tech Specs).
|
|
16
|
+
|
|
17
|
+
## Objetivo
|
|
18
|
+
|
|
19
|
+
Garantir que toda tech spec atenda aos padrões de qualidade estabelecidos antes de prosseguir para o breakdown de subtarefas.
|
|
20
|
+
|
|
21
|
+
## Entrada
|
|
22
|
+
|
|
23
|
+
- `$ARGUMENTS` - Identificador do card (`TASK_MANAGER_KEY`) ou caminho do arquivo de tech spec a ser validado
|
|
24
|
+
|
|
25
|
+
### Exemplos de Uso
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
/qa-gate PROJ-123
|
|
29
|
+
/qa-gate ./sessions/PROJ-123/tech-spec.md
|
|
30
|
+
/qa-gate $SESSIONS_DIR/eng/TECH-456/tech-spec.md
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Validação de Entrada
|
|
34
|
+
|
|
35
|
+
**IMPORTANTE**: Antes de processar, validar se `$ARGUMENTS` foi fornecido:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Se $ARGUMENTS está vazio:
|
|
39
|
+
→ Exibir: "⚠️ Argumento obrigatório. Informe o card-id ou caminho do arquivo."
|
|
40
|
+
→ Exibir: "Uso: /qa-gate [card-id ou caminho-do-arquivo]"
|
|
41
|
+
→ Encerrar execução
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Extração do Card ID
|
|
45
|
+
|
|
46
|
+
Extrair o identificador do card para nomear a sessão e o relatório:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
Se $ARGUMENTS contém "/" (é um caminho de arquivo):
|
|
50
|
+
→ Extrair nome do arquivo sem extensão
|
|
51
|
+
→ Exemplo: "./sessions/PROJ-123/tech-spec.md" → card-id = "PROJ-123"
|
|
52
|
+
→ Se nome do arquivo não parecer um card-id, usar nome do diretório pai
|
|
53
|
+
Senão:
|
|
54
|
+
→ Usar $ARGUMENTS diretamente como card-id
|
|
55
|
+
→ Exemplo: "PROJ-123" → card-id = "PROJ-123"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Recursos
|
|
59
|
+
|
|
60
|
+
- **Template de Tech Spec**: `$IDE/templates/engineering/tech-spec-template.md`
|
|
61
|
+
- **Checklist de Validação**: `$IDE/skills/qa-gate/assets/checklist-validacao.md`
|
|
62
|
+
- **Saída**: `$SESSIONS_DIR/eng/{card-id}/qa-gate-report.md`
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Pré-requisito
|
|
67
|
+
|
|
68
|
+
**IMPORTANTE**: Antes de executar, verificar se o `ENV.md` existe e está completo:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Verificar existência do ENV.md
|
|
72
|
+
if [ ! -f "$IDE/ENV.md" ]; then
|
|
73
|
+
echo "⚠️ ENV.md não encontrado. Execute /init-jarvis primeiro."
|
|
74
|
+
exit 1
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# Validar variáveis obrigatórias
|
|
78
|
+
required_vars=("WORKSPACE" "IDE" "SQUAD" "HUB" "AREA" "POSITION")
|
|
79
|
+
for var in "${required_vars[@]}"; do
|
|
80
|
+
if ! grep -q "^$var=.\+" "$IDE/ENV.md"; then
|
|
81
|
+
echo "⚠️ Variável $var não definida no ENV.md"
|
|
82
|
+
fi
|
|
83
|
+
done
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Variáveis obrigatórias**:
|
|
87
|
+
- `WORKSPACE`, `IDE`, `SQUAD`, `HUB`, `AREA`
|
|
88
|
+
- Identidade do usuário via `USER=` no ENV.md (fallback: git / SO). Sem login
|
|
89
|
+
- `POSITION`
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Fluxo de Trabalho
|
|
94
|
+
|
|
95
|
+
### 0. Validar Entrada
|
|
96
|
+
|
|
97
|
+
Antes de qualquer processamento:
|
|
98
|
+
|
|
99
|
+
1. Verificar se `$ARGUMENTS` foi fornecido
|
|
100
|
+
2. Se vazio, exibir mensagem de erro e encerrar
|
|
101
|
+
3. Extrair o `card-id` conforme regras de extração
|
|
102
|
+
4. Localizar o arquivo de tech spec (buscar no `$TASK_MANAGER` ou no caminho informado)
|
|
103
|
+
|
|
104
|
+
### 1. Identificar Tipo do Card
|
|
105
|
+
|
|
106
|
+
Determine se é Task, Spike ou Bug para aplicar os critérios corretos.
|
|
107
|
+
|
|
108
|
+
**Integração com `$TASK_MANAGER` (via MCP / adapter)**:
|
|
109
|
+
|
|
110
|
+
Se o argumento for um card-id (ex: `PROJ-123`) e `TASK_MANAGER` estiver definido:
|
|
111
|
+
|
|
112
|
+
1. **Buscar informações do card**:
|
|
113
|
+
- Tipo do card (Task, Spike, Bug, Story)
|
|
114
|
+
- Descrição e campos customizados
|
|
115
|
+
- Anexos (tech spec anexada)
|
|
116
|
+
|
|
117
|
+
2. **Se tech spec não estiver no board**:
|
|
118
|
+
- Verificar se existe em `$SESSIONS_DIR/eng/{card-id}/tech-spec.md`
|
|
119
|
+
- Verificar se existe em `$SESSIONS_DIR/eng/{card-id}/architecture.md`
|
|
120
|
+
- Se não encontrar, solicitar ao usuário o caminho do arquivo
|
|
121
|
+
|
|
122
|
+
3. **Fallback**:
|
|
123
|
+
- Se MCP/token indisponível ou `TASK_MANAGER` vazio (freelance): trabalhar só com arquivos locais
|
|
124
|
+
- Não bloquear o gate por falta de MCP
|
|
125
|
+
|
|
126
|
+
### 2. Aplicar Critérios por Tipo
|
|
127
|
+
|
|
128
|
+
#### Para TASKS
|
|
129
|
+
|
|
130
|
+
| Critério | Obrigatório | Peso | Crítico |
|
|
131
|
+
|----------|-------------|------|--------|
|
|
132
|
+
| Contexto da História (história original, contexto de negócio) | Sim | 10% | Não |
|
|
133
|
+
| Critérios de Aceitação (mín. 3, mensuráveis) | Sim | 15% | **Sim** |
|
|
134
|
+
| Escopo definido (inclui/não inclui) | Sim | 10% | Não |
|
|
135
|
+
| Análise Técnica (componentes, arquitetura, tecnologias) | Sim | 15% | Não |
|
|
136
|
+
| Decisões Arquiteturais (com alternativas e justificativas) | Sim | 10% | Não |
|
|
137
|
+
| Plano de Implementação (fases e subtarefas) | Sim | 10% | Não |
|
|
138
|
+
| Estratégia de Testes (unitários, integração, e2e) | Sim | 10% | Não |
|
|
139
|
+
| Riscos e Mitigações (com Plano B) | Sim | 10% | Não |
|
|
140
|
+
| Dependências mapeadas (internas e externas) | Sim | 5% | Não |
|
|
141
|
+
| Validação e DoD (Definition of Done) | Sim | 5% | Não |
|
|
142
|
+
|
|
143
|
+
**Total**: 100%
|
|
144
|
+
|
|
145
|
+
#### Para SPIKES
|
|
146
|
+
|
|
147
|
+
| Critério | Obrigatório | Peso | Crítico |
|
|
148
|
+
|----------|-------------|------|--------|
|
|
149
|
+
| Objetivo claro e perguntas a responder | Sim | 25% | Não |
|
|
150
|
+
| Referências de Discovery (docs, APIs, SDKs) | Sim | 25% | **Sim** |
|
|
151
|
+
| Critérios de conclusão e entregáveis | Sim | 20% | Não |
|
|
152
|
+
| Contexto e justificativa (por que investigar) | Sim | 15% | Não |
|
|
153
|
+
| Timebox definido | Sim | 10% | Não |
|
|
154
|
+
| Próximos passos após conclusão | Sim | 5% | Não |
|
|
155
|
+
|
|
156
|
+
**Total**: 100%
|
|
157
|
+
|
|
158
|
+
#### Para BUGS
|
|
159
|
+
|
|
160
|
+
| Critério | Obrigatório | Peso | Crítico |
|
|
161
|
+
|----------|-------------|------|--------|
|
|
162
|
+
| Comportamento esperado vs atual | Sim | 20% | Não |
|
|
163
|
+
| Passos para reproduzir (numerados, detalhados) | Sim | 20% | **Sim** |
|
|
164
|
+
| Ambiente e condições (browser, versão, dados) | Sim | 10% | Não |
|
|
165
|
+
| Análise técnica (causa raiz, arquivos afetados) | Sim | 20% | **Sim** |
|
|
166
|
+
| Severidade e prioridade justificadas | Sim | 15% | Não |
|
|
167
|
+
| Proposta de solução ou investigação | Sim | 10% | Não |
|
|
168
|
+
| Testes de regressão necessários | Sim | 5% | Não |
|
|
169
|
+
|
|
170
|
+
**Total**: 100%
|
|
171
|
+
|
|
172
|
+
### 3. Calcular Score
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
Score = Σ (Peso do critério × Status)
|
|
176
|
+
|
|
177
|
+
Onde:
|
|
178
|
+
- Status = 1 se atendido, 0 se não atendido
|
|
179
|
+
- Peso = percentual definido na tabela de critérios
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Exemplo para TASK**:
|
|
183
|
+
- Contexto (10%) ✅ + Critérios de Aceitação (15%) ✅ + Escopo (10%) ❌ = 25%
|
|
184
|
+
|
|
185
|
+
### 4. Classificar Resultado
|
|
186
|
+
|
|
187
|
+
| Score | Status | Label | Pode Prosseguir? |
|
|
188
|
+
|-------|--------|-------|------------------|
|
|
189
|
+
| 100% | Conforme | `QualityGate::Conforme` | Sim |
|
|
190
|
+
| 70-99% | Parcial | `QualityGate::Parcial` | Com ressalvas |
|
|
191
|
+
| < 70% | Bloqueado | `QualityGate::Bloqueado` | Não |
|
|
192
|
+
|
|
193
|
+
### 5. Verificar Critérios Críticos (Bloqueantes Automáticos)
|
|
194
|
+
|
|
195
|
+
Mesmo com score > 70%, bloquear automaticamente se:
|
|
196
|
+
|
|
197
|
+
- SPIKE: Ausência de referências de discovery
|
|
198
|
+
- BUG: Ausência de passos para reproduzir ou análise técnica
|
|
199
|
+
- TASK: Ausência de critérios de aceitação ou descrição vazia
|
|
200
|
+
|
|
201
|
+
### 6. Gerar e Salvar Relatório
|
|
202
|
+
|
|
203
|
+
**Ação obrigatória**: Criar o arquivo de relatório na sessão.
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Criar pasta da sessão se não existir
|
|
207
|
+
mkdir -p $SESSIONS_DIR/eng/{card-id}/
|
|
208
|
+
|
|
209
|
+
# Salvar relatório
|
|
210
|
+
cat > $SESSIONS_DIR/eng/{card-id}/qa-gate-report.md << 'EOF'
|
|
211
|
+
{conteúdo do relatório}
|
|
212
|
+
EOF
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### 7. Atualizar o card (opcional)
|
|
216
|
+
|
|
217
|
+
Se `TASK_MANAGER` estiver definido e o card existir, sugerir:
|
|
218
|
+
|
|
219
|
+
1. **Adicionar label**: `QualityGate::{Status}`
|
|
220
|
+
2. **Adicionar comentário** com resumo do relatório (`eng-task-comment`)
|
|
221
|
+
3. **Anexar** o arquivo `qa-gate-report.md`
|
|
222
|
+
|
|
223
|
+
```markdown
|
|
224
|
+
## Sugestão para o card ({TASK_MANAGER})
|
|
225
|
+
|
|
226
|
+
**Label sugerida**: `QualityGate::{Status}`
|
|
227
|
+
|
|
228
|
+
**Comentário sugerido**:
|
|
229
|
+
---
|
|
230
|
+
✅ Quality Gate executado em {data}
|
|
231
|
+
|
|
232
|
+
**Status**: {Conforme | Parcial | Bloqueado}
|
|
233
|
+
**Score**: {X}/100
|
|
234
|
+
|
|
235
|
+
{Resumo dos problemas, se houver}
|
|
236
|
+
|
|
237
|
+
Relatório completo anexado.
|
|
238
|
+
---
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Formato de Saída
|
|
244
|
+
|
|
245
|
+
```markdown
|
|
246
|
+
# Quality Gate - Tech Spec
|
|
247
|
+
|
|
248
|
+
**Status**: [Conforme | Parcial | Bloqueado]
|
|
249
|
+
**Score**: X/100
|
|
250
|
+
**Tipo de Card**: [Task | Spike | Bug]
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Pontos Positivos
|
|
255
|
+
- [Listar o que está bem]
|
|
256
|
+
|
|
257
|
+
## Problemas Identificados
|
|
258
|
+
- [ ] [Problema 1 - com sugestão de correção]
|
|
259
|
+
- [ ] [Problema 2 - com sugestão de correção]
|
|
260
|
+
|
|
261
|
+
## Recomendações
|
|
262
|
+
1. [Ação específica para melhorar]
|
|
263
|
+
2. [Outra ação]
|
|
264
|
+
|
|
265
|
+
## Detalhamento do Score
|
|
266
|
+
|
|
267
|
+
| Critério | Status | Peso | Pontos |
|
|
268
|
+
|----------|--------|------|--------|
|
|
269
|
+
| [Critério 1] | ✅/❌ | X% | X |
|
|
270
|
+
| [Critério 2] | ✅/❌ | X% | X |
|
|
271
|
+
| **Total** | - | 100% | **X** |
|
|
272
|
+
|
|
273
|
+
## Integração com `$TASK_MANAGER`
|
|
274
|
+
|
|
275
|
+
**Label sugerida**: `QualityGate::{Status}`
|
|
276
|
+
**Ação**: Adicionar label e comentário no card (se `TASK_MANAGER` definido)
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
**Próximos Passos:**
|
|
281
|
+
- Se Conforme: Prosseguir para breakdown de subtarefas
|
|
282
|
+
- Se Parcial/Bloqueado: Corrigir problemas e solicitar nova validação
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Regras
|
|
288
|
+
|
|
289
|
+
### Nunca
|
|
290
|
+
- Aprovar tech spec sem critérios de aceitação (Task)
|
|
291
|
+
- Aprovar spike sem referências de discovery
|
|
292
|
+
- Aprovar bug sem passos para reproduzir
|
|
293
|
+
- Ignorar critérios críticos mesmo com score alto
|
|
294
|
+
- Dar status "Conforme" para score abaixo de 100%
|
|
295
|
+
|
|
296
|
+
### Sempre
|
|
297
|
+
- Validar que `$ARGUMENTS` foi fornecido antes de iniciar
|
|
298
|
+
- Extrair corretamente o `card-id` do argumento
|
|
299
|
+
- Verificar ENV.md antes de iniciar
|
|
300
|
+
- Identificar corretamente o tipo do card
|
|
301
|
+
- Aplicar todos os critérios obrigatórios
|
|
302
|
+
- Fornecer sugestões específicas de correção
|
|
303
|
+
- Usar checkboxes para facilitar acompanhamento
|
|
304
|
+
- Ser objetivo e direto no feedback
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Checklist de Conclusão
|
|
309
|
+
|
|
310
|
+
- [ ] Argumento validado (não vazio)
|
|
311
|
+
- [ ] Card-id extraído corretamente
|
|
312
|
+
- [ ] ENV.md verificado
|
|
313
|
+
- [ ] Tipo do card identificado (Task/Spike/Bug)
|
|
314
|
+
- [ ] Critérios obrigatórios verificados
|
|
315
|
+
- [ ] Critérios críticos validados
|
|
316
|
+
- [ ] Score calculado corretamente
|
|
317
|
+
- [ ] Status classificado
|
|
318
|
+
- [ ] Relatório gerado no formato padrão
|
|
319
|
+
- [ ] Sugestões de correção fornecidas
|
|
320
|
+
- [ ] Label sugerida
|
|
321
|
+
- [ ] Relatório salvo em `$SESSIONS_DIR/eng/{card-id}/qa-gate-report.md`
|
|
322
|
+
- [ ] Sugestão de atualização do card fornecida (se `TASK_MANAGER` definido)
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Tratamento de Erros
|
|
327
|
+
|
|
328
|
+
### Argumento não fornecido
|
|
329
|
+
- Exibir mensagem de erro clara
|
|
330
|
+
- Mostrar exemplos de uso correto
|
|
331
|
+
- Encerrar execução sem processar
|
|
332
|
+
|
|
333
|
+
### Card não encontrado no `$TASK_MANAGER`
|
|
334
|
+
- Verificar se o ID está correto
|
|
335
|
+
- Tentar buscar por caminho de arquivo local (freelance / MCP off)
|
|
336
|
+
|
|
337
|
+
### Arquivo de tech spec não encontrado
|
|
338
|
+
- Listar arquivos disponíveis na sessão
|
|
339
|
+
- Perguntar ao usuário o caminho correto
|
|
340
|
+
|
|
341
|
+
### Tipo de card não identificado
|
|
342
|
+
- Perguntar ao usuário qual o tipo
|
|
343
|
+
- Aplicar critérios mais restritivos (Task)
|
|
344
|
+
|
|
345
|
+
### Tech spec vazia ou incompleta
|
|
346
|
+
- Atribuir status "Bloqueado" automaticamente
|
|
347
|
+
- Listar todos os campos obrigatórios faltantes
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Mensagem de Conclusão
|
|
352
|
+
|
|
353
|
+
```
|
|
354
|
+
Quality Gate concluído!
|
|
355
|
+
|
|
356
|
+
Status: {Conforme | Parcial | Bloqueado}
|
|
357
|
+
Score: {X}/100
|
|
358
|
+
Tipo: {Task | Spike | Bug}
|
|
359
|
+
Label sugerida: QualityGate::{Status}
|
|
360
|
+
|
|
361
|
+
Critérios atendidos: {N}/{Total}
|
|
362
|
+
Critérios críticos: {OK | BLOQUEADO}
|
|
363
|
+
|
|
364
|
+
Próximos passos:
|
|
365
|
+
- Conforme: Prosseguir para breakdown
|
|
366
|
+
- Parcial: Corrigir itens e revalidar
|
|
367
|
+
- Bloqueado: Revisar tech spec completamente
|
|
368
|
+
|
|
369
|
+
Relatório salvo em: $SESSIONS_DIR/eng/{card-id}/qa-gate-report.md
|
|
370
|
+
```
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# Checklist de Validação - Quality Gate
|
|
2
|
+
|
|
3
|
+
Este documento serve como referência para validação de Tech Specs antes do breakdown de subtarefas.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Checklist por Tipo de Card
|
|
8
|
+
|
|
9
|
+
### TASK - Checklist Completo
|
|
10
|
+
|
|
11
|
+
#### Seção 1: Contexto da História (10%)
|
|
12
|
+
|
|
13
|
+
- [ ] História original do Jira referenciada (ID e link)
|
|
14
|
+
- [ ] Formato "Como/Eu quero/Para que" preenchido
|
|
15
|
+
- [ ] Contexto de negócio explicado
|
|
16
|
+
- [ ] Critérios de aceitação do produto listados
|
|
17
|
+
- [ ] Escopo definido (inclui/não inclui)
|
|
18
|
+
|
|
19
|
+
#### Seção 2: Análise Técnica (15%)
|
|
20
|
+
|
|
21
|
+
- [ ] Componentes afetados listados com tipo de mudança
|
|
22
|
+
- [ ] Arquitetura atual vs proposta descrita
|
|
23
|
+
- [ ] Diagrama de arquitetura incluído (se aplicável)
|
|
24
|
+
- [ ] Fluxo de dados documentado
|
|
25
|
+
- [ ] Tecnologias e bibliotecas listadas com justificativa
|
|
26
|
+
- [ ] Dependências mapeadas (externas, internas, outras stories)
|
|
27
|
+
|
|
28
|
+
#### Seção 3: Decisões Arquiteturais (10%)
|
|
29
|
+
|
|
30
|
+
- [ ] Pelo menos 1 decisão documentada
|
|
31
|
+
- [ ] Contexto da decisão explicado
|
|
32
|
+
- [ ] Mínimo 2 opções consideradas
|
|
33
|
+
- [ ] Prós e contras de cada opção
|
|
34
|
+
- [ ] Justificativa da escolha
|
|
35
|
+
- [ ] Consequências documentadas
|
|
36
|
+
|
|
37
|
+
#### Seção 4: Plano de Implementação (10%)
|
|
38
|
+
|
|
39
|
+
- [ ] Fases definidas com objetivos claros
|
|
40
|
+
- [ ] Subtarefas detalhadas por fase
|
|
41
|
+
- [ ] Arquivos a modificar/criar listados
|
|
42
|
+
- [ ] Critérios de aceitação técnicos por subtarefa
|
|
43
|
+
- [ ] Testes requeridos por subtarefa
|
|
44
|
+
- [ ] Estimativas em horas (máx. 2h por subtarefa)
|
|
45
|
+
|
|
46
|
+
#### Seção 5: Critérios de Aceitação (15%) - CRÍTICO
|
|
47
|
+
|
|
48
|
+
- [ ] Mínimo 3 critérios de aceitação
|
|
49
|
+
- [ ] Critérios são mensuráveis e testáveis
|
|
50
|
+
- [ ] Formato "Quando X, então Y"
|
|
51
|
+
- [ ] Cobrem cenário de sucesso
|
|
52
|
+
- [ ] Cobrem cenário de erro
|
|
53
|
+
|
|
54
|
+
#### Seção 6: Estratégia de Testes (10%)
|
|
55
|
+
|
|
56
|
+
- [ ] Cobertura alvo definida (%)
|
|
57
|
+
- [ ] Testes unitários planejados
|
|
58
|
+
- [ ] Testes de integração planejados
|
|
59
|
+
- [ ] Testes E2E planejados (se aplicável)
|
|
60
|
+
- [ ] Testes de performance (se aplicável)
|
|
61
|
+
- [ ] Testes de segurança (se aplicável)
|
|
62
|
+
|
|
63
|
+
#### Seção 7: Riscos e Mitigações (10%)
|
|
64
|
+
|
|
65
|
+
- [ ] Mínimo 2 riscos identificados
|
|
66
|
+
- [ ] Probabilidade avaliada (Alta/Média/Baixa)
|
|
67
|
+
- [ ] Impacto avaliado (Alto/Médio/Baixo)
|
|
68
|
+
- [ ] Mitigação definida para cada risco
|
|
69
|
+
- [ ] Plano B para riscos de alto impacto
|
|
70
|
+
|
|
71
|
+
#### Seção 8: Dependências (5%)
|
|
72
|
+
|
|
73
|
+
- [ ] Dependências externas listadas
|
|
74
|
+
- [ ] Dependências internas listadas
|
|
75
|
+
- [ ] Dependências de outras stories identificadas
|
|
76
|
+
- [ ] Ordem de execução clara
|
|
77
|
+
|
|
78
|
+
#### Seção 9: Validação e DoD (5%)
|
|
79
|
+
|
|
80
|
+
- [ ] Checklist de Definition of Done
|
|
81
|
+
- [ ] Critérios de código (review, lint, etc.)
|
|
82
|
+
- [ ] Critérios de testes
|
|
83
|
+
- [ ] Critérios de documentação
|
|
84
|
+
- [ ] Critérios de deploy
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### SPIKE - Checklist Completo
|
|
89
|
+
|
|
90
|
+
#### Objetivo e Perguntas (25%)
|
|
91
|
+
|
|
92
|
+
- [ ] Objetivo claro e específico
|
|
93
|
+
- [ ] Perguntas a responder listadas (mín. 3)
|
|
94
|
+
- [ ] Hipóteses a validar documentadas
|
|
95
|
+
- [ ] Escopo da investigação definido
|
|
96
|
+
|
|
97
|
+
#### Referências de Discovery (25%) - CRÍTICO
|
|
98
|
+
|
|
99
|
+
- [ ] Documentação oficial referenciada
|
|
100
|
+
- [ ] APIs/SDKs relevantes listados
|
|
101
|
+
- [ ] Exemplos de código ou POCs existentes
|
|
102
|
+
- [ ] Links para recursos externos
|
|
103
|
+
- [ ] Artigos ou tutoriais relevantes
|
|
104
|
+
|
|
105
|
+
#### Critérios de Conclusão (20%)
|
|
106
|
+
|
|
107
|
+
- [ ] Entregáveis definidos (documento, POC, decisão)
|
|
108
|
+
- [ ] Formato do output especificado
|
|
109
|
+
- [ ] Critérios de sucesso claros
|
|
110
|
+
- [ ] Como validar que o spike foi concluído
|
|
111
|
+
|
|
112
|
+
#### Contexto e Justificativa (15%)
|
|
113
|
+
|
|
114
|
+
- [ ] Por que essa investigação é necessária
|
|
115
|
+
- [ ] Qual problema estamos tentando resolver
|
|
116
|
+
- [ ] Impacto se não investigarmos
|
|
117
|
+
- [ ] Relação com outras histórias/épicos
|
|
118
|
+
|
|
119
|
+
#### Timebox (10%)
|
|
120
|
+
|
|
121
|
+
- [ ] Tempo máximo definido (horas/dias)
|
|
122
|
+
- [ ] Checkpoints intermediários
|
|
123
|
+
- [ ] Critério de parada se não houver progresso
|
|
124
|
+
|
|
125
|
+
#### Próximos Passos (5%)
|
|
126
|
+
|
|
127
|
+
- [ ] O que fazer após conclusão do spike
|
|
128
|
+
- [ ] Como os resultados serão usados
|
|
129
|
+
- [ ] Histórias que serão criadas/atualizadas
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### BUG - Checklist Completo
|
|
134
|
+
|
|
135
|
+
#### Comportamento Esperado vs Atual (20%)
|
|
136
|
+
|
|
137
|
+
- [ ] Comportamento esperado descrito claramente
|
|
138
|
+
- [ ] Comportamento atual descrito claramente
|
|
139
|
+
- [ ] Diferença entre os dois explicada
|
|
140
|
+
- [ ] Screenshots ou vídeos (se aplicável)
|
|
141
|
+
|
|
142
|
+
#### Passos para Reproduzir (20%) - CRÍTICO
|
|
143
|
+
|
|
144
|
+
- [ ] Passos numerados e detalhados
|
|
145
|
+
- [ ] Pré-condições listadas
|
|
146
|
+
- [ ] Dados de teste necessários
|
|
147
|
+
- [ ] Frequência de reprodução (sempre/às vezes)
|
|
148
|
+
- [ ] Passos são reproduzíveis por outra pessoa
|
|
149
|
+
|
|
150
|
+
#### Ambiente e Condições (10%)
|
|
151
|
+
|
|
152
|
+
- [ ] Browser/versão especificado
|
|
153
|
+
- [ ] Sistema operacional
|
|
154
|
+
- [ ] Ambiente (dev/staging/prod)
|
|
155
|
+
- [ ] Dados específicos que causam o bug
|
|
156
|
+
- [ ] Condições especiais (rede, horário, etc.)
|
|
157
|
+
|
|
158
|
+
#### Análise Técnica (20%) - CRÍTICO
|
|
159
|
+
|
|
160
|
+
- [ ] Causa raiz identificada ou hipótese
|
|
161
|
+
- [ ] Arquivos afetados listados
|
|
162
|
+
- [ ] Stack trace ou logs relevantes
|
|
163
|
+
- [ ] Componentes impactados
|
|
164
|
+
|
|
165
|
+
#### Severidade e Prioridade (15%)
|
|
166
|
+
|
|
167
|
+
- [ ] Severidade justificada (Crítico/Alto/Médio/Baixo)
|
|
168
|
+
- [ ] Prioridade justificada
|
|
169
|
+
- [ ] Impacto no usuário descrito
|
|
170
|
+
- [ ] Quantidade de usuários afetados (se conhecido)
|
|
171
|
+
|
|
172
|
+
#### Proposta de Solução (10%)
|
|
173
|
+
|
|
174
|
+
- [ ] Solução proposta ou investigação necessária
|
|
175
|
+
- [ ] Alternativas consideradas
|
|
176
|
+
- [ ] Riscos da correção
|
|
177
|
+
|
|
178
|
+
#### Testes de Regressão (5%)
|
|
179
|
+
|
|
180
|
+
- [ ] Testes que devem ser criados
|
|
181
|
+
- [ ] Áreas que devem ser testadas após correção
|
|
182
|
+
- [ ] Cenários de regressão identificados
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Critérios Bloqueantes Automáticos
|
|
187
|
+
|
|
188
|
+
Independente do score, o Quality Gate é **BLOQUEADO** se:
|
|
189
|
+
|
|
190
|
+
| Tipo | Critério Ausente |
|
|
191
|
+
|------|------------------|
|
|
192
|
+
| **TASK** | Critérios de Aceitação |
|
|
193
|
+
| **TASK** | Descrição vazia ou genérica |
|
|
194
|
+
| **SPIKE** | Referências de Discovery |
|
|
195
|
+
| **BUG** | Passos para Reproduzir |
|
|
196
|
+
| **BUG** | Análise Técnica |
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Exemplos
|
|
201
|
+
|
|
202
|
+
### Exemplo de Tech Spec Conforme (TASK)
|
|
203
|
+
|
|
204
|
+
```markdown
|
|
205
|
+
# TECH-001: Implementar Autenticação JWT
|
|
206
|
+
|
|
207
|
+
## 1. Contexto da História
|
|
208
|
+
|
|
209
|
+
**ID**: STORY-123
|
|
210
|
+
**Link**: https://jira.empresa.com/browse/STORY-123
|
|
211
|
+
|
|
212
|
+
**Como** usuário do sistema
|
|
213
|
+
**Eu quero** fazer login com email e senha
|
|
214
|
+
**Para que** eu possa acessar minhas informações de forma segura
|
|
215
|
+
|
|
216
|
+
### Contexto de Negócio
|
|
217
|
+
O sistema atual não possui autenticação. Usuários acessam sem identificação,
|
|
218
|
+
o que impede personalização e rastreamento de ações.
|
|
219
|
+
|
|
220
|
+
### Critérios de Aceitação (Produto)
|
|
221
|
+
- Quando usuário insere credenciais válidas, então é redirecionado ao dashboard
|
|
222
|
+
- Quando usuário insere credenciais inválidas, então vê mensagem de erro
|
|
223
|
+
- Quando token expira, então usuário é redirecionado ao login
|
|
224
|
+
|
|
225
|
+
### Escopo
|
|
226
|
+
**Inclui:**
|
|
227
|
+
- Login com email/senha
|
|
228
|
+
- Geração de token JWT
|
|
229
|
+
- Middleware de validação
|
|
230
|
+
|
|
231
|
+
**Não Inclui:**
|
|
232
|
+
- Login social (OAuth)
|
|
233
|
+
- Recuperação de senha
|
|
234
|
+
- 2FA
|
|
235
|
+
|
|
236
|
+
## 2. Análise Técnica
|
|
237
|
+
|
|
238
|
+
### Componentes Afetados
|
|
239
|
+
| Componente | Tipo | Impacto |
|
|
240
|
+
|------------|------|---------|
|
|
241
|
+
| auth.service.ts | Criação | Alto |
|
|
242
|
+
| user.controller.ts | Modificação | Médio |
|
|
243
|
+
|
|
244
|
+
### Decisões Arquiteturais
|
|
245
|
+
|
|
246
|
+
**Decisão 1: Armazenamento de Token**
|
|
247
|
+
|
|
248
|
+
**Contexto**: Onde armazenar o token JWT no frontend?
|
|
249
|
+
|
|
250
|
+
**Opções**:
|
|
251
|
+
- Opção A: localStorage - Prós: simples. Contras: vulnerável a XSS
|
|
252
|
+
- Opção B: httpOnly cookie - Prós: seguro. Contras: requer CSRF protection
|
|
253
|
+
|
|
254
|
+
**Decisão**: httpOnly cookie
|
|
255
|
+
**Justificativa**: Segurança é prioridade. CSRF é mitigável.
|
|
256
|
+
|
|
257
|
+
## 3. Riscos e Mitigações
|
|
258
|
+
|
|
259
|
+
| Risco | Prob. | Impacto | Mitigação | Plano B |
|
|
260
|
+
|-------|-------|---------|-----------|---------|
|
|
261
|
+
| Token vazado | Baixa | Alto | Expiração curta (1h) | Blacklist de tokens |
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Exemplo de Tech Spec Bloqueada (TASK)
|
|
265
|
+
|
|
266
|
+
```markdown
|
|
267
|
+
# Implementar Login
|
|
268
|
+
|
|
269
|
+
## Descrição
|
|
270
|
+
Fazer o login funcionar.
|
|
271
|
+
|
|
272
|
+
## O que fazer
|
|
273
|
+
- Criar tela de login
|
|
274
|
+
- Conectar com backend
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Problemas**:
|
|
278
|
+
- ❌ Sem TASK_MANAGER_KEY
|
|
279
|
+
- ❌ Sem critérios de aceitação
|
|
280
|
+
- ❌ Sem análise técnica
|
|
281
|
+
- ❌ Sem decisões arquiteturais
|
|
282
|
+
- ❌ Sem riscos mapeados
|
|
283
|
+
|
|
284
|
+
**Status**: BLOQUEADO (0%)
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Referências
|
|
289
|
+
|
|
290
|
+
- Template completo: `$IDE/templates/engineering/tech-spec-template.md`
|
|
291
|
+
- Regras de Tech Spec: `$IDE/rules/engineering/eng.tech-spec-rules.md`
|