shiplisted
Install: claude install-skill Ian-Louw/potion
# Potion Ship
Inherit `${CLAUDE_PLUGIN_ROOT}/core/CORE.md`. Ship = merge base in, prove it still works, package it
honestly, PR.
**Emission contract — the ship checklist, in order:** VERIFICATION.md
`verdict: pass` and fresh (the gate does not negotiate); base merged, tests
re-run POST-merge; merge-specs.sh applied — nonzero exit BLOCKS ship, the
human resolves; changelog cross-checked so every branch commit maps to a
bullet; version bumped if the project versions; the PR carries evidence and
publishing stays human-gated — never force-push, never skip hooks; STATE.md
and PROJECT.md updated. Before finishing, re-read the emitted PR body and
changelog against this block; fix in place, or regenerate —
at most once.
## Steps
1. **Gate.** The phase's VERIFICATION.md must have `verdict: pass` (or every
open gap listed in its `accepted` frontmatter — an acceptance is valid ONLY
if it records an explicit user statement (who + date + their words or a
paraphrase). You may PROPOSE accepting a gap; only the user accepts.
Self-recorded acceptance is a gate violation, not a shortcut.)
**Staleness check:** compare `verified_at` against the newest commit
touching non-`.potion` files — any code commit after verification means the
verification describes code that no longer exists → re-run /potion:verify.
No verification at all → run /potion:verify first. This gate does not
negotiate.
2. **Sync.** Detect the base branch, merge it in, resolve conflicts. Re-run the