nexu-io/diff-review
Render the patch-edit run's accumulated changes as a reviewable diff, surface it through a GenUI choice surface, and persist the user's accept / reject decision into the artifact manifest.
npx skills add https://github.com/nexu-io/open-design --skill diff-review
Spec §20.3 / §21.3.2: a code-migration / tune-collab handoff is
worthless without a human-reviewable diff. This atom is the
"present the patch, capture the decision" stage.
since the previous diff-review iteration).
plan/steps.json for context per file.project-cwd/
└── review/
├── diff.patch # unified diff (git apply-shaped)
├── summary.md # human-friendly per-file walkthrough
├── decision.json # { decision: 'accept' | 'reject' | 'partial', accepted_files: [...], rejected_files: [...], reviewer: 'user' | 'agent' }
└── meta.json # { generatedAt, atomDigest, planRevision }
The atom raises a choice GenUI surface with the three top-level
decisions (accept / reject / partial). On partial the user
flips per-file decisions through follow-up surfaces.
The atom completes when decision.json has a non-empty decision.
Acceptance writes handoffKind: 'patch' (or 'deployable-app'
when a successful build-test is on file) into the eventual
artifact manifest; rejection rolls back the patch via git restore
or the equivalent in the code-import-bound repo path.
decision.json that lacks accepted_files /rejected_files on partial decisions.
plan/steps.json's union offiles[] — the patch boundary is a contract.
Implemented by the daemon runner in
apps/daemon/src/plugins/atoms/diff-review.ts, with GenUI decisions persisted
by apps/daemon/src/plugins/atoms/diff-review-genui-bridge.ts.
Take nexu-io/diff-review from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.