---
name: nexu-io/diff-review
source: https://app.decimal.ai/s/nexu-io-diff-review@1/SKILL.md
source_sha256: c5de5e039fa7
---

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

## Inputs

- The project cwd's accumulated edits since the run started (or
  since the previous diff-review iteration).
- `plan/steps.json` for context per file.

## Output

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

## Convergence

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.

## Anti-patterns the prompt fragment forbids

- Skipping the surface and assuming acceptance.
- Generating a `decision.json` that lacks `accepted_files` /
  `rejected_files` on `partial` decisions.
- Rolling back files outside `plan/steps.json`'s union of
  `files[]` — the patch boundary is a contract.

## Status

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