Install in seconds
Install this skill
Copy the command and run it in your terminal. You can review the source before installing.
terminal
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills

Works with Git. The repository opens in your current directory.

πŸš€
DevOpsPython

Deploy

by jeremylongshore

Runs pre-push checks (lint, typecheck, build, tests, security) then commits, releases, and pushes with explicit confirmation. Never skips gates.

2.6K stars368 forksAdded 2026/07/19
agent-skillsaiai-agentsanthropicautomationclaude-codeclaude-code-pluginsdeveloper-toolsdevopsllmmarketplacemcpplugin-marketplaceplugin-systemsaasskills

Documentation

README

Deploy

No gate skipped, no failure ignored. If any gate fails, halt and report. Never --no-verify. Never bypass.

Failure recovery (rule 14). Worker errors and Quality Gate failures follow the canonical policy in skills/hyperflow/failure-recovery.md. Gate failures are user-surfaced, never auto-fixed β€” print the failing command + full stderr and halt the push. Never --no-verify, never force-push to main.

Per-Step Agent Map

Step Sub-phase Workers Reviewer Notes
1a Repo-state scan Worker A (git status), Worker B (git log) Reviewer β€”
1b Tool detection Worker A (profile.md + lockfiles), Worker B (testing.md + devDeps) Reviewer β€”
2a Lint + typecheck (parallel) Worker A (linter), Worker B (formatter), Worker C (tsc) Reviewer Step 3 (Security Sweep) runs in parallel with Step 2 at orchestrator level; 2a halts chain on any failure before 2b
2b Build gate Worker A (prod build), Worker B (dev build) Reviewer Depends on 2a PASS
2c Test gate Worker A (unit), Worker B (integration/E2E) Reviewer Parallel (P1); depends on 2b PASS
3a Secrets scan Worker A (diff pattern), Worker B (file pattern) security-reviewer Runs in parallel with Step 2 (pre-build; read-only)
3b Dependency audit Worker A (CVE audit), Worker B (license check) vulnerability-reviewer (web-research-first) β€”
4 Commit single Worker Reviewer atomic-exempt (DOCTRINE 12.2)
5a Release execution single Worker Reviewer atomic-exempt (DOCTRINE 12.2)
5b Version sync Worker A (manifests), Worker B (changelog) Reviewer β€”
6 Push gate AskUserQuestion β€” structural gate; atomic-exempt
7 Output single print β€” atomic-exempt (Β§12.1)

Step 1 β€” Survey State

Sub-phases run in parallel (P1).

Step 1a β€” Repo-state scan

Two Workers in parallel:

  • Worker A β€” git status --short β€” uncommitted changes, staged files
  • Worker B β€” git log origin/<branch>..HEAD --oneline β€” commits ahead of remote; detect branch name

Reviewer β€” verdict on repo state (clean / has uncommitted / ahead by N). If detached HEAD or no remote configured β†’ halt with reason.

Step 1b β€” Tool detection

Two Workers in parallel:

  • Worker A β€” Read .hyperflow/profile.md for package manager and project type; fallback: inspect package.json, pyproject.toml, Cargo.toml, go.mod
  • Worker B β€” Check .hyperflow/testing.md for test runner; fallback: detect from package.json devDependencies (vitest, jest, playwright, pytest, etc.)

Reviewer β€” produce a single tool manifest (package manager, test runner, typed-project flag, build script presence). Used by Step 2 gates.

Step 2 β€” Quality Gates

Step 2 runs in parallel with Step 3 (Security Sweep) at the orchestrator level β€” both are pre-build, read-only checks. Both must reach PASS before Step 4 (Commit) may proceed. Within Step 2, sub-phases 2a β†’ 2b β†’ 2c run sequentially (2b depends on 2a PASS; 2c depends on 2b PASS). Halt at the first NEEDS_REVISION verdict.

Wall-clock note: default flow runs 3 gates simultaneously (lint + security + typecheck in parallel), then build, then tests β€” roughly max(lint, security, typecheck) + build + max(unit, integration), versus the old 4Γ— sequential gate duration. Typical saving: ~40% wall-clock reduction. Under --thorough, a standalone final-integration review pass is added after all gates complete, and intra-sub-phase Workers serialize (DOCTRINE Β§12.2/clarification), so the full saving collapses to 2c's unit + integration pair only.

Print Gate <letter> β€” <name> before each sub-phase.

Step 2a β€” Lint + typecheck (parallel; no build artifact required)

