# Harness Security Bench > Ejecuta el benchmark de seguridad Darwin Shield: evoluciona un harness campeón de detección contra un corpus de 10 vulnerabilidades y 9 señuelos, y lo puntúa frente a cuatro líneas base. Fuente: https://skillsagentes.com/skills/ruvnet/ruflo/harness-security-bench Markdown: https://skillsagentes.com/skills/ruvnet/ruflo/harness-security-bench.md Repositorio: https://github.com/ruvnet/ruflo Autor: ruvnet Licencia: MIT Actualizado: el mes pasado Coste de contexto: 116 tok instalada, 1.1k tok al activarse, 1.1k tok con todos los archivos del bundle Bundle: 1 archivo, 4 KB Permisos que pide: bash ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add ruvnet/ruflo --skill harness-security-bench --agent claude-code # Cursor npx -y skills add ruvnet/ruflo --skill harness-security-bench --agent cursor # Codex npx -y skills add ruvnet/ruflo --skill harness-security-bench --agent codex # Gemini CLI npx -y skills add ruvnet/ruflo --skill harness-security-bench --agent gemini # Windsurf npx -y skills add ruvnet/ruflo --skill harness-security-bench --agent windsurf # Cline npx -y skills add ruvnet/ruflo --skill harness-security-bench --agent cline ``` ## Qué hace - Evoluciona un harness de detección de seguridad contra un corpus fijo de 10 vulnerabilidades y 9 señuelos. - Puntúa el campeón resultante en TPR, FPR, tasa de parches válidos, reproducibilidad y salidas inseguras. - Compara contra cuatro líneas base: estática, LLM de un solo paso, agente fijo y campeón Darwin. - Falla con --alert-on-fail si el resultado global es FAIL. ## Cuándo usarla - Quieres una referencia empírica de detección de seguridad antes de confiar en el bucle de aprendizaje propio de ruflo. - Vas a ejecutar el benchmark de forma nocturna para detectar deriva semana a semana. ## Qué la activa - "Ejecuta el security bench de Darwin Shield" - "Compara el campeón evolucionado contra las cuatro líneas base" ## Antes de instalar - Se degrada con normalidad si @metaharness/darwin no está instalado. - runs shell commands ## Archivos - SKILL.md — 4 KB ## SKILL.md Reproducido tal cual desde ruvnet/ruflo bajo MIT. Esta sección es el documento original y está en inglés. Surfaces the upstream `metaharness-darwin security bench` command. **This is the upstream's own ADR-155 — Darwin Shield — and is the closest reference implementation for ruflo's nightly self-learning security harness ([#2417](https://github.com/ruvnet/ruflo/pull/2417)).** ## Why this matters for ruflo's ADR-155 ruflo's ADR-155 proposes three learning loops (per-dimension confidence, severity calibration, auto-fix bid). Loop A trains on accumulated `(finding, dimension, human_outcome)` tuples — but the gradient signal is only sound if the underlying detection mechanism converges on a known-good corpus. Darwin Shield evolves exactly that mechanism on a 10-vuln/9-decoy ground-truth set. Running this nightly gives us: - **Empirical floor:** if Darwin Shield's champion can't reach TPR=1/FPR=0 on the bench corpus, our Loop A's reward signal is noise. - **Drift detection:** week-over-week champion fitness deltas surface when the security landscape (or our mutator policy) shifts. - **Baseline diversity:** the 4 baselines (B0–B3) give us 4 anchor points to weight per-dimension confidence against. ## Algorithm Implementation: [`scripts/security-bench.mjs`](../../scripts/security-bench.mjs). 1. Shell to `npx -y @metaharness/darwin@~0.8.0 metaharness-darwin security bench --population N --cycles N [--seed S]`. 2. Default timeout = `3s × 19 evaluations × population × cycles + 30s overhead`. At default `--population 2 --cycles 1` ≈ 144s; at `--population 4 --cycles 3` ≈ 12 min. 3. Parse the markdown report — overall PASS/FAIL plus per-gate pass/fail rows (gate examples: "TPR improvement ≥ 25% vs fixed", "FPR reduction ≥ 40%", "Patch-test pass rate ≥ 80%", "Reproduction success ≥ 90%", "Unsafe outputs = 0", "Cost increase ≤ 2× fixed", "Beyond SOTA: champion statistically beats previous champion", "Compounding: false-positive repeat-rate drop ≥ 35%"). 4. Parse the baselines-vs-champion table (4 rows: fitness/TPR/FPR/patchPass/ repro/unsafe/cost per harness). 5. Emit structured JSON. With `--alert-on-fail`, exit 1 when overall = FAIL. ## Output shape ```json { "success": true, "data": { "overall": { "ok": true, "icon": "✅" }, "gates": { "total": 11, "passed": 11, "failed": 0, "details": [{ "ok": true, "criterion": "TPR improvement ≥ 25% vs fixed harness", "measured": "+150% (B2 0.4 → B3 1)" }, ...] }, "baselines": [ { "harness": "static-only", "fitness": 0.5665, "tpr": 0.3, "fpr": 1, "unsafe": 0, ... }, { "harness": "LLM single-pass", "fitness": 0.1365, ... }, { "harness": "fixed agent", "fitness": 0.598, ... }, { "harness": "Darwin champion", "fitness": 0.93275, "tpr": 1, "fpr": 0, ... } ], "rawMarkdown": "...", "shape": { "population": 2, "cycles": 1, "seed": null }, "durationMs": 142000 } } ``` ## Wiring into ADR-155 nightly harness The ADR-155 nightly workflow (per #2418 task `W1.5`) will spawn this as one of the active-pentest dimension's calls — its results become a trajectory record: ```jsonc { "dimension": "mcp-pentest", "subdimension": "darwin-shield-bench", "champion_fitness": 0.93275, "champion_tpr": 1, "champion_fpr": 0, "gates_passed": 11, "gates_failed": 0, "shape": { "population": 4, "cycles": 3 } } ``` Loop A learns: if `darwin-shield-bench` consistently passes on the seeded corpus, weight findings caught only by `mcp-pentest` higher. ## Exit codes | Code | Meaning | |---|---| | 0 | Bench ran (overall PASS or FAIL — distinguish via JSON `overall.ok`), or degraded | | 1 | `--alert-on-fail` and `overall.ok === false` | | 2 | Config error or upstream infrastructure failure | ## Graceful degradation When `@metaharness/darwin` is absent, emits `{degraded: true, reason: 'metaharness-darwin-not-available'}` and exits 0. ## Dónde encaja - Categoría: [Seguridad](https://skillsagentes.com/categorias/seguridad.md) — Auditorías, revisión de dependencias, manejo de secretos y modelado de amenazas. - Creador: [ruvnet](https://skillsagentes.com/creators/ruvnet.md) — 275 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Harness Gepa](https://skillsagentes.com/skills/ruvnet/ruflo/harness-gepa.md): Inspecciona y audita genomas GEPA: carga y valida un genoma, renderiza el system prompt que compila, o clasifica los modos de fallo de una transcripción de ejecución. - [Deepseek Reason](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-reason.md): Completion en modo razonamiento contra deepseek-reasoner (R1) de DeepSeek. Devuelve el chain-of-thought por separado de la respuesta final. Lee DEEPSEEK_API_KEY y degrada si falta o la API no responde. - [Deepseek Chat](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-chat.md): Completion de un solo turno contra el modelo deepseek-chat de DeepSeek vía /v1/chat/completions. Lee DEEPSEEK_API_KEY y degrada con status:degraded si falta o la API no responde. Para tareas sin razonamiento. - [Adr Index](https://skillsagentes.com/skills/ruvnet/ruflo/adr-index.md): Construye o reconstruye el índice de ADRs y su grafo de dependencias ejecutando scripts/import.mjs, en vez de cientos de llamadas MCP. - [Agntcy Status](https://skillsagentes.com/skills/ruvnet/ruflo/agntcy-status.md): Muestra el estado de la integración AGNTCY/SLIM/CASA: si los paquetes están instalados, qué transporte está activo y si el enforcement de CASA está habilitado. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)