jarvis-ai-framework 1.1.0 → 2.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 (165) hide show
  1. package/AGENTS.md +59 -60
  2. package/README.md +24 -10
  3. package/agents/AGENTS.md +8 -5
  4. package/agents/README.md +8 -12
  5. package/agents/engineering/data/eng.data-engineer.agent.md +6 -6
  6. package/agents/engineering/eng.agent.md +19 -36
  7. package/agents/engineering/eng.bug-hunter.md +13 -12
  8. package/agents/engineering/eng.cybersecurity.agent.md +20 -35
  9. package/agents/engineering/eng.docs-writer.md +2 -2
  10. package/agents/engineering/eng.frontend.agent.md +17 -22
  11. package/agents/engineering/eng.rpa.agent.md +5 -15
  12. package/agents/engineering/qa/eng.qa.test-architect.md +4 -4
  13. package/agents/engineering/qa/eng.qa.test-planner.md +3 -3
  14. package/agents/engineering/qa/eng.qa.testing-engineer.md +3 -3
  15. package/agents/product/prod.discovery-interviewer.md +2 -2
  16. package/bin/commands/init.js +5 -5
  17. package/bin/jarvis.js +1 -1
  18. package/bin/lib/config/constants.js +35 -0
  19. package/package.json +1 -1
  20. package/rules/AGENTS.md +5 -3
  21. package/rules/engineering/eng-rules.md +5 -3
  22. package/rules/engineering/eng-security-rules.md +4 -4
  23. package/rules/engineering/eng.docs-scraping-rules.md +1 -1
  24. package/rules/engineering/eng.downstream-flow-rules.md +1 -1
  25. package/rules/engineering/eng.integrations-rules.md +2 -2
  26. package/rules/engineering/eng.pre-pr-rules.md +1 -1
  27. package/rules/engineering/eng.skills-rules.md +60 -0
  28. package/rules/engineering/eng.specializations-rules.md +69 -0
  29. package/rules/engineering/frontend/eng.frontend-rules.md +70 -69
  30. package/rules/product/prod-rules.md +4 -4
  31. package/skills/AGENTS.md +111 -47
  32. package/skills/SKILLS-ROADMAP.md +24 -39
  33. package/skills/eng-ai-engineer/SKILL.md +1 -0
  34. package/skills/eng-backend/SKILL.md +142 -644
  35. package/skills/eng-backend/references/1-fundamentos-programacao.md +41 -0
  36. package/skills/eng-backend/references/10-seguranca.md +61 -0
  37. package/skills/eng-backend/references/11-performance.md +49 -0
  38. package/skills/eng-backend/references/12-erros-logging.md +42 -0
  39. package/skills/eng-backend/references/13-qualidade-codigo.md +51 -0
  40. package/skills/eng-backend/references/2-design-arquitetura.md +48 -0
  41. package/skills/eng-backend/references/3-design-patterns.md +50 -0
  42. package/skills/eng-backend/references/4-algoritmos-estruturas.md +43 -0
  43. package/skills/eng-backend/references/5-banco-dados.md +53 -0
  44. package/skills/eng-backend/references/6-api-comunicacao.md +42 -0
  45. package/skills/eng-backend/references/7-concorrencia-async.md +49 -0
  46. package/skills/eng-backend/references/8-arquitetura-servidor.md +49 -0
  47. package/skills/eng-backend/references/9-testes.md +43 -0
  48. package/skills/{eng-arch-c4 → eng-backend-arch-c4}/SKILL.md +12 -7
  49. package/skills/{eng-ms-trace → eng-backend-microservices-trace}/SKILL.md +6 -4
  50. package/skills/{eng-nestjs → eng-backend-nestjs}/SKILL.md +3 -1
  51. package/skills/{eng-rabbitmq → eng-backend-rabbitmq}/SKILL.md +3 -1
  52. package/skills/eng-data-bi/SKILL.md +1 -0
  53. package/skills/eng-data-debug/SKILL.md +2 -1
  54. package/skills/eng-data-engineer/SKILL.md +1 -0
  55. package/skills/eng-data-onboard/SKILL.md +1 -0
  56. package/skills/eng-data-orchestrator/SKILL.md +1 -0
  57. package/skills/{eng-performance-engineer → eng-devops-performance-engineer}/SKILL.md +2 -1
  58. package/skills/eng-frontend/SKILL.md +145 -782
  59. package/skills/eng-frontend/references/1-fundamentos-programacao.md +37 -0
  60. package/skills/eng-frontend/references/10-testes.md +47 -0
  61. package/skills/eng-frontend/references/11-seguranca.md +56 -0
  62. package/skills/eng-frontend/references/12-qualidade-codigo.md +51 -0
  63. package/skills/eng-frontend/references/2-html-fundamentals.md +51 -0
  64. package/skills/eng-frontend/references/3-css-responsive.md +61 -0
  65. package/skills/eng-frontend/references/4-javascript-dom.md +60 -0
  66. package/skills/eng-frontend/references/5-state-management.md +55 -0
  67. package/skills/eng-frontend/references/6-uiux-design.md +59 -0
  68. package/skills/eng-frontend/references/7-acessibilidade.md +46 -0
  69. package/skills/eng-frontend/references/8-performance.md +58 -0
  70. package/skills/eng-frontend/references/9-browser-apis.md +54 -0
  71. package/skills/{eng-design-system → eng-frontend-design-system}/SKILL.md +4 -2
  72. package/skills/{eng-microfrontend → eng-frontend-microfrontend}/SKILL.md +4 -2
  73. package/skills/{eng-browser-extension-builder → eng-global-browser-extension-builder}/SKILL.md +2 -1
  74. package/skills/{eng-docs-write → eng-global-docs-write}/SKILL.md +8 -4
  75. package/skills/eng-global-jira-comment/SKILL.md +21 -0
  76. package/skills/{eng-pr → eng-global-pr}/SKILL.md +7 -3
  77. package/skills/{eng-task-comment → eng-global-task-comment}/SKILL.md +6 -2
  78. package/skills/eng-qa-a11y-audit/SKILL.md +1 -0
  79. package/skills/eng-qa-bug-report/SKILL.md +2 -1
  80. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +1 -1
  81. package/skills/eng-qa-cypress-e2e/SKILL.md +1 -0
  82. package/skills/eng-qa-dev-guide/SKILL.md +1 -0
  83. package/skills/eng-qa-e2e/SKILL.md +1 -0
  84. package/skills/eng-qa-e2e-spec-writer/SKILL.md +1 -0
  85. package/skills/eng-qa-exploratory/SKILL.md +1 -0
  86. package/skills/eng-qa-gate/SKILL.md +3 -2
  87. package/skills/eng-qa-graphql-contract/SKILL.md +1 -0
  88. package/skills/eng-qa-quality-report/SKILL.md +3 -2
  89. package/skills/eng-qa-test-plan/SKILL.md +1 -0
  90. package/skills/eng-qa-testsprite/SKILL.md +2 -1
  91. package/skills/eng-qa-unit-test/SKILL.md +1 -0
  92. package/skills/eng-scraper/SKILL.md +1 -0
  93. package/skills/eng-scraper-robot-builder/SKILL.md +1 -0
  94. package/skills/{eng-cybersecurity → eng-security-cybersecurity}/SKILL.md +3 -2
  95. package/skills/eng-security-patch/SKILL.md +6 -2
  96. package/skills/{eng-threat-model → eng-security-threat-model}/SKILL.md +6 -2
  97. package/skills/eng-security-triage/SKILL.md +4 -0
  98. package/skills/{context-detect → jarvis-context-detect}/SKILL.md +6 -5
  99. package/skills/{context-detect → jarvis-context-detect}/assets/context-profile-template.md +3 -3
  100. package/skills/jarvis-create-specialization/SKILL.md +230 -0
  101. package/skills/jarvis-create-specialization/assets/referencia-template.md +39 -0
  102. package/skills/jarvis-create-specialization/assets/skill-especializacao-template.md +78 -0
  103. package/skills/{docs-central → jarvis-docs-central}/README.md +1 -1
  104. package/skills/{docs-central → jarvis-docs-central}/SKILL.md +3 -40
  105. package/skills/{docs-index → jarvis-docs-index}/SKILL.md +8 -4
  106. package/skills/{init-jarvis → jarvis-init}/SKILL.md +41 -18
  107. package/skills/{init-jarvis → jarvis-init}/assets/mcp-configs.md +3 -3
  108. package/skills/{init-jarvis → jarvis-init}/assets/onboarding-checklist.md +1 -1
  109. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +163 -0
  110. package/skills/{init-jarvis → jarvis-init}/assets/setup-guide.md +1 -1
  111. package/skills/jarvis-init/assets/sinais-de-stack.md +54 -0
  112. package/skills/jarvis-list-specializations/SKILL.md +148 -0
  113. package/skills/{report-issue → jarvis-report-issue}/SKILL.md +3 -2
  114. package/skills/{prod-roadmap-report → product-roadmap-report}/SKILL.md +2 -1
  115. package/skills/{prod-specs → product-specs}/SKILL.md +2 -1
  116. package/skills/{prod-specs-update → product-specs-update}/SKILL.md +3 -2
  117. package/taxonomy.md +3 -21
  118. package/templates/CDD aplicado a Prompts.md +5 -5
  119. package/templates/ENV-template.md +11 -8
  120. package/templates/engineering/AGENTS-template.md +1 -1
  121. package/templates/engineering/CONTACTS-template.md +1 -1
  122. package/workflows/engineering/eng.bug-audit.md +2 -2
  123. package/workflows/engineering/eng.build-tech-spec.md +1 -1
  124. package/workflows/engineering/eng.debug.md +10 -10
  125. package/workflows/engineering/eng.docs.md +2 -2
  126. package/workflows/engineering/eng.plan.md +5 -5
  127. package/workflows/engineering/eng.pr.md +8 -8
  128. package/workflows/engineering/eng.pre-pr.md +16 -20
  129. package/workflows/engineering/eng.review.md +5 -10
  130. package/workflows/engineering/eng.rpa.robot.md +3 -3
  131. package/workflows/engineering/eng.security-audit.md +5 -5
  132. package/workflows/engineering/eng.security-incident.md +2 -2
  133. package/workflows/engineering/eng.security-pipeline.md +2 -2
  134. package/workflows/engineering/eng.start.md +16 -50
  135. package/workflows/engineering/eng.work.md +8 -11
  136. package/workflows/engineering/frontend/eng.frontend-component.md +68 -96
  137. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +90 -220
  138. package/workflows/engineering/frontend/eng.frontend-review.md +57 -63
  139. package/workflows/product/prod.roadmap.preview.md +2 -2
  140. package/workflows/product/prod.spec.discovery.md +3 -3
  141. package/workflows/product/prod.spec.issue.md +1 -1
  142. package/workflows/taxonomy.md +1 -1
  143. package/workflows/warm-up.md +5 -26
  144. package/agents/engineering/eng.tech-analyst.agent.md +0 -102
  145. package/skills/churn-audit/SKILL.md +0 -385
  146. package/skills/eng-jira-comment/SKILL.md +0 -17
  147. package/skills/eng-tech-analyst/SKILL.md +0 -529
  148. package/skills/lovable-prompt-generator/SKILL.md +0 -304
  149. package/workflows/engineering/ta/eng.ta.atendimento.md +0 -93
  150. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-code.md +0 -0
  151. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-component.md +0 -0
  152. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-container.md +0 -0
  153. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-context.md +0 -0
  154. /package/skills/{prod-roadmap-report → product-roadmap-report}/README.md +0 -0
  155. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.compiled.single.team.md +0 -0
  156. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.list.projects.md +0 -0
  157. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.memory.md +0 -0
  158. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.roadmap.preview.md +0 -0
  159. /package/skills/{prod-roadmap-report → product-roadmap-report}/references/detailed-guide.md +0 -0
  160. /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/detailed-guide.md +0 -0
  161. /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/status-report-rules.md +0 -0
  162. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-multiple-teams-compiled-status.md +0 -0
  163. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-projects-list.md +0 -0
  164. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-compiled-status.md +0 -0
  165. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-status.md +0 -0
