--- name: amdsmi-agent-handoff description: "Use when handing work from one amd-smi agent to another (planning→development, planning→review, development→review) or compacting a long session into a fresh one. Produces a compact handoff doc referencing artifacts by path instead of duplicating them." --- # Agent Handoff — amd-smi The single hand-off contract between amd-smi agents and across session boundaries. One shape for every hop, so no agent restates its own dispatch/return format. **Core principle:** Reference artifacts by path. Never paste file contents, diffs, or plans into the handoff — point to them. Redact secrets. ## Nesting Budget Subagents may dispatch their own subagents, but the chain is capped by the **`agent-max-nesting-depth`** setting (default **3**, declared in `.github/copilot-instructions.md` — the single source of truth). Rules: - Depth is counted from the first orchestrator (Planning / Development / Review). - Every dispatch carries a **`Nesting depth: N/3`** line (see the template). The first orchestrator runs at `1/3`. - When you dispatch, pass `N+1` to the receiver. - If you are running at depth `N == MAX`, you are a **leaf**: do the work yourself, do **not** dispatch any subagent. (Dispatching parallel subagents at the same level all share your `N+1` — width is unlimited, only depth is capped.) - If a leaf genuinely cannot proceed without going deeper, return `STATUS: BLOCKED` explaining why, rather than exceeding the budget. ## When to Use - Planning dispatches a task to the Development or Review agent - Development returns results to Planning, or hands a branch to Review - A session is getting long and work must continue in a fresh session **Don't use when:** answering a trivial inline request Planning can handle itself. ## Where the Doc Goes Write to the OS temp dir, **not** the workspace: ```bash HANDOFF="${TMPDIR:-/tmp}/amdsmi-handoff-$(date +%Y%m%d-%H%M%S).md" ``` Pass the path to the receiver. Workspace stays clean (no stray handoff files in git). ## Handoff Template ```markdown # Handoff: **From:** **To:** **Date:** **Nesting depth:** /3 ## Goal ## Scope - In: - Out: ## Constraints - - ## Artifacts (by path — do NOT inline) - Spec: ${TMPDIR:-/tmp}/amdsmi-agent-specs/.md - Plan: ${TMPDIR:-/tmp}/amdsmi-agent-plans/.md (task N, lines X–Y) - Worktree: - Related: ## Suggested Skills - ## Expected Return - ``` ## Expected Return (receiver → sender) Receivers report back in this shape (replaces per-agent return formats): ```markdown STATUS: DONE | BLOCKED | NEEDS_CONTEXT FILES CHANGED: - : — TESTS RUN: - → VERIFICATION: - BLOCKERS (if any): - ``` ## Common Mistakes | Mistake | Fix | |---------|-----| | Pasting the plan/diff into the handoff | Reference it by path | | Writing the handoff into the workspace | Write to `${TMPDIR:-/tmp}` | | Omitting the Out-of-scope list | Always state what NOT to touch | | Including tokens/passwords in Artifacts | Redact; reference the secret's location instead | | Restating a skill's steps | List it under Suggested Skills — the receiver loads it | | Dispatching a subagent while at max depth | You're a leaf — do the work, or return BLOCKED | | Omitting the `Nesting depth` line | Always carry it; the receiver needs its budget |