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,259 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Fluxo de trabalho de Engenharia para criação/iteração de ARD baseado no código do repositório
|
|
3
|
+
recommended_model: claude-sonnet-4-20250514
|
|
4
|
+
model_tier: high
|
|
5
|
+
model_justification: Análise de codebase e extração de arquitetura requer compreensão profunda de código e padrões
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Workflow de Engenharia – ARD a partir do Código (Architecture Requirement Document)
|
|
9
|
+
|
|
10
|
+
## Objetivo
|
|
11
|
+
|
|
12
|
+
Guiar o assistente de Engenharia (ENG) na criação, revisão ou iteração de um ARD,
|
|
13
|
+
priorizando a **arquitetura observada no código do repositório**, usando o template
|
|
14
|
+
`$IDE/templates/engineering/ARD-template.md`, sempre alinhado com:
|
|
15
|
+
|
|
16
|
+
- contexto do projeto definido em `$IDE/ENV.md`
|
|
17
|
+
- regras de engenharia em `$IDE/rules/engineering/eng-rules.md`
|
|
18
|
+
- identidade em `$IDE/agents/engineering/eng.agent.md`
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Passo 0 – Definir se é novo ARD ou iteração
|
|
23
|
+
|
|
24
|
+
0. Se o comando vier com argumentos (atalhos):
|
|
25
|
+
|
|
26
|
+
- `eng.create-ard-from-code new <nome> [--prd <caminho-do-prd>]` → modo **novo ARD**
|
|
27
|
+
- `eng.create-ard-from-code edit <nome-ou-caminho>` → modo **iteração**
|
|
28
|
+
|
|
29
|
+
1. Se os argumentos **não** estiverem claros, pergunte ao usuário:
|
|
30
|
+
- Você quer:
|
|
31
|
+
- ( ) Criar um **novo ARD** a partir do código
|
|
32
|
+
- ( ) **Iterar** um ARD existente a partir do código
|
|
33
|
+
|
|
34
|
+
2. Se for **iterar**:
|
|
35
|
+
|
|
36
|
+
- Se o usuário tiver passado `edit <nome-ou-caminho>`, use isso como entrada inicial.
|
|
37
|
+
- Peça o **caminho do arquivo** do ARD existente (preferencial) ou o **nome** do ARD, se ainda não tiver.
|
|
38
|
+
- Se o usuário passar só o nome, confirme onde ele está (ex.: `$DOCS_FOLDER/engineering/ARD/...`).
|
|
39
|
+
- Leia o ARD atual e pergunte quais seções mudam (ou qual é o objetivo da iteração).
|
|
40
|
+
|
|
41
|
+
3. Se for **novo ARD**:
|
|
42
|
+
|
|
43
|
+
- Se o usuário tiver passado `new <nome> [--prd <caminho-do-prd>]`, use isso como:
|
|
44
|
+
- `Título` (se vier como texto normal)
|
|
45
|
+
- ou `Slug` (se vier em kebab-case)
|
|
46
|
+
- O parâmetro `--prd <caminho-do-prd>` é opcional:
|
|
47
|
+
- Se vier, usar essa rota para ler o PRD no Passo 1.1.
|
|
48
|
+
- Se não vier, perguntar no Passo 1.1 se existe PRD e, se existir, pedir a rota do arquivo.
|
|
49
|
+
- Pergunte o que estiver faltando:
|
|
50
|
+
- `Título`
|
|
51
|
+
- `Slug` para o nome do arquivo (kebab-case)
|
|
52
|
+
- Defina o `ARD-ID` automaticamente assim:
|
|
53
|
+
- Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
|
|
54
|
+
- Defina:
|
|
55
|
+
- `Status`
|
|
56
|
+
- `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Passo 1 – Verificar PRD (obrigatório quando existir)
|
|
61
|
+
|
|
62
|
+
### 1.1 – Buscar PRD no Central Docs (condicional)
|
|
63
|
+
|
|
64
|
+
Se `CENTRAL_DOCS_REPO` definido no ENV.md:
|
|
65
|
+
|
|
66
|
+
1. Executar busca automática no central-docs:
|
|
67
|
+
```bash
|
|
68
|
+
jarvis docs sync --silent
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
2. Buscar PRD relacionado usando:
|
|
72
|
+
- Título/objetivo do ARD
|
|
73
|
+
- Jira ID (se disponível)
|
|
74
|
+
- Tags semânticas
|
|
75
|
+
|
|
76
|
+
3. Se PRD encontrado no central-docs:
|
|
77
|
+
- Carregar automaticamente como contexto
|
|
78
|
+
- Pular para item 2 (extração de requisitos)
|
|
79
|
+
- Informar ao usuário: "✅ PRD encontrado no central-docs: [nome]"
|
|
80
|
+
|
|
81
|
+
4. Se PRD não encontrado:
|
|
82
|
+
- Continuar com pergunta manual (item 1.2)
|
|
83
|
+
|
|
84
|
+
### 1.2 – Verificar PRD manualmente
|
|
85
|
+
|
|
86
|
+
1. Pergunte explicitamente:
|
|
87
|
+
- Existe um PRD para essa iniciativa/feature?
|
|
88
|
+
- ( ) Sim
|
|
89
|
+
- ( ) Não
|
|
90
|
+
|
|
91
|
+
2. Se **Sim**:
|
|
92
|
+
- Peça a **rota do arquivo** do PRD e não avance sem isso.
|
|
93
|
+
- Leia o PRD e extraia (sem inventar):
|
|
94
|
+
- **Requisitos funcionais**
|
|
95
|
+
- **Requisitos não funcionais críticos**
|
|
96
|
+
- **Restrições explícitas**
|
|
97
|
+
- **Volume esperado** (usuários, requisições, dados)
|
|
98
|
+
- **SLAs esperados**
|
|
99
|
+
- **Métricas de sucesso**
|
|
100
|
+
|
|
101
|
+
3. Se **Não**:
|
|
102
|
+
- Deixe explícito quais itens acima estão faltando e peça ao usuário o mínimo necessário antes de fixar decisões arquiteturais.
|
|
103
|
+
|
|
104
|
+
4. Regra de escopo:
|
|
105
|
+
- O ARD **não pode inventar escopo novo** além do que está no PRD (ou do que o usuário confirmar explicitamente).
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Passo 2 – Coletar contexto do repositório (arquitetura observada)
|
|
110
|
+
|
|
111
|
+
Objetivo: montar um retrato fiel do que o código revela hoje.
|
|
112
|
+
|
|
113
|
+
1. Identificar e ler arquivos de topo (se existirem):
|
|
114
|
+
|
|
115
|
+
- `README.md`
|
|
116
|
+
- `ENV.md`
|
|
117
|
+
- `$DOCS_FOLDER/**` (especialmente `$DOCS_FOLDER/engineering/ARD/**` e docs de arquitetura existentes)
|
|
118
|
+
|
|
119
|
+
2. Identificar a stack e artefatos de build:
|
|
120
|
+
|
|
121
|
+
- arquivos de dependências (ex.: `package.json`, `requirements.txt`, `go.mod`, etc.)
|
|
122
|
+
- arquivos de runtime/infra (ex.: `Dockerfile`, `docker-compose.*`, manifests, etc.)
|
|
123
|
+
|
|
124
|
+
3. Mapear estrutura de diretórios (visão macro):
|
|
125
|
+
|
|
126
|
+
- listar diretórios de primeiro nível
|
|
127
|
+
- identificar pastas prováveis de domínio (ex.: `src`, `apps`, `services`, `packages`, `api`, `web`, etc.)
|
|
128
|
+
|
|
129
|
+
4. Identificar entrypoints e “o que roda em produção”:
|
|
130
|
+
|
|
131
|
+
- procurar scripts de start/build/test
|
|
132
|
+
- localizar bootstrap do servidor, consumers, jobs, cron, CLIs internas
|
|
133
|
+
|
|
134
|
+
5. Mapear integrações e dependências externas observáveis:
|
|
135
|
+
|
|
136
|
+
- banco(s), filas/tópicos, storage, terceiros
|
|
137
|
+
- regras explícitas de autenticação/autorização
|
|
138
|
+
|
|
139
|
+
> ⚠️ **Checkpoint obrigatório — Contratos de APIs externas** (aplicação de eng-rules: *"nunca invente endpoints ou integrações"*)
|
|
140
|
+
>
|
|
141
|
+
> Ao identificar integrações com APIs de terceiros no código, siga esta ordem:
|
|
142
|
+
>
|
|
143
|
+
> **1. Buscar contrato no repositório primeiro:**
|
|
144
|
+
> Procure por specs existentes nos seguintes locais:
|
|
145
|
+
> - `docs/engineering/swagger/`
|
|
146
|
+
> - `docs/engineering/openapi/`
|
|
147
|
+
> - `**/*swagger*.{yaml,yml,json}`
|
|
148
|
+
> - `**/*openapi*.{yaml,yml,json}`
|
|
149
|
+
> - `**/*api-spec*.{yaml,yml,json}`
|
|
150
|
+
> - Client SDKs ou arquivos de contrato referenciados no código
|
|
151
|
+
>
|
|
152
|
+
> → Se encontrar: use o contrato disponível. Documente com referência ao arquivo fonte.
|
|
153
|
+
>
|
|
154
|
+
> **2. Se não encontrar no repositório**, pergunte ao usuário:
|
|
155
|
+
> *"Identifiquei uma integração com `{nome}` mas não encontrei o contrato no repositório. Você tem o contrato real? (Sim / Não)"*
|
|
156
|
+
>
|
|
157
|
+
> - **Sim** → Solicite o contrato antes de documentar paths, schemas ou payloads.
|
|
158
|
+
> - **Não** → No ARD, registre apenas: qual integração, qual propósito, quais dados são necessários. Use `[A DEFINIR — contrato pendente com {time/parceiro}]`.
|
|
159
|
+
|
|
160
|
+
6. Mapear contratos observáveis:
|
|
161
|
+
|
|
162
|
+
- rotas/endpoints (se houver)
|
|
163
|
+
- eventos/filas (nomes, exchanges, tópicos)
|
|
164
|
+
- schemas/DTOs
|
|
165
|
+
|
|
166
|
+
7. Extrair evidências e anotar incertezas:
|
|
167
|
+
|
|
168
|
+
- separar o que é “fato observado no código” vs “hipótese”
|
|
169
|
+
- registrar lacunas (ex.: não foi possível identificar entrypoint; faltam docs)
|
|
170
|
+
|
|
171
|
+
> Se o repositório for grande, priorize a visão macro (top-level + entrypoints + configs) antes de ler muitos arquivos.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Passo 3 – Preencher o ARD-template.md com base no código
|
|
176
|
+
|
|
177
|
+
Siga o template `$IDE/templates/engineering/ARD-template.md` **seção a seção**.
|
|
178
|
+
|
|
179
|
+
Regras:
|
|
180
|
+
|
|
181
|
+
1. Onde houver PRD, preencher a tabela de requisitos consumidos e amarrar decisões aos IDs.
|
|
182
|
+
2. Onde não houver PRD, declarar explicitamente lacunas e validar premissas com o usuário.
|
|
183
|
+
3. Em “Desenho da Arquitetura”, preferir um diagrama que reflita o que existe hoje + proposta incremental.
|
|
184
|
+
4. Em “Componentes”, “Fluxos”, “Integrações” e “Contratos”, usar o que foi encontrado no código/config. Para integrações externas cujo contrato não está no repositório, aplicar o placeholder definido no Passo 2 (`[A DEFINIR — contrato pendente com {time/parceiro}]`) — nunca criar paths ou schemas fictícios.
|
|
185
|
+
5. Em “Decisões e Trade-offs”, separar:
|
|
186
|
+
|
|
187
|
+
- arquitetura atual (observada)
|
|
188
|
+
- arquitetura proposta (mudanças)
|
|
189
|
+
- motivação (RF/NFR/Restrição/SLA/Métrica)
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Passo 4 – Impactos, riscos e testes
|
|
194
|
+
|
|
195
|
+
1. Componentes afetados (diretos e indiretos)
|
|
196
|
+
2. Riscos (técnicos, operação, segurança, dados)
|
|
197
|
+
3. Mitigações (rollout/rollback, feature flags, observabilidade)
|
|
198
|
+
4. Estratégia de testes:
|
|
199
|
+
|
|
200
|
+
- unitários
|
|
201
|
+
- integração
|
|
202
|
+
- contrato/e2e quando aplicável
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Passo 5 – Checagem final
|
|
207
|
+
|
|
208
|
+
- Alguma recomendação viola ou encosta nos guard rails de `$IDE/rules/engineering/eng-rules.md`?
|
|
209
|
+
- Há decisões que exigem validação explícita do usuário/Produto?
|
|
210
|
+
- Há suposições não confirmadas?
|
|
211
|
+
|
|
212
|
+
Liste perguntas abertas e pontos que exigem aprovação.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Passo 6 – Entrega
|
|
217
|
+
|
|
218
|
+
Entregar:
|
|
219
|
+
|
|
220
|
+
1. Um **rascunho de ARD preenchido** no formato do template.
|
|
221
|
+
2. Um **resumo executivo**:
|
|
222
|
+
|
|
223
|
+
- problema
|
|
224
|
+
- arquitetura atual (observada)
|
|
225
|
+
- proposta
|
|
226
|
+
- principais riscos
|
|
227
|
+
- próximos passos
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Passo 7 – Publicar no Central Docs (condicional)
|
|
232
|
+
|
|
233
|
+
Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o ARD:
|
|
234
|
+
|
|
235
|
+
1. Perguntar ao usuário:
|
|
236
|
+
```
|
|
237
|
+
Deseja publicar este ARD no repositório central de documentação?
|
|
238
|
+
- ( ) Sim, publicar agora
|
|
239
|
+
- ( ) Não, vou publicar depois manualmente
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
2. Se **Sim**:
|
|
243
|
+
- Extrair o slug do nome do arquivo (ex: `ARD-001-api-wallet-auth.md` → `api-wallet-auth`)
|
|
244
|
+
- Executar:
|
|
245
|
+
```bash
|
|
246
|
+
jarvis docs publish \
|
|
247
|
+
--file {caminho_do_ard} \
|
|
248
|
+
--tipo ard \
|
|
249
|
+
--feature {slug}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
3. Informar resultado:
|
|
253
|
+
- ✅ Sucesso: "ARD publicado no central-docs. MR criado: [URL]"
|
|
254
|
+
- ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
|
|
255
|
+
|
|
256
|
+
4. Se **Não**:
|
|
257
|
+
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard --feature {slug}`"
|
|
258
|
+
|
|
259
|
+
> **Nota**: A publicação cria um Merge Request no GitLab. O ARD só será visível no central-docs após aprovação e merge do MR.
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Fluxo de trabalho de Engenharia para criação/iteração de ARD
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
env_file: "@/ENV.md"
|
|
6
|
+
recommended_model: claude-sonnet-4-20250514
|
|
7
|
+
model_tier: high
|
|
8
|
+
model_justification: Documentação arquitetural requer análise de requisitos, trade-offs técnicos e decisões bem fundamentadas
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Workflow de Engenharia – ARD (Architecture Requirements Document)
|
|
12
|
+
|
|
13
|
+
## Objetivo
|
|
14
|
+
|
|
15
|
+
Guiar o assistente de Engenharia (ENG) na criação, revisão ou iteração de um ARD,
|
|
16
|
+
usando o template `$IDE/templates/engineering/ARD-template.md`, sempre alinhado com:
|
|
17
|
+
|
|
18
|
+
- contexto do projeto definido em `$IDE/ENV.md`
|
|
19
|
+
- regras de engenharia em `$IDE/rules/engineering/eng-rules.md`
|
|
20
|
+
- regras de versionamento em `$IDE/rules/engineering/eng.bump-rules.md`
|
|
21
|
+
- identidade em `$IDE/agents/engineering/eng.agent.md`
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Passo 0 – Definir se é novo ARD ou iteração
|
|
26
|
+
|
|
27
|
+
0. Se o comando vier com argumentos (atalhos):
|
|
28
|
+
|
|
29
|
+
- `eng.create-ard new <nome> [--prd <caminho-do-prd>]` → modo **novo ARD**
|
|
30
|
+
- `eng.create-ard edit <nome-ou-caminho>` → modo **iteração**
|
|
31
|
+
|
|
32
|
+
1. Se os argumentos **não** estiverem claros, pergunte ao usuário:
|
|
33
|
+
- Você quer:
|
|
34
|
+
- ( ) Criar um **novo ARD**
|
|
35
|
+
- ( ) **Iterar** um ARD existente
|
|
36
|
+
|
|
37
|
+
2. Se for **iterar**:
|
|
38
|
+
|
|
39
|
+
- Se o usuário tiver passado `edit <nome-ou-caminho>`, use isso como entrada inicial.
|
|
40
|
+
- Peça o **caminho do arquivo** do ARD existente (preferencial) ou o **nome** do ARD, se ainda não tiver.
|
|
41
|
+
- Se o usuário passar só o nome, confirme onde ele está (ex.: `$DOCS_FOLDER/engineering/ARD/...`).
|
|
42
|
+
- Leia o ARD atual e pergunte quais seções mudam (ou qual é o objetivo da iteração).
|
|
43
|
+
|
|
44
|
+
3. Se for **novo ARD**:
|
|
45
|
+
|
|
46
|
+
- Se o usuário tiver passado `new <nome> [--prd <caminho-do-prd>]`, use isso como:
|
|
47
|
+
- `Título` (se vier como texto normal)
|
|
48
|
+
- ou `Slug` (se vier em kebab-case)
|
|
49
|
+
- O parâmetro `--prd <caminho-do-prd>` é opcional:
|
|
50
|
+
- Se vier, usar essa rota para ler o PRD no Passo 1.1.
|
|
51
|
+
- Se não vier, perguntar no Passo 1.1 se existe PRD e, se existir, pedir a rota do arquivo.
|
|
52
|
+
- Pergunte o que estiver faltando:
|
|
53
|
+
- `Título`
|
|
54
|
+
- `Slug` para o nome do arquivo (kebab-case)
|
|
55
|
+
- Defina o `ARD-ID` automaticamente assim:
|
|
56
|
+
- Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
|
|
57
|
+
- Defina o `ARD-ID` automaticamente assim:
|
|
58
|
+
- Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
|
|
59
|
+
- `Status`
|
|
60
|
+
- `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Passo 0.5 – Versionamento do ARD (obrigatório)
|
|
65
|
+
|
|
66
|
+
Aplicar **SemVer (x.y.z)** no campo `Versão` do ARD, seguindo obrigatoriamente:
|
|
67
|
+
|
|
68
|
+
- `$IDE/rules/engineering/eng.bump-rules.md`
|
|
69
|
+
|
|
70
|
+
Regras:
|
|
71
|
+
|
|
72
|
+
1. **Novo ARD**:
|
|
73
|
+
|
|
74
|
+
- Definir `Versão: 1.0.0`.
|
|
75
|
+
|
|
76
|
+
2. **Iteração de ARD existente**:
|
|
77
|
+
|
|
78
|
+
- Ler a `Versão` atual do ARD.
|
|
79
|
+
- Perguntar ao usuário (de forma objetiva) qual foi o tipo de mudança na iteração:
|
|
80
|
+
- ( ) **Major**: mudanças incompatíveis/decisão arquitetural que invalida premissas/contratos anteriores.
|
|
81
|
+
- ( ) **Minor**: novas capacidades/expansões retrocompatíveis no desenho.
|
|
82
|
+
- ( ) **Patch**: correções, clarificações, ajustes pequenos e/ou atualização de documentação.
|
|
83
|
+
- Atualizar o campo `Versão` incrementando apenas o componente adequado.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Passo 1 – Confirmar contexto e fonte da demanda
|
|
88
|
+
|
|
89
|
+
1. Pergunte ao usuário:
|
|
90
|
+
- De onde vem essa necessidade?
|
|
91
|
+
- ( ) PRD / especificação de produto
|
|
92
|
+
- ( ) Demanda puramente técnica (refactor, débitos, plataforma)
|
|
93
|
+
- ( ) Incidente / problema em produção
|
|
94
|
+
- Qual é o objetivo principal desse ARD?
|
|
95
|
+
- Há algum prazo / restrição crítica (ex.: janela de deploy, dependência com outra squad)?
|
|
96
|
+
|
|
97
|
+
2. Reflita de forma explícita:
|
|
98
|
+
- Que problema esse ARD precisa resolver?
|
|
99
|
+
- Quais são os **limites de escopo** (o que entra / o que não entra)?
|
|
100
|
+
|
|
101
|
+
3. Confirme os metadados definidos no Passo 0:
|
|
102
|
+
- `ARD-ID`
|
|
103
|
+
- `Título`
|
|
104
|
+
- `Status`
|
|
105
|
+
- `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Passo 1.1 – Verificar PRD (obrigatório)
|
|
110
|
+
|
|
111
|
+
### 1.1.1 – Buscar PRD no Central Docs (condicional)
|
|
112
|
+
|
|
113
|
+
Se `CENTRAL_DOCS_REPO` definido no ENV.md:
|
|
114
|
+
|
|
115
|
+
1. Executar busca automática no central-docs:
|
|
116
|
+
```bash
|
|
117
|
+
jarvis docs sync --silent
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
2. Buscar PRD relacionado usando:
|
|
121
|
+
- Título/objetivo do ARD
|
|
122
|
+
- Jira ID (se disponível)
|
|
123
|
+
- Tags semânticas
|
|
124
|
+
|
|
125
|
+
3. Se PRD encontrado no central-docs:
|
|
126
|
+
- Carregar automaticamente como contexto
|
|
127
|
+
- Pular para item 2 (extração de requisitos)
|
|
128
|
+
- Informar ao usuário: "✅ PRD encontrado no central-docs: [nome]"
|
|
129
|
+
|
|
130
|
+
4. Se PRD não encontrado:
|
|
131
|
+
- Continuar com pergunta manual (item 1.1.2)
|
|
132
|
+
|
|
133
|
+
### 1.1.2 – Verificar PRD manualmente
|
|
134
|
+
|
|
135
|
+
1. Pergunte explicitamente:
|
|
136
|
+
- Existe um PRD para essa iniciativa/feature?
|
|
137
|
+
- ( ) Sim
|
|
138
|
+
- ( ) Não
|
|
139
|
+
|
|
140
|
+
2. Se **Sim**:
|
|
141
|
+
- Peça a **rota do arquivo** do PRD e não avance sem isso.
|
|
142
|
+
- Leia o PRD e extraia (sem inventar):
|
|
143
|
+
- **Requisitos funcionais**
|
|
144
|
+
- **Requisitos não funcionais críticos**
|
|
145
|
+
- **Restrições explícitas**
|
|
146
|
+
- **Volume esperado** (usuários, requisições, dados)
|
|
147
|
+
- **SLAs esperados**
|
|
148
|
+
- **Métricas de sucesso** (para orientar decisões técnicas)
|
|
149
|
+
|
|
150
|
+
- Regra adicional (modo `new`):
|
|
151
|
+
- Se o comando veio com `--prd <caminho-do-prd>`, usar essa rota como fonte e iniciar a leitura imediatamente.
|
|
152
|
+
|
|
153
|
+
- Regra de rastreabilidade:
|
|
154
|
+
- Toda **decisão técnica** no ARD deve citar explicitamente pelo menos um item acima (ex.: `RF-03`, `NFR-02`, `SLA-01`, etc.).
|
|
155
|
+
- Se não houver referência no PRD, trate como **lacuna do PRD** e peça validação explícita antes de registrar como decisão.
|
|
156
|
+
|
|
157
|
+
3. Se **Não**:
|
|
158
|
+
- Deixe explícito quais itens acima estão faltando e peça ao usuário o mínimo necessário antes de fixar decisões arquiteturais.
|
|
159
|
+
|
|
160
|
+
4. Regra de escopo:
|
|
161
|
+
- O ARD **não pode inventar escopo novo** além do que está no PRD (ou do que o usuário confirmar explicitamente).
|
|
162
|
+
- Se surgir qualquer necessidade fora do PRD, registre como **proposta** e peça validação do usuário antes de incorporar.
|
|
163
|
+
|
|
164
|
+
5. O que **não** é papel do ARD:
|
|
165
|
+
- Redefinir objetivo de produto.
|
|
166
|
+
- Mudar regra de negócio.
|
|
167
|
+
- Criar feature nova “porque tecnicamente é melhor”.
|
|
168
|
+
- Discutir roadmap ou priorização.
|
|
169
|
+
|
|
170
|
+
Se isso acontecer durante a elaboração do ARD, trate como **sinal de PRD mal definido ou incompleto** e peça ao usuário para:
|
|
171
|
+
- atualizar/fornecer um PRD mais claro, ou
|
|
172
|
+
- validar explicitamente a mudança de escopo antes de qualquer decisão arquitetural.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Passo 2 – Ler insumos relevantes
|
|
177
|
+
|
|
178
|
+
1. Se existir PRD ou documento de produto:
|
|
179
|
+
- Peça o conteúdo ou o arquivo.
|
|
180
|
+
- Resuma em poucas linhas:
|
|
181
|
+
- problema
|
|
182
|
+
- usuários impactados
|
|
183
|
+
- objetivos de negócio
|
|
184
|
+
- métricas de sucesso (se existirem)
|
|
185
|
+
|
|
186
|
+
2. Consulte quando necessário:
|
|
187
|
+
- $IDE/ENV.md → stack, ferramentas, restrições.
|
|
188
|
+
- Código / pastas mencionadas pelo usuário.
|
|
189
|
+
- Outros ARDs relacionados (se forem fornecidos).
|
|
190
|
+
- Incidente/alerta relacionado (se aplicável) e evidências: logs, métricas, traces.
|
|
191
|
+
- Requisitos não-funcionais explícitos (SLO/SLA, latência, throughput, custo).
|
|
192
|
+
- Restrições operacionais: rollout/rollback, janelas, dependências.
|
|
193
|
+
|
|
194
|
+
> Se o contexto estiver incompleto, **pare e peça esclarecimentos** antes de propor solução.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Passo 2.5 – Avaliar Complexidade (obrigatório)
|
|
199
|
+
|
|
200
|
+
Antes de propor qualquer decisão arquitetural, classifique a demanda com critérios objetivos. Isso define o nível de complexidade **permitido** na proposta.
|
|
201
|
+
|
|
202
|
+
| Critério | Simples | Moderada | Complexa |
|
|
203
|
+
|---|---|---|---|
|
|
204
|
+
| **Volume esperado** | < 100 req/min | 100–10k req/min | > 10k req/min |
|
|
205
|
+
| **Serviços impactados** | 1 serviço | 2–3 serviços | 4+ serviços / multi-squad |
|
|
206
|
+
| **Necessidade de async** | Não | Opcional | Obrigatório |
|
|
207
|
+
| **Estado distribuído** | Não | Possível | Sim (cache, fila, saga) |
|
|
208
|
+
| **Rollback de dados** | Trivial | Migration simples | Migration complexa / multi-step |
|
|
209
|
+
| **SLA exigido** | Sem SLA formal | p95 < 1s | p95 < 200ms ou alta disponibilidade |
|
|
210
|
+
|
|
211
|
+
**Declare o resultado antes de avançar para o Passo 3:**
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
Complexidade classificada: {Simples / Moderada / Complexa}
|
|
215
|
+
|
|
216
|
+
Critérios determinantes:
|
|
217
|
+
- {Critério}: {valor observado / informado pelo PRD ou usuário}
|
|
218
|
+
|
|
219
|
+
Implicação:
|
|
220
|
+
- Simples → solução direta; sem filas, sem cache distribuído, sem eventos
|
|
221
|
+
- Moderada → async permitido se volume ou SLA justificar; documentar justificativa
|
|
222
|
+
- Complexa → arquitetura robusta autorizada; cada componente adicional deve ter justificativa explícita
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
> ⚠️ **Regra de proporcionalidade**: Só introduza complexidade (filas, eventos, cache distribuído, saga) se a classificação for **Moderada** ou **Complexa** E houver justificativa técnica documentada. Complexidade não justificada é overengineering — simplifique a proposta.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Passo 3 – Preencher o ARD-template.md
|
|
230
|
+
|
|
231
|
+
Siga o template `$IDE/templates/engineering/ARD-template.md` **seção a seção**.
|
|
232
|
+
Para cada seção do template:
|
|
233
|
+
|
|
234
|
+
1. Reescreva o conteúdo em linguagem clara, estruturada.
|
|
235
|
+
2. Indique quando algo é:
|
|
236
|
+
- fato conhecido
|
|
237
|
+
- hipótese
|
|
238
|
+
- risco
|
|
239
|
+
- ponto que depende de decisão de negócio
|
|
240
|
+
|
|
241
|
+
Sempre que possível, destaque:
|
|
242
|
+
|
|
243
|
+
- **Componentes afetados (diretos e indiretos)**
|
|
244
|
+
- **Integrações externas / dependências**
|
|
245
|
+
- **Impactos em dados, segurança, performance e observabilidade**
|
|
246
|
+
|
|
247
|
+
> 📌 **Regra obrigatória**: Em "Decisões e Trade-offs", a opção **mais simples** deve ser sempre uma das alternativas consideradas. Se não for escolhida, o descarte deve ter justificativa técnica explícita vinculada à classificação de complexidade do Passo 2.5. Nunca proponha componentes de complexidade superior ao que a classificação autoriza sem justificativa documentada.
|
|
248
|
+
|
|
249
|
+
> ⚠️ **Checkpoint obrigatório — Contratos de APIs externas** (aplicação de eng-rules: *"nunca invente endpoints ou integrações"*)
|
|
250
|
+
>
|
|
251
|
+
> Para cada integração com API de terceiro ou serviço externo identificada, siga esta ordem:
|
|
252
|
+
>
|
|
253
|
+
> **1. Buscar contrato no repositório primeiro:**
|
|
254
|
+
> Procure por specs existentes nos seguintes locais:
|
|
255
|
+
> - `docs/engineering/swagger/`
|
|
256
|
+
> - `docs/engineering/openapi/`
|
|
257
|
+
> - `**/*swagger*.{yaml,yml,json}`
|
|
258
|
+
> - `**/*openapi*.{yaml,yml,json}`
|
|
259
|
+
> - `**/*api-spec*.{yaml,yml,json}`
|
|
260
|
+
>
|
|
261
|
+
> → Se encontrar: use o contrato disponível no repositório. Documente com referência ao arquivo fonte.
|
|
262
|
+
>
|
|
263
|
+
> **2. Se não encontrar no repositório**, pergunte ao usuário:
|
|
264
|
+
> *"Não encontrei o contrato da `{nome da integração}` no repositório. Você tem o contrato real? (Sim / Não)"*
|
|
265
|
+
>
|
|
266
|
+
> - **Sim** → Solicite o arquivo, link ou conteúdo. Documente apenas o que estiver no contrato fornecido.
|
|
267
|
+
> - **Não** → Registre apenas: qual integração, qual propósito, quais dados são necessários. Use `[A DEFINIR — contrato pendente com {time/parceiro}]`. Nunca crie paths, schemas ou payloads fictícios.
|
|
268
|
+
|
|
269
|
+
Garanta que o ARD cubra explicitamente:
|
|
270
|
+
|
|
271
|
+
- **Arquitetura proposta**
|
|
272
|
+
- **Componentes e responsabilidades**
|
|
273
|
+
- **Fluxos de dados**
|
|
274
|
+
- **Integrações**
|
|
275
|
+
- **Contratos (APIs, eventos, filas)**
|
|
276
|
+
- **Decisões técnicas e trade-offs**
|
|
277
|
+
- **Riscos técnicos**
|
|
278
|
+
- **Impactos em escala, segurança e observabilidade**
|
|
279
|
+
- A pergunta: **“Como vamos construir isso de forma segura, escalável e sustentável?”**
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Passo 4 – Análise de impacto e riscos
|
|
284
|
+
|
|
285
|
+
Inclua no ARD, de forma explícita:
|
|
286
|
+
|
|
287
|
+
1. **Escopo**
|
|
288
|
+
- O que muda.
|
|
289
|
+
- O que explicitamente **não** muda.
|
|
290
|
+
|
|
291
|
+
2. **Componentes afetados**
|
|
292
|
+
- Serviços, módulos, bancos, filas, jobs, APIs, etc.
|
|
293
|
+
|
|
294
|
+
3. **Riscos**
|
|
295
|
+
- Técnicos (complexidade, pontos frágeis, tecnologias novas).
|
|
296
|
+
- De negócio (impacto se falhar, regressões possíveis).
|
|
297
|
+
- De operação (deploy complexo, rollback difícil, dependência de terceiros).
|
|
298
|
+
|
|
299
|
+
4. **Mitigações**
|
|
300
|
+
- Estratégias de rollout/rollback.
|
|
301
|
+
- Feature flags, dark launch, testes adicionais.
|
|
302
|
+
- Observabilidade necessária (logs, métricas, alertas).
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Passo 5 – Estratégia de testes e validação
|
|
307
|
+
|
|
308
|
+
No ARD, sempre inclua:
|
|
309
|
+
|
|
310
|
+
- Tipos de teste necessários:
|
|
311
|
+
- unitários
|
|
312
|
+
- integração
|
|
313
|
+
- contrato / e2e (se fizer sentido)
|
|
314
|
+
- Cenários mínimos que devem ser cobertos (happy path + edge cases críticos).
|
|
315
|
+
- Como validar em ambiente não-produtivo antes do rollout.
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Passo 6 – Checagem final com guard rails
|
|
320
|
+
|
|
321
|
+
Antes de finalizar o ARD, faça uma checagem explícita:
|
|
322
|
+
|
|
323
|
+
- Alguma recomendação viola ou encosta nos guard rails de `$IDE/rules/engineering/eng-rules.md`?
|
|
324
|
+
- Há alguma suposição técnica não confirmada?
|
|
325
|
+
- Há decisões que exigem validação de Produto / outra squad?
|
|
326
|
+
|
|
327
|
+
Liste **perguntas abertas** e **pontos que exigem aprovação**.
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Passo 7 – Entrega para o usuário
|
|
332
|
+
|
|
333
|
+
Finalize entregando:
|
|
334
|
+
|
|
335
|
+
1. Um **rascunho de ARD preenchido** no formato do `$IDE/templates/engineering/ARD-template.md`.
|
|
336
|
+
2. Um **resumo executivo** em poucas linhas:
|
|
337
|
+
- problema
|
|
338
|
+
- solução proposta
|
|
339
|
+
- principais riscos
|
|
340
|
+
- próximos passos sugeridos
|
|
341
|
+
3. Próximos passos operacionais sugeridos:
|
|
342
|
+
- lista de tasks/spikes/PoCs (se aplicável)
|
|
343
|
+
- quem precisa revisar/aprovar
|
|
344
|
+
- riscos que precisam de decisão explícita antes de implementar
|
|
345
|
+
|
|
346
|
+
Peça explicitamente para o usuário:
|
|
347
|
+
|
|
348
|
+
- revisar o ARD
|
|
349
|
+
- confirmar ou ajustar decisões críticas
|
|
350
|
+
- priorizar próximos passos (ex.: quebrar em tasks, spikes, PoCs).
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Passo 8 – Publicar no Central Docs (condicional)
|
|
355
|
+
|
|
356
|
+
Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o ARD:
|
|
357
|
+
|
|
358
|
+
1. Perguntar ao usuário:
|
|
359
|
+
```
|
|
360
|
+
Deseja publicar este ARD no repositório central de documentação?
|
|
361
|
+
- ( ) Sim, publicar agora
|
|
362
|
+
- ( ) Não, vou publicar depois manualmente
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
2. Se **Sim**:
|
|
366
|
+
- Extrair o slug do nome do arquivo (ex: `ARD-001-api-wallet-auth.md` → `api-wallet-auth`)
|
|
367
|
+
- Executar:
|
|
368
|
+
```bash
|
|
369
|
+
jarvis docs publish \
|
|
370
|
+
--file {caminho_do_ard} \
|
|
371
|
+
--tipo ard \
|
|
372
|
+
--feature {slug}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
3. Informar resultado:
|
|
376
|
+
- ✅ Sucesso: "ARD publicado no central-docs. MR criado: [URL]"
|
|
377
|
+
- ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
|
|
378
|
+
|
|
379
|
+
4. Se **Não**:
|
|
380
|
+
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard --feature {slug}`"
|
|
381
|
+
|
|
382
|
+
> **Nota**: A publicação cria um Merge Request no GitLab. O ARD só será visível no central-docs após aprovação e merge do MR.
|