agentsclimarketplace

Ship prod

Skill PramodDutta/qaskills/.claude/skills/ship-prod

Use when deploying qaskills.sh to production, verifying whether a deploy landed, or when a push to main did not show up on the live site, e.g. "deploy", "ship it", "push this live", "is prod updated?", "the site still shows the old version".From its SKILL.md

Install
npx -y skills add PramodDutta/qaskills --skill ship-prod

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

4.0 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it

Ship Prod

Deploys COMMITTED HEAD only, to the correct Vercel project, then proves the deploy landed. git push to main does not reliably auto-deploy; this skill is the deploy path.

Fixed facts

  • Project: qaskills.sh, project ID prj_rDKli4AyhHoXZXV8NHrs92Ncbf4f, org team_DGM6VSs6vhASlhktmHkSqPwn, account luckydutta96
  • A decoy project qaskills exists WITHOUT the domain. Never deploy there. Never accept interactive "link this directory?" defaults.
  • Build command lives in root vercel.json (shared build && web build); Node must stay 20.x (Neon driver breaks on 24)
  • vercel --prod uploads the WORKING TREE, not git HEAD
  • .vercel/project.json is gitignored, so fresh worktrees are unlinked: explicit env IDs required there

Preflight

cd /Users/promode/qaskills
vercel whoami                              # must be luckydutta96; else STOP, user must vercel login
git status --short                         # empty => clean path; anything => worktree path
git log -1 --oneline --stat | head -15     # confirm HEAD is exactly what you intend to ship
pnpm --filter @qaskills/shared build && pnpm --filter @qaskills/web build   # never ship a red build

Deploy

Clean tree (no modified or untracked files that could ship):

cd /Users/promode/qaskills && npx vercel --prod --yes

Dirty tree (default assumption; the working tree here usually carries WIP):

DEPLOY_DIR=$(mktemp -d)/qaskills-deploy
git -C /Users/promode/qaskills worktree add "$DEPLOY_DIR" HEAD
cd "$DEPLOY_DIR"
VERCEL_ORG_ID=team_DGM6VSs6vhASlhktmHkSqPwn \
VERCEL_PROJECT_ID=prj_rDKli4AyhHoXZXV8NHrs92Ncbf4f \
npx vercel --prod --yes
cd /Users/promode/qaskills
git worktree remove "$DEPLOY_DIR" --force

Capture the deployment URL the CLI prints; it goes in the final summary.

Verify (required, every deploy)

npx vercel ls | head -5                                         # newest deployment: Ready, Production
curl -s -o /dev/null -w '%{http_code}\n' https://qaskills.sh    # 200
# The specific change, visible live. Examples:
curl -s -o /dev/null -w '%{http_code}\n' https://qaskills.sh/blog/<new-slug>   # new article: 200
curl -s https://qaskills.sh/<changed-page> | grep -c '<expected-marker>'       # code change: >= 1

All three must pass before saying "deployed". If the domain still serves old content while the new deployment is Ready, the alias did not move: npx vercel promote <deployment-url>.

Rollback

npx vercel ls                       # find the previous Ready production deployment
npx vercel promote <previous-url>   # fast path: point the domain back

For a code-level revert, git revert <sha> on main, then run this skill again.

Failure modes

SymptomCauseFix
CLI asks to link / offers project qaskillsUnlinked dir, interactive defaultsAbort; re-run with both VERCEL_* env vars set
Error: not authorized / wrong scopeLogged into another accountvercel whoami; user runs vercel login as luckydutta96
Vercel build fails, local build greenEnv-dependent code at import timeLazy-init pattern (see CLAUDE.md); no secrets required at build
Deploy Ready but site unchangedDomain alias on older deployment, or you shipped stale HEADvercel promote; confirm intended commit was in HEAD
WIP appeared on prodDeployed dirty working tree directlyRoll back via promote, then redeploy via worktree

Red flags

  • "The push probably triggered a deploy"
  • Deploying from a dirty root without the worktree
  • Answering Vercel's interactive prompts with defaults
  • Declaring success without the three verification commands' output
  • Touching Vercel project settings (Node version, env vars, domains) without user approval

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most ship operate skills give in ~1.0k tokens

Counted across 1,077 of the 1,713 authors here whose files we hold, read 2026-09-06

  • Create GitHub releasein 44 of 1077, across 43 files
  • Run the test suitein 30 of 1077, across 25 files
  • Create and push git tagin 27 of 1077, across 26 files
  • Push commits and tagsin 27 of 1077
  • Create annotated tagin 25 of 1077, across 22 files
  • Ensure working tree is cleanin 24 of 1077
  • Check for product marketing context firstin 23 of 1077, across 6 files
  • Commit version bump changesin 22 of 1077, across 21 files
  • Update CHANGELOG.mdin 21 of 1077, across 20 files
  • Structure launch marketing across three channel typesin 20 of 1077, across 5 files
  • Commit and tag the releasein 20 of 1077, across 18 files
  • Update the CHANGELOG for new releasesin 19 of 1077

Said here and by no other author read

  • Verify identity with vercel whoami
  • Confirm git HEAD status
  • Run builds before shipping
  • Deploy committed head only
  • Promote deployment if alias lags
  • Roll back by promoting previous url

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.