ship-preflightlisted
Install: claude install-skill easyinplay/harnessed
# ship-preflight (Stage ⑤.a)
## Overview
The machine-checkable "PR ready != release ready" gate. Runs the harnessed-native
`harnessed release-preflight` command, which inspects (read-only) whether the repo is
ready to tag a release:
| check | passes when |
| ----- | ----------- |
| `changelog` | `## [Unreleased]` has entries (this release is documented) |
| `version` | `package.json` has a valid semver |
| `git-clean` | the working tree has no uncommitted changes |
| `tag-absent` | a `v<version>` tag does NOT already exist |
## Process
1. Run `harnessed release-preflight`.
2. If any check fails, STOP — surface the `fix:` hints and do not proceed to PR/tag.
- Empty `[Unreleased]` is the most common failure: document the release first.
3. If all pass, the repo is **tag-ready**. The ship master continues to PR/deploy.
## Boundary
This gate is READ-ONLY. It never pushes, publishes, or creates a tag. The actual
`npm publish` + GitHub release happen in `publish.yml` CI when a `v<version>` tag is
pushed (with explicit user approval).
## How to invoke
!`harnessed checkpoint intent ship-preflight`
> The banner above (when present) means this invocation is REGISTERED with the engine (an intent marker) — not yet compliant: the steps below (prompt → spawn → checkpoint complete) resolve it, and a per-turn `<workflow-intent>` reminder persists until they run.
The numbered sequence below **is** the state machine — execute it with Bash. Do NOT improvise
an equivalent flow from