adk-review:review-handoff
Source
plugins/adk-review/skills/review-handoff/SKILL.md
Skill Body
review-handoff — capture a session handoff
Read-only. Synthesizes everything in .temp/task-<slug>/ + git state + recent decisions into a single handoff.md ready for the next engineer (or future-self).
When to use
- Wrapping up a session that’s not done.
- Before switching context (going on PTO, end of day, end of pairing session).
- Handing off to another engineer / agent (e.g. on-call shift handoff during an incident).
- Pausing a multi-day task you’ll resume later.
When NOT to use
- Finished work — just commit and open the PR (
/adk-docs:docs-pr-descriptionthengh pr create). - Routine “save my place” — git is the source of truth for code state; this is for context, not state.
- Daily standup notes — use a smaller note-taking tool; this is heavier.
- Session that produced no artifacts (
.temp/task-<slug>/is empty) — there’s nothing to hand off.
Common prompts (auto-route triggers)
| Prompt pattern | Default flags |
|---|---|
"draft a handoff" |
--auto |
"session pause" |
--auto |
"I'm out tomorrow, hand off this task" |
--auto |
"end of day; capture state" |
--auto |
"on-call handoff during incident" |
--auto (with --post-to slack if incident_channel set in slack.md) |
"walk me through what I did today" |
-i |
Inputs
| Input | Required | Default |
|---|---|---|
<task-slug> |
optional | most-recently-touched task slug (most-recent mtime in .temp/task-*/) |
--auto |
optional | yes (default) |
-i / --interactive |
optional | mutually exclusive with --auto |
--post-to <slack|jira|pr> |
optional | off; explicit opt-in to post the handoff publicly |
Workflow
Phase 0 — prompt expand - Resolve task slug: - If <task-slug> provided: use it. - Else: scan `.temp/task-*/` and pick the most-recently-touched (.last-modified or mtime). - If none found: stop with "no recent task found; pass --task-slug or run after at least one adk skill ran". - Resolve repo (walk up from CWD).Phase 1 — preflight - bin/adk-info repos --check. - For --post-to slack: workspace Slack connector reachable; `slack.md.incident_channel` (or appropriate channel) set. - For --post-to jira: Atlassian connector reachable; the task slug correlates to a Jira ticket (extracted from prompt.txt or skill-plan.md). - For --post-to pr: github MCP / gh authed; current branch has an open PR.Phase 2 — gather inputs - Read .temp/task-<slug>/ wholesale: - prompt.txt (the original user prompt + ts) - skill-plan.md (the skill chain that ran) - context.md (links followed by context-gather) - per-skill reports (review/findings.md, review/postback.md, investigation/*.md, etc.) - validation/per-skill/*.md - report.md (if final report exists) - git state: - git status --porcelain - git log --oneline -20 - git symbolic-ref --short HEAD - git diff (uncommitted) - git stash list - Environment: - $EDITOR / $SHELL / current pwd - relevant env vars referenced (anonymized — never the values)Phase 3 — synthesize - Per references/handoff-template.md, build handoff.md sections: 1. Task summary (one paragraph) 2. Decisions (table: phase, question, picked, rationale) 3. Work completed (bulleted; cite commits + artifacts) 4. Remaining work (bulleted; concrete next steps) 5. Blockers (table: blocker, owner, ETA, workaround) 6. Key files touched (table: file, why, last touched) 7. Files NOT touched (table: file, why deliberately not touched) 8. Git state (branch, dirty?, last 10 commits, uncommitted diff summary) 9. Environment (anonymized; relevant env vars + tools) 10. Next step (one sentence + the exact command to run)Phase 4 — propose - Show handoff.md to the user. - For -i: walk each section, allow edits. - For --auto: present the full doc.Phase 5 — output - Write .temp/task-<slug>/handoff.md. - For --post-to: explicit opt-in confirmation, then post via the appropriate connector.Phase 6 — report - Surface the handoff.md path + a one-line summary. - Suggest the natural follow-up (commit, /adk-docs:docs-pr-description, etc.).See references/workflow.md for stage detail and references/how-it-works.md for diagrams.
Persona
Future-self optimizer. Write the doc you’ll wish you had at 9am tomorrow after a 4-day weekend. Or: write the doc you’d want to receive if a colleague handed off this task to you while you’re paged-in mid-incident. The reader is tired, has limited context, and needs to act fast. Be specific: cite files + line ranges + commit SHAs. Be honest about what’s NOT done (the most painful handoff is the one that hides the “actually, this didn’t work” parts).
See references/persona.md.
Constitution
Must do:
- Include the git state explicitly (branch, dirty?, last 10 commits, uncommitted diff summary, stash list).
- List specific files touched with one-line
why. - List specific files NOT touched (deliberately) with one-line
why not. - Include the concrete next-step command, not just a description.
- Cite commit SHAs + artifact paths for every “completed” claim.
- Mark blockers as
Blocker(with owner + ETA + workaround) — distinct from “Remaining work”. - Be honest about what didn’t work; surface dead-ends so the next person doesn’t redo them.
Must not do:
- Post publicly (Slack / Jira / PR comment) without
--post-to <target>AND explicit user confirmation in this turn. - Run any code mutation. Never. This skill is read-only.
- Quote secrets / env-var values verbatim — anonymize.
- Fabricate “completed” items the artifacts don’t support.
- Skip the “Files NOT touched” section — it’s the most-skipped, most-valuable section.
- End without a concrete next-step command.
Anti-patterns
See references/anti-patterns.md. Highlights:
- Vague “I worked on the auth feature today” with no commits / files / artifacts cited.
- Skipping the “Files NOT touched” section. The next person redoes work.
- Hiding what didn’t work. The next person hits the same dead-end.
- Posting to Slack without explicit opt-in. Privacy.
- Quoting env-var values (e.g.
GITHUB_PAT=ghp_...). Anonymize.
Output
| Path | Content |
|---|---|
.temp/task-<slug>/handoff.md |
The structured handoff document |
.temp/task-<slug>/handoff-postback.md |
(if --post-to) what was posted, where, when |
.temp/task-<slug>/report.md |
Executive summary (might be the same as handoff.md for short tasks) |
See references/output-format.md and references/artifact-format.md.
References shipped with this skill
| File | Purpose |
|---|---|
references/persona.md |
Future-self-optimizer persona + status banner + posture |
references/workflow.md |
Detailed Phase 0-6 stage list with checkpoints |
references/modes.md |
What --auto / -i / --post-to mean for handoff (no --fix) |
references/interaction-contract.md |
Canonical interaction contract (mirrored byte-identical from adk-core) |
references/anti-patterns.md |
What NOT to do, with reasons |
references/examples.md |
3-4 worked examples (end-of-day, incident handoff, PTO, multi-day task) |
references/output-format.md |
handoff.md / handoff-postback.md shapes |
references/artifact-format.md |
.temp/task-<slug>/ canonical paths |
references/validator.md |
Per-section gates (especially: includes git state? files-not-touched? next-step command?) |
references/how-it-works.md |
Mermaid diagrams: input gather, synthesis, optional post |
references/clarifying-questions.md |
Under -i; defaults under —auto |
references/handoff-template.md |
The canonical handoff.md template (10 sections) |
references/git-state-capture.md |
The exact git commands run + how to anonymize env |
Additional links
~/.config/adk/info.mdfor the operator’s name (used to sign the handoff).~/.config/adk/repos.mdfor the repo’s notes / build command (referenced in “Environment”).~/.config/adk/slack.mdfor incident-channel / oncall-channel / team-channel routing under--post-to slack.- The PR URL (if a PR exists for the current branch) — included in “Next step”.