Recently Written · git

deploy-handoff

Claude Code plugin: the agent drives the browser to the last deploy, billing, or pull request step. You make the final click.

git clone https://github.com/equwal/deploy-handoff

Log | Files | Refs


commit 86fb810b4b8ecee940f9ed1fb5057c933619b3b0
equwal <13551856+equwal@users.noreply.github.com>
2026-09-27 00:06:27 -0700

Add DEPLOY keyword pipeline: verify, version, ship, upstream, live deploy

 .claude-plugin/marketplace.json |  2 +-
 .claude-plugin/plugin.json      |  2 +-
 rules/deploy-handoff.md         | 39 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json
index 5a66ff8..3741d34 100644
--- a/.claude-plugin/marketplace.json
+++ b/.claude-plugin/marketplace.json
@@ -10,7 +10,7 @@
     {
       "name": "deploy-handoff",
       "description": "Drives your browser through deploy, billing, and sign-in pages, and opens pull request forms. Then a dialog shows you the final click. Claude never makes it for you.",
-      "version": "0.4.0",
+      "version": "0.5.0",
       "author": {
         "name": "equwal"
       },
diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json
index 214d220..d53aebc 100644
--- a/.claude-plugin/plugin.json
+++ b/.claude-plugin/plugin.json
@@ -1,6 +1,6 @@
 {
   "name": "deploy-handoff",
-  "version": "0.4.0",
+  "version": "0.5.0",
   "description": "Drives your browser through deploy, billing, and sign-in pages, and opens pull request forms. Then a dialog shows you the final click. Claude never makes it for you.",
   "author": {
     "name": "equwal",
diff --git a/rules/deploy-handoff.md b/rules/deploy-handoff.md
index b260267..d32cc4d 100644
--- a/rules/deploy-handoff.md
+++ b/rules/deploy-handoff.md
@@ -1,3 +1,42 @@
+## MANDATORY: The word DEPLOY runs the full pipeline at max verification
+
+When the user's message is, or contains, the standalone word "DEPLOY" (any
+case), treat it as one command: run the full pipeline below. Do not ask which
+part they mean. Try each step. When a step does not apply to this project,
+say so and move on. A step that does not apply is not a blocked step.
+
+1. **Verify at max rigor first.** Run the strictest check the project has:
+   formatter, linter, a strict type check, and the full test suite. Add a
+   regression test for each new behavior. Run each check as a real command
+   and show the output. A step with no command output is not done. If the
+   project has none of this tooling, say so instead of skipping silently.
+2. **Version.** Try to set a version number for the change. Use the scheme
+   the project already has: bump the version field in `package.json`,
+   `pyproject.toml`, `Cargo.toml`, or a similar manifest. If it has no such
+   file but already uses git tags for versions, add the next tag. If neither
+   exists, say so and skip.
+3. **Ship.** Commit the change with a self-contained message, keep secrets
+   out of the diff, and push.
+4. **Upstream.** Try to push the change upstream. Follow "Pull requests"
+   below: if the repo is a fork, or has an `upstream` remote, and the change
+   is useful to the upstream project, open that pull request.
+5. **Live deploy.** Try to put the change where it runs live. Do each of
+   these the project actually has:
+   - A deploy platform config (`vercel.json`, `netlify.toml`,
+     `wrangler.toml`, `fly.toml`, a GitHub Actions deploy workflow).
+   - A VPS the project deploys to: an SSH or rsync deploy script, an Ansible
+     playbook, or a Docker Compose file with a known host. Restart the
+     service after the copy.
+   - A local install or run step on this computer: a local package install,
+     a copy to a run folder, or a restart of a local daemon or service.
+   If the project has none of these, say so and skip.
+6. **Hand off what is left.** Give the user each step that needs a live key,
+   a production flag, a domain purchase, a sign-in, or another human action.
+   Use the `deploy-handoff` skill for each one.
+
+Report one line per part: done, blocked, or not applicable, with the cause
+for a blocked part.
+
 ## MANDATORY: Hand off human steps. Do not refuse the task.
 
 The `deploy-handoff` plugin is installed. Its skill shows the user a dialog with the last step of a task. The user makes the final click in the browser.