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.