CommunityRedacción y edicióngithub.com

trailofbits/code-improver

Ejecuta un bucle autónomo de revisión y corrección sobre cualquier objetivo de código —un skill, plugin, módulo o directorio— utilizando un revisor que el usuario nombre: cualquier skill o agente instalado. Mantiene un registro de hallazgos entre rondas, escala cuando las correcciones dejan de converger y protege el alcance mecánicamente.

¿Qué es code-improver?

Code Improver es un skill que automatiza el proceso de mejora de código mediante un bucle iterativo de revisión y corrección. Permite especificar un revisor (puede ser otro skill o agente instalado), un directorio objetivo y un alcance (globs relativos al repositorio). El flujo de trabajo central está implementado en `workflows/improve.js` y se encarga de revisar el código, aplicar correcciones, verificar que no se salga del alcance definido y detenerse cuando la revisión reporta cero hallazgos críticos o mayores. Si el bucle no converge tras el número máximo de rondas, se detiene con un estado `capped`. Si detecta que las correcciones no están reduciendo los problemas (hallazgos recurrentes o no decrecientes), escala la decisión al usuario. El skill también maneja casos de revisor no disponible, violaciones de alcance o archivos nuevos no registrados. Es especialmente útil cuando se pide 'mejorar este código hasta que pase la revisión', 'ejecutar un bucle de mejora con <revisor>' o para iterar revisión y corrección con un revisor específico. Para skills, se recomienda usar la entrada `skill-improver`; para ramas, `pr-improver`.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/trailofbits/skills/tree/main/plugins/code-improver/skills/code-improver

Installed? Explore more Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Code Improver

Mejora cualquier objetivo de código ejecutando /code-improver:improve — un flujo de trabajo dinámico que hace un bucle entre el revisor nombrado y un subagente corrector hasta que una revisión reporte cero hallazgos críticos/mayores, y luego elimina su propio rastro. El bucle, su registro y sus protecciones viven en el flujo de trabajo; este skill recoge las tres entradas que requiere la entrada genérica y transmite el resultado.

Iniciar el bucle

El usuario proporcionó: $ARGUMENTS (si está vacío, toma los detalles de la conversación).

