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.
Files changed (240) hide show
  1. package/AGENTS.md +416 -0
  2. package/LICENSE +21 -0
  3. package/README.md +190 -0
  4. package/agents/AGENTS.md +234 -0
  5. package/agents/README.md +309 -0
  6. package/agents/engineering/data/eng.data-engineer.agent.md +309 -0
  7. package/agents/engineering/eng.agent.md +303 -0
  8. package/agents/engineering/eng.bug-hunter.md +386 -0
  9. package/agents/engineering/eng.cybersecurity.agent.md +503 -0
  10. package/agents/engineering/eng.dev-code-reviewer.md +148 -0
  11. package/agents/engineering/eng.docs-writer.md +152 -0
  12. package/agents/engineering/eng.frontend.agent.md +117 -0
  13. package/agents/engineering/eng.rpa.agent.md +215 -0
  14. package/agents/engineering/eng.tech-analyst.agent.md +102 -0
  15. package/agents/engineering/eng.ux-designer.agent.md +193 -0
  16. package/agents/engineering/qa/eng.qa.cypress-specialist.md +109 -0
  17. package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +85 -0
  18. package/agents/engineering/qa/eng.qa.quality-strategist.md +111 -0
  19. package/agents/engineering/qa/eng.qa.test-architect.md +400 -0
  20. package/agents/engineering/qa/eng.qa.test-planner.md +477 -0
  21. package/agents/engineering/qa/eng.qa.testing-engineer.md +339 -0
  22. package/agents/product/prod.pm-checker.md +52 -0
  23. package/bin/commands/docs-publish.js +184 -0
  24. package/bin/commands/docs-sync.js +139 -0
  25. package/bin/commands/info.js +87 -0
  26. package/bin/commands/init.js +237 -0
  27. package/bin/commands/install-rtk.js +90 -0
  28. package/bin/commands/list.js +48 -0
  29. package/bin/commands/qa-signoff.js +112 -0
  30. package/bin/commands/whoami.js +43 -0
  31. package/bin/jarvis.js +159 -0
  32. package/bin/lib/auth/session.js +56 -0
  33. package/bin/lib/config/constants.js +123 -0
  34. package/bin/lib/config/ide-config.js +233 -0
  35. package/bin/lib/core/scanner.js +124 -0
  36. package/bin/lib/core/sync-engine.js +551 -0
  37. package/bin/lib/docs/fetch-file.sh +41 -0
  38. package/bin/lib/docs/publish-file.sh +284 -0
  39. package/bin/lib/docs/validate-frontmatter.js +157 -0
  40. package/bin/lib/env-loader.js +198 -0
  41. package/bin/lib/tasks/comment.js +131 -0
  42. package/bin/lib/utils/git-parser.js +145 -0
  43. package/bin/lib/utils/logger.js +104 -0
  44. package/bin/lib/utils/npmrc-parser.js +106 -0
  45. package/bin/lib/utils/paths.js +55 -0
  46. package/bin/lib/utils/ui.js +59 -0
  47. package/bin/lib/vcs/api.js +312 -0
  48. package/bin/lib/vcs/create-issue.js +43 -0
  49. package/bin/lib/vcs/create-merge.js +43 -0
  50. package/bin/lib/vcs/fetch-raw.js +30 -0
  51. package/bin/postinstall.js +41 -0
  52. package/members.md +25 -0
  53. package/package.json +55 -0
  54. package/rules/AGENTS.md +205 -0
  55. package/rules/engineering/data/data-rules.md +200 -0
  56. package/rules/engineering/eng-rules.md +243 -0
  57. package/rules/engineering/eng-security-rules.md +186 -0
  58. package/rules/engineering/eng.breakdown-subtasks-rules.md +585 -0
  59. package/rules/engineering/eng.bump-rules.md +27 -0
  60. package/rules/engineering/eng.docs-scraping-rules.md +64 -0
  61. package/rules/engineering/eng.downstream-flow-rules.md +297 -0
  62. package/rules/engineering/eng.integrations-rules.md +73 -0
  63. package/rules/engineering/eng.plan-rules.md +333 -0
  64. package/rules/engineering/eng.pr-rules.md +359 -0
  65. package/rules/engineering/eng.pre-pr-rules.md +103 -0
  66. package/rules/engineering/eng.start-rules.md +246 -0
  67. package/rules/engineering/eng.tech-spec-rules.md +968 -0
  68. package/rules/engineering/eng.work-rules.md +312 -0
  69. package/rules/engineering/frontend/eng.frontend-rules.md +147 -0
  70. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +259 -0
  71. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +137 -0
  72. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +181 -0
  73. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +120 -0
  74. package/rules/engineering/rpa/eng.rpa-rules.md +230 -0
  75. package/rules/product/README.md +24 -0
  76. package/rules/product/prod-rules.md +151 -0
  77. package/rules/rtk-rules.md +68 -0
  78. package/skills/AGENTS.md +290 -0
  79. package/skills/SKILLS-ROADMAP.md +333 -0
  80. package/skills/churn-audit/SKILL.md +385 -0
  81. package/skills/context-detect/SKILL.md +399 -0
  82. package/skills/context-detect/assets/context-profile-template.md +127 -0
  83. package/skills/docs-central/README.md +310 -0
  84. package/skills/docs-central/SKILL.md +423 -0
  85. package/skills/docs-index/SKILL.md +377 -0
  86. package/skills/eng-ai-engineer/SKILL.md +296 -0
  87. package/skills/eng-arch-c4/SKILL.md +358 -0
  88. package/skills/eng-arch-c4/assets/example-code.md +189 -0
  89. package/skills/eng-arch-c4/assets/example-component.md +105 -0
  90. package/skills/eng-arch-c4/assets/example-container.md +104 -0
  91. package/skills/eng-arch-c4/assets/example-context.md +81 -0
  92. package/skills/eng-backend/SKILL.md +776 -0
  93. package/skills/eng-browser-extension-builder/SKILL.md +385 -0
  94. package/skills/eng-cybersecurity/SKILL.md +645 -0
  95. package/skills/eng-data-bi/SKILL.md +199 -0
  96. package/skills/eng-data-debug/SKILL.md +307 -0
  97. package/skills/eng-data-engineer/SKILL.md +256 -0
  98. package/skills/eng-data-onboard/SKILL.md +310 -0
  99. package/skills/eng-data-orchestrator/SKILL.md +426 -0
  100. package/skills/eng-design-system/SKILL.md +619 -0
  101. package/skills/eng-docs-write/SKILL.md +312 -0
  102. package/skills/eng-frontend/SKILL.md +913 -0
  103. package/skills/eng-jira-comment/SKILL.md +17 -0
  104. package/skills/eng-microfrontend/SKILL.md +602 -0
  105. package/skills/eng-ms-trace/SKILL.md +469 -0
  106. package/skills/eng-nestjs/SKILL.md +791 -0
  107. package/skills/eng-performance-engineer/SKILL.md +312 -0
  108. package/skills/eng-pr/SKILL.md +339 -0
  109. package/skills/eng-qa-a11y-audit/SKILL.md +269 -0
  110. package/skills/eng-qa-bug-report/SKILL.md +1088 -0
  111. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +138 -0
  112. package/skills/eng-qa-cypress-e2e/SKILL.md +177 -0
  113. package/skills/eng-qa-dev-guide/SKILL.md +164 -0
  114. package/skills/eng-qa-e2e/SKILL.md +400 -0
  115. package/skills/eng-qa-e2e-spec-writer/SKILL.md +322 -0
  116. package/skills/eng-qa-exploratory/SKILL.md +188 -0
  117. package/skills/eng-qa-gate/SKILL.md +370 -0
  118. package/skills/eng-qa-gate/assets/checklist-validacao.md +291 -0
  119. package/skills/eng-qa-graphql-contract/SKILL.md +256 -0
  120. package/skills/eng-qa-quality-report/SKILL.md +412 -0
  121. package/skills/eng-qa-test-plan/SKILL.md +466 -0
  122. package/skills/eng-qa-test-plan/assets/test-coverage-template.md +92 -0
  123. package/skills/eng-qa-test-plan/assets/test-patterns.md +178 -0
  124. package/skills/eng-qa-testsprite/SKILL.md +325 -0
  125. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +224 -0
  126. package/skills/eng-qa-unit-test/SKILL.md +471 -0
  127. package/skills/eng-rabbitmq/SKILL.md +661 -0
  128. package/skills/eng-scraper/SKILL.md +683 -0
  129. package/skills/eng-scraper-robot-builder/SKILL.md +370 -0
  130. package/skills/eng-security-patch/SKILL.md +378 -0
  131. package/skills/eng-security-triage/SKILL.md +266 -0
  132. package/skills/eng-task-comment/SKILL.md +60 -0
  133. package/skills/eng-tech-analyst/SKILL.md +529 -0
  134. package/skills/eng-threat-model/SKILL.md +161 -0
  135. package/skills/init-jarvis/SKILL.md +1304 -0
  136. package/skills/init-jarvis/assets/mcp-configs.md +389 -0
  137. package/skills/init-jarvis/assets/onboarding-checklist.md +104 -0
  138. package/skills/init-jarvis/assets/setup-guide.md +360 -0
  139. package/skills/lovable-prompt-generator/SKILL.md +304 -0
  140. package/skills/prod-roadmap-report/README.md +303 -0
  141. package/skills/prod-roadmap-report/SKILL.md +198 -0
  142. package/skills/prod-roadmap-report/commands/status.compiled.single.team.md +23 -0
  143. package/skills/prod-roadmap-report/commands/status.list.projects.md +17 -0
  144. package/skills/prod-roadmap-report/commands/status.memory.md +192 -0
  145. package/skills/prod-roadmap-report/commands/status.roadmap.preview.md +94 -0
  146. package/skills/prod-roadmap-report/references/detailed-guide.md +236 -0
  147. package/skills/prod-roadmap-report/rules/detailed-guide.md +237 -0
  148. package/skills/prod-roadmap-report/rules/status-report-rules.md +44 -0
  149. package/skills/prod-roadmap-report/templates/template-multiple-teams-compiled-status.md +53 -0
  150. package/skills/prod-roadmap-report/templates/template-projects-list.md +23 -0
  151. package/skills/prod-roadmap-report/templates/template-single-team-compiled-status.md +60 -0
  152. package/skills/prod-roadmap-report/templates/template-single-team-status.md +49 -0
  153. package/skills/prod-specs/SKILL.md +108 -0
  154. package/skills/prod-specs/references/prod.spec.clarify.md +176 -0
  155. package/skills/prod-specs/references/prod.spec.epic.md +107 -0
  156. package/skills/prod-specs/references/prod.spec.frd.md +135 -0
  157. package/skills/prod-specs/references/prod.spec.issue.md +145 -0
  158. package/skills/prod-specs/references/prod.spec.prd.md +118 -0
  159. package/skills/prod-specs/rules/prod-spec-rules.md +186 -0
  160. package/skills/prod-specs/templates/prod-breakdown-template.md +136 -0
  161. package/skills/prod-specs/templates/prod-epic-template.md +76 -0
  162. package/skills/prod-specs/templates/prod-frd-template.md +172 -0
  163. package/skills/prod-specs/templates/prod-issue-template.md +68 -0
  164. package/skills/prod-specs/templates/prod-prd-full-template.md +159 -0
  165. package/skills/prod-specs/templates/prod-prd-template.md +173 -0
  166. package/skills/prod-specs-update/SKILL.md +272 -0
  167. package/skills/report-issue/SKILL.md +156 -0
  168. package/taxonomy.md +270 -0
  169. package/templates/AGENTS.md +189 -0
  170. package/templates/CDD aplicado a Prompts.md +182 -0
  171. package/templates/ENV-template.md +187 -0
  172. package/templates/engineering/AGENTS-template.md +71 -0
  173. package/templates/engineering/ARD-template.md +193 -0
  174. package/templates/engineering/CONTACTS-template.md +135 -0
  175. package/templates/engineering/PR-template.md +40 -0
  176. package/templates/engineering/RFC-Playbook.md +325 -0
  177. package/templates/engineering/RFC-template.md +199 -0
  178. package/templates/engineering/architecture-template.md +277 -0
  179. package/templates/engineering/breakdown-subtasks-template.md +582 -0
  180. package/templates/engineering/c4-model-template.md +516 -0
  181. package/templates/engineering/data-contract-template.md +135 -0
  182. package/templates/engineering/data-pipeline-template.md +163 -0
  183. package/templates/engineering/plan-template.md +255 -0
  184. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +311 -0
  185. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +249 -0
  186. package/templates/engineering/qa/qa.cypress-test-template.md +172 -0
  187. package/templates/engineering/qa/qa.exploratory-session-template.md +148 -0
  188. package/templates/engineering/qa/qa.quality-report-template.md +130 -0
  189. package/templates/engineering/qa/qa.release-signoff-template.md +54 -0
  190. package/templates/engineering/qa/qa.sprint-plan-template.md +49 -0
  191. package/templates/engineering/swagger-template.md +145 -0
  192. package/templates/engineering/tech-spec-template.md +497 -0
  193. package/templates/engineering/work-progress-template.md +155 -0
  194. package/workflows/AGENTS.md +240 -0
  195. package/workflows/README.md +160 -0
  196. package/workflows/all-tools.md +11 -0
  197. package/workflows/engineering/data/data.contract.md +202 -0
  198. package/workflows/engineering/data/data.new-pipeline.md +234 -0
  199. package/workflows/engineering/eng.breakdown-subtasks.md +420 -0
  200. package/workflows/engineering/eng.bug-audit.md +591 -0
  201. package/workflows/engineering/eng.build-tech-spec.md +1116 -0
  202. package/workflows/engineering/eng.create-ard-from-code.md +259 -0
  203. package/workflows/engineering/eng.create-ard.md +382 -0
  204. package/workflows/engineering/eng.create-rfc.md +245 -0
  205. package/workflows/engineering/eng.debug.md +479 -0
  206. package/workflows/engineering/eng.docs.md +40 -0
  207. package/workflows/engineering/eng.light-arch.md +84 -0
  208. package/workflows/engineering/eng.plan.md +213 -0
  209. package/workflows/engineering/eng.pr.md +466 -0
  210. package/workflows/engineering/eng.pre-pr.md +167 -0
  211. package/workflows/engineering/eng.review.md +185 -0
  212. package/workflows/engineering/eng.rpa.robot.md +342 -0
  213. package/workflows/engineering/eng.security-audit.md +312 -0
  214. package/workflows/engineering/eng.security-incident.md +275 -0
  215. package/workflows/engineering/eng.security-pipeline.md +210 -0
  216. package/workflows/engineering/eng.security-review.md +235 -0
  217. package/workflows/engineering/eng.start.md +494 -0
  218. package/workflows/engineering/eng.work.md +558 -0
  219. package/workflows/engineering/frontend/eng.frontend-component.md +190 -0
  220. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +375 -0
  221. package/workflows/engineering/frontend/eng.frontend-review.md +185 -0
  222. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +51 -0
  223. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +51 -0
  224. package/workflows/engineering/qa/eng.qa-exploratory-session.md +60 -0
  225. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +202 -0
  226. package/workflows/engineering/qa/eng.qa-quality-report.md +83 -0
  227. package/workflows/engineering/qa/eng.qa-refinement-entry.md +83 -0
  228. package/workflows/engineering/qa/eng.qa-release-signoff.md +170 -0
  229. package/workflows/engineering/qa/eng.qa-sprint-planning.md +100 -0
  230. package/workflows/engineering/ta/eng.ta.atendimento.md +93 -0
  231. package/workflows/product/prod.roadmap.preview.md +110 -0
  232. package/workflows/product/prod.spec.breakdown.md +163 -0
  233. package/workflows/product/prod.spec.clarify.md +178 -0
  234. package/workflows/product/prod.spec.epic.md +154 -0
  235. package/workflows/product/prod.spec.frd.md +96 -0
  236. package/workflows/product/prod.spec.issue.md +145 -0
  237. package/workflows/product/prod.spec.md +60 -0
  238. package/workflows/product/prod.spec.prd.md +100 -0
  239. package/workflows/taxonomy.md +92 -0
  240. 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.