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,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
|
+
```
|