ReviewPack 1.2.0.321
See the version list below for details.
dotnet tool install --global ReviewPack --version 1.2.0.321
dotnet new tool-manifest
dotnet tool install --local ReviewPack --version 1.2.0.321
#tool dotnet:?package=ReviewPack&version=1.2.0.321
nuke :add-package ReviewPack --version 1.2.0.321
ReviewPack (dotnet tool)
ReviewPack is a .NET global tool that generates a PR review pack for a Git branch.
A review pack is a set of Markdown files representing the full branch delta from HEAD back to the merge-base with a chosen base branch such as origin/main. It is designed for:
- pre-PR self-review
- LLM-assisted review workflows
- packaging the full branch context up front instead of reconstructing it commit by commit
ReviewPack can run in two modes:
- CLI mode for one-shot generation
- MCP server mode so an agent can generate and read review packs on demand
Each generated pack is both human-readable and LLM-friendly. It includes:
- a summary file with instructions, branch context, totals, and a changed-files index
- one or more additional Markdown parts containing the actual diffs
Requirements
- .NET 10 SDK/runtime
gitavailable on yourPATH- access to the Git working tree you want to review
- an existing output folder where ReviewPack can create per-run subfolders
Install
dotnet tool install --global ReviewPack
The command name is:
pr-review-pack
Update
dotnet tool update --global ReviewPack
Uninstall
dotnet tool uninstall --global ReviewPack
CLI usage
Basic example
- Make sure your base branch ref is up to date:
git fetch origin
- Create an output folder if you do not already have one:
mkdir C:\temp\reviewpacks
- Run ReviewPack from inside the repo:
pr-review-pack --tool__outputpath "C:\temp\reviewpacks" --tool__basebranch "origin/main" --allowConsoleLogging
If --tool__basebranch is omitted, ReviewPack falls back to origin/main.
Running from outside the repo
If the process is not started from the Git working tree, provide the repo folder explicitly:
pr-review-pack --tool__outputpath "C:\temp\reviewpacks" --tool__branchfolder "C:\src\my-repo" --tool__basebranch "origin/main" --allowConsoleLogging
Preserving large patches in CLI mode
By default, ReviewPack may truncate or reduce very large diffs, especially for bulky text-based files such as large JSON documents.
If you want the generated review pack to keep those patches in full, pass:
pr-review-pack --tool__outputpath "C:\temp\reviewpacks" --tool__basebranch "origin/main" --tool__keeplargepatches
CLI note about review mode
CLI execution always generates the default pre-PR / self-audit instruction set inside review-pack-0000.md.
If you want the embedded instructions to use reviewer-assist PR wording instead, that is currently available only through the MCP GenerateReviewPack tool via reviewMode: "pr".
Output
Each run writes a new subfolder under the configured output path. The subfolder name is the run id.
Typical output looks like this:
review-pack-0000.md— summary, instructions, branch context, and changed-files indexreview-pack-0001.md— first diff partreview-pack-0002.md— second diff part- ...
When used through MCP, GenerateReviewPack returns:
- the run id
- the list of generated file paths
Options
| Option | Required | Description |
|---|---|---|
--tool__outputpath <path> |
Yes | Existing folder where ReviewPack creates a run subfolder for each execution. This same root is also used by ReadReviewPackFile and by MCP file logging. |
--tool__basebranch <ref> |
No | Base Git reference used for comparison. Defaults to origin/main when not otherwise configured. Examples: origin/main, main, origin/release/1.2. |
--tool__branchfolder <path> |
No | Working folder used to resolve the Git repository. Defaults to the current directory. Useful when running outside the repo or when hosting ReviewPack as an MCP server. |
--tool__maxmarkdownsize <n> |
No | Approximate maximum rendered diff content per generated part. When the next file would push the current part over this size, a new part is started. Default: 15000. |
--tool__keeplargepatches <true/false> |
No | Preserves large rendered diffs instead of truncating them or reducing them to metadata-only output. Default: false. Useful when the branch mainly changes bulky files such as large JSON payloads. |
--tool__runasmcpserver <true/false> |
No | Starts ReviewPack as an MCP server over stdio instead of performing a one-shot CLI execution. |
--allowConsoleLogging |
No | Enables console logging for CLI mode. Do not enable this in MCP mode because stdout is reserved for the protocol. |
MCP server mode
When --tool__runasmcpserver true is set, ReviewPack runs as an MCP server over stdio.
It exposes:
Tools
GenerateReviewPackReadReviewPackFile
Prompts
Pre_PR_LLM_Review_1.2PR_LLM_Review_1.2
MCP tool behavior
GenerateReviewPack
Use this tool when the user wants to:
- review their branch changes before opening a PR
- prepare the current branch for LLM review
- inspect the full branch delta in Markdown form
- generate a multi-part review pack for a specific repo and base branch
The tool:
- resolves the effective review settings
- compares
HEADto the merge-base with the effective base branch - writes a multi-part review pack to disk
- returns the run id and generated Markdown file paths
- lets the caller choose whether the embedded review instructions are for a self-audit (
pre-pr) or a reviewer-assist pass (pr) - optionally preserves large patches instead of truncating them
It accepts optional arguments for:
baseBranchbranchFolderreviewModekeepLargePatches
These are resolved with the following precedence:
- server configuration (
tool:BaseBranch,tool:BranchFolder) - tool call arguments (
baseBranch,branchFolder,reviewMode,keepLargePatches) - fallbacks
- base branch →
origin/main - branch folder → current directory
- review mode →
pre-pr - keep large patches →
false
That means if BaseBranch and/or BranchFolder are fixed in the MCP server configuration, those configured values win and any values passed in the tool call are ignored.
keepLargePatches is resolved differently: when the MCP tool call provides keepLargePatches, that invocation value wins; otherwise ReviewPack falls back to the configured tool:KeepLargePatches value, and then to false.
reviewMode controls the wording of the instructions embedded in review-pack-0000.md:
pre-prkeeps the default self-audit wording and asks for PR title/description helpprframes the pack as a review of someone else's checked-out PR branch
keepLargePatches controls whether bulky diffs are preserved in full:
falsekeeps the default behavior, where very large or bulky file patches may be truncated or reduced to metadata-only outputtruepreserves those large patches in the generated review pack, even when the changed files are large JSON or other bulky text-based files
ReadReviewPackFile
Use this tool to read the content of a generated review-pack Markdown file.
It only allows files that:
- are inside the configured output root
- match the
review-pack-*.mdnaming convention
This is intended for agents that need the actual Markdown content after generation.
MCP prompt workflows
ReviewPack can also expose MCP prompts that guide an agent through a sensible review workflow.
Pre_PR_LLM_Review_1.2
Use this prompt when reviewing your own branch before opening a PR.
Its purpose is to guide an agent through a sensible self-audit workflow:
- generate the review pack
- read
review-pack-0000.mdfirst - continue by reading the remaining review-pack parts in order
- optionally inspect files directly from the solution or workspace when needed to validate conclusions or investigate possible regressions
The prompt also tells the agent to detect real mismatches between the requested folder/base branch and the actual generated pack, while ignoring harmless differences such as relative vs absolute path formatting.
PR_LLM_Review_1.2
Use this prompt when reviewing someone else's PR branch that is currently checked out locally.
Its purpose is to guide an agent through a reviewer-assist workflow:
- generate the review pack
- read
review-pack-0000.mdfirst - continue by reading the remaining review-pack parts in order
- use the review-pack instructions as the primary contract for review style and outcome
- optionally inspect files directly from the solution or workspace when needed to validate conclusions or investigate possible regressions
Like the self-review prompt, it also tells the agent to detect real mismatches between the requested folder/base branch and the actual generated pack, while ignoring harmless differences such as relative vs absolute path formatting.
Prompt note for large patches
There is no separate prompt variant for preserving large patches.
If an agent should keep bulky diffs in full, the user can simply ask for that in natural language, for example:
- "Generate the review pack and preserve large patches."
- "Use the PR prompt, but keep large patches."
The important part is that the agent should call GenerateReviewPack with keepLargePatches: true when that behavior is needed.
Recommended agent workflow
Whether the agent is driven by the MCP prompt or by a direct user request, the ideal workflow is:
- Call
GenerateReviewPack - Read
review-pack-0000.mdfirst - Follow the instructions in part
0000 - Read the remaining review-pack parts in order
- Only then perform the actual review or summary
This matters because GenerateReviewPack does not return the Markdown content directly. It returns the file paths to the generated artifacts.
Example: fixed workspace/server configuration
This is the best fit when the MCP configuration is tied to one repo or workspace and you want the base branch and repo folder to stay fixed.
{
"servers": {
"pr-review-pack-mcp": {
"type": "stdio",
"command": "pr-review-pack",
"args": [
"--tool__runAsMcpServer",
"--tool__outputPath",
"C:\\temp\\reviewpacks",
"--tool__baseBranch",
"origin/main",
"--tool__branchFolder",
"C:\\src\\my-repo"
]
}
}
}
In this setup, MCP tool arguments for baseBranch and branchFolder are effectively advisory only, because the configured values already win.
keepLargePatches still remains invocation-controllable in this setup: a tool call can override the configured value, and the configured value is used only when the tool call omits keepLargePatches.
If you always want full bulky diffs in that MCP server instance, you can also pin:
{
"servers": {
"pr-review-pack-mcp": {
"type": "stdio",
"command": "pr-review-pack",
"args": [
"--tool__runAsMcpServer",
"--tool__outputPath",
"C:\\temp\\reviewpacks",
"--tool__baseBranch",
"origin/main",
"--tool__branchFolder",
"C:\\src\\my-repo",
"--tool__keepLargePatches",
"true"
]
}
}
}
Example: loose/global configuration
This is the best fit when you do not want the MCP config to live in the repo and you want to target different repos or branches per invocation.
{
"servers": {
"pr-review-pack-mcp": {
"type": "stdio",
"command": "pr-review-pack",
"args": [
"--tool__runAsMcpServer",
"--tool__outputPath",
"C:\\temp\\reviewpacks"
]
}
}
}
In this setup, an agent can call GenerateReviewPack with a specific baseBranch and branchFolder for the current request.
It can also pass reviewMode: "pre-pr" or reviewMode: "pr" depending on the initial user request.
If needed, it can also pass keepLargePatches: true to preserve bulky diffs.
MCP notes
- In MCP mode, avoid console logging because stdout is reserved for the protocol.
- ReviewPack writes a file log to
<tool__outputpath>\mcp-rev-pack.log. ReadReviewPackFileis intentionally restricted to generatedreview-pack-*.mdfiles under the configured output root.- If prompt text appears stale in an MCP client, make sure the client is actually launching the updated server build and has reloaded the server capabilities.
reviewMode: "pr"is an MCP tool argument, not a CLI switch.keepLargePatchescan be controlled either by CLI/server configuration or by the MCPGenerateReviewPacktool argument; when both are present, the MCP tool argument wins for that invocation.
Prompting an agent that has ReviewPack configured
Useful requests include:
- "Generate a PR review pack for my current branch."
- "Generate a review pack for
C:\src\my-repoagainstorigin/release/2.0." - "Generate the review pack, then read
review-pack-0000.mdand continue through the remaining parts." - "Generate the review pack and preserve large patches."
- "Use the
Pre_PR_LLM_Review_1.2prompt." - "Use the
PR_LLM_Review_1.2prompt and preserve large patches."
If you also want the agent to actually review the code, ask for it as part of the same request or immediately after generation, but it should still begin with review-pack-0000.md and then continue through the generated parts.
What is included in the review pack
Each run captures:
- current branch name
- base branch name
HEADcommit SHA- merge-base commit SHA
- total changed files
- total added lines
- total deleted lines
- changed-files index by part
- review instructions embedded in
review-pack-0000.md - per-file diffs in fenced
diffblocks
Diff rendering behavior
ReviewPack always computes the real branch diff, but not every patch is rendered in full by default.
Default rendered patch behavior is:
- full for normal-sized diffs
- truncated for larger diffs
- metadata only for very large diffs
- more aggressive truncation/omission for bulky text-based files such as:
.json.md.xml.ini.conf.txt
When keepLargePatches is enabled, ReviewPack preserves those large patches in full instead of truncating them or reducing them to metadata-only output.
That is especially useful when a branch mainly consists of changes to large JSON files and the actual diff content matters for the review.
When a patch is omitted due to size under the default behavior, the review pack still includes file metadata such as:
- file path
- status
- added/deleted line counts
If Git returns no patch content for a file, ReviewPack writes a placeholder message instead of failing.
Notes
- ReviewPack diffs
merge-base..HEAD, notbase-branch..HEADdirectly. OutputPathmust already exist.MaxMarkdownSizemust be non-negative.- In detached HEAD scenarios, the current branch is reported as
(detached).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.4.322 | 0 | 4/11/2026 |
| 1.2.0.321 | 37 | 4/9/2026 |
| 1.1.11.300 | 90 | 4/3/2026 |
| 1.1.11-dev.299 | 52 | 4/3/2026 |
| 1.1.11-dev.298 | 41 | 4/3/2026 |
| 1.1.10.297 | 87 | 4/3/2026 |
| 1.1.10-dev.296 | 44 | 4/3/2026 |
| 1.1.9.295 | 76 | 4/3/2026 |
| 1.1.9-dev.294 | 48 | 4/3/2026 |
| 1.1.8.293 | 85 | 4/2/2026 |
| 1.1.8-dev.292 | 48 | 4/2/2026 |
| 1.1.7.290 | 94 | 4/1/2026 |
| 1.1.7-dev.289 | 39 | 4/1/2026 |
| 1.1.7-dev.288 | 37 | 4/1/2026 |
| 1.1.7-dev.287 | 48 | 4/1/2026 |
| 1.1.6.286 | 84 | 3/31/2026 |
| 1.1.6-dev.285 | 40 | 3/31/2026 |
| 1.1.5.284 | 80 | 3/31/2026 |
| 1.1.5-dev.283 | 43 | 3/31/2026 |
| 1.1.3.275 | 100 | 3/27/2026 |