@@ -0,0 +1,60 @@
1
+ ---
2
+ trigger: always_on
3
+ ---
4
+
5
+ > **Applies to:** HUB: all | POSITION: all | AREA: ENGINEERING | SQUAD: all
6
+
7
+ # Regras de Skills: área obrigatória e nome inexistente
8
+
9
+ ## Objetivo
10
+
11
+ Garantir que todo skill instalado tenha uma área reconhecida e avisar a pessoa, na hora, quando algo pede um skill que não existe.
12
+
13
+ ## Escopo
14
+
15
+ Vale para todo comando `eng.*` e seus agentes, **ao iniciar**. A pasta de skills considerada é `$IDE/skills/`.
16
+
17
+ **Áreas reconhecidas:** `qa`, `data`, `ai`, `frontend`, `backend`, `security`, `scraper`, `devops`, `global`, `product`.
18
+
19
+ ## Regras
20
+
21
+ ### Obrigatório
22
+
23
+ 1. **Bloqueio, primeiro.** Leia só o frontmatter de cada `$IDE/skills/*/SKILL.md`:
24
+
25
+ ```bash
26
+ for f in $IDE/skills/*/SKILL.md; do
27
+ awk -v f="$f" 'BEGIN{fm=0} /^---[[:space:]]*$/{fm++; next}
28
+ fm==1 && /^name:/{n=$2}
29
+ fm==1 && /^[[:space:]]+area:/{a=$2}
30
+ END{printf "%s|area=%s\n", n, a}' "$f"
31
+ done
32
+ ```
33
+
34
+ Se algum skill tem `area` vazia ou fora das áreas reconhecidas, **interrompa o comando** e exiba:
35
+ `⛔ Skills instalados sem área (metadata.area): {lista}. Marque a área de cada um (ou remova o skill) e execute o comando de novo. O comando foi interrompido.`
36
+ 2. **Aviso de nome inexistente.** Quando o usuário, um workflow, um agente ou uma das listas (`BACKEND_SPECIALIZATIONS`, `FRONTEND_SPECIALIZATIONS`) pedir um skill cujo `$IDE/skills/{nome}/SKILL.md` não existe, exiba na hora:
37
+ `⚠️ O skill "{nome}" não existe em $IDE/skills/. Use /jarvis-list-specializations para ver os nomes atuais e corrija a referência. Seguindo sem ele.`
38
+ e **siga sem esse skill** (em backend e frontend, com o skill base e os demais itens).
39
+
40
+ ### Proibido
41
+
42
+ - Pular o bloqueio ou seguir como se o skill sem área estivesse marcado
43
+ - Corrigir sozinho o nome, a área ou a lista do `ENV.md`
44
+ - Usar um skill que não existe, nem adivinhar um nome parecido
45
+
46
+ ### Recomendado
47
+
48
+ - Na mensagem do bloqueio, listar cada skill pelo nome da pasta
49
+ - No aviso, citar o nome exatamente como foi pedido
50
+
51
+ ## Exceções
52
+
53
+ - Só Claude Code e Cursor são suportados. Em IDEs com outra pasta de skills (por exemplo, Kiro e Codex), o bloqueio e o aviso podem não funcionar.
54
+ - O comando `/jarvis-init` e a consulta `/jarvis-list-specializations` não passam pelo bloqueio (são como a pessoa descobre e corrige o problema).
55
+
56
+ ## Referências
57
+
58
+ - `eng.specializations-rules.md`: listas de especializações e carregamento por área
59
+ - `skills/jarvis-list-specializations/SKILL.md`: consulta do que está instalado e registrado
60
+ - `skills/AGENTS.md`: áreas reconhecidas e padrão de nomes
@@ -0,0 +1,69 @@
1
+ ---
2
+ trigger: always_on
3
+ ---
4
+
5
+ > **Applies to:** HUB: all | POSITION: all | AREA: ENGINEERING | SQUAD: all
6
+
7
+ # Regras de Especializações por Stack
8
+
9
+ ## Objetivo
10
+
11
+ Fazer todo comando `eng.*` carregar o **skill base** da área mais as **especializações** que o projeto registrou no `ENV.md`, e avisar a pessoa quando algo falta.
12
+
13
+ ## Escopo
14
+
15
+ Vale para qualquer comando `eng.*` e seus agentes, **ao iniciar um trabalho de backend** (APIs, autenticação, workers, banco de dados, servidor) **ou de frontend** (componentes, interface, estilos, estado). Se o trabalho envolve as duas áreas, aplique a regra a cada uma. Se não é de nenhuma das duas, não carregue nada.
16
+
17
+ | Área | Variável no `ENV.md` | Skill base |
18
+ |------|----------------------|------------|
19
+ | backend | `BACKEND_SPECIALIZATIONS` | `eng-backend` |
20
+ | frontend | `FRONTEND_SPECIALIZATIONS` | `eng-frontend` |
21
+
22
+ ## Regras
23
+
24
+ ### Obrigatório
25
+
26
+ 1. **Leia a variável** da área no `$IDE/ENV.md`.
27
+ 2. **Variável ausente** (a chave não existe, diferente de vazia): **interrompa o comando** e exiba:
28
+ `⚠️ A variável {VAR} não existe no ENV.md. Execute /jarvis-init e escolha Upgrade (C) para acrescentá-la. O comando foi interrompido.`
29
+ 3. **Lista vazia:** siga só com o skill base e exiba:
30
+ `ℹ️ Sem especialização registrada para {área}. Usando só a skill base ({base}).`
31
+ 4. **Lista com itens:** carregue o skill base e, para **cada item**:
32
+ - nome fora de `^[a-z0-9][a-z0-9-]*$` (inclui `/`, `..` e maiúsculas): ignore o item e exiba
33
+ `⚠️ O item "{item}" de {VAR} tem caracteres inválidos (use letras minúsculas, números e hífen). Item ignorado.`
34
+ - `$IDE/skills/{item}/SKILL.md` não existe: exiba
35
+ `⚠️ O item "{item}" de {VAR} não corresponde a um skill instalado em $IDE/skills/. Instale o skill ou corrija a lista. Seguindo com o neutro e os demais itens.`
36
+ - existe: leia o `SKILL.md` e aplique-o junto com o skill base.
37
+ 5. **Informe** o que foi carregado: `✅ Skills carregados ({área}): {base} (base), {itens carregados}`.
38
+ 6. As especializações **somam-se** ao skill base; nenhuma o substitui.
39
+
40
+ ### Formato da lista
41
+
42
+ - Itens **separados por vírgula**: `eng-backend-golang,eng-backend-nestjs`.
43
+ - **Leia** com ou sem colchetes, espaços e aspas (`a,b`, `[a,b]`, `[ a , b ]`, `["a","b"]`).
44
+ - Ao **gravar**, escreva sempre separado por vírgula, sem colchetes.
45
+
46
+ ### Proibido
47
+
48
+ - Criar ou alterar a variável por conta própria.
49
+ - Seguir só com o skill base quando a variável está **ausente**.
50
+ - Carregar skills que não estão na lista.
51
+ - Aceitar item com caminho (`/`, `..`) ou fora do padrão de nome.
52
+
53
+ ### Recomendado
54
+
55
+ - Citar na mensagem o nome da variável e do item.
56
+ - Com vários itens, carregar todos.
57
+
58
+ ## Exceções
59
+
60
+ - Áreas além de backend e frontend não têm lista (evolução futura).
61
+ - Skills de outras áreas não passam por esta regra.
62
+
63
+ ## Referências
64
+
65
+ - `eng-rules.md`: validação do `ENV.md` (lista presente, mesmo vazia).
66
+ - `eng.skills-rules.md`: área obrigatória nos skills e aviso de skill inexistente (o nome citado em uma lista que não existe também segue o aviso de lá).
67
+ - `skills/jarvis-create-specialization/SKILL.md`: criação de uma especialização a partir do código do projeto e registro na lista.
68
+ - `skills/jarvis-list-specializations/SKILL.md`: consulta das especializações instaladas e registradas.
69
+ - `templates/ENV-template.md`: seção "Especializações de stack".
@@ -1,47 +1,50 @@
1
1
  ---
