jarvis-ai-framework 2.1.1 → 3.2.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 (266) hide show
  1. package/AGENTS.md +14 -115
  2. package/agents/AGENTS.md +11 -23
  3. package/agents/README.md +27 -129
  4. package/agents/engineering/data/eng.data-engineer.agent.md +11 -34
  5. package/agents/engineering/eng.advisor.agent.md +56 -0
  6. package/agents/engineering/eng.agent.md +14 -24
  7. package/agents/engineering/eng.bug-hunter.md +7 -15
  8. package/agents/engineering/eng.dev-code-reviewer.md +1 -1
  9. package/agents/engineering/eng.frontend.agent.md +3 -7
  10. package/agents/engineering/eng.rpa.agent.md +2 -8
  11. package/agents/engineering/qa/eng.qa.quality-strategist.md +6 -11
  12. package/agents/engineering/qa/eng.qa.test-architect.md +8 -18
  13. package/agents/engineering/qa/eng.qa.test-planner.md +10 -14
  14. package/agents/engineering/qa/eng.qa.testing-engineer.md +91 -24
  15. package/agents/product/prod.discovery-interviewer.md +3 -3
  16. package/bin/README.md +142 -0
  17. package/bin/commands/docs-publish.js +105 -141
  18. package/bin/commands/docs-sync.js +66 -104
  19. package/bin/commands/info.js +7 -27
  20. package/bin/commands/init.js +23 -51
  21. package/bin/commands/install-rtk.js +9 -3
  22. package/bin/commands/list.js +5 -18
  23. package/bin/commands/map.js +20 -5
  24. package/bin/commands/qa-signoff.js +58 -55
  25. package/bin/commands/tokens.js +14 -17
  26. package/bin/commands/whoami.js +30 -26
  27. package/bin/jarvis.js +9 -163
  28. package/bin/lib/auth/session.js +20 -20
  29. package/bin/lib/cli/program.js +219 -0
  30. package/bin/lib/cli/shared-options.js +29 -0
  31. package/bin/lib/config/constants.js +59 -2
  32. package/bin/lib/config/ide-config.js +4 -8
  33. package/bin/lib/core/profile-filter.js +4 -1
  34. package/bin/lib/core/scanner.js +3 -29
  35. package/bin/lib/core/sync-engine.js +21 -14
  36. package/bin/lib/core/token-report.js +12 -2
  37. package/bin/lib/docs/fetch-file.js +39 -0
  38. package/bin/lib/docs/publish-file.js +194 -0
  39. package/bin/lib/docs/redis-cache.js +49 -0
  40. package/bin/lib/docs/validate-frontmatter.js +9 -39
  41. package/bin/lib/env-loader.js +11 -34
  42. package/bin/lib/flow-map/parse.js +11 -5
  43. package/bin/lib/flow-map/render.js +5 -2
  44. package/bin/lib/flow-map/tree.js +59 -10
  45. package/bin/lib/tasks/comment.js +40 -35
  46. package/bin/lib/utils/frontmatter.js +57 -0
  47. package/bin/lib/utils/git-parser.js +4 -6
  48. package/bin/lib/utils/npmrc-parser.js +6 -13
  49. package/bin/lib/utils/paths.js +2 -4
  50. package/bin/lib/utils/ui.js +3 -9
  51. package/bin/lib/vcs/api.js +25 -41
  52. package/bin/lib/vcs/create-issue.js +49 -33
  53. package/bin/lib/vcs/create-merge.js +47 -31
  54. package/bin/lib/vcs/fetch-raw.js +35 -23
  55. package/package.json +14 -5
  56. package/rules/engineering/eng-rules.md +1 -1
  57. package/rules/engineering/eng-security-rules.md +18 -16
  58. package/rules/engineering/eng.bump-rules.md +3 -2
  59. package/rules/engineering/eng.docs-scraping-rules.md +4 -4
  60. package/rules/engineering/eng.integrations-rules.md +6 -4
  61. package/rules/engineering/eng.skills-rules.md +1 -1
  62. package/rules/engineering/eng.specializations-rules.md +18 -4
  63. package/rules/engineering/frontend/eng.frontend-rules.md +1 -4
  64. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +1 -1
  65. package/rules/engineering/rpa/eng.rpa-rules.md +4 -9
  66. package/rules-on-demand/engineering/eng.pre-pr-rules.md +1 -1
  67. package/rules-on-demand/engineering/eng.start-rules.md +2 -0
  68. package/skills/AGENTS.md +52 -87
  69. package/skills/SKILLS-ROADMAP.md +47 -128
  70. package/skills/eng-ai/SKILL.md +270 -0
  71. package/skills/eng-ai/references/1-fundamentos-ml.md +24 -0
  72. package/skills/eng-ai/references/10-arquitetura-solucoes-ia.md +24 -0
  73. package/skills/eng-ai/references/11-governanca-ia.md +24 -0
  74. package/skills/eng-ai/references/12-seguranca-ia-responsavel.md +25 -0
  75. package/skills/eng-ai/references/2-matematica-estatistica.md +24 -0
  76. package/skills/eng-ai/references/3-dados-para-ia.md +24 -0
  77. package/skills/eng-ai/references/4-deep-learning-fundacionais.md +24 -0
  78. package/skills/eng-ai/references/5-llms-chatbots-agentes-rag.md +25 -0
  79. package/skills/eng-ai/references/6-avaliacao-experimentacao.md +24 -0
  80. package/skills/eng-ai/references/7-engenharia-sistemas-ia.md +24 -0
  81. package/skills/eng-ai/references/8-mlops-plataforma.md +24 -0
  82. package/skills/eng-ai/references/9-produto-ia.md +24 -0
  83. package/skills/eng-ai/references/especializacoes.md +17 -0
  84. package/skills/eng-automation/SKILL.md +290 -0
  85. package/skills/eng-automation/references/1-fundamentos-automacao.md +25 -0
  86. package/skills/eng-automation/references/10-ingestao-dados.md +25 -0
  87. package/skills/eng-automation/references/11-captcha-antibot.md +25 -0
  88. package/skills/eng-automation/references/12-limites-taxa-sessoes.md +25 -0
  89. package/skills/eng-automation/references/13-agendamento-orquestracao.md +24 -0
  90. package/skills/eng-automation/references/14-retentativa-erros.md +25 -0
  91. package/skills/eng-automation/references/15-autenticacao-credenciais.md +24 -0
  92. package/skills/eng-automation/references/16-observabilidade-confiabilidade.md +24 -0
  93. package/skills/eng-automation/references/2-aquisicao-dados.md +25 -0
  94. package/skills/eng-automation/references/3-automacao-navegador.md +24 -0
  95. package/skills/eng-automation/references/4-scraping-crawling.md +25 -0
  96. package/skills/eng-automation/references/5-apis-rest-graphql-soap.md +26 -0
  97. package/skills/eng-automation/references/6-webhooks-integracao.md +25 -0
  98. package/skills/eng-automation/references/7-rpa.md +25 -0
  99. package/skills/eng-automation/references/8-extracao-estruturada.md +25 -0
  100. package/skills/eng-automation/references/9-extracao-documentos.md +25 -0
  101. package/skills/eng-automation/references/especializacoes.md +18 -0
  102. package/skills/eng-backend-nestjs/SKILL.md +1 -1
  103. package/skills/eng-data/SKILL.md +271 -0
  104. package/skills/eng-data/references/1-fundamentos-dados.md +24 -0
  105. package/skills/eng-data/references/10-ciencia-dados.md +24 -0
  106. package/skills/eng-data/references/11-dataops-plataforma.md +24 -0
  107. package/skills/eng-data/references/12-seguranca-privacidade.md +24 -0
  108. package/skills/eng-data/references/2-modelagem-dados.md +24 -0
  109. package/skills/eng-data/references/3-bancos-dados.md +24 -0
  110. package/skills/eng-data/references/4-arquitetura-dados.md +24 -0
  111. package/skills/eng-data/references/5-pipelines-integracao.md +24 -0
  112. package/skills/eng-data/references/6-qualidade-dados.md +24 -0
  113. package/skills/eng-data/references/7-governanca-metadados.md +24 -0
  114. package/skills/eng-data/references/8-estatistica-analise.md +24 -0
  115. package/skills/eng-data/references/9-analytics-bi.md +24 -0
  116. package/skills/eng-data/references/especializacoes.md +20 -0
  117. package/skills/eng-frontend/SKILL.md +12 -5
  118. package/skills/eng-frontend/references/13-design-system.md +48 -0
  119. package/skills/eng-frontend/references/14-microfrontend.md +46 -0
  120. package/skills/eng-global-task-comment/SKILL.md +3 -3
  121. package/skills/eng-platform/SKILL.md +331 -0
  122. package/skills/eng-platform/references/1-fundamentos-sistemas.md +23 -0
  123. package/skills/eng-platform/references/10-resiliencia-arquitetura.md +24 -0
  124. package/skills/eng-platform/references/11-plataforma-devex.md +24 -0
  125. package/skills/eng-platform/references/12-finops-custos.md +24 -0
  126. package/skills/eng-platform/references/13-seguranca-fundamentos.md +26 -0
  127. package/skills/eng-platform/references/14-profiling-performance.md +23 -0
  128. package/skills/eng-platform/references/15-testes-carga-chaos.md +23 -0
  129. package/skills/eng-platform/references/16-cache-multicamada.md +22 -0
  130. package/skills/eng-platform/references/2-redes.md +23 -0
  131. package/skills/eng-platform/references/3-cloud.md +24 -0
  132. package/skills/eng-platform/references/4-iac-automacao.md +24 -0
  133. package/skills/eng-platform/references/5-containers-orquestracao.md +25 -0
  134. package/skills/eng-platform/references/6-cicd-entrega.md +24 -0
  135. package/skills/eng-platform/references/7-observabilidade.md +24 -0
  136. package/skills/eng-platform/references/8-confiabilidade-sre.md +24 -0
  137. package/skills/eng-platform/references/9-seguranca-infra.md +26 -0
  138. package/skills/eng-platform/references/especializacoes.md +34 -0
  139. package/skills/eng-qa/SKILL.md +283 -0
  140. package/skills/eng-qa/references/1-fundamentos-qualidade.md +25 -0
  141. package/skills/eng-qa/references/10-confiabilidade.md +25 -0
  142. package/skills/eng-qa/references/11-seguranca.md +24 -0
  143. package/skills/eng-qa/references/12-acessibilidade.md +24 -0
  144. package/skills/eng-qa/references/13-dados-testes.md +24 -0
  145. package/skills/eng-qa/references/14-gestao-testes-defeitos.md +25 -0
  146. package/skills/eng-qa/references/15-arquitetura-qa.md +25 -0
  147. package/skills/eng-qa/references/2-estrategia-planejamento.md +25 -0
  148. package/skills/eng-qa/references/3-design-testes.md +25 -0
  149. package/skills/eng-qa/references/4-manual-exploratorio.md +24 -0
  150. package/skills/eng-qa/references/5-automacao-testes.md +25 -0
  151. package/skills/eng-qa/references/6-api-integracao.md +25 -0
  152. package/skills/eng-qa/references/7-contrato.md +24 -0
  153. package/skills/eng-qa/references/8-interface-compat-mobile.md +24 -0
  154. package/skills/eng-qa/references/9-performance.md +24 -0
  155. package/skills/eng-qa/references/especializacoes.md +29 -0
  156. package/skills/eng-qa-planner/SKILL.md +264 -0
  157. package/skills/jarvis-context-detect/SKILL.md +1 -1
  158. package/skills/jarvis-context-detect/assets/context-profile-template.md +1 -1
  159. package/skills/jarvis-create-specialization/SKILL.md +8 -0
  160. package/skills/jarvis-docs-central/README.md +31 -28
  161. package/skills/jarvis-docs-central/SKILL.md +5 -5
  162. package/skills/jarvis-init/SKILL.md +9 -8
  163. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +47 -18
  164. package/skills/jarvis-list-specializations/SKILL.md +30 -17
  165. package/skills/jarvis-report-issue/SKILL.md +1 -1
  166. package/taxonomy.md +4 -16
  167. package/templates/AGENTS.md +2 -0
  168. package/templates/ENV-template.md +20 -2
  169. package/templates/engineering/advisor-template.md +65 -0
  170. package/templates/engineering/architecture-template.md +52 -4
  171. package/templates/engineering/qa/qa.sprint-plan-template.md +1 -1
  172. package/workflows/AGENTS.md +3 -1
  173. package/workflows/README.md +0 -10
  174. package/workflows/engineering/data/data.new-pipeline.md +6 -5
  175. package/workflows/engineering/eng.bug-audit.md +4 -14
  176. package/workflows/engineering/eng.debug.md +4 -20
  177. package/workflows/engineering/eng.plan.md +4 -26
  178. package/workflows/engineering/eng.pr.md +13 -63
  179. package/workflows/engineering/eng.pre-pr.md +14 -51
  180. package/workflows/engineering/eng.review.md +7 -13
  181. package/workflows/engineering/eng.rpa.robot.md +3 -9
  182. package/workflows/engineering/eng.start.md +37 -32
  183. package/workflows/engineering/eng.work.md +17 -40
  184. package/workflows/engineering/qa/eng.qa-sprint-planning.md +1 -1
  185. package/workflows/product/prod.spec.discovery.md +2 -2
  186. package/workflows/warm-up.md +35 -63
  187. package/agents/engineering/eng.cybersecurity.agent.md +0 -486
  188. package/agents/engineering/qa/eng.qa.cypress-specialist.md +0 -112
  189. package/bin/lib/docs/fetch-file.sh +0 -41
  190. package/bin/lib/docs/publish-file.sh +0 -284
  191. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +0 -137
  192. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +0 -181
  193. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +0 -120
  194. package/skills/eng-ai-engineer/SKILL.md +0 -303
  195. package/skills/eng-data-bi/SKILL.md +0 -206
  196. package/skills/eng-data-debug/SKILL.md +0 -314
  197. package/skills/eng-data-engineer/SKILL.md +0 -266
  198. package/skills/eng-data-onboard/SKILL.md +0 -317
  199. package/skills/eng-data-orchestrator/SKILL.md +0 -433
  200. package/skills/eng-devops-performance-engineer/SKILL.md +0 -319
  201. package/skills/eng-frontend-design-system/SKILL.md +0 -155
  202. package/skills/eng-frontend-design-system/references/1-estrutura-pacote.md +0 -57
  203. package/skills/eng-frontend-design-system/references/2-tokens.md +0 -116
  204. package/skills/eng-frontend-design-system/references/3-componentes.md +0 -165
  205. package/skills/eng-frontend-design-system/references/4-storybook.md +0 -85
  206. package/skills/eng-frontend-design-system/references/5-auditoria-versionamento.md +0 -76
  207. package/skills/eng-frontend-microfrontend/SKILL.md +0 -164
  208. package/skills/eng-frontend-microfrontend/references/1-criando-remote.md +0 -109
  209. package/skills/eng-frontend-microfrontend/references/2-configurando-shell.md +0 -70
  210. package/skills/eng-frontend-microfrontend/references/3-contratos-interface.md +0 -73
  211. package/skills/eng-frontend-microfrontend/references/4-shared-dependencies.md +0 -48
  212. package/skills/eng-frontend-microfrontend/references/5-event-bus.md +0 -59
  213. package/skills/eng-frontend-microfrontend/references/6-monorepo-deploy.md +0 -77
  214. package/skills/eng-frontend-microfrontend/references/7-troubleshooting.md +0 -45
  215. package/skills/eng-global-browser-extension-builder/SKILL.md +0 -392
  216. package/skills/eng-global-jira-comment/SKILL.md +0 -27
  217. package/skills/eng-qa-a11y-audit/SKILL.md +0 -276
  218. package/skills/eng-qa-bug-report/SKILL.md +0 -877
  219. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +0 -138
  220. package/skills/eng-qa-bug-report/references/1-integracao-task-managers.md +0 -148
  221. package/skills/eng-qa-bug-report/references/2-exemplos-de-uso.md +0 -46
  222. package/skills/eng-qa-bug-report/references/3-bug-to-test.md +0 -45
  223. package/skills/eng-qa-cypress-e2e/SKILL.md +0 -184
  224. package/skills/eng-qa-dev-guide/SKILL.md +0 -173
  225. package/skills/eng-qa-e2e/SKILL.md +0 -407
  226. package/skills/eng-qa-e2e-spec-writer/SKILL.md +0 -329
  227. package/skills/eng-qa-exploratory/SKILL.md +0 -196
  228. package/skills/eng-qa-gate/SKILL.md +0 -377
  229. package/skills/eng-qa-gate/assets/checklist-validacao.md +0 -291
  230. package/skills/eng-qa-graphql-contract/SKILL.md +0 -263
  231. package/skills/eng-qa-quality-report/SKILL.md +0 -419
  232. package/skills/eng-qa-test-plan/SKILL.md +0 -473
  233. package/skills/eng-qa-testsprite/SKILL.md +0 -332
  234. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +0 -224
  235. package/skills/eng-qa-unit-test/SKILL.md +0 -478
  236. package/skills/eng-scraper/SKILL.md +0 -260
  237. package/skills/eng-scraper/references/1-puppeteer.md +0 -140
  238. package/skills/eng-scraper/references/2-playwright-cheerio-pdf.md +0 -82
  239. package/skills/eng-scraper/references/3-anti-bot.md +0 -94
  240. package/skills/eng-scraper/references/4-resiliencia-etl-monitoramento.md +0 -137
  241. package/skills/eng-scraper-robot-builder/SKILL.md +0 -377
  242. package/skills/eng-security-cybersecurity/SKILL.md +0 -250
  243. package/skills/eng-security-cybersecurity/references/1-owasp-top-10.md +0 -331
  244. package/skills/eng-security-cybersecurity/references/2-secrets-management.md +0 -31
  245. package/skills/eng-security-cybersecurity/references/3-input-validation.md +0 -43
  246. package/skills/eng-security-cybersecurity/references/4-compliance.md +0 -20
  247. package/skills/eng-security-patch/SKILL.md +0 -388
  248. package/skills/eng-security-threat-model/SKILL.md +0 -171
  249. package/skills/eng-security-triage/SKILL.md +0 -276
  250. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +0 -311
  251. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +0 -249
  252. package/templates/engineering/qa/qa.cypress-test-template.md +0 -172
  253. package/templates/engineering/qa/qa.exploratory-session-template.md +0 -148
  254. package/templates/engineering/qa/qa.quality-report-template.md +0 -130
  255. package/workflows/engineering/eng.security-audit.md +0 -319
  256. package/workflows/engineering/eng.security-incident.md +0 -281
  257. package/workflows/engineering/eng.security-pipeline.md +0 -219
  258. package/workflows/engineering/eng.security-review.md +0 -241
  259. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +0 -57
  260. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +0 -57
  261. package/workflows/engineering/qa/eng.qa-exploratory-session.md +0 -68
  262. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +0 -209
  263. package/workflows/engineering/qa/eng.qa-quality-report.md +0 -85
  264. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-coverage-template.md +0 -0
  265. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-patterns.md +0 -0
  266. /package/templates/{CDD aplicado a Prompts.md → cdd-aplicado-a-prompts.md} +0 -0
