Use when reviewing a set of changes before they merge in a Repowise-indexed repository, a PR, a branch diff, or the working-tree changes you just made. Activates for "review this PR", "is this safe to merge", "what is the blast radius of these changes", or "did I miss anything".
72
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
When a diff is on the table, Repowise turns "what files changed" into "what does this change put at risk" — fusing git history (churn, ownership, co-change) with graph topology (dependents, impact surface), test gaps, security signals, and the architectural decisions that govern the touched code.
Two complementary risk signals, use both:
get_change_risk(revspec=…) (MCP) scores the whole change as one unit (a
commit or a base..head range) from its diff shape: a single 0-10 defect-risk
score with drivers (lines added/deleted, files, directories, subsystems,
change entropy, author familiarity). No LLM, no network. Prefer this in-MCP
tool; it takes a revspec and diffs server-side, so you never shell out. Lead
with risk_percentile (this change ranked against sampled recent commits),
summarized by review_priority and classification. score is calibrated
per single commit, so a PR-sized change reads high by construction, and
fallback_band appears only when there was no baseline to rank against.
Omit revspec to score uncommitted work. This is the pre-merge gate: "how risky is this
change overall?" The repowise risk <revspec> CLI is the identical scorer for
when you are already in a terminal.get_risk(changed_files=…) (MCP) works per file and returns the
directive block, the specific things to check inside the diff.get_change_risk(revspec="main..HEAD") # HEAD, a commit SHA, or base..headRead risk_percentile and the top drivers: a high score from large diffusion
(many dirs/subsystems) or low author familiarity tells you where to look
hardest. extensions=[".py", ".ts"] counts only certain file types;
exclude_patterns=["tests/"] omits paths. A warning field means the revspec
or filters matched no files, so an all-zero score there is not a clean bill of
health. The equivalent from a terminal is repowise risk <revspec> (add
--ext .py,.ts or --format json).
Call get_risk in PR mode by passing the changed files:
get_risk(targets=<changed files>, changed_files=<same changed files>)The response carries a directive block — read it first, it's a few short lists:
will_break — files/symbols that depend on what changed but are not in
the diff. These are the likely breakages. Check each one.missing_cochanges — files that historically change together with the
changed files but were left untouched. Often a forgotten update.missing_tests — changed code with a test gap. Flag for new/updated tests.tests_to_run: the positive complement of missing_tests, the tests that
exercise the changed files. Recommend running these to validate the change.
Read tests_to_run_basis with it: measured means a coverage map proves
those tests execute the changed files (pytest-runnable ids); inferred means
the call graph shows those test files reaching the change, with the import
graph filling in where it is silent, which needs no coverage ingest but is a
candidate list, so say so rather than presenting it as proof; none with an empty list is "unknown", never "no tests exist".pr_blast_radius holds the fuller dossier behind those lists (including the
per-changed-file guarding_tests breakdown behind tests_to_run).
For the line-precise version from a terminal, repowise impacted-tests <revspec>
maps each changed line to the tests whose recorded coverage touches it, then
prints the ids (--format list | xargs pytest runs exactly them). It is honest
about gaps: a changed file with no coverage rows is a labelled filename guess,
and a brand-new file is "unknown, run the full suite", never "no tests needed".
get_why(query="<file>") — don't let a change silently contradict a recorded
architectural decision. Surface conflicts_with / supersedes hits.get_health(targets=<changed files>, include=["biomarkers"]) — call out new complexity, deep nesting, or
duplication the diff introduced.get_risk ownership + co-change signals suggest the
people with the most context on the touched code.gh pr diff <number> (or gh pr view <number> --json files).git diff --name-only main...HEAD.git status --porcelain.repowise risk main..HEAD scores a branch/PR range
for defect risk directly.Lead with a risk level and the directive findings, each tied to a concrete
file. Distinguish "will break" (a dependent outside the diff) from "worth a
look" (a co-change or health regression). Don't pad with findings the tools
didn't support.
If get_risk errors or returns nothing, the MCP server may be down or the repo
unindexed — say so and review from the raw diff, noting that Repowise context was
unavailable. Suggest /prompts:repowise-init if the repo isn't indexed.
363a476
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.