Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Ship

ASecurity

Meta pipeline: review → land → deploy → smoke → heal → monitor. Takes one or more PRs from "open" through merged, deployed, live-verified, and monitored until every declared KPI is healthy. Use when asked to "ship this", "land and monitor", "take this all the way to prod", or when a feature spans repos and needs the full loop closed (per policy hq-smoke-cross-repo-contracts-before-done).

85 stars
0 votes
0 copies
1 views
Added 9/19/2026
devopsgobashcode-reviewgitapifrontendbackendsecuritydocumentation

Works with

terminalcliapi

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add indigoai-us/hq-core --skill ship --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ship?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Ship
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/indigoai-us-ship/badge)](https://www.skillsdirectory.com/skills/indigoai-us-ship)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: ship
description: |
  Meta pipeline: review → land → deploy → smoke → heal → monitor. Takes one or
  more PRs from "open" through merged, deployed, live-verified, and monitored
  until every declared KPI is healthy. Use when asked to "ship this", "land and
  monitor", "take this all the way to prod", or when a feature spans repos and
  needs the full loop closed (per policy hq-smoke-cross-repo-contracts-before-done).
allowed-tools: Bash, Read, Grep, Glob, Write, Edit, Agent, AskUserQuestion, TaskCreate, TaskUpdate, Monitor, CronCreate, CronList
---

# Ship

**REVIEW → LAND → DEPLOY → SMOKE → HEAL (on any failure) → MONITOR → DOCUMENT.**

This skill is a meta-pipeline that composes existing pack skills into one
closed loop. It does not reimplement them — it sequences them and owns the
failure/heal/re-verify cycle plus standing monitoring. A PR is not "shipped"
when it merges; it is shipped when the live user-facing path works and a
standing monitor is watching it.

A worked example of the full loop looks like: one session takes a paired
frontend and backend PR from open through merged, deployed, smoke-verified
against the live signup path, and monitored until the declared KPIs are healthy
— with the session journal kept in that project's `journal/` directory.

## Input

Accepts any combination of:

- **PR refs** — one or more, each as `owner/repo#123`, a PR URL, a bare number
  (repo inferred from cwd), or nothing (open PR for the current branch).
- **KPI checklist** — a list of observable health criteria the shipped feature
  must satisfy (e.g. "funnel smoke passes", "no 5xx on /api/me/signup/*",
  "checkout redirect lands on Stripe"). If omitted, derive one in Step 0 and
  confirm it with the user.
- **Flags** — `--no-monitor` (skip Step 6 standing monitor), `--skip-review`
  (only when the PRs already carry a completed paranoid review this session),
  `--no-docs` (skip Step 7 documentation sync).

## Done Criteria (define BEFORE executing)

The pipeline is complete only when ALL of these are observably true:

1. Every input PR is merged (state `MERGED`, merge commit recorded).
2. Every production deploy triggered by those merges completed successfully
   (Vercel deployment `READY` on the production target, and/or the deploy-prod
   GitHub workflow run concluded `success`).
3. A real end-to-end smoke against the LIVE deployed stack passed — real auth,
   real data, whole loop, cleanup done (hard policy
   `hq-smoke-cross-repo-contracts-before-done`).
4. A standing monitor exists and is verified (cron smoke workflow or scheduled
   task), OR `--no-monitor` was passed.
5. Every KPI in the checklist reads healthy, and the final report includes the
   KPI table.

Documentation sync (Step 7) is deliberately NOT in this list. A change is
"shipped" when the live path works and a monitor watches it — whether the docs
got updated does not gate that status. Docs run last, foreground, after the
above are all true.

Write these as concrete, checkable statements for THIS run in Step 0 (with the
actual repo names, URLs, workflow names, KPI probes) before touching anything.

## Step 0: Resolve Scope + Ordering

1. Resolve each PR ref → `{repo, number, title, branch, base}`. Anchor every
   `gh` call with `-R owner/repo`.
2. Resolve the owning company; load company policy constraints via
   frontmatter-only scan of `companies/{co}/policies/` (digests are retired —
   SessionStart uses `inject-policy-on-trigger`) and the manifest infra fields
   for deploy targets. Never guess credentials.
3. Identify each repo's production deploy mechanism:
   - **Vercel git integration** — merge to main auto-deploys; watch via
     `vercel ls`/`vercel inspect` or the GitHub deployment status API.
   - **GH deploy-prod workflow** — merge triggers (or you dispatch) a workflow;
     watch the run.
   - **Manual (SST etc.)** — merging does NOT deploy; the deploy is an explicit
     pipeline step you must run and watch.
4. **Multi-repo ordering (hard rule):** when PRs span a producer and consumer
   of a shared contract, land in contract-safe order — **additive API fields /
   server first, defensive consumers second**. The server must tolerate old
   clients before any client that depends on the new field/route deploys.
   Removals invert: consumers stop reading first, producer removes last.
   Build the merge order accordingly; within a tier, smallest/lowest-risk first
   (reuse `land-batch` triage semantics for >2 PRs).
5. Derive or confirm the KPI checklist. Each KPI must name its probe (command,
   URL, query, or workflow) — a KPI without a probe is not a KPI.
6. Present the plan (PRs, order, deploy mechanisms, KPIs, done criteria) and
   get an explicit go. Landing + deploying is irreversible-adjacent; this gate
   is mandatory.

## Step 1: REVIEW (pre-merge gate)

For each PR, run the paranoid pre-landing review — reuse
`/review` semantics (two-pass: CRITICAL blocks, INFORMATIONAL
goes in the PR body), or `/code-review` where available. For multi-PR ships,
additionally review the CROSS-PR contract: do the field names, envelopes,
auth token types, and encodings match on both sides of every boundary the PRs
touch? (This is exactly where mocked unit tests lie — see the six-bug cascade
in the smoke policy.)

- CRITICAL findings → fix on the branch, push, wait for CI, re-review.
- Never merge past an unresolved CRITICAL without explicit user override.

## Step 2: LAND

For each PR in the Step 0 order, reuse `/land` semantics:

1. Wait for CI green — use a background Monitor on
   `gh pr checks {n} -R {repo}` (see Background Monitors below). Fix failures
   at root cause; no skipped/loosened tests, ever.
2. Resolve outstanding review threads (bot suggestions applied if valid; human
   comments summarized to the user).
3. Merge: `gh pr merge {n} -R {repo} --squash --delete-branch` (respect repo
   merge policy). Verify state `MERGED` and record the merge commit.
4. Between PRs: pull main, re-check the next PR's `mergeable` (earlier merges
   can create conflicts), and re-verify contract ordering still holds.

