agentic-actions-audito…
Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI,…
Runs an autonomous review-and-fix improvement loop over a Claude Code skill until a review comes back clean, with a cross-round findings ledger, escalation when fixes stop converging, and a mechanical scope guard. Reviews are performed by the plugin-dev skill-reviewer agent. Use
Claude Code
$ npx -y skills add trailofbits/skills --skill skill-improver --agent claude-code
Codex
$ npx skills add trailofbits/skills --skill skill-improver -a codex -y
Cursor
$ npx skills add trailofbits/skills --skill skill-improver -a cursor -y
Gemini CLI
$ npx skills add trailofbits/skills --skill skill-improver -a gemini-cli -y
GitHub Copilot
$ npx skills add trailofbits/skills --skill skill-improver -a github-copilot -y
OpenCode
$ npx skills add trailofbits/skills --skill skill-improver -a opencode -y
Windsurf
$ npx skills add trailofbits/skills --skill skill-improver -a windsurf -y
name: skill-improver
description: "Runs an autonomous review-and-fix improvement loop over a Claude Code skill until a review comes back clean, with a cross-round findings ledger, escalation when fixes stop converging, and a mechanical scope guard. Reviews are performed by the plugin-dev skill-reviewer agent. Use to fix skill quality issues, iteratively refine a skill, or resume a loop after an escalation ('fix my skill', 'improve this skill until it passes review', 'skill improvement loop'). NOT for a one-time review — use the plugin-dev skill-reviewer agent directly."
argument-hint: "<SKILL_NAME_OR_PATH> [--max-rounds N]"
allowed-tools: Bash Glob Read TaskOutput TaskStop WorkflowImprove a Claude Code skill by running `/code-improver:improve` — a dynamic workflow that loops a reviewer and a fixer subagent until a review reports zero critical/major findings, then strips its own residue. This entry point wires the loop to the `plugin-dev:skill-reviewer` agent, so the **plugin-dev plugin must be installed** (marketplace `claude-plugins-official`). The loop, its ledger, and its guards live in the workflow; this skill resolves the target and relays the outcome.
The user provided: `$ARGUMENTS` (if empty, take the target skill from the conversation).
1. If the input ends with `/SKILL.md` and the file exists, use its directory 2. If the input is a directory containing `SKILL.md`, use that path 3. Otherwise `Glob(pattern="**/SKILL.md")` and filter by skill name or path substring:
Resolve [`improve.js`](../../workflows/improve.js) from this SKILL.md's installed location to an absolute path and confirm the file exists. Its plugin directory is `pluginRoot`. Use this exact plugin copy; if the file is missing, stop.
Run it with the Workflow tool, `{scriptPath: "<the path from step 2>", args: {...}}`:
{
"target": "<resolved absolute path>",
"reviewer": {
"kind": "agent",
"name": "plugin-dev:skill-reviewer",
"notes": "The target is a Claude Code skill directory; review it as a skill (frontmatter, triggering description, progressive disclosure, referenced files)."
},
"pluginRoot": "<the plugin directory from step 2>",
"maxRounds": 5
}touch; by default the workflow scopes to the skill's plugin directory.
The workflow runs in the background and needs no babysitting: it reviews, fixes, re-reviews, checks scope after every fix round, and can only complete on a clean review. It never commits; all changes stay in the working tree.
**If the Workflow tool is unavailable or denied, stop and say so.** Do not improvise the loop inline with direct edits — the ledger, scope guard, and escalation guarantees live in the workflow, and an inline imitation has none of them (observed failure: an inline fallback "fixed" a finding by weakening the documented guarantee, exactly what the loop exists to prevent).
**If the result is `halted: "reviewer-unavailable"`, relay it and stop.** The reviewer this skill names is not installed; tell the user to install the `plugin-dev` plugin from the `claude-plugins-official` marketplace and re-run. Do not review the skill yourself.
**Do not end your turn while the loop is running.** The Workflow tool returns a task id immediately; the result comes later. In an interactive session the completion notification re-invokes you — wait for it. In a non-interactive run (scripted, CI, eval) there is no later turn: stopping abandons the loop mid-round, so after launching, poll the task (TaskOutput with the returned task id, or sleep-and-recheck) until it completes, then relay the result. A session that answers "the loop is running, I'll report later" has lost the run.
The workflow returns a structured result. Report it honestly — the distinctions matter:
Report rounds used, remaining minor findings (`open_minor_count`), and the artifact paths (`ledger_path`, `metrics`).
issues. Say plainly: **capped, NOT converged**, and list `open_blocking`. Do not present this as success.
non-decreasing counts, or a fix relocating a problem). Relay the escalation message and finding ids to the user: this needs a design decision, not more rounds.
unavailable reviewer, or a finalize pass whose own edits failed the check that follows it). Relay the paths in `violations`/`new_untracked_files`, the sites in `finalize_regressions`, and the notes.
such as "a git repository was initialized".
The loop stops on escalation by design. When the user decides (e.g. "keep the blocklist and document the limitation"), start a fresh run with the same `target` plus:
{ "decision": "<the user's ruling, verbatim>" }The new run reloads the on-disk ledger, so every finding, rejection, and verdict carries over — rounds restart, re-derivation does not.
To stop a running loop, stop the workflow task (TaskStop); the ledger on disk is current to the last round and a re-run resumes from it.
Trail of Bits skills and plugins for AI-assisted security analysis, testing, and development. Install this marketplace in Claude Code or Codex, or import it into your ChatGPT workspace marketplace.
Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI,…
Understand a codebase before looking for bugs in it - what each function assumes, what it guarantees, and what it depends on…
Scans Algorand smart contracts for 11 common vulnerabilities including rekeying attacks, unchecked transaction fees, missing…
Prepares codebases for security review using Trail of Bits' checklist. Helps set review goals, runs static analysis tools,…
Scans Cairo/StarkNet smart contracts for 6 critical vulnerabilities including felt252 arithmetic overflow, L1-L2 messaging…
Systematic code maturity assessment using Trail of Bits' 9-category framework. Analyzes codebase for arithmetic safety, auditing…
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…
Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys)…
Clean and finalize authorized natural-language text intended for readers by auditing suspicious invisible Unicode and rewriting…