jarvis-ai-framework 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +416 -0
- package/LICENSE +21 -0
- package/README.md +190 -0
- package/agents/AGENTS.md +234 -0
- package/agents/README.md +309 -0
- package/agents/engineering/data/eng.data-engineer.agent.md +309 -0
- package/agents/engineering/eng.agent.md +303 -0
- package/agents/engineering/eng.bug-hunter.md +386 -0
- package/agents/engineering/eng.cybersecurity.agent.md +503 -0
- package/agents/engineering/eng.dev-code-reviewer.md +148 -0
- package/agents/engineering/eng.docs-writer.md +152 -0
- package/agents/engineering/eng.frontend.agent.md +117 -0
- package/agents/engineering/eng.rpa.agent.md +215 -0
- package/agents/engineering/eng.tech-analyst.agent.md +102 -0
- package/agents/engineering/eng.ux-designer.agent.md +193 -0
- package/agents/engineering/qa/eng.qa.cypress-specialist.md +109 -0
- package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +85 -0
- package/agents/engineering/qa/eng.qa.quality-strategist.md +111 -0
- package/agents/engineering/qa/eng.qa.test-architect.md +400 -0
- package/agents/engineering/qa/eng.qa.test-planner.md +477 -0
- package/agents/engineering/qa/eng.qa.testing-engineer.md +339 -0
- package/agents/product/prod.pm-checker.md +52 -0
- package/bin/commands/docs-publish.js +184 -0
- package/bin/commands/docs-sync.js +139 -0
- package/bin/commands/info.js +87 -0
- package/bin/commands/init.js +237 -0
- package/bin/commands/install-rtk.js +90 -0
- package/bin/commands/list.js +48 -0
- package/bin/commands/qa-signoff.js +112 -0
- package/bin/commands/whoami.js +43 -0
- package/bin/jarvis.js +159 -0
- package/bin/lib/auth/session.js +56 -0
- package/bin/lib/config/constants.js +123 -0
- package/bin/lib/config/ide-config.js +233 -0
- package/bin/lib/core/scanner.js +124 -0
- package/bin/lib/core/sync-engine.js +551 -0
- package/bin/lib/docs/fetch-file.sh +41 -0
- package/bin/lib/docs/publish-file.sh +284 -0
- package/bin/lib/docs/validate-frontmatter.js +157 -0
- package/bin/lib/env-loader.js +198 -0
- package/bin/lib/tasks/comment.js +131 -0
- package/bin/lib/utils/git-parser.js +145 -0
- package/bin/lib/utils/logger.js +104 -0
- package/bin/lib/utils/npmrc-parser.js +106 -0
- package/bin/lib/utils/paths.js +55 -0
- package/bin/lib/utils/ui.js +59 -0
- package/bin/lib/vcs/api.js +312 -0
- package/bin/lib/vcs/create-issue.js +43 -0
- package/bin/lib/vcs/create-merge.js +43 -0
- package/bin/lib/vcs/fetch-raw.js +30 -0
- package/bin/postinstall.js +41 -0
- package/members.md +25 -0
- package/package.json +55 -0
- package/rules/AGENTS.md +205 -0
- package/rules/engineering/data/data-rules.md +200 -0
- package/rules/engineering/eng-rules.md +243 -0
- package/rules/engineering/eng-security-rules.md +186 -0
- package/rules/engineering/eng.breakdown-subtasks-rules.md +585 -0
- package/rules/engineering/eng.bump-rules.md +27 -0
- package/rules/engineering/eng.docs-scraping-rules.md +64 -0
- package/rules/engineering/eng.downstream-flow-rules.md +297 -0
- package/rules/engineering/eng.integrations-rules.md +73 -0
- package/rules/engineering/eng.plan-rules.md +333 -0
- package/rules/engineering/eng.pr-rules.md +359 -0
- package/rules/engineering/eng.pre-pr-rules.md +103 -0
- package/rules/engineering/eng.start-rules.md +246 -0
- package/rules/engineering/eng.tech-spec-rules.md +968 -0
- package/rules/engineering/eng.work-rules.md +312 -0
- package/rules/engineering/frontend/eng.frontend-rules.md +147 -0
- package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +259 -0
- package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +137 -0
- package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +181 -0
- package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +120 -0
- package/rules/engineering/rpa/eng.rpa-rules.md +230 -0
- package/rules/product/README.md +24 -0
- package/rules/product/prod-rules.md +151 -0
- package/rules/rtk-rules.md +68 -0
- package/skills/AGENTS.md +290 -0
- package/skills/SKILLS-ROADMAP.md +333 -0
- package/skills/churn-audit/SKILL.md +385 -0
- package/skills/context-detect/SKILL.md +399 -0
- package/skills/context-detect/assets/context-profile-template.md +127 -0
- package/skills/docs-central/README.md +310 -0
- package/skills/docs-central/SKILL.md +423 -0
- package/skills/docs-index/SKILL.md +377 -0
- package/skills/eng-ai-engineer/SKILL.md +296 -0
- package/skills/eng-arch-c4/SKILL.md +358 -0
- package/skills/eng-arch-c4/assets/example-code.md +189 -0
- package/skills/eng-arch-c4/assets/example-component.md +105 -0
- package/skills/eng-arch-c4/assets/example-container.md +104 -0
- package/skills/eng-arch-c4/assets/example-context.md +81 -0
- package/skills/eng-backend/SKILL.md +776 -0
- package/skills/eng-browser-extension-builder/SKILL.md +385 -0
- package/skills/eng-cybersecurity/SKILL.md +645 -0
- package/skills/eng-data-bi/SKILL.md +199 -0
- package/skills/eng-data-debug/SKILL.md +307 -0
- package/skills/eng-data-engineer/SKILL.md +256 -0
- package/skills/eng-data-onboard/SKILL.md +310 -0
- package/skills/eng-data-orchestrator/SKILL.md +426 -0
- package/skills/eng-design-system/SKILL.md +619 -0
- package/skills/eng-docs-write/SKILL.md +312 -0
- package/skills/eng-frontend/SKILL.md +913 -0
- package/skills/eng-jira-comment/SKILL.md +17 -0
- package/skills/eng-microfrontend/SKILL.md +602 -0
- package/skills/eng-ms-trace/SKILL.md +469 -0
- package/skills/eng-nestjs/SKILL.md +791 -0
- package/skills/eng-performance-engineer/SKILL.md +312 -0
- package/skills/eng-pr/SKILL.md +339 -0
- package/skills/eng-qa-a11y-audit/SKILL.md +269 -0
- package/skills/eng-qa-bug-report/SKILL.md +1088 -0
- package/skills/eng-qa-bug-report/TASK_MANAGERS.md +138 -0
- package/skills/eng-qa-cypress-e2e/SKILL.md +177 -0
- package/skills/eng-qa-dev-guide/SKILL.md +164 -0
- package/skills/eng-qa-e2e/SKILL.md +400 -0
- package/skills/eng-qa-e2e-spec-writer/SKILL.md +322 -0
- package/skills/eng-qa-exploratory/SKILL.md +188 -0
- package/skills/eng-qa-gate/SKILL.md +370 -0
- package/skills/eng-qa-gate/assets/checklist-validacao.md +291 -0
- package/skills/eng-qa-graphql-contract/SKILL.md +256 -0
- package/skills/eng-qa-quality-report/SKILL.md +412 -0
- package/skills/eng-qa-test-plan/SKILL.md +466 -0
- package/skills/eng-qa-test-plan/assets/test-coverage-template.md +92 -0
- package/skills/eng-qa-test-plan/assets/test-patterns.md +178 -0
- package/skills/eng-qa-testsprite/SKILL.md +325 -0
- package/skills/eng-qa-testsprite/references/testsprite-mcp.md +224 -0
- package/skills/eng-qa-unit-test/SKILL.md +471 -0
- package/skills/eng-rabbitmq/SKILL.md +661 -0
- package/skills/eng-scraper/SKILL.md +683 -0
- package/skills/eng-scraper-robot-builder/SKILL.md +370 -0
- package/skills/eng-security-patch/SKILL.md +378 -0
- package/skills/eng-security-triage/SKILL.md +266 -0
- package/skills/eng-task-comment/SKILL.md +60 -0
- package/skills/eng-tech-analyst/SKILL.md +529 -0
- package/skills/eng-threat-model/SKILL.md +161 -0
- package/skills/init-jarvis/SKILL.md +1304 -0
- package/skills/init-jarvis/assets/mcp-configs.md +389 -0
- package/skills/init-jarvis/assets/onboarding-checklist.md +104 -0
- package/skills/init-jarvis/assets/setup-guide.md +360 -0
- package/skills/lovable-prompt-generator/SKILL.md +304 -0
- package/skills/prod-roadmap-report/README.md +303 -0
- package/skills/prod-roadmap-report/SKILL.md +198 -0
- package/skills/prod-roadmap-report/commands/status.compiled.single.team.md +23 -0
- package/skills/prod-roadmap-report/commands/status.list.projects.md +17 -0
- package/skills/prod-roadmap-report/commands/status.memory.md +192 -0
- package/skills/prod-roadmap-report/commands/status.roadmap.preview.md +94 -0
- package/skills/prod-roadmap-report/references/detailed-guide.md +236 -0
- package/skills/prod-roadmap-report/rules/detailed-guide.md +237 -0
- package/skills/prod-roadmap-report/rules/status-report-rules.md +44 -0
- package/skills/prod-roadmap-report/templates/template-multiple-teams-compiled-status.md +53 -0
- package/skills/prod-roadmap-report/templates/template-projects-list.md +23 -0
- package/skills/prod-roadmap-report/templates/template-single-team-compiled-status.md +60 -0
- package/skills/prod-roadmap-report/templates/template-single-team-status.md +49 -0
- package/skills/prod-specs/SKILL.md +108 -0
- package/skills/prod-specs/references/prod.spec.clarify.md +176 -0
- package/skills/prod-specs/references/prod.spec.epic.md +107 -0
- package/skills/prod-specs/references/prod.spec.frd.md +135 -0
- package/skills/prod-specs/references/prod.spec.issue.md +145 -0
- package/skills/prod-specs/references/prod.spec.prd.md +118 -0
- package/skills/prod-specs/rules/prod-spec-rules.md +186 -0
- package/skills/prod-specs/templates/prod-breakdown-template.md +136 -0
- package/skills/prod-specs/templates/prod-epic-template.md +76 -0
- package/skills/prod-specs/templates/prod-frd-template.md +172 -0
- package/skills/prod-specs/templates/prod-issue-template.md +68 -0
- package/skills/prod-specs/templates/prod-prd-full-template.md +159 -0
- package/skills/prod-specs/templates/prod-prd-template.md +173 -0
- package/skills/prod-specs-update/SKILL.md +272 -0
- package/skills/report-issue/SKILL.md +156 -0
- package/taxonomy.md +270 -0
- package/templates/AGENTS.md +189 -0
- package/templates/CDD aplicado a Prompts.md +182 -0
- package/templates/ENV-template.md +187 -0
- package/templates/engineering/AGENTS-template.md +71 -0
- package/templates/engineering/ARD-template.md +193 -0
- package/templates/engineering/CONTACTS-template.md +135 -0
- package/templates/engineering/PR-template.md +40 -0
- package/templates/engineering/RFC-Playbook.md +325 -0
- package/templates/engineering/RFC-template.md +199 -0
- package/templates/engineering/architecture-template.md +277 -0
- package/templates/engineering/breakdown-subtasks-template.md +582 -0
- package/templates/engineering/c4-model-template.md +516 -0
- package/templates/engineering/data-contract-template.md +135 -0
- package/templates/engineering/data-pipeline-template.md +163 -0
- package/templates/engineering/plan-template.md +255 -0
- package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +311 -0
- package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +249 -0
- package/templates/engineering/qa/qa.cypress-test-template.md +172 -0
- package/templates/engineering/qa/qa.exploratory-session-template.md +148 -0
- package/templates/engineering/qa/qa.quality-report-template.md +130 -0
- package/templates/engineering/qa/qa.release-signoff-template.md +54 -0
- package/templates/engineering/qa/qa.sprint-plan-template.md +49 -0
- package/templates/engineering/swagger-template.md +145 -0
- package/templates/engineering/tech-spec-template.md +497 -0
- package/templates/engineering/work-progress-template.md +155 -0
- package/workflows/AGENTS.md +240 -0
- package/workflows/README.md +160 -0
- package/workflows/all-tools.md +11 -0
- package/workflows/engineering/data/data.contract.md +202 -0
- package/workflows/engineering/data/data.new-pipeline.md +234 -0
- package/workflows/engineering/eng.breakdown-subtasks.md +420 -0
- package/workflows/engineering/eng.bug-audit.md +591 -0
- package/workflows/engineering/eng.build-tech-spec.md +1116 -0
- package/workflows/engineering/eng.create-ard-from-code.md +259 -0
- package/workflows/engineering/eng.create-ard.md +382 -0
- package/workflows/engineering/eng.create-rfc.md +245 -0
- package/workflows/engineering/eng.debug.md +479 -0
- package/workflows/engineering/eng.docs.md +40 -0
- package/workflows/engineering/eng.light-arch.md +84 -0
- package/workflows/engineering/eng.plan.md +213 -0
- package/workflows/engineering/eng.pr.md +466 -0
- package/workflows/engineering/eng.pre-pr.md +167 -0
- package/workflows/engineering/eng.review.md +185 -0
- package/workflows/engineering/eng.rpa.robot.md +342 -0
- package/workflows/engineering/eng.security-audit.md +312 -0
- package/workflows/engineering/eng.security-incident.md +275 -0
- package/workflows/engineering/eng.security-pipeline.md +210 -0
- package/workflows/engineering/eng.security-review.md +235 -0
- package/workflows/engineering/eng.start.md +494 -0
- package/workflows/engineering/eng.work.md +558 -0
- package/workflows/engineering/frontend/eng.frontend-component.md +190 -0
- package/workflows/engineering/frontend/eng.frontend-perf-audit.md +375 -0
- package/workflows/engineering/frontend/eng.frontend-review.md +185 -0
- package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +51 -0
- package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +51 -0
- package/workflows/engineering/qa/eng.qa-exploratory-session.md +60 -0
- package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +202 -0
- package/workflows/engineering/qa/eng.qa-quality-report.md +83 -0
- package/workflows/engineering/qa/eng.qa-refinement-entry.md +83 -0
- package/workflows/engineering/qa/eng.qa-release-signoff.md +170 -0
- package/workflows/engineering/qa/eng.qa-sprint-planning.md +100 -0
- package/workflows/engineering/ta/eng.ta.atendimento.md +93 -0
- package/workflows/product/prod.roadmap.preview.md +110 -0
- package/workflows/product/prod.spec.breakdown.md +163 -0
- package/workflows/product/prod.spec.clarify.md +178 -0
- package/workflows/product/prod.spec.epic.md +154 -0
- package/workflows/product/prod.spec.frd.md +96 -0
- package/workflows/product/prod.spec.issue.md +145 -0
- package/workflows/product/prod.spec.md +60 -0
- package/workflows/product/prod.spec.prd.md +100 -0
- package/workflows/taxonomy.md +92 -0
- package/workflows/warm-up.md +574 -0
package/rules/AGENTS.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# AGENTS.md - Pasta rules/
|
|
2
|
+
|
|
3
|
+
Instrucoes especificas para agentes de IA que manipulam a pasta de regras.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Proposito desta Pasta
|
|
8
|
+
|
|
9
|
+
A pasta `rules/` contem **regras e diretrizes** que governam o comportamento do framework Jarvis. Sao restricoes e padroes que agentes e workflows devem seguir.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Estrutura
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
rules/
|
|
17
|
+
├── engineering/ # Regras de engenharia
|
|
18
|
+
│ ├── eng-rules.md # Regras gerais de engenharia
|
|
19
|
+
│ ├── eng.start-rules.md # Regras para /eng.start
|
|
20
|
+
│ ├── eng.plan-rules.md # Regras para /eng.plan
|
|
21
|
+
│ ├── eng.work-rules.md # Regras para /eng.work
|
|
22
|
+
│ ├── eng.pr-rules.md # Regras para /eng.pr
|
|
23
|
+
│ ├── eng.bump-rules.md # Regras para versionamento
|
|
24
|
+
│ ├── eng.tech-spec-rules.md # Regras para tech specs
|
|
25
|
+
│ └── qa/ # Regras de QA
|
|
26
|
+
└── product/ # Regras de produto
|
|
27
|
+
└── prod-rules.md # Regras de especificacao
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Hierarquia de Regras
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
1. .windsurf/rules / .cursor/rules (mais alta)
|
|
36
|
+
2. rules/engineering/eng-rules.md
|
|
37
|
+
3. rules/engineering/eng.{comando}-rules.md
|
|
38
|
+
4. rules/product/prod-rules.md (mais baixa)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Regra**: Regras mais especificas tem precedencia sobre regras gerais.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Convencoes de Nomenclatura
|
|
46
|
+
|
|
47
|
+
| Tipo | Padrao | Exemplos |
|
|
48
|
+
|------|--------|----------|
|
|
49
|
+
| Regra geral | `{dominio}-rules.md` | `eng-rules.md` |
|
|
50
|
+
| Regra de comando | `{dominio}.{comando}-rules.md` | `eng.work-rules.md` |
|
|
51
|
+
| Regra de QA | `qa/{nome}-rules.md` | `qa/test-rules.md` |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Profile-Aware Rules Loading
|
|
56
|
+
|
|
57
|
+
Cada arquivo de rule declara para quais perfis se aplica via bloco `applies_to`, inserido logo após o frontmatter YAML (ou no início do arquivo se não houver frontmatter):
|
|
58
|
+
|
|
59
|
+
```markdown
|
|
60
|
+
> **Applies to:** HUB: {valor ou all} | POSITION: {valor ou all} | AREA: {valor ou all} | SQUAD: {valor ou all}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Eixos de filtragem:**
|
|
64
|
+
|
|
65
|
+
| Eixo | Exemplos de valor | `all` significa |
|
|
66
|
+
|------|-------------------|-----------------|
|
|
67
|
+
| HUB | FRONTEND, BACKEND, QA, DATA, AI, FULLCYCLE | qualquer hub |
|
|
68
|
+
| POSITION | TECH LEAD, PM, QA-ENGINEER, SENIOR, GENERALIST | qualquer cargo |
|
|
69
|
+
| AREA | ENGINEERING, PRODUCT | qualquer área |
|
|
70
|
+
| SQUAD | CORE, SUPPORT | qualquer squad |
|
|
71
|
+
|
|
72
|
+
**Regras:**
|
|
73
|
+
- Uma rule é aplicada se **todos** os eixos forem satisfeitos (AND, não OR)
|
|
74
|
+
- Arquivos sem bloco `applies_to` são considerados **universais** — copiados para qualquer perfil
|
|
75
|
+
- `rules/AGENTS.md` nunca é filtrado — sempre copiado
|
|
76
|
+
|
|
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.
|
|
78
|
+
|
|
79
|
+
**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
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Estrutura de um Arquivo de Regras
|
|
84
|
+
|
|
85
|
+
Todo arquivo de regras deve conter:
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
# {Nome} Rules
|
|
89
|
+
|
|
90
|
+
## Objetivo
|
|
91
|
+
O que estas regras governam.
|
|
92
|
+
|
|
93
|
+
## Escopo
|
|
94
|
+
Quando estas regras se aplicam.
|
|
95
|
+
|
|
96
|
+
## Regras
|
|
97
|
+
|
|
98
|
+
### Obrigatorio
|
|
99
|
+
- Regra 1
|
|
100
|
+
- Regra 2
|
|
101
|
+
|
|
102
|
+
### Proibido
|
|
103
|
+
- Nunca fazer X
|
|
104
|
+
- Nunca fazer Y
|
|
105
|
+
|
|
106
|
+
### Recomendado
|
|
107
|
+
- Preferir A sobre B
|
|
108
|
+
- Considerar C quando D
|
|
109
|
+
|
|
110
|
+
## Excecoes
|
|
111
|
+
Quando as regras podem ser flexibilizadas.
|
|
112
|
+
|
|
113
|
+
## Referencias
|
|
114
|
+
Links para documentacao relacionada.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Tipos de Regras
|
|
120
|
+
|
|
121
|
+
### 1. Regras Gerais (`eng-rules.md`)
|
|
122
|
+
- Aplicam-se a todo o dominio de engenharia
|
|
123
|
+
- Definem padroes transversais
|
|
124
|
+
- Sao a base para regras especificas
|
|
125
|
+
|
|
126
|
+
### 2. Regras de Comando (`eng.{comando}-rules.md`)
|
|
127
|
+
- Especificas para um comando slash
|
|
128
|
+
- Detalham restricoes do comando
|
|
129
|
+
- Podem sobrescrever regras gerais
|
|
130
|
+
|
|
131
|
+
### 3. Regras de QA (`qa/`)
|
|
132
|
+
- Focadas em qualidade e testes
|
|
133
|
+
- Definem criterios de aceitacao
|
|
134
|
+
- Padroes de cobertura
|
|
135
|
+
|
|
136
|
+
### 4. Regras de Produto (`product/`)
|
|
137
|
+
- Governam especificacoes e requisitos
|
|
138
|
+
- Padroes de documentacao de produto
|
|
139
|
+
- Validacao de PRD/FRD
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Regras Criticas do Framework
|
|
144
|
+
|
|
145
|
+
### Fases de Desenvolvimento
|
|
146
|
+
|
|
147
|
+
| Fase | Comandos | Restricao |
|
|
148
|
+
|------|----------|-----------|
|
|
149
|
+
| Planejamento | `eng.start`, `eng.plan` | Somente analise, SEM codigo |
|
|
150
|
+
| Implementacao | `eng.work` | Codigo e testes, SEM commits |
|
|
151
|
+
| Entrega | `eng.pr` | Branch, commit e PR |
|
|
152
|
+
|
|
153
|
+
### Seguranca
|
|
154
|
+
|
|
155
|
+
- Nunca inventar credenciais, tokens ou segredos
|
|
156
|
+
- Nunca expor dados sensiveis em logs ou outputs
|
|
157
|
+
- Sempre validar dados externos
|
|
158
|
+
- Priorizar seguranca sobre velocidade
|
|
159
|
+
|
|
160
|
+
### ENV.md
|
|
161
|
+
|
|
162
|
+
- Validar ENV.md antes de qualquer comando (exceto `/init-jarvis`)
|
|
163
|
+
- Respeitar `MAX_AI_EXECUTION_PERCENTAGE`
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Nunca
|
|
168
|
+
|
|
169
|
+
- Criar regra que contradiz `.windsurfrules`
|
|
170
|
+
- Criar regra sem definir escopo claro
|
|
171
|
+
- Misturar regras de dominios diferentes no mesmo arquivo
|
|
172
|
+
- Criar regra muito generica ou muito especifica
|
|
173
|
+
- Ignorar regras existentes ao criar novas
|
|
174
|
+
|
|
175
|
+
## Sempre
|
|
176
|
+
|
|
177
|
+
- Seguir hierarquia de regras
|
|
178
|
+
- Documentar excecoes explicitamente
|
|
179
|
+
- Manter consistencia com regras existentes
|
|
180
|
+
- Referenciar regras relacionadas
|
|
181
|
+
- Atualizar ao modificar comportamento do framework
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Relacao com Outros Componentes
|
|
186
|
+
|
|
187
|
+
| Componente | Relacao |
|
|
188
|
+
|------------|---------|
|
|
189
|
+
| Agents | Agentes devem seguir as regras |
|
|
190
|
+
| Skills | Skills implementam as regras |
|
|
191
|
+
| Workflows | Workflows executam conforme regras |
|
|
192
|
+
| Templates | Templates respeitam as regras |
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Referencias
|
|
197
|
+
|
|
198
|
+
- `../agents/` - Agentes que seguem estas regras
|
|
199
|
+
- `../workflows/` - Workflows que executam conforme regras
|
|
200
|
+
- `../skills/` - Skills que implementam regras
|
|
201
|
+
- `.windsurfrules` - Regras globais do framework
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
**Ultima atualizacao**: 2026-01-26
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data-rules
|
|
3
|
+
description: >
|
|
4
|
+
Regras de engenharia de dados: nomenclatura de camadas (Medallion),
|
|
5
|
+
qualidade obrigatória com Great Expectations, idempotência, logs e política de dados sensíveis.
|
|
6
|
+
license: AGPL-3.0
|
|
7
|
+
metadata:
|
|
8
|
+
author: jarvis-team
|
|
9
|
+
version: "1.0"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
> **Applies to:** HUB: DATA | POSITION: all | AREA: ENGINEERING | SQUAD: all
|
|
13
|
+
|
|
14
|
+
# Data Rules — Engenharia de Dados
|
|
15
|
+
|
|
16
|
+
## 1. Arquitetura de Camadas (Medallion)
|
|
17
|
+
|
|
18
|
+
| Camada | Nome | Responsabilidade |
|
|
19
|
+
|--------|------|-----------------|
|
|
20
|
+
| Ingestão bruta | `bronze` | Dados exatamente como vieram da fonte — sem transformação. Imutável. |
|
|
21
|
+
| Limpeza e tipagem | `silver` | Dados limpos, tipados e normalizados. Sem regras de negócio. |
|
|
22
|
+
| Analítico / BI | `gold` | Modelos prontos para consumo (fatos, dimensões, agregações). |
|
|
23
|
+
|
|
24
|
+
### Regras de camada
|
|
25
|
+
|
|
26
|
+
- **Bronze é imutável** — nunca modificar dados já ingeridos. Reprocessamento cria nova partição.
|
|
27
|
+
- **Silver não tem regra de negócio** — só limpeza, tipagem e deduplicação.
|
|
28
|
+
- **Gold é o que squads e dashboards consomem** — sempre documentado com contrato de dados.
|
|
29
|
+
- Campos de auditoria obrigatórios em todas as camadas: `ingested_at`, `source_system`, `data_referencia`.
|
|
30
|
+
|
|
31
|
+
### Nomenclatura de tabelas e campos
|
|
32
|
+
|
|
33
|
+
- Tabelas: `<camada>.<dominio>_<entidade>` → ex: `silver.vendas_pedidos`, `gold.fato_entregas`
|
|
34
|
+
- Campos: `snake_case` em português ou inglês — manter consistência dentro do domínio
|
|
35
|
+
- Chaves primárias: `id_<entidade>` → ex: `id_pedido`, `id_cliente`
|
|
36
|
+
- Datas: sufixo `_at` para timestamps (`criado_at`, `atualizado_at`), `_data` para datas (`referencia_data`)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 2. Qualidade de Dados (Great Expectations)
|
|
41
|
+
|
|
42
|
+
Todo pipeline deve ter uma **Expectation Suite** no Great Expectations antes de ir para produção.
|
|
43
|
+
|
|
44
|
+
### Checks obrigatórios por pipeline
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
# Mínimo obrigatório em toda suite
|
|
48
|
+
expect_table_row_count_to_be_between(min_value=1)
|
|
49
|
+
expect_column_values_to_not_be_null(column="<chave_primaria>")
|
|
50
|
+
expect_column_values_to_not_be_null(column="data_referencia")
|
|
51
|
+
expect_column_values_to_be_unique(column="<chave_primaria>")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Checks recomendados (obrigatórios para gold)
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
# Integridade de tipos
|
|
58
|
+
expect_column_values_to_be_of_type(column="<campo>", type_="<tipo>")
|
|
59
|
+
|
|
60
|
+
# Domínios fechados
|
|
61
|
+
expect_column_values_to_be_in_set(column="<status>", value_set=[...])
|
|
62
|
+
|
|
63
|
+
# Alerta de volume (queda > 50% vs. execução anterior)
|
|
64
|
+
expect_table_row_count_to_be_between(min_value=last_run_count * 0.5)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Falha de qualidade
|
|
68
|
+
|
|
69
|
+
- **Bronze → Silver**: falha bloqueia a promoção. Dados permanecem em bronze.
|
|
70
|
+
- **Silver → Gold**: falha bloqueia publicação. Alerta no Slack canal do time de Data.
|
|
71
|
+
- Nunca silenciar falhas — registrar no log com contexto da execução.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 3. Idempotência
|
|
76
|
+
|
|
77
|
+
Todo pipeline deve ser idempotente: **reprocessar o mesmo período não duplica dados**.
|
|
78
|
+
|
|
79
|
+
### Padrão obrigatório para carga
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
# DELETE + INSERT (partição/período)
|
|
83
|
+
def load_idempotent(df, table: str, partition_col: str, partition_value: str):
|
|
84
|
+
"""Apaga a partição antes de inserir — garante idempotência."""
|
|
85
|
+
delete_partition(table, partition_col, partition_value)
|
|
86
|
+
insert(df, table)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Para tabelas Athena (S3)
|
|
90
|
+
|
|
91
|
+
- Usar partições por `data_referencia` (formato `YYYY-MM-DD`)
|
|
92
|
+
- Reprocessamento sobrescreve o prefixo S3 da partição
|
|
93
|
+
- Nunca usar `APPEND` sem verificar duplicatas primeiro
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 4. Política de Logs
|
|
98
|
+
|
|
99
|
+
### O que logar (obrigatório)
|
|
100
|
+
|
|
101
|
+
Cada execução deve registrar:
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
logger.info({
|
|
105
|
+
"pipeline": "<nome>",
|
|
106
|
+
"data_referencia": "<YYYY-MM-DD>",
|
|
107
|
+
"status": "started|completed|failed",
|
|
108
|
+
"rows_extracted": <int>,
|
|
109
|
+
"rows_loaded": <int>,
|
|
110
|
+
"duration_seconds": <float>,
|
|
111
|
+
"execution_id": "<uuid>"
|
|
112
|
+
})
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Onde logar
|
|
116
|
+
|
|
117
|
+
- **AWS Glue**: logs automáticos no CloudWatch (`/aws-glue/jobs/output`)
|
|
118
|
+
- **Airflow**: logs nas tasks do DAG + CloudWatch quando em produção
|
|
119
|
+
- **Erros críticos**: alertar no canal Slack do time de Data (`#data-alerts` ou equivalente)
|
|
120
|
+
|
|
121
|
+
### Retenção
|
|
122
|
+
|
|
123
|
+
- Logs de execução: **90 dias** no CloudWatch
|
|
124
|
+
- Logs de erro: **1 ano** (auditoria)
|
|
125
|
+
- Metadados de pipeline (rows processados, duração): persistir em tabela `gold.pipeline_audit`
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 5. Política de Dados Sensíveis
|
|
130
|
+
|
|
131
|
+
> **TODO:** Política ainda não definida pelo time. Pendente decisão sobre mascaramento e controle de acesso IAM.
|
|
132
|
+
|
|
133
|
+
### Campos considerados sensíveis (provisório)
|
|
134
|
+
|
|
135
|
+
- CPF, RG e documentos de identificação
|
|
136
|
+
- Dados bancários
|
|
137
|
+
- Localização em tempo real
|
|
138
|
+
- Dados pessoais de contato (telefone, endereço)
|
|
139
|
+
|
|
140
|
+
### Regras provisórias até definição formal
|
|
141
|
+
|
|
142
|
+
- ❌ Nunca expor CPF em tabelas `gold` sem mascaramento
|
|
143
|
+
- ❌ Nunca incluir dados sensíveis em dashboards Metabase sem aprovação
|
|
144
|
+
- ✅ Dados sensíveis em `bronze` mantidos com acesso restrito por IAM role
|
|
145
|
+
- ✅ Qualquer exposição de dados sensíveis para squads deve ter contrato de dados aprovado
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 6. Repositório de Scripts
|
|
150
|
+
|
|
151
|
+
- Scripts de pipeline vivem no repositório **`data-pipelines`** (repo dedicado)
|
|
152
|
+
- Estrutura sugerida:
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
data-pipelines/
|
|
156
|
+
jobs/
|
|
157
|
+
bronze/ # scripts de ingestão
|
|
158
|
+
silver/ # scripts de transformação
|
|
159
|
+
gold/ # scripts de modelagem analítica
|
|
160
|
+
dags/ # DAGs do Airflow
|
|
161
|
+
expectations/ # Suites do Great Expectations
|
|
162
|
+
docs/ # documentação de pipelines (data-pipeline-template.md)
|
|
163
|
+
contracts/ # contratos de dados (data-contract-template.md)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 7. Processo de Solicitação de Dados (Inter-squads)
|
|
169
|
+
|
|
170
|
+
Squads que precisam de dados do time de Data devem:
|
|
171
|
+
|
|
172
|
+
1. **Abrir thread** no canal Slack `#data-requests` (ou equivalente) com:
|
|
173
|
+
- Caso de uso: o que precisa e por quê
|
|
174
|
+
- Frequência de uso (ad-hoc, recorrente)
|
|
175
|
+
- SLA esperado
|
|
176
|
+
2. **Time de Data** avalia e abre card no board **DE** com as informações formalizadas
|
|
177
|
+
3. Se recorrente → criar contrato de dados (`data-contract-template.md`)
|
|
178
|
+
4. Se ad-hoc → query avulsa entregue no Slack
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Regras Críticas
|
|
183
|
+
|
|
184
|
+
### Nunca faça
|
|
185
|
+
|
|
186
|
+
- ❌ Modificar tabela bronze — bronze é imutável
|
|
187
|
+
- ❌ Pipeline sem Expectation Suite em produção
|
|
188
|
+
- ❌ Hardcode de credenciais — sempre AWS Secrets Manager ou variáveis de ambiente
|
|
189
|
+
- ❌ `SELECT *` em produção — sempre listar campos explicitamente
|
|
190
|
+
- ❌ Expor dados sensíveis (CPF, dados pessoais) sem mascaramento e aprovação
|
|
191
|
+
- ❌ Pipeline sem log de execução (início, fim, volume, status)
|
|
192
|
+
|
|
193
|
+
### Sempre faça
|
|
194
|
+
|
|
195
|
+
- ✅ Idempotência: reprocessar não duplica
|
|
196
|
+
- ✅ Logs estruturados com `data_referencia`, volume e status
|
|
197
|
+
- ✅ Expectation Suite antes de publicar em gold
|
|
198
|
+
- ✅ Contrato de dados antes de expor gold para outra squad
|
|
199
|
+
- ✅ Versionar queries SQL significativas em arquivos `.sql` no repo `data-pipelines`
|
|
200
|
+
- ✅ Particionamento por `data_referencia` em todas as tabelas Athena
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
---
|
|
2
|
+
trigger: always_on
|
|
3
|
+
env_file: "@/ENV.md"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Applies to:** HUB: all | POSITION: all | AREA: all | SQUAD: all
|
|
7
|
+
|
|
8
|
+
- **🚨 PRÉ-REQUISITO: VALIDAÇÃO DO ENV.md**
|
|
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.
|
|
11
|
+
- **Validação obrigatória**: O arquivo deve conter as seguintes variáveis preenchidas (não vazias):
|
|
12
|
+
- `WORKSPACE` (se vazio: nome da pasta que contém `$IDE/`)
|
|
13
|
+
- `IDE`
|
|
14
|
+
- `SQUAD`
|
|
15
|
+
- `HUB`
|
|
16
|
+
- `AREA`
|
|
17
|
+
- `MAX_AI_EXECUTION_PERCENTAGE` (entre 60 e 100)
|
|
18
|
+
- `USER` (deve terminar com `@{DOMAIN}` definido em taxonomy.md)
|
|
19
|
+
- `POSITION`
|
|
20
|
+
- **Se o ENV.md não existir ou estiver incompleto**, o agente deve:
|
|
21
|
+
1. Interromper a execução do comando solicitado
|
|
22
|
+
2. Informar ao usuário que o framework não foi inicializado
|
|
23
|
+
3. Orientar o usuário a executar `/init-jarvis` primeiro
|
|
24
|
+
```
|
|
25
|
+
⚠️ O framework não foi inicializado.
|
|
26
|
+
|
|
27
|
+
O arquivo ENV.md não existe ou está incompleto.
|
|
28
|
+
Por favor, execute `/init-jarvis` para configurar o ambiente antes de continuar.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- **🔧 VARIÁVEL `$IDE` - DETECÇÃO AUTOMÁTICA DA PASTA DA IDE**
|
|
32
|
+
- A variável `$IDE` representa a pasta da IDE que o usuário está utilizando.
|
|
33
|
+
- O agente **DEVE detectar automaticamente** qual pasta existe no projeto:
|
|
34
|
+
- `.windsurf/` → Windsurf IDE
|
|
35
|
+
- `.claude/` → Claude Code (Anthropic)
|
|
36
|
+
- `.cursor/` → Cursor IDE
|
|
37
|
+
- `.codex/` → Codex CLI (OpenAI)
|
|
38
|
+
- `.opencode/` → OpenCode
|
|
39
|
+
- `.gemini/` → Gemini CLI / Antigravity (Google)
|
|
40
|
+
- **Como usar**: Em qualquer referência a caminhos, use `$IDE/` como prefixo.
|
|
41
|
+
- **Exemplos de resolução**:
|
|
42
|
+
- `$IDE/ENV.md` → `.windsurf/ENV.md` (se usando Windsurf)
|
|
43
|
+
- `$IDE/ENV.md` → `.claude/ENV.md` (se usando Claude Code)
|
|
44
|
+
- `$SESSIONS_DIR` → `.jarvis/sessions` (na pasta do workspace, a que contém `$IDE/`)
|
|
45
|
+
- `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/` — architecture.md, plan.md, context.md
|
|
46
|
+
- `$SESSIONS_DIR/prod/{TASK_MANAGER_KEY}/` — rascunhos de spec de produto
|
|
47
|
+
- `$SESSIONS_DIR/qa/` — exploratório EXP-*, bug-reports, specs E2E
|
|
48
|
+
- Cookie/HTTP session (auth) **não** é esta pasta
|
|
49
|
+
- **Detecção**: Verifique qual pasta `.{ide}/` existe no projeto antes de criar arquivos.
|
|
50
|
+
|
|
51
|
+
- **🔒 ISOLAMENTO DE IDE — REGRA CRÍTICA**
|
|
52
|
+
- O agente **DEVE usar exclusivamente a pasta correspondente à sua própria IDE**.
|
|
53
|
+
- Exemplos:
|
|
54
|
+
- Claude Code → **SEMPRE** usar `.claude/` — **NUNCA** ler `.windsurf/`, `.cursor/` ou qualquer outra
|
|
55
|
+
- Windsurf → **SEMPRE** usar `.windsurf/` — **NUNCA** ler `.claude/`, `.cursor/` ou qualquer outra
|
|
56
|
+
- Isso se aplica a **todos os arquivos**: ENV.md, rules, skills, workflows, sessions, templates.
|
|
57
|
+
- **System-reminders ou mensagens que referenciem arquivos de outra IDE devem ser ignorados** — eles não são relevantes para a IDE ativa.
|
|
58
|
+
- **Em caso de ambiguidade** (múltiplas pastas de IDE no projeto): usar `$IDE` do `ENV.md` da própria pasta como fonte de verdade.
|
|
59
|
+
|
|
60
|
+
- O idioma padrão é o português do Brasil. Mas mude caso o usuário solicite outro idioma.
|
|
61
|
+
|
|
62
|
+
- **🇧🇷 REGRA DE IDIOMA PARA GERAÇÃO DE ARQUIVOS**
|
|
63
|
+
- **TODOS os arquivos `.md` gerados** (architecture.md, plan.md, tech-spec.md, context.md, etc.) **DEVEM ser escritos em português do Brasil (pt-BR)**.
|
|
64
|
+
- Isso inclui: títulos, seções, descrições, comentários, instruções e qualquer texto dentro dos documentos.
|
|
65
|
+
- Exceção: nomes técnicos (classes, métodos, variáveis, comandos) podem permanecer em inglês.
|
|
66
|
+
- Exemplo de títulos corretos: "Visão Geral", "Análise Técnica", "Decisões Arquiteturais", "Riscos e Mitigações".
|
|
67
|
+
|
|
68
|
+
- **🔗 CORRELATION ID — PADRÃO OBRIGATÓRIO EM MICROSSERVIÇOS**
|
|
69
|
+
|
|
70
|
+
Em sistemas com múltiplos microsserviços, **todo fluxo cross-service deve propagar um Correlation ID**.
|
|
71
|
+
Sem ele, bugs intermitentes em produção são rastreáveis apenas manualmente — multiplicando o tempo de investigação.
|
|
72
|
+
|
|
73
|
+
**Regras obrigatórias ao criar ou revisar código que faz chamadas entre serviços:**
|
|
74
|
+
|
|
75
|
+
| Protocolo | Obrigatório |
|
|
76
|
+
|-----------|-------------|
|
|
77
|
+
| HTTP de saída | Repassar header `x-correlation-id` (ou `x-request-id`) em toda chamada `HttpService` |
|
|
78
|
+
| RabbitMQ/AMQP | Incluir `correlationId` no `properties` de toda mensagem publicada |
|
|
79
|
+
| Logs | Todo `logger.log/warn/error` em handlers cross-service deve incluir o correlation ID |
|
|
80
|
+
|
|
81
|
+
**Como detectar ausência** (verificar em code review ou `eng.debug`):
|
|
82
|
+
```bash
|
|
83
|
+
# Chamadas HTTP sem propagação de correlation ID
|
|
84
|
+
grep -rn "HttpService\|axios\." src/ --include="*.ts" | grep -v "x-correlation-id\|correlationId"
|
|
85
|
+
|
|
86
|
+
# Publicações AMQP sem correlationId
|
|
87
|
+
grep -rn "\.emit(\|\.publish(\|\.send(" src/ --include="*.ts" | grep -v "correlationId"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
> Se ao revisar código em `eng.debug` ou `eng.work` você identificar ausência de Correlation ID
|
|
91
|
+
> em chamadas cross-service, **sinalizar como `DÉBITO-TÉCNICO P2`** e recomendar correção.
|
|
92
|
+
|
|
93
|
+
- Nunca invente dados técnicos, arquiteturas, stacks, credenciais, endpoints, ambientes ou integrações. Se a informação não estiver claramente disponível em arquivos do repositório, no ENV ou na mensagem do usuário, pergunte antes de assumir qualquer coisa.
|
|
94
|
+
|
|
95
|
+
- **Escopo operacional de comandos e workflows (ENG/ATHENA)**
|
|
96
|
+
- Ao atuar como Engenharia (ATHENA), use **apenas** comandos, workflows, regras e templates do domínio **ENG/engineering**.
|
|
97
|
+
- Priorize e restrinja-se a:
|
|
98
|
+
- `$IDE/commands/engineering/**`
|
|
99
|
+
- `$IDE/workflows/engineering/**`
|
|
100
|
+
- `$IDE/agents/engineering/**`
|
|
101
|
+
- `$IDE/rules/engineering/**`
|
|
102
|
+
- `$IDE/templates/engineering/**`
|
|
103
|
+
- Não acione nem oriente o usuário a usar comandos/workflows de outros domínios (ex.: [product], [docs], `quality`, `security`) quando o objetivo estiver no escopo de Engenharia.
|
|
104
|
+
- Se o usuário pedir algo fora de Engenharia, pare e proponha explicitamente a transição de domínio (ex.: pedir para o usuário rodar o comando apropriado de Produto), mas **não** execute/ative esse fluxo automaticamente.
|
|
105
|
+
|
|
106
|
+
- Nunca sugira ações destrutivas ou de alto risco sem aviso explícito, como:
|
|
107
|
+
- apagar bases de dados, tabelas ou buckets
|
|
108
|
+
- alterar dados de produção
|
|
109
|
+
- derrubar serviços em produção
|
|
110
|
+
- mudanças irreversíveis em infraestrutura
|
|
111
|
+
- executar comandos de deletar ou remover recursos
|
|
112
|
+
- expor credenciais ou dados sensíveis/confidenciais
|
|
113
|
+
Sempre peça confirmação explícita do usuário e descreva riscos e alternativas mais seguras.
|
|
114
|
+
|
|
115
|
+
- Sempre priorize o stack e ferramentas definidas no [ENV.md](~/{PROJECT-NAME}/ENV.md). Se precisar sugerir bibliotecas, frameworks ou serviços externos, dê preferência ao que já está no ambiente. Se não souber, pergunte.
|
|
116
|
+
|
|
117
|
+
- Nunca exponha, copie ou invente chaves de API, tokens, segredos e credenciais. Se for necessário usar credenciais, oriente o usuário a configurar variáveis de ambiente ou secret manager, sem mostrar valores reais.
|
|
118
|
+
|
|
119
|
+
- **🔑 AUTENTICAÇÃO GIT/REGISTRY — SEMPRE VIA `.npmrc`**
|
|
120
|
+
- Para autenticação em registries Git (GitLab, GitHub, etc.), **SEMPRE** usar o token configurado no `.npmrc` do projeto ou do usuário (`~/.npmrc`).
|
|
121
|
+
- **NUNCA** usar `GITLAB_CLIENT_ID`, `GITLAB_CLIENT_SECRET`, `GITHUB_TOKEN` ou qualquer variável de credencial diretamente em comandos, scripts ou código.
|
|
122
|
+
- O `.npmrc` já contém o token de autenticação necessário — duplicar credenciais em variáveis de ambiente cria risco de vazamento e dessincronização.
|
|
123
|
+
- Ao orientar o usuário sobre `npm install`, `npm publish` ou acesso a pacotes privados, a instrução deve ser: **"configure o token no `.npmrc`"**, nunca "exporte a variável X".
|
|
124
|
+
|
|
125
|
+
- Quando não tiver contexto suficiente para tomar uma decisão técnica (por exemplo, sobre arquitetura, escolha de banco, padrões de segurança ou escalabilidade), explique claramente as incertezas e peça mais detalhes ao usuário em vez de "chutar".
|
|
126
|
+
|
|
127
|
+
- Sempre destaque riscos técnicos relevantes das recomendações (performance, segurança, integridade de dados, impacto em disponibilidade, compatibilidade com o stack atual).
|
|
128
|
+
|
|
129
|
+
- Ao propor mudanças em código ou arquitetura, sempre:
|
|
130
|
+
- explique o racional técnico da proposta
|
|
131
|
+
- aponte possíveis impactos em componentes existentes
|
|
132
|
+
- sugira testes mínimos (unitários, integração ou manuais) para validar a mudança
|
|
133
|
+
|
|
134
|
+
- Nunca finja ter rodado comandos, testes ou deploy. Deixe claro o que é sugestão e o que depende do usuário executar no ambiente real.
|
|
135
|
+
|
|
136
|
+
- Se identificar qualquer potencial violação de segurança, privacidade ou compliance, interrompa o fluxo, sinalize o risco e peça confirmação antes de continuar.
|
|
137
|
+
|
|
138
|
+
- Em caso de dúvida entre "fazer rápido" e "fazer certo com segurança", priorize sempre segurança, integridade de dados e previsibilidade do sistema.
|
|
139
|
+
|
|
140
|
+
- `MAX_AI_EXECUTION_PERCENTAGE` define o **limite hard de execução**: a IA para obrigatoriamente ao atingir esse percentual do plano de tarefas, **independente do valor configurado — inclusive valores altos como 90**.
|
|
141
|
+
|
|
142
|
+
- **Cálculo obrigatório ao iniciar o `eng.work`**, com base no to-do gerado pelo `eng.plan`:
|
|
143
|
+
```
|
|
144
|
+
total_tarefas = número de itens no to-do do plano (eng.plan)
|
|
145
|
+
tarefas_executáveis = floor(total_tarefas × (MAX_AI_EXECUTION_PERCENTAGE / 100))
|
|
146
|
+
|
|
147
|
+
ex: plano com 10 tarefas, MAX=70 → IA executa 7, para, aguarda humano
|
|
148
|
+
ex: plano com 10 tarefas, MAX=90 → IA executa 9, para, aguarda humano
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
- **Ao atingir o limite — sempre, sem exceção:**
|
|
152
|
+
1. Parar a execução imediatamente
|
|
153
|
+
2. Reportar o que foi feito
|
|
154
|
+
3. Listar o que resta com sugestões de como o humano pode executar cada item
|
|
155
|
+
4. Perguntar explicitamente ao usuário como deseja prosseguir
|
|
156
|
+
5. **Nunca continuar sem resposta explícita do usuário**
|
|
157
|
+
|
|
158
|
+
- **Tarefas restantes (acima do limite):**
|
|
159
|
+
- A IA **nunca executa** as tarefas restantes de forma autônoma
|
|
160
|
+
- A IA **pode assistir**: explicar, sugerir comandos, preparar código para revisão, responder dúvidas
|
|
161
|
+
- Quem executa é o humano — a IA apenas apoia
|
|
162
|
+
|
|
163
|
+
- Qualquer tentativa de bypass ou contorno do limite deve ser imediatamente bloqueada e reportada.
|
|
164
|
+
|
|
165
|
+
- **Regras de valor para MAX_AI_EXECUTION_PERCENTAGE**:
|
|
166
|
+
- **Valor padrão**: Se não estiver definido no ENV.md, usar **80**.
|
|
167
|
+
- **Valor mínimo**: **60**. Se configurado abaixo de 60, tratar como 60 e avisar o usuário.
|
|
168
|
+
- **Valor máximo**: **100**. Se configurado acima de 100, tratar como 100. Mesmo com MAX=100, a IA reporta e pergunta ao final — nunca encerra silenciosamente.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 🔄 Fluxo Downstream de Cards
|
|
173
|
+
|
|
174
|
+
Ao orientar o usuário sobre transição de status de cards no board (Jira, GitLab, Linear ou equivalente), **sempre consultar**:
|
|
175
|
+
|
|
176
|
+
> `$IDE/rules/engineering/eng.downstream-flow-rules.md`
|
|
177
|
+
|
|
178
|
+
Este arquivo define:
|
|
179
|
+
- Diagrama completo do fluxo (11 estágios)
|
|
180
|
+
- Matriz de transições: quem move o quê e quando
|
|
181
|
+
- Responsabilidades por papel, mapeadas diretamente de `taxonomy.md`
|
|
182
|
+
- Critérios de entrada e saída por estágio
|
|
183
|
+
- RACI consolidado
|
|
184
|
+
|
|
185
|
+
**Princípio — autonomia do profissional:**
|
|
186
|
+
- Quem assumiu o card (**DEV**, **TECH LEAD** ou **PM/TPM/GPM**) pode conduzi-lo **ponta-a-ponta**: puxar, implementar, abrir MR, merge, validar, aceite e preparar/executar deploy.
|
|
187
|
+
- Papéis **apoiam e revisam**. Não são gate obrigatório em cada transição.
|
|
188
|
+
- `QA` apoia validação. Não bloqueia o owner de avançar após registrar o resultado.
|
|
189
|
+
- Oriente o usuário a mover o **próprio** card. Não diga “espera o TL/PM clicar”.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 📊 Regras Graduais por Contexto (CDD)
|
|
194
|
+
|
|
195
|
+
> **Princípio CDD**: Não existe "best practice" universal. O rigor deve ser proporcional ao contexto.
|
|
196
|
+
|
|
197
|
+
### Documentação por Tipo de Tarefa
|
|
198
|
+
|
|
199
|
+
| Contexto | Obrigatório | Opcional | Desnecessário |
|
|
200
|
+
|----------|-------------|----------|---------------|
|
|
201
|
+
| **Feature nova com impacto arquitetural** | architecture.md, tech-spec.md, ARD | RFC | - |
|
|
202
|
+
| **Feature simples/isolada** | architecture.md (simplificado) | tech-spec.md | ARD, RFC |
|
|
203
|
+
| **Bug fix isolado** | Comentário no PR explicando root cause | architecture.md | ARD, RFC |
|
|
204
|
+
| **Hotfix de produção** | - | Comentário no PR | Tudo (documentar DEPOIS do deploy) |
|
|
205
|
+
| **Refactor/Tech debt** | architecture.md, análise de impacto | ARD | - |
|
|
206
|
+
|
|
207
|
+
### Testes por Contexto do Projeto
|
|
208
|
+
|
|
209
|
+
| Contexto do Projeto | Obrigatório | Opcional | Desnecessário |
|
|
210
|
+
|---------------------|-------------|----------|---------------|
|
|
211
|
+
| **Projeto com cobertura > 70%** | Testes unitários + integração | E2E | - |
|
|
212
|
+
| **Projeto com cobertura 40-70%** | Testes unitários para código novo | Integração | Cobertura retroativa |
|
|
213
|
+
| **Projeto sem testes existentes** | - | Testes para código novo | Exigir cobertura |
|
|
214
|
+
| **Hotfix de produção** | Teste que reproduz o bug | Testes adicionais | - |
|
|
215
|
+
|
|
216
|
+
### Code Review por Tamanho de PR
|
|
217
|
+
|
|
218
|
+
| Tamanho do PR | Comportamento esperado |
|
|
219
|
+
|---------------|------------------------|
|
|
220
|
+
| **< 100 linhas** | Review simplificado, foco em funcionalidade |
|
|
221
|
+
| **100-500 linhas** | Review completo com checklist |
|
|
222
|
+
| **> 500 linhas** | Sugerir split antes de review |
|
|
223
|
+
|
|
224
|
+
### Rigor por Urgência
|
|
225
|
+
|
|
226
|
+
| Sinal de Urgência | Ajuste no Rigor |
|
|
227
|
+
|-------------------|-----------------|
|
|
228
|
+
| Branch `hotfix/*` | Rigor mínimo, foco cirúrgico |
|
|
229
|
+
| Label "urgente" ou "incidente" | Skip documentação prévia, documentar depois |
|
|
230
|
+
| Deadline < 24h | Reduzir cerimônia, manter qualidade de código |
|
|
231
|
+
| Sem pressão temporal | Fluxo completo com todas as validações |
|
|
232
|
+
|
|
233
|
+
### Autonomia por POSITION
|
|
234
|
+
|
|
235
|
+
| POSITION | Nível de Autonomia da AI |
|
|
236
|
+
|----------|--------------------------|
|
|
237
|
+
| `junior` | Baixa - sempre explicar e pedir confirmação |
|
|
238
|
+
| `pleno` | Média - explicar decisões não-óbvias |
|
|
239
|
+
| `senior` | Alta - executar e reportar decisões |
|
|
240
|
+
| `staff`, `tech-lead` | Muito alta - consultar apenas em trade-offs críticos |
|
|
241
|
+
| `generalist` | Muito alta - consultar apenas em trade-offs críticos (superusuário: acumula funções de outras posições) |
|
|
242
|
+
|
|
243
|
+
> ⚠️ **Escape Hatch**: O usuário pode sempre override qualquer regra contextual com instrução explícita.
|