2
2
  name: eng.frontend-rules
3
3
  description: >
4
- Padrões obrigatórios para devs com HUB: FRONTEND — componentes, TypeScript,
5
- acessibilidade, performance, micro frontend e design system.
4
+ Padrões obrigatórios para devs com HUB: FRONTEND, neutros de stack — componentes,
5
+ tipagem, acessibilidade, performance, testes, arquiteturas distribuídas e tokens de design.
6
+ O que depende da stack vem das especializações registradas em FRONTEND_SPECIALIZATIONS.
6
7
  author: jarvis-team
7
- version: "1.0"
8
+ version: "1.1"
8
9
  ---
9
10
 
10
11
  > **Applies to:** HUB: FRONTEND | POSITION: all | AREA: ENGINEERING | SQUAD: all
11
12
 
12
13
  # Regras de Engenharia Frontend
13
14
 
15
+ > **Neutras de stack.** Estas regras valem para qualquer framework ou linguagem de frontend. Onde uma regra depende da stack (como se busca dados, como se organiza um módulo, qual ferramenta de teste usar), siga a **especialização registrada** em `FRONTEND_SPECIALIZATIONS` no `ENV.md` e o código existente do projeto. Sem especialização registrada, **pergunte** em vez de presumir uma stack. Ver `eng.specializations-rules.md`.
16
+
14
17
  ---
