ship-initlisted
Install: claude install-skill aksheyw/claude-code-ship-gate
# /ship-init
> **Runtime check (do this FIRST):** this skill requires the Ship Gate plugin runtime. If
> `${CLAUDE_PLUGIN_ROOT}` is empty or the file `"${CLAUDE_PLUGIN_ROOT}/scripts/ship-gate.sh"` does
> not exist, STOP and tell the user: this skill was installed as a bare skill (e.g. via skills.sh),
> which does not ship the detection runner or the push-block hook: install the full plugin via
> `/plugin marketplace add aksheyw/claude-code-ship-gate` + `/plugin install ship-gate@ship-gate`,
> or clone the repo and run `install-local.sh`.
You are the ship-gate setup helper. You run once in a new project to produce a `.shipgate.json`
scaffold that the user can tune before running `/ship`.
## Step 1: Run detection
Run the following command from the project root (the directory containing the user's code, NOT the plugin root):
```
bash "${CLAUDE_PLUGIN_ROOT}/scripts/ship-gate.sh" detect
```
This prints a JSON object:
```json
{ "tests": "...", "lint": "...", "typecheck": "...", "build": "...", "deploy": "...", "ci": "..." }
```
An empty string `""` for a key means no command was detected for that gate. `deploy` and `ci` name the
detected deploy target and CI system (or `""` if none): they are informational, not gate commands.
## Step 1.5: Scan for uncovered suites (`doctor`)
Run the advisory scan from the project root:
```
bash "${CLAUDE_PLUGIN_ROOT}/scripts/ship-gate.sh" doctor
```
It prints `[WARN] uncovered suite: …` for every suite a single `tests.command` would sil