Agent skill

Vulnhunt Fix Verify

by capitalone in capitalone/VulnHunter

Verify that specific findings from a prior /vulnhunt scan have been correctly addressed in a supplied code checkout.

Apache-2.0Auto-check passed

Install Vulnhunt Fix Verify

skills CLI
$ npx skills add capitalone/VulnHunter --skill vulnhunt-fix-verify -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install capitalone/VulnHunter vulnhunt-fix-verify --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/capitalone/VulnHunter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/vulnhunt-fix-verify .claude/skills/vulnhunt-fix-verify && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
vulnhunt-fix-verify
GitHub stars
1.1k
Used in
1 other repo
Token cost
~2.7k tokens
SKILL.md length
1,414 words
Files
7
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

Verify that specific findings from a prior /vulnhunt scan have been correctly addressed in a supplied code checkout.

  • Works in 6 steps: Read this skill file once → Phase 0 (pre-flight) → Phase 1 (extract findings) → …
  • SKILL.md covers Tool allow-list, Kickoff arguments, Phase loading and Workflow, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Vulnhunt Fix Verify is an agent skill from capitalone/VulnHunter. Verify that specific findings from a prior /vulnhunt scan have been correctly addressed in a supplied code checkout. Read-only over the target repo; produces a per-finding verdict JSON.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files (for example `README.md`, `comment_rules.md` and `phases/phase0_preflight.md`).

The repository describes itself as: Agentic AI security tool that applies proactive, attacker-first analysis directly to source code. The licence is Apache-2.0.

Example prompts

  • “/vulnhunt-fix-verify”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Read this skill file once
  2. Phase 0 (pre-flight)
  3. Phase 1 (extract findings)
  4. Phase 2 (per-VULN verification)
  5. Phase 4 (emit final JSON)
  6. Final user-facing message

What it can do on your machine

Read from SKILL.md and the folder at commit 6d25b5c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Vulnhunt Fix Verify loads about 2.7k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 1,414 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~51
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from capitalone/VulnHunter at commit 6d25b5c, republished under its Apache-2.0 licence (© capitalone). 1,414 words, ~2,651 tokens.

Download SKILL.mdSave it as .claude/skills/vulnhunt-fix-verify/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
vulnhunt-fix-verify
description
Verify that specific findings from a prior /vulnhunt scan have been correctly addressed in a supplied code checkout. Read-only over the target repo; produces a per-finding verdict JSON.
trigger
/vulnhunt-fix-verify, user asks to verify a vulnerability fix, user asks whether a security finding has been resolved

VulnHunter Fix-Verify Skill

You are the /vulnhunt-fix-verify orchestrator. Your job is to read a prior /vulnhunt scan, accept the developer's claim that certain findings are fixed, and produce an independent verdict for each one by inspecting the supplied code checkout. The developer's word is not evidence; the code is.

Tool allow-list

You have Read, Write, Edit, Glob, Grep, and Agent. You do not have Bash or any network tool. Consequences:

  • You cannot run shell commands, exploit tests, or git.
  • You cannot create directories — every output path you write must already exist (the caller is responsible for out).
  • You cannot clone or fetch external sources. The orchestrator runs a pre-flight before invoking you that resolves cross-repo references found in developer comments and pre-clones them into ADDITIONAL_REPOS. Anything still outside the trusted roots (REPO plus ADDITIONAL_REPOS) at this point is treated as unverifiable per R2 — record it in the rationale and continue; do not halt.
  • You can dispatch subagents via the Agent tool, but it's not required. The phase files are procedures you execute yourself; dispatching is a tool for context isolation and parallelism when the workload calls for it. For 1–3 finding runs, inline is fine. Subagents inherit the same envelope: no Bash, no network, read-only over the trusted roots.

Kickoff arguments

The user invokes you with named arguments in the prompt. Parse them into these variables; reject the request if any required argument is missing or non-absolute:

VariableRequiredMeaning
REPOyesAbsolute path to the fixed-code checkout.
REPORTyesAbsolute path to the prior *_VULNHUNT_RESULTS_* directory.
FIXEDyesComma-separated VULN-NNN list, e.g. VULN-001,VULN-003.
OUTyesAbsolute path to an already-existing directory. All outputs land here.
COMMENTSnoAbsolute path to a free-form markdown file (typically a GitHub issue body).
ADDITIONAL_REPOSnoComma-separated absolute paths to additional read-only checkouts. Supplied by the orchestrator's pre-flight when developer comments reference external repositories that resolve to a clonable URL. Each path must exist at kickoff.

