Skip to content
Development
Skill

/change-review

Use when reviewing a set of changes before they merge — a PR, a branch diff, or the working-tree changes you just made — in a Repowise-indexed codebase (.repowise/ directory exists). Activates for "review this PR", "is this safe to merge", "what's the blast radius of these

From plugin
repowise
8.1k8 skills17 commands1 MCP

Claude Code

$ npx -y skills add repowise-dev/repowise --skill change-review --agent claude-code

SKILL.md

change-review.SKILL.md
name: change-review
description: >
  Use when reviewing a set of changes before they merge — a PR, a branch diff, or the working-tree
  changes you just made — in a Repowise-indexed codebase (.repowise/ directory exists). Activates
  for "review this PR", "is this safe to merge", "what's the blast radius of these changes", "did I
  miss anything", or "what else should change with this".
user-invocable: false

Change Review with Repowise

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). No LLM, no network. Prefer this in-MCP tool; it takes a revspec and diffs server-side, so you never shell out. Lead with `directive` and `health_delta` — what the change actually made worse. Findings the change wrote sort above pre-existing ones it only touched. Then `risk_percentile` (this change ranked against sampled recent commits by diff size and spread, not a bug predictor), stated in one line by `diff_shape`; `include=["scales"]` adds its `review_priority` tercile and `classification` label. The raw 0-10 `score` ranks 0.99 against lines added, so it sits behind `include=["diagnostics"]` rather than on the wire. 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.

Score the whole change first

get_change_risk(revspec="main..HEAD")   # HEAD, a commit SHA, or base..head

Read `directive` first: `status`, a `headline` naming what got worse, the `reasons` behind it and `next_actions` to run. `health_delta` carries the findings the change introduced or resolved. Then `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, or a `directive.status` of `unknown`, 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`).

Then drill into the per-file directive

Call `get_risk` in **PR mode** by passing the changed files:

get_risk(targets=<changed files>, changed_files=<same changed files>)

The response carries its own `directive` block, per file rather than per change (distinct from `get_change_risk`'s) — read it first, it's a few short lists:

  • **`may_break`** — files/symbols that import their way to what changed but are

*not* in the diff. Reachability, not a diff: it says these depend on the changed files, not that the thing they use changed. 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 tests the change needs, from the same selection

`repowise impacted-tests` makes, with **`tests_to_run_why`** giving each one's reason (the changed file and its evidence, or "runs with every subset"). Check **`tests_run_all`** first: when it is true no smaller set can be vouched for, **`tests_run_all_reasons`** says why, and the list is only what to run first; recommend the whole suite. When it is false the list is the set to run. **`tests_to_run_basis`** is `measured` when stored per-test coverage decided a changed file and `inferred` when only the dependency graph or a rule did; say which. **`tests_status`** appears only when no selection could be made (`timeout`, `config_invalid`, `unknown`, ...), and then every test must run.

`get_change_risk` carries the same answer as **`impacted_tests`**: `status` (`selected` or `run_all`, or why nothing was selected), `run_all`, `reasons`, `tests_to_run` and `why`. `include=["blast"]` on `get_risk` adds `pr_blast_radius`, the fuller dossier behind the directive's lists.

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".

Then go deeper where it matters

1. **Why does this code exist?** For any non-trivial changed file, call `get_why(query="<file>")` — don't let a change silently contradict a recorded architectural decision. Surface `conflicts_with` / `supersedes` hits. 2. **Did the change make health worse?** `get_health(targets=<changed files>, include=["biomarkers"])` — call out new complexity, deep nesting, or duplication the diff introduced. 3. **Who should review?** `get_risk` ownership + co-change signals suggest the people with the most context on the touched code.

Getting the diff

  • A GitHub PR: `gh pr diff <number>` (or `gh pr view <number> --json files`).
  • A branch: `git diff --name-only main...HEAD`.
  • Working tree: `git status --porcelain`.
  • CLI shortcut for a range: `repowise risk main..HEAD` scores a branch/PR range

for defect risk directly.

Write the review around evidence

Lead with a risk level and the `directive` findings, each tied to a concre

Read more
@repowise-dev
Ships withrepowise

Codebase intelligence for AI and humans: code health scores, auto-generated docs, git analytics, dead code detection, and architectural decisions via MCP.

8.1k8 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
8.1k
Star history of repowise-dev/repowise on GitHub, a chart by star-history.com

Other skills on repowise.

code-health

code-health

Use when the user asks about code health, code quality, complexity, technical debt, which files are risky or hard to maintain,…

codebase-exploration

codebase-exploration

Use when exploring, understanding, or answering questions about a codebase that has Repowise indexed (a .repowise/ directory in…

dead-code-cleanup

dead-code-cleanup

Use when the user asks about cleanup, removing unused code, refactoring, reducing bundle size, or identifying dead code in a…

pre-modification

pre-modification

Use before modifying, refactoring, or deleting files in a codebase that has Repowise indexed (indicated by a .repowise/…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about change-review.

Which coding agents can use change-review?
change-review installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.