1. Recopilar las tres entradas requeridas — sin adivinar

  1. Objetivo: la ruta absoluta al directorio bajo mejora. Resuelve rutas relativas contra el directorio de trabajo; verifica que el directorio exista.
  2. Revisor: el skill o agente instalado que realiza cada revisión. El usuario debe nombrarlo — no hay valor predeterminado ni revisor incluido. Determina el tipo:
    • un agente con espacio de nombres (p. ej. plugin-dev:skill-reviewer) → "kind": "agent"
    • un skill instalado (p. ej. pr-review-toolkit:review-pr) → "kind": "skill" Si el nombre pudiera ser de cualquiera de los dos, consulta el listado de skills de la sesión; si aún es ambiguo, pregúntale al usuario. Si no se nombró ningún revisor, pregunta — no elijas uno.
  3. Alcance: globs relativos al repositorio que el bucle puede tocar. La entrada genérica lo requiere explícitamente; si el usuario no dio uno, propón el directorio objetivo (<ruta-relativa-al-repo>/**) y confirma antes de lanzar.

2. Resolver el script del bucle

El bucle es el flujo de trabajo dinámico workflows/improve.js en este plugin. Lánzalo mediante ruta: scriptPath toma una ruta absoluta resuelta, y la herramienta Workflow con name resuelve flujos de trabajo integrados y de proyecto, por lo que uno instalado desde el mercado puede no responder a code-improver:improve. Prueba en orden, el primero que funcione gana — los directorios de inicio van antes que . para que una copia instalada le gane a una copia local de este mercado:

  1. Bash: ls -d -- "${CLAUDE_PLUGIN_ROOT}/workflows/improve.js"
  2. Bash: ls -d -- "${CODEX_PLUGIN_ROOT}/workflows/improve.js" (si esa variable está definida)
  3. Bash: find ~/.claude ~/.codex . -maxdepth 7 -path '*/code-improver/workflows/improve.js' -print -quit 2>/dev/null

Usa la ruta exactamente como se imprimió. Su directorio plugin — la ruta con /workflows/improve.js eliminado — es pluginRoot. Si las tres opciones vuelven vacías, intenta {name: "code-improver:improve"} una vez; si tampoco está disponible, detente y di que el bucle no pudo ser localizado. No armes una ruta a mano ni improvises el bucle.

3. Invocar el flujo de trabajo

Ejecútalo con la herramienta Workflow, {scriptPath: "<la ruta del paso 2>", args: {...}}:

{
  "target": "<ruta absoluta del objetivo>",
  "reviewer": { "kind": "agent|skill", "name": "<nombre-con-espacio>", "notes": "<lo que el revisor debe saber sobre el objetivo>" },
  "scope": ["<glob-relativo-al-repo>/**"],
  "pluginRoot": "<el directorio plugin del paso 2>",
  "maxRounds": 5
}
  • maxRounds solo si el usuario pidió un límite diferente.
  • pluginRoot permite que la ejecución encuentre su recolector de métricas; omite la clave solo si el paso 2 recurrió al nombre del flujo de trabajo — el flujo de trabajo se busca a sí mismo.
  • finalize ({"version_bump": bool, "narration_strip": bool, "docs_pass": bool}) solo para anular los valores predeterminados: incremento de versión cuando el objetivo está dentro de un plugin, eliminación de narración y pase de documentación siempre.
  • decision solo en continuación (abajo).

El flujo de trabajo se ejecuta en segundo plano y no necesita supervisión: revisa, corrige, vuelve a revisar, verifica el alcance después de cada ronda de corrección y solo puede completarse con una revisión limpia. Nunca hace commit; todos los cambios permanecen en el árbol de trabajo.

Si la herramienta Workflow no está disponible o es denegada, detente y dilo. No improvises el bucle en línea con ediciones directas — el registro, la protección de alcance y las garantías de escalada viven en el flujo de trabajo, y una imitación en línea no tiene ninguno de ellos.

Si el resultado es halted: "reviewer-unavailable", transmítelo y detente. El revisor nombrado no está instalado en esta sesión; dile al usuario qué plugin lo proporciona y vuelve a ejecutar después de instalarlo. No revises el objetivo tú mismo.

No termines tu turno mientras el bucle esté en ejecución. La herramienta Workflow devuelve un id de tarea inmediatamente; el resultado llega después. En una sesión interactiva, la notificación de finalización vuelve a invocarte — espera. En una ejecución no interactiva (scripteada, CI, evaluación) no hay un turno posterior: detener abandona el bucle a medio camino, así que después de lanzarlo, consulta la tarea (TaskOutput con el id de tarea devuelto, o duerme y vuelve a comprobar) hasta que se complete, luego transmite el resultado. Una sesión que responde "el bucle está en ejecución, informaré después" ha perdido la ejecución.

Transmitir el resultado

El flujo de trabajo devuelve un resultado estructurado. Infórmalo honestamente — las distinciones importan:

  • converged: true — la última acción fue una revisión con cero hallazgos críticos/mayores. Informa las rondas utilizadas, los hallazgos menores restantes (open_minor_count) y las rutas de los artefactos (ledger_path, metrics).
  • capped: true — el presupuesto de correcciones se agotó y la revisión FINAL aún encontró problemas bloqueantes. Di claramente: límite alcanzado, NO convergió, y lista open_blocking. No presentes esto como un éxito.
  • escalation — el bucle detectó que no estaba convergiendo (hallazgos recurrentes, conteos no decrecientes o una corrección que traslada un problema). Transmite el mensaje de escalada y los ids de los hallazgos al usuario: esto necesita una decisión de diseño, no más rondas.
  • halted — se activó una guardia (violación de alcance, archivos nuevos no registrados, un revisor muerto o no disponible, o un pase de finalización cuyas propias ediciones fallaron la verificación que le sigue). Transmite las rutas en violations/new_untracked_files, los sitios en finalize_regressions y las notas.
  • notes siempre acompañan al resultado — sácalas a la luz; incluyen advertencias sonoras como "se inicializó un repositorio git".

Continuar después de una escalada

El bucle se detiene en una escalada por diseño. Cuando el usuario decida, inicia una nueva ejecución con el mismo target y reviewer más:

{ "decision": "<el fallo del usuario, textual>" }

La nueva ejecución recarga el registro en disco, por lo que cada hallazgo, rechazo y veredicto se mantiene — las rondas se reinician, la re-derivación no.

Para detener un bucle en ejecución, detén la tarea del flujo de trabajo (TaskStop); el registro en disco está actualizado hasta la última ronda y una re-ejecución continúa desde allí.

Cuándo NO usar

  • Un skill de Claude Code: usa la entrada skill-improver — conecta el revisor correcto
  • Una rama / solicitud de extracción: usa la entrada pr-improver — deriva el alcance del diff
  • Revisión única: envía al revisor directamente; el valor del bucle es la iteración
  • Correcciones rápidas únicas: edita el archivo directamente

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

trailofbits/address-sanitizer

AddressSanitizer detects memory errors during fuzzing. Use when fuzzing C/C++ code to find buffer overflows and use-after-free bugs.

trailofbits/aflpp

AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C/C++ projects.

trailofbits/agentic-actions-auditor

Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI, OpenAI Codex, and GitHub AI Inference. Detects attack vectors where attacker-controlled input reaches AI agents running in CI/CD pipelines, including env var intermediary patterns, direct expression injection, dangerous sandbox configurations, and wildcard user allowlists. Use when reviewing workflow files that invoke AI coding agents, auditing CI/CD pipeline security for prompt injection risks, or evaluating agentic action configurations.

trailofbits/algorand-vulnerability-scanner

Scans Algorand smart contracts for 11 common vulnerabilities including rekeying attacks, unchecked transaction fees, missing field validations, and access control issues. Use when auditing Algorand projects (TEAL/PyTeal).

trailofbits/ask-questions-if-underspecified

Clarify requirements before implementing. Use when serious doubts arise.

trailofbits/atheris

Atheris is a coverage-guided Python fuzzer based on libFuzzer. Use for fuzzing pure Python code and Python C extensions.

trailofbits/audit-augmentation

Augments Trailmark code graphs with external audit findings from SARIF static analysis results and weAudit annotation files. Maps findings to graph nodes by file and line overlap, creates severity-based subgraphs, and enables cross-referencing findings with pre-analysis data (blast radius, taint, etc.). Use when projecting SARIF results onto a code graph, overlaying weAudit annotations, cross-referencing Semgrep or CodeQL findings with call graph data, or visualizing audit findings in the context of code structure.

trailofbits/audit-context-building

Enables ultra-granular, line-by-line code analysis to build deep architectural context before vulnerability or bug finding.

trailofbits/audit-prep-assistant

Prepares codebases for security review using Trail of Bits' checklist. Helps set review goals, runs static analysis tools, increases test coverage, removes dead code, ensures accessibility, and generates documentation (flowcharts, user stories, inline comments).

trailofbits/burpsuite-project-parser

Searches and explores Burp Suite project files (.burp) from the command line. Use when searching response headers or bodies with regex patterns, extracting security audit findings, dumping proxy history or site map data, or analyzing HTTP traffic captured in a Burp project.

trailofbits/cairo-vulnerability-scanner

Scans Cairo/StarkNet smart contracts for 6 critical vulnerabilities including felt252 arithmetic overflow, L1-L2 messaging issues, address conversion problems, and signature replay. Use when auditing StarkNet projects.

trailofbits/cargo-fuzz

cargo-fuzz is the de facto fuzzing tool for Rust projects using Cargo. Use for fuzzing Rust code with libFuzzer backend.

trailofbits/chrome-mcp-troubleshooting

Diagnose and fix Claude in Chrome MCP extension connectivity issues. Use when mcp__claude-in-chrome__* tools fail, return "Browser extension is not connected", or behave erratically.

trailofbits/claude-in-chrome-troubleshooting

Diagnose and fix Claude in Chrome MCP extension connectivity issues. Use when mcp__claude-in-chrome__* tools fail, return "Browser extension is not connected", or behave erratically.

trailofbits/code-maturity-assessor

Systematic code maturity assessment using Trail of Bits' 9-category framework. Analyzes codebase for arithmetic safety, auditing practices, access controls, complexity, decentralization, documentation, MEV risks, low-level code, and testing. Produces professional scorecard with evidence-based ratings and actionable recommendations.

trailofbits/codeql

Scans a codebase for security vulnerabilities using CodeQL's interprocedural data flow and taint tracking analysis. Triggers on "run codeql", "codeql scan", "codeql analysis", "build codeql database", or "find vulnerabilities with codeql". Supports "run all" (security-and-quality + security-experimental suites) and "important only" (high-precision security findings) scan modes. Also handles creating data extension models and processing CodeQL SARIF output.

trailofbits/constant-time-analysis

Detects timing side-channel vulnerabilities in cryptographic code. Use when implementing or reviewing crypto code, encountering division on secrets, secret-dependent branches, or constant-time programming questions in C, C++, Go, Rust, Swift, Java, Kotlin, C#, PHP, JavaScript, TypeScript, Python, or Ruby.

trailofbits/constant-time-testing

Constant-time testing detects timing side channels in cryptographic code. Use when auditing crypto implementations for timing vulnerabilities.

trailofbits/cosmos-vulnerability-scanner

Scans Cosmos SDK blockchain modules and CosmWasm contracts for consensus-critical vulnerabilities — chain halts, fund loss, state divergence. 25 core + 16 IBC + 10 EVM + 3 CosmWasm patterns. Use when auditing custom x/ modules, reviewing IBC integrations, or assessing pre-launch chain security. Updated for SDK v0.53.x.

trailofbits/coverage-analysis

Coverage analysis measures code exercised during fuzzing. Use when assessing harness effectiveness or identifying fuzzing blockers.

Skills relacionados