15
18
 
16
19
  ## 1. Componentes
17
20
 
18
21
  ### Estrutura obrigatória
19
- - Todo componente deve ter props tipadas com TypeScript — `any` é proibido sem justificativa documentada
20
- - Props obrigatórias devem ser declaradas sem `?`; opcionais com `?` e valor default explícito
22
+ - Toda entrada de um componente (props, parâmetros ou atributos) é **tipada ou documentada**; tipo genérico solto (`any` ou equivalente) é proibido sem justificativa documentada
23
+ - Entradas obrigatórias são declaradas como obrigatórias; opcionais têm valor default explícito
21
24
  - Componentes com mais de uma responsabilidade devem ser divididos (Single Responsibility)
22
- - Lógica de negócio não pertence ao componente de UI — usar hooks ou camada de serviço
25
+ - Lógica de negócio não pertence ao componente de UI — usar a camada de lógica ou de serviço que o projeto adota
23
26
 
24
27
  ### Nomenclatura
25
- - Componentes: `PascalCase` (`UserCard`, `ProductTable`)
26
- - Hooks: `use` + `PascalCase` (`useUserData`, `useProductFilters`)
27
- - Arquivos de componente: `PascalCase.tsx` (`UserCard.tsx`)
28
- - Arquivos de hook: `camelCase.ts` (`useUserData.ts`)
28
+ - Seguir a convenção de nomes **do projeto** (e da especialização registrada) para componentes, funções de lógica reutilizável e arquivos
29
+ - Manter o padrão consistente: um mesmo tipo de arquivo, um mesmo estilo de nome
29
30
 
30
31
  ### Checklist mínimo por componente
31
- - [ ] Props tipadas (TypeScript)
32
+ - [ ] Entradas tipadas ou documentadas
32
33
  - [ ] Estados visuais: normal, hover, focus, disabled, loading, erro, vazio
33
- - [ ] Semântica HTML correta (não usar `<div>` para botões, links ou listas)
34
- - [ ] Responsivo (mobile-first com breakpoints do design system)
35
- - [ ] Testável sem DOM real (lógica isolada em hooks)
34
+ - [ ] Semântica HTML correta (não usar um contêiner genérico para botões, links ou listas)
35
+ - [ ] Responsivo (mobile-first, nos tamanhos de tela do projeto)
36
+ - [ ] Testável sem depender de um navegador real (lógica isolada da apresentação)
36
37
 
37
38
  ---
38
39
 
39
- ## 2. TypeScript
40
+ ## 2. Tipagem e contratos
41
+
42
+ Aplica-se quando a linguagem do projeto tem tipagem estática ou contratos explícitos.
40
43
 
41
- - `strict: true` obrigatório em `tsconfig.json`
42
- - Proibido: `as any`, `@ts-ignore` sem comentário explicativo, `!` (non-null assertion) sem verificação prévia
43
- - Types vs Interfaces: usar `interface` para objetos de domínio, `type` para uniões e utilitários
44
- - Exportar tipos públicos de componentes (`export type { ButtonProps }`)
44
+ - O **modo estrito** de verificação do projeto fica ligado e não é relaxado
45
+ - Proibido: tipo genérico solto, supressão de verificação de tipos sem comentário explicativo e asserção de "não nulo" sem verificação prévia
46
+ - Modelar objetos de domínio de forma explícita e unir ou derivar tipos com os recursos da linguagem
47
+ - Exportar o contrato público dos componentes, quando a linguagem permite
45
48
 
46
49
  ---
47
50
 
@@ -49,12 +52,12 @@ version: "1.0"
49
52
 
50
53
  - Semântica HTML nativa antes de ARIA (`<button>`, `<nav>`, `<main>`, `<article>`)
51
54
  - Todos os elementos interativos são navegáveis por teclado
52
- - Contraste mínimo: 4.5:1 para texto normal, 3:1 para texto grande e elementos UI
53
- - Imagens informativas têm `alt` descritivo; decorativas têm `alt=""`
54
- - Modais usam `role="dialog"`, `aria-modal="true"`, `aria-labelledby` e focus trap
55
- - Formulários: todo `<input>` tem `<label>` associado via `htmlFor` ou `aria-label`
55
+ - Contraste mínimo: 4.5:1 para texto normal, 3:1 para texto grande e elementos de interface
56
+ - Imagens informativas têm texto alternativo descritivo; decorativas têm texto alternativo vazio
57
+ - Modais usam `role="dialog"`, `aria-modal="true"`, `aria-labelledby` e prendem o foco
58
+ - Formulários: todo campo tem rótulo associado
56
59
  - Erros de formulário: exibidos com `role="alert"` ou `aria-live="polite"`
57
- - Screen reader: testar com VoiceOver (Mac) ou NVDA (Windows) em features críticas
60
+ - Leitor de tela: testar com VoiceOver (Mac) ou NVDA (Windows) em features críticas
58
61
 
59
62
  ---
60
63
 
@@ -66,59 +69,56 @@ version: "1.0"
66
69
  - INP (Interaction to Next Paint): < 200ms
67
70
 
68
71
  ### Práticas obrigatórias
69
- - Imagens sempre com `width` e `height` definidos para evitar CLS
70
- - Componentes pesados com `lazy()` + `<Suspense fallback>`
71
- - Dependências novas: avaliar impacto no bundle antes de instalar (`bundlephobia.com`)
72
- - Sem `useEffect` para buscar dados — usar React Query / TanStack Query ou Server Components
73
- - Memoização apenas quando necessário e comprovado com profiler (não premature optimization)
72
+ - Imagens sempre com largura e altura definidas, para evitar CLS
73
+ - Carregamento tardio de componentes pesados, com o recurso que a stack oferece, e um substituto visual com o mesmo tamanho enquanto carrega
74
+ - Dependências novas: avaliar o impacto no tamanho do pacote final antes de instalar
75
+ - Busca de dados pela camada que o projeto adota para isso (conforme a especialização), e não por efeitos soltos no componente de apresentação
76
+ - Otimização de renderização apenas quando necessária e **comprovada com medição** (não otimização prematura)
74
77
 
75
78
  ---
76
79
 
77
80
  ## 5. Testes
78
81
 
