| name | review-work |
| description | Review work — check task completion, run lint/build, mark reviewer remarks. Use after /unipi:work completes. |
Reviewing Work
Review what was built, verify task completion, run codebase checks, add reviewer remarks.
Boundaries
This skill MAY: read codebase, run checks (lint, build, test, docker), write reviewer remarks to plan docs, run bash for git operations (checkout worktree branch).
This skill MAY NOT: edit code, implement features, create new files.
Command Format
/unipi:review-work plan:<path>(optional) <string(greedy)>(optional)
plan:<path) — specific plan to review (auto-suggested)
string(greedy) — scope (e.g., "only review auth tasks" or "just check builds")
- If no plan provided → agent finds latest plan or asks user
- Runs in current session (or worktree session if still active)
Phase 1: Load Plan & Switch Branch
- If
plan: arg provided, read that plan
- If not, list plans in
.unipi/docs/plans/ and ask user
- Read plan fully — understand tasks, acceptance criteria, current status
- Read
workbranch: from plan frontmatter:
- If
workbranch: exists and is not empty → switch to that branch/worktree
- If
workbranch: missing or empty → review on current branch (main)
- To switch:
git checkout {workbranch} or use worktree path
Exit: On correct branch. Plan loaded.
Ralph Status Check
If a ralph loop was used for this work (check .unipi/ralph/ for a matching state file):
- Read
.unipi/ralph/{name}.state.json — note iteration count, reflection findings
- Read
.unipi/ralph/{name}.md — check checklist completion
- Note any items marked incomplete or abandoned across iterations
- Include this loop context in your reviewer remarks
Phase 2: Check Task Completion
For each task in plan:
- Read acceptance criteria
- Verify against actual implementation
- Determine status:
- Done — all criteria met →
completed:
- Partially Done X/Y — some steps complete, others not
- Unstarted — nothing done →
unstarted:
- Failed — attempted but broken →
failed:
- Awaiting User — needs user action →
awaiting_user:
- Blocked — waiting on dependency →
blocked:
- Skipped — intentionally not done →
skipped:
If string(greedy) scope provided, only check matching tasks.
Phase 3: Run Codebase Checks
Run project's verification suite:
- Lint —
npm run lint or equivalent
- Type check —
tsc --noEmit or equivalent
- Tests —
npm test or equivalent
- Build —
npm run build or equivalent
- Docker —
docker build . if Dockerfile exists
Report results. If any fail:
- Note which checks failed
- Identify which tasks are affected
- Don't fix — just report
Phase 4: Write Reviewer Remarks
Add REVIEWER-REMARK at the end of the plan document, behind a divider:
---
## Reviewer Remarks
REVIEWER-REMARK: Partially Done 3/5
- Tasks 1-3 complete, verified against acceptance criteria
- Task 4 stuck: API endpoint returns 500, needs investigation
- Task 5 unstarted: depends on Task 4
Codebase Checks:
- ✓ Lint passed
- ✓ Type check passed
- ✗ Tests failed: 2 failing in auth.test.ts
- ✓ Build passed
- ✓ Docker build passed
Status Format
REVIEWER-REMARK: <Done | Partially Done X/Y | Unstarted>
Followed by description explaining the status.
Phase 5: Handoff
Based on review results, use ask_user new_session options when available so the selected next workflow command can be queued automatically. If ask_user is unavailable, present the same choices conversationally and keep copyable commands visible.
If all tasks done and checks pass:
If workbranch is set (worktree):
"All tasks complete and verified. Ready to merge back to main."
Offer:
ask_user({
question: "Merge this worktree now?",
options: [
{ label: "Proceed to /unipi:worktree-merge", value: "merge", action: "new_session", prefill: "/unipi:worktree-merge" },
{ label: "Consolidate learnings", value: "consolidate", action: "new_session", prefill: "/unipi:consolidate" },
{ label: "Done for now", value: "done", action: "end_turn" },
],
allowFreeform: false,
})
Copyable fallback:
/unipi:worktree-merge
If workbranch is empty (main branch):
"All tasks complete and verified. Changes already on main — no merge needed."
Offer /unipi:consolidate as a new_session handoff when available. Copyable fallback:
/unipi:consolidate
Either way, user can consolidate learnings:
/unipi:consolidate
If tasks incomplete or checks fail:
"Tasks remaining and/or checks failing. Continue work?"
Offer the applicable /unipi:work ... command as a new_session handoff when available.
If workbranch is set:
/unipi:work worktree:<branch> specs:<plan-path>
If workbranch is empty (main):
/unipi:work specs:<plan-path>
If scoped review complete:
"Scoped review complete. Run full review or continue work?"
Offer both commands as new_session options when available:
/unipi:review-work plan:<plan-path> (full review)
/unipi:work specs:<plan-path> (continue work)
Notes
- Reviewer remarks append to end of plan — don't modify existing content
- Check results are factual — report pass/fail, don't diagnose
- This is a checkpoint, not a fix pass — work continues via
/unipi:work