jarvis-ai-framework 1.0.3 → 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 (193) hide show
  1. package/AGENTS.md +66 -64
  2. package/README.md +24 -10
  3. package/agents/AGENTS.md +12 -8
  4. package/agents/README.md +14 -16
  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 +86 -0
  16. package/bin/commands/init.js +6 -6
  17. package/bin/jarvis.js +1 -1
  18. package/bin/lib/config/constants.js +47 -0
  19. package/bin/lib/core/sync-engine.js +12 -0
  20. package/package.json +2 -5
  21. package/rules/AGENTS.md +6 -4
  22. package/rules/engineering/eng-rules.md +5 -3
  23. package/rules/engineering/eng-security-rules.md +4 -4
  24. package/rules/engineering/eng.breakdown-subtasks-rules.md +208 -37
  25. package/rules/engineering/eng.docs-scraping-rules.md +1 -1
  26. package/rules/engineering/eng.downstream-flow-rules.md +1 -1
  27. package/rules/engineering/eng.integrations-rules.md +2 -2
  28. package/rules/engineering/eng.pre-pr-rules.md +1 -1
  29. package/rules/engineering/eng.skills-rules.md +60 -0
  30. package/rules/engineering/eng.specializations-rules.md +69 -0
  31. package/rules/engineering/eng.start-rules.md +11 -11
  32. package/rules/engineering/eng.work-rules.md +19 -14
  33. package/rules/engineering/frontend/eng.frontend-rules.md +70 -69
  34. package/rules/product/README.md +2 -0
  35. package/rules/product/prod-rules.md +7 -5
  36. package/{skills/prod-specs/rules/prod-spec-rules.md → rules/product/prod.spec-rules.md} +55 -50
  37. package/skills/AGENTS.md +111 -47
  38. package/skills/SKILLS-ROADMAP.md +26 -45
  39. package/skills/eng-ai-engineer/SKILL.md +1 -0
  40. package/skills/eng-backend/SKILL.md +142 -644
  41. package/skills/eng-backend/references/1-fundamentos-programacao.md +41 -0
  42. package/skills/eng-backend/references/10-seguranca.md +61 -0
  43. package/skills/eng-backend/references/11-performance.md +49 -0
  44. package/skills/eng-backend/references/12-erros-logging.md +42 -0
  45. package/skills/eng-backend/references/13-qualidade-codigo.md +51 -0
  46. package/skills/eng-backend/references/2-design-arquitetura.md +48 -0
  47. package/skills/eng-backend/references/3-design-patterns.md +50 -0
  48. package/skills/eng-backend/references/4-algoritmos-estruturas.md +43 -0
  49. package/skills/eng-backend/references/5-banco-dados.md +53 -0
  50. package/skills/eng-backend/references/6-api-comunicacao.md +42 -0
  51. package/skills/eng-backend/references/7-concorrencia-async.md +49 -0
  52. package/skills/eng-backend/references/8-arquitetura-servidor.md +49 -0
  53. package/skills/eng-backend/references/9-testes.md +43 -0
  54. package/skills/{eng-arch-c4 → eng-backend-arch-c4}/SKILL.md +12 -7
  55. package/skills/{eng-ms-trace → eng-backend-microservices-trace}/SKILL.md +6 -4
  56. package/skills/{eng-nestjs → eng-backend-nestjs}/SKILL.md +3 -1
  57. package/skills/{eng-rabbitmq → eng-backend-rabbitmq}/SKILL.md +3 -1
  58. package/skills/eng-data-bi/SKILL.md +1 -0
  59. package/skills/eng-data-debug/SKILL.md +2 -1
  60. package/skills/eng-data-engineer/SKILL.md +1 -0
  61. package/skills/eng-data-onboard/SKILL.md +1 -0
  62. package/skills/eng-data-orchestrator/SKILL.md +1 -0
  63. package/skills/{eng-performance-engineer → eng-devops-performance-engineer}/SKILL.md +2 -1
  64. package/skills/eng-frontend/SKILL.md +145 -782
  65. package/skills/eng-frontend/references/1-fundamentos-programacao.md +37 -0
  66. package/skills/eng-frontend/references/10-testes.md +47 -0
  67. package/skills/eng-frontend/references/11-seguranca.md +56 -0
  68. package/skills/eng-frontend/references/12-qualidade-codigo.md +51 -0
  69. package/skills/eng-frontend/references/2-html-fundamentals.md +51 -0
  70. package/skills/eng-frontend/references/3-css-responsive.md +61 -0
  71. package/skills/eng-frontend/references/4-javascript-dom.md +60 -0
  72. package/skills/eng-frontend/references/5-state-management.md +55 -0
  73. package/skills/eng-frontend/references/6-uiux-design.md +59 -0
  74. package/skills/eng-frontend/references/7-acessibilidade.md +46 -0
  75. package/skills/eng-frontend/references/8-performance.md +58 -0
  76. package/skills/eng-frontend/references/9-browser-apis.md +54 -0
  77. package/skills/{eng-design-system → eng-frontend-design-system}/SKILL.md +4 -2
  78. package/skills/{eng-microfrontend → eng-frontend-microfrontend}/SKILL.md +4 -2
  79. package/skills/{eng-browser-extension-builder → eng-global-browser-extension-builder}/SKILL.md +2 -1
  80. package/skills/{eng-docs-write → eng-global-docs-write}/SKILL.md +8 -4
  81. package/skills/eng-global-jira-comment/SKILL.md +21 -0
  82. package/skills/{eng-pr → eng-global-pr}/SKILL.md +7 -3
  83. package/skills/{eng-task-comment → eng-global-task-comment}/SKILL.md +6 -2
  84. package/skills/eng-qa-a11y-audit/SKILL.md +1 -0
  85. package/skills/eng-qa-bug-report/SKILL.md +2 -1
  86. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +1 -1
  87. package/skills/eng-qa-cypress-e2e/SKILL.md +1 -0
  88. package/skills/eng-qa-dev-guide/SKILL.md +1 -0
  89. package/skills/eng-qa-e2e/SKILL.md +1 -0
  90. package/skills/eng-qa-e2e-spec-writer/SKILL.md +1 -0
  91. package/skills/eng-qa-exploratory/SKILL.md +1 -0
  92. package/skills/eng-qa-gate/SKILL.md +3 -2
  93. package/skills/eng-qa-graphql-contract/SKILL.md +1 -0
  94. package/skills/eng-qa-quality-report/SKILL.md +3 -2
  95. package/skills/eng-qa-test-plan/SKILL.md +1 -0
  96. package/skills/eng-qa-testsprite/SKILL.md +2 -1
  97. package/skills/eng-qa-unit-test/SKILL.md +1 -0
  98. package/skills/eng-scraper/SKILL.md +1 -0
  99. package/skills/eng-scraper-robot-builder/SKILL.md +1 -0
  100. package/skills/{eng-cybersecurity → eng-security-cybersecurity}/SKILL.md +3 -2
  101. package/skills/eng-security-patch/SKILL.md +6 -2
  102. package/skills/{eng-threat-model → eng-security-threat-model}/SKILL.md +6 -2
  103. package/skills/eng-security-triage/SKILL.md +4 -0
  104. package/skills/{context-detect → jarvis-context-detect}/SKILL.md +6 -5
  105. package/skills/{context-detect → jarvis-context-detect}/assets/context-profile-template.md +3 -3
  106. package/skills/jarvis-create-specialization/SKILL.md +230 -0
  107. package/skills/jarvis-create-specialization/assets/referencia-template.md +39 -0
  108. package/skills/jarvis-create-specialization/assets/skill-especializacao-template.md +78 -0
  109. package/skills/{docs-central → jarvis-docs-central}/README.md +1 -1
  110. package/skills/{docs-central → jarvis-docs-central}/SKILL.md +3 -40
  111. package/skills/{docs-index → jarvis-docs-index}/SKILL.md +8 -4
  112. package/skills/{init-jarvis → jarvis-init}/SKILL.md +42 -19
  113. package/skills/{init-jarvis → jarvis-init}/assets/mcp-configs.md +3 -3
  114. package/skills/{init-jarvis → jarvis-init}/assets/onboarding-checklist.md +1 -1
  115. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +163 -0
  116. package/skills/{init-jarvis → jarvis-init}/assets/setup-guide.md +1 -1
  117. package/skills/jarvis-init/assets/sinais-de-stack.md +54 -0
  118. package/skills/jarvis-list-specializations/SKILL.md +148 -0
  119. package/skills/{report-issue → jarvis-report-issue}/SKILL.md +3 -2
  120. package/skills/{prod-roadmap-report → product-roadmap-report}/SKILL.md +2 -1
  121. package/skills/product-specs/SKILL.md +45 -0
  122. package/skills/{prod-specs-update → product-specs-update}/SKILL.md +3 -2
  123. package/taxonomy.md +3 -21
  124. package/templates/AGENTS.md +7 -6
  125. package/templates/CDD aplicado a Prompts.md +5 -5
  126. package/templates/ENV-template.md +12 -9
  127. package/templates/engineering/AGENTS-template.md +1 -1
  128. package/templates/engineering/CONTACTS-template.md +1 -1
  129. package/templates/product/prod-discovery-template.md +98 -0
  130. package/{skills/prod-specs/templates → templates/product}/prod-epic-template.md +1 -0
  131. package/{skills/prod-specs/templates → templates/product}/prod-frd-template.md +1 -0
  132. package/{skills/prod-specs/templates → templates/product}/prod-issue-template.md +1 -0
  133. package/{skills/prod-specs/templates → templates/product}/prod-prd-template.md +1 -0
  134. package/workflows/AGENTS.md +3 -1
  135. package/workflows/README.md +2 -0
  136. package/workflows/engineering/eng.bug-audit.md +2 -2
  137. package/workflows/engineering/eng.build-tech-spec.md +38 -49
  138. package/workflows/engineering/eng.debug.md +10 -10
  139. package/workflows/engineering/eng.docs.md +2 -2
  140. package/workflows/engineering/eng.plan.md +5 -5
  141. package/workflows/engineering/eng.pr.md +8 -8
  142. package/workflows/engineering/eng.pre-pr.md +16 -20
  143. package/workflows/engineering/eng.review.md +5 -10
  144. package/workflows/engineering/eng.rpa.robot.md +3 -3
  145. package/workflows/engineering/eng.security-audit.md +5 -5
  146. package/workflows/engineering/eng.security-incident.md +2 -2
  147. package/workflows/engineering/eng.security-pipeline.md +2 -2
  148. package/workflows/engineering/eng.start.md +16 -50
  149. package/workflows/engineering/eng.work.md +9 -12
  150. package/workflows/engineering/frontend/eng.frontend-component.md +68 -96
  151. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +90 -220
  152. package/workflows/engineering/frontend/eng.frontend-review.md +57 -63
  153. package/workflows/engineering/qa/eng.qa-quality-report.md +0 -5
  154. package/workflows/product/prod.roadmap.preview.md +2 -2
  155. package/workflows/product/prod.spec.breakdown.md +3 -8
  156. package/workflows/product/prod.spec.discovery.md +152 -0
  157. package/workflows/product/prod.spec.epic.md +3 -0
  158. package/workflows/product/prod.spec.frd.md +123 -8
  159. package/workflows/product/prod.spec.issue.md +3 -2
  160. package/workflows/product/prod.spec.md +2 -0
  161. package/workflows/product/prod.spec.prd.md +105 -6
  162. package/workflows/taxonomy.md +1 -1
  163. package/workflows/warm-up.md +5 -26
  164. package/agents/engineering/eng.tech-analyst.agent.md +0 -102
  165. package/skills/churn-audit/SKILL.md +0 -385
  166. package/skills/eng-jira-comment/SKILL.md +0 -17
  167. package/skills/eng-tech-analyst/SKILL.md +0 -529
  168. package/skills/lovable-prompt-generator/SKILL.md +0 -304
  169. package/skills/prod-specs/SKILL.md +0 -108
  170. package/skills/prod-specs/references/prod.spec.clarify.md +0 -176
  171. package/skills/prod-specs/references/prod.spec.epic.md +0 -107
  172. package/skills/prod-specs/references/prod.spec.frd.md +0 -135
  173. package/skills/prod-specs/references/prod.spec.issue.md +0 -145
  174. package/skills/prod-specs/references/prod.spec.prd.md +0 -118
  175. package/skills/prod-specs/templates/prod-prd-full-template.md +0 -159
  176. package/workflows/engineering/ta/eng.ta.atendimento.md +0 -93
  177. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-code.md +0 -0
  178. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-component.md +0 -0
  179. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-container.md +0 -0
  180. /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-context.md +0 -0
  181. /package/skills/{prod-roadmap-report → product-roadmap-report}/README.md +0 -0
  182. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.compiled.single.team.md +0 -0
  183. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.list.projects.md +0 -0
  184. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.memory.md +0 -0
  185. /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.roadmap.preview.md +0 -0
  186. /package/skills/{prod-roadmap-report → product-roadmap-report}/references/detailed-guide.md +0 -0
  187. /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/detailed-guide.md +0 -0
  188. /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/status-report-rules.md +0 -0
  189. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-multiple-teams-compiled-status.md +0 -0
  190. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-projects-list.md +0 -0
  191. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-compiled-status.md +0 -0
  192. /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-status.md +0 -0
  193. /package/{skills/prod-specs/templates → templates/product}/prod-breakdown-template.md +0 -0
