feat: vendorizar as 10 skills do pilar de seguranca em skills/

Copia local (nao fork, nao submodule) de safedeps, sca-audit,
secrets-scan, code-review-security, api-security-review,
web-security-review, cve-triage, patch-prioritization,
dependency-scanning e hermaguard -- commit exato de origem e licenca
de cada uma em skills/NOTICE.md. Elimina o passo de clone externo
pro pilar de seguranca do wf-security-review: git clone deste repo
ja traz tudo funcional.

Corrige tambem o comando de instalacao pro Claude Code nos dois
READMEs e no docs/SKILLS.md: Claude Code exige um diretorio por
skill (skills/<nome>/SKILL.md), nao aceita os .md soltos que o
comando antigo copiava -- confirmado testando a instalacao real.
This commit is contained in:
evandrodevbr committed 2026-08-24 00:32:20 -03:00
1 parent ee44fa0f7a
commit c17192c9fe
130 files changed
+10533 -33

No files matched your search

+84
View File
@@ -0,0 +1,84 @@
# Changelog
All notable changes to Hermaguard are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project
uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.1.0] — 2026-08-15
### Added — accountability layer (the "can't lie" upgrades)
- **Coverage checklist** (`hermaguard-coverage`): every report must account
for every applicable bug class from the MITRE 2024 CWE Top 25 plus
hermaguard-native classes (race, async, partial-write, degenerate
handler). Finding / clean / not-applicable-with-reason are the only
allowed statuses; gaps fail the check. Registry validated by
`--self-check` (32 classes).
- **Verified findings** (`hermaguard-verify`): findings get proven, not
asserted. The review agent writes a PoC; the runner executes it in a
hardened sandbox (empty env, rlimits, isolated Python, kill-on-timeout)
and emits VERIFIED / REFUTED / UNVERIFIED from subprocess evidence —
never model self-report (Vera principle). Hard classes (CWE-362, HG-ASYNC,
HG-PARTIAL-WRITE, CWE-416) must carry VERIFIED evidence or the report
fails `--check-report`.
- **Regression gate**: benchmark corpus grown from 5 to 25 bugs covering
the classes the agents claim to check (auth bypass, CSRF, SSRF, XSS,
eval, races, async gaps, empty catches, partial writes). Scoring is now
deterministic class-based matching, not fuzzy keyword overlap.
- **L0–L6 harm grader** (`hermaguard-grader`): deterministic action-graded
severity (arXiv 2607.07474 taxonomy), 100% oracle alignment on the
self-test corpus, wires into the report phase.
- **Closed suppression loop**: dismiss a finding as false positive 3× →
`hermaguard-compile-rules` compiles a suppression rule → prescan applies
it automatically on every future run. Suppression is visible in stats,
never silent.
### Added — research pre-pass layer
- **Locate** (`hermaguard-locate`): SHERLOC-style fault localization
(arXiv 2606.24820). Churn + signal-concentration scoring produces an
attack list for the review agents instead of a blind sweep.
- **Role patterns** (`hermaguard-role-patterns`): agent-specific SAST rule
bundles (CLAWAUDIT lesson — generic SAST catches only ~14–22% of
agent-specific bugs). Per-role rules keyed to coverage classes, emitted
as first-class prescan findings.
- **Sanitize** (`hermaguard-sanitize`): CodeSentinel layer-1 defense
(arXiv 2606.19235). Neutralizes instruction-shaped comments/strings and
decoy payloads before code enters review prompts. Line count preserved;
manifest always emitted.
### Added — hardening
- **CI on the repo itself** (`.github/workflows/ci.yml`): tests on Python
3.10–3.12, byte-compile gate on every tool, benchmark smoke, actionlint.
- **MCP feedback server**: argument schema validation (invalid params →
-32602), suppression-rules table created with the rest of the schema,
full e2e stdio test.
- **Packaging**: `pyproject.toml` with nine console scripts; all tools
installable via `pip install .`.
### Fixed
- `get_suppression_rules` MCP tool crashed on every call (dispatcher passed
two args, handler took one) — it had never worked.
- Suppression-rule threshold never triggered: dismissal count queried the
findings table (a single row, updated in place) instead of the
acceptance-events log, so 3 dismissals never accumulated.
- Prescan now actually consumes compiled suppression rules (the loop was
previously dead — compile-rules emitted YAML that nothing read).
### Tests
- **126 tests across 6 suites**: tools, coverage, loop, verify, research, MCP.
(Final pre-push audit added regression tests for the benchmark run_ok
handling and non-POSIX sandbox fallback — 130 tests across 7 suites.)
- E2E coverage: real subprocess sandbox PoCs (including a live race
condition), full MCP handshake over stdio, compile-rules → prescan loop,
corpus integrity (all 25 bugs validate against the coverage registry).
## [2.0.0] — 2026-07-01
Original public release: three-agent adversarial review (security,
edge-case, blast-radius), deterministic pre-scan (bandit, ruff, eslint,
semgrep), feedback MCP server for precision tracking, benchmark with 5
Python bugs, GitHub Action integration.