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,60 @@
1
+ ---
2
+ name: eng-task-comment
3
+ description: >
4
+ Adiciona um comentário no card do TASK_MANAGER (Jira, Linear, GitHub Issues ou Asana).
5
+ Trigger: registrar progresso, início ou fim de etapa em um card.
6
+ argument-hint: "{TASK_MANAGER_KEY} {mensagem}"
7
+ disable-model-invocation: false
8
+ allowed-tools: Read Bash MCP
9
+ ---
10
+
11
+ # eng-task-comment
12
+
13
+ Comenta no card do gerenciador de tarefas configurado em `TASK_MANAGER` no ENV.md.
14
+
15
+ `{TASK_MANAGER_KEY}` = id do card (Jira `TASK-123`, Linear UUID/identifier, GitHub `#42`, Asana GID).
16
+
17
+ ## Entrada
18
+
19
+ `$ARGUMENTS` — `{TASK_MANAGER_KEY} {mensagem}`
20
+
21
+ ## Execução
22
+
23
+ Ler `TASK_MANAGER`, `TASK_MANAGER_URL_BASE`, `TOKEN_TASK_MANAGER` e `USER` do `$IDE/ENV.md`.
24
+
25
+ Se `TASK_MANAGER` estiver vazio, ausente ou ainda for a lista `[jira, linear, github, asana]` → **encerrar em silêncio** (freelance, sem board). Não pedir token. Não falhar o workflow.
26
+
27
+ ### 1. MCP (só Jira)
28
+
29
+ Se `TASK_MANAGER=jira` e o MCP Atlassian estiver disponível:
30
+
31
+ ```
32
+ mcp__claude_ai_Atlassian__addCommentToJiraIssue({ issueKey: "{TASK_MANAGER_KEY}", body: "{mensagem}" })
33
+ ```
34
+
35
+ Sucesso → encerrar.
36
+
37
+ ### 2. Adapter CLI (todos os vendors)
38
+
39
+ ```bash
40
+ # Exportar do ENV.md para o processo
41
+ set -a
42
+ # shellcheck disable=SC1091
43
+ eval "$(grep -E '^(TASK_MANAGER|TASK_MANAGER_URL_BASE|TOKEN_TASK_MANAGER|USER)=' $IDE/ENV.md)"
44
+ set +a
45
+
46
+ node "$JARVIS_ROOT/bin/lib/tasks/comment.js" "{TASK_MANAGER_KEY}" "{mensagem}"
47
+ ```
48
+
49
+ `$JARVIS_ROOT` = raiz do framework (ou `$(git rev-parse --show-toplevel)` se o Jarvis estiver no repo). Se o script não existir no projeto, usar o path do clone do framework.
50
+
51
+ Exit 0 → comentário ok. Exit 2 → avisar e **não bloquear** o workflow.
52
+
53
+ ### 3. Falha
54
+
55
+ ```
56
+ ⚠️ Não foi possível comentar no card {TASK_MANAGER_KEY} ({TASK_MANAGER}).
57
+ Confira TOKEN_TASK_MANAGER e TASK_MANAGER_URL_BASE no ENV.md.
58
+ ```
59
+
60
+ Nunca pedir credenciais no chat. Nunca parar o fluxo principal por falha de comentário.
@@ -0,0 +1,529 @@
1
+ ---
2
+ name: eng-tech-analyst
3
+ description: Guia o Tech Analyst pelo fluxo de diagnóstico e triagem de chamados — da recepção do card no HUBS board até resolução ou encaminhamento qualificado para o squad dono
4
+ version: "1.1.0"
5
+ prefix: eng-
6
+ area: ENGINEERING
7
+ position: TECH ANALYST
8
+ ---
9
+
10
+ # Skill: eng-tech-analyst
11
+
12
+ **Objetivo:** Conduzir o fluxo de atendimento técnico — diagnóstico, verificação de existência, classificação, avaliação de impacto, resolução ou encaminhamento qualificado.
13
+
14
+ ---
15
+
16
+ ## Posição Organizacional
17
+
18
+ > ⚠️ O Tech Analyst é **transversal** — não pertence a nenhuma squad de desenvolvimento.
19
+ > No ENV.md, o campo `SQUAD` deve ser configurado como `SUPPORT`.
20
+ > Interfaces com todas as squads, mas reporta ao Tech Lead ou Engineering Manager.
21
+
22
+ ---
23
+
24
+ ## Contexto de Uso
25
+
26
+ Este skill é ativado quando o Tech Analyst recebe um card no **quadro HUBS** (`TASK_MANAGER_HUBS_BOARD`) do `$TASK_MANAGER` (tipicamente Jira).
27
+ O time de atendimento/N2 cria cards nesse board quando não consegue resolver o chamado.
28
+ O TA não cria novos cards — **trabalha sempre sobre o card existente** no HUBS board.
29
+
30
+ > Requer `TASK_MANAGER` preenchido. Sem board (freelance) este skill não se aplica.
31
+
32
+ Ao final do fluxo, o card do HUBS é:
33
+ - **Bug repetido**: vinculado como sub-bug do principal + movido para o board do squad
34
+ - **Bug novo**: movido para o board do squad (backlog ou sprint, conforme impacto)
35
+
36
+ ---
37
+
38
+ ## Pré-requisitos obrigatórios
39
+
40
+ Antes de iniciar qualquer atendimento, verificar no `ENV.md`:
41
+
42
+ ```
43
+ TASK_MANAGER ← obrigatório (jira | linear | github | asana) — sem board este skill não roda
44
+ TASK_MANAGER_HUBS_BOARD ← project key / board de triagem N2 (ex: HUBS)
45
+ TOKEN_TASK_MANAGER ← se o vendor não tiver MCP
46
+ TOKEN_OBSERVABILITY ← recomendado — enriquece alertas ao PM
47
+ OBSERVABILITY_ORG ← se OBSERVABILITY=sentry
48
+ OBSERVABILITY ← sentry | datadog | grafana (opcional)
49
+ ```
50
+
51
+ Se `TASK_MANAGER` ou `TASK_MANAGER_HUBS_BOARD` estiver ausente:
52
+ ```
53
+ → Interromper o fluxo
54
+ → "ENV.md incompleto: TASK_MANAGER e TASK_MANAGER_HUBS_BOARD são obrigatórios para o Tech Analyst."
55
+ → Não atender chamados até que estejam configurados
56
+ ```
57
+
58
+ Observabilidade ausente → avisar, mas **não** bloquear a triagem (só perde enriquecimento de alertas).
59
+
60
+ ### Resolução de tools do `$TASK_MANAGER`
61
+
62
+ Não hardcodar Jira. Resolver a ferramenta pelo valor de `TASK_MANAGER`:
63
+
64
+ | `TASK_MANAGER` | Ler card | Comentar | Buscar similares | Editar / linkar |
65
+ |----------------|----------|----------|------------------|-----------------|
66
+ | `jira` | MCP Atlassian `getJiraIssue` | `eng-task-comment` / `addCommentToJiraIssue` | JQL via MCP | `editJiraIssue` / issue links |
67
+ | `linear` | Linear MCP/CLI | `eng-task-comment` | busca Linear | Linear update/link |
68
+ | `github` | `gh issue view` | `eng-task-comment` | `gh issue list` | `gh issue edit` |
69
+ | `asana` | Asana API | `eng-task-comment` | search tasks | Asana update |
70
+
71
+ Exemplos abaixo com sintaxe Jira são **ilustrativos** quando `TASK_MANAGER=jira`. Com outro vendor, use a linha equivalente da tabela. Comentários preferir sempre `eng-task-comment {HUBS_CARD_KEY} "..."`.
72
+
73
+ ---
74
+
75
+ ## Fluxo de Decisão
76
+
77
+ ### Passo 1 — Receber card do HUBS board
78
+
79
+ O card chega via quadro `$TASK_MANAGER_HUBS_BOARD`. Leia o card (`{HUBS_CARD_KEY}`):
80
+
81
+ ```
82
+ # Exemplo TASK_MANAGER=jira:
83
+ mcp__getJiraIssue
84
+ issueIdOrKey: {HUBS_CARD_KEY}
85
+
86
+ # linear / github / asana: tool equivalente da tabela acima
87
+ ```
88
+
89
+ **O problema está bem descrito?**
90
+
91
+ Critérios mínimos para considerar "bem descrito":
92
+ - Qual ação o usuário tentou fazer?
93
+ - O que aconteceu (sintoma)?
94
+ - O que deveria ter acontecido (esperado)?
95
+ - Quando ocorreu (data/hora)?
96
+ - Dados do usuário/conta afetada (ID, email, etc.)?
97
+
98
+ Se **não estiver bem descrito**:
99
+ ```
100
+ → Comentar no HUBS card via eng-task-comment solicitando as informações faltantes ao N2.
101
+ → Não avançar sem diagnóstico mínimo.
102
+ ```
103
+
104
+ Se **estiver bem descrito** → ir ao Passo 2.
105
+
106
+ ---
107
+
108
+ ### Passo 2 — Verificar se o bug já existe
109
+
110
+ #### 2.1 — IA extrai keywords do card
111
+
112
+ Antes de buscar, a IA analisa a descrição do card e extrai as dimensões do bug:
113
+
114
+ | Dimensão | Exemplo |
115
+ |----------|---------|
116
+ | **Módulo** | checkout, login, cadastro, pagamento, relatório |
117
+ | **Sintoma** | timeout, erro-404, dado-incorreto, tela-branca, loop |
118
+ | **Ação** | salvar, enviar, carregar, exportar, autenticar |
119
+ | **Contexto** | mobile, desktop, pj, pf, producao |
120
+
121
+ Estas keywords serão usadas tanto para busca quanto para taggear o bug se for novo.
122
+
123
+ #### 2.2 — IA busca candidatos (duas passagens)
124
+
125
+ **Passagem 1 — por keywords (labels/`kw:*` no board):**
126
+ ```
127
+ # Exemplo TASK_MANAGER=jira:
128
+ mcp__searchJiraIssuesUsingJql
129
+ JQL: project != {TASK_MANAGER_HUBS_BOARD} AND type = Bug
130
+ AND labels in ("kw:{keyword-1}", "kw:{keyword-2}") ORDER BY created DESC
131
+
132
+ # Outros vendors: busca equivalente por label/tag no board (fora do HUBS)
133
+ ```
134
+ > Busca em boards de squad, excluindo o HUBS (triagem).
135
+ > Retorna bugs já tagueados com as mesmas keywords — match mais preciso.
136
+
137
+ **Passagem 2 — por texto (fallback):**
138
+ ```
139
+ # Exemplo TASK_MANAGER=jira:
140
+ mcp__searchJiraIssuesUsingJql
141
+ JQL: project != {TASK_MANAGER_HUBS_BOARD} AND type = Bug
142
+ AND summary ~ "{palavras-chave}" ORDER BY created DESC
143
+
144
+ # Outros vendors: search por texto no título/descrição
145
+ ```
146
+ > Cobre bugs antigos (antes do sistema de keywords) e casos de keywords diferentes para o mesmo conceito.
147
+
148
+ Deduplica resultados das duas passagens. Limitar a 5 candidatos totais.
149
+
150
+ #### 2.3 — IA rankeia, apresenta candidatos e emite sugestão
151
+
152
+ Para cada candidato, calcular score de similaridade:
153
+ - **Keywords em comum** com o card atual (peso maior)
154
+ - **Similaridade textual** do summary
155
+
156
+ Apresentar ao Tech Analyst (máximo 3, do mais ao menos similar) **sempre com sugestão explícita da IA**:
157
+
158
+ **Com candidatos encontrados:**
159
+ ```
160
+ Encontrei {N} bug(s) possivelmente relacionado(s):
161
+
162
+ 1. {TASK_MANAGER_KEY} — "{summary}" [Alta similaridade]
163
+ Keywords em comum: checkout, timeout, pagamento
164
+ Motivo: {explicação objetiva}
165
+
166
+ 2. {TASK_MANAGER_KEY} — "{summary}" [Média similaridade]
167
+ Keywords em comum: checkout
168
+ Motivo: {explicação objetiva}
169
+
170
+ 💡 Sugestão: este parece ser o mesmo bug que {TASK_MANAGER_KEY_1} — {motivo resumido em 1 linha}.
171
+ Confirme ou ajuste abaixo.
172
+ ```
173
+
174
+ **Sem candidatos:**
175
+ ```
176
+ Nenhum bug similar encontrado após duas passagens de busca
177
+ (keywords: {lista} | texto: "{termos}").
178
+
179
+ 💡 Sugestão: parece ser um bug novo — nenhuma ocorrência anterior encontrada no `$TASK_MANAGER`.
180
+ Confirme ou informe a chave se souber que existe.
181
+ ```
182
+
183
+ > A sugestão é baseada no score mais alto. Score > 0.7 → "parece ser o mesmo bug".
184
+ > Score entre 0.5–0.7 → "possivelmente relacionado, confirme com cuidado".
185
+ > Score < 0.5 ou sem candidatos → "parece ser bug novo".
186
+
187
+ #### 2.4 — Tech Analyst confirma (AskUserQuestion)
188
+
189
+ ```
190
+ AskUserQuestion:
191
+ "Este chamado é o mesmo bug que algum dos tickets acima?"
192
+ Opções:
193
+ - "Sim — é o {TASK_MANAGER_KEY_1} [sugerido]" ← destacar o sugerido quando score > 0.7
194
+ - "Sim — é o {TASK_MANAGER_KEY_2}"
195
+ - "Não — é um bug novo [sugerido]" ← destacar quando nenhum candidato
196
+ - "Existe, mas não está na lista" → campo livre para informar a chave
197
+ ```
198
+
199
+ > **Regra crítica:** a decisão final é sempre do Tech Analyst.
200
+ > A IA sugere com base em score; o humano confirma. Uma identificação errada polui o contador de frequência.
201
+
202
+ **Tech Analyst confirma existente:**
203
+ ```
204
+ → Passo 3A: Vincular como sub-bug e atualizar frequência
205
+ ```
206
+
207
+ **Tech Analyst confirma bug novo:**
208
+ ```
209
+ → Passo 3B: Classificar, taggear e mover para o board do squad
210
+ ```
211
+
212
+ ---
213
+
214
+ ### Passo 3A — Bug existente: Vincular como sub-bug e atualizar frequência
215
+
216
+ Se o bug principal é **legado sem keywords** (não tem labels/tags `kw:*`), adicionar antes:
217
+
218
+ ```
219
+ AskUserQuestion:
220
+ "Este bug não tem keywords. Quais aplicar?"
221
+ → IA sugere baseado no card do HUBS
222
+ → TA confirma
223
+
224
+ → Aplicar labels/tags kw:* no bug principal (tool do `$TASK_MANAGER`):
225
+ # Exemplo jira:
226
+ mcp__editJiraIssue
227
+ labels: ["kw:{keyword-1}", "kw:{keyword-2}", ...]
228
+ ```
229
+
230
+ **Vincular o card do HUBS como sub-bug do principal:**
231
+
232
+ ```
233
+ # Exemplo TASK_MANAGER=jira — outros vendors: link/relate equivalente
234
+ 1. Verificar tipos de link disponíveis (se necessário):
235
+ mcp__getIssueLinkTypes
236
+
237
+ 2. Criar vínculo:
238
+ mcp__createIssueLink
239
+ type: { name: "Duplicate" } ← ou o tipo "sub-bug de" no board
240
+ inwardIssue: { key: "{HUBS_CARD_KEY}" }
241
+ outwardIssue: { key: "{PRINCIPAL_TASK_MANAGER_KEY}" }
242
+
243
+ 3. Mover o card do HUBS para o board do squad:
244
+ mcp__editJiraIssue
245
+ issueIdOrKey: {HUBS_CARD_KEY}
246
+ fields: { project: { key: "{board_code do squad confirmado}" } }
247
+ ```
248
+
249
+ > Após vincular, o card do HUBS passa a aparecer no board do squad como sub-bug do principal.
250
+ > O bug principal acumula o histórico completo de ocorrências.
251
+
252
+ Registrar a ocorrência no card principal (skill `eng-task-comment`):
253
+
254
+ ```
255
+ Último sub-bug: {HUBS_CARD_KEY}
256
+ Área: {FRONT|BACK|BD|PROCESSO}
257
+ Keywords: {lista}
258
+ ```
259
+
260
+ > Cada sub-bug vinculado = 1 ocorrência no histórico do card. Sem event bus.
261
+
262
+ ```
263
+ → Encerrar atendimento — registrar no card do HUBS como
264
+ "Vinculado como sub-bug de {PRINCIPAL_TASK_MANAGER_KEY} — bug conhecido, aguardando fix"
265
+ ```
266
+
267
+ ---
268
+
269
+ ### Passo 3B — Bug novo: Classificar, taggear e mover para o squad
270
+
271
+ #### 3B.0 — Confirmar keywords com o Tech Analyst
272
+
273
+ As keywords extraídas no Passo 2.1 serão aplicadas como labels no card.
274
+ Apresentar para confirmação antes de mover:
275
+
276
+ ```
277
+ AskUserQuestion:
278
+ "Keywords identificadas para este bug: {kw:checkout, kw:timeout, kw:pagamento}
279
+ Deseja ajustar alguma?"
280
+ Opções:
281
+ - "Estão corretas"
282
+ - "Quero ajustar" → campo livre para editar
283
+ ```
284
+
285
+ > Keywords usam o prefixo `kw:` nos labels/tags do `$TASK_MANAGER` para diferenciar de outras labels.
286
+
287
+ #### 3B.1 — Classificar área do bug
288
+
289
+ Determinar a área responsável:
290
+
291
+ | Classificação | Critério |
292
+ |---------------|----------|
293
+ | `FRONT` | Problema visual, comportamento de UI, formulário, renderização |
294
+ | `BACK` | Erro de API, lógica de negócio, falha de processamento, dados incorretos |
295
+ | `BD` | Inconsistência de dados, constraint violada, dado faltante/duplicado |
296
+ | `PROCESSO` | Fluxo operacional incorreto, regra de negócio mal implementada |
297
+
298
+ #### 3B.2 — Determinar squad dona e avaliar impacto
299
+
300
+ **Fonte 1 — taxonomy.modules (sempre consultar primeiro):**
301
+
302
+ A IA cruza as keywords do bug com o campo `modules` de cada squad em `taxonomy.md`:
303
+
304
+ ```
305
+ Score por squad = keywords do bug que aparecem nos modules do squad / total de keywords do bug
306
+ ```
307
+
308
+ Se score > 0 em algum squad → apresentar candidatos e pular para confirmação.
309
+
310
+ **Fonte 2 — Central Docs (fallback: sem match em taxonomy):**
311
+
312
+ ```
313
+ skill: docs-central (Modo 1: Buscar Docs)
314
+ Query: "ownership {módulo identificado nas keywords}"
315
+ → Buscar em ARDs, PRDs e RFCs menção ao squad dono do módulo
316
+ ```
317
+
318
+ **Fonte 3 — Histórico do `$TASK_MANAGER` (fallback final):**
319
+
320
+ ```
321
+ # Exemplo TASK_MANAGER=jira:
322
+ mcp__searchJiraIssuesUsingJql
323
+ JQL: labels in ("kw:{keyword-principal}") AND type = Bug ORDER BY created DESC LIMIT 10
324
+ → Verificar em qual board_code a maioria dos bugs foi criada
325
+
326
+ # Outros vendors: busca por tag/label equivalente
327
+ ```
328
+
329
+ **Confirmação pelo TA (após qualquer fonte):**
330
+
331
+ ```
332
+ AskUserQuestion:
333
+ "Squad sugerida para este bug:"
334
+ Opções:
335
+ - "{SQUAD_1} — módulos em comum: {lista} [via taxonomy]"
336
+ - "{SQUAD_2} — {motivo} [via Central Docs / histórico do TASK_MANAGER]"
337
+ - "Outra squad" → campo livre
338
+ ```
339
+
340
+ **Avaliar impacto:**
341
+
342
+ | Critério | Alto | Baixo |
343
+ |----------|------|-------|
344
+ | Usuários afetados | Múltiplos / todos | Isolado / específico |
345
+ | Funcionalidade crítica | Sim (pagamento, auth, core) | Não (secundária) |
346
+ | Bloqueio total | Sim | Não (workaround existe) |
347
+ | Regressão recente | Sim (deploy recente) | Não |
348
+
349
+ #### 3B.3 — Mover card do HUBS para o board do squad
350
+
351
+ Aplicar keywords e mover o card em sequência (`$TASK_MANAGER` — exemplos Jira):
352
+
353
+ ```
354
+ # Exemplo TASK_MANAGER=jira
355
+ 1. Aplicar keywords e label support-item:
356
+ mcp__editJiraIssue
357
+ issueIdOrKey: {HUBS_CARD_KEY}
358
+ labels: ["kw:{keyword-1}", "kw:{keyword-2}", ..., "support-item"]
359
+
360
+ 2. Mover para o board do squad:
361
+ mcp__editJiraIssue
362
+ issueIdOrKey: {HUBS_CARD_KEY}
363
+ fields: { project: { key: "{board_code do squad confirmado}" } }
364
+
365
+ 3. Destino dentro do board (AskUserQuestion):
366
+ "O card vai para:"
367
+ - "Backlog do squad" → não alterar sprint
368
+ - "Sprint atual" → editar sprint/iteration no vendor
369
+ ```
370
+
371
+ > ⚠️ A decisão de sprint vs backlog é baseada no impacto:
372
+ > - Alto impacto → sugerir sprint atual (TA confirma)
373
+ > - Médio/baixo impacto → backlog
374
+
375
+ Se o impacto for **alto**, perguntar antes de comentar no card:
376
+
377
+ ```
378
+ AskUserQuestion:
379
+ "Descreva o impacto em linguagem de negócio (opcional — vai no comentário do card):"
380
+ Opções:
381
+ - "Pular" → não inclui impact_description
382
+ - Texto livre → ex: "Usuários PJ não conseguem exportar relatório de NF no mobile"
383
+ ```
384
+
385
+ Registrar no card (skill `eng-task-comment`): área, impacto, keywords e squad de destino.
386
+ Se `MESSAGE_COMUNICATOR` estiver configurado e impacto alto, avisar o PM no canal do squad. Sem event bus.
387
+
388
+ ---
389
+
390
+ ### Passo 4 — Executar solução no Tech Analyst
391
+
392
+ > ⚠️ **Regras críticas:**
393
+ > - BD: somente leitura — NUNCA executar INSERT, UPDATE, DELETE em produção
394
+ > - MCP: usar apenas ações disponíveis no backoffice
395
+ > - Scripts: executar apenas scripts aprovados e auditáveis
396
+ > - Documentar cada ação executada
397
+
398
+ Executar a solução com as ferramentas disponíveis:
399
+
400
+ ```
401
+ Ferramentas disponíveis:
402
+ - Backoffice do sistema (ações de admin)
403
+ - MCP (ações internas via ferramenta)
404
+ - BD read-only (SELECT para diagnóstico e verificação)
405
+ - Scripts internos aprovados (validar com Tech Lead antes de usar)
406
+ ```
407
+
408
+ Após executar:
409
+ 1. Verificar que o problema foi resolvido
410
+ 2. Registrar solução no card do HUBS com detalhes técnicos
411
+ 3. Voltar ao Passo 3A para atualizar frequência do bug principal
412
+
413
+ ---
414
+
415
+ ### Passo 5 — Encaminhamento qualificado
416
+
417
+ > **Regra crítica:** Nunca encaminhar por reflexo. Encaminhar somente após ter:
418
+ > 1. Diagnóstico claro do problema
419
+ > 2. Área identificada (Front/Back/BD/Processo)
420
+ > 3. Impacto avaliado (alto/baixo)
421
+ > 4. Confirmado que está fora do escopo do Tech Analyst
422
+
423
+ O card já existe no HUBS board — **não criar novo ticket**.
424
+ O encaminhamento é feito movendo o card para o board do squad (Passo 3B.3).
425
+
426
+ **Destino no board do squad depende do impacto:**
427
+
428
+ ```
429
+ Alto impacto:
430
+ → Executar Passo 3B.2 e 3B.3 com impact=alto
431
+ → Card vai preferencialmente para a sprint atual do squad
432
+ → Avisar PM via `$MESSAGE_COMUNICATOR` se configurado (sem event bus)
433
+
434
+ Médio/baixo impacto:
435
+ → Executar Passo 3B.2 e 3B.3 com impact=medio/baixo
436
+ → Card vai para o backlog do squad
437
+ → Frequência = contagem de sub-bugs / comments no card principal (`eng-task-comment`) — sem Redis
438
+ ```
439
+
440
+ Registrar no card do HUBS (via `eng-task-comment`) antes de mover:
441
+
442
+ ```
443
+ eng-task-comment {HUBS_CARD_KEY} "Encaminhado para squad {SQUAD} — {motivo}. Impacto: {alto|medio|baixo}. HS: {HS_TICKET_ID}"
444
+ ```
445
+
446
+ ---
447
+
448
+ ## Padrão de Descrição para Cards Movidos
449
+
450
+ Ao mover o card do HUBS para o squad, verificar se a descrição segue o padrão mínimo.
451
+ Se estiver incompleta, enriquecer via edit do `$TASK_MANAGER` (ex. Jira: `mcp__editJiraIssue`):
452
+
453
+ ```markdown
454
+ ## Resumo
455
+ {Uma linha clara descrevendo o bug — inclua o contexto}
456
+ ex: "Usuário não consegue finalizar pagamento quando endereço tem acento"
457
+
458
+ ## Ambiente
459
+ - Ambiente: Produção
460
+ - Data/hora da ocorrência: {DATA}
461
+ - Usuário/conta afetada: {ID ou email — anonimizar se necessário}
462
+
463
+ ## Passos para Reprodução
464
+ 1. {passo 1}
465
+ 2. {passo 2}
466
+ 3. {resultado obtido}
467
+
468
+ ## Comportamento Esperado
469
+ {O que deveria ter acontecido}
470
+
471
+ ## Diagnóstico Técnico
472
+ {O que o Tech Analyst investigou — logs, queries, observações}
473
+ {Área identificada: FRONT / BACK / BD / PROCESSO}
474
+ {Impacto: alto / baixo}
475
+
476
+ ## Chamado de Origem
477
+ HS: {ID do ticket no Helpscout}
478
+ HUBS card: {HUBS_CARD_KEY}
479
+ ```
480
+
481
+ ---
482
+
483
+ ## Comunicação Padrão
484
+
485
+ ### Para QA (frequência alta — via `$MESSAGE_COMUNICATOR` se configurado)
486
+ ```
487
+ ⚠️ [Tech Analyst] Bug {TASK_MANAGER_KEY} — Alta Frequência
488
+ {N} ocorrências registradas (sub-bugs / comments no card).
489
+ Área: {CLASSIFICAÇÃO}
490
+ Link: {TASK_MANAGER_URL_BASE}/.../{TASK_MANAGER_KEY}
491
+ Recomendação: revisar cobertura de testes ou priorizar fix.
492
+ ```
493
+
494
+ ### Para PM (impacto alto — via `$MESSAGE_COMUNICATOR` + dados de `$OBSERVABILITY` se houver)
495
+ ```
496
+ 🚨 [Tech Analyst] Bug de alto impacto — Priorização necessária
497
+ Problema: {descrição em linguagem de negócio}
498
+ Área técnica: {CLASSIFICAÇÃO}
499
+ Observabilidade: {N ocorrências} · {M usuários afetados} · desde {DATA}
500
+ Card: {TASK_MANAGER_URL_BASE}/.../{TASK_MANAGER_KEY}
501
+ ```
502
+
503
+ ---
504
+
505
+ ## Ferramentas por Passo
506
+
507
+ | Passo | Ferramenta |
508
+ |-------|------------|
509
+ | Receber card | `$TASK_MANAGER` HUBS board (MCP se `jira`; senão adapter/`eng-task-comment`) |
510
+ | Verificar existência | Busca no board (JQL se Jira) |
511
+ | Vincular sub-bug | Link de issue do vendor |
512
+ | Mover card para squad | Edit do card no `$TASK_MANAGER` |
513
+ | Atualizar frequência | Comentário no card (`eng-task-comment`) — sem Redis / event bus |
514
+ | Classificar + impacto | Comentário no card (`eng-task-comment`) |
515
+ | Executar solução | MCP + BD read-only + backoffice |
516
+ | Comunicar PM / QA | Comentário no card + `$MESSAGE_COMUNICATOR` se configurado |
517
+
518
+ ---
519
+
520
+ ## Regras Críticas
521
+
522
+ - **NUNCA** criar novo ticket no `$TASK_MANAGER` — o card do HUBS board já existe
523
+ - **NUNCA** escrever no banco de dados de produção — somente leitura
524
+ - **NUNCA** encaminhar sem diagnóstico completo (área + impacto avaliados)
525
+ - **SEMPRE** vincular como sub-bug antes de registrar a ocorrência no card principal
526
+ - **SEMPRE** mover o card do HUBS para o board do squad ao final do atendimento
527
+ - **SEMPRE** registrar no card do HUBS o que foi feito (comment antes de mover)
528
+ - **SEMPRE** registrar a ocorrência no card principal ao confirmar um bug existente
529
+ - **SEMPRE** usar linguagem de negócio ao comunicar PM, linguagem técnica ao comunicar QA/Dev