79
- - **Testing Library**: queries por acessibilidade primeiro (`getByRole`, `getByLabelText`)
80
- - **Proibido**: `getByTestId` como primeira opção (usar só quando sem alternativa acessível)
81
- - **Cobertura mínima**: fluxos críticos de usuário (happy path + estado de erro)
82
- - **Vitest**: unitários para lógica pura, hooks e utilitários
83
- - **Playwright / Cypress**: E2E para fluxos de usuário completos (login, checkout, etc.)
84
- - Mocks de módulos externos devem estar em `__mocks__/` ou `*.mock.ts`
82
+ - **Consultas por acessibilidade primeiro** (por papel e por rótulo): focar no que o usuário vê e faz, não em detalhes de implementação
83
+ - **Proibido** usar identificador de teste como primeira opção (só quando não houver alternativa acessível)
84
+ - **Cobertura mínima:** fluxos críticos de usuário (caminho feliz e estado de erro)
85
+ - **Testes unitários** para lógica pura e utilitários, com a ferramenta que o projeto já usa
86
+ - **Testes de ponta a ponta** para fluxos completos de usuário (login, checkout etc.), com a ferramenta que o projeto já usa
87
+ - Substitutos de módulos externos ficam num lugar previsível do projeto (por exemplo, uma pasta de mocks)
85
88
 
86
89
  ### Ferramentas disponíveis no framework
87
90
 
88
- - **TestSprite** (`/eng-qa-testsprite`): se o TestSprite estiver instalado no projeto, usá-lo para geração
89
- e execução de testes de componente e E2E — ele gera planos de teste e código automaticamente.
91
+ - **TestSprite** (`/eng-qa-testsprite`): se estiver instalado no projeto, usá-lo para gerar e executar testes de componente e de ponta a ponta — ele gera planos de teste e código automaticamente.
90
92
  Verificar: `ls node_modules/@testsprite 2>/dev/null || cat package.json | grep testsprite`
91
-
92
- - **Stagehand** (`/eng-scraper-robot-builder`, `/eng-qa-e2e`): para testes E2E em linguagem natural
93
- ou automação de fluxos de usuário complexos, o Stagehand permite descrever o fluxo em português
94
- e gera os steps Playwright automaticamente.
93
+ - **Stagehand** (`/eng-scraper-robot-builder`, `/eng-qa-e2e`): para testes de ponta a ponta em linguagem natural ou automação de fluxos complexos, descrevendo o fluxo em português.
95
94
  Verificar: `cat package.json | grep stagehand`
96
95
 
97
- > Quando qualquer dessas ferramentas estiver disponível no projeto, **preferir sobre a implementação
98
- > manual** — reduz custo de manutenção e aumenta cobertura mais rapidamente.
96
+ > Quando qualquer dessas ferramentas estiver disponível no projeto, **preferir sobre a implementação manual** — reduz o custo de manutenção e aumenta a cobertura mais rápido.
99
97
 
100
98
  ---
101
99
 
102
- ## 6. Micro Frontend
100
+ ## 6. Arquiteturas distribuídas (se o projeto divide o frontend em partes)
101
+
102
+ Aplica-se somente se o projeto divide o frontend em partes carregadas separadamente (por exemplo, uma aplicação principal que carrega módulos independentes). O detalhe da arquitetura em uso vem da especialização registrada. Princípios que valem em qualquer variante:
103
103
 
104
- - Todo remote deve ser versionado e publicado com URL de fallback definida
105
- - Contratos de interface entre shell e remotes são declarados em tipos TypeScript compartilhados
106
- - Nenhum remote depende diretamente de outro remote — comunicação via shell ou event bus
107
- - Shared dependencies declaradas explicitamente no `ModuleFederationPlugin` com `singleton: true`
108
- - Cada remote deve funcionar em modo standalone (sem shell) para desenvolvimento local
109
- - Testes de integração entre shell e remote são obrigatórios para cada ponto de montagem
110
- - Versionamento: breaking changes no contrato de um remote exigem bump de versão major
104
+ - Cada módulo é **versionado e publicado** com uma alternativa definida quando não carrega
105
+ - Os contratos de interface entre a aplicação principal e os módulos são declarados de forma explícita e compartilhada
106
+ - Nenhum módulo depende diretamente de outro: a comunicação passa pela aplicação principal ou por um barramento de eventos
107
+ - Dependências compartilhadas são declaradas explicitamente, para não serem carregadas em duplicidade
108
+ - Cada módulo deve funcionar de forma isolada, para desenvolvimento local
109
+ - Testes de integração entre a aplicação principal e cada módulo são obrigatórios em cada ponto de montagem
110
+ - Mudança que quebra o contrato de um módulo exige aumento de versão **major**
111
111
 
112
112
  ---
113
113
 
114
- ## 7. Design System
114
+ ## 7. Tokens de design e componentes compartilhados
115
115
 
116
- - Cores, tipografia, espaçamentos e breakpoints vêm **exclusivamente** dos tokens do design system
117
- - Proibido hardcodar valores de cor, fonte ou espaçamento fora dos tokens
118
- - Novos componentes de UI são criados no design system antes de serem usados nos remotes
119
- - Variantes de componente usam `cva` (class-variance-authority) como padrão
120
- - Componentes públicos do design system têm story no Storybook antes de serem liberados
121
- - Alterações na API pública de um componente (props) seguem semver
116
+ - Cores, tipografia, espaçamentos e tamanhos de tela vêm **exclusivamente** dos tokens de design do projeto (quando o projeto tem)
117
+ - Proibido fixar valores de cor, fonte ou espaçamento fora dos tokens
118
+ - Novos componentes reutilizáveis nascem na biblioteca de componentes compartilhados do projeto (se existir) antes de serem usados nos módulos
119
+ - Variantes de componente seguem o padrão que o projeto já usa
120
+ - Componentes públicos da biblioteca compartilhada têm documentação visual antes de serem liberados, quando o projeto usa um catálogo de componentes
121
+ - Alterações na interface pública de um componente seguem o versionamento semântico
122
122
 
123
123
  ---
124
124
 
@@ -126,22 +126,23 @@ version: "1.0"
126
126
 
127
127
  Ao revisar PR de frontend, verificar:
128
128
 
129
- - [ ] TypeScript sem `any` ou `@ts-ignore` injustificado
129
+ - [ ] Tipagem sem tipo genérico solto nem supressões injustificadas (quando a linguagem tem tipagem)
130
130
  - [ ] Nenhuma lógica de negócio em componente de UI
131
131
  - [ ] Acessibilidade: semântica HTML, ARIA correto, navegação por teclado
132
- - [ ] Performance: sem re-renders desnecessários, lazy loading aplicado quando cabível
133
- - [ ] Tokens do design system usados (sem valores hardcodados)
134
- - [ ] Testes cobrem happy path e estado de erro
135
- - [ ] Responsividade verificada em mobile e desktop
136
- - [ ] Se micro frontend: contrato de interface atualizado, remote funciona standalone
132
+ - [ ] Performance: sem renderizações desnecessárias comprovadas, carregamento tardio aplicado quando cabível
133
+ - [ ] Tokens de design do projeto usados (sem valores fixos)
134
+ - [ ] Testes cobrem o caminho feliz e o estado de erro
135
+ - [ ] Responsividade verificada em celular e desktop
136
+ - [ ] Se arquitetura distribuída: contrato de interface atualizado e módulo funciona de forma isolada
137
+ - [ ] Itens exigidos pelas especializações registradas atendidos
137
138
 
