Hunk Review
Interacts with live Hunk diff review sessions via CLI. Inspects review focus, navigates files, hunks, and exact lines, reloads session contents, adds inline review comments, and paints attention marks on character ranges. Use when the user has a Hunk session running or wants to review diffs interactively.
- Skill ID
- modem-dev/hunk/hunk-review
- Publisher
- modem-dev
- Repository
- hunk
- Installs
- 0
- Files
- 1
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
modem-dev/hunk/hunk-reviewInstalls these files- SKILL.md
What this skill tells the agent
Hunk Review
Hunk is an interactive terminal diff viewer. The TUI is for the user -- do NOT run hunk diff, hunk show, or other interactive commands directly. Use hunk session * CLI commands to inspect and control live sessions through the local daemon.
If no session exists, ask the user to launch Hunk in their terminal first.
Workflow
1. hunk session list # find live sessions
2. hunk session get --repo . # inspect path / repo / source
3. hunk session review --repo . --json # inspect file/hunk structure first
4. hunk session review --repo . --include-patch --json # opt into raw diff text only when needed
5. hunk session context --repo . # check current focus when needed
6. hunk session navigate ... # move to the right place
7. hunk session reload -- <command> # swap contents if needed
8. hunk session comment add ... # leave one review note
9. hunk session comment apply ... # apply many agent notes in one stdin batch
10. hunk session highlight add ... # light up the exact range you are explainingSession selection
Most session commands accept:
--repo <path>-- match the live session by its current loaded repo root (most common)<session-id>-- match by exact ID (use when multiple sessions share a repo)- If only one session exists, it auto-resolves
reload also supports:
--session-path <path>-- match the live Hunk window by its current working directory--source <path>-- load the replacementdiff/showcommand from a different directory
Use --source only for advanced reloads where the live session you want to control is not already associated with the checkout you want to load next. For a normal worktree session, prefer selecting it directly with --repo /path/to/worktree.
Commands
Inspect
hunk session list [--json]
hunk session get (<session-id> | --repo <path>) [--json]
hunk session context (<session-id> | --repo <path>) [--json]
hunk session review (<session-id> | --repo <path>) [--include-patch] [--include-notes] [--json]getshows the sessionPath,Repo, andSource, which helps when choosing between--repoand--session-pathRepois what--repomatches;Pathis what--session-pathmatchesreview --jsonreturns file and hunk structure by default; add--include-patchonly when a caller truly needs raw unified diff textreview --include-notesalso returns the live review notes alongside the file and hunk structure
Navigate
hunk session navigate (<session-id> | --repo <path>) --file <path> (--hunk <n> | --old-line <n> | --new-line <n>) [--json]
hunk session navigate (<session-id> | --repo <path>) --comment <id> [--json]
hunk session navigate (<session-id> | --repo <path>) (--next-comment | --prev-comment) [--json]Absolute navigation requires --file and exactly one of --hunk, --new-line, or --old-line:
hunk session navigate --repo . --file src/App.tsx --hunk 2
hunk session navigate --repo . --file src/App.tsx --new-line 372
hunk session navigate --repo . --file src/App.tsx --old-line 355Exact comment navigation uses the commentId returned by hunk session comment list --json and does not require --file:
hunk session navigate --repo . --comment comment-1Relative comment navigation jumps between annotated hunks and does not require --file:
hunk session navigate --repo . --next-comment
hunk session navigate --repo . --prev-comment--hunk <n>is 1-based--new-line/--old-lineare 1-based line numbers on that diff side- A line target lands the user's viewport on that exact line (falling back to its hunk when the line is inside a collapsed region);
--hunklands on the hunk - Use either
--next-commentor--prev-comment, not both
Reload
Swaps the live session's contents. Pass a Hunk review command after --:
hunk session reload (<session-id> | --repo <path> | --session-path <path>) [--source <path>] [--json] -- diff [ref] [-- <pathspec...>]
hunk session reload (<session-id> | --repo <path> | --session-path <path>) [--source <path>] [--json] -- show [ref] [-- <pathspec...>]Examples:
hunk session reload --repo . -- diff
hunk session reload --repo . -- diff main...feature -- src/ui
hunk session reload --repo . -- show HEAD~1
hunk session reload --repo . -- show HEAD~1 -- README.md
hunk session reload --repo /path/to/worktree -- diff
hunk session reload --session-path /path/to/live-window --source /path/to/other-checkout -- diff- Always include
--before the nested Hunk command --repoor<session-id>usually selects the session you want--sourceis advanced: it does not select the session; it only changes where the replacement review command runs- If the live session is already showing the target worktree, prefer
hunk session reload --repo /path/to/worktree -- diff --session-pathtargets the live window when you need to keep session selection separate from reload source
Comments
hunk session comment add (<session-id> | --repo <path>) (--reply-to <note-id> | --file <path> (--old-line <n> | --new-line <n>)) --summary <text> [--rationale <text>] [--author <name>] [--markup <stml>] [--focus] [--json]
hunk session comment apply (<session-id> | --repo <path>) --stdin [--focus] [--json]
hunk session comment list (<session-id> | --repo <path>) [--file <path>] [--type <live|all|ai|agent|user>] [--json]
hunk session comment rm (<session-id> | --repo <path>) <comment-id> [--json]
hunk session comment clear (<session-id> | --repo <path>) [--file <path>] [--include-user|--all] --yes [--json]Examples:
hunk session comment add --repo . --file README.md --new-line 103 --summary "Tighten this wording"
hunk session comment add --repo . --reply-to user:123 --summary "Addressed in the latest revision"
printf '%s\n' '{"comments":[{"filePath":"README.md","newLine":103,"summary":"Tighten this wording"}]}' | hunk session comment apply --repo . --stdincomment list --type usershows human-authored inline notes; without--type,comment listpreserves the legacy live-agent-comment viewcomment addis best for one note;comment applyis best when an agent already has several notes ready- Root
comment addnotes require--file,--summary, and exactly one of--old-lineor--new-line; replies use--reply-to <note-id>with--summaryand inherit the parent's anchor comment applyitems requiresummaryplus eitherreplyToby itself orfilePathwith exactly one target such ashunk,hunkNumber,oldLine, ornewLinecomment applyreads a JSON batch from stdin and validates the full batch before mutating the live session- Pass
--focuswhen you want to jump to the new note or the first note in a batch comment listandcomment clearaccept optional--file- Quote
--summaryand--rationaledefensively in the shell
Attention marks
Highlights paint character ranges inside the diff lines the user is looking at — use them to light up the exact expression you are explaining while you narrate.
hunk session highlight add (<session-id> | --repo <path>) --file <path> (--old-line <n> | --new-line <n>) --start <n> --end <n> [--tone <tone>] [--focus] [--json]
hunk session highlight clear (<session-id> | --repo <path>) [--file <path>] [--json]Examples:
hunk session highlight add --repo . --file src/App.tsx --new-line 42 --start 6 --end 19
hunk session highlight add --repo . --file src/App.tsx --new-line 42 --start 6 --end 19 --tone warning --focus
hunk session highlight clear --repo .highlight addrequires--file, exactly one of--old-lineor--new-line, and the--start/--endoffsets
Use this skill in a project
Open any RiverX project, search the Skills panel for modem-dev/hunk/hunk-review, and install it in one click.
