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
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Orquestrador do pipeline defensivo de segurança — encadeia threat-model, audit, triage e patch em um único fluxo guiado
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
recommended_model: claude-opus-4-6-20250529
|
|
6
|
+
model_tier: very_high
|
|
7
|
+
model_justification: Orquestração do pipeline completo exige raciocínio profundo para avaliar estado, decidir fases e interpretar outputs encadeados
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Workflow de Engenharia – Security Pipeline (Orquestrador)
|
|
11
|
+
|
|
12
|
+
## Objetivo
|
|
13
|
+
|
|
14
|
+
Guiar o SENTINEL pelo pipeline defensivo completo de segurança, encadeando os 4 estágios em um fluxo único. Elimina a necessidade de lembrar a sequência de comandos — o usuário informa onde quer começar e o orquestrador conduz.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Quando Usar Este Workflow
|
|
19
|
+
|
|
20
|
+
- Auditoria de segurança completa de um projeto ou feature
|
|
21
|
+
- Retomada de pipeline interrompido em sessão anterior
|
|
22
|
+
- Onboarding de segurança em projeto sem histórico de audit
|
|
23
|
+
- Quando o usuário pede "auditar segurança", "pipeline completo" ou "fechar o loop"
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Passo 0 — Detectar estado do pipeline
|
|
28
|
+
|
|
29
|
+
Antes de perguntar qualquer coisa, verificar o que já existe:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Artefatos de output
|
|
33
|
+
ls .security/outputs/ 2>/dev/null
|
|
34
|
+
# State de sessões anteriores
|
|
35
|
+
ls .security/state/ 2>/dev/null
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
| Artefato encontrado | Fase concluída |
|
|
39
|
+
|---------------------|----------------|
|
|
40
|
+
| `THREAT_MODEL.md` | Estágio 1 feito |
|
|
41
|
+
| `security-findings.json` | Estágio 2 feito |
|
|
42
|
+
| `triage.json` | Estágio 3 feito |
|
|
43
|
+
| `PATCHES/` com conteúdo | Estágio 4 feito |
|
|
44
|
+
|
|
45
|
+
Exibir o estado detectado antes de mostrar o menu.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Passo 1 — Menu de entrada
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Pipeline de Segurança — SENTINEL
|
|
53
|
+
|
|
54
|
+
Estado atual:
|
|
55
|
+
[✓/–] Estágio 1: Threat Model (.security/outputs/THREAT_MODEL.md)
|
|
56
|
+
[✓/–] Estágio 2: Audit (.security/outputs/security-findings.json)
|
|
57
|
+
[✓/–] Estágio 3: Triage (.security/outputs/triage.json)
|
|
58
|
+
[✓/–] Estágio 4: Patch (.security/outputs/PATCHES/)
|
|
59
|
+
|
|
60
|
+
Onde iniciar?
|
|
61
|
+
|
|
62
|
+
1. Completo — estágio 1 → 2 → 3 → 4
|
|
63
|
+
2. Audit+ — estágio 2 → 3 → 4 (já tenho ou pulo threat model)
|
|
64
|
+
3. Triage+ — estágio 3 → 4 (já tenho security-findings.json)
|
|
65
|
+
4. Só patch — estágio 4 (já tenho triage.json)
|
|
66
|
+
5. Retomar — continuar de onde parou (detectar pelo state/)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
> Se todos os artefatos existem, perguntar: "Pipeline completo encontrado. Reexecutar do início (--fresh) ou revisar outputs existentes?"
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Passo 2 — Executar os estágios selecionados
|
|
74
|
+
|
|
75
|
+
Executar cada estágio em sequência. Ao final de cada um, confirmar com o usuário antes de prosseguir para o próximo.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### Estágio 1 — Threat Model (`/eng-threat-model`)
|
|
80
|
+
|
|
81
|
+
**Skill**: `$IDE/skills/eng-threat-model/SKILL.md`
|
|
82
|
+
|
|
83
|
+
Perguntar modo de operação:
|
|
84
|
+
```
|
|
85
|
+
Modo do threat model:
|
|
86
|
+
1. bootstrap — deriva o modelo do código automaticamente
|
|
87
|
+
2. interview — walk interativo com você como owner do sistema
|
|
88
|
+
3. bootstrap-then-interview — bootstrap primeiro, entrevista refinadora depois
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Invocar o skill com o modo escolhido. Output esperado: `.security/outputs/THREAT_MODEL.md`.
|
|
92
|
+
|
|
93
|
+
Ao concluir:
|
|
94
|
+
```
|
|
95
|
+
✓ Threat model gerado em .security/outputs/THREAT_MODEL.md
|
|
96
|
+
Ameaças identificadas: {N}
|
|
97
|
+
Areas priorizadas para audit: {lista de focus-areas}
|
|
98
|
+
|
|
99
|
+
Prosseguir para Estágio 2 (Audit)? [s/n]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### Estágio 2 — Security Audit (`/eng.security-audit`)
|
|
105
|
+
|
|
106
|
+
**Workflow**: `$IDE/workflows/engineering/eng.security-audit.md`
|
|
107
|
+
|
|
108
|
+
Passar `THREAT_MODEL.md` como contexto se existir (Fase 0.5 do audit).
|
|
109
|
+
|
|
110
|
+
Perguntar escopo se não informado:
|
|
111
|
+
```
|
|
112
|
+
Escopo do audit:
|
|
113
|
+
1. Projeto completo (--all)
|
|
114
|
+
2. Pasta específica (ex: ./src/auth/)
|
|
115
|
+
3. Focus específico (owasp | secrets | supply-chain | headers | compliance)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Output esperado: `.security/outputs/security-findings.json` + `security-audit-report.md`.
|
|
119
|
+
|
|
120
|
+
Ao concluir:
|
|
121
|
+
```
|
|
122
|
+
✓ Audit concluído
|
|
123
|
+
Achados brutos: {N}
|
|
124
|
+
Distribuição: CRITICAL {n} | HIGH {n} | MEDIUM {n} | LOW {n}
|
|
125
|
+
Output: .security/outputs/security-findings.json
|
|
126
|
+
|
|
127
|
+
Prosseguir para Estágio 3 (Triage)? [s/n]
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
> Se N == 0: informar "Nenhum achado encontrado. Pipeline encerrado." e parar.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### Estágio 3 — Triage (`/eng-security-triage`)
|
|
135
|
+
|
|
136
|
+
**Skill**: `$IDE/skills/eng-security-triage/SKILL.md`
|
|
137
|
+
|
|
138
|
+
Input: `.security/outputs/security-findings.json`
|
|
139
|
+
|
|
140
|
+
Perguntar modo:
|
|
141
|
+
```
|
|
142
|
+
Modo de triage:
|
|
143
|
+
1. --auto — sem perguntas interativas (recomendado para pipelines CI)
|
|
144
|
+
2. interativo — coleta contexto de trust boundary e tolerância a ruído
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Output esperado: `.security/outputs/triage.json`
|
|
148
|
+
|
|
149
|
+
Ao concluir:
|
|
150
|
+
```
|
|
151
|
+
✓ Triage concluído
|
|
152
|
+
Achados confirmados: {N} | Falsos positivos descartados: {N}
|
|
153
|
+
Top 3 por exploitabilidade: {lista}
|
|
154
|
+
Output: .security/outputs/triage.json
|
|
155
|
+
|
|
156
|
+
Prosseguir para Estágio 4 (Patch)? [s/n]
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
> Se N confirmados == 0: informar "Nenhum achado confirmado após triage. Pipeline encerrado." e parar.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
### Estágio 4 — Patch (`/eng-security-patch`)
|
|
164
|
+
|
|
165
|
+
**Skill**: `$IDE/skills/eng-security-patch/SKILL.md`
|
|
166
|
+
|
|
167
|
+
Input: `.security/outputs/triage.json`
|
|
168
|
+
|
|
169
|
+
Perguntar escopo:
|
|
170
|
+
```
|
|
171
|
+
Gerar patches para:
|
|
172
|
+
1. Todos os achados confirmados
|
|
173
|
+
2. Apenas top N (ex: top 3 por severidade)
|
|
174
|
+
3. Achado específico (ID F-NNN)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Output esperado: `.security/outputs/PATCHES/bug_NN/{patch.diff, patch_result.json}` + `PATCHES.md`
|
|
178
|
+
|
|
179
|
+
Ao concluir:
|
|
180
|
+
```
|
|
181
|
+
✓ Pipeline de segurança concluído
|
|
182
|
+
|
|
183
|
+
Resumo:
|
|
184
|
+
Threat model : .security/outputs/THREAT_MODEL.md
|
|
185
|
+
Achados audit: .security/outputs/security-findings.json ({N} achados)
|
|
186
|
+
Triage : .security/outputs/triage.json ({N} confirmados)
|
|
187
|
+
Patches : .security/outputs/PATCHES/ ({N} diffs gerados)
|
|
188
|
+
Relatório : .security/outputs/security-audit-report.md
|
|
189
|
+
|
|
190
|
+
Próximos passos para o TL:
|
|
191
|
+
1. Revisar diffs em .security/outputs/PATCHES/
|
|
192
|
+
2. Aplicar patches aprovados: git apply .security/outputs/PATCHES/bug_NN/patch.diff
|
|
193
|
+
3. Criar cards no $TASK_MANAGER para achados sem patch (no_patch)
|
|
194
|
+
4. Commitar .security/outputs/ (excluir .security/state/ via .gitignore)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Regras
|
|
200
|
+
|
|
201
|
+
### Nunca
|
|
202
|
+
- Pular a confirmação do usuário entre estágios sem `--auto` explícito
|
|
203
|
+
- Avançar para Estágio 4 sem triage (patches gerados de achados não verificados têm alta taxa de erro)
|
|
204
|
+
- Aplicar diffs automaticamente — output é sempre texto inerte para revisão humana
|
|
205
|
+
|
|
206
|
+
### Sempre
|
|
207
|
+
- Detectar estado existente antes de mostrar o menu
|
|
208
|
+
- Informar quantos achados passaram de cada estágio
|
|
209
|
+
- Parar o pipeline se nenhum achado sobreviver a um estágio (audit vazio ou triage sem confirmados)
|
|
210
|
+
- Sugerir `.gitignore` para `.security/state/` se não estiver ignorado
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Workflow de Engenharia para Review de Seguranca em PRs/MRs (gate pre-merge)
|
|
3
|
+
globs:
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
recommended_model: claude-sonnet-4-6-20250514
|
|
6
|
+
model_tier: high
|
|
7
|
+
model_justification: Security review de PRs requer analise focada de mudancas especificas — nao exige raciocinio tao profundo quanto audit completo, mas precisa de precisao
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Workflow de Engenharia – Security Review (Gate Pre-Merge)
|
|
11
|
+
|
|
12
|
+
## Objetivo
|
|
13
|
+
|
|
14
|
+
Guiar o SENTINEL (ENG) na revisao de seguranca de PRs/MRs que tocam areas sensiveis do codigo — autenticacao, autorizacao, inputs, APIs, configs e permissoes. Funciona como gate de seguranca complementar ao code review normal.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Quando Usar Este Workflow
|
|
19
|
+
|
|
20
|
+
- PR modifica fluxos de autenticacao ou autorizacao
|
|
21
|
+
- PR adiciona ou modifica endpoints publicos
|
|
22
|
+
- PR toca em processamento de inputs (forms, uploads, parsing)
|
|
23
|
+
- PR modifica configs de seguranca (CORS, CSP, headers)
|
|
24
|
+
- PR adiciona dependencias novas
|
|
25
|
+
- PR toca em dados sensiveis (PII, financeiro)
|
|
26
|
+
- PR modifica permissoes ou roles (RBAC, guards)
|
|
27
|
+
- Tech Lead solicita security review explicito
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Pre-requisitos
|
|
32
|
+
|
|
33
|
+
### Entrada
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
/eng.security-review [referencia-do-pr]
|
|
37
|
+
|
|
38
|
+
Onde [referencia-do-pr] pode ser:
|
|
39
|
+
- Numero do PR/MR: #123
|
|
40
|
+
- URL: https://gitlab.com/org/repo/-/merge_requests/123
|
|
41
|
+
- Branch: feature/nova-auth
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Fase 1 – Scope
|
|
47
|
+
|
|
48
|
+
### 1.1 Identificar arquivos alterados
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Listar arquivos alterados no PR/branch
|
|
52
|
+
git diff --name-only main...HEAD 2>/dev/null || git diff --name-only origin/main...HEAD
|
|
53
|
+
|
|
54
|
+
# Filtrar arquivos sensiveis
|
|
55
|
+
git diff --name-only main...HEAD | grep -E "(auth|guard|middleware|session|login|permission|role|token|secret|password|cors|csp|helmet|security|\.env)" 2>/dev/null
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 1.2 Classificar risco do PR
|
|
59
|
+
|
|
60
|
+
| Indicador | Risco | Motivo |
|
|
61
|
+
|-----------|-------|--------|
|
|
62
|
+
| Toca em auth/guard/session | **ALTO** | Bypass pode dar acesso total |
|
|
63
|
+
| Adiciona endpoint publico | **ALTO** | Nova superficie de ataque |
|
|
64
|
+
| Modifica CORS/CSP/headers | **ALTO** | Misconfiguration afeta toda app |
|
|
65
|
+
| Processa input do usuario | **MEDIO** | Injection, XSS |
|
|
66
|
+
| Adiciona dependencia nova | **MEDIO** | Supply chain |
|
|
67
|
+
| Modifica roles/permissoes | **ALTO** | Escalacao de privilegio |
|
|
68
|
+
| Toca em dados sensiveis | **ALTO** | Data exposure |
|
|
69
|
+
| Refactoring sem mudanca de API | **BAIXO** | Risco minimo |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Fase 2 – Analysis
|
|
74
|
+
|
|
75
|
+
### 2.1 Checklist de seguranca por area
|
|
76
|
+
|
|
77
|
+
#### Auth e Sessions
|
|
78
|
+
- [ ] Tokens JWT: expiracao curta para access, refresh com rotacao
|
|
79
|
+
- [ ] Sessions: `httpOnly`, `secure`, `sameSite: strict`
|
|
80
|
+
- [ ] Password hashing: bcrypt/argon2 (nunca MD5/SHA1)
|
|
81
|
+
- [ ] Rate limiting em login/registro
|
|
82
|
+
- [ ] Logout invalida session/token no backend
|
|
83
|
+
|
|
84
|
+
#### Inputs e Validation
|
|
85
|
+
- [ ] Todos os inputs validados com schema (Zod, Joi, class-validator)
|
|
86
|
+
- [ ] Queries parametrizadas (nunca concatenacao SQL)
|
|
87
|
+
- [ ] Uploads: validar tipo, tamanho, nome de arquivo
|
|
88
|
+
- [ ] Rich text: sanitizado com allowlist (DOMPurify)
|
|
89
|
+
- [ ] URLs dinamicas: validadas contra allowlist (prevenir SSRF)
|
|
90
|
+
|
|
91
|
+
#### APIs e Endpoints
|
|
92
|
+
- [ ] Endpoints protegidos com auth guard (exceto os intencionalmente publicos)
|
|
93
|
+
- [ ] Autorizacao verificada (RBAC/permissions, nao apenas autenticacao)
|
|
94
|
+
- [ ] IDOR prevenido (usuario so acessa seus dados ou tem permissao)
|
|
95
|
+
- [ ] Rate limiting em endpoints sensiveis
|
|
96
|
+
- [ ] Erros nao vazam detalhes internos (stack traces, queries)
|
|
97
|
+
|
|
98
|
+
#### Configs e Headers
|
|
99
|
+
- [ ] CORS: origins especificas (nunca `*` em producao)
|
|
100
|
+
- [ ] CSP: configurado e restritivo
|
|
101
|
+
- [ ] HSTS: habilitado com `includeSubDomains`
|
|
102
|
+
- [ ] X-Frame-Options: `DENY` ou `SAMEORIGIN`
|
|
103
|
+
- [ ] Sem debug mode em producao
|
|
104
|
+
|
|
105
|
+
#### Dependencias
|
|
106
|
+
- [ ] `npm audit` sem vulnerabilidades HIGH/CRITICAL
|
|
107
|
+
- [ ] Lockfile atualizado e commitado
|
|
108
|
+
- [ ] Dependencia nova: verificar manutencao, downloads, issues
|
|
109
|
+
|
|
110
|
+
#### Dados Sensiveis
|
|
111
|
+
- [ ] PII criptografada em repouso
|
|
112
|
+
- [ ] Logs nao contem dados sensiveis (senhas, tokens, PII)
|
|
113
|
+
- [ ] Dados sensiveis nao expostos em respostas de API desnecessariamente
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Fase 2.5 — Verificacao Multi-Voto
|
|
118
|
+
|
|
119
|
+
Para cada achado identificado no checklist (Fase 2), spawnar **3 subagentes de voto** independentes.
|
|
120
|
+
|
|
121
|
+
> Subagentes de voto rodam **sem MCP** — apenas o texto do achado como contexto. Menos tool = veredicto mais deterministico e barato.
|
|
122
|
+
|
|
123
|
+
**Brief por subagente de voto:**
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
Voce e um revisor de seguranca independente. Avaliar este achado:
|
|
127
|
+
|
|
128
|
+
ACHADO: {titulo} em {arquivo}:{linha}
|
|
129
|
+
EVIDENCIA: {codigo ou config vulneravel}
|
|
130
|
+
CONTEXTO: PR #{referencia}, area {categoria}
|
|
131
|
+
|
|
132
|
+
Este e um achado real e exploravel no contexto deste PR?
|
|
133
|
+
|
|
134
|
+
Responda exatamente:
|
|
135
|
+
verdict: confirmed | rejected | inconclusive
|
|
136
|
+
reasoning: <uma linha explicando o veredicto>
|
|
137
|
+
confidence: <0.0-1.0>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Consolidacao dos votos:**
|
|
141
|
+
|
|
142
|
+
| Resultado | Criterio | Acao |
|
|
143
|
+
|---|---|---|
|
|
144
|
+
| Confirmado | >= 2/3 votos `confirmed` | Incluir no report com severidade original |
|
|
145
|
+
| Falso positivo | >= 2/3 votos `rejected` | Descartar — nao incluir |
|
|
146
|
+
| Inconcluso | Divergencia | Incluir com flag `[REVISAR]` para humano |
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Fase 3 – Verdict
|
|
151
|
+
|
|
152
|
+
### 3.1 Classificar resultado
|
|
153
|
+
|
|
154
|
+
| Verdict | Criterio | Acao |
|
|
155
|
+
|---------|----------|------|
|
|
156
|
+
| **APPROVED** | Nenhum achado HIGH/CRITICAL | Aprovar merge |
|
|
157
|
+
| **CHANGES REQUESTED** | Achados MEDIUM ou HIGH corrigiveis | Solicitar correcoes com evidencia |
|
|
158
|
+
| **BLOCKED** | Achado CRITICAL ou HIGH nao corrigivel trivialmente | Bloquear merge, escalar para TL |
|
|
159
|
+
|
|
160
|
+
### 3.2 Feedback estruturado
|
|
161
|
+
|
|
162
|
+
Para cada achado, comentar no PR com:
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
**[SECURITY - {SEVERIDADE}]** {titulo}
|
|
166
|
+
|
|
167
|
+
**Arquivo**: `path/to/file.ts:line`
|
|
168
|
+
**Vetor**: {tipo de vulnerabilidade}
|
|
169
|
+
**Evidencia**:
|
|
170
|
+
\`\`\`typescript
|
|
171
|
+
// codigo vulneravel
|
|
172
|
+
\`\`\`
|
|
173
|
+
|
|
174
|
+
**Correcao sugerida**:
|
|
175
|
+
\`\`\`typescript
|
|
176
|
+
// codigo seguro
|
|
177
|
+
\`\`\`
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Fase 4 – Documentation
|
|
183
|
+
|
|
184
|
+
### 4.1 Registrar decisao
|
|
185
|
+
|
|
186
|
+
```markdown
|
|
187
|
+
## Security Review Summary
|
|
188
|
+
|
|
189
|
+
**PR/MR**: {referencia}
|
|
190
|
+
**Reviewer**: SENTINEL (AI-assisted)
|
|
191
|
+
**Data**: {ISO-8601}
|
|
192
|
+
**Verdict**: APPROVED | CHANGES REQUESTED | BLOCKED
|
|
193
|
+
|
|
194
|
+
### Areas revisadas
|
|
195
|
+
- [ ] Auth e Sessions
|
|
196
|
+
- [ ] Inputs e Validation
|
|
197
|
+
- [ ] APIs e Endpoints
|
|
198
|
+
- [ ] Configs e Headers
|
|
199
|
+
- [ ] Dependencias
|
|
200
|
+
- [ ] Dados Sensiveis
|
|
201
|
+
|
|
202
|
+
### Achados
|
|
203
|
+
| # | Severidade | Descricao | Status |
|
|
204
|
+
|---|-----------|-----------|--------|
|
|
205
|
+
| 1 | {sev} | {descricao} | {aberto|corrigido} |
|
|
206
|
+
|
|
207
|
+
### Notas
|
|
208
|
+
{observacoes adicionais relevantes}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Fase 4.2 — Output JSON (security-findings.json)
|
|
214
|
+
|
|
215
|
+
Alem do summary markdown (Fase 4.1), escrever `security-findings.json` conforme `docs/SECURITY-ARTIFACTS-SCHEMA.md` secao 2.
|
|
216
|
+
|
|
217
|
+
Incluir apenas achados com `vote_result.verdict != rejected` (confirmed + inconclusive).
|
|
218
|
+
Este arquivo pode ser consumido por `eng-security-triage` para dedup e re-rank caso o PR faca parte de um audit maior.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Regras
|
|
223
|
+
|
|
224
|
+
### Nunca
|
|
225
|
+
- Aprovar um PR com achado CRITICAL sem correcao
|
|
226
|
+
- Bloquear um PR sem evidencia tecnica (nao bloquear por "sensacao")
|
|
227
|
+
- Fazer review de seguranca superficial (checklist mecanico sem analise)
|
|
228
|
+
- Ignorar dependencias novas adicionadas ao projeto
|
|
229
|
+
|
|
230
|
+
### Sempre
|
|
231
|
+
- Analisar o diff completo, nao apenas os arquivos marcados como "sensiveis"
|
|
232
|
+
- Fornecer correcao sugerida para cada achado (nao apenas apontar o problema)
|
|
233
|
+
- Considerar o contexto: um endpoint interno tem risco diferente de um publico
|
|
234
|
+
- Comunicar achados CRITICAL ao TL imediatamente (nao esperar o review terminar)
|
|
235
|
+
- Verificar se testes de seguranca foram adicionados para mudancas em auth
|