138
139
  ---
139
140
 
140
141
  ## 9. Proibições Absolutas
141
142
 
142
- - `document.querySelector` / manipulação direta do DOM em contexto React
143
+ - Manipulação direta do DOM fora do mecanismo que o framework do projeto prevê para isso
143
144
  - `!important` em CSS sem comentário explicativo
144
- - Fetch direto em componente de UI (usar hooks, queries ou Server Actions)
145
- - Importar de outro remote diretamente (rompe o isolamento do micro frontend)
146
- - Hardcodar tokens de design (cores, espaçamentos, fontes) fora do sistema de tokens
147
- - `console.log` em código commitado (usar logger estruturado ou remover)
145
+ - Busca de dados direto no componente de apresentação (usar a camada que o projeto adota)
146
+ - Importar diretamente de outro módulo de uma arquitetura distribuída (rompe o isolamento)
147
+ - Fixar tokens de design (cores, espaçamentos, fontes) fora do sistema de tokens
148
+ - Log de depuração (`console.log` ou equivalente) em código commitado (usar logger estruturado ou remover)
@@ -7,9 +7,9 @@ trigger: always_on
7
7
  ## Principais Regras
8
8
  - O idioma padrão é o português do Brasil. Mas mude caso o usuário solicite outro idioma.
9
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`.
10
+ - Se não existir, use o skill `jarvis-init` para criar o `ENV.md`.
11
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).
12
+ - Se não existirem, use o skill `jarvis-init` 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
13
  - Nunca invente ou presuma dados ou informações. Se não souber, pergunte, valide e confirme com o usuário.
14
14
  - Entenda se o projeto é novo ou existente, para criar ou modificar especificações de produto ou técnicas.
15
15
 
@@ -18,7 +18,7 @@ trigger: always_on
18
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
19
 
20
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.
21
+ - **Exceção**: O comando `/jarvis-init` é o único que pode ser executado sem o `ENV.md`, pois é ele que cria o arquivo.
22
22
  - **Validação obrigatória**: O arquivo deve conter as seguintes variáveis preenchidas (não vazias):
23
23
  - `RULES_FOLDER`
24
24
  - `PROD_FOLDER_NAME`
@@ -30,7 +30,7 @@ IMPORTANTE: Para que você funcione como o previsto e tenha todas as informaçõ
30
30
  - **Se o ENV.md não existir ou estiver incompleto**, o agente deve:
31
31
  1. Interromper a execução do comando solicitado
32
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.
33
+ 3. Após confirmação, executar via Skill tool o `jarvis-init`. 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
34
  ```
35
35
  ⚠️ O framework não foi inicializado.
36
36
 
package/skills/AGENTS.md CHANGED
@@ -14,44 +14,75 @@ A pasta `skills/` contem **playbooks executaveis** que sao a fonte de verdade op
14
14
 