## Step 3: DEPLOY (watch to completion)

For each merged PR, watch its production deploy to a terminal state:

- **Vercel:** find the deployment created from the merge commit and watch
  until `READY` on production (`gh api repos/{owner}/{repo}/deployments` +
  statuses, or `vercel inspect`). A `READY` preview is not done — it must be
  the production target.
- **GH workflow:** find the run triggered by the merge (or dispatch it), then
  `gh run watch {id} -R {repo}` in the background until concluded `success`.
- **Manual deploy repos:** run the documented deploy, watch it, and say so in
  the report — never report "merged" as "deployed" for these.

Respect the Step 0 ordering here too: do not start a consumer's deploy until
its producer's deploy is live, when the consumer needs the new contract.

## Step 4: SMOKE (live, end-to-end)

Hard gate per `hq-smoke-cross-repo-contracts-before-done`:

- Exercise the WHOLE user-facing loop on the LIVE deployed stack with real
  auth and real data — not unit tests, not previews, not mocked boundaries.
  (Reference: the funnel ship created a real company via the new route and
  followed the redirect all the way onto real Stripe checkout.)
- Prefer agent-browser for browser flows (pack policy
  `hq-prefer-agent-browser`); API loops via real authed requests.
- **Clean up** every test artifact the smoke creates (delete smoke companies,
  test records, orders) — or explicitly hand the leftover to the user in the
  report with a deletion note.
- Record exactly what was exercised and what was observed; "it loaded" is not
  a smoke result.

## Step 5: HEAL (on any failure, any step)

On any failure — CI red, review CRITICAL, deploy failed, smoke broke, KPI
unhealthy — do NOT patch blind. Apply `/investigate`
discipline:

1. Scope-lock to the failure; form ranked hypotheses; test one variable at a
   time; 3-strike rule before widening scope.
2. Fix at root cause, with a regression test (`hq-bugfix-requires-tests`).
3. Re-enter the pipeline at the earliest affected step: fix → review the fix →
   land it → watch its deploy → re-smoke. Never re-verify less than what the
   fix could have affected.
4. If the failure is in production and user-impacting, tell the user
   immediately (security/blocker signal) and offer revert as an option before
   a slow forward-fix.

## Step 6: MONITOR (standing, until KPIs are green)