Three Workers in parallel (P1). None depend on build output β€” safe to run alongside Step 3.

  • Worker A β€” Detect and run primary linter: npm run lint / pnpm lint / bun run lint / eslint .. On failure: auto-fix via --fix, re-run once; report final error count.
  • Worker B β€” Detect and run formatter check: prettier --check . / biome check . / equivalent. Report diff count.
  • Worker C β€” Root typecheck: tsc --noEmit / npm run typecheck. Skip if not a typed project (per Step 1b tool manifest). Also run per-package typecheck if workspace detected (pnpm/yarn workspaces): iterate packages with tsc --noEmit in each.

Reviewer β€” aggregate verdict across all three Workers:

  • PASS β€” all clean (or absent/untyped)
  • NEEDS_REVISION β€” any gate fails β†’ halt before 2b. Report which specific gate(s) failed and why. Do NOT proceed to build.
  • ESCALATE β€” config errors preventing execution of any gate

Step 2b β€” Build gate (sequential; depends on 2a PASS)

Two Workers in parallel:

  • Worker A β€” Production build: npm run build / pnpm build / bun run build. Capture output; report size or artifact path if printed.
  • Worker B β€” Dev/preview build if a separate script exists (npm run build:dev, vite build --mode development, etc.). Skip if no separate dev-build script.

Reviewer β€” verdict:

  • PASS β€” production build succeeds
  • NEEDS_REVISION β€” production build fails β†’ halt with output
  • ESCALATE β€” build tool absent or script missing (skip silently, not failure)

Step 2c β€” Test gate (parallel; depends on 2b PASS)

Two Workers in parallel (P1):

  • Worker A β€” Unit tests: run full unit suite per runner from Step 1b (vitest, jest, pytest, cargo test, etc.). Full suite β€” not just affected. Report count.
  • Worker B β€” Integration / E2E tests if runner detected separately (playwright, cypress, etc.). Skip if no integration runner found.

Reviewer β€” verdict:

  • PASS β€” all tests pass (or integration absent)
  • NEEDS_REVISION β€” failing tests β†’ halt with failing test names. Do NOT skip. Do NOT increase timeout.
  • ESCALATE β€” runner misconfigured or no tests found and test runner is declared

See quality-gates.md for gate details.

Step 3 β€” Security Sweep

Runs in parallel with Step 2 at the orchestrator level (P3 β€” concurrent independent pre-conditions; DOCTRINE Β§12.2). Both Step 2 and Step 3 are pre-build, read-only checks with no shared state. Both must reach PASS before Step 4 (Commit) may proceed. Halt on SECURITY_VIOLATION immediately β€” no retry, no 2a must also complete first.

Sub-phases 3a and 3b run in parallel (P1).

Step 3a β€” Secrets and keys scan

Two Workers in parallel:

  • Worker A β€” Pattern scan staged + recent diff for hardcoded secrets: API keys, private keys, connection strings, tokens. Use git diff HEAD~1..HEAD as scan surface.
  • Worker B β€” File-level scan of files modified in this changeset for common secret patterns (SG., sk-, ghp_, AKIA, BEGIN RSA PRIVATE KEY, etc.).

Reviewer β€” dispatched as the security-reviewer specialist β€” aggregate findings from 3a Workers. If any secret found β†’ halt immediately with SECURITY_VIOLATION: <file>:<line> β€” <pattern>. No auto-remediation β€” user must rotate + remove. (Add compliance-reviewer when the changeset touches PII / regulated data.)

Step 3b β€” Dependency audit

Two Workers in parallel:

  • Worker A β€” npm audit --audit-level=high / pnpm audit / pip-audit / cargo audit. Report critical and high CVEs only.
  • Worker B β€” License check: scan new dependencies added in this changeset for prohibited licenses (GPL in a proprietary project, etc.) if .hyperflow/profile.md declares a license policy.

