Agent Skillsrepowise-dev/repowise › change-review

change-review

GitHub

用于在代码合并前评估变更风险。通过MCP工具分析Diff、历史数据和依赖关系,生成整体风险评分及文件级检查指令,辅助判断安全性与测试覆盖。

plugins/codex/skills/change-review/SKILL.md repowise-dev/repowise

Trigger Scenarios

review this PR is this safe to merge what is the blast radius of these changes did I miss anything

Install

npx skills add repowise-dev/repowise --skill change-review -g -y
More Options

Non-standard path

npx skills add https://github.com/repowise-dev/repowise/tree/main/plugins/codex/skills/change-review -g -y

Use without installing

npx skills use repowise-dev/repowise@change-review

指定 Agent (Claude Code)

npx skills add repowise-dev/repowise --skill change-review -a claude-code -g -y

安装 repo 全部 skill

npx skills add repowise-dev/repowise --all -g -y

预览 repo 内 skill

npx skills add repowise-dev/repowise --list

SKILL.md

Frontmatter
{
    "name": "change-review",
    "description": "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\"."
}

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

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 /prompts:repowise-init if the repo isn't indexed.

Version History

  • 370793f Current 2026-08-19 23:15

    修复风险报告数值含义歧义:移除冗余概率字段,明确分数单位为单提交校准,支持对未提交工作区打分,修正合并提交处理及作者查找失败逻辑。

  • b5f4753 2026-07-25 05:12

Same Skill Collection

plugins/claude-code/skills/architectural-decisions/SKILL.md
plugins/claude-code/skills/change-review/SKILL.md
plugins/claude-code/skills/code-health/SKILL.md
plugins/claude-code/skills/codebase-exploration/SKILL.md
plugins/claude-code/skills/dead-code-cleanup/SKILL.md
plugins/claude-code/skills/pre-modification/SKILL.md
plugins/codex/skills/architectural-decisions/SKILL.md
plugins/codex/skills/code-health/SKILL.md
plugins/codex/skills/codebase-exploration/SKILL.md
plugins/codex/skills/dead-code-cleanup/SKILL.md
plugins/codex/skills/pre-modification-check/SKILL.md

Metadata

Files
0
Version
370793f
Hash
536a0999
Indexed
2026-07-25 05:12

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-21 04:05
浙ICP备14020137号-1 $mapa de visitantes$