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,230 @@
1
+ > **Applies to:** HUB: BACKEND | POSITION: all | AREA: ENGINEERING | SQUAD: all
2
+
3
+ # Eng RPA Rules — Padrões de Arquitetura e Código para Robôs de Automação
4
+
5
+ ## Objetivo
6
+
7
+ Definir padrões de arquitetura, estrutura de projeto, resiliência, observabilidade e segurança
8
+ para robôs de automação RPA. Toda implementação nova deve seguir estas regras.
9
+
10
+ ---
11
+
12
+ ## 0. Princípios Fundamentais
13
+
14
+ ### HTTP-first
15
+
16
+ Sempre tentar quebrar o site via requisição HTTP antes de recorrer ao browser.
17
+ Browser é mais lento, frágil e custoso — só usar quando HTTP não for viável.
18
+
19
+ 1. Inspecionar as requests de rede do fluxo alvo (DevTools, Playwright MCP, CLI codegen)
20
+ 2. Se existir API ou endpoint HTTP → implementar sem browser
21
+ 3. Só partir para browser se renderização JS for obrigatória ou não houver API exposta
22
+
23
+ ### Infraestrutura Anti-bot é Pré-requisito Compartilhado
24
+
25
+ Captcha solving e proxy rotation são recursos de infraestrutura do projeto — **não implementar do zero por robô**.
26
+
27
+ - Antes de criar um robô novo, verificar se esses serviços já existem no projeto
28
+ - Se não existirem, escalar para o TL — o robô não deve ser iniciado sem essa infraestrutura quando o sistema-alvo exigir
29
+ - Cada robô consome a infraestrutura existente, nunca a reimplementa
30
+
31
+ ---
32
+
33
+ ## 1. Estrutura de Projeto
34
+
35
+ ### Localização dos Robôs
36
+
37
+ ```
38
+ src/
39
+ robots/
40
+ {robot-tag}/
41
+ {robot-tag}.robot.ts ← classe principal do robô
42
+ {robot-tag}.types.ts ← tipos e interfaces
43
+ {robot-tag}.config.ts ← configurações (sem credenciais hardcodadas)
44
+ {robot-tag}.spec.ts ← testes unitários (mocks de browser/HTTP)
45
+ ```
46
+
47
+ ### Nomenclatura
48
+
49
+ - `{robot-tag}` sempre em `kebab-case` (ex: `consulta-orgao`, `extrator-dados`)
50
+ - Classe do robô: `{RobotTag}Robot` em PascalCase (ex: `ConsultaOrgaoRobot`)
51
+ - Método principal: `execute(input: Input): Promise<Output>`
52
+ - Métodos internos de fase: `_phaseNome()` — prefixo `_` para métodos privados de fase
53
+
54
+ ---
55
+
56
+ ## 2. Resiliência
57
+
58
+ ### Seletores CSS/XPath
59
+
60
+ Prioridade obrigatória (do mais para o menos estável):
61
+
62
+ 1. `id` do elemento
63
+ 2. `data-*` atributo semântico (ex: `data-testid`, `data-cy`)
64
+ 3. CSS estável baseado em estrutura semântica (ex: `.form-login input[type="password"]`)
65
+ 4. XPath por texto literal (ex: `//button[text()="Entrar"]`)
66
+ 5. ❌ **NUNCA** seletor posicional sem fallback (ex: `tr:nth-child(3) > td:nth-child(2)`)
67
+
68
+ Se seletor posicional for inevitável, documentar no `{robot-tag}-robot.md` com razão explícita.
69
+
70
+ ### Retry com Backoff
71
+
72
+ Todo I/O que pode falhar (navegação, clique, requisição HTTP) deve ter retry:
73
+
74
+ ```typescript
75
+ // Padrão mínimo aceitável
76
+ const retryConfig = {
77
+ maxAttempts: 3,
78
+ baseDelayMs: 1000,
79
+ backoffFactor: 2, // 1s → 2s → 4s
80
+ jitterMs: 500, // evita thundering herd
81
+ };
82
+ ```
83
+
84
+ Use `p-retry` ou implemente wrapper equivalente. Nunca `try/catch` com `setTimeout` fixo.
85
+
86
+ ### Timeout por Fase
87
+
88
+ Definir timeout explícito por operação — nunca depender do timeout padrão do framework:
89
+
90
+ ```typescript
91
+ await page.goto(url, { waitUntil: 'networkidle2', timeout: 30_000 });
92
+ await page.waitForSelector(selector, { timeout: 10_000 });
93
+ ```
94
+
95
+ ---
96
+
97
+ ## 3. Observabilidade
98
+
99
+ ### Logs Estruturados por Fase
100
+
101
+ Todo robô deve logar no início e fim de cada fase, com contexto suficiente para diagnóstico:
102
+
103
+ ```typescript
104
+ // Início de fase
105
+ logger.log({ phase: 'autenticacao', status: 'iniciando', robotTag, inputId });
106
+
107
+ // Sucesso
108
+ logger.log({ phase: 'autenticacao', status: 'ok', robotTag, durationMs });
109
+
110
+ // Falha
111
+ logger.error({ phase: 'autenticacao', status: 'falha', robotTag, error: err.message, attempt });
112
+ ```
113
+
114
+ Usar `@nestjs/common` Logger ou equivalente configurado no projeto. Nunca `console.log`.
115
+
116
+ ### Screenshot em Falha
117
+
118
+ Para robôs com browser headless, capturar screenshot automaticamente em qualquer erro não recuperável:
119
+
120
+ ```typescript
121
+ catch (err) {
122
+ await page.screenshot({ path: `./debug/${robotTag}-${Date.now()}.png`, fullPage: true });
123
+ logger.error({ phase, status: 'falha', screenshot: true, error: err.message });
124
+ throw err;
125
+ }
126
+ ```
127
+
128
+ ### Métricas Mínimas
129
+
130
+ Registrar ao final de cada execução:
131
+ - `durationMs` — tempo total de execução
132
+ - `recordsExtracted` — quantidade de registros obtidos (0 é um valor válido, mas deve ser logado)
133
+ - `attempt` — número de tentativas utilizadas
134
+
135
+ ---
136
+
137
+ ## 4. Configuração e Segurança
138
+
139
+ ### Credenciais
140
+
141
+ - ❌ **NUNCA** hardcodar credenciais, tokens, cookies ou senhas no código
142
+ - ✅ Sempre via variáveis de ambiente: `process.env.ROBOT_USER`, `process.env.ROBOT_PASSWORD`
143
+ - Documentar quais variáveis são necessárias no `{robot-tag}-robot.md` (sem os valores)
144
+
145
+ ### User-Agent e Headers
146
+
147
+ - Nunca usar `headless: true` sem configurar user-agent realista
148
+ - Configurar viewport, user-agent e idioma conforme o sistema-alvo espera
149
+ - Não falsificar identidade de formas que violem ToS do sistema-alvo
150
+
151
+ ### robots.txt e ToS
152
+
153
+ **Obrigatório antes de qualquer implementação:**
154
+
155
+ ```bash
156
+ curl -s "{sistema-alvo}/robots.txt"
157
+ ```
158
+
159
+ Se houver restrições, comunicar ao usuário antes de escrever qualquer linha de código.
160
+ Documentar o resultado no `{robot-tag}-robot.md` na seção de Visão Geral.
161
+
162
+ ---
163
+
164
+ ## 5. Testes
165
+
166
+ ### Testes Unitários (obrigatório)
167
+
168
+ - Mockar o browser (Puppeteer/Playwright) ou HTTP client — nunca testar contra o sistema-alvo real em CI
169
+ - Testar pelo menos: fluxo feliz, falha de autenticação, timeout de seletor, resposta vazia
170
+ - Cobertura mínima: 70% das branches do método `execute()`
171
+
172
+ ### Testes de Integração (condicional)
173
+
174
+ - Executar manualmente antes do PR em ambiente com acesso ao sistema-alvo
175
+ - Não incluir no pipeline de CI sem ambiente controlado
176
+
177
+ ### TestSprite (recomendado para fluxos de UI)
178
+
179
+ Quando o robô interage com interface visual (browser headless), usar o skill `eng-qa-testsprite` para gerar e executar testes do fluxo de automação:
180
+
181
+ ```
182
+ /eng-qa-testsprite
183
+ ```
184
+
185
+ - Útil para validar que o fluxo completo (login → navegação → extração) continua funcionando após mudanças
186
+ - Complementa os testes unitários com validação end-to-end contra o sistema-alvo em ambiente controlado
187
+ - Referência: `$IDE/skills/eng-qa-testsprite/SKILL.md`
188
+
189
+ ---
190
+
191
+ ## 6. Documentação (obrigatório ao final de cada implementação)
192
+
193
+ Seguir `$IDE/rules/engineering/eng.docs-scraping-rules.md` sem exceções.
194
+
195
+ Criar ou atualizar `docs/engineering/robots/{robot-tag}-robot.md` com:
196
+ - Visão Geral (o que coleta e o que **não** coleta)
197
+ - Fluxo de Execução (sequência de passos com URLs)
198
+ - Fontes de Dados e Campos Extraídos
199
+ - Variáveis de Ambiente necessárias
200
+ - Limitações Conhecidas
201
+ - Histórico de Bugs
202
+
203
+ ---
204
+
205
+ ## 7. Definição de Pronto para Robôs RPA
206
+
207
+ Um robô está pronto para PR quando:
208
+
209
+ - [ ] Classe implementada seguindo a estrutura de projeto definida
210
+ - [ ] Retry com backoff em todos os I/Os que podem falhar
211
+ - [ ] Logs estruturados por fase com contexto de diagnóstico
212
+ - [ ] Screenshot automático em falha (para browser headless)
213
+ - [ ] Testes unitários com cobertura ≥ 70% das branches do `execute()`
214
+ - [ ] Nenhuma credencial hardcodada (todas via `process.env`)
215
+ - [ ] `{robot-tag}-robot.md` criado ou atualizado
216
+ - [ ] robots.txt verificado e resultado documentado
217
+
218
+ ---
219
+
220
+ ## Exceções
221
+
222
+ Qualquer exceção a estas regras deve ser documentada no `{robot-tag}-robot.md`
223
+ com justificativa explícita. Exceções recorrentes devem ser propostas como atualização desta rule.
224
+
225
+ ## Referências
226
+
227
+ - `$IDE/rules/engineering/eng.docs-scraping-rules.md` — padrão de documentação de robôs
228
+ - `$IDE/skills/eng-scraper/SKILL.md` — skill de scraping (Puppeteer, Playwright, ETL)
229
+ - `$IDE/skills/eng-scraper-robot-builder/SKILL.md` — skill de automação via Stagehand
230
+ - `$IDE/agents/engineering/eng.rpa.agent.md` — agente especializado RPA (ARACHNE)
@@ -0,0 +1,24 @@
1
+ # Rules de produto
2
+
3
+ Regras **invioláveis** que os agentes seguem em fluxos de especificação (`prod-rules.md`).
4
+
5
+ ## Para quem desenvolve (aprender produto + Jarvis)
6
+
7
+ Documentação didática (termos por extenso, exemplos, quando usar cada comando):
8
+
9
+ → **[`docs/produto/`](../../docs/produto/README.md)**
10
+
11
+ | Comando | Página |
12
+ |---------|--------|
13
+ | Guia de decisão (qual spec?) | [prod.spec.guide.md](../../docs/produto/prod.spec.guide.md) |
14
+ | `/prod.spec` | [prod.spec.md](../../docs/produto/prod.spec.md) |
15
+ | `/prod.spec.prd` | [prod.spec.prd.md](../../docs/produto/prod.spec.prd.md) |
16
+ | `/prod.spec.frd` | [prod.spec.frd.md](../../docs/produto/prod.spec.frd.md) |
17
+ | `/prod.spec.breakdown` | [prod.spec.breakdown.md](../../docs/produto/prod.spec.breakdown.md) |
18
+ | `/prod.spec.clarify` | [prod.spec.clarify.md](../../docs/produto/prod.spec.clarify.md) |
19
+ | `/prod.spec.epic` | [prod.spec.epic.md](../../docs/produto/prod.spec.epic.md) |
20
+ | `/prod.spec.issue` | [prod.spec.issue.md](../../docs/produto/prod.spec.issue.md) |
21
+
22
+ ## Arquivo normativo (agentes)
23
+
24
+ - [`prod-rules.md`](./prod-rules.md) — ENV, pastas, status, convenção de nomes, formato de perguntas
@@ -0,0 +1,151 @@
1
+ ---
2
+ trigger: always_on
3
+ ---
4
+
5
+ > **Applies to:** HUB: all | POSITION: all | AREA: all | SQUAD: all
6
+
7
+ ## Principais Regras
8
+ - O idioma padrão é o português do Brasil. Mas mude caso o usuário solicite outro idioma.
9
+ - Leia o `./$IDE/ENV.md` para entender as variáveis de ambiente do framework. Ele é importante para você saber caminhos de pastas e outras informações sobre projeto e usuário.
10
+ - Se não existir, use o skill `init-jarvis` para criar o `ENV.md`.
11
+ - Procure `CLAUDE.md` ou `AGENTS.md` para entender informações sobre o contexto e objetivo do projeto.
12
+ - Se não existirem, use o skill `init-jarvis` para criar o `AGENTS.md` e após essa criação, copie o conteúdo do `AGENTS.md` para o `CLAUDE.md` (se não existir o CLAUDE.md, crie-o).
13
+ - Nunca invente ou presuma dados ou informações. Se não souber, pergunte, valide e confirme com o usuário.
14
+ - Entenda se o projeto é novo ou existente, para criar ou modificar especificações de produto ou técnicas.
15
+
16
+ ## Variáveis de ambiente
17
+
18
+ IMPORTANTE: Para que você funcione como o previsto e tenha todas as informações necessárias, é importante que você leia e interprete o arquivo `./$IDE/ENV.md`. Esse é o arquivo que guardamos variáveis de informações importantes sobre o projeto, o usuário e estruturas de pastas e arquivos que você precisará para operar corretamente.
19
+
20
+ - **Sempre no início de novas sessões ou interações, ANTES de executar qualquer comando ou workflow**, o agente **DEVE verificar** se o arquivo `$IDE/ENV.md` existe e está preenchido corretamente.
21
+ - **Exceção**: O comando `/init-jarvis` é o único que pode ser executado sem o `ENV.md`, pois é ele que cria o arquivo.
22
+ - **Validação obrigatória**: O arquivo deve conter as seguintes variáveis preenchidas (não vazias):
23
+ - `RULES_FOLDER`
24
+ - `PROD_FOLDER_NAME`
25
+ - `PROD_RULES`
26
+ - `PROD_FLOWS`
27
+ - `PROD_TEMPLATES`
28
+ - `PROD_DOCS`
29
+ - `CENTRAL_DOCS_REPO`
30
+ - **Se o ENV.md não existir ou estiver incompleto**, o agente deve:
31
+ 1. Interromper a execução do comando solicitado
32
+ 2. Informar ao usuário que não podemos avançar sem o ENV.md. Mensagem abaixo.
33
+ 3. Após confirmação, executar via Skill tool o `init-jarvis`. No caso de negativa, o agente poderá avançar apenas para criar especificações de produto. E sempre que precisar salvar arquivos das especificações, deverá confirmar com o usuário.
34
+ ```
35
+ ⚠️ O framework não foi inicializado.
36
+
37
+ O arquivo ENV.md não existe ou está incompleto. Vamos criar um novo ENV.md e configurar o ambientes antes de continuar?
38
+ ```
39
+
40
+ Se o arquivo não existir ou no caso de recusa, crie o `$IDE/ENV.md` incluindo as seguintes variáveis como base para executar as instruções e os comandos de especificações de produto:
41
+ ```
42
+ RULES_FOLDER=.$IDE/rules
43
+ PROD_FOLDER_NAME=product
44
+ PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
45
+ PROD_FLOWS=.$IDE/$FLOWS_FOLDER/$PROD_FOLDER_NAME
46
+ PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
47
+ PROD_DOCS=$DOCS_FOLDER/$PROD_FOLDER_NAME
48
+ CENTRAL_DOCS_REPO=[USER:LOCAL_CENTRAL_DOCS_REPO]
49
+ ```
50
+
51
+ Abaixo, segue uma descrição de algumas das variáveis mais importantes para as rotinas de produto:
52
+
53
+ - $DOCS_FOLDER é o nome da pasta principal de documentações do projeto. Ela fica localizada na raiz do projeto.
54
+ - $PROD_DOCS é o nome da pasta principal de documentações de produto do projeto.
55
+ - $PROD_FOLDER_NAME é o nome padrão da pasta de produto que será usada em diversos contextos do projeto.
56
+ - $TEMPLATES_FOLDER é o nome da pasta principal de templates do projeto.
57
+ - $PROD_TEMPLATES é o caminho completo para os templates de produto.
58
+ - $FLOWS_FOLDER é o nome da pasta de workflows e comandos utilizados pelos IDEs. (tenha em mente que o nome da pasta pode variar de acordo com a IDE utilizada)
59
+ - $RULES_FOLDER é o nome da pasta principal de regras invioláveis que os agentes devem seguir.
60
+ - $PROD_RULES é o caminho para a pasta que contém as regras de produto. Leia todos os arquivos dentro dessa pasta para entender as regras de produto.
61
+ - $CENTRAL_DOCS_REPO é o caminho para a pasta local que contém as especificações de produto centralizadas. Essa pasta é usada para manter um índice global de todas as especificações de produto.
62
+
63
+
64
+ ## VARIÁVEL `$IDE` - DETECÇÃO AUTOMÁTICA DA PASTA DA IDE
65
+ - A variável `$IDE` representa a pasta da IDE que o usuário está utilizando.
66
+ - O agente **DEVE detectar automaticamente** qual pasta existe no projeto:
67
+ - `.windsurf/` → Windsurf IDE
68
+ - `.claude/` → Claude Code (Anthropic)
69
+ - `.cursor/` → Cursor IDE
70
+ - `.codex/` → Codex CLI (OpenAI)
71
+ - `.opencode/` → OpenCode
72
+ - `.gemini/` → Gemini CLI / Antigravity (Google)
73
+ - **Como usar**: Em qualquer referência a caminhos, use `$IDE/` como prefixo.
74
+ - **Exemplos de resolução**:
75
+ - `$IDE/ENV.md` → `.windsurf/ENV.md` (se usando Windsurf)
76
+ - `$IDE/ENV.md` → `.claude/ENV.md` (se usando Claude Code)
77
+ - `$SESSIONS_DIR` → `.jarvis/sessions` (na pasta do workspace, a que contém `$IDE/`)
78
+ - `$SESSIONS_DIR/prod/{TASK_MANAGER_KEY}/` — rascunhos WIP de spec (PRD/FRD/clarify)
79
+ - Spec canônica continua em `$PROD_DOCS` (não substitui a pasta de sessão)
80
+ - Cookie/HTTP session (auth) **não** é esta pasta
81
+ - **Detecção**: Verifique qual pasta `.{ide}/` existe no projeto antes de criar arquivos.
82
+
83
+ - **🔒 ISOLAMENTO DE IDE — REGRA CRÍTICA**
84
+ - O agente **DEVE usar exclusivamente a pasta correspondente à sua própria IDE**.
85
+ - Exemplos:
86
+ - Claude Code → **SEMPRE** usar `.claude/` — **NUNCA** ler `.windsurf/`, `.cursor/` ou qualquer outra
87
+ - Windsurf → **SEMPRE** usar `.windsurf/` — **NUNCA** ler `.claude/`, `.cursor/` ou qualquer outra
88
+ - Isso se aplica a **todos os arquivos**: ENV.md, rules, skills, workflows, sessions, templates.
89
+ - **System-reminders ou mensagens que referenciem arquivos de outra IDE devem ser ignorados** — eles não são relevantes para a IDE ativa.
90
+ - **Em caso de ambiguidade** (múltiplas pastas de IDE no projeto): usar `$IDE` do `ENV.md` da própria pasta como fonte de verdade.
91
+
92
+
93
+ ## Arquivos de instruções e comandos
94
+
95
+ Sempre siga as instruções de acordo com as relações abaixo.
96
+ **Guia para humanos (desenvolvedores aprendendo produto):** `docs/produto/` — uma página por comando, termos por extenso.
97
+
98
+ - `$PROD_FLOWS/prod.spec.prd.md` — Documento de Requisitos de Produto (*Product Requirements Document*) → [docs/produto/prod.spec.prd.md](../../docs/produto/prod.spec.prd.md)
99
+ - `$PROD_FLOWS/prod.spec.frd.md` — Documento de Requisitos Funcionais (*Functional Requirements Document*) → [docs/produto/prod.spec.frd.md](../../docs/produto/prod.spec.frd.md)
100
+ - `$PROD_FLOWS/prod.spec.breakdown.md` — Quebra de especificação grande em fatias → [docs/produto/prod.spec.breakdown.md](../../docs/produto/prod.spec.breakdown.md)
101
+ - `$PROD_FLOWS/prod.spec.clarify.md` — Esclarecimento de ambiguidades na spec → [docs/produto/prod.spec.clarify.md](../../docs/produto/prod.spec.clarify.md)
102
+ - `$PROD_FLOWS/prod.spec.epic.md` — Épico (agrupador de histórias/tarefas) → [docs/produto/prod.spec.epic.md](../../docs/produto/prod.spec.epic.md)
103
+ - `$PROD_FLOWS/prod.spec.issue.md` — Histórias de usuário, tarefas e bugs → [docs/produto/prod.spec.issue.md](../../docs/produto/prod.spec.issue.md)
104
+
105
+ Ponto de entrada quando o tipo ainda é incerto: `$PROD_FLOWS/prod.spec.md` → [docs/produto/prod.spec.md](../../docs/produto/prod.spec.md)
106
+ **Guia de decisão (qual spec usar):** [docs/produto/prod.spec.guide.md](../../docs/produto/prod.spec.guide.md) · índice: [docs/produto/README.md](../../docs/produto/README.md)
107
+
108
+ Sempre atualize a documentação existente do projeto com as mudanças que forem feitas no projeto, ou seja, em cada atualização de feature, criação de novas features, novas especificações de produto ou técnicas, atualize as documentações existentes — principalmente os **Documentos de Requisitos de Produto** e os **Documentos de Requisitos Funcionais** — de forma a manter o projeto atualizado.
109
+
110
+ Siga sempre o formato markdown para fazer os arquivos finais.
111
+
112
+ ## Descrição dos Status
113
+
114
+ Em itens e especificações, utilizamos status para identificar quais etapas do desenvolvimento cada item está. Isso é representado pela variável `$ITEM_STATUS`.
115
+
116
+ - icebox: Lista de ideias, necessidades e desejos. Item que está aguardando priorização ou definição de escopo.
117
+ - in_review: Item que está sendo estudado, descoberto, revisado ou analisado.
118
+ - backlog: Item já foi estudado, sabemos o que fazer e está aguardando priorização de implementação.
119
+ - in_progress: Item que está em desenvolvimento.
120
+ - in_production: Item que está em produção.
121
+ - cancelled: Item que foi descontinuado ou cancelado.
122
+
123
+
124
+ ## Padrão de nomes e pastas
125
+
126
+ Dentro das pastas do projeto, os caminhos de pastas e o nome dos arquivos finais devem ser criados seguindo esse padrão:
127
+
128
+ - Documento de Requisitos de Produto: `$PROD_DOCS/prd-{id}-{nome}/prd-{id}-{nome}.md`
129
+ - Documento de Requisitos Funcionais: `$PROD_DOCS/prd-{id}-{nome-do-pai}/frd-{id}-{nome}.md`
130
+ - Épico: `$PROD_DOCS/prd-{id}-{nome-do-pai}/issues/epic-{id}-{nome}.md`
131
+ - História / tarefa: `$PROD_DOCS/prd-{id}-{nome-do-pai}/issues/{story|task}-{id}-{nome}.md`
132
+
133
+ O ID deve ser iterado nos novos arquivos seguindo a sequência existente.
134
+
135
+ ## Perguntas para guiar o usuário
136
+
137
+ Para fazer perguntas ao usuário:
138
+ 1. Tente usar o tool `AskUserQuestion` se ele estiver disponível no seu ambiente (ex: Claude Desktop, Claude Cowork, Claude Code CLI).
139
+ 2. Se não estiver disponível, use **obrigatoriamente** (se possível) o formato de tabela abaixo. Caso não possível no formato de tabela, faça perguntas em texto corrido.
140
+ 3. Nunca avance sem coletar as respostas necessárias.
141
+
142
+ ```
143
+ | | {Aqui fica a pergunta que você deve fazer para o usuário. Seja objetivo e direto ao ponto:} |
144
+ | --- | ----------------------------------------------------------------------------------------- |
145
+ | A | {Resposta 1} |
146
+ | B | {Resposta 2} |
147
+ | C | {Resposta 3} |
148
+ | D | {Resposta 4} |
149
+ ```
150
+
151
+ **NUNCA** pergunte tudo de uma vez, sempre faça perguntas separadas e aguarde a resposta antes de prosseguir.
@@ -0,0 +1,68 @@
1
+ ---
2
+ trigger: always_on
3
+ env_file: "@/ENV.md"
4
+ ---
5
+
6
+ > **Applies to:** HUB: all | POSITION: all | AREA: all | SQUAD: all
7
+
8
+ # RTK — Token-Efficient Bash Commands
9
+
10
+ Quando `RTK_ENABLED=true` no ENV.md, use o prefixo `rtk` em chamadas Bash para reduzir
11
+ 60-90% dos tokens consumidos por outputs de shell.
12
+
13
+ ---
14
+
15
+ ## Regra de uso
16
+
17
+ **Antes de executar qualquer comando Bash**, verificar se RTK está disponível:
18
+
19
+ ```bash
20
+ which rtk 2>/dev/null
21
+ ```
22
+
23
+ - Se RTK estiver no PATH: usar `rtk <comando>` em vez do comando direto
24
+ - Se RTK **não** estiver no PATH: executar o comando original sem alteração
25
+
26
+ **Fallback gracioso**: nunca falhar por causa do RTK. Se `rtk` não estiver
27
+ instalado ou retornar erro, executar o comando original.
28
+
29
+ ---
30
+
31
+ ## Comandos reescritos
32
+
33
+ Todos os comandos de shell devem ser prefixados com `rtk`:
34
+
35
+ ```bash
36
+ # Exemplos de reescrita
37
+ rtk git status # em vez de: git status
38
+ rtk git diff # em vez de: git diff
39
+ rtk git log # em vez de: git log
40
+ rtk ls -la # em vez de: ls -la
41
+ rtk npm test # em vez de: npm test
42
+ rtk npm run build # em vez de: npm run build
43
+ rtk cat package.json # em vez de: cat package.json
44
+ ```
45
+
46
+ O RTK comprime o output automaticamente — o comportamento do comando não muda.
47
+
48
+ ---
49
+
50
+ ## Meta-comandos RTK (usar diretamente)
51
+
52
+ Estes comandos são do próprio RTK e devem ser usados sem proxy:
53
+
54
+ ```bash
55
+ rtk gain # Exibir analytics de economia de tokens
56
+ rtk gain --history # Histórico de uso com economia por comando
57
+ rtk discover # Analisar histórico do Claude Code para oportunidades perdidas
58
+ rtk proxy <cmd> # Executar comando sem filtro (debug)
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Quando NÃO usar RTK
64
+
65
+ - Comandos interativos que precisam de input do usuário
66
+ - Pipes complexos onde a compressão pode afetar o resultado
67
+ - Quando o comando original precisa de output exato (ex: parsing JSON)
68
+ - Se `which rtk` falhar — usar o comando original silenciosamente