Reviewer β€” dispatched as the vulnerability-reviewer specialist (deploy is a gated flow β†’ web-research-first on current advisories, proving each CVE's applicability to the pinned versions) β€” verdict:

  • PASS β€” no critical/high CVEs; no license violations
  • NEEDS_REVISION β€” critical CVE found β†’ halt and surface CVE IDs
  • ESCALATE β€” audit tool absent β†’ skip silently (not a failure); missing license policy β†’ skip

Step 4 β€” Commit

Atomic β€” single Worker β†’ Reviewer pair with no parallel angles. Exempt from sub-phase decomposition per DOCTRINE 12.2 atomic exemption.

  • Worker-introduced fixes from Step 2 β†’ commit automatically with a conventional commit message.

  • Pre-existing user-owned uncommitted changes β†’ use AskUserQuestion to confirm inclusion. Per DOCTRINE rule 8, this is a binary action gate β€” no recommendation marker:

    Include uncommitted user changes in this commit?
      Include β€” your local work + the pre-push fixes ship together
      Exclude β€” commit only the worker fixes; user changes stay local
    

    If the popup UI is unavailable on a portable surface (Codex / OpenCode / Grok), print the same inclusion gate as a Hyperflow Question chat block and wait for the user's answer.

  • Never add Co-Authored-By: Claude in commit messages β€” see git-workflow.md.

Step 5 β€” Release

Sub-phases run sequentially (5b depends on 5a output).

Step 5a β€” Release script execution

Single Worker (no parallel angle β€” single mechanical action):

  • Worker β€” scripts/release.sh exists β†’ run it. release-please / changesets detected β†’ use it. "Nothing to release" or no releasable commits β†’ skip and record Release: skipped.

Reviewer β€” capture output: new version string (if bumped) or skip reason. Feed version to Step 5b.

Step 5b β€” Version sync verification

Two Workers in parallel (only runs if 5a produced a new version):

  • Worker A β€” Verify version appears consistently across all manifests: package.json, plugin.json, marketplace.json, any other version-bearing files identified in Step 1b.
  • Worker B β€” Verify CHANGELOG was updated by the release script: check that the new version header exists in CHANGELOG.md (or equivalent). Skip if no changelog file.

Reviewer β€” verdict:

  • PASS β€” all manifests in sync; changelog updated
  • NEEDS_REVISION β€” version mismatch or changelog missing entry β†’ halt
  • (Skip entirely if Step 5a returned Release: skipped)

Step 6 β€” Push (honors push pre-election from Scope Step 2.6 Β· STRUCTURAL GATE when push=ask)

Read the push arg from chain args (propagated from Scope Step 2.6 when chain-mode=auto). Three paths:

push=auto β€” push immediately without asking. Print Push: pre-elected (auto) β€” pushing branch + tags…. Run git push, then git push --tags if release created tags. Skip the AskUserQuestion call. Per DOCTRINE rule 8, this is NOT an invented skip β€” the user already gave consent at Scope Step 2.6.

push=never β€” skip the push step entirely. Print Push: pre-elected (never) β€” branch held local. Run \git push` manually when ready.Do not callgit push`.

push=ask (default; also fires when no operational pre-election was made β€” e.g. deploy invoked standalone) β€” fire the structural-gate AskUserQuestion. Per DOCTRINE rule 8, this is a binary action gate β€” no recommendation marker on either option.

Push to origin/<branch>?
  Push β€” all gates pass Β· safe to ship
  Hold β€” keep local; you can push later
  • Never force-push to main or master, regardless of push value. push=auto is a plain git push; if the remote rejects it (non-fast-forward), surface the error and stop β€” do NOT add --force.
  • On yes (or push=auto) β€” git push, then git push --tags if release created tags.
  • If the popup UI is unavailable on a portable surface (Codex / OpenCode / Grok) for push=ask, print the push gate as a Hyperflow Question chat block and wait for the user's answer. If no interactive channel is available at all, hold the push and print Push: held β€” interactive confirmation required.

Step 7 β€” Output

── Ship Result ───────────────────
Branch: <name>
Gates: lint pass Β· typecheck pass Β· build pass Β· tests pass (<n> passed)
Security: pass
Commit: <sha> <message>
Release: v<x.y.z> (or skipped)
Push: confirmed (or held)
──────────────────────────────────

On gate failure:

── Ship Result ───────────────────
Branch: <name>
Gates: lint pass Β· typecheck fail Β· build skipped Β· tests skipped
  typecheck: 3 errors in src/auth/middleware.ts
Halted at Step 2a
──────────────────────────────────

Use pass / fail / skipped as plain words β€” no βœ“ / βœ— / β€” symbols.

Anti-patterns

  • --no-verify, --no-gpg-sign, bypassing hooks
  • Ignoring failing tests
  • Force-pushing to main
  • Auto-pushing without explicit confirmation
  • Committing Co-Authored-By: Claude

Memory

After successful ship, append to .hyperflow/memory/patterns.md if any new pattern was confirmed during gates. Skip if nothing new.

Doctrine

Full rules in DOCTRINE.md. Output style in output-style.md.

Overview

/hyperflow:deploy runs the pre-push gates (lint + typecheck + security sweep in parallel, then build, then tests), composes any worker-introduced fixes into a clean commit, runs the release script if present, and asks before pushing. Standalone β€” never auto-invoked from the chain. Push always requires an explicit AskUserQuestion confirmation. Never bypasses hooks, never force-pushes to main, never adds AI attribution to commits.

Prerequisites

  • Git repository with a remote configured (for the push step).
  • Lint / typecheck / build / test scripts detectable in package.json or via .hyperflow/testing.md. Missing scripts are skipped silently (not failed).
  • scripts/release.sh (or release-please / changesets) optional β€” if present, runs at Step 5; otherwise release is user-managed.
  • For security sweep: the security-reviewer and vulnerability-reviewer specialist agents are dispatched. Sweep is mandatory; failure to dispatch = halt.

Instructions

The 7 numbered steps live in Step 1 β€” Survey State through Step 7 β€” Output above. Summary:

  1. Survey state β€” two sub-phases in parallel: 1a repo-state scan (git status + ahead count), 1b tool detection (package manager, test runner, typed-project flag).
  2. Quality gates β€” three sequential sub-phases: 2a lint+typecheck (3-wide parallel Workers, no build artifact needed), 2b build (depends on 2a PASS), 2c tests (2-wide parallel, depends on 2b PASS). Runs in parallel with Step 3 at orchestrator level. Halt at first NEEDS_REVISION.
  3. Security sweep β€” runs in parallel with Step 2 (P3, pre-build read-only). Two sub-phases in parallel: 3a secrets/keys scan (security-reviewer specialist), 3b dependency audit. Halt on SECURITY_VIOLATION or critical CVE. Both Step 2 and Step 3 must PASS before Step 4.
  4. Commit β€” atomic. Worker fixes auto-committed; AskUserQuestion for pre-existing uncommitted user changes.
  5. Release β€” two sequential sub-phases: 5a run release script, 5b verify version sync across manifests.
  6. Push gate β€” atomic structural gate. Honors push pre-election (auto/never/ask). push=ask fires AskUserQuestion. Never force-push to main.
  7. Print structured ship result.

Output

See the ship result block in Step 7 β€” Output above. Two formats: success (all gates pass, listed inline) and failure (halt at first failing gate, listed in order). Always uses plain words (pass / fail / skipped) β€” no decorative symbols.

Error Handling

Failure Behavior
Step 2a β€” lint fails Auto-retry once with --fix. Still failing β†’ halt with error count. Do NOT proceed to 2b.
Step 2a β€” typecheck fails Halt at 2a. No auto-fix β€” typecheck errors require human eyes.
Step 2b β€” build fails Halt with build output. Pre-existing build issues likely pre-date the change set.
Step 2c β€” tests fail Halt with failing test names. Do NOT skip failing tests. Do NOT increase timeout.
Security sweep finds secrets Halt with SECURITY_VIOLATION: marker and the file:line. User decides remediation (revert the secret + rotate the credential).
scripts/release.sh says "nothing to release" Skip release; print Release: skipped (nothing to release). Push step still fires for non-release commits.
Push rejected (non-fast-forward) Refuse to force-push. Print: Push rejected β€” branch is behind origin. Pull/rebase first.
AskUserQuestion popup unavailable (Codex / OpenCode / Grok) Print the push or commit-inclusion gate as a Hyperflow Question chat block and wait for the user's answer.
Headless / non-interactive Refuse push step entirely. Print structured result with Push: held β€” interactive confirmation required.
Pre-existing uncommitted user changes Use AskUserQuestion to ask whether to include or exclude from the commit. Default: include.

Examples

Clean release path

/hyperflow:deploy

Step 2a β€” Lint + typecheck (parallel with Step 3 security sweep)
Worker A β€” running lint
Worker B β€” running formatter check
Worker C β€” running tsc
Step 3a/3b β€” security sweep (parallel)
Step 2a Reviewer β€” all clean
Step 3 Reviewer β€” no secrets found
Step 2b β€” Build
Step 2c β€” Tests (parallel)

? Push to origin/main?
   Push β€” all gates pass Β· safe to ship
   Hold β€” keep local; you can push later

[user picks Push]

── Ship Result ───────────────────
Branch: main
Gates: lint pass Β· typecheck pass Β· build pass Β· tests pass (147 passed)
Security: pass
Commit: dc38564 fix(skills): marketplace validator compliance
Release: v3.1.2
Push: confirmed
──────────────────────────────────

Gate failure halts the pipeline

/hyperflow:deploy

Step 2a β€” Lint + typecheck (parallel with Step 3 security sweep)
Worker A β€” running lint
Lint failed: 3 errors in src/auth/middleware.ts
Auto-fix attempted... still failing.
Step 2a Reviewer β€” NEEDS_REVISION: lint gate failed (3 errors in src/auth/middleware.ts)
Halted at Step 2a. Build and tests skipped.

── Ship Result ───────────────────
Branch: main
Gates: lint fail Β· typecheck skipped Β· build skipped Β· tests skipped
  lint: 3 errors in src/auth/middleware.ts (unused vars, missing return type)
Halted at Step 2a
──────────────────────────────────

Security violation

/hyperflow:deploy

Gates pass: lint Β· typecheck Β· build Β· tests
**Reviewer** β€” security sweep
SECURITY_VIOLATION: src/config/email.ts:12 β€” hardcoded SendGrid API key (SG.xxx...)

Halted before commit. Rotate the credential and remove the literal from source before retrying.

Resources