La skill security-audit de Cloudflare es ahora mismo el repo número uno del trending semanal de GitHub: unas 48K estrellas al 26 de octubre de 2026, unas 15K de ellas esta semana, con licencia MIT. No es un escáner. Es un conjunto de instrucciones en Markdown más dos pequeños validadores en Node que convierten a un agente de código como Claude Code en un equipo de auditoría: subagentes en paralelo mapean el código y cazan bugs, y luego otros agentes intentan refutar cada candidato antes de asignarle cualquier severidad.
Esta es mi guía de lo que hace de verdad: las seis fases en cuatro pasos, cómo instalarla y ejecutarla con Claude Code, cómo es findings.json, cuánto consume, cómo meterla en un sandbox y cómo la integraría en una rutina semanal. Leí el README, SKILL.md, las guías de cada fase, el schema JSON y el post de lanzamiento de Cloudflare el 26 de octubre de 2026. No ejecuté una auditoría completa para este post, así que todo lo de abajo está atribuido a esas fuentes, y cuando el consejo es mío, lo digo.
El momento no es casual. Sube la misma semana en que llegaron PHP2Shell (según los reportes, encontrado con ayuda de IA) y los incidentes de LiteLLM y Railway — los cubrí en mi resumen de seguridad del 21 de octubre. Si los atacantes usan modelos para encontrar bugs, ejecutar antes una versión disciplinada de lo mismo sobre tu propio código es un seguro barato.
1. Qué Es la Security Audit Skill
La descripción de GitHub es precisa: “A coding-agent skill for multi-phase security audits with independently verified, machine-readable findings.” El README agrega que “orchestrates isolated agents through reconnaissance, coverage-led hunting, candidate validation, structured output, independent record verification, and target-neutral reporting.” Dicho en simple: tu agente pasa a ser el coordinador (la skill lo llama parent) y cada unidad de trabajo va a un subagente nuevo, con sus propias instrucciones y sin saber qué concluyeron los demás.
Datos del repo (verificados el 26 oct 2026)
- Repositorio: github.com/cloudflare/security-audit-skill
- Estrellas: ~48K (47.993 según la API de GitHub) · ~3K forks · n.º 1 del trending semanal de GitHub con ~15K estrellas esta semana
- Licencia: MIT (Copyright (c) 2025-2026 Cloudflare, Inc.)
- Creado: 18 de junio de 2026, el día en que Cloudflare publicó su post del harness · último push el 14 sept 2026 · 14 commits
- Qué incluye: SKILL.md, tres guías de fase, un catálogo de clases de ataque, diez companions por dominio, report-schema.json y dos validadores Node sin dependencias, con tests
- Instalación: Skills CLI — npx skills add, por proyecto o con --global
- Funciona con: Cualquier agente de código cuyo modelo soporte tool use y subagentes en paralelo (el README no nombra ningún agente concreto)
Lo que instalás es Markdown más dos scripts de Node: sin binario, sin servicio, sin API key propia. El modelo de tu agente hace la lectura y el razonamiento; la skill aporta el método — quién hace qué, qué cuenta como hallazgo, qué evidencia necesita y cómo probarlo. Por eso mismo los resultados dependen del agente y del modelo con que la ejecutes, y por eso el mismo repo puede dar resultados distintos en distintas ejecuciones.
De dónde sale
El README dice que esta es la skill que dio origen al harness de descubrimiento de vulnerabilidades de Cloudflare. En “Build your own vulnerability harness” (18 de junio de 2026), Grant Bourzikas cuenta que empezaron “with a ~450-line security-audit skill that we ran on a single repository” y la convirtieron en un escáner de flota que cubre 128 repos. El embudo del post: 20.799 candidatos en bruto, unos 12.057 que sobrevivieron la validación y 7.245 hallazgos accionables tras deduplicar y enrutar, con la tasa de rechazo en validación cayendo del 40% al 11%. Dos matices: esos números son del harness interno multietapa, no de esta skill para un solo repo, y el harness en sí no está en este repo — el post dijo que llegaría más adelante.
Si leíste sobre ella en junio, volvé a leerla
El post de junio describe la skill original como una auditoría de 7 fases en una sola sesión. El repo cambió mucho el 10 de septiembre de 2026: un commit titulado “Rework the audit workflow, findings contract, and validators end to end” introdujo los tres veredictos, el coverage ledger determinista, los diez companions por dominio, la regla del sandbox a nivel de sistema operativo y el validador del ledger. Su mensaje dice que ambos validadores traen suites de tests (65 tests) y que el rediseño se comprobó con una auditoría real, con presupuesto limitado, sobre un repositorio interno. El README actual documenta seis fases, así que los resúmenes viejos pueden describir otra skill.
2. La Arquitectura en 4 Pasos
El README lista seis fases. Yo las agrupo en cuatro pasos, porque las fases 3 y 5 son verificación independiente y las fases 4 y 6 son salida:
Paso 1 — Reconocimiento y coverage ledger (fase 1)
Cuatro agentes de investigación base corren en paralelo — producto y stack, principals y controles, superficies de entrada y sinks, ejecución local y visibilidad del despliegue — y devuelven hechos con referencias file:line sin escribir archivos. El parent sintetiza architecture.md y un coverage-ledger.json determinista: una unidad por cada combinación de superficie de entrada, límite de confianza, subsistema y clase de ataque. Ese ledger es lo que vuelve contable la cobertura, y también el gasto.
Paso 2 — Oleadas de caza guiadas por cobertura (fase 2)
Cada unidad planificada va a un hunter aislado cuyo prompt lleva architecture.md tal cual más los bloques exactos de clases de ataque elegidos para él, de ATTACK-CLASSES.md y de los companions (IA/LLM, protocolo web y auth, client-side, cloud, cadena de suministro, seguridad de memoria y más). Cada hunter devuelve exactamente un objeto JSON. Tras cada oleada, un coverage critic nuevo busca entry points sin mapear y huecos, y el ciclo se repite hasta que los critics no encuentran trabajo nuevo o el perfil o el presupuesto lo detienen.
Paso 3 — Validación adversarial (fases 3 y 5)
Cada candidato único va a un verificador nuevo cuyo prompt empieza con “You did not write this candidate. Try to refute it.” Devuelve confirmed, needs_validation o rejected. Una vez escrito el archivo de hallazgos, otro agente nuevo vuelve a verificar contra el código cada registro final confirmed y needs_validation; un cambio material, como subir algo a confirmed, pasa por otro verificador independiente más antes de aplicarse.
Paso 4 — Salida estructurada e informes (fases 4 y 6)
El parent escribe findings.json, lo valida contra report-schema.json con validate-findings.cjs y valida el ledger con validate-coverage-ledger.cjs. Solo cuando cada registro retenido pasa la verificación genera REPORT.md, FINDINGS-DETAIL.md y NEEDS-VALIDATION.md — y la prosa nunca puede cambiar un veredicto ni una severidad.
La regla que la diferencia: la severidad exige prueba
Solo los registros confirmed llevan severidad, y la severidad global no puede superar el impacto demostrado. needs_validation significa que una hipótesis concreta y basada en el código está bloqueada por un dato que el agente no puede ver, y no lleva ninguna severidad. Las carencias de defensa en profundidad son notas de hardening, no vulnerabilidades. SKILL.md calibra con estas referencias:
- Critical: Un actor sin autenticar obtiene ejecución de código, acceso completo al almacén de datos o toma de cuentas arbitrarias.
- High: Un actor anula por completo un control explícito con consecuencias reales: bypass de autenticación, lectura o escritura entre tenants, ejecución de scripts almacenados contra otros usuarios, ejecución de código autenticada.
- Medium: Una violación real de un límite con radio de impacto acotado, precondiciones poco comunes o pocos recursos afectados.
- Low / informational: Exposición de detalles internos no secretos o efectos de ganancia mínima; informational es un hallazgo confirmado de impacto mínimo.
Una ejecución limpia puede terminar con cero hallazgos confirmados, y VALIDATION-AND-REPORTING.md le indica al agente que lo diga “without inventing LOW findings” (sin inventar hallazgos LOW).
3. Quickstart con Claude Code
El README lista tres requisitos. El tercero es el que casi todos se saltan:
Requisitos (README)
- • Un agente de código con un modelo que soporte tool use y subagentes en paralelo.
- • Node.js, para los dos validadores sin dependencias (hallazgos y coverage ledger).
- • Un sandbox impuesto por el sistema operativo para todo lo que compile, pruebe o ejecute código del objetivo: sin red externa, un entorno saneado con allowlist, límites de recursos y escritura solo en las rutas scratch asignadas. Sin él, la skill no ejecuta código del objetivo y deja esas pistas como needs_validation.
Instalala con la Skills CLI. Estos son los comandos del propio README — primero a nivel de proyecto, después a nivel de usuario con --global:
# Project-level install (README) npx skills add https://github.com/cloudflare/security-audit-skill \ --skill security-audit # User-level install, available in every repo (README) npx skills add https://github.com/cloudflare/security-audit-skill \ --skill security-audit \ --global
Para saltarte el selector de agentes y apuntar directo a Claude Code, la Skills CLI documenta -a (agente) y -y (omitir las confirmaciones). Su tabla de agentes coloca las skills de Claude Code en .claude/skills/ para un proyecto y en ~/.claude/skills/ a nivel global:
# Target Claude Code only and skip the prompts (-a and -y from the Skills CLI docs) npx skills add https://github.com/cloudflare/security-audit-skill \ --skill security-audit -a claude-code -y # Project: .claude/skills/security-audit/ # Global (--global): ~/.claude/skills/security-audit/
Después abrí Claude Code dentro del repo que querés auditar (o apuntando a él) y pedíselo. Estos tres prompts salen tal cual del README; la skill se activa con pedidos como “security audit”, “find vulnerabilities” o “pen-test the code”, y también podés invocarla explícitamente con /security-audit:
security audit this codebase find security vulnerabilities in ./src do a security review, output to ~/audits/my-project
Dos comportamientos que conviene conocer antes de apretar enter. Primero, un pedido directo de auditoría o pentest ejecuta el modo full audit, mientras que una pregunta de seguridad o una revisión acotada usa el modo guidance, que no escribe archivos de auditoría; si el pedido es ambiguo, SKILL.md le indica al agente que te haga primero una sola pregunta. Segundo, la salida va por defecto a ~/security-audit-skill/<repo-name>/run-<N>, fuera de tu repo. Solo escribe dentro del objetivo si elegís explícitamente un directorio que el control de versiones ignore.
SKILL.md también define tres perfiles de ejecución — quick (una oleada de hunters, un critic final, un verificador por candidato), standard (el predeterminado) y deep (unidades más finas, oleadas de critics hasta una pasada limpia, verificadores separados) — más ejecuciones acotadas a rutas concretas, a un subsistema o al diff entre dos refs, y un presupuesto opcional medido en invocaciones de agentes. El perfil se toma de tu pedido, así que simplemente lo indico (la redacción es mía; lo escribo en inglés, como los ejemplos del README):
security audit this codebase, quick profile, scoped to src/api, budget 20 agents
Cuando termine la ejecución, volvé a correr vos los validadores. Estas son las invocaciones de VALIDATION-AND-REPORTING.md, con las rutas que generan una instalación de Claude Code a nivel de proyecto y el directorio de salida predeterminado:
node .claude/skills/security-audit/validate-findings.cjs \ ~/security-audit-skill/my-api/run-1/findings.json node .claude/skills/security-audit/validate-coverage-ledger.cjs \ ~/security-audit-skill/my-api/run-1/coverage-ledger.json
Otros agentes
La skill está escrita para ser neutral respecto del agente: habla de un parent, de una Task tool y de dos roles delegados (research y general) y te pide mapearlos a los equivalentes de tu plataforma. La Skills CLI puede instalarla para Codex, Cursor, OpenCode y decenas de agentes más (-a codex, -a cursor, -a opencode). El README no nombra ninguno, así que comprobá por tu cuenta que tu agente realmente ejecuta subagentes en paralelo con contexto aislado — la independencia de los verificadores es justamente la clave.
Tip: en Windows, usá WSL2
La documentación de sandboxing de Claude Code dice que en Windows nativo ejecuta los comandos sin sandbox, y que para tenerlo debés correr Claude Code dentro de una distribución de WSL2. Para esta skill importa: sin un sandbox que se pueda imponer, toda pista que necesite ejecutar código se queda en needs_validation.
4. Cómo Es la Salida
Un directorio de ejecución en modo full audit, armado a partir de los archivos que definen SKILL.md y las guías de fase (los comentarios son mi resumen):
~/security-audit-skill/my-api/run-1/
├── run-metadata.json # run_id, repo, source_ref, profile, scope_paths, budget, run_status
├── architecture.md # phase 1 map: stack, principals, trust boundaries, entry surfaces
├── coverage-ledger.json # units: planned → in_progress → covered | candidate | blocked | deferred
├── findings.json # confirmed + needs_validation + rejected records
├── REPORT.md # profile, scope, posture, findings table, coverage summary
├── FINDINGS-DETAIL.md # full trace + local reproduction for medium/high/critical
├── NEEDS-VALIDATION.md # leads with exact blockers and resolution plans, no severity
└── agents/<agent-id>/
├── scratch/ # the only place a sub-agent (and target code) may write
└── artifacts/ # parent-owned, filled only by the safe promotion procedurefindings.json es un array de registros, cada uno con un veredicto. El schema usa additionalProperties: false, así que cada veredicto tiene un contrato de campos estricto:
confirmed
fingerprint, title, description, root_cause, intended_behavior, trace (entrypoint → propagation → sink, cada uno con file, line, scope y description), evidence, conditions (tipos como authentication_level, authorization_role, user_interaction o system_configuration), execution (attacker_perspective, payloads, instructions, observed_result), remediation (strategy más code_changes opcionales), severity (likelihood e impact, cada uno con score y reason, más overall_severity) y confidence (low, medium o high, con una razón).
needs_validation
fingerprint, title, description, claimed_root_cause, trace, evidence, blockers (los datos exactos que no pudo observar) y validation_plan con un campo local y/o deployment. Sin severidad, sin execution, sin remediation — a propósito.
rejected
fingerprint, title, description, claimed_root_cause, trace, evidence y la razón por la que se refutó. Se conserva para que ejecuciones futuras no vuelvan a levantar la misma afirmación sin sustento salvo que cambie la evidencia.
Así es la forma de un registro confirmed. Los nombres de campo salen de report-schema.json; los valores son un ejemplo inventado por mí, recortado con “…”:
[
{
"verdict": "confirmed",
"fingerprint": "api/invoices:cross-tenant-read",
"title": "Invoice lookup skips the tenant check",
"description": "…",
"root_cause": "findInvoiceById filters by id only, not by tenant_id",
"intended_behavior": "Users can read only invoices of their own tenant",
"trace": [
{ "kind": "entrypoint", "file": "src/routes/invoices.ts", "line": 42,
"scope": "GET /invoices/:id", "description": "…" },
{ "kind": "sink", "file": "src/db/invoices.ts", "line": 17,
"scope": "findInvoiceById", "description": "…" }
],
"evidence": [{ "file": "src/db/invoices.ts", "line": 17, "description": "…" }],
"conditions": [{ "kind": "authentication_level", "description": "Any logged-in user" }],
"execution": {
"attacker_perspective": "Dummy user of tenant A",
"payloads": ["GET /invoices/1002"],
"instructions": ["Run the dummy-tenant integration test inside the sandbox", "…"],
"observed_result": "The tenant B dummy invoice is returned with HTTP 200"
},
"remediation": { "strategy": "Scope the query by the session tenant_id", "code_changes": [] },
"severity": {
"likelihood": { "score": "high", "reason": "…" },
"impact": { "score": "high", "reason": "Cross-tenant read" },
"overall_severity": "high"
},
"confidence": { "score": "high", "reason": "…" }
}
]Como es JSON plano, el triage es una sola línea. Mi jq para listar los hallazgos confirmados con su severidad:
jq -r '.[] | select(.verdict=="confirmed") | "\(.severity.overall_severity)\t\(.title)"' \ ~/security-audit-skill/my-api/run-1/findings.json
Los validadores prueban el formato, no la verdad
validate-findings.cjs rechaza registros mal formados (y no acepta entradas de más de 5 MiB, 1.000 hallazgos o 64 niveles de anidación), pero VALIDATION-AND-REPORTING.md es tajante: “Validator success proves format and ledger consistency only.” La prueba de verdad es la cadena de verificadores independientes — y después vos. Leé FINDINGS-DETAIL.md para cada registro medium, high y critical antes de abrir un ticket.
5. Costo, Límites de Uso y Sandbox
La skill es gratis; ejecutarla no. No hay un precio oficial por ejecución, pero los archivos te dicen cómo escala el gasto:
El presupuesto se cuenta en agentes
SKILL.md registra un presupuesto opcional como número máximo de invocaciones de agentes. Una unidad del ledger equivale más o menos a una asignación de hunter, y cada candidato que sobrevive cuesta una o dos asignaciones de verificador según el perfil.
Hay un mínimo antes de cazar nada
Antes de empezar el reconocimiento, el presupuesto tiene que cubrir los cuatro agentes de recon base, la reserva de critics (uno en quick, dos en standard y deep) y al menos un verificador. Si no alcanza, no se lanza nada y la ejecución queda registrada como incompleta.
Los subagentes comparten tus límites
La documentación de Claude Code dice que las peticiones de cada subagente cuentan para los mismos límites de uso que tu conversación principal, y que por defecto una sesión admite hasta 20 subagentes concurrentes (CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS lo sube). Una ejecución standard sobre un código real puede comerse buena parte de una ventana de suscripción — es mi expectativa, no un número medido.
Un orden de magnitud de Cloudflare
Para el harness interno (no esta skill), el post reporta que un repo de ~30K líneas da unos 100 hallazgos iniciales en una ejecución de 3–4 horas, y que cada pasada extra cuesta más o menos la mitad que la caza inicial. No se publican cifras de tokens ni de dólares. Con facturación por API, claude -p con --output-format json reporta total_cost_usd como estimación del lado del cliente.
Después, el sandbox. Las reglas de “Universal execution safety” de SKILL.md aplican en ambos modos: la inspección del código es de solo lectura, y cualquier compilación, test, proceso, navegador, emulador, fuzzer o fixture controlado por el objetivo corre solo dentro de un sandbox impuesto por el sistema operativo con todos estos controles:
Controles exigidos (SKILL.md)
- • Sin red externa; solo un namespace de loopback aislado cuando una comprobación necesita tráfico cliente/servidor local.
- • Un entorno vacío poblado desde una allowlist explícita, con HOME, directorios temporales y cachés locales a scratch.
- • Objetivo y toolchain de solo lectura; el código del objetivo solo escribe dentro de su directorio scratch/ asignado.
- • Límites explícitos y bajos de CPU, memoria, procesos, tamaño de archivo, disco y tiempo real.
- • Sin instalar dependencias ni builds que descarguen nada; solo principals, fixtures y secretos de prueba; nunca sondear endpoints desplegados ni servicios compartidos.
¿Cómo se compara el sandbox propio de Claude Code? Según su documentación, /sandbox usa Seatbelt en macOS y bubblewrap en Linux y WSL2, limita la escritura al directorio de trabajo (más un directorio temporal y los que agregues) y enruta el tráfico de red por un proxy cuya allowlist empieza vacía. Pero la documentación no menciona límites de CPU, memoria ni procesos, las variables de entorno se heredan salvo que las deniegues (sandbox.credentials.envVars o CLAUDE_CODE_SUBPROCESS_ENV_SCRUB), y si el sandbox no puede arrancar, los comandos corren sin él salvo que sandbox.failIfUnavailable sea true. Mi lectura: una capa útil, no el conjunto completo de controles que pide la skill.
Mi opinión
Ejecutá las auditorías en una VM desechable o en una máquina de desarrollo en la nube, sin credenciales de producción, sin agente SSH y sin nada montado que no puedas perder. El post de Cloudflare cuenta que sus hunters usaban un sandbox construido sobre unshare y que ejecutarlo en Docker exigía seccomp=unconfined y apparmor=unconfined — otro motivo por el que yo no relajaría mi perfil de contenedores de todos los días para esto. Si no podés montar el sandbox, aceptá ejecuciones solo estáticas: más needs_validation y menos confirmed es la skill siendo honesta, no fallando.
6. Una Rutina Semanal o de CI con Sentido
El repo no documenta integración con CI, ni GitHub Action, ni un modo por PR, y el post de Cloudflare es explícito: “The Fixer never merges code on its own; a human must review the branch.” Lo que sigue es mi sugerencia, no algo que traiga el proyecto:
- • Un runner dedicado y desechable, con acceso de solo lectura al repo y sin secretos de producción en su entorno.
- • Una ejecución quick semanal acotada a las rutas que cambiaron; una standard antes de cada release grande; deep solo para las joyas de la corona.
- • Una raíz de salida estable, para que las ejecuciones sean acumulativas: la skill lee los ledgers y hallazgos anteriores para atacar huecos y revalidar el código que cambió.
- • Condicioná el job a que pasen ambos validadores — nunca a la cantidad de hallazgos.
- • Mandá los confirmed a tu tracker y los needs_validation a sus responsables con el plan de despliegue; guardá los rejected como memoria.
- • Cada fix lo revisa y lo mergea una persona.
En modo headless, así es más o menos como la ejecutaría con Claude Code. Es un borrador sin probar: cada flag sale de la documentación headless de Claude Code, pero ajustá los permisos a tu entorno — Bash(node *) es amplio y solo es aceptable en una máquina desechable:
# Weekly sketch (mine, untested end to end): run it on a disposable VM, not your laptop mkdir -p ~/security-audit-skill cd ~/src/my-api && git pull --ff-only claude -p "/security-audit Full security audit of this codebase, quick profile, scoped to src/api" \ --add-dir ~/security-audit-skill \ --permission-mode acceptEdits \ --allowedTools "Bash(node *)" \ --max-budget-usd 30 \ --output-format json > ~/security-audit-skill/last-run.json RUN=$(ls -d ~/security-audit-skill/my-api/run-* | sort -V | tail -1) node .claude/skills/security-audit/validate-findings.cjs "$RUN/findings.json" node .claude/skills/security-audit/validate-coverage-ledger.cjs "$RUN/coverage-ledger.json" jq -r '.[] | select(.verdict=="confirmed") | "\(.severity.overall_severity)\t\(.title)"' "$RUN/findings.json"
No agregues --bare acá
La documentación de Claude Code recomienda --bare para scripts, pero el modo bare se salta el descubrimiento automático de skills y desactiva los subagentes en segundo plano — justo las dos cosas de las que depende este flujo. Además, las versiones recientes inician las ejecuciones claude -p en modo de permisos Manual, donde cualquier llamada que necesite aprobación simplemente se deniega, así que preaprobá lo que la ejecución necesita. Una ejecución -p espera a sus subagentes en segundo plano antes de salir, y --max-budget-usd detiene el trabajo restante cuando se alcanza el tope.
7. Dónde Brilla: Casos de Uso
Donde creo que justifica lo que consume:
Auditoría previa al lanzamiento de tu SaaS
El aislamiento entre tenants, la autenticación y el ciclo de vida de los datos tienen companions dedicados, y una lectura entre tenants es justo el tipo de “high” que describen las referencias de severidad.
Funciones con LLM y agentes
El companion AI-AND-LLM caza prompt injection, autoridad de agentes y herramientas, y manejo inseguro de la salida del modelo — la capa que las reglas estáticas genéricas rara vez entienden.
Cadena de suministro, CI y configuración cloud
Hay companions para dependencias, CI, releases, firmas, actualizaciones y plugins, más IAM, infraestructura como código, contenedores y serverless — hasta donde el repo los muestre.
Código heredado o rescatado
Aun con cero hallazgos confirmados, architecture.md y el ledger te dan un mapa de límites de confianza de un código que nadie del equipo escribió.
Reauditorías tras los fixes
Las ejecuciones son acumulativas: las confirmaciones sin cambios se vuelven a verificar, el código modificado se revalida y las unidades needs_validation, deferred o blocked anteriores pasan a ser trabajo actual.
Código nativo, de escritorio y móvil
Hay companions de seguridad de memoria, binarios, kernel e IPC local — aquí es donde un sandbox real importa más, porque confirmar esos bugs implica ejecutar código.
El patrón: código que es tuyo, límites que importan y una persona que va a leer la evidencia. Ese es el perfil para el que se escribieron las reglas de la skill.
8. Cuándo NO Usarla
Es un método sólido, no un botón mágico. Límites honestos:
❌ Evitala cuando
- • Necesitás un pentest de lo que está desplegado — lee código y ejecuta comprobaciones locales acotadas; los datos del despliegue pasan a needs_validation y nunca envía tráfico de auditoría a un sistema en vivo.
- • Querés un gate determinista por PR — las ejecuciones de un modelo varían, y el propio README dice que una sola ejecución encontró más o menos la mitad de lo que encontraron varias ejecuciones en total.
- • No podés ofrecer un sandbox impuesto por el sistema operativo pero necesitás bugs confirmados en ejecución en código nativo, parsers u objetivos de fuzzing — esas pistas quedarán sin confirmar.
- • Tu agente no puede ejecutar subagentes en paralelo, o tu plan de uso no aguanta decenas de invocaciones de agentes por ejecución.
- • Compliance te exige una tasa de falsos positivos publicada — ni el README ni el post de Cloudflare la dan.
- • Esperás que te aplique los parches — la skill describe el fix mínimo pero nunca modifica el código del objetivo, y el Fixer de Cloudflare no está en este repo.
- • La ejecutarías en tu notebook de todos los días con credenciales cloud en el entorno.
✅ Usala cuando
- • El código es tuyo y querés razonamiento sobre límites de confianza, no solo coincidencia de patrones.
- • Tu agente soporta subagentes en paralelo y podés presupuestar el uso.
- • Podés ejecutarla más de una vez y comparar resultados.
- • Querés hallazgos legibles por máquina que un script pueda enrutar.
- • Alguien del equipo va a hacer el triage de los registros confirmed y needs_validation.
Regla de oro
Tratá cada ejecución como una muestra, no como un veredicto. Revisá la skill antes de instalarla, ejecutala en una máquina que puedas tirar, ejecutala otra vez y dejá que una persona decida qué sale a producción.
Conclusión
La skill security-audit es el tipo de repo en tendencia más interesante: no una herramienta nueva, sino un método puesto por escrito — hunters aislados, verificadores adversariales, un coverage ledger y un schema estricto — que cualquier agente de código capaz puede seguir. Unas 48K estrellas en poco más de cuatro meses, 15K de ellas en una sola semana, dicen que muchos equipos quieren exactamente esa disciplina alrededor de la revisión de código con IA.
Mi sugerencia: instalala a nivel de proyecto, empezá con una ejecución quick y acotada sobre un servicio que conozcas bien, revisá a mano los registros confirmed y fijate si la lista de needs_validation coincide con las preguntas que te harías vos. Si se gana su lugar, pasala a un runner desechable con una ejecución semanal. Y antes de instalar cualquier skill de terceros — esta incluida — leela o escaneala primero.
Fuentes
- Repositorio y README (fases, instalación, uso, requisitos) — github.com/cloudflare/security-audit-skill
- SKILL.md: modos, reglas de sandbox, perfiles, presupuesto, referencias de severidad — github.com/cloudflare/security-audit-skill
- report-schema.json: el contrato de findings.json — github.com/cloudflare/security-audit-skill
- Build your own vulnerability harness (18 de junio de 2026) — blog.cloudflare.com
- Agentes soportados y rutas de instalación de la Skills CLI — github.com/vercel-labs/skills
- Sandboxing en Claude Code — code.claude.com
- Subagentes de Claude Code: paralelismo y límites de uso — code.claude.com
- Ejecutar Claude Code de forma programática (claude -p) — code.claude.com