package/rules/AGENTS.md CHANGED
@@ -22,6 +22,8 @@ rules/
22
22
  │ ├── eng.pr-rules.md # Regras para /eng.pr
23
23
  │ ├── eng.bump-rules.md # Regras para versionamento
24
24
  │ ├── eng.tech-spec-rules.md # Regras para tech specs
25
+ │ ├── eng.specializations-rules.md # Carregamento de especializações por stack
26
+ │ ├── eng.skills-rules.md # Área obrigatória nos skills e aviso de skill inexistente
25
27
  │ └── qa/ # Regras de QA
26
28
  └── product/ # Regras de produto
27
29
  └── prod-rules.md # Regras de especificacao
@@ -67,14 +69,14 @@ Cada arquivo de rule declara para quais perfis se aplica via bloco `applies_to`,
67
69
  | HUB | FRONTEND, BACKEND, QA, DATA, AI, FULLCYCLE | qualquer hub |
68
70
  | POSITION | TECH LEAD, PM, QA-ENGINEER, SENIOR, GENERALIST | qualquer cargo |
69
71
  | AREA | ENGINEERING, PRODUCT | qualquer área |
70
- | SQUAD | CORE, SUPPORT | qualquer squad |
72
+ | SQUAD | CORE | qualquer squad |
71
73
 
