jarvis-ai-framework 2.1.1 → 3.2.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 +14 -115
- package/agents/AGENTS.md +11 -23
- package/agents/README.md +27 -129
- package/agents/engineering/data/eng.data-engineer.agent.md +11 -34
- package/agents/engineering/eng.advisor.agent.md +56 -0
- package/agents/engineering/eng.agent.md +14 -24
- package/agents/engineering/eng.bug-hunter.md +7 -15
- package/agents/engineering/eng.dev-code-reviewer.md +1 -1
- package/agents/engineering/eng.frontend.agent.md +3 -7
- package/agents/engineering/eng.rpa.agent.md +2 -8
- package/agents/engineering/qa/eng.qa.quality-strategist.md +6 -11
- package/agents/engineering/qa/eng.qa.test-architect.md +8 -18
- package/agents/engineering/qa/eng.qa.test-planner.md +10 -14
- package/agents/engineering/qa/eng.qa.testing-engineer.md +91 -24
- package/agents/product/prod.discovery-interviewer.md +3 -3
- package/bin/README.md +142 -0
- package/bin/commands/docs-publish.js +105 -141
- package/bin/commands/docs-sync.js +66 -104
- package/bin/commands/info.js +7 -27
- package/bin/commands/init.js +23 -51
- package/bin/commands/install-rtk.js +9 -3
- package/bin/commands/list.js +5 -18
- package/bin/commands/map.js +20 -5
- package/bin/commands/qa-signoff.js +58 -55
- package/bin/commands/tokens.js +14 -17
- package/bin/commands/whoami.js +30 -26
- package/bin/jarvis.js +9 -163
- package/bin/lib/auth/session.js +20 -20
- package/bin/lib/cli/program.js +219 -0
- package/bin/lib/cli/shared-options.js +29 -0
- package/bin/lib/config/constants.js +59 -2
- package/bin/lib/config/ide-config.js +4 -8
- package/bin/lib/core/profile-filter.js +4 -1
- package/bin/lib/core/scanner.js +3 -29
- package/bin/lib/core/sync-engine.js +21 -14
- package/bin/lib/core/token-report.js +12 -2
- package/bin/lib/docs/fetch-file.js +39 -0
- package/bin/lib/docs/publish-file.js +194 -0
- package/bin/lib/docs/redis-cache.js +49 -0
- package/bin/lib/docs/validate-frontmatter.js +9 -39
- package/bin/lib/env-loader.js +11 -34
- package/bin/lib/flow-map/parse.js +11 -5
- package/bin/lib/flow-map/render.js +5 -2
- package/bin/lib/flow-map/tree.js +59 -10
- package/bin/lib/tasks/comment.js +40 -35
- package/bin/lib/utils/frontmatter.js +57 -0
- package/bin/lib/utils/git-parser.js +4 -6
- package/bin/lib/utils/npmrc-parser.js +6 -13
- package/bin/lib/utils/paths.js +2 -4
- package/bin/lib/utils/ui.js +3 -9
- package/bin/lib/vcs/api.js +25 -41
- package/bin/lib/vcs/create-issue.js +49 -33
- package/bin/lib/vcs/create-merge.js +47 -31
- package/bin/lib/vcs/fetch-raw.js +35 -23
- package/package.json +14 -5
- package/rules/engineering/eng-rules.md +1 -1
- package/rules/engineering/eng-security-rules.md +18 -16
- package/rules/engineering/eng.bump-rules.md +3 -2
- package/rules/engineering/eng.docs-scraping-rules.md +4 -4
- package/rules/engineering/eng.integrations-rules.md +6 -4
- package/rules/engineering/eng.skills-rules.md +1 -1
- package/rules/engineering/eng.specializations-rules.md +18 -4
- package/rules/engineering/frontend/eng.frontend-rules.md +1 -4
- package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +1 -1
- package/rules/engineering/rpa/eng.rpa-rules.md +4 -9
- package/rules-on-demand/engineering/eng.pre-pr-rules.md +1 -1
- package/rules-on-demand/engineering/eng.start-rules.md +2 -0
- package/skills/AGENTS.md +52 -87
- package/skills/SKILLS-ROADMAP.md +47 -128
- package/skills/eng-ai/SKILL.md +270 -0
- package/skills/eng-ai/references/1-fundamentos-ml.md +24 -0
- package/skills/eng-ai/references/10-arquitetura-solucoes-ia.md +24 -0
- package/skills/eng-ai/references/11-governanca-ia.md +24 -0
- package/skills/eng-ai/references/12-seguranca-ia-responsavel.md +25 -0
- package/skills/eng-ai/references/2-matematica-estatistica.md +24 -0
- package/skills/eng-ai/references/3-dados-para-ia.md +24 -0
- package/skills/eng-ai/references/4-deep-learning-fundacionais.md +24 -0
- package/skills/eng-ai/references/5-llms-chatbots-agentes-rag.md +25 -0
- package/skills/eng-ai/references/6-avaliacao-experimentacao.md +24 -0
- package/skills/eng-ai/references/7-engenharia-sistemas-ia.md +24 -0
- package/skills/eng-ai/references/8-mlops-plataforma.md +24 -0
- package/skills/eng-ai/references/9-produto-ia.md +24 -0
- package/skills/eng-ai/references/especializacoes.md +17 -0
- package/skills/eng-automation/SKILL.md +290 -0
- package/skills/eng-automation/references/1-fundamentos-automacao.md +25 -0
- package/skills/eng-automation/references/10-ingestao-dados.md +25 -0
- package/skills/eng-automation/references/11-captcha-antibot.md +25 -0
- package/skills/eng-automation/references/12-limites-taxa-sessoes.md +25 -0
- package/skills/eng-automation/references/13-agendamento-orquestracao.md +24 -0
- package/skills/eng-automation/references/14-retentativa-erros.md +25 -0
- package/skills/eng-automation/references/15-autenticacao-credenciais.md +24 -0
- package/skills/eng-automation/references/16-observabilidade-confiabilidade.md +24 -0
- package/skills/eng-automation/references/2-aquisicao-dados.md +25 -0
- package/skills/eng-automation/references/3-automacao-navegador.md +24 -0
- package/skills/eng-automation/references/4-scraping-crawling.md +25 -0
- package/skills/eng-automation/references/5-apis-rest-graphql-soap.md +26 -0
- package/skills/eng-automation/references/6-webhooks-integracao.md +25 -0
- package/skills/eng-automation/references/7-rpa.md +25 -0
- package/skills/eng-automation/references/8-extracao-estruturada.md +25 -0
- package/skills/eng-automation/references/9-extracao-documentos.md +25 -0
- package/skills/eng-automation/references/especializacoes.md +18 -0
- package/skills/eng-backend-nestjs/SKILL.md +1 -1
- package/skills/eng-data/SKILL.md +271 -0
- package/skills/eng-data/references/1-fundamentos-dados.md +24 -0
- package/skills/eng-data/references/10-ciencia-dados.md +24 -0
- package/skills/eng-data/references/11-dataops-plataforma.md +24 -0
- package/skills/eng-data/references/12-seguranca-privacidade.md +24 -0
- package/skills/eng-data/references/2-modelagem-dados.md +24 -0
- package/skills/eng-data/references/3-bancos-dados.md +24 -0
- package/skills/eng-data/references/4-arquitetura-dados.md +24 -0
- package/skills/eng-data/references/5-pipelines-integracao.md +24 -0
- package/skills/eng-data/references/6-qualidade-dados.md +24 -0
- package/skills/eng-data/references/7-governanca-metadados.md +24 -0
- package/skills/eng-data/references/8-estatistica-analise.md +24 -0
- package/skills/eng-data/references/9-analytics-bi.md +24 -0
- package/skills/eng-data/references/especializacoes.md +20 -0
- package/skills/eng-frontend/SKILL.md +12 -5
- package/skills/eng-frontend/references/13-design-system.md +48 -0
- package/skills/eng-frontend/references/14-microfrontend.md +46 -0
- package/skills/eng-global-task-comment/SKILL.md +3 -3
- package/skills/eng-platform/SKILL.md +331 -0
- package/skills/eng-platform/references/1-fundamentos-sistemas.md +23 -0
- package/skills/eng-platform/references/10-resiliencia-arquitetura.md +24 -0
- package/skills/eng-platform/references/11-plataforma-devex.md +24 -0
- package/skills/eng-platform/references/12-finops-custos.md +24 -0
- package/skills/eng-platform/references/13-seguranca-fundamentos.md +26 -0
- package/skills/eng-platform/references/14-profiling-performance.md +23 -0
- package/skills/eng-platform/references/15-testes-carga-chaos.md +23 -0
- package/skills/eng-platform/references/16-cache-multicamada.md +22 -0
- package/skills/eng-platform/references/2-redes.md +23 -0
- package/skills/eng-platform/references/3-cloud.md +24 -0
- package/skills/eng-platform/references/4-iac-automacao.md +24 -0
- package/skills/eng-platform/references/5-containers-orquestracao.md +25 -0
- package/skills/eng-platform/references/6-cicd-entrega.md +24 -0
- package/skills/eng-platform/references/7-observabilidade.md +24 -0
- package/skills/eng-platform/references/8-confiabilidade-sre.md +24 -0
- package/skills/eng-platform/references/9-seguranca-infra.md +26 -0
- package/skills/eng-platform/references/especializacoes.md +34 -0
- package/skills/eng-qa/SKILL.md +283 -0
- package/skills/eng-qa/references/1-fundamentos-qualidade.md +25 -0
- package/skills/eng-qa/references/10-confiabilidade.md +25 -0
- package/skills/eng-qa/references/11-seguranca.md +24 -0
- package/skills/eng-qa/references/12-acessibilidade.md +24 -0
- package/skills/eng-qa/references/13-dados-testes.md +24 -0
- package/skills/eng-qa/references/14-gestao-testes-defeitos.md +25 -0
- package/skills/eng-qa/references/15-arquitetura-qa.md +25 -0
- package/skills/eng-qa/references/2-estrategia-planejamento.md +25 -0
- package/skills/eng-qa/references/3-design-testes.md +25 -0
- package/skills/eng-qa/references/4-manual-exploratorio.md +24 -0
- package/skills/eng-qa/references/5-automacao-testes.md +25 -0
- package/skills/eng-qa/references/6-api-integracao.md +25 -0
- package/skills/eng-qa/references/7-contrato.md +24 -0
- package/skills/eng-qa/references/8-interface-compat-mobile.md +24 -0
- package/skills/eng-qa/references/9-performance.md +24 -0
- package/skills/eng-qa/references/especializacoes.md +29 -0
- package/skills/eng-qa-planner/SKILL.md +264 -0
- package/skills/jarvis-context-detect/SKILL.md +1 -1
- package/skills/jarvis-context-detect/assets/context-profile-template.md +1 -1
- package/skills/jarvis-create-specialization/SKILL.md +8 -0
- package/skills/jarvis-docs-central/README.md +31 -28
- package/skills/jarvis-docs-central/SKILL.md +5 -5
- package/skills/jarvis-init/SKILL.md +9 -8
- package/skills/jarvis-init/assets/passo-adicionar-stacks.md +47 -18
- package/skills/jarvis-list-specializations/SKILL.md +30 -17
- package/skills/jarvis-report-issue/SKILL.md +1 -1
- package/taxonomy.md +4 -16
- package/templates/AGENTS.md +2 -0
- package/templates/ENV-template.md +20 -2
- package/templates/engineering/advisor-template.md +65 -0
- package/templates/engineering/architecture-template.md +52 -4
- package/templates/engineering/qa/qa.sprint-plan-template.md +1 -1
- package/workflows/AGENTS.md +3 -1
- package/workflows/README.md +0 -10
- package/workflows/engineering/data/data.new-pipeline.md +6 -5
- package/workflows/engineering/eng.bug-audit.md +4 -14
- package/workflows/engineering/eng.debug.md +4 -20
- package/workflows/engineering/eng.plan.md +4 -26
- package/workflows/engineering/eng.pr.md +13 -63
- package/workflows/engineering/eng.pre-pr.md +14 -51
- package/workflows/engineering/eng.review.md +7 -13
- package/workflows/engineering/eng.rpa.robot.md +3 -9
- package/workflows/engineering/eng.start.md +37 -32
- package/workflows/engineering/eng.work.md +17 -40
- package/workflows/engineering/qa/eng.qa-sprint-planning.md +1 -1
- package/workflows/product/prod.spec.discovery.md +2 -2
- package/workflows/warm-up.md +35 -63
- package/agents/engineering/eng.cybersecurity.agent.md +0 -486
- package/agents/engineering/qa/eng.qa.cypress-specialist.md +0 -112
- package/bin/lib/docs/fetch-file.sh +0 -41
- package/bin/lib/docs/publish-file.sh +0 -284
- package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +0 -137
- package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +0 -181
- package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +0 -120
- package/skills/eng-ai-engineer/SKILL.md +0 -303
- package/skills/eng-data-bi/SKILL.md +0 -206
- package/skills/eng-data-debug/SKILL.md +0 -314
- package/skills/eng-data-engineer/SKILL.md +0 -266
- package/skills/eng-data-onboard/SKILL.md +0 -317
- package/skills/eng-data-orchestrator/SKILL.md +0 -433
- package/skills/eng-devops-performance-engineer/SKILL.md +0 -319
- package/skills/eng-frontend-design-system/SKILL.md +0 -155
- package/skills/eng-frontend-design-system/references/1-estrutura-pacote.md +0 -57
- package/skills/eng-frontend-design-system/references/2-tokens.md +0 -116
- package/skills/eng-frontend-design-system/references/3-componentes.md +0 -165
- package/skills/eng-frontend-design-system/references/4-storybook.md +0 -85
- package/skills/eng-frontend-design-system/references/5-auditoria-versionamento.md +0 -76
- package/skills/eng-frontend-microfrontend/SKILL.md +0 -164
- package/skills/eng-frontend-microfrontend/references/1-criando-remote.md +0 -109
- package/skills/eng-frontend-microfrontend/references/2-configurando-shell.md +0 -70
- package/skills/eng-frontend-microfrontend/references/3-contratos-interface.md +0 -73
- package/skills/eng-frontend-microfrontend/references/4-shared-dependencies.md +0 -48
- package/skills/eng-frontend-microfrontend/references/5-event-bus.md +0 -59
- package/skills/eng-frontend-microfrontend/references/6-monorepo-deploy.md +0 -77
- package/skills/eng-frontend-microfrontend/references/7-troubleshooting.md +0 -45
- package/skills/eng-global-browser-extension-builder/SKILL.md +0 -392
- package/skills/eng-global-jira-comment/SKILL.md +0 -27
- package/skills/eng-qa-a11y-audit/SKILL.md +0 -276
- package/skills/eng-qa-bug-report/SKILL.md +0 -877
- package/skills/eng-qa-bug-report/TASK_MANAGERS.md +0 -138
- package/skills/eng-qa-bug-report/references/1-integracao-task-managers.md +0 -148
- package/skills/eng-qa-bug-report/references/2-exemplos-de-uso.md +0 -46
- package/skills/eng-qa-bug-report/references/3-bug-to-test.md +0 -45
- package/skills/eng-qa-cypress-e2e/SKILL.md +0 -184
- package/skills/eng-qa-dev-guide/SKILL.md +0 -173
- package/skills/eng-qa-e2e/SKILL.md +0 -407
- package/skills/eng-qa-e2e-spec-writer/SKILL.md +0 -329
- package/skills/eng-qa-exploratory/SKILL.md +0 -196
- package/skills/eng-qa-gate/SKILL.md +0 -377
- package/skills/eng-qa-gate/assets/checklist-validacao.md +0 -291
- package/skills/eng-qa-graphql-contract/SKILL.md +0 -263
- package/skills/eng-qa-quality-report/SKILL.md +0 -419
- package/skills/eng-qa-test-plan/SKILL.md +0 -473
- package/skills/eng-qa-testsprite/SKILL.md +0 -332
- package/skills/eng-qa-testsprite/references/testsprite-mcp.md +0 -224
- package/skills/eng-qa-unit-test/SKILL.md +0 -478
- package/skills/eng-scraper/SKILL.md +0 -260
- package/skills/eng-scraper/references/1-puppeteer.md +0 -140
- package/skills/eng-scraper/references/2-playwright-cheerio-pdf.md +0 -82
- package/skills/eng-scraper/references/3-anti-bot.md +0 -94
- package/skills/eng-scraper/references/4-resiliencia-etl-monitoramento.md +0 -137
- package/skills/eng-scraper-robot-builder/SKILL.md +0 -377
- package/skills/eng-security-cybersecurity/SKILL.md +0 -250
- package/skills/eng-security-cybersecurity/references/1-owasp-top-10.md +0 -331
- package/skills/eng-security-cybersecurity/references/2-secrets-management.md +0 -31
- package/skills/eng-security-cybersecurity/references/3-input-validation.md +0 -43
- package/skills/eng-security-cybersecurity/references/4-compliance.md +0 -20
- package/skills/eng-security-patch/SKILL.md +0 -388
- package/skills/eng-security-threat-model/SKILL.md +0 -171
- package/skills/eng-security-triage/SKILL.md +0 -276
- package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +0 -311
- package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +0 -249
- package/templates/engineering/qa/qa.cypress-test-template.md +0 -172
- package/templates/engineering/qa/qa.exploratory-session-template.md +0 -148
- package/templates/engineering/qa/qa.quality-report-template.md +0 -130
- package/workflows/engineering/eng.security-audit.md +0 -319
- package/workflows/engineering/eng.security-incident.md +0 -281
- package/workflows/engineering/eng.security-pipeline.md +0 -219
- package/workflows/engineering/eng.security-review.md +0 -241
- package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +0 -57
- package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +0 -57
- package/workflows/engineering/qa/eng.qa-exploratory-session.md +0 -68
- package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +0 -209
- package/workflows/engineering/qa/eng.qa-quality-report.md +0 -85
- /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-coverage-template.md +0 -0
- /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-patterns.md +0 -0
- /package/templates/{CDD aplicado a Prompts.md → cdd-aplicado-a-prompts.md} +0 -0
|
@@ -1,43 +1,59 @@
|
|
|
1
1
|
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
2
3
|
import { createIssue, parseRepoUrl } from "./api.js";
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
5
|
+
/**
|
|
6
|
+
* Abre uma issue via adapter (GitLab/GitHub/Bitbucket).
|
|
7
|
+
* Usada por `jarvis vcs create-issue` e pelo skill `jarvis-report-issue`.
|
|
8
|
+
* @param {Object} options
|
|
9
|
+
* @param {string} options.repo - URL ou `org/repo` do repositório
|
|
10
|
+
* @param {string} options.title - Título da issue
|
|
11
|
+
* @param {string} options.bodyFile - Path de um arquivo com o corpo em markdown
|
|
12
|
+
*/
|
|
13
|
+
export async function runCreateIssue({ repo, title, bodyFile }) {
|
|
14
|
+
if (!title || !bodyFile || !repo) {
|
|
15
|
+
console.error(
|
|
16
|
+
"Uso: jarvis vcs create-issue --repo <url-ou-path> --title <titulo> --body-file <path>"
|
|
17
|
+
);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
9
20
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
21
|
+
let repoUrl = repo.trim();
|
|
22
|
+
if (!/^https?:\/\//.test(repoUrl) && !repoUrl.includes("@")) {
|
|
23
|
+
const hostGuess = (process.env.VERSION_CONTROL || "gitlab").toLowerCase();
|
|
24
|
+
const host =
|
|
25
|
+
hostGuess === "github"
|
|
26
|
+
? "github.com"
|
|
27
|
+
: hostGuess === "bitbucket"
|
|
28
|
+
? "bitbucket.org"
|
|
29
|
+
: "gitlab.com";
|
|
30
|
+
repoUrl = `https://${host}/${repoUrl.replace(/^\/+/, "")}`;
|
|
31
|
+
}
|
|
13
32
|
|
|
14
|
-
|
|
15
|
-
console.error(
|
|
16
|
-
"Uso: create-issue.js --repo <url-ou-path> --title <titulo> --body-file <path>",
|
|
17
|
-
);
|
|
18
|
-
process.exit(1);
|
|
19
|
-
}
|
|
33
|
+
const body = existsSync(bodyFile) ? readFileSync(bodyFile, "utf-8") : "";
|
|
20
34
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
repoUrl = `https://${host}/${repoUrl.replace(/^\/+/, "")}`;
|
|
35
|
+
try {
|
|
36
|
+
const result = await createIssue(repoUrl, { title, body });
|
|
37
|
+
parseRepoUrl(repoUrl);
|
|
38
|
+
console.log(`✅ Issue aberto: ${result.url}`);
|
|
39
|
+
console.log(JSON.stringify(result));
|
|
40
|
+
} catch (err) {
|
|
41
|
+
console.error(err.message);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
31
44
|
}
|
|
32
45
|
|
|
33
|
-
|
|
46
|
+
function arg(name, fallback = "") {
|
|
47
|
+
const idx = process.argv.indexOf(`--${name}`);
|
|
48
|
+
if (idx === -1) return fallback;
|
|
49
|
+
return process.argv[idx + 1] || fallback;
|
|
50
|
+
}
|
|
34
51
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
process.exit(1);
|
|
52
|
+
// Compatibilidade: continua funcionando como `node bin/lib/vcs/create-issue.js --repo ...`
|
|
53
|
+
if (fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
54
|
+
await runCreateIssue({
|
|
55
|
+
title: arg("title"),
|
|
56
|
+
bodyFile: arg("body-file"),
|
|
57
|
+
repo: arg("repo"),
|
|
58
|
+
});
|
|
43
59
|
}
|
|
@@ -1,43 +1,59 @@
|
|
|
1
1
|
import { execSync } from "node:child_process";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
3
4
|
import { createMergeRequest, parseRepoUrl } from "./api.js";
|
|
4
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Abre um MR/PR via adapter (GitLab/GitHub/Bitbucket, pelo hostname do remote).
|
|
8
|
+
* Usada por `jarvis vcs create-merge` e, diretamente, por `eng.pr`.
|
|
9
|
+
* @param {Object} options
|
|
10
|
+
* @param {string} options.source - Branch de origem
|
|
11
|
+
* @param {string} options.target - Branch de destino
|
|
12
|
+
* @param {string} options.title - Título do MR/PR
|
|
13
|
+
* @param {string} [options.bodyFile] - Path de um arquivo com a descrição
|
|
14
|
+
* @param {string} [options.repo] - URL do repo (padrão: `git remote get-url origin`)
|
|
15
|
+
*/
|
|
16
|
+
export async function runCreateMerge({ source, target, title, bodyFile, repo }) {
|
|
17
|
+
if (!source || !target || !title) {
|
|
18
|
+
console.error(
|
|
19
|
+
"Uso: jarvis vcs create-merge --source <branch> --target <branch> --title <titulo> [--body-file path] [--repo url]"
|
|
20
|
+
);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const repoUrl = repo || execSync("git remote get-url origin", { encoding: "utf-8" }).trim();
|
|
25
|
+
const description = bodyFile ? readFileSync(bodyFile, "utf-8") : "";
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
const result = await createMergeRequest(repoUrl, {
|
|
29
|
+
source,
|
|
30
|
+
target,
|
|
31
|
+
title,
|
|
32
|
+
description,
|
|
33
|
+
});
|
|
34
|
+
const parsed = parseRepoUrl(repoUrl);
|
|
35
|
+
const noun = parsed.vendor === "gitlab" ? "MR" : "PR";
|
|
36
|
+
console.log(`✅ ${noun} criado: ${result.url}`);
|
|
37
|
+
console.log(JSON.stringify(result));
|
|
38
|
+
} catch (err) {
|
|
39
|
+
console.error(err.message);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
5
44
|
function arg(name, fallback = "") {
|
|
6
45
|
const idx = process.argv.indexOf(`--${name}`);
|
|
7
46
|
if (idx === -1) return fallback;
|
|
8
47
|
return process.argv[idx + 1] || fallback;
|
|
9
48
|
}
|
|
10
49
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"Uso: create-merge.js --source <branch> --target <branch> --title <titulo> [--body-file path] [--repo url]",
|
|
20
|
-
);
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const repoUrl =
|
|
25
|
-
repoArg ||
|
|
26
|
-
execSync("git remote get-url origin", { encoding: "utf-8" }).trim();
|
|
27
|
-
const description = bodyFile ? readFileSync(bodyFile, "utf-8") : "";
|
|
28
|
-
|
|
29
|
-
try {
|
|
30
|
-
const result = await createMergeRequest(repoUrl, {
|
|
31
|
-
source,
|
|
32
|
-
target,
|
|
33
|
-
title,
|
|
34
|
-
description,
|
|
50
|
+
// Compatibilidade: continua funcionando como `node bin/lib/vcs/create-merge.js --source ...`
|
|
51
|
+
if (fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
52
|
+
await runCreateMerge({
|
|
53
|
+
source: arg("source"),
|
|
54
|
+
target: arg("target"),
|
|
55
|
+
title: arg("title"),
|
|
56
|
+
bodyFile: arg("body-file"),
|
|
57
|
+
repo: arg("repo"),
|
|
35
58
|
});
|
|
36
|
-
const parsed = parseRepoUrl(repoUrl);
|
|
37
|
-
const noun = parsed.vendor === "gitlab" ? "MR" : "PR";
|
|
38
|
-
console.log(`✅ ${noun} criado: ${result.url}`);
|
|
39
|
-
console.log(JSON.stringify(result));
|
|
40
|
-
} catch (err) {
|
|
41
|
-
console.error(err.message);
|
|
42
|
-
process.exit(1);
|
|
43
59
|
}
|
package/bin/lib/vcs/fetch-raw.js
CHANGED
|
@@ -1,30 +1,42 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
1
2
|
import { fetchRawFile } from "./api.js";
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Busca o conteúdo bruto de um arquivo no central-docs via adapter.
|
|
6
|
+
* Usada por `jarvis vcs fetch-raw`.
|
|
7
|
+
* @param {string} filePath - Path do arquivo dentro do repo central-docs
|
|
8
|
+
* @param {string} [ref] - Branch/ref (padrão: "main")
|
|
9
|
+
*/
|
|
10
|
+
export async function runFetchRaw(filePath, ref = "main") {
|
|
11
|
+
const repo = process.env.CENTRAL_DOCS_REPO;
|
|
6
12
|
|
|
7
|
-
if (!filePath) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
if (!repo) {
|
|
12
|
-
console.error("CENTRAL_DOCS_REPO não definido");
|
|
13
|
-
process.exit(1);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
try {
|
|
17
|
-
const content = await fetchRawFile(repo, filePath, ref);
|
|
18
|
-
process.stdout.write(content);
|
|
19
|
-
} catch (err) {
|
|
20
|
-
if (err.code === 404) {
|
|
21
|
-
console.error(`⚠️ Arquivo não encontrado no central-docs: ${filePath}`);
|
|
22
|
-
process.exit(2);
|
|
13
|
+
if (!filePath) {
|
|
14
|
+
console.error("Uso: jarvis vcs fetch-raw <file-path> [ref]");
|
|
15
|
+
process.exit(1);
|
|
23
16
|
}
|
|
24
|
-
if (
|
|
25
|
-
console.error("
|
|
17
|
+
if (!repo) {
|
|
18
|
+
console.error("CENTRAL_DOCS_REPO não definido");
|
|
26
19
|
process.exit(1);
|
|
27
20
|
}
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
const content = await fetchRawFile(repo, filePath, ref);
|
|
24
|
+
process.stdout.write(content);
|
|
25
|
+
} catch (err) {
|
|
26
|
+
if (err.code === 404) {
|
|
27
|
+
console.error(`⚠️ Arquivo não encontrado no central-docs: ${filePath}`);
|
|
28
|
+
process.exit(2);
|
|
29
|
+
}
|
|
30
|
+
if (err.code === 401 || err.code === 403) {
|
|
31
|
+
console.error("❌ Token sem permissão para acessar o repositório");
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
console.error(err.message);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Compatibilidade: continua funcionando como `node bin/lib/vcs/fetch-raw.js <file-path> [ref]`
|
|
40
|
+
if (fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
41
|
+
await runFetchRaw(process.argv[2], process.argv[3] || "main");
|
|
30
42
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jarvis-ai-framework",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Jarvis framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,8 +10,12 @@
|
|
|
10
10
|
"postinstall": "node bin/postinstall.js",
|
|
11
11
|
"prepublishOnly": "echo 'Publishing jarvis-framework...'",
|
|
12
12
|
"publish:gitlab": "npm publish",
|
|
13
|
-
"test:comandos": "node test/
|
|
14
|
-
"test:filtro": "node --test test/profile-filter.test.js test/token-report.test.js test/flow-map.test.js"
|
|
13
|
+
"test:comandos": "node test/comandos-docs.test.js",
|
|
14
|
+
"test:filtro": "node --test test/profile-filter.test.js test/token-report.test.js test/flow-map.test.js test/env-loader.test.js test/sync-engine.test.js test/vcs-api.test.js test/fetch-file.test.js test/publish-file.test.js",
|
|
15
|
+
"lint": "eslint bin/ test/",
|
|
16
|
+
"lint:fix": "eslint bin/ test/ --fix",
|
|
17
|
+
"format": "prettier --write bin/ test/",
|
|
18
|
+
"format:check": "prettier --check bin/ test/"
|
|
15
19
|
},
|
|
16
20
|
"files": [
|
|
17
21
|
"bin/",
|
|
@@ -45,11 +49,16 @@
|
|
|
45
49
|
"bugs": {
|
|
46
50
|
"url": "https://github.com/phelipperibeiro/jarvis-framework/issues"
|
|
47
51
|
},
|
|
48
|
-
"dependencies": {},
|
|
49
52
|
"engines": {
|
|
50
53
|
"node": ">=18.0.0"
|
|
51
54
|
},
|
|
52
55
|
"devDependencies": {
|
|
53
|
-
"
|
|
56
|
+
"@eslint/js": "^9.39.5",
|
|
57
|
+
"eslint": "^9.39.5",
|
|
58
|
+
"eslint-config-prettier": "^10.1.8",
|
|
59
|
+
"prettier": "^3.9.9"
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"commander": "^13.1.0"
|
|
54
63
|
}
|
|
55
64
|
}
|
|
@@ -26,7 +26,7 @@ env_file: "@/ENV.md"
|
|
|
26
26
|
O arquivo ENV.md não existe ou está incompleto.
|
|
27
27
|
Por favor, execute `/jarvis-init` para configurar o ambiente antes de continuar.
|
|
28
28
|
```
|
|
29
|
-
- **Listas de especializações (presentes, podem estar vazias)**: `BACKEND_SPECIALIZATIONS` e `
|
|
29
|
+
- **Listas de especializações (presentes, podem estar vazias)**: `BACKEND_SPECIALIZATIONS`, `FRONTEND_SPECIALIZATIONS`, `QA_SPECIALIZATIONS`, `DATA_SPECIALIZATIONS`, `AUTOMATION_SPECIALIZATIONS` e `PLATFORM_SPECIALIZATIONS` devem **existir** no `ENV.md`. Lista **vazia** é válida (só o skill base). Variável **ausente** interrompe o comando daquela área e orienta o Upgrade do `/jarvis-init` — mas só quando um comando daquela área específica é executado (igual já valia pra backend/frontend; não bloqueia comando de uma área não tocada). Detalhes e mensagens em `eng.specializations-rules.md`.
|
|
30
30
|
- **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`.
|
|
31
31
|
|
|
32
32
|
- **🔧 VARIÁVEL `$IDE` - DETECÇÃO AUTOMÁTICA DA PASTA DA IDE**
|
|
@@ -7,7 +7,10 @@ env_file: "@/ENV.md"
|
|
|
7
7
|
# Regras de Seguranca para Engenharia
|
|
8
8
|
|
|
9
9
|
Regras de seguranca aplicaveis a todo o fluxo de engenharia — do planejamento ao merge.
|
|
10
|
-
Toda implementacao deve seguir estas regras por padrao
|
|
10
|
+
Toda implementacao deve seguir estas regras por padrao. Seguranca de codigo de aplicacao ja e
|
|
11
|
+
padrao embutido nas bases `eng-backend`/`eng-frontend`; seguranca de infraestrutura e fundamentos
|
|
12
|
+
de seguranca da informacao (risco, ameacas, identidade, resposta a incidente, GRC, privacidade)
|
|
13
|
+
ficam no `eng-platform` (temas 9 e 13).
|
|
11
14
|
|
|
12
15
|
---
|
|
13
16
|
|
|
@@ -103,21 +106,22 @@ O agente DEVE incluir no checklist de pre-PR as seguintes verificacoes de segura
|
|
|
103
106
|
|
|
104
107
|
Se o PR toca em areas sensiveis (auth, sessions, RBAC, CORS, CSP, permissoes), o agente DEVE:
|
|
105
108
|
1. Adicionar label `security` ao PR
|
|
106
|
-
2.
|
|
109
|
+
2. Seguir o gate de seguranca inline do `eng.pre-pr` (sanitizacao, auth guards, headers, secrets scan, `npm audit`) antes do merge
|
|
107
110
|
|
|
108
111
|
---
|
|
109
112
|
|
|
110
113
|
## Fase: eng.pr (Merge)
|
|
111
114
|
|
|
112
|
-
- PRs com label `security` devem ter review de seguranca aprovado
|
|
115
|
+
- PRs com label `security` devem ter review de seguranca aprovado manualmente antes do merge
|
|
113
116
|
- Nunca aprovar PR com secret detectado no diff — sem excecoes
|
|
114
117
|
- Se o PR adiciona endpoint publico, documentar justificativa no description do PR
|
|
115
118
|
|
|
116
119
|
---
|
|
117
120
|
|
|
118
|
-
##
|
|
121
|
+
## Analise Read-Only de Seguranca
|
|
119
122
|
|
|
120
|
-
|
|
123
|
+
Qualquer analise de ameacas, auditoria ou investigacao de seguranca feita pelo agente opera em
|
|
124
|
+
**modo estatico apenas**:
|
|
121
125
|
|
|
122
126
|
- Leem codigo-fonte, historico git e relatorios fornecidos pelo usuario
|
|
123
127
|
- **Nunca** executam, buildam, fuzzam ou modificam o codigo-alvo
|
|
@@ -130,11 +134,11 @@ Os skills de seguranca (`eng-security-threat-model`, `eng.security-audit`, `eng-
|
|
|
130
134
|
|
|
131
135
|
Usar `jarvis-context-detect` para calibrar a profundidade da analise de seguranca:
|
|
132
136
|
|
|
133
|
-
| Nivel de risco | Criterio | Estrategia |
|
|
134
|
-
|
|
135
|
-
| **Baixo** — PR comum | Logica de negocio sem superficie sensivel | Single-pass, sem fan-out |
|
|
136
|
-
| **Medio** — PR sensivel | Toca auth, sessions, RBAC, CORS, CSP, PII, fluxo financeiro, criptografia | Fan-out por area + single-vote |
|
|
137
|
-
| **Alto** —
|
|
137
|
+
| Nivel de risco | Criterio | Estrategia |
|
|
138
|
+
|---|---|---|
|
|
139
|
+
| **Baixo** — PR comum | Logica de negocio sem superficie sensivel | Single-pass, sem fan-out |
|
|
140
|
+
| **Medio** — PR sensivel | Toca auth, sessions, RBAC, CORS, CSP, PII, fluxo financeiro, criptografia | Fan-out por area + single-vote |
|
|
141
|
+
| **Alto** — Auditoria completa | Usuario pede uma auditoria dedicada do projeto | Fan-out + multi-voto (3 votos por achado) |
|
|
138
142
|
|
|
139
143
|
O peso do token fica em subagentes isolados — janela da sessao principal nao lota.
|
|
140
144
|
PR comum sem risco identificado = zero token extra (so as rules, que ja ficam carregadas).
|
|
@@ -149,23 +153,21 @@ As regras acima se aplicam a TODOS os engenheiros. A responsabilidade escala com
|
|
|
149
153
|
|----------|---------------------------|
|
|
150
154
|
| JUNIOR, PLENO | Seguir as regras. Em duvida de seguranca, consultar senior/TL — nao bloqueia a entrega se o risco for registrado |
|
|
151
155
|
| SENIOR, SPECIALIST | Seguir + revisar seguranca de PRs do squad quando solicitado |
|
|
152
|
-
| TECH LEAD, HEAD | Seguir + garantir que
|
|
156
|
+
| TECH LEAD, HEAD | Seguir + garantir que o gate de seguranca do `eng.pre-pr` foi seguido em PRs com label `security`. Decidir se escala incidente |
|
|
153
157
|
| CTO | Seguir + visao de compliance (LGPD/GDPR) e risco organizacional. Aprovar excecoes de seguranca |
|
|
154
158
|
|
|
155
159
|
---
|
|
156
160
|
|
|
157
|
-
## Quando
|
|
161
|
+
## Quando o risco excede estas regras
|
|
158
162
|
|
|
159
|
-
O agente de engenharia (ATHENA) deve
|
|
163
|
+
O agente de engenharia (ATHENA) deve sinalizar explicitamente ao usuario e pedir revisao humana quando:
|
|
160
164
|
|
|
161
165
|
- Vulnerabilidade conhecida (CVE) afeta uma dependencia do projeto
|
|
162
|
-
- Auditoria de seguranca completa e solicitada
|
|
166
|
+
- Auditoria de seguranca completa e solicitada (sem skill dedicado hoje — se for recorrente, considere criar uma especializacao em `PLATFORM_SPECIALIZATIONS`)
|
|
163
167
|
- Incidente de seguranca em producao
|
|
164
168
|
- Feature envolve fluxo financeiro, PII ou auth complexa (OAuth, MFA)
|
|
165
169
|
- Duvida sobre impacto de seguranca que excede o escopo das regras acima
|
|
166
170
|
|
|
167
|
-
> O skill `/eng-security-cybersecurity` pode ser invocado diretamente para consulta rapida sem ativar o agente completo.
|
|
168
|
-
|
|
169
171
|
---
|
|
170
172
|
|
|
171
173
|
## Nunca
|
|
@@ -23,5 +23,6 @@ Corrigir bugs sem alterar feature pretendida.
|
|
|
23
23
|
Pequenas melhorias de performance.
|
|
24
24
|
Atualizações de documentação ou mudanças de metadata.
|
|
25
25
|
|
|
26
|
-
Altere a versão
|
|
27
|
-
Então, execute `
|
|
26
|
+
Altere a versão em `package.json`.
|
|
27
|
+
Então, execute `npm install` para regenerar o `package-lock.json`.
|
|
28
|
+
Adicione uma entrada em `CHANGELOG.md` para a nova versão, seguindo o formato [Keep a Changelog](https://keepachangelog.com/).
|
|
@@ -19,7 +19,7 @@ Aplicável sempre que um robô novo for implementado, um bug estrutural for reso
|
|
|
19
19
|
#### Localização
|
|
20
20
|
|
|
21
21
|
- Sempre criar em `docs/engineering/robots/{robot-tag}-robot.md`
|
|
22
|
-
- Exemplos: `docs/engineering/robots/
|
|
22
|
+
- Exemplos: `docs/engineering/robots/consulta-orgao-robot.md`, `docs/engineering/robots/extrator-dados-robot.md`
|
|
23
23
|
|
|
24
24
|
#### Conteúdo obrigatório
|
|
25
25
|
|
|
@@ -30,8 +30,8 @@ Todo arquivo `{robot-tag}-robot.md` deve conter:
|
|
|
30
30
|
| **Visão Geral** | O que o robô coleta e o que **não** coleta (limitações por design) |
|
|
31
31
|
| **Fluxo de Execução** | Sequência de chamadas HTTP com URLs completas de cada etapa |
|
|
32
32
|
| **Fontes de Dados** | Cada fonte (PDF, HTML, API) com mapeamento de campos/colunas |
|
|
33
|
-
| **Campos Extraídos** | Tabela por `situation` (ex:
|
|
34
|
-
| **Limitações Conhecidas** | Campos indisponíveis na fonte do
|
|
33
|
+
| **Campos Extraídos** | Tabela por `situation` (ex: CONCLUIDO vs PENDENTE) — quais campos existem em cada uma e a fonte |
|
|
34
|
+
| **Limitações Conhecidas** | Campos indisponíveis na fonte do sistema/órgão externo — documentar por que não é possível extrair |
|
|
35
35
|
| **Histórico de Bugs** | Bugs resolvidos com referência ao Jira key, sintoma, causa e fix aplicado |
|
|
36
36
|
| **Checklist de Troubleshooting** | Tabela: sintoma → causa provável → ação |
|
|
37
37
|
|
|
@@ -39,7 +39,7 @@ Todo arquivo `{robot-tag}-robot.md` deve conter:
|
|
|
39
39
|
|
|
40
40
|
- Ao implementar um robô novo
|
|
41
41
|
- Ao resolver qualquer bug estrutural (ex: campo retornando vazio, matching falho)
|
|
42
|
-
- Ao fazer descobertas relevantes sobre o comportamento do site-alvo (ex: estrutura de colunas HTML, campos disponíveis por situação
|
|
42
|
+
- Ao fazer descobertas relevantes sobre o comportamento do site-alvo (ex: estrutura de colunas HTML, campos disponíveis por situação do registro)
|
|
43
43
|
- Sempre referenciar o Jira key no histórico de bugs
|
|
44
44
|
|
|
45
45
|
### Proibido
|
|
@@ -8,8 +8,8 @@ O Jarvis não assume Jira, GitLab ou Slack. Leia `$IDE/ENV.md` e despache pelo a
|
|
|
8
8
|
|
|
9
9
|
| Variável | Vendors | Adapter |
|
|
10
10
|
|----------|---------|---------|
|
|
11
|
-
| `TASK_MANAGER` | jira, linear, github, asana | `
|
|
12
|
-
| `VERSION_CONTROL` | gitlab, github, bitbucket | `
|
|
11
|
+
| `TASK_MANAGER` | jira, linear, github, asana | `jarvis tasks comment` |
|
|
12
|
+
| `VERSION_CONTROL` | gitlab, github, bitbucket | `jarvis vcs create-merge` / `create-issue` / `fetch-raw` |
|
|
13
13
|
| `MESSAGE_COMUNICATOR` | slack, discord, teams | runtime `communicator/` |
|
|
14
14
|
|
|
15
15
|
`{TASK_MANAGER_KEY}` = id da tarefa. Com board, é o id do card. Sem board, é o número de controle do usuário.
|
|
@@ -34,7 +34,9 @@ Com board definido, se o key não veio nos argumentos, perguntar o id do card na
|
|
|
34
34
|
|
|
35
35
|
## Comentário no card
|
|
36
36
|
|
|
37
|
-
Só se `TASK_MANAGER` estiver preenchido com um vendor. Freelance → pular.
|
|
37
|
+
Só se `TASK_MANAGER` estiver preenchido com um vendor. Freelance → pular. Falha no comentário não bloqueia o workflow.
|
|
38
|
+
|
|
39
|
+
Comentar **somente** em eventos relevantes: (a) **desvio do plano** (mudança de direção, fase bloqueada), (b) **auditoria do Advisor** (as questões do `architecture.md` com as opções junto da escolha), (c) **bloqueio** com valor de rastreabilidade (ex.: pré-PR reprovado), (d) **link do MR**, uma única vez. **Nunca** comentar início ou fim de etapa ("Iniciando…", "concluído…"): o acompanhamento fica no fluxo e no PR.
|
|
38
40
|
|
|
39
41
|
```
|
|
40
42
|
/eng-global-task-comment {TASK_MANAGER_KEY} {mensagem}
|
|
@@ -43,7 +45,7 @@ Só se `TASK_MANAGER` estiver preenchido com um vendor. Freelance → pular.
|
|
|
43
45
|
## MR / PR
|
|
44
46
|
|
|
45
47
|
```
|
|
46
|
-
|
|
48
|
+
jarvis vcs create-merge --source BRANCH --target BRANCH --title "..." --body-file path
|
|
47
49
|
```
|
|
48
50
|
|
|
49
51
|
Vendor pelo hostname de `git remote get-url origin` (ou `VERSION_CONTROL`).
|
|
@@ -10,7 +10,7 @@ Garantir que todo skill instalado tenha uma área reconhecida e avisar a pessoa,
|
|
|
10
10
|
|
|
11
11
|
Vale para todo comando `eng.*` e seus agentes, **ao iniciar**. A pasta de skills considerada é `$IDE/skills/`.
|
|
12
12
|
|
|
13
|
-
**Áreas reconhecidas:** `qa`, `data`, `ai`, `frontend`, `backend`, `
|
|
13
|
+
**Áreas reconhecidas:** `qa`, `data`, `ai`, `frontend`, `backend`, `automation`, `devops`, `platform`, `global`, `product`.
|
|
14
14
|
|
|
15
15
|
## Regras
|
|
16
16
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
> **Applies to:** HUB: all | POSITION: all | AREA: ENGINEERING | SQUAD: all
|
|
2
2
|
|
|
3
|
-
# Regras de Especializações por
|
|
3
|
+
# Regras de Especializações por Área
|
|
4
4
|
|
|
5
5
|
## Objetivo
|
|
6
6
|
|
|
@@ -8,12 +8,25 @@ Fazer todo comando `eng.*` carregar o **skill base** da área mais as **especial
|
|
|
8
8
|
|
|
9
9
|
## Escopo
|
|
10
10
|
|
|
11
|
-
Vale para qualquer comando `eng.*` e seus agentes,
|
|
11
|
+
Vale para qualquer comando `eng.*` e seus agentes, ao iniciar um trabalho que seja claramente de uma destas áreas. Se o trabalho envolve mais de uma, aplique a regra a cada uma. Se não é de nenhuma, não carregue nada.
|
|
12
|
+
|
|
13
|
+
| Área | Indicadores de quando se aplica |
|
|
14
|
+
|------|----------------------------------|
|
|
15
|
+
| backend | APIs, autenticação, workers, banco de dados, servidor |
|
|
16
|
+
| frontend | Componentes, interface, estilos, estado |
|
|
17
|
+
| qa | Testes, cobertura, quality gates, planejamento de testes |
|
|
18
|
+
| data | Pipelines, ETL/ELT, modelagem, contratos de dados, qualidade de dados |
|
|
19
|
+
| automation | RPA (robôs, automação de browser/fluxos de trabalho), web scraping, crawling, parsing |
|
|
20
|
+
| platform | Infraestrutura, cloud, IaC, contêineres, CI/CD, observabilidade, SRE, segurança de infra, FinOps |
|
|
12
21
|
|
|
13
22
|
| Área | Variável no `ENV.md` | Skill base |
|
|
14
23
|
|------|----------------------|------------|
|
|
15
24
|
| backend | `BACKEND_SPECIALIZATIONS` | `eng-backend` |
|
|
16
25
|
| frontend | `FRONTEND_SPECIALIZATIONS` | `eng-frontend` |
|
|
26
|
+
| qa | `QA_SPECIALIZATIONS` | `eng-qa` |
|
|
27
|
+
| data | `DATA_SPECIALIZATIONS` | `eng-data` |
|
|
28
|
+
| automation | `AUTOMATION_SPECIALIZATIONS` | `eng-automation` |
|
|
29
|
+
| platform | `PLATFORM_SPECIALIZATIONS` | `eng-platform` |
|
|
17
30
|
|
|
18
31
|
## Regras
|
|
19
32
|
|
|
@@ -53,8 +66,9 @@ Vale para qualquer comando `eng.*` e seus agentes, **ao iniciar um trabalho de b
|
|
|
53
66
|
|
|
54
67
|
## Exceções
|
|
55
68
|
|
|
56
|
-
-
|
|
57
|
-
- Skills
|
|
69
|
+
- `ai`, `devops`, `global` e `product` ainda não têm lista — fora do escopo desta regra até que apareça necessidade real (evolução futura).
|
|
70
|
+
- Skills dessas áreas não passam por esta regra.
|
|
71
|
+
- A área `security` foi descontinuada (2026-10-05): não existe mais skill própria nem lista. Segurança de infraestrutura e fundamentos de segurança da informação entram em `PLATFORM_SPECIALIZATIONS`; segurança de código de aplicação já é padrão embutido em `eng-backend`/`eng-frontend`. Ver `skills/security-skills-deleted.md`.
|
|
58
72
|
|
|
59
73
|
## Referências
|
|
60
74
|
|
|
@@ -88,10 +88,7 @@ Aplica-se quando a linguagem do projeto tem tipagem estática ou contratos expl
|
|
|
88
88
|
|
|
89
89
|
### Ferramentas disponíveis no framework
|
|
90
90
|
|
|
91
|
-
- **
|
|
92
|
-
Verificar: `ls node_modules/@testsprite 2>/dev/null || cat package.json | grep testsprite`
|
|
93
|
-
- **Stagehand** (`/eng-scraper-robot-builder`, `/eng-qa-e2e`): para testes de ponta a ponta em linguagem natural ou automação de fluxos complexos, descrevendo o fluxo em português.
|
|
94
|
-
Verificar: `cat package.json | grep stagehand`
|
|
91
|
+
- **Especialização de testes automatizados registrada em `QA_SPECIALIZATIONS`** (via a base `/eng-qa`): se o projeto tiver uma, usá-la para gerar e executar testes de componente e de ponta a ponta.
|
|
95
92
|
|
|
96
93
|
> Quando qualquer dessas ferramentas estiver disponível no projeto, **preferir sobre a implementação manual** — reduz o custo de manutenção e aumenta a cobertura mais rápido.
|
|
97
94
|
|
|
@@ -6,7 +6,7 @@ Convenções obrigatórias para a escrita e manutenção da suíte de testes E2E
|
|
|
6
6
|
Estas regras são carregadas automaticamente pelo `warm-up` quando `HUB=QA`.
|
|
7
7
|
|
|
8
8
|
> **Fonte de verdade**: este arquivo define o padrão para toda a sessão.
|
|
9
|
-
> A
|
|
9
|
+
> A especialização de Cypress registrada em `QA_SPECIALIZATIONS` assume que estas regras foram carregadas — não as redescobre.
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -174,17 +174,13 @@ Documentar o resultado no `{robot-tag}-robot.md` na seção de Visão Geral.
|
|
|
174
174
|
- Executar manualmente antes do PR em ambiente com acesso ao sistema-alvo
|
|
175
175
|
- Não incluir no pipeline de CI sem ambiente controlado
|
|
176
176
|
|
|
177
|
-
###
|
|
177
|
+
### Validação E2E (recomendada para fluxos de UI)
|
|
178
178
|
|
|
179
|
-
Quando o robô interage com interface visual (browser headless), usar
|
|
180
|
-
|
|
181
|
-
```
|
|
182
|
-
/eng-qa-testsprite
|
|
183
|
-
```
|
|
179
|
+
Quando o robô interage com interface visual (browser headless), usar a especialização de testes automatizados registrada em `QA_SPECIALIZATIONS` (via a base `eng-qa`) para gerar e executar testes do fluxo de automação:
|
|
184
180
|
|
|
185
181
|
- Útil para validar que o fluxo completo (login → navegação → extração) continua funcionando após mudanças
|
|
186
182
|
- Complementa os testes unitários com validação end-to-end contra o sistema-alvo em ambiente controlado
|
|
187
|
-
- Referência: `$IDE/skills/eng-qa
|
|
183
|
+
- Referência: `$IDE/skills/eng-qa/SKILL.md`
|
|
188
184
|
|
|
189
185
|
---
|
|
190
186
|
|
|
@@ -225,6 +221,5 @@ com justificativa explícita. Exceções recorrentes devem ser propostas como at
|
|
|
225
221
|
## Referências
|
|
226
222
|
|
|
227
223
|
- `$IDE/rules/engineering/eng.docs-scraping-rules.md` — padrão de documentação de robôs
|
|
228
|
-
- `$IDE/skills/eng-
|
|
229
|
-
- `$IDE/skills/eng-scraper-robot-builder/SKILL.md` — skill de automação via Stagehand
|
|
224
|
+
- `$IDE/skills/eng-automation/SKILL.md` — skill base de automação (+ especializações em `AUTOMATION_SPECIALIZATIONS`)
|
|
230
225
|
- `$IDE/agents/engineering/eng.rpa.agent.md` — agente especializado RPA (ARACHNE)
|
|
@@ -94,6 +94,6 @@ O workflow **deve sempre** terminar com:
|
|
|
94
94
|
- 🟡 Yellow: pode abrir PR com ressalvas documentadas
|
|
95
95
|
- 🔴 Red: bloqueado — listar o que impede o PR
|
|
96
96
|
|
|
97
|
-
2. **Comentário no card** com o
|
|
97
|
+
2. **Comentário no card só se a validação reprovar** (🔴 RED, bloqueio), com o motivo (via `/eng-global-task-comment`) — pular se freelance; GREEN e YELLOW não comentam
|
|
98
98
|
|
|
99
99
|
3. **Aguardar permissão explícita** do usuário para prosseguir para `/eng.pr`
|
|
@@ -44,6 +44,8 @@ O workflow **só é considerado completo** após:
|
|
|
44
44
|
2. O usuário revisar o documento
|
|
45
45
|
3. O usuário **aprovar explicitamente** para prosseguir
|
|
46
46
|
|
|
47
|
+
**Exceção (Advisor):** se o usuário escolheu usar o Advisor no início do `eng.start`, as questões em aberto são decididas pela sugestão dele e o gate segue a autonomia do `context.md`: com `autonomia: alta` o `start` apresenta o resumo e segue para o `eng.plan` sem aguardar; com `média` ou `baixa`, a aprovação explícita continua obrigatória.
|
|
48
|
+
|
|
47
49
|
---
|
|
48
50
|
|
|
49
51
|
## Comportamento Esperado
|