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.
- package/AGENTS.md +66 -64
- package/README.md +24 -10
- package/agents/AGENTS.md +12 -8
- package/agents/README.md +14 -16
- package/agents/engineering/data/eng.data-engineer.agent.md +6 -6
- package/agents/engineering/eng.agent.md +19 -36
- package/agents/engineering/eng.bug-hunter.md +13 -12
- package/agents/engineering/eng.cybersecurity.agent.md +20 -35
- package/agents/engineering/eng.docs-writer.md +2 -2
- package/agents/engineering/eng.frontend.agent.md +17 -22
- package/agents/engineering/eng.rpa.agent.md +5 -15
- package/agents/engineering/qa/eng.qa.test-architect.md +4 -4
- package/agents/engineering/qa/eng.qa.test-planner.md +3 -3
- package/agents/engineering/qa/eng.qa.testing-engineer.md +3 -3
- package/agents/product/prod.discovery-interviewer.md +86 -0
- package/bin/commands/init.js +6 -6
- package/bin/jarvis.js +1 -1
- package/bin/lib/config/constants.js +47 -0
- package/bin/lib/core/sync-engine.js +12 -0
- package/package.json +2 -5
- package/rules/AGENTS.md +6 -4
- package/rules/engineering/eng-rules.md +5 -3
- package/rules/engineering/eng-security-rules.md +4 -4
- package/rules/engineering/eng.breakdown-subtasks-rules.md +208 -37
- package/rules/engineering/eng.docs-scraping-rules.md +1 -1
- package/rules/engineering/eng.downstream-flow-rules.md +1 -1
- package/rules/engineering/eng.integrations-rules.md +2 -2
- package/rules/engineering/eng.pre-pr-rules.md +1 -1
- package/rules/engineering/eng.skills-rules.md +60 -0
- package/rules/engineering/eng.specializations-rules.md +69 -0
- package/rules/engineering/eng.start-rules.md +11 -11
- package/rules/engineering/eng.work-rules.md +19 -14
- package/rules/engineering/frontend/eng.frontend-rules.md +70 -69
- package/rules/product/README.md +2 -0
- package/rules/product/prod-rules.md +7 -5
- package/{skills/prod-specs/rules/prod-spec-rules.md → rules/product/prod.spec-rules.md} +55 -50
- package/skills/AGENTS.md +111 -47
- package/skills/SKILLS-ROADMAP.md +26 -45
- package/skills/eng-ai-engineer/SKILL.md +1 -0
- package/skills/eng-backend/SKILL.md +142 -644
- package/skills/eng-backend/references/1-fundamentos-programacao.md +41 -0
- package/skills/eng-backend/references/10-seguranca.md +61 -0
- package/skills/eng-backend/references/11-performance.md +49 -0
- package/skills/eng-backend/references/12-erros-logging.md +42 -0
- package/skills/eng-backend/references/13-qualidade-codigo.md +51 -0
- package/skills/eng-backend/references/2-design-arquitetura.md +48 -0
- package/skills/eng-backend/references/3-design-patterns.md +50 -0
- package/skills/eng-backend/references/4-algoritmos-estruturas.md +43 -0
- package/skills/eng-backend/references/5-banco-dados.md +53 -0
- package/skills/eng-backend/references/6-api-comunicacao.md +42 -0
- package/skills/eng-backend/references/7-concorrencia-async.md +49 -0
- package/skills/eng-backend/references/8-arquitetura-servidor.md +49 -0
- package/skills/eng-backend/references/9-testes.md +43 -0
- package/skills/{eng-arch-c4 → eng-backend-arch-c4}/SKILL.md +12 -7
- package/skills/{eng-ms-trace → eng-backend-microservices-trace}/SKILL.md +6 -4
- package/skills/{eng-nestjs → eng-backend-nestjs}/SKILL.md +3 -1
- package/skills/{eng-rabbitmq → eng-backend-rabbitmq}/SKILL.md +3 -1
- package/skills/eng-data-bi/SKILL.md +1 -0
- package/skills/eng-data-debug/SKILL.md +2 -1
- package/skills/eng-data-engineer/SKILL.md +1 -0
- package/skills/eng-data-onboard/SKILL.md +1 -0
- package/skills/eng-data-orchestrator/SKILL.md +1 -0
- package/skills/{eng-performance-engineer → eng-devops-performance-engineer}/SKILL.md +2 -1
- package/skills/eng-frontend/SKILL.md +145 -782
- package/skills/eng-frontend/references/1-fundamentos-programacao.md +37 -0
- package/skills/eng-frontend/references/10-testes.md +47 -0
- package/skills/eng-frontend/references/11-seguranca.md +56 -0
- package/skills/eng-frontend/references/12-qualidade-codigo.md +51 -0
- package/skills/eng-frontend/references/2-html-fundamentals.md +51 -0
- package/skills/eng-frontend/references/3-css-responsive.md +61 -0
- package/skills/eng-frontend/references/4-javascript-dom.md +60 -0
- package/skills/eng-frontend/references/5-state-management.md +55 -0
- package/skills/eng-frontend/references/6-uiux-design.md +59 -0
- package/skills/eng-frontend/references/7-acessibilidade.md +46 -0
- package/skills/eng-frontend/references/8-performance.md +58 -0
- package/skills/eng-frontend/references/9-browser-apis.md +54 -0
- package/skills/{eng-design-system → eng-frontend-design-system}/SKILL.md +4 -2
- package/skills/{eng-microfrontend → eng-frontend-microfrontend}/SKILL.md +4 -2
- package/skills/{eng-browser-extension-builder → eng-global-browser-extension-builder}/SKILL.md +2 -1
- package/skills/{eng-docs-write → eng-global-docs-write}/SKILL.md +8 -4
- package/skills/eng-global-jira-comment/SKILL.md +21 -0
- package/skills/{eng-pr → eng-global-pr}/SKILL.md +7 -3
- package/skills/{eng-task-comment → eng-global-task-comment}/SKILL.md +6 -2
- package/skills/eng-qa-a11y-audit/SKILL.md +1 -0
- package/skills/eng-qa-bug-report/SKILL.md +2 -1
- package/skills/eng-qa-bug-report/TASK_MANAGERS.md +1 -1
- package/skills/eng-qa-cypress-e2e/SKILL.md +1 -0
- package/skills/eng-qa-dev-guide/SKILL.md +1 -0
- package/skills/eng-qa-e2e/SKILL.md +1 -0
- package/skills/eng-qa-e2e-spec-writer/SKILL.md +1 -0
- package/skills/eng-qa-exploratory/SKILL.md +1 -0
- package/skills/eng-qa-gate/SKILL.md +3 -2
- package/skills/eng-qa-graphql-contract/SKILL.md +1 -0
- package/skills/eng-qa-quality-report/SKILL.md +3 -2
- package/skills/eng-qa-test-plan/SKILL.md +1 -0
- package/skills/eng-qa-testsprite/SKILL.md +2 -1
- package/skills/eng-qa-unit-test/SKILL.md +1 -0
- package/skills/eng-scraper/SKILL.md +1 -0
- package/skills/eng-scraper-robot-builder/SKILL.md +1 -0
- package/skills/{eng-cybersecurity → eng-security-cybersecurity}/SKILL.md +3 -2
- package/skills/eng-security-patch/SKILL.md +6 -2
- package/skills/{eng-threat-model → eng-security-threat-model}/SKILL.md +6 -2
- package/skills/eng-security-triage/SKILL.md +4 -0
- package/skills/{context-detect → jarvis-context-detect}/SKILL.md +6 -5
- package/skills/{context-detect → jarvis-context-detect}/assets/context-profile-template.md +3 -3
- package/skills/jarvis-create-specialization/SKILL.md +230 -0
- package/skills/jarvis-create-specialization/assets/referencia-template.md +39 -0
- package/skills/jarvis-create-specialization/assets/skill-especializacao-template.md +78 -0
- package/skills/{docs-central → jarvis-docs-central}/README.md +1 -1
- package/skills/{docs-central → jarvis-docs-central}/SKILL.md +3 -40
- package/skills/{docs-index → jarvis-docs-index}/SKILL.md +8 -4
- package/skills/{init-jarvis → jarvis-init}/SKILL.md +42 -19
- package/skills/{init-jarvis → jarvis-init}/assets/mcp-configs.md +3 -3
- package/skills/{init-jarvis → jarvis-init}/assets/onboarding-checklist.md +1 -1
- package/skills/jarvis-init/assets/passo-adicionar-stacks.md +163 -0
- package/skills/{init-jarvis → jarvis-init}/assets/setup-guide.md +1 -1
- package/skills/jarvis-init/assets/sinais-de-stack.md +54 -0
- package/skills/jarvis-list-specializations/SKILL.md +148 -0
- package/skills/{report-issue → jarvis-report-issue}/SKILL.md +3 -2
- package/skills/{prod-roadmap-report → product-roadmap-report}/SKILL.md +2 -1
- package/skills/product-specs/SKILL.md +45 -0
- package/skills/{prod-specs-update → product-specs-update}/SKILL.md +3 -2
- package/taxonomy.md +3 -21
- package/templates/AGENTS.md +7 -6
- package/templates/CDD aplicado a Prompts.md +5 -5
- package/templates/ENV-template.md +12 -9
- package/templates/engineering/AGENTS-template.md +1 -1
- package/templates/engineering/CONTACTS-template.md +1 -1
- package/templates/product/prod-discovery-template.md +98 -0
- package/{skills/prod-specs/templates → templates/product}/prod-epic-template.md +1 -0
- package/{skills/prod-specs/templates → templates/product}/prod-frd-template.md +1 -0
- package/{skills/prod-specs/templates → templates/product}/prod-issue-template.md +1 -0
- package/{skills/prod-specs/templates → templates/product}/prod-prd-template.md +1 -0
- package/workflows/AGENTS.md +3 -1
- package/workflows/README.md +2 -0
- package/workflows/engineering/eng.bug-audit.md +2 -2
- package/workflows/engineering/eng.build-tech-spec.md +38 -49
- package/workflows/engineering/eng.debug.md +10 -10
- package/workflows/engineering/eng.docs.md +2 -2
- package/workflows/engineering/eng.plan.md +5 -5
- package/workflows/engineering/eng.pr.md +8 -8
- package/workflows/engineering/eng.pre-pr.md +16 -20
- package/workflows/engineering/eng.review.md +5 -10
- package/workflows/engineering/eng.rpa.robot.md +3 -3
- package/workflows/engineering/eng.security-audit.md +5 -5
- package/workflows/engineering/eng.security-incident.md +2 -2
- package/workflows/engineering/eng.security-pipeline.md +2 -2
- package/workflows/engineering/eng.start.md +16 -50
- package/workflows/engineering/eng.work.md +9 -12
- package/workflows/engineering/frontend/eng.frontend-component.md +68 -96
- package/workflows/engineering/frontend/eng.frontend-perf-audit.md +90 -220
- package/workflows/engineering/frontend/eng.frontend-review.md +57 -63
- package/workflows/engineering/qa/eng.qa-quality-report.md +0 -5
- package/workflows/product/prod.roadmap.preview.md +2 -2
- package/workflows/product/prod.spec.breakdown.md +3 -8
- package/workflows/product/prod.spec.discovery.md +152 -0
- package/workflows/product/prod.spec.epic.md +3 -0
- package/workflows/product/prod.spec.frd.md +123 -8
- package/workflows/product/prod.spec.issue.md +3 -2
- package/workflows/product/prod.spec.md +2 -0
- package/workflows/product/prod.spec.prd.md +105 -6
- package/workflows/taxonomy.md +1 -1
- package/workflows/warm-up.md +5 -26
- package/agents/engineering/eng.tech-analyst.agent.md +0 -102
- package/skills/churn-audit/SKILL.md +0 -385
- package/skills/eng-jira-comment/SKILL.md +0 -17
- package/skills/eng-tech-analyst/SKILL.md +0 -529
- package/skills/lovable-prompt-generator/SKILL.md +0 -304
- package/skills/prod-specs/SKILL.md +0 -108
- package/skills/prod-specs/references/prod.spec.clarify.md +0 -176
- package/skills/prod-specs/references/prod.spec.epic.md +0 -107
- package/skills/prod-specs/references/prod.spec.frd.md +0 -135
- package/skills/prod-specs/references/prod.spec.issue.md +0 -145
- package/skills/prod-specs/references/prod.spec.prd.md +0 -118
- package/skills/prod-specs/templates/prod-prd-full-template.md +0 -159
- package/workflows/engineering/ta/eng.ta.atendimento.md +0 -93
- /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-code.md +0 -0
- /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-component.md +0 -0
- /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-container.md +0 -0
- /package/skills/{eng-arch-c4 → eng-backend-arch-c4}/assets/example-context.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/README.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.compiled.single.team.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.list.projects.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.memory.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/commands/status.roadmap.preview.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/references/detailed-guide.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/detailed-guide.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/rules/status-report-rules.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-multiple-teams-compiled-status.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-projects-list.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-compiled-status.md +0 -0
- /package/skills/{prod-roadmap-report → product-roadmap-report}/templates/template-single-team-status.md +0 -0
- /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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
376
|
+
## Formato de Saída: Markdown
|
|
377
377
|
|
|
378
378
|
### Estrutura Obrigatória
|
|
379
379
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
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
|
|
394
|
+
### Regras CRÍTICAS de formatação
|
|
396
395
|
|
|
397
|
-
1. **
|
|
398
|
-
2. **
|
|
399
|
-
3. **
|
|
400
|
-
4. **
|
|
401
|
-
5. **
|
|
402
|
-
6. **
|
|
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
|
|
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
|
-
- [ ]
|
|
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 →
|
|
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
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
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
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
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** |
|
|
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
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
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
|
|
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
|
|
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
|
|