architectural-decision…
Use when encountering questions about WHY code is built a certain way, when about to make architectural changes (new patterns,…
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
Claude Code
$ npx -y skills add repowise-dev/repowise --skill change-review --agent claude-code
Codex
$ npx skills add repowise-dev/repowise --skill change-review -a codex -y
Cursor
$ npx skills add repowise-dev/repowise --skill change-review -a cursor -y
Gemini CLI
$ npx skills add repowise-dev/repowise --skill change-review -a gemini-cli -y
GitHub Copilot
$ npx skills add repowise-dev/repowise --skill change-review -a github-copilot -y
OpenCode
$ npx skills add repowise-dev/repowise --skill change-review -a opencode -y
Windsurf
$ npx skills add repowise-dev/repowise --skill change-review -a windsurf -y
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
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:
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.
`directive` block, the specific things to check inside the diff.
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`).
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:
*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.
changed files but were left untouched. Often a forgotten update.
`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".
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.
for defect risk directly.
Lead with a risk level and the `directive` findings, each tied to a concre
Codebase intelligence for AI and humans: code health scores, auto-generated docs, git analytics, dead code detection, and architectural decisions via MCP.
Use when encountering questions about WHY code is built a certain way, when about to make architectural changes (new patterns,…
Use when the user asks about code health, code quality, complexity, technical debt, which files are risky or hard to maintain,…
Use when exploring, understanding, or answering questions about a codebase that has Repowise indexed (a .repowise/ directory in…
Use when the user asks about cleanup, removing unused code, refactoring, reducing bundle size, or identifying dead code in a…
Use before modifying, refactoring, or deleting files in a codebase that has Repowise indexed (indicated by a .repowise/…
Use before modifying, refactoring, moving, or deleting files in a Repowise-indexed repository, especially shared utilities, core…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.