15
15
  ```
16
16
  skills/
17
- ├── eng-arch-c4/ # Diagramas C4
17
+ ├── eng-backend-arch-c4/ # Diagramas C4
18
18
  │ ├── SKILL.md
19
19
  │ └── assets/
20
- ├── eng-docs-write/ # Escrita de documentacao
20
+ ├── eng-global-docs-write/ # Escrita de documentacao
21
21
  │ └── SKILL.md
22
- ├── eng-pr/ # Criacao de Pull/Merge Requests (GitLab/GitHub/Bitbucket)
22
+ ├── eng-global-pr/ # Criacao de Pull/Merge Requests (GitLab/GitHub/Bitbucket)
23
23
  │ └── SKILL.md
24
- ├── eng-task-comment/ # Comentário no card (Jira/Linear/GitHub Issues/Asana)
24
+ ├── eng-global-task-comment/ # Comentário no card (Jira/Linear/GitHub Issues/Asana)
25
25
  │ └── SKILL.md
26
- ├── eng-jira-comment/ # Alias → eng-task-comment
26
+ ├── eng-global-jira-comment/ # Alias → eng-global-task-comment
27
27
  │ └── SKILL.md
28
- ├── eng-backend/ # APIs REST/GraphQL, auth JWT/OAuth2/RBAC, RabbitMQ workers, caching
28
+ ├── jarvis-list-specializations/ # Lista especializações de stack instaladas e registradas
29
29
  │ └── SKILL.md
30
- ├── eng-frontend/ # React/Next.js/Vue, estado, performance UI, acessibilidade
30
+ ├── jarvis-create-specialization/ # Cria uma especialização de stack (backend/frontend) a partir do código do projeto e a registra na lista
31
+ │ ├── SKILL.md
32
+ │ └── assets/
33
+ ├── eng-backend/ # Base neutra de backend (APIs, auth, workers, dados); especializações por stack se somam a ele
31
34
  │ └── SKILL.md
32
- ├── eng-microfrontend/ # Module Federation, shell/remote, contratos de interface, event bus
35
+ ├── eng-frontend/ # Base neutra de frontend (componentes, estado, performance UI, acessibilidade); especializações se somam a ele
33
36
  │ └── SKILL.md
34
- ├── eng-design-system/ # Tokens semânticos, CVA, Storybook, versionamento, auditoria visual
37
+ ├── eng-frontend-microfrontend/ # Module Federation, shell/remote, contratos de interface, event bus
35
38
  │ └── SKILL.md
36
- ├── eng-nestjs/ # Framework NestJS: módulos, DI, guards, interceptors, pipes, Passport/JWT
39
+ ├── eng-frontend-design-system/ # Tokens semânticos, CVA, Storybook, versionamento, auditoria visual
37
40
  │ └── SKILL.md
38
- ├── eng-rabbitmq/ # Mensageria RabbitMQ (HTTP API, codigo, arquitetura, troubleshooting)
41
+ ├── eng-backend-nestjs/ # Framework NestJS: módulos, DI, guards, interceptors, pipes, Passport/JWT
39
42
  │ └── SKILL.md
40
- ├── eng-cybersecurity/ # Segurança de aplicações: OWASP Top 10, secrets, supply chain, headers, SAST, compliance
43
+ ├── eng-backend-rabbitmq/ # Mensageria RabbitMQ (HTTP API, codigo, arquitetura, troubleshooting)
41
44
  │ └── SKILL.md
42
- ├── churn-audit/ # Análise de churn SaaS por squad com relatório narrativo via $MESSAGE_COMUNICATOR
45
+ ├── eng-security-cybersecurity/ # Segurança de aplicações: OWASP Top 10, secrets, supply chain, headers, SAST, compliance
43
46
  │ └── SKILL.md
44
- ├── eng-scraper/ # Web scraping com Puppeteer, Cheerio, anti-bot, pipelines ETL
47
+ ├── eng-backend-microservices-trace/ # Rastreamento de bugs entre serviços (HTTP + AMQP); especialização de backend
45
48
  │ └── SKILL.md
46
- ├── eng-scraper-robot-builder/ # Converte fluxo manual (linguagem natural) em robô Playwright via Stagehand
49
+ ├── eng-security-threat-model/ # Threat model estruturado do projeto (bootstrap/entrevista)
50
+ │ └── SKILL.md
51
+ ├── eng-security-triage/ # Deduplicar, verificar e rankear achados de segurança
52
+ │ └── SKILL.md
53
+ ├── eng-security-patch/ # Diffs candidatos para achados de segurança confirmados
54
+ │ └── SKILL.md
55
+ ├── eng-devops-performance-engineer/ # Performance: baseline, SLIs/SLOs, load tests
56
+ │ └── SKILL.md
57
+ ├── eng-ai-engineer/ # Features com LLM, RAG, agentes, embeddings
58
+ │ └── SKILL.md
59
+ ├── eng-global-browser-extension-builder/ # Extensões de navegador (Manifest V3)
60
+ │ └── SKILL.md
61
+ ├── eng-data-engineer/ # Pipelines ETL/ELT, camadas bronze/silver/gold, contratos de dados
62
+ │ └── SKILL.md
63
+ ├── eng-data-bi/ # Dashboards BI e queries analíticas
64
+ │ └── SKILL.md
65
+ ├── eng-data-debug/ # Diagnóstico de falhas em pipelines por camada
66
+ │ └── SKILL.md
67
+ ├── eng-data-onboard/ # Onboarding de fonte nova de dados
68
+ │ └── SKILL.md
69
+ ├── eng-data-orchestrator/ # DAGs, retries e alertas de orquestração
47
70
  │ └── SKILL.md
48
- ├── eng-tech-analyst/ # Triagem de chamados do HUBS board: keywords, sub-bug linking, frequência via comentários no card, encaminhamento para squad
71
+ ├── eng-qa-bug-report/ # Bug reports de QA
49
72
  │ └── SKILL.md
50
- ├── lovable-prompt-generator/ # Geracao de prompts para frontend React via Lovable
73
+ ├── product-specs/ # Porta de entrada de especificação de produto
51
74
  │ └── SKILL.md
52
- ├── docs-index/ # Indexacao de documentos
75
+ ├── product-specs-update/ # Sincroniza especificações de produto
53
76
  │ └── SKILL.md
54
- ├── init-jarvis/ # Inicializacao do framework (/init-jarvis)
77
+ ├── product-roadmap-report/ # Relatório de status do roadmap
78
+ │ └── SKILL.md
79
+ ├── eng-scraper/ # Web scraping com Puppeteer, Cheerio, anti-bot, pipelines ETL
80
+ │ └── SKILL.md
81
+ ├── eng-scraper-robot-builder/ # Converte fluxo manual (linguagem natural) em robô Playwright via Stagehand
82
+ │ └── SKILL.md
83
+ ├── jarvis-docs-index/ # Indexacao de documentos
84
+ │ └── SKILL.md
85
+ ├── jarvis-init/ # Inicializacao do framework (/jarvis-init), com o passo opcional de adicionar as stacks
55
86
  │ ├── SKILL.md
56
87
  │ └── assets/
57
88
  ├── eng-qa-gate/ # Quality gate validation
@@ -81,11 +112,11 @@ skills/
81
112
  │ └── SKILL.md
82
113
  ├── eng-qa-unit-test/ # Testes unitarios
83
114
  │ └── SKILL.md
84
- ├── report-issue/ # Reportar bug no próprio Jarvis (JARVIS_PROJECT)
115
+ ├── jarvis-report-issue/ # Reportar bug no próprio Jarvis (JARVIS_PROJECT)
85
116
  │ └── SKILL.md
86
- ├── context-detect/ # Detecta contexto do projeto/tarefa
117
+ ├── jarvis-context-detect/ # Detecta contexto do projeto/tarefa
87
118
  │ └── SKILL.md
88
- └── docs-central/ # Sync/publish docs no central-docs (GitLab/GitHub/Bitbucket)
119
+ └── jarvis-docs-central/ # Sync/publish docs no central-docs (GitLab/GitHub/Bitbucket)
89
120
  └── SKILL.md
90
121
  ```
91
122
 
@@ -127,19 +158,52 @@ license: AGPL-3.0
127
158
  metadata:
128
159
  author: jarvis-team
129
160
  version: "1.0"
161
+ area: backend # obrigatório: área do skill (ver "Áreas e nomes")
162
+ stack: golang # só em especializações de backend/frontend
130
163
  ---
