/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
$ npx -y skills add repowise-dev/repowise --skill change-review --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/change-review
Context preview
The summary Claude sees to decide when to auto-load this skill.
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
SKILL.md
change-review.SKILL.mdname: 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) 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` / `level` are the corpus-calibrated fallback. 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 `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`).
Then drill into the directive block
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 the
per-test coverage map proves execute the changed files (pytest-runnable ids). Recommend running these to validate the change. Empty until a coverage map is ingested (`repowise coverage add`); empty 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".
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 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.
Error handling
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 `/repowise:init` if the repo isn't indexed.
Read more
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) 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` / `level` are the corpus-calibrated fallback. 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 `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`).
Then drill into the directive block
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 the
per-test coverage map proves execute the changed files (pytest-runnable ids). Recommend running these to validate the change. Empty until a coverage map is ingested (`repowise coverage add`); empty 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".
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 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.
Error handling
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 `/repowise:init` if the repo isn't indexed.
Codebase intelligence for AI and humans: code health scores, auto-generated docs, git analytics, dead code detection, and architectural decisions via MCP.
Repo: repowise-dev/repowise
Other skills on repowise.
- /architectural-decisions
Use when encountering questions about WHY code is built a certain way, when about to make architectural changes (new patterns, restructuring, choosing between approaches), or when the user asks about design rationale in a Repowise-indexed codebase (.repowise/ directory exists).
Open skill - /code-health
Use when the user asks about code health, code quality, complexity, technical debt, which files are risky or hard to maintain, what to refactor next, untested hotspots, or coverage gaps in a Repowise-indexed codebase (.repowise/ directory exists). Also use to get a before/after
Open skill - /codebase-exploration
Use when exploring, understanding, or answering questions about a codebase that has Repowise indexed (a .repowise/ directory in the project root). Activates for "how does X work", "explain the architecture", "where is Y implemented", "what does this module do", or any task that
Open skill - /dead-code-cleanup
Use when the user asks about cleanup, removing unused code, refactoring, reducing bundle size, or identifying dead code in a Repowise-indexed codebase (.repowise/ directory exists). Also activates when discussing technical debt, code hygiene, or repository maintenance.
Open skill - /pre-modification
Use before modifying, refactoring, or deleting files in a codebase that has Repowise indexed (indicated by a .repowise/ directory). Activates when Claude is about to edit code, especially shared utilities, core modules, or files the user didn't explicitly mention. Helps assess
Open skill - /architectural-decisions
Use when a task asks why code is built a certain way, proposes architectural changes, compares implementation approaches, or mentions decision markers such as WHY, DECISION, TRADEOFF, or ADR in a Repowise-indexed repository.
Open skill