1. **Verify or create a standing monitor:**
   - Check for an existing cron smoke — a scheduled GitHub workflow smoking
     this path, or a scheduled task (`CronList` / scheduled-tasks) already
     probing it. If one exists and covers the shipped path, verify it ran
     green post-deploy.
   - If none exists, create one: a scheduled smoke workflow in the owning
     repo, or a scheduled task that runs the smoke and alerts on failure
     (the funnel ship used a 6-hour scheduled task alerting #hq-dev).
2. **Watch until healthy:** probe every KPI in the checklist. Use background
   Monitors with sensible windows — not sleep loops (see below). Keep watching
   until every KPI reads healthy for at least one full probe cycle
   post-deploy, healing (Step 5) anything that reads unhealthy.
3. Confirm the standing monitor itself works (trigger it once or verify its
   most recent run) — an unverified monitor is not a monitor.

## Background Monitors (not sleep loops)

NEVER busy-wait with foreground `sleep` loops. Use the harness's background
facilities:

- `gh run watch` / long-poll commands via Bash `run_in_background: true` — the
  harness re-invokes you when they exit.
- The `Monitor` tool with an until-condition for waiting on external state.
- Scheduled tasks / cron workflows for anything beyond the session's horizon.

Multiple independent watches (e.g. two repos' deploys) run as parallel
background monitors, not serially.

## Step 7: DOCUMENT (foreground, last — after everything above is green)

Only after Steps 1–6 are done (merged, deployed, smoked, monitored) sync the
documentation to match what shipped. This runs **foreground and last** — never
in the background, never racing the ship work, never a gate on "shipped". Skip
the whole step with `--no-docs`.

Compose the two existing doc skills; do not reimplement them:

1. **In-repo docs** — run `/document-release` for the shipped
   repos. Syncs README, CLAUDE.md, architecture docs, and INDEX files to match
   the diff. (This overlaps with what `/handoff` runs, but running it here — with
   the shipped diff hot in session — produces higher-fidelity edits than a later
   headless handoff subagent reconstructing the diff from git. It is idempotent,
   so the overlap is harmless.)
2. **Published docs site** — run `publish-docs`. It resolves the active company's
   docs-site sync skill (e.g. `{co}:sync-docs`) and runs it foreground, or cleanly
   no-ops if the company has no published docs site. This covers the standalone
   docs-site repo (e.g. `docs.{company}.com`) that `document-release` never touches.

A failure in either doc skill is reported plainly in Step 8 but does NOT retroact
the ship's merged/deployed/smoked status — surface it and let the user decide
whether to heal or hand it off. Docs are not in the Done Criteria.

## Step 8: Report

```
Ship Complete
─────────────
PRs:      #{n} {repo} → merged {commit[:8]}  (one line each, in landed order)
Review:   {pass | N criticals fixed}
Deploys:  {repo}: {vercel READY | workflow success | manual done}  (each)
Smoke:    {what was exercised} → PASS  (artifacts cleaned: {yes | handed off})
Heals:    {none | N failures root-caused and re-landed, one line each}
Monitor:  {existing verified | created: name + schedule + alert channel}
Docs:     {in-repo synced + site published <url> | in-repo synced, no site | skipped (--no-docs)}

KPI Table
| KPI | Probe | Status |
|-----|-------|--------|
| ... | ...   | ✅/❌  |
```

All KPIs must be ✅ (or explicitly waived by the user) before reporting done.
Then journal the ship per session-journal discipline.

## Rules

- Done criteria are written in Step 0 and never loosened mid-run.
- Never skip CI, never fake or loosen a test, every bugfix ships a regression
  test (`hq-no-test-shortcuts`, `hq-bugfix-requires-tests`).
- Additive-first / defensive-consumer ordering is a hard rule for multi-repo
  ships — both for merge order and deploy order.
- Merged ≠ deployed ≠ working. Only a live smoke plus healthy KPIs closes the
  loop; a standing monitor keeps it closed.
- Anchor every git/gh mutation (`git -C`, `gh -R`); never mutate from HQ root.
- Company isolation: one company's credentials and deploy targets only.
- Failures are reported plainly and immediately; healing is transparent in the
  final report, not hidden.
- Documentation (Step 7) is foreground, last, and non-gating: it runs only after
  the ship is verified, never in the background, and a docs failure never
  downgrades a merged/deployed/smoked ship. Compose `document-release` +
  `publish-docs`; do not reimplement doc logic here.

Attribution

indigoai-usindigoai-us
View sourceMore from indigoai-us →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Terraform Module Library

Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.

397921 votes

sematext-otel

Wire a service's OpenTelemetry output to Sematext Cloud. Walks through region, App-type, instrumentation flow (managed OTLP endpoint vs Sematext Agent), and signal selection (traces/metrics/logs), then produces the exact env-var block and points at a runnable reference example in this repo. Invoke when instrumenting a new app for Sematext.

01 votes

Deployment Patterns

Deployment workflows, CI/CD pipeline patterns, Docker containerization, health checks, rollback strategies, and production readiness checklists for web applications. Use when setting up deployment infrastructure or planning releases.

2459130 votes

Babysit

Watch a pull request or review cycle until it is ready to merge. Use when asked to babysit, monitor, or keep checking PR comments, reviews, and CI until all actionable issues are resolved.

942310 votes

V7 Roster

Interact with the Paperclip control plane API for task coordination and governance. Use when checking assignments, updating issue status, posting comments, delegating work, managing routines, or calling Paperclip API endpoints.

805540 votes
View all in devops →