131
164
  ```
132
165
 
166
+ > **`metadata.area` é obrigatório.** Um skill instalado sem área reconhecida faz os comandos `eng.*` serem bloqueados (ver `rules/engineering/eng.skills-rules.md`).
167
+
133
168
  ---
134
169
 
135
- ## Convencoes de Nomenclatura
170
+ ## Áreas e nomes
171
+
172
+ ### Áreas reconhecidas (`metadata.area`)
173
+
174
+ | Área | O que cobre |
175
+ |------|-------------|
176
+ | `backend` | APIs, autenticação, workers, mensageria, banco de dados |
177
+ | `frontend` | Componentes, estado, estilos, performance de UI, acessibilidade |
178
+ | `qa` | Testes, quality gates, relatórios de qualidade |
179
+ | `data` | Pipelines, qualidade e contratos de dados |
180
+ | `ai` | Features com modelos de IA |
181
+ | `security` | Segurança de aplicações |
182
+ | `scraper` | Scraping e automação de robôs |
183
+ | `devops` | Performance, infraestrutura, entrega |
184
+ | `global` | Skills transversais de engenharia e do próprio framework |
185
+ | `product` | Especificação de produto |
186
+
187
+ Skill sem `metadata.area`, ou com área fora desta lista, é tratado como **sem área** (`unknown`) e bloqueia os comandos `eng.*`.
188
+
189
+ ### Nome do skill
190
+
191
+ O nome tem a forma `<prefixo>-<área>-<nome>`; **só os dois primeiros segmentos importam** para a regra, o resto é livre.
192
+
193
+ | Tipo | Padrão | Exemplos |
194
+ |------|--------|----------|
195
+ | Engenharia por área | `eng-<área>-<nome>` | `eng-qa-gate`, `eng-data-engineer`, `eng-security-cybersecurity` |
196
+ | Skill base de backend/frontend | `eng-backend`, `eng-frontend` | — |
197
+ | Especialização de stack | `eng-<backend\|frontend>-<stack>` | `eng-backend-nestjs`, `eng-frontend-design-system` |
198
+ | Engenharia global | `eng-global-<nome>` | `eng-global-pr`, `eng-global-docs-write` |
199
+ | Produto | `product-<nome>` | `product-specs`, `product-specs-update` |
200
+ | Transversal do framework | `jarvis-<nome>` (`area: global`) | `jarvis-init`, `jarvis-docs-central` |
201
+
202
+ ### Skill base, especialização e `stack`
136
203
 
137
- | Domínio | Prefixo | Exemplos |
138
- |---------|---------|----------|
139
- | Engenharia | `eng-` | `eng-docs-write`, `eng-pr`, `eng-arch-c4` |
140
- | Produto | `prod-` | `prod-prd`, `prod-frd`, `prod-epic` |
141
- | QA | `qa-` | `eng-qa-gate`, `eng-qa-test-plan`, `eng-qa-unit-test` |
142
- | Geral / utilitário | _(sem prefixo)_ | `skill-creator`, `docs-index`, `init-jarvis` |
204
+ - **Base:** `area: backend` ou `frontend`, **sem** `stack`. É sempre carregado pela regra `eng.specializations-rules.md`.
205
+ - **Especialização:** `area: backend` ou `frontend`, **com** `metadata.stack` (o sufixo do nome). Só é carregada quando o projeto a registra em `BACKEND_SPECIALIZATIONS` ou `FRONTEND_SPECIALIZATIONS` no `ENV.md`.
206
+ - Demais áreas não têm lista e não usam `stack`.
143
207
 
144
208
  ---
145
209
 
@@ -195,33 +259,32 @@ Skills são invocados de formas diferentes dependendo da IDE:
195
259
 
196
260
  | Comando / Trigger | Skill |
197
261
  |-------------------|-------|
198
- | `/init-jarvis` | `init` |
199
- | `/eng.docs` | `eng-docs-write`, `docs-index` |
262
+ | `/jarvis-init` | `jarvis-init` |
263
+ | `/eng.docs` | `eng-global-docs-write`, `jarvis-docs-index` |
200
264
  | `/eng.pre-pr` | `eng-qa-test-plan` |
201
- | `/eng.pr` | `eng-pr` |
265
+ | `/eng.pr` | `eng-global-pr` |
202
266
  | QA validation | `eng-qa-gate` |
203
267
  | Criar skill | `skill-creator` |
204
268
  | `/taxonomy-manager` | `taxonomy-manager` |
269
+ | Listar especializações de stack (instaladas e registradas) | `jarvis-list-specializations` |
270
+ | Criar uma especialização de stack (backend ou frontend) a partir do código do projeto | `jarvis-create-specialization` |
205
271
  | `/members-manager` | `members-manager` |
206
- | Mensageria, filas, RabbitMQ, events, consumers, producers | `eng-rabbitmq` |
207
- | Gerar prompt para Lovable, criar frontend React com Lovable | `lovable-prompt-generator` |
208
- | APIs REST/GraphQL, auth, workers, RabbitMQ, caching | `eng-backend` |
209
- | Componentes, UI, estado, SSR/SSG, performance, acessibilidade | `eng-frontend` |
210
- | Micro frontend, Module Federation, shell/remote, contratos de interface | `eng-microfrontend` |
211
- | Design system, tokens, CVA, Storybook, versionamento de componentes | `eng-design-system` |
212
- | Módulos NestJS, DI, guards, interceptors, pipes, Passport/JWT | `eng-nestjs` |
272
+ | Mensageria, filas, RabbitMQ, events, consumers, producers | `eng-backend-rabbitmq` (especialização de backend: registrar em `BACKEND_SPECIALIZATIONS`) |
273
+ | APIs, auth, workers, filas, caching, banco de dados | `eng-backend` (base) + `BACKEND_SPECIALIZATIONS` |
274
+ | Componentes, UI, estado, estilos, performance, acessibilidade | `eng-frontend` (base) + `FRONTEND_SPECIALIZATIONS` |
275
+ | Micro frontend, Module Federation, shell/remote, contratos de interface | `eng-frontend-microfrontend` (especialização de frontend) |
276
+ | Design system, tokens, CVA, Storybook, versionamento de componentes | `eng-frontend-design-system` (especialização de frontend) |
277
+ | Módulos NestJS, DI, guards, interceptors, pipes, Passport/JWT | `eng-backend-nestjs` (especialização de backend) |
213
278
  | Web scraping, Puppeteer, extração de dados, parsing, ETL | `eng-scraper` |
214
279
  | Criar robô RPA novo ou manter existente (new|update + card) | `eng.rpa.robot` (workflow) |
215
- | Atendimento técnico, triagem de chamados, diagnóstico, classificação de bugs, escalonamento | `eng-tech-analyst` |
216
280
  | Gerar specs Cypress + TypeScript para fluxos de usuário | `eng-qa-cypress-e2e` |
217
281
  | Sessão de teste exploratório estruturada (charter, risco, achados, bug cards) | `eng-qa-exploratory` |
218
282
  | Orientar dev sobre cobertura Cypress sem escrever o teste | `eng-qa-dev-guide` |
219
283
  | Consolidar sessões exploratórias, bugs e quality gates e gerar relatório de qualidade por sprint/release | `eng-qa-quality-report` |
220
- | Análise de churn SaaS: coleta Slack, classificação por squad via taxonomy, relatório narrativo | `churn-audit` |
221
284
  | Testes de acessibilidade WCAG 2.1 AA: integra jest-axe em testes unitários existentes | `eng-qa-a11y-audit` |
222
285
  | Testes de contrato GraphQL: valida queries frontend contra schema do BFF | `eng-qa-graphql-contract` |
223
286
  | Spec E2E para handoff: cenários priorizados, Page Objects, fixtures, intercepts, setup | `eng-qa-e2e-spec-writer` |
224
- | Segurança de aplicações: OWASP Top 10, secrets, sanitização, headers, supply chain, compliance | `eng-cybersecurity` |
287
+ | Segurança de aplicações: OWASP Top 10, secrets, sanitização, headers, supply chain, compliance | `eng-security-cybersecurity` |
225
288
 
226
289
  ---
227
290
 
@@ -235,10 +298,11 @@ Use o skill-creator:
235
298
 
236
299
  Ou manualmente:
237
300
 
238
- 1. Criar pasta: `skills/{nome}/`
239
- 2. Copiar template: `skills/skill-creator/assets/SKILL-template.md`
240
- 3. Preencher todos os placeholders
241
- 4. Validar estrutura
301
+ 1. Escolher a **área** e o nome no padrão `<prefixo>-<área>-<nome>` (ver "Áreas e nomes")
302
+ 2. Criar pasta: `skills/{nome}/`
303
+ 3. Copiar template: `skills/skill-creator/assets/SKILL-template.md`
304
+ 4. Preencher todos os placeholders, **inclusive `metadata.area`** (e `metadata.stack` se for especialização)
305
+ 5. Validar estrutura: `name` igual ao nome da pasta e área reconhecida
242
306
 
243
307
  ---
244
308
 
@@ -246,7 +310,7 @@ Ou manualmente:
246
310
 
247
311
  ### Nunca
248
312
 
249
- - Criar skill sem frontmatter completo
313
+ - Criar skill sem frontmatter completo ou sem `metadata.area`
250
314
  - Duplicar skill existente
251
315
  - Colocar detalhes de persona (isso vai no agent)
252
316
  - Usar URLs web em references (use caminhos locais)