72
74
  **Regras:**
73
75
  - Uma rule é aplicada se **todos** os eixos forem satisfeitos (AND, não OR)
74
76
  - Arquivos sem bloco `applies_to` são considerados **universais** — copiados para qualquer perfil
75
77
  - `rules/AGENTS.md` nunca é filtrado — sempre copiado
76
78
 
77
- **Quem faz a filtragem:** o skill `/init-jarvis` (Passo 9 — Profile-Aware Rules Sync). Ao criar, atualizar ou fazer upgrade do ENV.md, copia para `$IDE/rules/` apenas as rules que batem com o perfil (HUB + POSITION + AREA + SQUAD) e deleta as que não batem mais.
79
+ **Quem faz a filtragem:** o skill `/jarvis-init` (Passo 9 — Profile-Aware Rules Sync). Ao criar, atualizar ou fazer upgrade do ENV.md, copia para `$IDE/rules/` apenas as rules que batem com o perfil (HUB + POSITION + AREA + SQUAD) e deleta as que não batem mais.
78
80
 
79
81
  **Ao criar uma nova rule**, definir o bloco `applies_to` é obrigatório. Sem ele, a rule é tratada como universal — o que pode ser indesejado para rules domain-specific.
80
82
 
@@ -147,7 +149,7 @@ Links para documentacao relacionada.
147
149
  | Fase | Comandos | Restricao |