The trusted roots are REPO plus every path in ADDITIONAL_REPOS. Anything outside that set is off-limits to your reads.

If anything is missing, malformed, or non-absolute, stop immediately and tell the user what's wrong. Do not invent defaults.

Phase loading

Phases live under ${CLAUDE_SKILL_DIR}/phases/. Each phase file is a procedure, not a subagent prompt — you execute the procedure yourself. You have Agent available and may dispatch subagents when you judge they're useful (e.g. to keep your own context clean while verifying a finding that spans many files, or to parallelize across many findings). For a typical 1–3 finding run, inline is fine.

After each phase, check the file-existence signals described below before continuing.

PhaseFileSynchronization signal
0phases/phase0_preflight.mdWrites ${OUT}/phase0_state.json.
1phases/phase1_extract.mdWrites ${OUT}/extracted_findings.md.
2phases/phase2_verify.mdWrites one ${OUT}/disposition_VULN-NNN.json per ID in FIXED.
4phases/phase4_emit.mdWrites ${OUT}/verify_disposition.json.

Phase 3 is intentionally absent (reserved for exploit-test replay, a future scope per the design doc).

If a phase file is missing, stop the entire workflow and tell the user: "Phase file not found at [path]. The skill is not installed correctly. Run install.sh from the vulnhunter repository root." Do not improvise — a missing phase file is fatal.

Workflow

Step 0 — Read this skill file once

Bind the kickoff arguments to REPO, REPORT, FIXED, OUT, and COMMENTS (if provided). All later references to these variables in phase files mean the values you bound here.

Step 1 — Phase 0 (pre-flight)

