# Ship

> Commit + push na GitHub (SSH) → Vercel auto-deploy → ověření nasazení. Auto-detekce módu: Node projekt s build skriptem = FULL (build + typecheck + kontrola assetů před pushem); statický web / ostatní = SIMPLE (rovnou commit + push + verify). Trigger: "/ship", "shipni to", "nasaď", "deployni".

- Skill: `jmech-pepa/ship` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jmech-pepa/ship`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jmech-pepa/ship/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: jmech-pepa (https://skillmd.com/u/jmech-pepa)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jmech-pepa/ship

---


# /ship — Commit, Push & Verify Deploy

Autonomní pipeline. Neptej se na potvrzení — proveď všechny kroky a reportuj na konci. Nehardcoduj žádné cesty ani URL, vše detekuj.

## Krok 0 — Detekce projektu a módu

1. **Project root:** nejbližší adresář s `.git` (od CWD nahoru). Všechny příkazy běží z něj.
2. **Mód:**
   - `package.json` s `build` skriptem (v rootu nebo prvním podadresáři) → **FULL** (build + validace před pushem)
   - jinak (statické HTML, Python, dokumenty) → **SIMPLE** (rovnou na Krok 2)
3. **Package manager** (FULL): `pnpm-lock.yaml` → pnpm, `yarn.lock` → yarn, jinak npm.
4. **Production URL** pro verify, v tomto pořadí:
   - `PRODUCTION_URL` / `NEXT_PUBLIC_SITE_URL` z `.env*`
   - `.vercel/project.json` → `https://<project-name>.vercel.app`
   - název repa z `git remote get-url origin` → `https://<repo-name>.vercel.app`
   - nic nenalezeno → Krok 3 přeskoč a uveď to v reportu

## Krok 1 — Build a validace (jen FULL mód)

1. `<pm> run build` — pokud selže, **STOP** a reportuj celý error output.
2. Paralelně 2 subagenti (`model: "sonnet"`), v jednom tool blocku:
   - **TypeScript:** `npx tsc --noEmit`, reportovat soubor + řádek + chybu
   - **Assety:** projít `.tsx/.ts/.css` v `src/` či `app/`, reference na obrázky/assety (`src=`, `url(`, importy obrázků) ověřit proti `public/`; reportovat rozbité cesty
3. Jakékoli chyby → **STOP** a reportuj, nepokračuj na git.

## Krok 2 — Commit & push

1. `git status`; žádné změny → přeskoč na Krok 3.
2. `git diff` + `git log --oneline -5` (styl commitů v repu).
3. Stage konkrétní soubory (`git add <soubory>`, ne `-A`); nikdy `.env*`, `node_modules/`, `.next/`, `dist/`, `.vercel/`, secrets.
4. Conventional commit anglicky (`feat:` / `fix:` / `chore:` / `style:` / `refactor:`), stručný. Co-Authored-By trailer nech na výchozím chování Claude Code — nehardcoduj jméno modelu.
5. Push přes SSH: `git push origin HEAD`.

## Krok 3 — Verify deploy

Přeskoč, pokud v Kroku 0 nebyla URL. Vercel deploy trvá typicky 30–90 s.

1. **Preferovaně přes `gh` CLI** (repo je na GitHubu, Vercel tam zapisuje deployment statusy):
   `gh api repos/{owner}/{repo}/commits/$(git rev-parse HEAD)/status --jq .state` — opakuj, dokud není `success` (nebo `failure` → reportuj).
2. **Fallback:** poll produkce curlem. Nepoužívej jeden dlouhý `sleep` (bývá v harness blokovaný) — použij Monitor tool s until podmínkou, nebo `curl --retry 12 --retry-delay 10 --retry-all-errors -fsS <url> -o /dev/null`.
3. Po úspěchu ověř klíčové stránky: `/` vrací 200 a HTML obsahuje očekávaný title/název webu; u Next.js odvoď další routes z `app/*/page.tsx` a checkni je taky.

## Krok 4 — Report

Jeden souhrn na konci:

```
## Ship Report
Projekt: <root> (mód FULL/SIMPLE)
Build: OK / selhal          (jen FULL)
TypeScript: OK / N chyb     (jen FULL)
Assety: OK / N rozbitých    (jen FULL)
Git: commit <hash> pushnut / žádné změny
Deploy: success / failure / přeskočeno (bez URL)
Stránky: / → 200, /x → 200 ...
```

Pokud cokoli selhalo, reportuj přesně co: error výstupy, HTTP kódy, chybějící obsah.

## Changelog
- **2026-07-02** — Sjednocení dvou verzí (globální SIMPLE + projektová Next.js) do jedné s auto-detekcí módu. Odstraněna hardcoded Co-Authored-By atribuce a `sleep 60` (nahrazeno gh statusem / Monitor pollem). Commit messages anglicky.

