repo-cve-reachability

repo-cve-reachability is a skill for Claude Code from mappedsky/seizu. It costs 48 tokens per session (2,366 once invoked), scanned A, original, Apache-2.0.

A repository investigation skill that checks whether a known software vulnerability can actually be reached through the project's own code.

In plain words
What is it for?
Use it to inspect source files, dependency manifests, lockfiles, imports, and calls for selected CVEs using GitHub repository evidence.
Why use it?
A vulnerable package may be installed without the vulnerable part being used; this review separates that possibility from practical exposure.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: mentions subagents.

Not installable: its command points at a path on the author’s own machine, so it runs nowhere else. The line is /home/user/seizu_results/.

Good fit Use it to inspect source files, dependency manifests, lockfiles, imports, and calls for selected CVEs using GitHub repository evidence.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

There is no command for this one: it runs only inside a plugin, and the catalogue could not identify which plugin ships it. The source is linked below.

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for repo-cve-reachability

README.md
[![agentmods](https://agentmods.dev/badge/skills/mappedsky/seizu/repo-cve-reachability/github.svg)](https://agentmods.dev/skills/mappedsky/seizu/repo-cve-reachability)
Your own site
<a href="https://agentmods.dev/skills/mappedsky/seizu/repo-cve-reachability"><img src="https://agentmods.dev/badge/skills/mappedsky/seizu/repo-cve-reachability/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for repo-cve-reachability

Your own site · 80×15
<a href="https://agentmods.dev/skills/mappedsky/seizu/repo-cve-reachability"><img src="https://agentmods.dev/badge/skills/mappedsky/seizu/repo-cve-reachability.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 48 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,366 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00048 $0.02366
Opus 5 $0.00024 $0.01183
Sonnet 5 $0.00010 $0.00473
Haiku 4.5 $0.00005 $0.00237

Measured 12d ago against content hash 119a0a6505c2, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

repo-cve-reachability scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

- The sub-agent reaches GitHub **through those tools, not the network** — the sandbox has no outbound internet access, so `curl`/`urllib` against `api.github.com` or `raw.githubusercontent.com` always fails. If a delegat
.config/dev/seizu/plugins/github-security-investigations/skills/repo-cve-reachability/SKILL.md · 68 lines

How it starts

The opening of the file, as written. The whole thing — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Decide whether each of these CVEs is reachable in the code of repo, not merely present in its dependency graph.

Inputs — the values arrive in the ## Inputs block below these instructions:

  • repo — use the resolved owner/name fullname from the findings step.
  • findings — when this is empty, the CVEs to review are the ones the findings review produced, which you already have in this step's context. Use those. An empty value here is normal and is not a reason to stop.
  • ref — branch, tag, or commit SHA; empty means the default branch.
  • max_cves — the most advisories to assess. Treat it as a hard cap: rank by severity, then EPSS, assess that many, and say which you did not reach and why.

Tool arguments — use exactly these field names:

  • ext__github__get_file_contents: owner, repo, path, ref (path / lists the repository root; a path ending in / lists that directory)
  • ext__github__search_code: query (GitHub code-search syntax, e.g. repo:owner/name path:*.py "import yaml"), perPage
  • ext__github__list_commits: owner, repo, sha, path, perPage
  • ext__github__get_commit: owner, repo, sha
  • ext__github__list_branches: owner, repo
  • github_security__repo_dependencies: repos, packages, manifest, org, limit Split repo on / into owner and repo for every ext__github__* call.

Check the owner before you read anything. repo may carry an owner that nobody verified — a plan step or a requester can put the upstream project's org on a name that the graph holds under a different one. The findings step resolved the real fullname; if what you were given disagrees with it, use the resolved one and say so in the output. If neither the findings step nor github_security__repo_risk_summary (with org="" and the bare name) can place this repository in the graph, stop and report that — do not read a repository the graph has no record of. Reading the upstream project instead of the scanned fork produces verdicts about a codebase nobody asked about, and they look correct.

Do this work in the sandbox. sandbox__delegate reads tool results with far larger bounds than you have — tens of thousands of rows and megabytes against your 100 rows and 200KB — and anything oversized is written to a file under /home/user/seizu_results/ and returned as a receipt the sub-agent parses with run_python. Reading a large lockfile or sweeping many search hits is exactly that shape of work, and doing it in your own context is what exhausts the run.

How to delegate:

  • Name every tool the task needs in the delegation's tools argument: ext__github__get_file_contents, ext__github__search_code, ext__github__list_commits, github_security__repo_dependencies. Naming them is what binds them. A delegation that omits tools leaves the sub-agent hunting for capability it has not been given, and it will spend the budget failing to find it.
  • Pass the finding list as the delegation's input_data, and ask for a per-CVE verdict with cited path:line evidence.
  • The sub-agent reaches GitHub through those tools, not the network — the sandbox has no outbound internet access, so curl/urllib against api.github.com or raw.githubusercontent.com always fails. If a delegation reports network errors it took the wrong route; re-issue it with the tools named.
  • Have it list the tree and search the code. Never hand it a guessed list of candidate filenames to probe.
  • Ask for independent lookups together, not one at a time. Each round trip to the sub-agent costs a model call, and the searches for different advisories do not depend on each other: issue every ext__github__search_code for the current batch of advisories in one turn, then read every hit site that came back in the next. Only work that genuinely needs a previous result — reading a file the search just located, or following a commit a diff pointed to — has to wait for it.

What to establish for each CVE:

  1. Fix the ref. When ref is empty, call ext__github__list_branches once to find the default branch and use it for every later call.
  2. Locate the vulnerable API. Search with ext__github__search_code scoped to repo: + the fullname for imports/requires of the package and, more importantly, calls into the specific function, class, or configuration flag the advisory names. Read the hit sites with ext__github__get_file_contents — search results alone are not evidence of reachability.
  3. Trace untrusted input. Does attacker-controlled data (HTTP bodies, query params, uploaded files, webhook payloads, CI inputs from forks) flow into that call? Read the surrounding handler or entrypoint rather than guessing from the file name.
  4. Look for mitigations: input validation or allowlists, the feature disabled by default, a non-privileged context, a pinned safe version elsewhere.
  5. Check whether it is already fixed but not yet re-synced: ext__github__list_commits on the manifest or lockfile path, and ext__github__get_commit for a promising SHA.
  6. ext__github__search_code only indexes the default branch and can lag. If a search returns nothing, say so and fall back to directory listings before concluding the package is unused.
  7. A package with no direct import may still arrive through another dependency. Ask ext__deps__depsdev_find_dependency_path (system, name, version, target) whether the intermediate pulls it in, and ext__deps__depsdev_get_requirements for the range it declares. Never state a version pin or compatibility range from memory — the security graph records installed versions, not declared requirements, and the sandbox has no network to check them. If those tools cannot answer, say the relationship is undetermined rather than asserting one.
  8. A transitive dependency's code still runs. No direct import means the repository does not call the package itself; it does not mean the vulnerable code is unused, because the intermediate that pulls it in is calling it. Name that intermediate (step 7), then establish whether the repository's use of the intermediate reaches what the advisory names: which of the intermediate's entry points this repository calls, and whether the advisory's function, feature or flag sits underneath them. Read the intermediate's source with ext__github__get_file_contents when you can identify its repository. What settles it is evidence about the intermediate: a cited call site in its source, or its own documentation stating it does not use the affected feature. Evidence about this repository cannot settle it, because this repository is not the caller. The absence of a direct import is what makes the package transitive — it is the precondition for this step, never its answer. Where you cannot get evidence about the intermediate, that is Undetermined.

Read the full file on GitHub · 68 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 68 lines · 48 tokens per session scan A 119a0a6505c2

Subscribe to this mod's changes

repo-cve-reachability is a skill published in the GitHub repository mappedsky/seizu (5 stars, last pushed today), licensed Apache-2.0. It adds 48 tokens to every session and 2,366 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

tutti-agent-workspace-app

Build or evolve a complex agent-enabled Tutti workspace app repository. Use for Tutti apps with web/server/shared monorepos, @tutti-os/agent-acp-kit local agent runtimes, kit-owned TUTTICLI agent/composer discovery, dynamic agent catalogs, run-scoped MCP tool gateways, app-owned package builders, web-first debugging…

tutti-os/tutti · 106 tokens

assimilate-popular-workflows

This skill should be used when the user asks to "find skills in the wild", "assimilate popular workflows", "discover SKILL.md files in repos", "research external skills", "find workflow patterns", "survey the skill landscape", "what skills exist out there", or wants to investigate public repositories for extractable…

a5c-ai/babysitter · 110 tokens

mcp-app-verification

Comprehensive verification checklists for MCP Apps. Tests with basic-host reference, validates handler-before-connect, text fallback, resource URI linking, single-file bundling, host styling, CSP, and legacy pattern detection.

a5c-ai/babysitter · 48 tokens

verification-suite

Plan structure validation, phase completeness checks, reference integrity verification, and artifact existence confirmation. Provides the structured verification layer ensuring GSD artifacts are well-formed and complete.

a5c-ai/babysitter · 36 tokens

mcp-app-scaffolding

Scaffolds MCP App project structure with correct directory layout, dependencies, entry points, and framework-specific templates. Handles React (useApp hook), Vanilla JS, Vue, Svelte, Preact, and Solid.

a5c-ai/babysitter · 50 tokens

mcp-csp-investigation

Comprehensive Content Security Policy audit for MCP Apps in sandboxed iframes. Discovers all network origins, traces them to source, and generates CSP configuration for registerAppResource.

a5c-ai/babysitter · 43 tokens