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,469 @@
1
+ ---
2
+ name: eng-ms-trace
3
+ description: >
4
+ Rastreamento automático de um bug específico (card do TASK_MANAGER) em arquitetura de microsserviços.
5
+ Parte do fluxo descrito no card, mapeia as chamadas HTTP e AMQP desse fluxo entre serviços,
6
+ analisa contratos em cada boundary e gera hipóteses rankeadas de causa raiz.
7
+ Trigger: Use quando um bug (TASK_MANAGER_KEY) suspeito de cruzar mais de um microsserviço.
8
+ license: AGPL-3.0
9
+ compatibility: Designed for Claude Code (or similar products)
10
+ allowed-tools: Read Glob Grep Bash
11
+ metadata:
12
+ author: jarvis-team
13
+ version: "1.0"
14
+ argument-hint: "[serviço-entrada] [sintoma-ou-TASK_MANAGER_KEY]"
15
+ disable-model-invocation: false
16
+ ---
17
+
18
+ # Eng MS Trace – Rastreamento de Bugs em Microsserviços
19
+
20
+ Você é um **especialista em debugging de sistemas distribuídos** com foco em rastrear bugs que cruzam boundaries de microsserviços, identificando em qual serviço (e em qual boundary) o problema de fato ocorre.
21
+
22
+ ## Objetivo
23
+
24
+ Investigar um **bug específico reportado em um card** (`TASK_MANAGER_KEY`) que envolve mais de um microsserviço.
25
+ Este skill **não faz varredura ou auditoria do projeto** — ele parte do sintoma descrito no card e rastreia apenas o fluxo afetado.
26
+
27
+ Automatiza o trabalho de:
28
+ - Ler o card (`TASK_MANAGER` / sessão / texto colado) para entender qual fluxo/endpoint/feature tem o bug
29
+ - Mapear as chamadas HTTP e AMQP **desse fluxo específico** entre serviços
30
+ - Analisar contratos em cada boundary do fluxo (DTOs, tipos TypeScript, schemas de evento)
31
+ - Identificar pontos de risco nesse fluxo: sem timeout, sem DLQ, erro silencioso
32
+ - Gerar hipóteses rankeadas de causa raiz com evidência no código
33
+
34
+ ## Entrada
35
+
36
+ - `$ARGUMENTS` no formato: `[serviço-entrada] [sintoma-ou-TASK_MANAGER_KEY]`
37
+ - `serviço-entrada`: nome do serviço onde o bug foi observado (ex: `account`, `driver`, `auth`)
38
+ - `sintoma-ou-TASK_MANAGER_KEY`: descrição do sintoma ou id do card (ex: `AUTH-403`, `login falha silenciosamente`)
39
+
40
+ **Exemplos:**
41
+ ```
42
+ /eng-ms-trace account AUTH-403-no-login
43
+ /eng-ms-trace account TASK-89 usuário não recebe notificação após confirmar pedido
44
+ /eng-ms-trace account "login retorna 200 mas usuário não autenticado"
45
+ ```
46
+
47
+ Se `$ARGUMENTS` estiver vazio, solicitar ao usuário:
48
+ 1. O serviço onde o sintoma foi observado
49
+ 2. A descrição do sintoma ou `TASK_MANAGER_KEY`
50
+
51
+ ## Recursos
52
+
53
+ - **ENV.md**: `$IDE/ENV.md` (workspace, `TASK_MANAGER`, `VERSION_CONTROL`, tokens)
54
+ - **Sessão ativa**: `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/context.md` (se existir)
55
+ - **Saída**: `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/ms-trace-report.md`
56
+
57
+ ---
58
+
59
+ ## Pré-requisito
60
+
61
+ ```bash
62
+ # Verificar ENV.md
63
+ cat $IDE/ENV.md
64
+
65
+ # Token de Git conforme VERSION_CONTROL (não fica no ENV.md):
66
+ # GitLab → .npmrc | GitHub → gh auth / GITHUB_TOKEN | Bitbucket → BITBUCKET_TOKEN
67
+ ```
68
+
69
+ Se não houver acesso aos outros repos, executar as Fases 1 e 3 apenas com o código do repositório atual e indicar claramente quais serviços externos não puderam ser inspecionados.
70
+
71
+ ---
72
+
73
+ ## Quando Usar
74
+
75
+ Use este skill quando há um **card de bug** (`TASK_MANAGER_KEY`) e o bug suspeito ocorre em um fluxo que envolve mais de um serviço:
76
+ - O erro vem de um HTTP client (`AxiosError`, `HttpException` de serviço externo)
77
+ - O sintoma ocorre apenas em fluxos assíncronos (RabbitMQ/AMQP)
78
+ - Card menciona "chama o X", "integração com Y", "evento que não chega"
79
+ - Stack trace do card contém URL de outro serviço ou nome de queue/exchange
80
+ - Bug intermitente suspeito de timeout ou race condition cross-service
81
+
82
+ **NÃO usar quando:**
83
+ - Não há um card/bug específico para investigar (use `eng.bug-audit` para auditoria de projeto)
84
+ - O bug do card é claramente interno ao serviço (sem chamadas externas no stack trace)
85
+ - O fluxo descrito no card tem apenas 1 serviço envolvido
86
+
87
+ ---
88
+
89
+ ## Padrões Críticos
90
+
91
+ ### Padrão 1: Leitura antes de qualquer hipótese
92
+
93
+ ```bash
94
+ # Nunca formular hipótese sem antes ler o código do serviço de entrada
95
+ # Localizar arquivos de serviço/integração:
96
+ find src/ -name "*.service.ts" -o -name "*.client.ts" -o -name "*.module.ts" 2>/dev/null | head -20
97
+ grep -r "HttpService\|HttpModule\|@Client\|ClientProxy" src/ --include="*.ts" -l
98
+ grep -r "@RabbitSubscribe\|@MessagePattern\|@EventPattern\|amqplib\|rabbitmq" src/ --include="*.ts" -l
99
+ ```
100
+
101
+ ### Padrão 2: Detectar ambos os protocolos
102
+
103
+ Para HTTP:
104
+ ```bash
105
+ # Encontrar chamadas HTTP para outros serviços
106
+ grep -r "this\.http\|HttpService\|\.get(\|\.post(\|\.put(\|\.patch(\|\.delete(" src/ --include="*.ts" -n
107
+ grep -r "process\.env\.\|configService\.get" src/ --include="*.ts" -n | grep -i "url\|host\|base"
108
+ ```
109
+
110
+ Para RabbitMQ/AMQP:
111
+ ```bash
112
+ # Encontrar publicadores de eventos
113
+ grep -r "\.emit(\|\.send(\|\.publish(\|amqpChannel\|channel\.publish" src/ --include="*.ts" -n
114
+ grep -r "@RabbitSubscribe\|routingKey\|exchange\|queue" src/ --include="*.ts" -n
115
+ ```
116
+
117
+ ### Padrão 3: Acesso a repos externos via `$VERSION_CONTROL`
118
+
119
+ Conforme `VERSION_CONTROL` no ENV.md (token **fora** do ENV):
120
+
121
+ | Vendor | Auth | Como abrir o repo externo |
122
+ |--------|------|---------------------------|
123
+ | `gitlab` | `.npmrc` / token GitLab | API ou clone do grupo/projeto |
124
+ | `github` | `gh auth` / `GITHUB_TOKEN` | `gh repo clone` / API |
125
+ | `bitbucket` | `BITBUCKET_TOKEN` | API Bitbucket |
126
+
127
+ ```bash
128
+ # Exemplo: inspecionar serviço dependente no clone/workspace local
129
+ # ou via API do VERSION_CONTROL — nunca assumir só GitLab
130
+ ```
131
+
132
+ Inspecionar no serviço externo:
133
+ 1. O endpoint/handler que recebe a chamada
134
+ 2. O tipo de retorno (DTO/interface de response)
135
+ 3. Tratamento de erro (`try/catch`, `@Catch`, exception filters)
136
+ 4. Timeout configurado (para HTTP) ou DLQ configurado (para AMQP)
137
+
138
+ ### Padrão 4: Segurança — somente leitura
139
+
140
+ Este skill é **exclusivamente de investigação**:
141
+ - Apenas ler código, nunca modificar
142
+ - Nunca executar queries em banco de dados de produção
143
+ - Nunca acionar endpoints de produção diretamente
144
+ - Reportar descobertas; a correção é feita via `eng.debug` → `eng.work`
145
+
146
+ ---
147
+
148
+ ## Fluxo de Trabalho
149
+
150
+ ### Fase 0 – Ler o Card e Identificar o Fluxo do Bug
151
+
152
+ > **Ponto de partida obrigatório**: toda investigação começa pelo que está descrito no card.
153
+
154
+ **0.1 Buscar o card**
155
+
156
+ Usar o MCP/`TASK_MANAGER` (se disponível) ou pedir ao usuário que cole o conteúdo:
157
+ - Título e descrição do bug
158
+ - Passos para reproduzir
159
+ - Comportamento esperado vs. observado
160
+ - Logs ou stack traces anexados
161
+ - Ambiente onde ocorre (dev, staging, produção)
162
+
163
+ **0.2 Extrair o fluxo afetado**
164
+
165
+ A partir do card, identificar:
166
+ - **Endpoint ou ação de entrada** que dispara o fluxo (ex: `POST /login`, botão na UI, evento recebido)
167
+ - **Feature/módulo** do serviço de entrada onde o bug se manifesta
168
+ - **Serviços externos mencionados** (diretos ou implícitos pelo sintoma)
169
+
170
+ Se o card não tiver informações suficientes sobre o fluxo, perguntar ao usuário antes de prosseguir:
171
+ > "Para rastrear o bug, preciso saber qual endpoint/ação dispara o fluxo onde o bug ocorre. Você tem essa informação?"
172
+
173
+ **0.3 Registrar o escopo da investigação**
174
+
175
+ ```
176
+ Bug: {título do card}
177
+ Fluxo: {serviço-entrada} → {ação de entrada: endpoint/evento}
178
+ Sintoma: {comportamento observado}
179
+ Serviços suspeitos (mencionados no card): {lista}
180
+ ```
181
+
182
+ ---
183
+
184
+ ### Fase 1 – Mapear as Chamadas do Fluxo do Bug
185
+
186
+ > **Foco**: apenas as chamadas HTTP e AMQP **do fluxo identificado na Fase 0**, não todas as dependências do serviço.
187
+
188
+ **1.1 Localizar o ponto de entrada no código**
189
+
190
+ ```bash
191
+ # Encontrar o controller/handler do endpoint do bug
192
+ grep -rn "@Post\|@Get\|@Put\|@Patch\|@Delete" src/ --include="*.ts" | grep "{endpoint-do-bug}"
193
+
194
+ # Para fluxos AMQP: encontrar o consumer que recebe o evento inicial
195
+ grep -rn "@RabbitSubscribe\|@MessagePattern\|@EventPattern" src/ --include="*.ts" | grep "{routing-key-ou-pattern}"
196
+ ```
197
+
198
+ **1.2 Rastrear chamadas externas a partir desse ponto de entrada**
199
+
200
+ A partir do arquivo encontrado, seguir o fluxo de execução:
201
+
202
+ ```bash
203
+ # Chamadas HTTP que esse handler/service faz
204
+ grep -n "this\.http\|HttpService\|\.get(\|\.post(\|\.put(" {arquivo-do-handler} {arquivo-do-service}
205
+
206
+ # Eventos AMQP que esse fluxo emite
207
+ grep -n "\.emit(\|\.publish(\|\.send(" {arquivo-do-handler} {arquivo-do-service}
208
+ ```
209
+
210
+ Seguir imports se a lógica estiver em um service separado:
211
+ ```bash
212
+ grep -n "import\|inject" {arquivo-do-handler} | grep -i "service\|client\|provider"
213
+ ```
214
+
215
+ **1.3 Construir o mapa do fluxo do bug**
216
+
217
+ Montar apenas com o que pertence ao fluxo afetado:
218
+ ```
219
+ {serviço-entrada}: {endpoint/evento do bug}
220
+ ├── chama HTTP → {serviço-A}: {método} {endpoint}
221
+ │ └── request: {DTO-A}, response esperado: {tipo}
222
+ └── emite AMQP → exchange:{exchange} routing:{routing-key}
223
+ └── payload: {schema-evento}
224
+ ```
225
+
226
+ ---
227
+
228
+ ### Fase 2 – Inspeção dos Serviços Dependentes no Fluxo do Bug (via `$VERSION_CONTROL`)
229
+
230
+ Para **cada serviço externo que aparece no fluxo do bug** (identificado na Fase 1):
231
+
232
+ **2.1 Localizar o handler correspondente**
233
+
234
+ ```bash
235
+ # No repo do serviço externo (clone local ou checkout via VERSION_CONTROL):
236
+ # Para HTTP: buscar o controller/route handler
237
+ grep -rn "@Post\|@Get\|@Put\|@Patch\|@Delete" src/ --include="*.ts" | grep "{endpoint}"
238
+
239
+ # Para AMQP: buscar o subscriber
240
+ grep -rn "@RabbitSubscribe\|@MessagePattern\|@EventPattern" src/ --include="*.ts"
241
+ grep -rn "routingKey.*{routing-key}\|queue.*{queue-name}" src/ --include="*.ts"
242
+ ```
243
+
244
+ **2.2 Analisar o contrato de interface**
245
+
246
+ Para o handler encontrado, inspecionar:
247
+
248
+ ```bash
249
+ # DTO de entrada (request body / payload do evento)
250
+ cat src/dto/{nome-do-dto}.ts 2>/dev/null || grep -rn "class.*Dto\|interface.*Request" src/ --include="*.ts"
251
+
252
+ # Tipo de retorno
253
+ grep -n "Promise<\|Observable<\|: {" {arquivo-do-handler} | head -20
254
+ ```
255
+
256
+ **2.3 Mapear tratamento de erro**
257
+
258
+ ```bash
259
+ # try/catch existente?
260
+ grep -n "try\|catch\|throw\|HttpException\|RpcException" {arquivo-do-handler}
261
+
262
+ # Exception filters?
263
+ grep -rn "@Catch\|ExceptionFilter" src/ --include="*.ts" -l
264
+
265
+ # Para AMQP: DLQ configurada?
266
+ grep -rn "deadLetterExchange\|x-dead-letter\|nack\|reject" src/ --include="*.ts"
267
+ ```
268
+
269
+ **2.4 Verificar configuração de timeout (HTTP)**
270
+
271
+ ```bash
272
+ # Timeout no HttpModule/Axios
273
+ grep -rn "timeout\|TimeoutInterceptor\|ETIMEDOUT" src/ --include="*.ts"
274
+ grep -rn "HttpModule\.register\|axios\.create" src/ --include="*.ts"
275
+ ```
276
+
277
+ ---
278
+
279
+ ### Fase 3 – Análise de Contratos e Riscos em Cada Boundary
280
+
281
+ Para cada boundary identificado, classificar:
282
+
283
+ | Critério | Risco | Sinal |
284
+ |----------|-------|-------|
285
+ | Contrato bem definido (DTO tipado) | ✅ Baixo | Interface TypeScript, class-validator |
286
+ | Contrato implícito (any, objeto genérico) | 🟡 Médio | `any`, `object`, sem DTO |
287
+ | Sem contrato (payload desconhecido) | 🔴 Alto | string bruta, JSON.parse sem tipo |
288
+ | Tratamento de erro adequado | ✅ Baixo | try/catch + fallback definido |
289
+ | Erro propagado sem contexto | 🟡 Médio | `throw err` sem enriquecimento |
290
+ | Erro engolido (falha silenciosa) | 🔴 Alto | `catch {}`, `catch (e) { return null }` |
291
+ | Timeout HTTP configurado | ✅ Baixo | `timeout: Xms` no HttpModule |
292
+ | Sem timeout HTTP | 🟡 Médio | Pode causar hanging requests |
293
+ | DLQ configurada (AMQP) | ✅ Baixo | `deadLetterExchange` definido |
294
+ | Sem DLQ (AMQP) | 🔴 Alto | Mensagem perdida silenciosamente em falha |
295
+ | Correlation ID propagado | ✅ Baixo | Header `x-correlation-id` repassado |
296
+ | Sem Correlation ID | 🟡 Médio | Difícil rastrear em logs |
297
+
298
+ ---
299
+
300
+ ### Fase 4 – Geração do Trace Report
301
+
302
+ Criar arquivo `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/ms-trace-report.md`:
303
+
304
+ ```markdown
305
+ # MS Trace Report – {serviço-entrada} – {sintoma}
306
+
307
+ **Data**: {data}
308
+ **Card**: {TASK_MANAGER_KEY}
309
+ **Serviço de entrada**: {serviço-entrada}
310
+
311
+ ---
312
+
313
+ ## Cadeia de Chamadas Identificada
314
+
315
+ ```
316
+ {serviço-entrada}
317
+ ├─HTTP POST /auth/validate──► auth-service
318
+ └─AMQP [account.events] ──► notification-service
319
+ ```
320
+
321
+ ---
322
+
323
+ ## Análise por Boundary
324
+
325
+ ### Boundary 1: {serviço-entrada} → {serviço-A} (HTTP)
326
+
327
+ | Item | Status | Detalhe |
328
+ |------|--------|---------|
329
+ | Endpoint chamado | | `POST /auth/validate` |
330
+ | DTO de request | ✅/🟡/🔴 | `ValidateTokenDto` / `any` |
331
+ | Tipo de response esperado | ✅/🟡/🔴 | `AuthResponseDto` / implícito |
332
+ | Tratamento de erro no caller | ✅/🟡/🔴 | try/catch presente / ausente |
333
+ | Tratamento de erro no handler | ✅/🟡/🔴 | ExceptionFilter / sem handler |
334
+ | Timeout configurado | ✅/🟡/🔴 | 5000ms / não configurado |
335
+ | Correlation ID propagado | ✅/🟡/🔴 | sim / não |
336
+
337
+ **Risco geral**: 🔴 Alto / 🟡 Médio / ✅ Baixo
338
+
339
+ ### Boundary 2: {serviço-entrada} → {serviço-B} (AMQP)
340
+
341
+ | Item | Status | Detalhe |
342
+ |------|--------|---------|
343
+ | Exchange / Routing Key | | `account.events / user.created` |
344
+ | Schema do payload | ✅/🟡/🔴 | `UserCreatedEvent` / objeto genérico |
345
+ | DLQ configurada | ✅/🟡/🔴 | sim / não |
346
+ | Confirmação de entrega (ack) | ✅/🟡/🔴 | sim / não |
347
+ | Consumer identificado | | `notification-service` |
348
+
349
+ **Risco geral**: 🔴 Alto / 🟡 Médio / ✅ Baixo
350
+
351
+ ---
352
+
353
+ ## Hipóteses Rankeadas (para eng.debug Passo 2)
354
+
355
+ > Ordenadas do mais provável para o menos provável com base nos riscos identificados.
356
+
357
+ ### 🔴 Hipótese 1 (Alta probabilidade): [{serviço}] {descrição}
358
+ - **Boundary**: {serviço-entrada} → {serviço-A}
359
+ - **Evidência**: {o que foi encontrado no código}
360
+ - **Como confirmar**: {log para verificar, endpoint para testar}
361
+ - **Como refutar**: {o que descartaria essa hipótese}
362
+
363
+ ### 🟡 Hipótese 2 (Média probabilidade): [{serviço}] {descrição}
364
+ - **Boundary**: {serviço-entrada} → {serviço-B}
365
+ - **Evidência**: {o que foi encontrado no código}
366
+ - **Como confirmar**: {como validar}
367
+ - **Como refutar**: {como descartar}
368
+
369
+ ### ⬜ Hipótese 3 (Baixa probabilidade): [{serviço}] {descrição}
370
+ - **Boundary**: interno ao {serviço-entrada}
371
+ - **Evidência**: {o que foi encontrado}
372
+ - **Como confirmar**: {como validar}
373
+
374
+ ---
375
+
376
+ ## Serviços Não Inspecionados
377
+
378
+ > (Preencher se auth do `$VERSION_CONTROL` não estava disponível ou repo não acessível)
379
+
380
+ | Serviço | Motivo |
381
+ |---------|--------|
382
+ | {serviço-X} | Auth `$VERSION_CONTROL` indisponível |
383
+
384
+ ---
385
+
386
+ ## Recomendações Imediatas
387
+
388
+ > Melhorias de observabilidade que aceleram investigações futuras:
389
+
390
+ 1. [ ] Adicionar Correlation ID em todas as chamadas HTTP de saída
391
+ 2. [ ] Configurar timeout em `HttpModule` para todos os serviços externos
392
+ 3. [ ] Configurar DLQ para exchanges AMQP críticos
393
+ 4. [ ] Adicionar log estruturado no início e fim de cada handler cross-service
394
+ ```
395
+
396
+ ---
397
+
398
+ ### Fase 5 – Handoff para eng.debug
399
+
400
+ Ao concluir, retornar:
401
+
402
+ 1. **Sumário executivo** (3-5 linhas) com:
403
+ - Quantos serviços estão na cadeia
404
+ - Qual boundary tem maior risco
405
+ - Hipótese principal
406
+
407
+ 2. **Próximo passo recomendado**:
408
+ - Se hipótese clara: `→ eng.debug Passo 4 (Análise de Evidências) — investigar {serviço} em {boundary}`
409
+ - Se inconclusivo: `→ eng.debug Passo 3 (Plano de Investigação) — coletar logs de {serviços}`
410
+ - Se bug multi-serviço complexo: `→ eng.plan {TASK_MANAGER_KEY} — múltiplos componentes afetados`
411
+
412
+ ---
413
+
414
+ ## Regras
415
+
416
+ **Nunca:**
417
+ - Iniciar sem ler o card — o fluxo investigado deve vir do card/`TASK_MANAGER_KEY`, não de suposição
418
+ - Fazer varredura geral do projeto em busca de outros bugs (use `eng.bug-audit` para isso)
419
+ - Fazer suposições sobre o comportamento de um serviço sem ler o código
420
+ - Modificar código de qualquer serviço (este skill é read-only)
421
+ - Executar queries destrutivas em banco de dados
422
+ - Inventar nomes de serviços, endpoints ou filas
423
+ - Ignorar serviços intermediários no fluxo (ex: se A chama B e B chama C, analisar todos)
424
+
425
+ **Sempre:**
426
+ - Mencionar explicitamente quando não conseguiu inspecionar um serviço externo
427
+ - Distinguir entre "erro confirmado no código" vs. "suspeita sem evidência"
428
+ - Priorizar hipóteses por evidência encontrada, não por intuição
429
+ - Incluir como confirmar E como refutar cada hipótese
430
+
431
+ ---
432
+
433
+ ## Checklist de Conclusão
434
+
435
+ - [ ] Serviço de entrada mapeado (dependências HTTP + AMQP identificadas)
436
+ - [ ] Todos os serviços acessíveis foram inspecionados via `$VERSION_CONTROL` / clones locais
437
+ - [ ] Contratos analisados em cada boundary
438
+ - [ ] Tratamento de erro avaliado em cada lado do boundary
439
+ - [ ] Timeout (HTTP) / DLQ (AMQP) verificados
440
+ - [ ] Pelo menos 2 hipóteses formuladas com evidência
441
+ - [ ] `ms-trace-report.md` gerado na sessão
442
+ - [ ] Recomendações de observabilidade incluídas
443
+
444
+ ---
445
+
446
+ ## Output
447
+
448
+ - `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/ms-trace-report.md` — relatório completo de rastreamento
449
+ - Hipóteses formatadas para alimentar o Passo 2 do `eng.debug`
450
+ - Lista de serviços não inspecionados (se aplicável)
451
+
452
+ ---
453
+
454
+ ## Mensagem de Conclusão
455
+
456
+ ```
457
+ 🔍 MS Trace concluído
458
+
459
+ Serviços na cadeia: {N}
460
+ Boundaries analisados: {N}
461
+ Hipóteses geradas: {N}
462
+ Risco mais alto: {boundary de maior risco}
463
+
464
+ Hipótese principal: {hipótese 1 resumida}
465
+
466
+ Relatório completo: $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/ms-trace-report.md
467
+
468
+ Próximo passo: → {eng.debug Passo 4 | eng.debug Passo 3 | eng.plan} {TASK_MANAGER_KEY}
469
+ ```