@eddiedao/ai-handoff
v1.0.1
Published
Deterministically hand a GitHub issue to the AI-tunnel bot: verify plan pushed to the default branch, set the plan marker in the issue body, then apply the trigger label last. A Claude Code skill + CLI.
Maintainers
Readme
@eddiedao/ai-handoff
A Claude Code skill and CLI that deterministically hands a GitHub issue to an AI-tunnel bot for autonomous implementation.
It enforces, in order, the contract such bots require:
- the plan is committed & pushed to
origin/<default-branch>; - a
<!-- plan="plans/<slug>/" -->marker is present in the issue body; - the trigger label (
AI handle) is applied last (fires thelabeledwebhook).
Verify-before-label + idempotent, so a completed/running issue is never accidentally re-triggered (which would open a duplicate PR).
Install
npm install -g @eddiedao/ai-handoffpostinstall copies the skill into ~/.claude/skills/ai-handoff/ so Claude Code
discovers it, and installs an ai-handoff command on your PATH. To (re)install
the skill files manually:
ai-handoff-installRequirements: Node >= 18, git, and an authenticated gh
with push + issue write access. macOS/Linux (the CLI is a bash script).
Usage
From inside the repo (auto-cd to repo root):
ai-handoff [--force] <issue-number> [plan-path]plan-pathoptional — auto-resolved fromplans/*/plan.mdfrontmatterissue: <N>.--forcere-triggers even when the issue is alreadyAI in progress/AI done.- Label overrides via env:
TRIGGER_LABEL,PROGRESS_LABEL,BLOCKED_LABEL,DONE_LABEL.
Recommended flow: ak:plan → ak:git cp (push plan to default branch) →
ai-handoff <issue>.
Fire-and-forget: the handoff is complete once the trigger label is applied.
The tool does not poll, wait on, or monitor the bot — it dispatches and exits.
Track progress yourself with gh issue view <N> / gh pr list when you choose.
What it does NOT do
Bot-independent by design — it only touches GitHub issue state and the git remote. It does not run, host, or know where the bot runs. It does not implement the issue. It does not monitor or poll the bot after dispatch — once the trigger label is applied it exits, leaving progress tracking to you.