148
150
  |------|----------|-----------|
149
151
  | Planejamento | `eng.start`, `eng.plan` | Somente analise, SEM codigo |
150
- | Implementacao | `eng.work` | Codigo e testes, SEM commits |
152
+ | Implementacao | `eng.work` | Codigo e testes, commit por fase, SEM push nem PR |
151
153
  | Entrega | `eng.pr` | Branch, commit e PR |
152
154
 
153
155
  ### Seguranca
@@ -159,7 +161,7 @@ Links para documentacao relacionada.
159
161
 
160
162
  ### ENV.md
161
163
 
162
- - Validar ENV.md antes de qualquer comando (exceto `/init-jarvis`)
164
+ - Validar ENV.md antes de qualquer comando (exceto `/jarvis-init`)
163
165
  - Respeitar `MAX_AI_EXECUTION_PERCENTAGE`
164
166
 
165
167
  ---
@@ -7,7 +7,7 @@ env_file: "@/ENV.md"
7
7
 
8
8
  - **🚨 PRÉ-REQUISITO: VALIDAÇÃO DO ENV.md**
9
9
  - **ANTES de executar qualquer comando ou workflow**, o agente **DEVE verificar** se o arquivo `$IDE/ENV.md` existe e está preenchido corretamente.
10
- - **Exceção**: O comando `/init-jarvis` é o único que pode ser executado sem o `ENV.md`, pois é ele que cria o arquivo.
10
+ - **Exceção**: O comando `/jarvis-init` é o único que pode ser executado sem o `ENV.md`, pois é ele que cria o arquivo.
11
11
  - **Validação obrigatória**: O arquivo deve conter as seguintes variáveis preenchidas (não vazias):
12
12
  - `WORKSPACE` (se vazio: nome da pasta que contém `$IDE/`)
13
13
  - `IDE`
@@ -20,13 +20,15 @@ env_file: "@/ENV.md"
20
20
  - **Se o ENV.md não existir ou estiver incompleto**, o agente deve:
21
21
  1. Interromper a execução do comando solicitado
22
22
  2. Informar ao usuário que o framework não foi inicializado
23
- 3. Orientar o usuário a executar `/init-jarvis` primeiro
23
+ 3. Orientar o usuário a executar `/jarvis-init` primeiro
24
24
  ```
25
25
  ⚠️ O framework não foi inicializado.
26
26
 
27
27
  O arquivo ENV.md não existe ou está incompleto.
28
- Por favor, execute `/init-jarvis` para configurar o ambiente antes de continuar.
28
+ Por favor, execute `/jarvis-init` para configurar o ambiente antes de continuar.
29
29
  ```
30
+ - **Listas de especializações (presentes, podem estar vazias)**: `BACKEND_SPECIALIZATIONS` e `FRONTEND_SPECIALIZATIONS` devem **existir** no `ENV.md`. Lista **vazia** é válida (só o skill base). Variável **ausente** interrompe o comando de backend ou de frontend e orienta o Upgrade do `/jarvis-init`. Detalhes e mensagens em `eng.specializations-rules.md`.
31
+ - **Skills sem área**: skill instalado sem `metadata.area` reconhecida bloqueia o comando, e skill pedido que não existe gera aviso. Detalhes e mensagens em `eng.skills-rules.md`.
30
32
 
31
33
  - **🔧 VARIÁVEL `$IDE` - DETECÇÃO AUTOMÁTICA DA PASTA DA IDE**
32
34
  - A variável `$IDE` representa a pasta da IDE que o usuário está utilizando.
@@ -8,7 +8,7 @@ env_file: "@/ENV.md"
8
8
  # Regras de Seguranca para Engenharia
9
9
 
10
10
  Regras de seguranca aplicaveis a todo o fluxo de engenharia — do planejamento ao merge.
11
- Toda implementacao deve seguir estas regras por padrao, sem necessidade de invocar o skill `eng-cybersecurity` explicitamente.
11
+ Toda implementacao deve seguir estas regras por padrao, sem necessidade de invocar o skill `eng-security-cybersecurity` explicitamente.
12
12
 
13
13
  ---
14
14
 
@@ -118,7 +118,7 @@ Se o PR toca em areas sensiveis (auth, sessions, RBAC, CORS, CSP, permissoes), o
118
118
 
119
119
  ## Fronteira Read-Only (Analise de Seguranca)
120
120
 
121
- Os skills de seguranca (`eng-threat-model`, `eng.security-audit`, `eng-security-triage`) operam em **modo estatico apenas**:
121
+ Os skills de seguranca (`eng-security-threat-model`, `eng.security-audit`, `eng-security-triage`) operam em **modo estatico apenas**:
122
122
 
123
123
  - Leem codigo-fonte, historico git e relatorios fornecidos pelo usuario
124
124
  - **Nunca** executam, buildam, fuzzam ou modificam o codigo-alvo
