{"_id":"@eddiedao/ai-handoff","_rev":"2-78e9cc090b45321c9dfc5d939dd230bd","name":"@eddiedao/ai-handoff","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@eddiedao/ai-handoff","version":"1.0.0","keywords":["claude","claude-code","skill","github","issue","automation","ai-tunnel","handoff","gh"],"license":"MIT","_id":"@eddiedao/ai-handoff@1.0.0","maintainers":[{"name":"eddiedao","email":"daokythanh@gmail.com"}],"os":["darwin","linux"],"bin":{"ai-handoff":"scripts/handoff.sh","ai-handoff-install":"bin/install.js"},"dist":{"shasum":"4b1c4c060c1ddc584f9efadfb27af283983b3a4b","tarball":"https://registry.npmjs.org/@eddiedao/ai-handoff/-/ai-handoff-1.0.0.tgz","fileCount":5,"integrity":"sha512-LStQbG7zoVr3h35f+1BHiGP7OMqtCek11utr7kG7ei/V4lQH425XjNEMtQ2yVTgXBXcps88/596KFwZbrvhvEA==","signatures":[{"sig":"MEUCIQDKumNn0ZOjBfVPeI3GGaoAUYGn1ELpzJW4+8V28muavwIgHy9zjFCubkCiGguELQ9ung/0TxHUe0IIJhOMwzR9XSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11760},"type":"commonjs","engines":{"node":">=18"},"scripts":{"postinstall":"node bin/install.js"},"_npmUser":{"name":"eddiedao","email":"daokythanh@gmail.com"},"_npmVersion":"10.9.8","description":"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.","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-handoff_1.0.0_1788423899135_0.8955299682709497","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@eddiedao/ai-handoff","version":"1.0.1","description":"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.","keywords":["claude","claude-code","skill","github","issue","automation","ai-tunnel","handoff","gh"],"license":"MIT","type":"commonjs","bin":{"ai-handoff":"scripts/handoff.sh","ai-handoff-install":"bin/install.js"},"scripts":{"postinstall":"node bin/install.js"},"engines":{"node":">=18"},"os":["darwin","linux"],"_id":"@eddiedao/ai-handoff@1.0.1","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-3L+4kKOUf9RNUEqTaFpBTS7GltSN6/FfbPguT4z/oawNb9egRkNLbesCC+175gMKP00IVC6YcXKmBT+betLjJA==","shasum":"f8a00be109e6cb0640709e9eee4cffe7cae3b68c","tarball":"https://registry.npmjs.org/@eddiedao/ai-handoff/-/ai-handoff-1.0.1.tgz","fileCount":5,"unpackedSize":13289,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFWK5kiRNnSw259SGcoraHDYQOsiqGY8hT4N8u+BkCGaAiBSgtCzLks6KRpu+/cGSB9Z2j6nFBPpwW72mQFFhkfeDQ=="}]},"_npmUser":{"name":"eddiedao","email":"daokythanh@gmail.com"},"directories":{},"maintainers":[{"name":"eddiedao","email":"daokythanh@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-handoff_1.0.1_1788517231806_0.1252844402244977"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-03T08:24:59.001Z","modified":"2026-09-04T10:20:32.117Z","1.0.0":"2026-09-03T08:24:59.295Z","1.0.1":"2026-09-04T10:20:31.954Z"},"license":"MIT","keywords":["claude","claude-code","skill","github","issue","automation","ai-tunnel","handoff","gh"],"description":"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":[{"name":"eddiedao","email":"daokythanh@gmail.com"}],"readme":"# @eddiedao/ai-handoff\n\nA [Claude Code](https://docs.claude.com/en/docs/claude-code) skill **and** CLI\nthat deterministically hands a GitHub issue to an AI-tunnel bot for autonomous\nimplementation.\n\nIt enforces, in order, the contract such bots require:\n\n1. the plan is **committed & pushed** to `origin/<default-branch>`;\n2. a `<!-- plan=\"plans/<slug>/\" -->` marker is present in the **issue body**;\n3. the trigger label (`AI handle`) is applied **last** (fires the `labeled` webhook).\n\nVerify-before-label + idempotent, so a completed/running issue is never\naccidentally re-triggered (which would open a duplicate PR).\n\n## Install\n\n```bash\nnpm install -g @eddiedao/ai-handoff\n```\n\n`postinstall` copies the skill into `~/.claude/skills/ai-handoff/` so Claude Code\ndiscovers it, and installs an `ai-handoff` command on your PATH. To (re)install\nthe skill files manually:\n\n```bash\nai-handoff-install\n```\n\nRequirements: Node >= 18, `git`, and an authenticated [`gh`](https://cli.github.com/)\nwith push + issue write access. macOS/Linux (the CLI is a bash script).\n\n## Usage\n\nFrom inside the repo (auto-cd to repo root):\n\n```bash\nai-handoff [--force] <issue-number> [plan-path]\n```\n\n- `plan-path` optional — auto-resolved from `plans/*/plan.md` frontmatter `issue: <N>`.\n- `--force` re-triggers even when the issue is already `AI in progress` / `AI done`.\n- Label overrides via env: `TRIGGER_LABEL`, `PROGRESS_LABEL`, `BLOCKED_LABEL`, `DONE_LABEL`.\n\nRecommended flow: `ak:plan` → `ak:git cp` (push plan to default branch) →\n`ai-handoff <issue>`.\n\n**Fire-and-forget:** the handoff is complete once the trigger label is applied.\nThe tool does not poll, wait on, or monitor the bot — it dispatches and exits.\nTrack progress yourself with `gh issue view <N>` / `gh pr list` when you choose.\n\n## What it does NOT do\n\nBot-independent by design — it only touches GitHub issue state and the git\nremote. It does not run, host, or know where the bot runs. It does not implement\nthe issue. It does not monitor or poll the bot after dispatch — once the trigger\nlabel is applied it exits, leaving progress tracking to you.\n","readmeFilename":"README.md"}