Skip to content
Development
Command

/handoff

Generate a self-contained hand-off brief so ANOTHER agent (a fresh session, Codex, Antigravity, any external reviewer) can pick up the exact state and review it - a plan, a branch, the last commits, a PR, or one file - or implement an approved plan (--execute). Prints one

From plugin
lets-workflow
1726 skills15 agents26 commands
Install
> /plugin marketplace add restarter/lets-workflow
> /plugin install lets@lets-workflow

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/handoff

Context preview

What this command does when you run it.

Generate a self-contained hand-off brief so ANOTHER agent (a fresh session, Codex, Antigravity, any external reviewer) can pick up the exact state and review it - a plan, a branch, the last commits, a PR, or one file - or implement an approved plan (--execute). Prints one

Command definition

handoff.md
description: Generate a self-contained hand-off brief so ANOTHER agent (a fresh session, Codex, Antigravity, any external reviewer) can pick up the exact state and review it - a plan, a branch, the last commits, a PR, or one file - or implement an approved plan (--execute). Prints one pasteable brief, or delivers it (--send types it into an agent's Orca tab, --open opens a new Codex tab for it, --codex runs it through Codex headless) and brings the report back, verified against the code.
argument-hint: "[PR-url-or-number|--pr <id>|--local|--staged|--last-commit|--branch|--plan [<path>]|--file <path>|--commits <N>|--range <a>..<b>] [--spec <path>|none] [--execute] [--send [<tab>]|--open [<agent>]|--codex] [--fix]"

Handoff - Brief for Another Agent

Produce ONE message the user copies into another agent. That agent has NO context: not this conversation, not the task, not even which repo. The brief must be complete on its own.

  • The brief is the deliverable - review nothing yourself and edit no file of the repository (`--fix` is the one exception); `--send` / `--open` / `--codex` hand it on and bring the report back (Step 7)
  • `--execute` turns a plan's brief from "review this" into "implement this": the receiving agent writes code and commits, this session still edits nothing (Step 5b)
  • `--fix` applies the report's verified fixes in THIS session when nothing needs deciding (7.4, the `apply-fixes` skill); the user typing it is the write authorization for that run - edits only, never a commit
  • Target selectors mirror `/lets:review`, so the same flag reviews here or hands off there; works in any git repo, with or without LETS

> **IMPORTANT:** If the spec below invokes any deferred tool (e.g. `AskUserQuestion`), you MUST load and call it as specified. Never skip the call, never substitute a default answer of your own — the tool invocation is part of the contract. This is critical.

Usage

/lets:handoff                      # infer the target from context; asks only if genuinely ambiguous
/lets:handoff <PR-url-or-number>   # GitHub or Bitbucket PR
/lets:handoff --pr <id-or-url>     # alias of the bare form above
/lets:handoff --local              # uncommitted changes
/lets:handoff --staged             # staged changes only
/lets:handoff --last-commit        # last commit
/lets:handoff --branch             # full branch vs the merge branch (three-dot, like a PR)
/lets:handoff --plan               # newest plan in .lets/plans/
/lets:handoff --plan <path>        # a specific plan file
/lets:handoff --file <path>        # one file
/lets:handoff --commits <N>        # handoff-only: the last N commits (a fix round)
/lets:handoff --range <a>..<b>     # handoff-only: an explicit range
/lets:handoff --spec <path>        # what the reviewer judges against (or a bare task id)
/lets:handoff --spec none          # deliberately no spec - no spec line, no caveat
/lets:handoff --plan --codex              # run the brief through Codex headless (read-only), relay + verify its report
/lets:handoff --branch --send             # type the brief into an agent tab of this worktree (pick one)
/lets:handoff --branch --send antigravity # ... the Antigravity tab (an agent name, or a fragment of the tab title)
/lets:handoff --plan --open               # a new Codex tab (read-only) in this worktree gets the brief
/lets:handoff --execute --send codex      # the open Codex tab implements the newest plan of this task
/lets:handoff --execute --plan <path> --send   # ... a specific plan; pick the tab
/lets:handoff --branch --codex --fix      # ... then apply the verified fixes here when nothing needs deciding

Selectors match `/lets:review`, with two deliberate differences: `--commits` / `--range` are **handoff-only** (review has no target for "the commits that answer a review round"), and `--pr` is kept as an alias because it is the spelling this tool shipped with. Review's output modifiers `--json` and `--workflow` are **not** implemented here.

`--send [<tab>]`, `--open [<agent>]` and `--codex` are the three delivery lanes (Step 7) - an open agent tab, a new visible session, a headless background run - combinable with any target and mutually exclusive. `--execute` is a brief kind, not a lane: it takes only a plan and goes only through `--send` (Step 1). `--fix` is a relay modifier: it needs a lane and a review brief (Step 1). `/lets:review-handoff` is a deprecated alias of this command (the old name), to be removed in a future release.

Step 1: Determine the target

  • Delivery modifiers first: `--codex`, `--send [<tab>]` (`<tab>` = the next token when it does not start with `--`: a `term_` handle, an agent name such as `codex` / `antigravity`, or a fragment of the tab title), `--open [<agent>]` (`<agent>` = the next token when it does not start with `--`; default `codex`), the brief kind `--execute`, and the relay modifier `--fix`. Strip them, then apply the target rules to the rest.
  • PR URL/number, or `--pr <id-or-url>` -> **PR mode**. `--local` / `--staged` / `--last-commit` / `--branch` / `--commits N` / `--range a..b` -> **local mode**. `--plan [path]` -> **plan mode**. `--file <path>` -> **file mode**.
  • **Host resolution.** A `github.com` URL -> `gh`; a `bitbucket.org` URL -> `bbb`, whose PR number sits in the `/pull-requests/<n>` segment, not github's `/pull/<n>`; a bare number -> `{LETS_PR_FLOW}`. **When `{LETS_PR_FLOW}` is empty** - the normal state outside a LETS project, where the hook emits only four keys - fall through to the forge named by the `origin` URL Step 2 prints. Only when neither names a github or bitbucket host: stop and say a PR hand-off needs one.
  • **No argument -> infer, do not ask by default.** Take the target from the user's sentence next to the command ("цих правок" -> the just-committed fixes; "цієї гілки" -> `--branch`; "план" -> `--plan`; "коміта" -> `--last-commit`) and from what just happened in the session. Only when genuinely ambiguous, ask **one** `AskU
Read more
Ships withlets-workflow

A development workflow plugin for Claude Code Stop babysitting your AI. Start shipping with it.

Get the whole plugin

Other commands on lets-workflow.