@@ -129,7 +129,7 @@ Os skills de seguranca (`eng-threat-model`, `eng.security-audit`, `eng-security-
129
129
 
130
130
  ## Calibracao CDD por Risco
131
131
 
132
- Usar `context-detect` para calibrar a profundidade da analise de seguranca:
132
+ Usar `jarvis-context-detect` para calibrar a profundidade da analise de seguranca:
133
133
 
134
134
  | Nivel de risco | Criterio | Estrategia | Tokens (estimado) |
135
135
  |---|---|---|---|
@@ -165,7 +165,7 @@ O agente de engenharia (ATHENA) deve recomendar o uso do agente SENTINEL (`eng.c
165
165
  - Feature envolve fluxo financeiro, PII ou auth complexa (OAuth, MFA)
166
166
  - Duvida sobre impacto de seguranca que excede o escopo das regras acima
167
167
 
168
- > O skill `/eng-cybersecurity` pode ser invocado diretamente para consulta rapida sem ativar o agente completo.
168
+ > O skill `/eng-security-cybersecurity` pode ser invocado diretamente para consulta rapida sem ativar o agente completo.
169
169
 
170
170
  ---
171
171
 
@@ -373,35 +373,32 @@ Ao gerar subtarefas com escopo de QA/testes, aplique a seguinte divisão **obrig
373
373
 
374
374
  ---
375
375
 
376
- ## Formato de Saída: JSON
376
+ ## Formato de Saída: Markdown
377
377
 
378
378
  ### Estrutura Obrigatória
379
379
 
380
- ```json
381
- {
382
- "subtasks": [
383
- {
384
- "summary": "[STACK] Título específico da subtarefa",
385
- "description": "Template completo com:\n\n## 🎯 O Que Você Vai Fazer\n\n... (resto conforme template acima)"
386
- },
387
- {
388
- "summary": "[STACK] Próxima subtarefa",
389
- "description": "..."
390
- }
391
- ]
392
- }
380
+ Uma seção por subtarefa, em Markdown puro, na ordem de implementação:
381
+
382
+ ```markdown
383
+ # Subtarefa N: [STACK] Título específico da subtarefa
384
+
385
+ **Depende de:** Subtarefa X (ou "nenhuma")
386
+ **Desbloqueia:** Subtarefa Y (ou "nenhuma")
387
+ **Paralela com:** Subtarefa Z (ou "nenhuma")
388
+
389
+ {Description ULTRA DETALHADA seguindo o template da seção "Estrutura de Subtarefa"}
390
+
391
+ ---
393
392
  ```
394
393
 
395
- ### Regras CRÍTICAS para o JSON
394
+ ### Regras CRÍTICAS de formatação
396
395
 
397
- 1. **APENAS JSON** - Sem texto antes ou depois
398
- 2. **Use `\n` para quebras de linha** dentro das strings
399
- 3. **Escape aspas com `\"`** dentro das strings
400
- 4. **Todos os títulos com [STACK]** - Obrigatório
401
- 5. **Description ULTRA DETALHADA** - Siga o template COMPLETAMENTE
402
- 6. **Código COMPLETO** - Não use "..." ou placeholder
403
- 7. **Caminhos reais** - Use paths que existem no projeto
404
- 8. **Valide JSON** - Antes de retornar
396
+ 1. **Markdown nativo** - sem JSON, sem strings escapadas, sem `\n`
397
+ 2. **Todos os títulos com [STACK]** - Obrigatório
398
+ 3. **Description ULTRA DETALHADA** - Siga o template COMPLETAMENTE
399
+ 4. **Código COMPLETO** - Não use "..." ou placeholder
400
+ 5. **Caminhos reais** - Use paths que existem no projeto
401
+ 6. **Numeração sequencial** - Subtarefa 1, Subtarefa 2, etc.
405
402
 
406
403
  ---
407
404
 
@@ -434,7 +431,7 @@ Cada subtarefa deve ter seção "🔗 Dependências" indicando:
434
431
 
435
432
  ## Checklist de Qualidade Final
436
433
 
437
- Antes de retornar o JSON, valide CADA subtarefa:
434
+ Antes de retornar, valide CADA subtarefa:
438
435
 
439
436
  ### ✅ Completude
440
437
 
@@ -479,7 +476,7 @@ Antes de retornar o JSON, valide CADA subtarefa:
479
476
 
480
477
  ### ✅ Validação
481
478
 
482
- - [ ] JSON é válido
479
+ - [ ] Saída em Markdown válido, uma seção por subtarefa
483
480
  - [ ] Nenhuma subtarefa vaga
484
481
  - [ ] Toda subtarefa tem ≥ 4h e ≤ 1 dia de trabalho
485
482
  - [ ] Nenhuma fatia horizontal (split por camada)
@@ -500,7 +497,7 @@ eng.build-tech-spec → tech-spec.md → eng.breakdown-subtasks
500
497
  ### Saída (para onde vai)
501
498
 
502
499
  ```
503
- eng.breakdown-subtasks → subtasks JSON → Jira
500
+ eng.breakdown-subtasks → subtarefas em Markdown → board
504
501
  ```
505
502
 
506
503
  ### Relação com Outros Workflows
@@ -550,12 +547,17 @@ eng.breakdown-subtasks → subtasks JSON → Jira
550
547
 
551
548
  ### ❌ MAL FEITA
552
549
 
553
- ```json
554
- {
555
- "summary": "[BACKEND] Criar autenticação",
556
- "description": "Implementar o sistema de autenticação com JWT.\n\nFaça: Login, registro e validação.\n\nUse bcrypt para senha e JWT para token.\n\nRetorne o usuário no login."
557
- }
558
- ```
550
+ ````markdown
551
+ # Subtarefa 1: [BACKEND] Criar autenticação
552
+
553
+ Implementar o sistema de autenticação com JWT.
554
+
555
+ Faça: Login, registro e validação.
556
+
557
+ Use bcrypt para senha e JWT para token.
558
+
559
+ Retorne o usuário no login.
560
+ ````
559
561
 
560
562
  **Problemas:**
561
563
 
@@ -567,12 +569,181 @@ eng.breakdown-subtasks → subtasks JSON → Jira
567
569
 
568
570
  ### ✅ BEM FEITA
569
571
 
570
- ````json
571
- {
572
- "summary": "[BACKEND] Criar endpoint POST /api/auth/register com validação",
573
- "description": "## 🎯 O Que Você Vai Fazer\n\nCriar o endpoint de registro que recebe email/senha, valida dados, cria usuário no banco e retorna JWT.\n\n---\n\n## 📋 Contexto\n\n### Por que?\nSistema precisa permitir novos usuários se cadastrem.\n\n### Pré-requisitos\n- [ ] Migration de usuários ([DATA] Criar migration tabela users)\n\n---\n\n## 🛠️ Stack\n\n| Tech | Versão | Para |\n|------|--------|------|\n| Express | 4.18+ | Framework HTTP |\n| bcrypt | 5.1+ | Hash de senha |\n| JWT | 9.0+ | Tokens |\n\n---\n\n## 📁 Arquivos\n\n| Arquivo | Ação | Descrição |\n|---------|------|--------|\n| `src/controllers/auth.controller.ts` | 🆕 | Controlador |\n| `src/services/auth.service.ts` | 🆕 | Lógica de negócio |\n| `src/routes/auth.ts` | 🆕 | Rotas |\n| `src/__tests__/auth.spec.ts` | 🆕 | Testes |\n\n---\n\n## 👣 Passos\n\n### Passo 1: Criar schema de validação\n\n```typescript\n// src/schemas/auth.schema.ts\nimport { body } from 'express-validator';\n\nexport const registerSchema = [\n body('email')\n .isEmail()\n .withMessage('Email inválido')\n .normalizeEmail(),\n body('password')\n .isLength({ min: 8 })\n .withMessage('Mínimo 8 caracteres')\n .matches(/[A-Z]/)\n .withMessage('Precisa letra maiúscula'),\n];\n```\n\n**Explicação:**\n- `isEmail()`: Valida formato\n- `normalizeEmail()`: Padroniza\n- `matches(/[A-Z]/)`: Regex para maiúscula\n\n---\n\n### Passo 2: Criar AuthService\n\n```typescript\n// src/services/auth.service.ts\nimport bcrypt from 'bcrypt';\nimport jwt from 'jsonwebtoken';\n\nexport class AuthService {\n async register(email: string, password: string) {\n // Hash da senha\n const hash = await bcrypt.hash(password, 10);\n \n // Criar usuário (assumindo repo existe)\n const user = await this.userRepo.create({\n email,\n passwordHash: hash,\n });\n \n // Gerar token\n const token = jwt.sign(\n { userId: user.id },\n process.env.JWT_SECRET!,\n { expiresIn: '24h' }\n );\n \n return { user, token };\n }\n}\n```\n\n**Explicação:**\n- `bcrypt.hash(password, 10)`: 10 salt rounds é seguro\n- `jwt.sign()`: Cria token que expira em 24h\n- Não retornamos passwordHash no response\n\n---\n\n## 🧪 Testes\n\n```typescript\n// src/__tests__/auth.spec.ts\nimport request from 'supertest';\nimport { app } from '../app';\n\ndescribe('POST /api/auth/register', () => {\n it('deve registrar com email e senha válidos', async () => {\n const response = await request(app)\n .post('/api/auth/register')\n .send({\n email: 'test@example.com',\n password: 'Senha123!',\n });\n \n expect(response.status).toBe(201);\n expect(response.body).toHaveProperty('token');\n });\n \n it('deve retornar 400 para email inválido', async () => {\n const response = await request(app)\n .post('/api/auth/register')\n .send({\n email: 'invalid',\n password: 'Senha123!',\n });\n \n expect(response.status).toBe(400);\n });\n});\n```\n\n### Cenários\n\n| Cenário | Input | Output |\n|---------|-------|--------|\n| Válido | email + senha válidos | 201 + token |\n| Email inválido | email sem @ | 400 VALIDATION_ERROR |\n| Senha fraca | < 8 chars | 400 VALIDATION_ERROR |\n\n---\n\n## ✅ Checklist\n\n- [ ] Schema criado\n- [ ] AuthService implementado\n- [ ] AuthController implementado\n- [ ] Rotas configuradas\n- [ ] Testes passando\n- [ ] Linter clean\n- [ ] Build ok\n\n---\n\n## ⚠️ Riscos\n\n| Risco | Como Evitar |\n|-------|-------------|\n| JWT_SECRET exposto | Usar .env, nunca commitar |\n| Senha em log | Não logar req.body |\n\n---\n\n## 🔗 Dependências\n\n**Depende de:** [DATA] Criar migration tabela users\n**Desbloqueia:** [FRONTEND] Criar tela de registro\n**Paralela com:** [INFRA] Configurar variáveis JWT\n"
572
+ `````markdown
573
+ # Subtarefa 1: [BACKEND] Criar endpoint POST /api/auth/register com validação
574
+
575
+ ## 🎯 O Que Você Vai Fazer
576
+
577
+ Criar o endpoint de registro que recebe email/senha, valida dados, cria usuário no banco e retorna JWT.
578
+
579
+ ---
580
+
581
+ ## 📋 Contexto
582
+
583
+ ### Por que?
584
+ Sistema precisa permitir novos usuários se cadastrem.
585
+
586
+ ### Pré-requisitos
587
+ - [ ] Migration de usuários ([DATA] Criar migration tabela users)
588
+
589
+ ---
590
+
591
+ ## 🛠️ Stack
592
+
593
+ | Tech | Versão | Para |
594
+ |------|--------|------|
595
+ | Express | 4.18+ | Framework HTTP |
596
+ | bcrypt | 5.1+ | Hash de senha |
597
+ | JWT | 9.0+ | Tokens |
598
+
599
+ ---
600
+
601
+ ## 📁 Arquivos
602
+
603
+ | Arquivo | Ação | Descrição |
604
+ |---------|------|--------|
605
+ | `src/controllers/auth.controller.ts` | 🆕 | Controlador |
606
+ | `src/services/auth.service.ts` | 🆕 | Lógica de negócio |
607
+ | `src/routes/auth.ts` | 🆕 | Rotas |
608
+ | `src/__tests__/auth.spec.ts` | 🆕 | Testes |
609
+
610
+ ---
611
+
612
+ ## 👣 Passos
613
+
614
+ ### Passo 1: Criar schema de validação
615
+
616
+ ```typescript
617
+ // src/schemas/auth.schema.ts
618
+ import { body } from 'express-validator';
619
+
620
+ export const registerSchema = [
621
+ body('email')
622
+ .isEmail()
623
+ .withMessage('Email inválido')
624
+ .normalizeEmail(),
625
+ body('password')
626
+ .isLength({ min: 8 })
627
+ .withMessage('Mínimo 8 caracteres')
628
+ .matches(/[A-Z]/)
629
+ .withMessage('Precisa letra maiúscula'),
630
+ ];
631
+ ```
632
+
633
+ **Explicação:**
634
+ - `isEmail()`: Valida formato
635
+ - `normalizeEmail()`: Padroniza
636
+ - `matches(/[A-Z]/)`: Regex para maiúscula
637
+
638
+ ---
639
+
640
+ ### Passo 2: Criar AuthService
641
+
642
+ ```typescript
643
+ // src/services/auth.service.ts
644
+ import bcrypt from 'bcrypt';
645
+ import jwt from 'jsonwebtoken';
646
+
647
+ export class AuthService {
648
+ async register(email: string, password: string) {
649
+ // Hash da senha
650
+ const hash = await bcrypt.hash(password, 10);
651
+
652
+ // Criar usuário (assumindo repo existe)
653
+ const user = await this.userRepo.create({
654
+ email,
655
+ passwordHash: hash,
656
+ });
657
+
658
+ // Gerar token
659
+ const token = jwt.sign(
660
+ { userId: user.id },
661
+ process.env.JWT_SECRET!,
662
+ { expiresIn: '24h' }
663
+ );
664
+
665
+ return { user, token };
666
+ }
574
667
  }
575
- ````
668
+ ```
669
+
670
+ **Explicação:**
671
+ - `bcrypt.hash(password, 10)`: 10 salt rounds é seguro
672
+ - `jwt.sign()`: Cria token que expira em 24h
673
+ - Não retornamos passwordHash no response
674
+
675
+ ---
676
+
677
+ ## 🧪 Testes
678
+
679
+ ```typescript
680
+ // src/__tests__/auth.spec.ts
681
+ import request from 'supertest';
682
+ import { app } from '../app';
683
+
684
+ describe('POST /api/auth/register', () => {
685
+ it('deve registrar com email e senha válidos', async () => {
686
+ const response = await request(app)
687
+ .post('/api/auth/register')
688
+ .send({
689
+ email: 'test@example.com',
690
+ password: 'Senha123!',
691
+ });
692
+
693
+ expect(response.status).toBe(201);
694
+ expect(response.body).toHaveProperty('token');
695
+ });
696
+
697
+ it('deve retornar 400 para email inválido', async () => {
698
+ const response = await request(app)
699
+ .post('/api/auth/register')
700
+ .send({
701
+ email: 'invalid',
702
+ password: 'Senha123!',
703
+ });
704
+
705
+ expect(response.status).toBe(400);
706
+ });
707
+ });
708
+ ```
709
+
710
+ ### Cenários
711
+
712
+ | Cenário | Input | Output |
713
+ |---------|-------|--------|
714
+ | Válido | email + senha válidos | 201 + token |
715
+ | Email inválido | email sem @ | 400 VALIDATION_ERROR |
716
+ | Senha fraca | < 8 chars | 400 VALIDATION_ERROR |
717
+
718
+ ---
719
+
720
+ ## ✅ Checklist
721
+
722
+ - [ ] Schema criado
723
+ - [ ] AuthService implementado
724
+ - [ ] AuthController implementado
725
+ - [ ] Rotas configuradas
726
+ - [ ] Testes passando
727
+ - [ ] Linter clean
728
+ - [ ] Build ok
729
+
730
+ ---
731
+
732
+ ## ⚠️ Riscos
733
+
734
+ | Risco | Como Evitar |
735
+ |-------|-------------|
736
+ | JWT_SECRET exposto | Usar .env, nunca commitar |
737
+ | Senha em log | Não logar req.body |
738
+
739
+ ---
740
+
741
+ ## 🔗 Dependências
742
+
743
+ **Depende de:** [DATA] Criar migration tabela users
744
+ **Desbloqueia:** [FRONTEND] Criar tela de registro
745
+ **Paralela com:** [INFRA] Configurar variáveis JWT
746
+ `````
576
747
 
577
748
  **Diferenças:**
578
749
 
@@ -50,7 +50,7 @@ Todo arquivo `{robot-tag}-robot.md` deve conter:
50
50
 
51
51
  ### Recomendado
52
52
 
53
- - Chamar `/docs-index` após criar ou atualizar qualquer `{robot-tag}-robot.md` para manter o índice atualizado
53
+ - Chamar `/jarvis-docs-index` após criar ou atualizar qualquer `{robot-tag}-robot.md` para manter o índice atualizado
54
54
  - Incluir o índice de colunas da tabela HTML (com numeração `[0]`, `[1]`, etc.) sempre que for inspecionado via log
55
55
 
56
56
  ---
@@ -28,7 +28,7 @@ Papéis no fluxo (ainda existem; não são cadeado):
28
28
  | **TECH LEAD** | `TECH LEAD` | Apoia priorização, review e deploy quando pedido |
29
29
  | **PM** | `PM`, `TPM`, `GPM` | Apoia aceite de produto quando pedido |
30
30
  | **QA** | `QA-ENGINEER` | Executa testes em apoio; não bloqueia o owner |
31
- | **N2** | Tech Analyst / suporte | Validação operacional se o time tiver esse papel |
31
+ | **N2** | Suporte N2 | Validação operacional se o time tiver esse papel |
32
32
 
33
33
  ## Diagrama do Fluxo
34
34
 
@@ -32,7 +32,7 @@ Qual o seu número de controle para esta tarefa?
32
32
  ```
33
33
 
34
34
  3. Usar a resposta (lowercase) como pasta `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/` e no prefixo da branch.
35
- 4. **Não** chamar `/eng-task-comment`, **não** mover card, **não** buscar issue no board.
35
+ 4. **Não** chamar `/eng-global-task-comment`, **não** mover card, **não** buscar issue no board.
36
36
 
37
37
  Com board definido, se o key não veio nos argumentos, perguntar o id do card naquele vendor (ex: Jira `TASK-123`).
38
38
 
@@ -41,7 +41,7 @@ Com board definido, se o key não veio nos argumentos, perguntar o id do card na
41
41
  Só se `TASK_MANAGER` estiver preenchido com um vendor. Freelance → pular.
42
42
 
43
43
  ```
44
- /eng-task-comment {TASK_MANAGER_KEY} {mensagem}
44
+ /eng-global-task-comment {TASK_MANAGER_KEY} {mensagem}
45
45
  ```
46
46
 
47
47
  ## MR / PR
@@ -98,6 +98,6 @@ O workflow **deve sempre** terminar com:
98
98
  - 🟡 Yellow: pode abrir PR com ressalvas documentadas
99
99
  - 🔴 Red: bloqueado — listar o que impede o PR
100
100
 
101
- 2. **Comentário no card** com o status final (via `/eng-task-comment`) — pular se freelance
101
+ 2. **Comentário no card** com o status final (via `/eng-global-task-comment`) — pular se freelance
102
102
 
103
103
  3. **Aguardar permissão explícita** do usuário para prosseguir para `/eng.pr`
@@ -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".
@@ -18,19 +18,19 @@ O workflow `start` tem como **único objetivo** criar o documento de arquitetura
18
18
 
19
19
  O `start` é **estritamente proibido** de:
20
20
 
21
- | ❌ Proibido | ✅ Permitido |
22
- | ------------------------------------ | ----------------------------------------- |
23
- | Criar arquivos de código (.ts, .js) | Criar `architecture.md` |
24
- | Modificar código existente | Ler código para análise |
25
- | Executar comandos no terminal | Listar arquivos e estruturas |
26
- | Instalar dependências | Buscar padrões no codebase |
27
- | Fazer commits | Criar diretório da sessão |
28
- | Executar testes | Documentar decisões |
29
- | Iniciar servidores | Dialogar com usuário |
21
+ | ❌ Proibido | ✅ Permitido |
22
+ | ------------------------------------ | ----------------------------------------------------------- |
23
+ | Criar arquivos de código (.ts, .js) | Criar `architecture.md` |
24
+ | Modificar código existente | Ler código para análise |
25
+ | Instalar dependências | Comandos de leitura (`git`, `ls`, `grep`) para investigar |
26
+ | Fazer commits | Criar a branch de feature (Fase 1.1 do workflow) |
27
+ | Executar testes | Criar o diretório da sessão e `context.md` |
28
+ | Iniciar servidores | Registrar `.timestamp_start` na sessão |
29
+ | Alterar arquivos do projeto | Documentar decisões e dialogar com usuário |
30
30
 
31
31
  ### 2. Artefato Único
32
32
 
33
- O **único artefato** produzido pelo `start` é:
33
+ O **único entregável** do `start` é:
34
34
 
35
35
  ```
36
36
  $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/architecture.md
@@ -38,7 +38,7 @@ $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/architecture.md
38
38
 
39
39
  > 📁 **Padrão**: `TASK_MANAGER_KEY` é o ID do card em **lowercase** (ex: `TASK-123` → `task-123`)
40
40
 
41
- Nenhum outro arquivo deve ser criado, modificado ou deletado.
41
+ Além dele, o `start` pode criar apenas os arquivos de apoio da própria sessão (`context.md` e `.timestamp_start`, em `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/`) e a branch de feature. Nenhum arquivo do projeto deve ser criado, modificado ou deletado.
42
42
 
43
43
  ### 3. Aprovação Obrigatória
44
44