Read phases/phase0_preflight.md and execute it inline. It will:

  1. Glob REPO, REPORT, OUT, and every path in ADDITIONAL_REPOS to confirm each exists. If OUT does not exist, you cannot create it — fail with a clear error. A missing ADDITIONAL_REPOS entry is also fatal (the caller asked you to consult it and it isn't there).
  2. Read REPORT's scan_manifest.json (or README.md fallback) and confirm every ID in FIXED appears.
  3. If COMMENTS was provided, evaluate each claim against comment_rules.md. A claim that references a path under any trusted root counts as local; a claim that references a path outside every trusted root is classified as rejected_unverifiable under R2 (the agent's pre-flight already attempted to resolve cross-repo references — anything still unresolved at this point is non-actionable).
  4. Write ${OUT}/phase0_state.json and continue. Partial misses are fine: IDs that aren't in the report are recorded in fixed_ids_missing and become INVALID_INPUT stubs at phase 4. Only when every ID is missing does fixed_ids_in_report come out empty — and in that case phases 1 and 2 have nothing to do; the orchestrator skips them and routes straight to phase 4 (see "After phase 0" below).

When phase 0 wrote phase0_state.json with an empty fixed_ids_in_report (every supplied FIXED ID was missing from the report), phases 1 and 2 have no work to do. Skip them and run phase 4 directly. Phase 4 will emit verify_disposition.json containing one INVALID_INPUT entry per missing ID.

Step 2 — Phase 1 (extract findings)

Read phases/phase1_extract.md and execute it. It produces ${OUT}/extracted_findings.md with one ## VULN-NNN section per ID in fixed_ids_in_report. You may dispatch a subagent for this if you prefer to keep the report parsing out of your context — for small reports inline is fine.

After the file is written, do not Read it in full. Phase 2 reads only one section at a time.

Show full SKILL.md (554 more words)Show less
Step 3 — Phase 2 (per-VULN verification)

Read phases/phase2_verify.md once. Then for each VULN-NNN in fixed_ids_in_report, execute the gate procedure against that finding and write ${OUT}/disposition_VULN-NNN.json.

When the procedure is useful to parallelize (typically when fixed_ids_in_report has more than a few entries, or when individual findings would crowd your context), dispatch one general-purpose subagent per VULN in a single message — they run in parallel. Each subagent's prompt should include the finding ID, REPO, OUT, and a pointer to its ## VULN-NNN section in ${OUT}/extracted_findings.md, and tell it to follow phases/phase2_verify.md and write ${OUT}/disposition_VULN-NNN.json. When inline is simpler, run the procedure yourself, one VULN at a time.

SYNCHRONIZATION BARRIER — mandatory before continuing to Step 4:

When you dispatched subagents, their Agent tool calls are in-flight. You must not check for output files or proceed to phase 4 until every Agent tool-result block has been received (i.e., the tool-result content for every Agent call you issued appears in your context). Do NOT issue a Glob for disposition files in the same turn as the Agent calls — wait for the tool results first. Only after all Agent tool results have arrived should you Glob for the disposition files.

After all Agent tool results have been received, Glob for ${OUT}/disposition_*.json. If any per-VULN file is missing, re-do that finding (inline or via a fresh subagent). If a specific VULN still can't produce a disposition after one retry, write a stub INCONCLUSIVE for it with a rationale noting the failure and continue — a partial result is preferable to halting the whole run.

Step 4 — Phase 4 (emit final JSON)

Read phases/phase4_emit.md and execute it inline. It will:

  1. Read ${OUT}/phase0_state.json for target_repo and comments_evaluation.
  2. Read each ${OUT}/disposition_VULN-NNN.json.
  3. Assemble the final document.
  4. Write ${OUT}/verify_disposition.json validated against the shape in verify_disposition.schema.json at the repo root.
Step 5 — Final user-facing message

Output a concise summary to the user: one line per VULN with its verdict, plus a count summary. Example:

Verify complete.

  VULN-001  FIXED
  VULN-003  PARTIAL  (sweep found unaddressed instance at templates/admin/profile.html:9)
  VULN-007  NOT_FIXED  (sink at db/raw.go:42 still uses fmt.Sprintf)

  Summary: 1 FIXED, 1 PARTIAL, 1 NOT_FIXED
  Output:  /work/verify-2026-06-27/verify_disposition.json

Do not paste the full JSON inline; the user will read the file.

Operating principles

  1. Code is the source of truth. Anything stated in COMMENTS is a hint; the verdict stands or falls on what you read in REPO.
  2. No bridging assumptions. If you can't find the original location in REPO and Grep can't find a successor, the gate is skipped and the verdict is INCONCLUSIVE — do not guess.
  3. Fail-closed on schema drift. Every JSON you write must match verify_disposition.schema.json at the repo root. If you're unsure whether a field is required, check the schema.
  4. Read-only over the target. You inspect REPO; you do not modify it. The same applies to REPORT — those artifacts are historical record.
  5. Be terse in evidence. Each evidence entry is one sentence plus a file:line citation. Avoid restating the rationale.

Stopping rules

  • Every ID in FIXED was missing from the report → phase 0 records them in fixed_ids_missing and writes phase0_state.json with an empty fixed_ids_in_report. Skip phases 1 and 2, run phase 4 directly; it emits an all-INVALID_INPUT disposition document. Partial misses are not a stop signal — they flow through phase 4 as stubs alongside the real verdicts.
  • Any phase file missing → stop with the installation-error message above. Do not improvise.
  • All four gates skipped for a finding → verdict is INCONCLUSIVE, not FIXED. Absence of contradiction is not evidence of a fix.

© capitalone, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files in vulnhunt-fix-verify of capitalone/VulnHunter.

  • SKILL.md
  • README.md
  • comment_rules.md
  • phases/phase0_preflight.md
  • phases/phase1_extract.md
  • phases/phase2_verify.md
  • phases/phase4_emit.md

Open the folder on GitHubat commit 6d25b5c

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in capitalone/VulnHunter, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Vulnhunt Fix Verify next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Vulnhunt Fix Verify compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vulnhunt Fix Verify this skillcapitalone/VulnHunter1.1k1 repos~2.7kAutomated safety check: PassApache-2.0
Scanwshobson/agents40k—~2.2kAutomated safety check: PassMIT
Repo Scanaffaan-m/ECC276k—~1.5kAutomated safety check: PassMIT
Repo Scanaffaan-m/ECC276k—~1.3kAutomated safety check: PassMIT
Vulnerability Scanningsickn33/agentic-awesome-skills47k1 repos~2.8kAutomated safety check: PassMIT
Repo Scanaffaan-m/ECC276k1 repos~1.8kAutomated safety check: PassMIT

Similar skills

  • Scan

    wshobson/agents

    Scans the codebase to generate project-doc.md and AGENTS.md.

    40k GitHub stars~2.2k tokensUpdated 6 days ago
    Agent WorkflowsAuto-check passed
  • Repo Scan

    affaan-m/ECC

    固定されレビュー可能なコミットから外部の repo-scan スキルをインストールするブートストラップ用ポインター。クロススタックのソースコード資産監査を実行する前に repo-scan のインストールが必要な場合に使用する。この ECC ポインター自体は監査を実行しない。

    276k GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Repo Scan

    affaan-m/ECC

    用于从固定且可审查的提交安装外部 repo-scan 技能的引导指针。在运行跨栈源代码资产审计前需要安装 repo-scan 时使用;此 ECC 指针本身不执行审计。

    276k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Vulnerability Scanning

    sickn33/agentic-awesome-skills

    Scan systems and dependencies for CVEs and security vulnerabilities.

    47k GitHub starsUsed in 1 repo~2.8k tokens
    SecurityAuto-check passed
  • Repo Scan

    affaan-m/ECC

    Bootstrap pointer that installs the external repo-scan skill from a pinned, reviewable commit.

    276k GitHub starsUsed in 1 repo~1.8k tokens
    DevelopmentAuto-check passed
  • Security Scan

    affaan-m/ECC

    Scan your Claude Code configuration (.claude/ directory) for security vulnerabilities, misconfigurations, and injection risks using AgentShield.

    276k GitHub starsUsed in 5 repos~1.1k tokens
    Agent WorkflowsAuto-check passed

More from capitalone/VulnHunter

  • Vulnhunter Fix

    capitalone/VulnHunter

    Automate vulnerability remediation from VulnHunter scan results using TDD.

    1.1k GitHub starsUsed in 1 repo~7.9k tokens
    Auto-check: warnings
  • Vulnhunt

    capitalone/VulnHunter

    Scan a codebase for exploitable security defects. An agent skill from capitalone/VulnHunter.

    1.1k GitHub starsUsed in 1 repo~5k tokens
    Auto-check passed

Questions about Vulnhunt Fix Verify

What does Vulnhunt Fix Verify do?

Verify that specific findings from a prior /vulnhunt scan have been correctly addressed in a supplied code checkout. Vulnhunt Fix Verify is an agent skill from capitalone/VulnHunter. Verify that specific findings from a prior /vulnhunt scan have been correctly addressed in a supplied code checkout.

How do I install Vulnhunt Fix Verify in Claude Code?

Run `npx skills add capitalone/VulnHunter --skill vulnhunt-fix-verify -a claude-code`. Or copy the skill folder (vulnhunt-fix-verify in capitalone/VulnHunter) into .claude/skills/vulnhunt-fix-verify in your project. Claude Code loads it when a task matches its description.

How do I install Vulnhunt Fix Verify in Codex?

Run `npx skills add capitalone/VulnHunter --skill vulnhunt-fix-verify -a codex`. Or copy the skill folder (vulnhunt-fix-verify in capitalone/VulnHunter) into .agents/skills/vulnhunt-fix-verify in your project. Codex loads it when a task matches its description.

Can I use Vulnhunt Fix Verify in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add capitalone/VulnHunter --skill vulnhunt-fix-verify -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vulnhunt-fix-verify, .gemini/skills/vulnhunt-fix-verify, .github/skills/vulnhunt-fix-verify and .opencode/skills/vulnhunt-fix-verify in your project.

What does Vulnhunt Fix Verify need to run?

SKILL.md names no scripts, command-line tools or credentials: Vulnhunt Fix Verify is instructions for the agent only.

Does Vulnhunt Fix Verify access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Vulnhunt Fix Verify safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Vulnhunt Fix Verify use?

Vulnhunt Fix Verify is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Vulnhunt Fix Verify use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Vulnhunt Fix Verify?

Skills that share tags, products or a category with Vulnhunt Fix Verify: Scan (wshobson/agents, 40k stars), Repo Scan (affaan-m/ECC, 276k stars), Repo Scan (affaan-m/ECC, 276k stars) and Vulnerability Scanning (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vulnhunt Fix Verify?

capitalone (a GitHub organization) maintains it in capitalone/VulnHunter, which has 1,086 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.

Source: capitalone/VulnHunter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.