@@ -1,284 +0,0 @@
1
- #!/bin/bash
2
- # Publica documento no central-docs (GitLab / GitHub / Bitbucket) via branch + MR/PR
3
-
4
- set -e
5
-
6
- LOCAL_FILE="$1" # Ex: ./docs/engineering/ard-api-wallet.md
7
- TIPO="$2" # prd|frd|ard|rfc
8
- FEATURE="$3" # Ex: api-wallet-auth-jwt
9
-
10
- # Resolver path absoluto do script (independente de cwd)
11
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
-
13
- if [ -z "$LOCAL_FILE" ] || [ -z "$TIPO" ] || [ -z "$FEATURE" ]; then
14
- echo "Uso: publish-file.sh <local-file> <tipo> <feature>" >&2
15
- echo "Tipos válidos: prd, frd, ard, rfc, swagger, qa-report" >&2
16
- exit 1
17
- fi
18
-
19
- if [ ! -f "$LOCAL_FILE" ]; then
20
- echo "Erro: Arquivo não encontrado: $LOCAL_FILE" >&2
21
- exit 1
22
- fi
23
-
24
- # Detectar IDE directory
25
- if [ -d ".windsurf" ]; then
26
- IDE=".windsurf"
27
- elif [ -d ".claude" ]; then
28
- IDE=".claude"
29
- elif [ -d ".cursor" ]; then
30
- IDE=".cursor"
31
- elif [ -d ".vscode" ]; then
32
- IDE=".vscode"
33
- else
34
- echo "Erro: IDE directory não encontrado (.windsurf, .claude, .cursor, .vscode)" >&2
35
- exit 1
36
- fi
37
-
38
- # 1. Ler ENV.md (se não houver override)
39
- if [ -n "$SQUAD_OVERRIDE" ] && [ -n "$WORKSPACE_OVERRIDE" ]; then
40
- # Usar override das variáveis de ambiente
41
- SQUAD="$SQUAD_OVERRIDE"
42
- WORKSPACE="$WORKSPACE_OVERRIDE"
43
- else
44
- # Ler do ENV.md
45
- if [ ! -f "$IDE/ENV.md" ]; then
46
- echo "Erro: ENV.md não encontrado em $IDE/" >&2
47
- echo "Ou passe --squad e --workspace via CLI" >&2
48
- exit 1
49
- fi
50
-
51
- SQUAD=$(grep '^SQUAD=' "$IDE/ENV.md" | cut -d'=' -f2 | tr -d ' ')
52
- WORKSPACE=$(grep '^WORKSPACE=' "$IDE/ENV.md" | cut -d'=' -f2 | tr -d ' ')
53
-
54
- if [ -z "$SQUAD" ] || [ -z "$WORKSPACE" ]; then
55
- echo "Erro: SQUAD ou WORKSPACE não definidos no ENV.md" >&2
56
- echo "Ou passe --squad e --workspace via CLI" >&2
57
- exit 1
58
- fi
59
- fi
60
-
61
- TARGET_BRANCH="${CENTRAL_DOCS_TARGET_BRANCH:-dev}"
62
-
63
- if [ -z "$CENTRAL_DOCS_REPO" ]; then
64
- echo "Erro: CENTRAL_DOCS_REPO não definido no ENV.md" >&2
65
- exit 1
66
- fi
67
-
68
- # 2. Validar frontmatter
69
- echo "Validando frontmatter..."
70
- node --input-type=module -e "
71
- import { validateFrontmatter } from 'file://${SCRIPT_DIR}/validate-frontmatter.js';
72
- try {
73
- validateFrontmatter('$LOCAL_FILE', '$TIPO');
74
- console.log('✅ Frontmatter válido');
75
- } catch (error) {
76
- console.error(error.message);
77
- process.exit(1);
78
- }
79
- "
80
-
81
- if [ $? -ne 0 ]; then
82
- exit 1
83
- fi
84
-
85
- # 3. Extrair metadados
86
- METADATA=$(node --input-type=module -e "
87
- import { extractMetadata } from 'file://${SCRIPT_DIR}/validate-frontmatter.js';
88
- const metadata = extractMetadata('$LOCAL_FILE');
89
- console.log(JSON.stringify(metadata));
90
- ")
91
-
92
- VERSION=$(echo "$METADATA" | jq -r '.version // "1.0.0"')
93
- STATUS=$(echo "$METADATA" | jq -r '.status // "draft"')
94
- JIRA=$(echo "$METADATA" | jq -r '.jira // ""')
95
- DOC_NAME=$(echo "$METADATA" | jq -r '.name // ""')
96
-
97
- # 4. Definir paths
98
- if [ "$TIPO" = "prd" ] || [ "$TIPO" = "frd" ]; then
99
- DEST_PATH="${SQUAD}/${WORKSPACE}/product/${TIPO}-${FEATURE}.md"
100
- AREA="product"
101
- elif [ "$TIPO" = "ard" ]; then
102
- DEST_PATH="${SQUAD}/${WORKSPACE}/engineering/ARD/${TIPO}-${FEATURE}.md"
103
- AREA="engineering"
104
- elif [ "$TIPO" = "rfc" ]; then
105
- DEST_PATH="${SQUAD}/${WORKSPACE}/engineering/RFC/${TIPO}-${FEATURE}.md"
106
- AREA="engineering"
107
- elif [ "$TIPO" = "swagger" ]; then
108
- # Detectar extensão do arquivo (yaml, json ou md)
109
- FILE_EXT="${LOCAL_FILE##*.}"
110
- if [ "$FILE_EXT" = "yaml" ] || [ "$FILE_EXT" = "yml" ]; then
111
- DEST_PATH="${SQUAD}/${WORKSPACE}/engineering/swagger/api-${FEATURE}.yaml"
112
- elif [ "$FILE_EXT" = "json" ]; then
113
- DEST_PATH="${SQUAD}/${WORKSPACE}/engineering/swagger/api-${FEATURE}.json"
114
- else
115
- # Default para .md (wrapper com metadados)
116
- DEST_PATH="${SQUAD}/${WORKSPACE}/engineering/swagger/swagger-${FEATURE}.md"
117
- fi
118
- AREA="engineering"
119
- elif [ "$TIPO" = "qa-report" ]; then
120
- DEST_PATH="${SQUAD}/${WORKSPACE}/engineering/qa/qa-report-${FEATURE}.md"
121
- AREA="engineering"
122
- else
123
- echo "Erro: Tipo inválido: $TIPO" >&2
124
- echo "Tipos válidos: prd, frd, ard, rfc, swagger, qa-report" >&2
125
- exit 1
126
- fi
127
-
128
- INDEX_PATH="${SQUAD}/${WORKSPACE}/index.md"
129
- BRANCH_NAME="docs/${SQUAD}/${WORKSPACE}/${TIPO}-${FEATURE}"
130
-
131
- echo ""
132
- echo "📋 Resumo da Publicação:"
133
- echo " Squad: $SQUAD"
134
- echo " Workspace: $WORKSPACE"
135
- echo " Tipo: $TIPO"
136
- echo " Feature: $FEATURE"
137
- echo " Destino: $DEST_PATH"
138
- echo " Branch: $BRANCH_NAME → $TARGET_BRANCH"
139
- echo ""
140
-
141
- # 5–6. Token e parse do repo ficam no adapter VCS (api.js)
142
-
143
- # 7. Ler conteúdo do arquivo local e encodar em base64
144
- FILE_CONTENT=$(cat "$LOCAL_FILE" | base64)
145
-
146
- # 8. Buscar index.md atual
147
- echo "Buscando index.md do workspace..."
148
- INDEX_CONTENT=$(bash "${SCRIPT_DIR}/fetch-file.sh" "$INDEX_PATH" "$TARGET_BRANCH" 2>/dev/null || echo "")
149
-
150
- if [ -z "$INDEX_CONTENT" ]; then
151
- echo "⚠️ index.md não encontrado, será criado"
152
- INDEX_ACTION="create"
153
- INDEX_CONTENT="# $WORKSPACE
154
-
155
- **Squad:** $SQUAD
156
-
157
- ## $AREA
158
-
159
- "
160
- else
161
- INDEX_ACTION="update"
162
- fi
163
-
164
- # 9. Adicionar nova linha ao index.md
165
- NEW_LINE="- [${TIPO}-${FEATURE}.md](${AREA}/${TIPO}-${FEATURE}.md) | v${VERSION} | ${STATUS}"
166
- [ -n "$JIRA" ] && NEW_LINE="${NEW_LINE} | jira: ${JIRA}"
167
- [ -n "$DOC_NAME" ] && NEW_LINE="${NEW_LINE} | ${DOC_NAME}"
168
-
169
- # Adicionar linha na seção correta
170
- UPDATED_INDEX=$(echo "$INDEX_CONTENT" | awk -v line="$NEW_LINE" -v area="$AREA" '
171
- /^## (product|engineering)/ {
172
- print
173
- if ($2 == area) {
174
- found = 1
175
- getline
176
- print line
177
- }
178
- next
179
- }
180
- { print }
181
- END {
182
- if (!found) {
183
- print ""
184
- print "## " area
185
- print line
186
- }
187
- }
188
- ')
189
-
190
- UPDATED_INDEX_B64=$(echo "$UPDATED_INDEX" | base64)
191
-
192
- # 10. Criar commit via adapter VCS
193
- echo "Criando branch e commit..."
194
-
195
- COMMIT_JSON=$(mktemp)
196
- cat > "$COMMIT_JSON" <<EOF
197
- {
198
- "branch": $(printf '%s' "$BRANCH_NAME" | jq -Rs .),
199
- "startBranch": $(printf '%s' "$TARGET_BRANCH" | jq -Rs .),
200
- "message": $(printf '%s' "docs(${SQUAD}): add ${TIPO} ${FEATURE}" | jq -Rs .),
201
- "files": [
202
- {
203
- "path": $(printf '%s' "$DEST_PATH" | jq -Rs .),
204
- "contentBase64": $(printf '%s' "$FILE_CONTENT" | jq -Rs .),
205
- "action": "create"
206
- },
207
- {
208
- "path": $(printf '%s' "$INDEX_PATH" | jq -Rs .),
209
- "contentBase64": $(printf '%s' "$UPDATED_INDEX_B64" | jq -Rs .),
210
- "action": $(printf '%s' "$INDEX_ACTION" | jq -Rs .)
211
- }
212
- ]
213
- }
214
- EOF
215
-
216
- COMMIT_RESULT=$(node --input-type=module -e "
217
- import { readFileSync } from 'node:fs';
218
- import { commitFiles } from 'file://${SCRIPT_DIR}/../vcs/api.js';
219
- const opts = JSON.parse(readFileSync('$COMMIT_JSON', 'utf-8'));
220
- const result = await commitFiles(process.env.CENTRAL_DOCS_REPO, opts);
221
- console.log(JSON.stringify(result));
222
- " 2>&1)
223
- COMMIT_EXIT=$?
224
- rm -f "$COMMIT_JSON"
225
-
226
- if [ $COMMIT_EXIT -ne 0 ]; then
227
- echo "❌ Erro ao criar commit:" >&2
228
- echo "$COMMIT_RESULT" >&2
229
- exit 1
230
- fi
231
-
232
- COMMIT_SHA=$(echo "$COMMIT_RESULT" | jq -r '.sha')
233
- echo "✅ Commit criado: $COMMIT_SHA"
234
-
235
- # 11. Criar MR/PR
236
- echo "Criando Merge/Pull Request..."
237
-
238
- MR_DESCRIPTION="## Documento
239
-
240
- - **Tipo**: ${TIPO}
241
- - **Workspace**: ${WORKSPACE}
242
- - **Feature**: ${FEATURE}"
243
-
244
- [ -n "$JIRA" ] && MR_DESCRIPTION="${MR_DESCRIPTION}
245
- - **Card**: ${JIRA}"
246
-
247
- [ -n "$DOC_NAME" ] && MR_DESCRIPTION="${MR_DESCRIPTION}
248
- - **Nome**: ${DOC_NAME}"
249
-
250
- BODY_FILE=$(mktemp)
251
- printf '%s' "$MR_DESCRIPTION" > "$BODY_FILE"
252
-
253
- MR_RESULT=$(node "${SCRIPT_DIR}/../vcs/create-merge.js" \
254
- --repo "$CENTRAL_DOCS_REPO" \
255
- --source "$BRANCH_NAME" \
256
- --target "$TARGET_BRANCH" \
257
- --title "docs(${SQUAD}): ${TIPO} ${FEATURE}" \
258
- --body-file "$BODY_FILE" 2>&1)
259
- MR_EXIT=$?
260
- rm -f "$BODY_FILE"
261
-
262
- if [ $MR_EXIT -ne 0 ]; then
263
- echo "❌ Erro ao criar MR/PR:" >&2
264
- echo "$MR_RESULT" >&2
265
- exit 1
266
- fi
267
-
268
- MR_URL=$(echo "$MR_RESULT" | tail -1 | jq -r '.url // empty')
269
- MR_IID=$(echo "$MR_RESULT" | tail -1 | jq -r '.iid // empty')
270
-
271
- echo ""
272
- echo "✅ Merge/Pull Request criado com sucesso!"
273
- echo ""
274
- echo " #${MR_IID}: ${BRANCH_NAME} → ${TARGET_BRANCH}"
275
- echo " URL: ${MR_URL}"
276
- echo ""
277
-
278
- # 12. Invalidar cache Redis
279
- redis-cli DEL "docs:${INDEX_PATH}:${TARGET_BRANCH}" >/dev/null 2>&1 || true
280
- redis-cli DEL "docs:${INDEX_PATH}:main" >/dev/null 2>&1 || true
281
-
282
- echo "🔄 Cache Redis invalidado"
283
- echo ""
284
- echo "✅ Publicação concluída!"
@@ -1,137 +0,0 @@
1
- # Regras de Sessão de Teste Exploratório — QA Engineering
2
-
3
- > **Applies to:** HUB: QA | POSITION: all | AREA: ENGINEERING | SQUAD: all
4
-
5
- Convenções para planejamento, execução e documentação de sessões de teste exploratório estruturado.
6
- Carregadas automaticamente pelo `warm-up` quando `HUB=QA`.
7
-
8
- ---
9
-
10
- ## 1. Estrutura de Charter
11
-
12
- Todo teste exploratório começa com um **charter** — a declaração do objetivo da sessão.
13
-
14
- **Formato obrigatório:**
15
-
16
- ```
17
- Explorar {área/feature/fluxo}
18
- para descobrir {tipo de informação / riscos a validar}
19
- com foco em {dimensão de qualidade}
20
- ```
21
-
22
- **Exemplos:**
23
-
24
- ```
25
- Explorar o fluxo de cadastro de veículos
26
- para descobrir comportamentos inesperados em campos opcionais e limites de dados
27
- com foco em robustez e validação de formulário
28
-
29
- Explorar a integração de pagamentos após alteração de plano
30
- para descobrir regressões introduzidas pela última release
31
- com foco em consistência de estado e mensagens ao usuário
32
- ```
33
-
34
- **Regras do charter:**
35
- - Máximo 3 linhas — objetivo claro, não um roteiro detalhado
36
- - Não listar passos no charter — exploração decide o caminho
37
- - Um charter por sessão (sessões paralelas têm charters independentes)
38
-
39
- ---
40
-
41
- ## 2. Time-box Padrão
42
-
43
- | Tipo de sessão | Duração | Quando usar |
44
- |----------------|---------|-------------|
45
- | Rápida (spot check) | 30 min | Verificação pontual, pós-fix rápido |
46
- | Padrão | 60 min | Feature nova, área de risco moderado |
47
- | Profunda | 90 min | Feature crítica, área de alto risco, pré-release |
48
-
49
- **Regras de time-box:**
50
- - Nunca estender uma sessão além do tempo definido — iniciar nova sessão se necessário
51
- - Os primeiros 10 min são de setup e entendimento — não contam como execução
52
- - Registrar hora de início e fim no documento de sessão
53
- - Pausa obrigatória de 15 min entre sessões consecutivas
54
-
55
- ---
56
-
57
- ## 3. Classificação de Severidade de Bugs
58
-
59
- | Severidade | Label | Critério | Ação imediata |
60
- |------------|-------|----------|---------------|
61
- | **Crítico** | `S1` | Sistema inutilizável, perda de dados, falha de segurança | Reportar imediatamente — não esperar fim da sessão |
62
- | **Alto** | `S2` | Feature principal quebrada, sem workaround óbvio | Reportar ao final da sessão, com evidência |
63
- | **Médio** | `S3` | Feature funciona mas com comportamento incorreto ou inconsistente | Registrar no doc da sessão, criar card após |
64
- | **Baixo** | `S4` | UI incorreta, texto errado, comportamento subótimo mas funcional | Registrar no doc da sessão, agrupar em batch |
65
- | **Melhoria** | `S5` | Não é bug — sugestão de UX ou comportamento melhor | Separar claramente de bugs reais |
66
-
67
- **Regras de severidade:**
68
- - Nunca sub-reportar para "não incomodar" — severidade é objetiva, não subjetiva
69
- - Um bug S1 interrompe a sessão e é reportado via canal direto ao time
70
- - Bugs S4 e S5 podem ser agrupados em um card único "ajustes UI/UX — {área}"
71
-
72
- ---
73
-
74
- ## 4. Critérios de Parada de Sessão
75
-
76
- Encerrar a sessão antes do time-box quando:
77
-
78
- | Critério | Ação |
79
- |----------|------|
80
- | Bug S1 encontrado | Interromper, reportar imediatamente, documentar contexto |
81
- | Ambiente instável (falhas de infra, não de software) | Encerrar, registrar causa, reagendar |
82
- | Charter atingido antes do tempo | Encerrar normalmente, registrar cobertura atingida |
83
- | Descoberta muda completamente o escopo | Encerrar, definir novo charter para próxima sessão |
84
-
85
- **Nunca encerrar uma sessão sem:**
86
- - Registrar o que foi explorado (mesmo que parcialmente)
87
- - Classificar cada achado com severidade
88
- - Marcar se o charter foi atingido (`completo`, `parcial`, `bloqueado`)
89
-
90
- ---
91
-
92
- ## 5. Dimensões de Qualidade para Foco
93
-
94
- Ao definir o charter, escolher no máximo 2 dimensões de qualidade:
95
-
96
- | Dimensão | O que verificar |
97
- |----------|----------------|
98
- | **Funcionalidade** | O comportamento faz o que a spec diz? |
99
- | **Robustez** | Reage bem a entradas inesperadas, limites, dados faltantes? |
100
- | **Consistência** | Estado do sistema permanece coerente após a ação? |
101
- | **Performance percebida** | Tempos de resposta aceitáveis para o usuário? |
102
- | **Acessibilidade** | Navegação por teclado, leitores de tela, contraste? |
103
- | **Segurança superficial** | Dados expostos indevidamente, autorização correta? |
104
- | **Integração** | Comunicação correta com outros módulos/serviços? |
105
- | **Regressão** | Funcionalidades existentes ainda funcionam após mudança? |
106
-
107
- ---
108
-
109
- ## 6. Evidências Obrigatórias
110
-
111
- Para cada bug reportado:
112
-
113
- ```
114
- - Severidade: S{1-5}
115
- - Passos para reproduzir: numerados, a partir do estado inicial
116
- - Comportamento observado: o que aconteceu
117
- - Comportamento esperado: o que deveria acontecer
118
- - Evidência: screenshot, vídeo ou log (obrigatório para S1/S2)
119
- - Ambiente: URL/versão/dados usados no momento do bug
120
- - Reprodutível?: sim / às vezes / não consegui reproduzir novamente
121
- ```
122
-
123
- ---
124
-
125
- ## 7. Integração com `eng-qa-bug-report`
126
-
127
- Ao final de cada sessão, para cada achado S1–S4, acionar o skill `eng-qa-bug-report`:
128
-
129
- ```
130
- /eng-qa-bug-report create
131
- --title="{descrição concisa}"
132
- --severity="S{1-4}"
133
- --session="{id da sessão}"
134
- --passos="{passos reproduzidos}"
135
- ```
136
-
137
- Achados S5 (melhorias) são registrados apenas no doc da sessão — não viram card automaticamente.
@@ -1,181 +0,0 @@
1
- > **Applies to:** HUB: QA | POSITION: QA-ENGINEER, SPECIALIST | AREA: ENGINEERING | SQUAD: all
2
-
3
- # Regras de Classificação de Score
4
-
5
- Sistema de pontuação e bloqueio para quality gates de tech specs.
6
-
7
- ## Faixas de Score
8
-
9
- ### 🚫 BLOQUEANTE - Score < 50%
10
-
11
- **Status**: Não conforme
12
- **Label**: `QualityGate::Bloqueado`
13
- **Ação**: Card **NÃO PODE** prosseguir para breakdown. Deve retornar para refinamento.
14
-
15
- #### Quando bloquear:
16
- - Faltam 3 ou mais critérios obrigatórios
17
- - Descrição completamente vazia ou genérica
18
- - SPIKE sem referências de discovery
19
- - Critérios de aceitação ausentes ou muito vagos
20
- - Bug sem passos para reproduzir
21
- - Análise técnica inexistente ou incompleta
22
- - Subtarefas propostas são fatias horizontais (só enum, só repository, só factory, só DTO, só contratos sem implementação funcional) ou não passam no Teste de Validação de independência
23
-
24
- #### Mensagem ao time:
25
- > ⚠️ **Card bloqueado para breakdown**. Tech spec não atende aos critérios mínimos de qualidade. Refine conforme recomendações e solicite nova análise.
26
-
27
- ---
28
-
29
- ### ⚠️ PARCIAL - Score 50-99%
30
-
31
- **Status**: Parcialmente conforme
32
- **Label**: `QualityGate::Parcial`
33
- **Ação**: Card **PODE** prosseguir, mas com ressalvas. Recomenda-se refinamento antes.
34
-
35
- #### Quando classificar como parcial:
36
- - 1-2 critérios obrigatórios faltando
37
- - Critérios presentes mas podem ser melhorados
38
- - Faltam alguns cenários de teste
39
- - Análise técnica superficial
40
- - Dependências parcialmente mapeadas
41
-
42
- #### Mensagem ao time:
43
- > ℹ️ **Card pode prosseguir com ressalvas**. A tech spec está funcional mas pode ser melhorada. Considere as recomendações para aumentar qualidade.
44
-
45
- ---
46
-
47
- ### ✅ CONFORME - Score 100%
48
-
49
- **Status**: Conforme
50
- **Label**: `QualityGate::Conforme`
51
- **Ação**: Card está **PRONTO** para breakdown de subtarefas.
52
-
53
- #### Quando aprovar:
54
- - Todos os critérios obrigatórios atendidos
55
- - Tech spec clara, completa e acionável
56
- - Equipe pode iniciar implementação sem dúvidas
57
- - Critérios de aceitação mensuráveis
58
- - Cenários de teste identificados
59
- - Análise técnica detalhada
60
- - Dependências mapeadas
61
-
62
- #### Mensagem ao time:
63
- > ✅ **Tech spec aprovada!** Todos os critérios de qualidade atendidos. Card pronto para breakdown de subtarefas.
64
-
65
- ---
66
-
67
- ## Cálculo de Score
68
-
69
- ### Metodologia
70
-
71
- 1. **Identificar critérios obrigatórios** do tipo de card (Task/Spike/Bug)
72
- 2. **Verificar cada critério**: Atendido = 1 ponto, Não atendido = 0 pontos
73
- 3. **Calcular percentual**: (Critérios atendidos / Total critérios) × 100
74
-
75
- ### Exemplo: Task
76
-
77
- | Critério | Atendido? | Peso |
78
- |----------|-----------|------|
79
- | Descrição Clara | ✅ Sim | 15% |
80
- | Critérios de Aceitação | ✅ Sim | 20% |
81
- | Cenários de Teste | ❌ Não | 15% |
82
- | Análise Técnica | ✅ Sim | 15% |
83
- | Dependências | ⚠️ Parcial | 10% |
84
- | **Valor Unitário (fatia vertical)** | ✅ Sim | **25%** |
85
-
86
- **Score**: 80/100 → **Parcial**
87
-
88
- > **Critério 6 — Valor Unitário (fatia vertical)** é o critério de maior peso. Avalia se as subtarefas propostas são **entregáveis completos e independentes** (endpoint inteiro, modal inteiro, tela inteira) e **não** fatias horizontais (só enum, só repository, só factory, só DTO). Uma subtarefa só é válida se, mergeada isoladamente, a aplicação continua funcionando e a entrega é observável.
89
-
90
- ---
91
-
92
- ## Matriz de Decisão
93
-
94
- | Score | Status | Label | Pode prosseguir? | Ação requerida |
95
- |-------|--------|-------|------------------|----------------|
96
- | 0-49% | 🚫 Não conforme | `QualityGate::Bloqueado` | ❌ Não | Refinamento obrigatório |
97
- | 50-99% | ⚠️ Parcial | `QualityGate::Parcial` | ⚠️ Com ressalvas | Refinamento recomendado |
98
- | 100% | ✅ Conforme | `QualityGate::Conforme` | ✅ Sim | Prosseguir para breakdown |
99
-
100
- ---
101
-
102
- ## Regras Especiais
103
-
104
- ### Critérios Críticos (Bloqueantes Automáticos)
105
-
106
- Mesmo com score > 50%, o card é **automaticamente bloqueado** se:
107
-
108
- #### Para SPIKE:
109
- - ❌ Ausência completa de referências de discovery
110
-
111
- #### Para BUG:
112
- - ❌ Ausência de passos para reproduzir
113
- - ❌ Ausência de análise técnica
114
-
115
- #### Para TASK:
116
- - ❌ Ausência de critérios de aceitação
117
- - ❌ Descrição vazia ou extremamente genérica (< 50 caracteres)
118
- - ❌ Subtarefas propostas são fatias horizontais (split por camada) — ex: cards separados para "criar enum", "criar repository", "criar factory", "criar DTO", "criar contratos/interfaces" sem implementação funcional
119
- - ❌ Subtarefas não passam no Teste de Validação de independência (não mergeáveis isoladamente sem quebrar o sistema)
120
-
121
- ### Exemplo:
122
- ```
123
- Score calculado: 60% (Parcial)
124
- Mas: Task sem critérios de aceitação
125
- Resultado final: BLOQUEADO (critério crítico não atendido)
126
- ```
127
-
128
- ---
129
-
130
- ## Processo de Reavaliação
131
-
132
- ### Após Correções
133
-
134
- 1. Desenvolvedor corrige problemas apontados
135
- 2. Solicita nova análise (comentário mencionando Quality Champion)
136
- 3. Nova validação é realizada
137
- 4. Score é recalculado
138
- 5. Label é atualizada
139
-
140
- ### Histórico de Validações
141
-
142
- Cada validação deve incluir:
143
- - Data/hora da análise
144
- - Score obtido
145
- - Status resultante
146
- - Principais gaps identificados
147
-
148
- Isso permite rastreabilidade e melhoria contínua do processo.
149
-
150
- ---
151
-
152
- ## Exceções e Escalação
153
-
154
- ### Quando Escalar
155
-
156
- Em casos excepcionais, pode-se solicitar aprovação manual:
157
-
158
- - Urgência crítica (produção parada)
159
- - Contexto especial conhecido pelo time
160
- - Tech spec de spike exploratório inicial
161
-
162
- **Processo**:
163
- 1. Adicionar comentário justificando exceção
164
- 2. Mencionar tech lead ou arquiteto
165
- 3. Obter aprovação explícita
166
- 4. Documentar decisão no card
167
-
168
- **Label**: `QualityGate::Exceção` (substitui label automática)
169
-
170
- ---
171
-
172
- ## Métricas de Qualidade
173
-
174
- ### KPIs Sugeridos
175
-
176
- - **Taxa de conformidade**: % de cards com score 100%
177
- - **Taxa de bloqueio**: % de cards < 50%
178
- - **Tempo médio de refinamento**: Tempo entre bloqueio e aprovação
179
- - **Reincidência**: Cards bloqueados > 1 vez
180
-
181
- Essas métricas ajudam a identificar gaps de processo e melhorar qualidade geral das tech specs.