From handoff
Create a handoff document for any AI coding agent to continue your work
How this command is triggered — by the user, by Claude, or both
Slash command
/handoff:createThe summary Claude sees in its command listing — used to decide when to auto-load this command
Any AI coding agent can pick up this work seamlessly — capture everything needed to resume without losing momentum. ## Determine Target File Check `$ARGUMENTS`: - If non-empty: write to `HANDOFF-$ARGUMENTS.md` (replace spaces with hyphens automatically) - Exception: if `$ARGUMENTS` is `auto`, refuse and ask the user to choose a different name — `auto` is reserved for compaction auto-saves - If empty: write to `HANDOFF.md` Examples: - `/handoff:create payments` → writes `HANDOFF-payments.md` - `/handoff:create auth refactor` → writes `HANDOFF-auth-refactor.md` - `/handoff:create` → writ...
Any AI coding agent can pick up this work seamlessly — capture everything needed to resume without losing momentum.
Check $ARGUMENTS:
HANDOFF-$ARGUMENTS.md (replace spaces with hyphens automatically)
$ARGUMENTS is auto, refuse and ask the user to choose a different name — auto is reserved for compaction auto-savesHANDOFF.mdExamples:
/handoff:create payments → writes HANDOFF-payments.md/handoff:create auth refactor → writes HANDOFF-auth-refactor.md/handoff:create → writes HANDOFF.mdRun these commands to capture current repo state:
| Command | What it tells you |
|---|---|
git status | Uncommitted changes |
git diff --stat | Which files changed |
git log --oneline -5 | Recent commits from this session |
git rev-parse --short HEAD | Short commit hash to pin exact repo state |
Review the conversation history and extract:
— in the Decision column and "No decisions made this session" in the Chosen approach column; never leave placeholders unfilledFollow this structure (leave out empty sections, but NEVER omit the Dead Ends table if any approaches failed):
# Handoff: [Brief Task Title]
**Generated**: [date/time]
**Branch**: [git branch]
**Commit**: [output of `git rev-parse --short HEAD`]
**Status**: [In Progress / Blocked / Ready for Review]
**Confidence**: [High / Medium / Low]
## Goal
[1-2 sentences: what the user wants to achieve]
## Completed
- [x] [Specific completed item]
- [x] [Another completed item]
## Not Yet Done
- [ ] [Remaining task - be specific]
- [ ] [Another remaining task]
## Dead Ends (Do Not Retry)
| What was tried | Why it failed | What replaced it |
|---------------|---------------|-----------------|
| [approach] | [specific error or flaw] | [current solution] |
## Key Decisions
| Decision | Chosen approach | Rejected alternative | Reason |
|----------|----------------|---------------------|--------|
| [what was decided] | [what we went with] | [what we didn't do] | [why] |
## Current State
**Working**: [What's functional right now]
**Broken**: [What's not working, error messages if relevant]
**Unsaved Changes**: [Summary of unstaged/staged changes]
## Files to Know
| File | Why It Matters |
|------|----------------|
| `path/to/key/file.ts` | [Brief description] |
## Code Context
[Include actual code the next agent needs. Don't describe it - show it:]
**Key interfaces/signatures** (so the agent knows how to call/modify them):
```typescript
// Hook signature - src/hooks/useCheckout.ts
function useCheckout(): {
session: Session | null;
charge: (priceId: string, card: CardDetails) => Promise<void>;
isLoading: boolean;
}
API request/response shapes (if backend work):
// POST /api/payments/create-intent - example response
{ "clientSecret": "pi_3N..._secret_...", "publishableKey": "pk_test_..." }
Non-obvious logic (anything tricky that isn't self-documenting)
[Be extremely specific. Don't just say "test the feature"; give step-by-step instructions with expected outcomes:]
Example:
alembic upgrade head to apply migrations./start.sh[Only if there are prerequisites the next agent needs:]
| Prerequisite | Example |
|---|---|
| Environment variables | STRIPE_WEBHOOK_SECRET, DATABASE_URL |
| Test data | price_test_abc123, Stripe test card 4242 4242 4242 4242 |
| Required services | Redis on :6379, Stripe CLI for local webhook forwarding |
[Document known edge cases and how they're handled - or should be:]
[Gotchas, things that look wrong but are intentional, or traps to avoid]
Write to the target file determined in "Determine Target File" above.
npx claudepluginhub donalmoloney/handoff-claude --plugin handoff/createCreates a new beads issue interactively or via title, type (bug/feature/task/epic/chore/decision), and priority args. Uses beads MCP create tool, shows ID/details, offers linking.
/createProduces SEO/GEO content end-to-end: brief, draft, series, refresh, and CMS-neutral publish package from one entry point.
/createLaunches Socratic workflow designer subagent to create orchestration workflows from natural language descriptions using interactive questioning. Accepts optional initial description argument.
/createCreates a new scaffold template in .scaffold/<name> with scaffold.yaml config, Go template files for project or template scaffolds, and validates via lint and dry-run generation.
/createGenerates a HANDOFF.md file with project goal, completed tasks, failed approaches, key decisions, current state via git, and step-by-step resume instructions for any AI coding agent.
/createCreates a workspace directory with git worktrees for multi-repository development. Parses description for GitHub PRs, JIRA keys, and repos; sets up feature branches or PR checkouts.