@pathbit/agentdevkit 0.0.10 → 0.0.12
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/.pbai4devs/COMPATIBILIDADE.md +6 -0
- package/.pbai4devs/INSTRUCTIONS.md +3 -0
- package/.pbai4devs/agents/README.md +19 -0
- package/.pbai4devs/agents/auditor-seguranca/AGENT.md +20 -0
- package/.pbai4devs/agents/auditor-seguranca/antigravity.yaml +8 -0
- package/.pbai4devs/agents/auditor-seguranca/claude.yaml +5 -0
- package/.pbai4devs/agents/auditor-seguranca/cursor.yaml +5 -0
- package/.pbai4devs/agents/auditor-seguranca/gemini.yaml +6 -0
- package/.pbai4devs/agents/auditor-seguranca/github.yaml +5 -0
- package/.pbai4devs/agents/auditor-seguranca/kimi-code.yaml +5 -0
- package/.pbai4devs/agents/auditor-seguranca/mimocode.yaml +8 -0
- package/.pbai4devs/agents/auditor-seguranca/opencode.yaml +11 -0
- package/.pbai4devs/agents/documentador/AGENT.md +19 -0
- package/.pbai4devs/agents/documentador/antigravity.yaml +8 -0
- package/.pbai4devs/agents/documentador/claude.yaml +5 -0
- package/.pbai4devs/agents/documentador/cursor.yaml +5 -0
- package/.pbai4devs/agents/documentador/gemini.yaml +6 -0
- package/.pbai4devs/agents/documentador/github.yaml +5 -0
- package/.pbai4devs/agents/documentador/kimi-code.yaml +5 -0
- package/.pbai4devs/agents/documentador/mimocode.yaml +8 -0
- package/.pbai4devs/agents/documentador/opencode.yaml +11 -0
- package/.pbai4devs/agents/implementador/AGENT.md +20 -0
- package/.pbai4devs/agents/implementador/antigravity.yaml +8 -0
- package/.pbai4devs/agents/implementador/claude.yaml +5 -0
- package/.pbai4devs/agents/implementador/cursor.yaml +5 -0
- package/.pbai4devs/agents/implementador/gemini.yaml +6 -0
- package/.pbai4devs/agents/implementador/github.yaml +5 -0
- package/.pbai4devs/agents/implementador/kimi-code.yaml +5 -0
- package/.pbai4devs/agents/implementador/mimocode.yaml +8 -0
- package/.pbai4devs/agents/implementador/opencode.yaml +11 -0
- package/.pbai4devs/agents/planejador/AGENT.md +19 -0
- package/.pbai4devs/agents/planejador/antigravity.yaml +8 -0
- package/.pbai4devs/agents/planejador/claude.yaml +5 -0
- package/.pbai4devs/agents/planejador/cursor.yaml +5 -0
- package/.pbai4devs/agents/planejador/gemini.yaml +6 -0
- package/.pbai4devs/agents/planejador/github.yaml +5 -0
- package/.pbai4devs/agents/planejador/kimi-code.yaml +5 -0
- package/.pbai4devs/agents/planejador/mimocode.yaml +8 -0
- package/.pbai4devs/agents/planejador/opencode.yaml +11 -0
- package/.pbai4devs/agents/validador/AGENT.md +19 -0
- package/.pbai4devs/agents/validador/antigravity.yaml +8 -0
- package/.pbai4devs/agents/validador/claude.yaml +5 -0
- package/.pbai4devs/agents/validador/cursor.yaml +5 -0
- package/.pbai4devs/agents/validador/gemini.yaml +6 -0
- package/.pbai4devs/agents/validador/github.yaml +5 -0
- package/.pbai4devs/agents/validador/kimi-code.yaml +5 -0
- package/.pbai4devs/agents/validador/mimocode.yaml +8 -0
- package/.pbai4devs/agents/validador/opencode.yaml +11 -0
- package/.pbai4devs/commands/README.md +13 -0
- package/.pbai4devs/commands/atualizar-documentacao/COMMAND.md +17 -0
- package/.pbai4devs/commands/auditar-seguranca/COMMAND.md +25 -0
- package/.pbai4devs/commands/implementar-entrega/COMMAND.md +20 -0
- package/.pbai4devs/commands/planejar-entrega/COMMAND.md +17 -0
- package/.pbai4devs/commands/preparar-seguranca/COMMAND.md +22 -0
- package/.pbai4devs/commands/validar-entrega/COMMAND.md +18 -0
- package/.pbai4devs/commands/verificar-dependencias/COMMAND.md +18 -0
- package/.pbai4devs/commands/verificar-segredos/COMMAND.md +19 -0
- package/.pbai4devs/external-skills/CATALOG.json +39 -1
- package/.pbai4devs/external-skills/README.md +13 -0
- package/.pbai4devs/rules/README.md +4 -0
- package/.pbai4devs/rules/documentacao/RULE.md +2 -0
- package/.pbai4devs/rules/execucao-local/RULE.md +20 -0
- package/.pbai4devs/rules/execucao-local/cursor.yaml +4 -0
- package/.pbai4devs/rules/seguranca/RULE.md +19 -0
- package/.pbai4devs/rules/seguranca/cursor.yaml +4 -0
- package/.pbai4devs/scripts/README.md +1 -0
- package/.pbai4devs/scripts/auditar-seguranca/README.md +57 -0
- package/.pbai4devs/scripts/auditar-seguranca/SCRIPT.mjs +411 -0
- package/.pbai4devs/scripts/auditar-seguranca/database-zip.mjs +143 -0
- package/.pbai4devs/scripts/auditar-seguranca/rules/javascript.yml +50 -0
- package/.pbai4devs/scripts/auditar-seguranca/tests/SMOKE.mjs +74 -0
- package/.pbai4devs/scripts/auditar-seguranca/tests/TEST.mjs +247 -0
- package/.pbai4devs/scripts/auditar-seguranca/tests/zip-fixture.mjs +45 -0
- package/.pbai4devs/scripts/lib/README.md +4 -0
- package/.pbai4devs/scripts/lib/gitignore.mjs +41 -4
- package/.pbai4devs/scripts/lib/managed-content.mjs +86 -0
- package/.pbai4devs/scripts/lib/managed-toml.mjs +192 -0
- package/.pbai4devs/scripts/lib/native-release.mjs +193 -0
- package/.pbai4devs/scripts/preparar-ferramentas/README.md +8 -2
- package/.pbai4devs/scripts/preparar-ferramentas/SCRIPT.mjs +46 -16
- package/.pbai4devs/scripts/preparar-ferramentas/tests/TEST.mjs +2 -0
- package/.pbai4devs/scripts/preparar-ferramentas/tests/native-release.test.mjs +103 -0
- package/.pbai4devs/scripts/sincronizar-agentes/README.md +9 -7
- package/.pbai4devs/scripts/sincronizar-agentes/SCRIPT.mjs +133 -38
- package/.pbai4devs/scripts/sincronizar-agentes/tests/COEXISTENCE.mjs +25 -15
- package/.pbai4devs/scripts/sincronizar-agentes/tests/HUMAN_OWNERSHIP.mjs +7 -2
- package/.pbai4devs/scripts/sincronizar-agentes/tests/LOCAL_IGNORE.mjs +3 -3
- package/.pbai4devs/scripts/sincronizar-agentes/tests/MANAGED_CONTENT.mjs +318 -0
- package/.pbai4devs/scripts/sincronizar-agentes/tests/TEST.mjs +47 -26
- package/.pbai4devs/scripts/verificar-recursos/SCRIPT.mjs +43 -7
- package/.pbai4devs/scripts/verificar-recursos/tests/TEST.mjs +3 -2
- package/.pbai4devs/skills/README.md +10 -2
- package/.pbai4devs/skills/projeto/preparar-ferramentas/SKILL.md +5 -1
- package/.pbai4devs/skills/seguranca/REFERENCE.md +104 -0
- package/.pbai4devs/skills/seguranca/corrigir-vulnerabilidade/SKILL.md +27 -0
- package/.pbai4devs/skills/seguranca/modelar-ameacas/SKILL.md +25 -0
- package/.pbai4devs/skills/seguranca/revisar-autorizacao/SKILL.md +29 -0
- package/.pbai4devs/skills/seguranca/revisar-seguranca/SKILL.md +27 -0
- package/.pbai4devs/templates/README.md +2 -0
- package/.pbai4devs/templates/revisao-seguranca/TEMPLATE.md +33 -0
- package/.pbai4devs/tools/README.md +11 -3
- package/.pbai4devs/tools/gitleaks/README.md +22 -0
- package/.pbai4devs/tools/gitleaks/SCRIPT.mjs +5 -0
- package/.pbai4devs/tools/gitleaks/TOOL.json +67 -0
- package/.pbai4devs/tools/opengrep/README.md +22 -0
- package/.pbai4devs/tools/opengrep/SCRIPT.mjs +5 -0
- package/.pbai4devs/tools/opengrep/TOOL.json +71 -0
- package/.pbai4devs/tools/osv-scanner/README.md +23 -0
- package/.pbai4devs/tools/osv-scanner/SCRIPT.mjs +5 -0
- package/.pbai4devs/tools/osv-scanner/TOOL.json +70 -0
- package/CHANGELOG.md +17 -0
- package/README.en.md +3 -2
- package/README.es.md +3 -2
- package/README.md +8 -3
- package/docs/README.md +6 -3
- package/docs/guides/README.md +1 -0
- package/docs/guides/cli.md +2 -1
- package/docs/guides/installation.md +25 -8
- package/docs/guides/resources.md +48 -1
- package/docs/guides/security-references.md +97 -0
- package/docs/guides/security.md +32 -0
- package/docs/guides/troubleshooting.md +8 -5
- package/docs/maintainers/maintenance.md +12 -0
- package/docs/maintainers/packages.md +2 -2
- package/docs/product/design.md +10 -3
- package/docs/product/prd.md +5 -1
- package/docs/product/roadmap.md +4 -0
- package/docs/specs/README.md +4 -0
- package/docs/specs/additive-integration/README.md +9 -0
- package/docs/specs/additive-integration/SPEC.md +53 -0
- package/docs/specs/security-ecosystem/README.md +9 -0
- package/docs/specs/security-ecosystem/SPEC.md +53 -0
- package/package.json +1 -1
- package/src/install.mjs +139 -63
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
import { existsSync, lstatSync, readFileSync, readdirSync } from 'node:fs';
|
|
3
3
|
import { basename, dirname, extname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
4
4
|
import { spawnSync } from 'node:child_process';
|
|
5
|
+
import { createHash } from 'node:crypto';
|
|
5
6
|
import { isMain, projectRoot, requireNode } from '../lib/runtime.mjs';
|
|
6
7
|
import { buildCatalog } from '../lib/catalog.mjs';
|
|
7
8
|
import { isGeneratedOutput } from '../lib/gitignore.mjs';
|
|
9
|
+
import { canonicalEntrypoint, extractManagedBlock, managedBlockDigest } from '../lib/managed-content.mjs';
|
|
10
|
+
import { extractTomlManagedBlock, tomlManagedBlockDigest } from '../lib/managed-toml.mjs';
|
|
8
11
|
|
|
9
12
|
const fail = message => { throw new Error(message); };
|
|
10
13
|
const normalize = value => value.split(sep).join('/');
|
|
@@ -29,28 +32,38 @@ function checkedPath(root, path) {
|
|
|
29
32
|
|
|
30
33
|
function ownership(root) {
|
|
31
34
|
const file = checkedPath(root, '.pbai4devs/estado/agentdevkit.json');
|
|
32
|
-
|
|
35
|
+
const derivedFile = checkedPath(root, '.pbai4devs/estado/derived.json');
|
|
36
|
+
if (!checkedStat(root, file) && !checkedStat(root, derivedFile)) return null;
|
|
33
37
|
const readState = location => {
|
|
34
38
|
try { return JSON.parse(readFileSync(location, 'utf8')); }
|
|
35
39
|
catch { fail(`Estado invalido: ${normalize(relative(root, location))}`); }
|
|
36
40
|
};
|
|
37
|
-
const state = readState(file);
|
|
41
|
+
const state = checkedStat(root, file) ? readState(file) : { schemaVersion: 1, files: {}, blocks: {} };
|
|
38
42
|
const validMap = value => value && typeof value === 'object' && !Array.isArray(value)
|
|
39
43
|
&& Object.values(value).every(hash => typeof hash === 'string' && /^[a-f0-9]{64}$/.test(hash));
|
|
40
44
|
if (state?.schemaVersion !== 1 || !validMap(state.files) || !validMap(state.blocks)) fail('Estado de propriedade invalido.');
|
|
41
45
|
const files = { ...state.files };
|
|
42
|
-
const
|
|
46
|
+
const blocks = { ...state.blocks };
|
|
43
47
|
if (checkedStat(root, derivedFile)) {
|
|
44
48
|
const derived = readState(derivedFile);
|
|
45
|
-
if (derived?.schemaVersion !== 1 || !validMap(derived.entries) || Object.keys(derived.entries).some(path => !
|
|
49
|
+
if (derived?.schemaVersion !== 1 || !validMap(derived.entries) || Object.keys(derived.entries).some(path => !canonicalEntrypoint(path))
|
|
50
|
+
|| !validMap(derived.files ?? {}) || !validMap(derived.blocks ?? {})
|
|
51
|
+
|| !Array.isArray(derived.removedBlocks ?? []) || (derived.removedBlocks ?? []).some(path => typeof path !== 'string')
|
|
46
52
|
|| !validMap(derived.outputs ?? {}) || Object.keys(derived.outputs ?? {}).some(path => !/^\.[a-z0-9][a-z0-9-]*\/(?:skills|rules|agents)\.json$/.test(path))) fail('Estado de entradas derivadas invalido.');
|
|
47
|
-
Object.assign(files, derived.entries, derived.outputs);
|
|
53
|
+
Object.assign(files, derived.entries, derived.outputs, derived.files);
|
|
54
|
+
for (const [path, hash] of Object.entries({ ...derived.entries, ...derived.files })) {
|
|
55
|
+
const location = checkedPath(root, path);
|
|
56
|
+
if (checkedStat(root, location)?.isFile() && createHash('sha256').update(readFileSync(location)).digest('hex') === hash) delete blocks[path];
|
|
57
|
+
}
|
|
58
|
+
for (const path of derived.removedBlocks ?? []) { checkedPath(root, path); delete blocks[path]; }
|
|
59
|
+
Object.assign(blocks, derived.blocks);
|
|
48
60
|
}
|
|
49
|
-
for (const path of
|
|
61
|
+
for (const path of Object.keys(blocks)) delete files[path];
|
|
62
|
+
for (const path of [...Object.keys(files), ...Object.keys(blocks)]) {
|
|
50
63
|
const location = checkedPath(root, path);
|
|
51
64
|
if (!checkedStat(root, location)?.isFile()) fail(`Arquivo gerenciado ausente: ${path}`);
|
|
52
65
|
}
|
|
53
|
-
return { files, blocks
|
|
66
|
+
return { files, blocks };
|
|
54
67
|
}
|
|
55
68
|
|
|
56
69
|
export function registryRoots(root) {
|
|
@@ -151,6 +164,28 @@ export function localLinkTargets(text) {
|
|
|
151
164
|
}).filter(Boolean);
|
|
152
165
|
}
|
|
153
166
|
|
|
167
|
+
export function checkManagedBlocks(root, blocks) {
|
|
168
|
+
for (const [path, expected] of Object.entries(blocks)) {
|
|
169
|
+
const toml = extname(path).toLowerCase() === '.toml';
|
|
170
|
+
if (!toml && !['.md', '.mdc'].includes(extname(path).toLowerCase())) continue;
|
|
171
|
+
const file = checkedPath(root, path), bytes = readFileSync(file);
|
|
172
|
+
if ((toml ? tomlManagedBlockDigest(bytes) : managedBlockDigest(bytes)) !== expected) fail(`Bloco AgentDevKit alterado ou ausente: ${path}`);
|
|
173
|
+
const block = toml ? extractTomlManagedBlock(bytes) : extractManagedBlock(bytes);
|
|
174
|
+
const imports = [...block.matchAll(/^@(?:\{([^}\r\n]+)\}|([^\r\n]+))$/gm)]
|
|
175
|
+
.filter(match => !match[2]?.startsWith('['))
|
|
176
|
+
.map(match => ({ target: match[1] || match[2], base: match[1] ? root : dirname(file) }));
|
|
177
|
+
for (const { target, base } of [...localLinkTargets(block).map(target => ({ target, base: dirname(file) })), ...imports]) {
|
|
178
|
+
const destination = resolve(base, target), local = normalize(relative(root, destination));
|
|
179
|
+
if (!local || isAbsolute(local) || local === '..' || local.startsWith('../')) fail(`Referencia fora do projeto: ${path}`);
|
|
180
|
+
if (canonicalEntrypoint(local)) {
|
|
181
|
+
// The user's root entry may be an existing link; do not follow it.
|
|
182
|
+
const item = lstatSync(destination);
|
|
183
|
+
if (!item.isFile() && !item.isSymbolicLink()) fail(`Referencia indisponivel: ${path}`);
|
|
184
|
+
} else if (!checkedStat(root, checkedPath(root, local))?.isFile()) fail(`Referencia indisponivel: ${path}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
154
189
|
export function checkMarkdown(root, files, { virtualPaths = new Set() } = {}) {
|
|
155
190
|
for (const file of files) {
|
|
156
191
|
const label = normalize(relative(root, file));
|
|
@@ -237,6 +272,7 @@ export function verifyResources({ root = projectRoot, sourceOnly = false, synchr
|
|
|
237
272
|
const files = collectMarkdown(root, registry, { installed });
|
|
238
273
|
const virtualPaths = new Set(sourceOnly ? [...built.outputs.keys(), '.pbai4devs/espelhos.conf'] : []);
|
|
239
274
|
checkMarkdown(root, files, { virtualPaths });
|
|
275
|
+
if (installed) checkManagedBlocks(root, installed.blocks);
|
|
240
276
|
checkResourceReferences(root, files);
|
|
241
277
|
checkAgentExtras(root, registry.agents, { installed });
|
|
242
278
|
return { files, messages: [...lint(root, files), 'recursos=passed'] };
|
|
@@ -162,10 +162,11 @@ test('instalação confere entradas derivadas sem aplicar lint a blocos humanos'
|
|
|
162
162
|
const contents = document('# Entrada gerada\n');
|
|
163
163
|
file('GEMINI.md', contents);
|
|
164
164
|
file('.pbai4devs/estado/derived.json', JSON.stringify({ schemaVersion: 1, entries: { 'GEMINI.md': createHash('sha256').update(contents).digest('hex') } }));
|
|
165
|
-
|
|
165
|
+
const block = '<!-- BEGIN AGENTDEVKIT -->\nLeia as fontes.\n<!-- END AGENTDEVKIT -->';
|
|
166
|
+
file('AGENTS.md', `# Instruções humanas sem frontmatter\n\n${block}\n`);
|
|
166
167
|
const statePath = join(root, '.pbai4devs/estado/agentdevkit.json');
|
|
167
168
|
const state = JSON.parse(readFileSync(statePath, 'utf8'));
|
|
168
|
-
state.blocks['AGENTS.md'] = createHash('sha256').update(
|
|
169
|
+
state.blocks['AGENTS.md'] = createHash('sha256').update(block).digest('hex');
|
|
169
170
|
state.files['.pbai4devs/skills/exemplo/SKILL.md'] = createHash('sha256').update('fonte anterior').digest('hex');
|
|
170
171
|
writeFileSync(statePath, JSON.stringify(state));
|
|
171
172
|
const result = verify(root);
|
|
@@ -4,13 +4,19 @@ description: Finalidade e criação de skills compartilhadas.
|
|
|
4
4
|
|
|
5
5
|
# Skills
|
|
6
6
|
|
|
7
|
-
São procedimentos reutilizáveis, organizados
|
|
8
|
-
|
|
7
|
+
São procedimentos reutilizáveis, organizados por assunto. Cada skill usa
|
|
8
|
+
`<grupo>/<nome>/SKILL.md` com nome e descrição no YAML. A skill orienta decisões;
|
|
9
|
+
o agente responsável pode acionar comandos, scripts e outros perfis conforme
|
|
10
|
+
as capacidades do cliente.
|
|
9
11
|
|
|
10
12
|
- `git`: operações de versionamento.
|
|
11
13
|
- `projeto`: configuração, criação e manutenção dos recursos.
|
|
12
14
|
- `produto`: PRD, experiência e design técnico.
|
|
13
15
|
- `specs`: especificações, roadmap e implementação.
|
|
16
|
+
- `seguranca`: [revisão](seguranca/revisar-seguranca/SKILL.md),
|
|
17
|
+
[autorização](seguranca/revisar-autorizacao/SKILL.md),
|
|
18
|
+
[ameaças](seguranca/modelar-ameacas/SKILL.md) e
|
|
19
|
+
[correção](seguranca/corrigir-vulnerabilidade/SKILL.md).
|
|
14
20
|
|
|
15
21
|
Use `criar-skill` quando uma tarefa recorrente precisar de decisões próprias;
|
|
16
22
|
use `criar-recurso` para encontrar um fluxo existente antes de criar outro.
|
|
@@ -21,4 +27,6 @@ Use [proximos-passos](projeto/proximos-passos/SKILL.md) para orientar a
|
|
|
21
27
|
continuidade conforme a fase e as pendências reais.
|
|
22
28
|
|
|
23
29
|
O [guia compartilhado](../INSTRUCTIONS.md) orienta o uso das skills.
|
|
30
|
+
As skills de segurança integram a instalação do kit; os scanners exigem
|
|
31
|
+
[preparo explícito](../commands/preparar-seguranca/COMMAND.md).
|
|
24
32
|
Ao alterar o inventário, sincronize os índices e apontamentos locais.
|
|
@@ -24,7 +24,8 @@ instalador compartilhado.
|
|
|
24
24
|
No preparo inicial, execute `preparar-ferramentas setup` pelo seletor:
|
|
25
25
|
instala e verifica todas as ferramentas compatíveis, sem atualizar as saudáveis.
|
|
26
26
|
Aceita seleção por nome/grupo; relate falhas e itens não aplicáveis.
|
|
27
|
-
Para
|
|
27
|
+
Para npm, `update` consulta `latest` oficial; ferramentas nativas de segurança
|
|
28
|
+
seguem o pin revisado em `TOOL.json`, sem atualização silenciosa para outro binário.
|
|
28
29
|
`install` reutiliza uma instalação saudável; `check` verifica sem rede;
|
|
29
30
|
`info` mostra a configuração; `run <nome> [argumentos]` executa sem instalar.
|
|
30
31
|
Sem ação, mostre ajuda. Não interprete ausência de argumentos como instalação.
|
|
@@ -41,6 +42,9 @@ Em `skills`, use `find` ou `add <origem> --list`; incorporações passam por
|
|
|
41
42
|
O shell virtual não substitui testes reais. Só ative proxy, certificados,
|
|
42
43
|
serviços ou gravação quando necessários à tarefa e com dependências preparadas.
|
|
43
44
|
|
|
45
|
+
Para segurança, use [preparar-seguranca](../../../commands/preparar-seguranca/COMMAND.md).
|
|
46
|
+
Preparar o CLI e atualizar bases são operações separadas da análise offline.
|
|
47
|
+
|
|
44
48
|
Antes de usar agent-desktop, leia `skills get desktop` e `skills get platform`
|
|
45
49
|
da versão instalada e confira `status`. Para agent-browser, leia
|
|
46
50
|
`skills get core` e `--help` da versão instalada e
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Segurança com scanners locais, triagem e provas de controles.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Segurança local
|
|
6
|
+
|
|
7
|
+
A instalação do kit inclui skills, regras, comandos e perfis de segurança.
|
|
8
|
+
Os scanners são preparados por uma ação explícita; os arquivos de instrução
|
|
9
|
+
não iniciam auditorias, serviços ou downloads em segundo plano.
|
|
10
|
+
|
|
11
|
+
## Como os componentes trabalham juntos
|
|
12
|
+
|
|
13
|
+
O comando [auditar-seguranca][audit] organiza o trabalho. A
|
|
14
|
+
[skill de revisão][review] define como analisar e o [auditor][auditor] faz a
|
|
15
|
+
triagem contextual. O script executa ferramentas e produz evidências; as
|
|
16
|
+
[regras][rules] orientam todas as etapas. Veja o [catálogo de comandos](../../commands/README.md).
|
|
17
|
+
|
|
18
|
+
| Ferramenta | Pergunta que ajuda a responder |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| [Gitleaks][gitleaks] | Há indícios de segredos nos arquivos analisados? |
|
|
21
|
+
| [OSV-Scanner][osv] | A base local conhece falhas nas versões das dependências? |
|
|
22
|
+
| [Opengrep][opengrep] | O código corresponde aos padrões das regras locais? |
|
|
23
|
+
|
|
24
|
+
As ferramentas executam localmente e não exigem conta ou assinatura.
|
|
25
|
+
Versões revisadas e suas origens ficam nos `TOOL.json`. Downloads públicos de
|
|
26
|
+
binários e bases são separados da análise. A política do cliente/modelo de IA
|
|
27
|
+
continua sendo própria; não coloque valores secretos no contexto da conversa.
|
|
28
|
+
|
|
29
|
+
## Preparar e executar
|
|
30
|
+
|
|
31
|
+
Use Node.js 24+ e o projeto autorizado. O fluxo de
|
|
32
|
+
[preparar-seguranca][prepare] instala os scanners e confere seu funcionamento:
|
|
33
|
+
|
|
34
|
+
```console
|
|
35
|
+
node .pbai4devs/scripts/preparar-ferramentas/SCRIPT.mjs setup security
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Para dependências, baixe a base dos ecossistemas realmente utilizados. Exemplo
|
|
39
|
+
para npm; substitua por `Go` ou pela seleção suportada que corresponda ao projeto:
|
|
40
|
+
|
|
41
|
+
```console
|
|
42
|
+
node .pbai4devs/scripts/auditar-seguranca/SCRIPT.mjs update-data --ecosystems npm
|
|
43
|
+
node .pbai4devs/scripts/auditar-seguranca/SCRIPT.mjs check
|
|
44
|
+
node .pbai4devs/scripts/auditar-seguranca/SCRIPT.mjs run
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`run` usa os três checks: `secrets`, `dependencies` e `sast`. Para limitar,
|
|
48
|
+
use [verificar-segredos][secrets] ou [verificar-dependencias][dependencies].
|
|
49
|
+
A análise usa dados locais; base ausente não autoriza enviar o projeto a uma API.
|
|
50
|
+
Confira no relatório a versão da ferramenta, a base e o escopo efetivamente lido.
|
|
51
|
+
|
|
52
|
+
## O que ainda precisa ser provado
|
|
53
|
+
|
|
54
|
+
O [artigo sobre falhas recorrentes][article] motiva os temas abaixo. As
|
|
55
|
+
verificações dependem da arquitetura e não equivalem a uma certificação.
|
|
56
|
+
|
|
57
|
+
| Tema | Prova necessária no projeto |
|
|
58
|
+
| --- | --- |
|
|
59
|
+
| Autorização no servidor | API direta recusa visitante e papel insuficiente. |
|
|
60
|
+
| Acesso por identificador | Usuário A não lê ou altera o recurso de B. |
|
|
61
|
+
| Isolamento dos dados | Policies/RLS ou Security Rules restringem o acesso. |
|
|
62
|
+
| Segredos | Credenciais privadas não chegam a fontes, bundles ou logs. |
|
|
63
|
+
| Entradas e abuso | Testes de validação, saída, upload e limites do fluxo. |
|
|
64
|
+
|
|
65
|
+
RLS é um controle de PostgreSQL usado pelo Supabase; Firebase tem Security Rules.
|
|
66
|
+
SDKs privilegiados podem atravessar esses controles e precisam de autorização
|
|
67
|
+
no servidor. Esconder um botão de administrador não protege a API.
|
|
68
|
+
|
|
69
|
+
Use [revisar-autorizacao][authorization] com identidades sintéticas distintas,
|
|
70
|
+
testes negativos e dados locais. Para entradas, prefira consultas parametrizadas,
|
|
71
|
+
codificação de saída por contexto e limites de upload; sanitização genérica não
|
|
72
|
+
resolve todos os casos. Teste a interface no navegador quando ela existir.
|
|
73
|
+
Sem aplicação executável, registre essas provas como **não verificadas**.
|
|
74
|
+
|
|
75
|
+
## Interpretar e corrigir
|
|
76
|
+
|
|
77
|
+
O runner retorna `0` sem achados, `1` com achados e `2` em falha ou verificação
|
|
78
|
+
incompleta. Leia o estado de cada check: não aplicável e não executado não
|
|
79
|
+
significam aprovado. Regras locais e formatos suportados limitam a cobertura.
|
|
80
|
+
|
|
81
|
+
O relatório fica em `.agent-tests/security/<execucao>/report.json`, sem valores
|
|
82
|
+
secretos. O auditor distingue suspeitas, falhas confirmadas e falsos positivos.
|
|
83
|
+
Use [modelar-ameacas][threats] para novos fluxos e
|
|
84
|
+
[corrigir-vulnerabilidade][fix] para reparar a causa com teste de regressão.
|
|
85
|
+
Uma credencial real exposta precisa de revogação pelo responsável; não a teste
|
|
86
|
+
contra serviços externos. Feche a entrega com [revisão independente][gate].
|
|
87
|
+
|
|
88
|
+
[Skills](../README.md) · [Ferramentas](../../tools/README.md)
|
|
89
|
+
|
|
90
|
+
[audit]: ../../commands/auditar-seguranca/COMMAND.md
|
|
91
|
+
[review]: ../../skills/seguranca/revisar-seguranca/SKILL.md
|
|
92
|
+
[auditor]: ../../agents/auditor-seguranca/AGENT.md
|
|
93
|
+
[rules]: ../../rules/seguranca/RULE.md
|
|
94
|
+
[gitleaks]: ../../tools/gitleaks/README.md
|
|
95
|
+
[osv]: ../../tools/osv-scanner/README.md
|
|
96
|
+
[opengrep]: ../../tools/opengrep/README.md
|
|
97
|
+
[prepare]: ../../commands/preparar-seguranca/COMMAND.md
|
|
98
|
+
[secrets]: ../../commands/verificar-segredos/COMMAND.md
|
|
99
|
+
[dependencies]: ../../commands/verificar-dependencias/COMMAND.md
|
|
100
|
+
[authorization]: ../../skills/seguranca/revisar-autorizacao/SKILL.md
|
|
101
|
+
[threats]: ../../skills/seguranca/modelar-ameacas/SKILL.md
|
|
102
|
+
[fix]: ../../skills/seguranca/corrigir-vulnerabilidade/SKILL.md
|
|
103
|
+
[gate]: ../../commands/revisar-entrega/COMMAND.md
|
|
104
|
+
[article]: https://manodeyvin.com.br/p/5-vacilacoes-de-seguranca-que-a-ia
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: corrigir-vulnerabilidade
|
|
3
|
+
description: Corrige um achado validado e prova que a causa foi removida.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Corrigir vulnerabilidade
|
|
7
|
+
|
|
8
|
+
Receba o achado e sua evidência de [revisar-seguranca](../revisar-seguranca/SKILL.md).
|
|
9
|
+
Confirme o caminho de abuso e o escopo autorizado. Esclareça dúvidas e apresente
|
|
10
|
+
o plano antes de editar, respeitando aprovações já dadas.
|
|
11
|
+
|
|
12
|
+
Corrija a causa, preserve o contrato legítimo e acrescente um teste de regressão
|
|
13
|
+
que falhe antes e passe depois. Não silencie regra ou exclua arquivo apenas
|
|
14
|
+
para deixar o scanner verde; documente falsos positivos com justificativa.
|
|
15
|
+
|
|
16
|
+
Use [implementar-spec](../../specs/implementar-spec/SKILL.md) quando houver spec
|
|
17
|
+
e [verificar-trabalho](../../projeto/verificar-trabalho/SKILL.md) para as provas.
|
|
18
|
+
Repita o scanner relevante e o cenário original. Mudanças web exigem navegador;
|
|
19
|
+
autorização exige a matriz de [permissões](../revisar-autorizacao/SKILL.md).
|
|
20
|
+
|
|
21
|
+
Se houver segredo real, não o reproduza. Informe o responsável para revogação
|
|
22
|
+
e rotação pelo canal apropriado; remover do código não invalida a credencial.
|
|
23
|
+
Não altere contas, histórico Git ou serviços externos sem escopo explícito.
|
|
24
|
+
|
|
25
|
+
Saída: correção, teste, risco residual e documentação atualizada. Feche com
|
|
26
|
+
[revisar-entrega](../../../commands/revisar-entrega/COMMAND.md), incluindo
|
|
27
|
+
revisão independente e evidências ignoradas em `.agent-tests/security/`.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: modelar-ameacas
|
|
3
|
+
description: Identifica ativos, fronteiras de confiança e ameaças do escopo aprovado.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Modelar ameaças
|
|
7
|
+
|
|
8
|
+
Leia produto, design e código relacionados. Reúna primeiro as dúvidas sobre
|
|
9
|
+
dados, atores, operações privilegiadas e limites do ambiente. Registre o que
|
|
10
|
+
é fato, hipótese ou informação ausente; não invente arquitetura.
|
|
11
|
+
|
|
12
|
+
Mapeie os ativos, entradas, fluxos e fronteiras de confiança. Para cada ameaça,
|
|
13
|
+
descreva pré-condição, caminho de abuso, impacto, controle e teste observável.
|
|
14
|
+
Priorize o que o desenho realmente permite: acesso entre usuários, elevação
|
|
15
|
+
de privilégio, vazamento, injeção e abuso de recursos.
|
|
16
|
+
|
|
17
|
+
Use o [modelo de revisão](../../../templates/revisao-seguranca/TEMPLATE.md)
|
|
18
|
+
como apoio e o [auditor](../../../agents/auditor-seguranca/AGENT.md) para revisão.
|
|
19
|
+
Se o projeto precisar de um documento permanente, combine seu destino com o
|
|
20
|
+
usuário e siga [atualizar-documentacao](../../projeto/atualizar-documentacao/SKILL.md).
|
|
21
|
+
Rascunhos e evidências ficam em `.agent-tests/security/`.
|
|
22
|
+
|
|
23
|
+
Saída: ameaças priorizadas, controles existentes, lacunas e critérios de teste.
|
|
24
|
+
O modelo orienta [revisar-seguranca](../revisar-seguranca/SKILL.md); não comprova
|
|
25
|
+
que os controles foram implementados ou testados.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: revisar-autorizacao
|
|
3
|
+
description: Verifica identidade, permissões por recurso e isolamento entre usuários.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Revisar autorização
|
|
7
|
+
|
|
8
|
+
Identifique sujeitos, papéis, recursos e operações permitidas. Leia rotas,
|
|
9
|
+
middleware, políticas de dados e testes; não deduza autorização pela interface.
|
|
10
|
+
Se o contrato não existir, reúna as dúvidas antes de propor mudanças.
|
|
11
|
+
|
|
12
|
+
Confira autenticação e autorização no servidor em cada operação sensível,
|
|
13
|
+
incluindo IDs manipuláveis, operações em lote e ações administrativas.
|
|
14
|
+
Em PostgreSQL/Supabase, revise RLS, policies, papéis e acessos privilegiados.
|
|
15
|
+
Em Firebase, revise Security Rules e SDKs privilegiados; são controles distintos.
|
|
16
|
+
|
|
17
|
+
Com contas sintéticas no ambiente local autorizado, prove no mínimo:
|
|
18
|
+
|
|
19
|
+
- Visitante não autenticado recebe a recusa prevista.
|
|
20
|
+
- Usuário A acessa seu recurso e não acessa o de B trocando o identificador.
|
|
21
|
+
- Usuário comum não obtém a ação administrativa pela API direta.
|
|
22
|
+
- Listagens, alterações e exclusões obedecem ao mesmo isolamento.
|
|
23
|
+
|
|
24
|
+
Use testes de API e, quando houver interface, navegador conforme
|
|
25
|
+
[verificar-trabalho](../../projeto/verificar-trabalho/SKILL.md).
|
|
26
|
+
Não crie contas reais nem use dados de produção para essa prova.
|
|
27
|
+
Sem aplicação executável ou identidades de teste, registre **não verificado**.
|
|
28
|
+
Entregue matriz de permissões, resultados e achados sem segredos em
|
|
29
|
+
`.agent-tests/security/`, usando o [modelo](../../../templates/revisao-seguranca/TEMPLATE.md).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: revisar-seguranca
|
|
3
|
+
description: Revisa riscos de segurança com análise local, contexto e provas.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Revisar segurança
|
|
7
|
+
|
|
8
|
+
Defina o escopo: mudança ou projeto, dados sensíveis, stack e ambiente autorizado.
|
|
9
|
+
Leia as regras de [segurança](../../../rules/seguranca/RULE.md) e
|
|
10
|
+
[execução local](../../../rules/execucao-local/RULE.md). Não amplie o alvo.
|
|
11
|
+
|
|
12
|
+
Use [auditar-seguranca](../../../commands/auditar-seguranca/COMMAND.md) para
|
|
13
|
+
os scanners disponíveis e o [auditor](../../../agents/auditor-seguranca/AGENT.md)
|
|
14
|
+
para interpretar os resultados. Uma ferramenta ausente ou base indisponível
|
|
15
|
+
gera pendência; resultado vazio não substitui análise de contexto.
|
|
16
|
+
|
|
17
|
+
Revise também autenticação, autorização por recurso, isolamento de dados,
|
|
18
|
+
segredos e entradas conforme o [guia](../REFERENCE.md).
|
|
19
|
+
Use [revisar-autorizacao](../revisar-autorizacao/SKILL.md) para permissões e
|
|
20
|
+
[modelar-ameacas](../modelar-ameacas/SKILL.md) quando houver novas fronteiras.
|
|
21
|
+
|
|
22
|
+
Registre achado, evidência, impacto, confiança e estado da triagem, sem valores
|
|
23
|
+
secretos. Diferencie vulnerabilidade confirmada, suspeita e falso positivo.
|
|
24
|
+
Prove cenários de API pelo terminal e fluxos web no navegador local autorizado,
|
|
25
|
+
seguindo [verificar-trabalho](../../projeto/verificar-trabalho/SKILL.md).
|
|
26
|
+
Salve o relatório em `.agent-tests/security/`; não declare o produto seguro
|
|
27
|
+
com base apenas em scanners. Encaminhe correções à skill correspondente.
|
|
@@ -28,6 +28,7 @@ enquanto o usuário estiver preparando somente a estrutura dos agentes.
|
|
|
28
28
|
| [Revisão de entrega][revisao] | Implementação | Antes de commit/merge. |
|
|
29
29
|
| [Release][release], [CHANGELOG][changelog] | Primeira entrega | Publicar. |
|
|
30
30
|
| [SECURITY][security] | Suporte público | Política/suporte mudar. |
|
|
31
|
+
| [Revisão de segurança][security-review] | Análise autorizada | Ameaças e provas. |
|
|
31
32
|
| [Comando][comando] | Recurso agêntico | Entrada ou fluxo mudar. |
|
|
32
33
|
|
|
33
34
|
Antes, inventarie e leia os documentos existentes com `atualizar-documentacao`.
|
|
@@ -65,4 +66,5 @@ Modelos, configurações e relatórios não são espelhados nas pastas dos agent
|
|
|
65
66
|
[release]: release/TEMPLATE.md
|
|
66
67
|
[changelog]: changelog/TEMPLATE.md
|
|
67
68
|
[security]: seguranca/TEMPLATE.md
|
|
69
|
+
[security-review]: revisao-seguranca/TEMPLATE.md
|
|
68
70
|
[comando]: comando/TEMPLATE.md
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Modelo de contexto, ameaças, achados e provas de segurança.
|
|
3
|
+
status: modelo
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Revisão de segurança
|
|
7
|
+
|
|
8
|
+
Preencha com fatos do escopo autorizado. Resultados e rascunhos ficam em
|
|
9
|
+
`.agent-tests/security/`; combine o destino de documentação permanente.
|
|
10
|
+
Este modelo complementa o relatório JSON dos scanners, sem substituir suas provas.
|
|
11
|
+
|
|
12
|
+
## Contexto
|
|
13
|
+
|
|
14
|
+
Alvo, alteração, ambiente, ativos, atores, operações e fronteiras de confiança.
|
|
15
|
+
Registre fontes, hipóteses e dúvidas; não preencha lacunas com suposições.
|
|
16
|
+
|
|
17
|
+
## Ameaças e controles
|
|
18
|
+
|
|
19
|
+
| Ameaça | Pré-condição | Impacto | Controle existente | Teste necessário |
|
|
20
|
+
| --- | --- | --- | --- | --- |
|
|
21
|
+
| A definir | A confirmar | A confirmar | Evidência | Resultado esperado |
|
|
22
|
+
|
|
23
|
+
## Achados
|
|
24
|
+
|
|
25
|
+
| ID | Local | Evidência sem segredo | Confiança | Estado | Próxima ação |
|
|
26
|
+
| --- | --- | --- | --- | --- | --- |
|
|
27
|
+
| SEC-001 | Arquivo/linha | Evidência | A avaliar | A triar | Responsável |
|
|
28
|
+
|
|
29
|
+
## Validação
|
|
30
|
+
|
|
31
|
+
Critério, comando ou cenário, resultado, caminho da prova e limitações.
|
|
32
|
+
Separe o que passou, falhou, não se aplica e não foi executado.
|
|
33
|
+
Registre revisão independente e risco residual antes de concluir.
|
|
@@ -8,8 +8,9 @@ Cada pasta mantém `TOOL.json`, `SCRIPT.mjs` e um guia.
|
|
|
8
8
|
O catálogo local `catalog.json` relaciona essas definições aos comandos
|
|
9
9
|
de instalação, atualização, verificação e execução. Ao editar definições,
|
|
10
10
|
rode `sincronizar-agentes` e `--check`; versões instaladas ficam no estado local.
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
Para npm, o instalador consulta `latest` e usa `--ignore-scripts`.
|
|
12
|
+
Scanners nativos usam versões e SHA-256 revisados em `TOOL.json`; `update`
|
|
13
|
+
aplica esse pin. Pacotes e estado ficam em `<nome>/.local/`; cache em
|
|
13
14
|
`.cache/` e atalhos em `bin/`, todos ignorados. Tools ficam só em `.pbai4devs`.
|
|
14
15
|
|
|
15
16
|
| CLI | Grupo | Uso |
|
|
@@ -22,9 +23,14 @@ O instalador comum consulta `latest` na origem oficial e instala com
|
|
|
22
23
|
| [opensrc][source] | source | Fontes de dependências. |
|
|
23
24
|
| [webreel][video] | video | Roteiros e vídeos do navegador. |
|
|
24
25
|
| [portless][proxy] | proxy | Proxy e URLs locais estáveis. |
|
|
26
|
+
| [gitleaks](gitleaks/README.md) | security | Segredos em arquivos e Git. |
|
|
27
|
+
| [osv-scanner](osv-scanner/README.md) | security | Dependências com base local. |
|
|
28
|
+
| [opengrep](opengrep/README.md) | security | Código com regras locais. |
|
|
25
29
|
|
|
26
30
|
`setup` instala e verifica todos os CLIs compatíveis. O grupo `base` limita a
|
|
27
|
-
seleção a navegador e lint;
|
|
31
|
+
seleção a navegador e lint; `security` seleciona os três scanners.
|
|
32
|
+
As bases de vulnerabilidades são preparadas separadamente; instalar o CLI
|
|
33
|
+
não transforma uma base ausente em resultado limpo.
|
|
28
34
|
Confira Node/npm pelo [primeiro uso][manager] antes de executar os scripts.
|
|
29
35
|
O instalador usa o mesmo Node 24+ com npm em todos os sistemas. Plataformas aceitas
|
|
30
36
|
ficam em cada `TOOL.json`; ausência de restrição npm não comprova teste do SO.
|
|
@@ -45,6 +51,8 @@ O [instalador comum][manager] aceita nomes ou grupos, como `setup`, `install bas
|
|
|
45
51
|
`update video`, `check source` e `list`.
|
|
46
52
|
|
|
47
53
|
O preparo verifica o CLI; fluxos de aplicação precisam de provas específicas.
|
|
54
|
+
O [fluxo de segurança](../commands/auditar-seguranca/COMMAND.md) usa análise
|
|
55
|
+
offline e relatórios redigidos. Downloads públicos exigem rede, não conta.
|
|
48
56
|
Skills usa descoberta sem importação automática ou symlinks. Portless é opt-in:
|
|
49
57
|
o preparo não inicia proxy. Webreel exige executáveis explícitos para gravar
|
|
50
58
|
sem baixar recursos em `~/.webreel`; seu guia lista os overrides. Use caminhos
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Instalacao local revisada do gitleaks.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# gitleaks
|
|
6
|
+
|
|
7
|
+
Procura segredos em arquivos e no historico Git.
|
|
8
|
+
|
|
9
|
+
Versao revisada: **8.30.1**. Licenca: [MIT](https://github.com/gitleaks/gitleaks/blob/v8.30.1/LICENSE).
|
|
10
|
+
Downloads vem da [release oficial](https://github.com/gitleaks/gitleaks/releases/tag/v8.30.1);
|
|
11
|
+
cada plataforma tem SHA-256 fixado em `TOOL.json`.
|
|
12
|
+
|
|
13
|
+
`SCRIPT.mjs install` baixa e verifica o executavel. `update` aplica a versao
|
|
14
|
+
revisada do catalogo; nao seleciona `latest` sem revisao. `check` verifica
|
|
15
|
+
integridade e versao sem rede; `run` preserva argumentos e codigo de saida.
|
|
16
|
+
Use `node .pbai4devs/tools/gitleaks/SCRIPT.mjs <acao>`.
|
|
17
|
+
|
|
18
|
+
Use os comandos de seguranca do kit para obter saida redigida. Resultados
|
|
19
|
+
exigem triagem; revogar credenciais reais continua necessario.
|
|
20
|
+
|
|
21
|
+
Binarios, caches e resultados ficam locais e ignorados. O CLI nao exige
|
|
22
|
+
conta nem pagamento. Consulte o [gerenciador](../../scripts/preparar-ferramentas/README.md).
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gitleaks",
|
|
3
|
+
"description": "Detecta segredos locais e no historico Git.",
|
|
4
|
+
"group": "security",
|
|
5
|
+
"source": "https://github.com/gitleaks/gitleaks/releases/tag/v8.30.1",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"licenseSource": "https://github.com/gitleaks/gitleaks/blob/v8.30.1/LICENSE",
|
|
8
|
+
"download": {
|
|
9
|
+
"provider": "github-release",
|
|
10
|
+
"repository": "gitleaks/gitleaks",
|
|
11
|
+
"channel": "reviewed",
|
|
12
|
+
"version": "8.30.1",
|
|
13
|
+
"tag": "v8.30.1",
|
|
14
|
+
"assets": {
|
|
15
|
+
"darwin-arm64": {
|
|
16
|
+
"file": "gitleaks_8.30.1_darwin_arm64.tar.gz",
|
|
17
|
+
"format": "tar.gz",
|
|
18
|
+
"binary": "gitleaks",
|
|
19
|
+
"sha256": "b40ab0ae55c505963e365f271a8d3846efbc170aa17f2607f13df610a9aeb6a5"
|
|
20
|
+
},
|
|
21
|
+
"darwin-x64": {
|
|
22
|
+
"file": "gitleaks_8.30.1_darwin_x64.tar.gz",
|
|
23
|
+
"format": "tar.gz",
|
|
24
|
+
"binary": "gitleaks",
|
|
25
|
+
"sha256": "dfe101a4db2255fc85120ac7f3d25e4342c3c20cf749f2c20a18081af1952709"
|
|
26
|
+
},
|
|
27
|
+
"linux-arm64": {
|
|
28
|
+
"file": "gitleaks_8.30.1_linux_arm64.tar.gz",
|
|
29
|
+
"format": "tar.gz",
|
|
30
|
+
"binary": "gitleaks",
|
|
31
|
+
"sha256": "e4a487ee7ccd7d3a7f7ec08657610aa3606637dab924210b3aee62570fb4b080"
|
|
32
|
+
},
|
|
33
|
+
"linux-x64": {
|
|
34
|
+
"file": "gitleaks_8.30.1_linux_x64.tar.gz",
|
|
35
|
+
"format": "tar.gz",
|
|
36
|
+
"binary": "gitleaks",
|
|
37
|
+
"sha256": "551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb"
|
|
38
|
+
},
|
|
39
|
+
"win32-arm64": {
|
|
40
|
+
"file": "gitleaks_8.30.1_windows_arm64.zip",
|
|
41
|
+
"format": "zip",
|
|
42
|
+
"binary": "gitleaks.exe",
|
|
43
|
+
"sha256": "b95f5e4f5c425cedca7ee203d9afd29597e692c4924a12ed42f970537c72cc0f"
|
|
44
|
+
},
|
|
45
|
+
"win32-x64": {
|
|
46
|
+
"file": "gitleaks_8.30.1_windows_x64.zip",
|
|
47
|
+
"format": "zip",
|
|
48
|
+
"binary": "gitleaks.exe",
|
|
49
|
+
"sha256": "d29144deff3a68aa93ced33dddf84b7fdc26070add4aa0f4513094c8332afc4e"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"platforms": [
|
|
54
|
+
"darwin-arm64",
|
|
55
|
+
"darwin-x64",
|
|
56
|
+
"linux-arm64",
|
|
57
|
+
"linux-x64",
|
|
58
|
+
"win32-arm64",
|
|
59
|
+
"win32-x64"
|
|
60
|
+
],
|
|
61
|
+
"scripts": {
|
|
62
|
+
"entry": "SCRIPT.mjs"
|
|
63
|
+
},
|
|
64
|
+
"probe": [
|
|
65
|
+
"version"
|
|
66
|
+
]
|
|
67
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Instalacao local revisada do opengrep.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# opengrep
|
|
6
|
+
|
|
7
|
+
Executa regras SAST armazenadas no projeto.
|
|
8
|
+
|
|
9
|
+
Versao revisada: **1.33.1**. Licenca: [LGPL-2.1](https://github.com/opengrep/opengrep/blob/v1.33.1/LICENSE).
|
|
10
|
+
Downloads vem da [release oficial](https://github.com/opengrep/opengrep/releases/tag/v1.33.1);
|
|
11
|
+
cada plataforma tem SHA-256 fixado em `TOOL.json`.
|
|
12
|
+
|
|
13
|
+
`SCRIPT.mjs install` baixa e verifica o executavel. `update` aplica a versao
|
|
14
|
+
revisada do catalogo; nao seleciona `latest` sem revisao. `check` verifica
|
|
15
|
+
integridade e versao sem rede; `run` preserva argumentos e codigo de saida.
|
|
16
|
+
Use `node .pbai4devs/tools/opengrep/SCRIPT.mjs <acao>`.
|
|
17
|
+
|
|
18
|
+
Use `--config` com regras locais e `--disable-version-check`. Nao use `auto`
|
|
19
|
+
ou URLs de regras no modo local.
|
|
20
|
+
|
|
21
|
+
Binarios, caches e resultados ficam locais e ignorados. O CLI nao exige
|
|
22
|
+
conta nem pagamento. Consulte o [gerenciador](../../scripts/preparar-ferramentas/README.md).
|